CINXE.COM

Top 100 aerospace companies ranked by revenue | Report | Flight Global

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="preload" as="style" href="/Magazine/core.css?p=7605401599288211"> <link rel="preload" as="script" href="/Magazine/core.js?p=7605401599288211"> <link rel="preload" as="image" href="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/480xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg" imagesrcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/480xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg 480w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/600xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg 600w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/780xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg 780w" imagesizes="(max-width: 1023px) 100vw, 780px" /> <!-- FG 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-PQRKBK3');</script> <!-- End FG Google Tag Manager --> <title>Top 100 aerospace companies ranked by revenue | Report | Flight Global</title> <meta name="description" content="This year’s Top 100 reflects an aviation industry hit by nine months or more of crisis – but also one where fortunes differ hugely depending on whether a business’s focus is defence or commercial." /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2025-02-17 20:49:24.519"/> <meta name="momentlocale" content="en-gb"/> <meta name="momentlocaleformat" content="D MMM YYYY"/> <meta name="momentrelative" content="false"/> <meta name="momentrelativeformat" content="YYYY,MM,DD"/> <meta name="momentrelativemorethan" content="10"/> <meta name="robots" content="noarchive" /> <meta name="pubdate" content="Tue, 31 Aug 2021 08:36 GMT" /> <link rel="canonical" href="https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article" /> <meta name="blockthis" content="blockGA" /> <meta name="showwallpaper" content="true" /> <meta name="navcode" content="245" /> <meta name="primarynavigation" content="Flight International" /> <meta property="og:title" content="Top 100 aerospace companies ranked by revenue" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article" /> <meta property="og:site_name" content="Flight Global" /> <meta property="og:description" content="This year's Top 100 reflects an aviation industry hit by nine months or more of crisis - but also one where fortunes differ hugely depending on whether a business's focus is defence or commercial." /> <meta property="og:image:width" content="1024" /> <meta property="og:image:height" content="536" /> <meta property="og:image" content="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/1024x536/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg" /> <meta property="og:image:alt" content="F-35A" /> <meta property="og:image" content="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/1024x536/2/4/5/81245_a350cairbus_38693_crop.jpg" /> <meta property="og:image:alt" content="Aeroflot A350 first delivery" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="Top 100 aerospace companies ranked by revenue" /> <meta property="twitter:description" content="This year's Top 100 reflects an aviation industry hit by nine months or more of crisis - but also one where fortunes differ hugely depending on whether a business's focus is defence or commercial." /> <meta property="twitter:image:src" content="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/1120xAny/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg" /> <meta property="twitter:image:alt" content="F-35A" /> <link rel="icon" href="/magazine/dest/graphics/favicons/favicon-32x32.png" /> <!--[if IE]><link rel="shortcut icon" href="/magazine/dest/graphics/favicons/favicon.ico" /><![endif]--> <link rel="apple-touch-icon-precomposed" href="/magazine/dest/graphics/favicons/apple-touch-icon-precomposed.png" /> <meta name="msapplication-TileImage" content="/magazine/dest/graphics/favicons/mstile-144x144.png" /> <meta name="msapplication-TileColor" content="#ffffff" /> <link href="/Magazine/core.css?p=7605401599288211" rel="stylesheet" type="text/css"> <link href="/Magazine/print.css?p=7605401599288211" rel="stylesheet" type="text/css" media="print"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script>var newLang={"more":{"default":"Show more","searchtype":"Show more","searchdates":"Show more"},"less":{"default":"Show fewer","searchtype":"Show fewer","searchdates":"Show fewer"},"show":{"default":"show"},"hide":{"default":"hide"},"caption":{"show":"show caption","hide":"hide caption"},"carousel":{"play":"play slideshow","pause":"pause slideshow"}};</script> <script type="text/javascript"> var IPState = { useripstate: false, useripname: '' }; </script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({'StoryID':'145146'}); window.dataLayer.push({'StoryFormatProperty':'N'}); window.dataLayer.push({'StoryCategories':'|Aerospace|'}); window.dataLayer.push({'StoryLayout':'Standard'}); window.dataLayer.push({'StoryWidth':'standard width'}); window.dataLayer.push({'StoryLayoutCode':'1'}); window.dataLayer.push({'StoryFormatCode':'1094'}); window.dataLayer.push({'StoryTypeCode':'1023'}); window.dataLayer.push({'StoryCategoriesCodes':'|239115|'}); window.dataLayer.push({'StoryFullNavPath':'|1|245|'}); window.dataLayer.push({'UserID':undefined}); window.dataLayer.push({'NavCode':'245'}); window.dataLayer.push({'MicrositeNavCode':'-1'}); window.dataLayer.push({'NavKey':'39'}); window.dataLayer.push({'NavigationAreaNavCode':'245'}); </script> <script type="text/javascript"> window.dataLayer.push({'AccessQualificationTypeName':'Free access (anonymous users)'}); window.dataLayer.push({'AccessProductCode':'FGOR'}); window.dataLayer.push({'AccessProductName':'Flight Global Online Metered'}); window.dataLayer.push({'AccessCount':'1'}); </script> <script type="text/javascript"> //dataLayer array declaration window.dataLayer = window.dataLayer || []; window.dataLayer.push({'grecaptcha':'6LdF8vonAAAAAD7o_GFdZx7ScY1_ggHdHUmijbXX'}); window.dataLayer.push({'LoggedIn':'False'}); window.dataLayer.push({'AccessStatus':'Granted'}); window.dataLayer.push({'AccessDeniedStoryID':undefined}); window.dataLayer.push({'AccessDeniedTitle':undefined}); window.dataLayer.push({'Template':'Story'}); window.dataLayer.push({'Pubcode':'2'}); window.dataLayer.push({'PublicationName':'Flight Global'}); window.dataLayer.push({'Title':'Top 100 aerospace companies ranked by revenue | Report'}); window.dataLayer.push({'StoryAccessControl':'Private'}); window.dataLayer.push({'StoryFormat':'Article'}); window.dataLayer.push({'StoryType':'Report'}); window.dataLayer.push({'Headline':'Top 100 aerospace companies ranked by revenue'}); window.dataLayer.push({'LongHeadline':'Top 100 aerospace companies ranked by revenue'}); window.dataLayer.push({'Intro':'This year’s Top 100 reflects an aviation industry hit by nine months or more of crisis – but also one where fortunes differ hugely depending on whether a business’s focus is defence or commercial.'}); window.dataLayer.push({'Catchline':undefined}); window.dataLayer.push({'Synopsis':undefined}); window.dataLayer.push({'Standfirst':undefined}); window.dataLayer.push({'Answer':undefined}); window.dataLayer.push({'Source':undefined}); window.dataLayer.push({'Refs':undefined}); window.dataLayer.push({'Class':undefined}); window.dataLayer.push({'Credits':undefined}); window.dataLayer.push({'Postscript':undefined}); window.dataLayer.push({'PrimaryNav':'|Main Navigation|Flight International|'}); window.dataLayer.push({'PrimaryNavCurrent':'Flight International'}); window.dataLayer.push({'PrimaryNavCode':'|1|245|'}); window.dataLayer.push({'PrimaryNavCodeCurrent':'245'}); window.dataLayer.push({'FullNavPath':'|1|245|'}); window.dataLayer.push({'CategoryCodes':'|239115|'}); window.dataLayer.push({'Tags':'|Must Read|Top 100|'}); window.dataLayer.push({'Bylines':'|Murdo Morrison|'}); window.dataLayer.push({'IssueDate':'01-01-2021'}); window.dataLayer.push({'IssueDateTime':'01-01-2021 00:00:00'}); window.dataLayer.push({'PublishDate':'31-08-2021'}); window.dataLayer.push({'PublishDateTime':'31-08-2021 08:36:00'}); window.dataLayer.push({'BrowseJobsURL':undefined}); window.dataLayer.push({'UserStateLoggedIn':'False'}); window.dataLayer.push({'FullNavPath':'|1|245|'}); </script> <link href='https://fonts.googleapis.com/css?family=Hind:400,600' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.1/jquery.fancybox.min.css" /> <!--newsletter sign-up styles--> <style> .newsletterSignup-widget{ background: #002a63; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details .newsletterSignup-widget-form-content .newsletterSignup-widget-form-response { background:#18afe5; color:#002a63; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details .newsletterSignup-widget-tag:before { filter: invert(1); } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details .newsletterSignup-widget-form-content form .newsletterSignup-widget-form .field .innerSleeve input{ border: 1px solid #FFF; height: 40px; } .newsletterSignup-widget a:link, .newsletterSignup-widget a:visited { color:#FFF; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details .newsletterSignup-widget-tag{ color:#FFF; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details .newsletterSignup-widget-tag:before rect{ fill: #FFF; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details .newsletterSignup-widget-info h2 { color:#FFF; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details .newsletterSignup-widget-info p { color:#FFF; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-privacy p{ color:#CCC; } .newsletterSignup-widget .newsletterSignup-widget-content .newsletterSignup-widget-details { border-left: 6px solid #1cafe5; } </style> <style> .grecaptcha-badge { visibility: hidden; } .ad-text{ background: #f0f2f2; font-size: 0.675rem; padding: 2px; color: #444; text-transform: uppercase; border-top: 4px solid #DCDCDC; } /*Fix CLS issues with wallpaper advertising*/ .masthead .mastheadSearch form button,.filteredSearch .facet-search button{text-indent:-10000px;} @media screen and (min-width: 1024px){ .rightcolumn {width: 300px !important;} } /*.wallpaper-applied #wrapper_sleeve>.container .inner-sleeve { background-color: inherit !important; } */ .wallpaper-applied.site-width-1024 .ad-style1, .wallpaper-applied.site-width-1024 .container .inner-sleeve { max-width: 1220px !important; } .footer { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; } #storyAccess .access_denied_image { float: right; margin-left: 30px; margin-top: -45px; } </style> <!-- Temp fix:DVVMCS-638 START --> <style> @media screen and (max-width: 1023px){ #wrapper_sleeve.showMenuPushed{ transform: unset; transition: .2s; } .showMenu #wrapper_sleeve.showMenuPushed { transform: translateX(-280px); } } </style> <!-- Temp fix:DVVMCS-638 END --> <!-- Temp patch: DVVM-224 END --> <!--<style>@media screen and (min-width: 1024px) {.storyLayout.video~.videoTop { padding-top: 50px; margin-top: 10px !important;} } .ad-style1 { background-color: #fff; border-bottom: 0px solid #fff; } </style>--> <!-- Temp patch: DVVM-224 START --> <!-- <style> .desktopNavigation .dropdown.open, .desktopNavigation .menu.preJS>li:hover .dropdown {z-index: 999999 !important;} @media screen and (min-width: 1024px){ .masthead {margin-top: -26px !important;} .masthead .mast{padding: 40px 0 6px !important;}} .masthead+.ad {margin-bottom: 1.3% !important; margin-top: 20px !important;} @media screen and (min-width: 1024px){ #colwrapper { position: relative; max-width: 1024px; margin: 0 auto; }} </style> --> <!-- AC TEST START --> <!--<style>.storyLayout.standard~.headerWrapper{max-width: 1024px !important; margin: 0 auto !important;} #wrapper_sleeve>.container .inner-sleeve {Max-width: 1024px !important;} .contentWrapper {border-right: 0px !important;}</style>--> <!--<style> .vdContainerBlock {position: sticky !important;} #vdContainerBlock {position: sticky !important;} </style>--> <!--<style> @media screen and (min-width: 1280px){ .spin2scroller {width: 108%; margin-left: -3.5%; }} </style>--> <!-- CSS fixes for FGP launch start --> <style> #wrapper #access_promo.dynamic-content-wrapper .content .col-1 { margin-bottom: 0px; padding-bottom: 0px; } #wrapper #access_promo.dynamic-content-wrapper .content .col-1 img.mobile { display:none; min-width: 290px; } #wrapper #access_promo.dynamic-content-wrapper .content .col-1 p { margin: 15px 0px; } #wrapper #access_promo.dynamic-content-wrapper .content .col-1 ul li { line-height: 1.6rem; margin-bottom: 10px; } #wrapper #access_promo.dynamic-content-wrapper .content .col-2 { margin-bottom: 0px; padding-bottom: 0px; } #wrapper #access_promo.dynamic-content-wrapper .content .col-1 a.button { margin-top: 20px; display: inline-block; } @media only screen and (max-width: 768px) { #access_promo.dynamic-content-wrapper .col-2 { display: none; } #wrapper #access_promo.dynamic-content-wrapper .content .col-1 img.mobile { display:block; min-width: 280px; } #wrapper #access_promo.dynamic-content-wrapper .content .col-1 img.desktop { display:none; } } #cookiePolicy div p {text-align: left;} </style> <!-- CSS fixes for FGP launch end --> <!-- adding premium icons --> <style> .premium .masthead .mastheadLogo .logoIcon { background-image: url(https://d3lcr32v2pp4l1.cloudfront.net/pictures/web/o/m/h/flightglobal_logo_desktop_premium_125170.svgz); width: 587px; height: 77px; background-position: initial; } .premium .masthead .mastheadMobileLogo .logoIcon{ background-image: url(https://d3lcr32v2pp4l1.cloudfront.net/pictures/web/o/m/h/flightglobal_logo_mobile_premium_18824.svgz); width: 90px; height: 38px; background-position: initial; } .premium .masthead .mastNav>ul li.user>a:after { background-image: url(https://d3lcr32v2pp4l1.cloudfront.net/pictures/web/l/f/j/premiumuseroff_66553.svgz); width: 39px; height: 34px; background-position: initial; } .premium .masthead .mastNav>ul li.user>a:hover::after, .premium .masthead .mastNav>ul li.user>a:focus::after { background-image: url(https://d3lcr32v2pp4l1.cloudfront.net/pictures/web/l/f/j/premiumuseron_418773.svgz); width: 39px; height: 34px; background-position: initial; } .premium .masthead .mastNav > ul.user.hasSavedArticles > a:after { background-image: url(https://d3lcr32v2pp4l1.cloudfront.net/pictures/web/l/f/j/premiumuserbookmarkoff_104721.svgz); width: 39px; height: 34px; background-position: initial; } .premium .masthead .mastNav > ul.user.hasSavedArticles:hover > a:after, .premium .masthead .mastNav > ul.user.hasSavedArticles > a:focus:after { background-image: url(https://d3lcr32v2pp4l1.cloudfront.net/pictures/web/l/f/j/premiumuserbookmarkon_77440.svgz); width: 39px; height: 34px; background-position: initial; } .premium .masthead .mastNav .toggleIcon a { background-image: url(https://d3lcr32v2pp4l1.cloudfront.net/pictures/web/l/f/j/premiummobileaccount_337723.svgz); width: 39px; height: 34px; background-position: initial; } @media screen and (min-width: 1024px){ .premium .masthead .mastNav>ul li.user>a { margin-right: 10px; } .premium .masthead .mastNav>ul li.user>a:before { right: 50px; } } </style> <!-- adding premium icons end --> <style> .adwrap_leader { height:250px; } @media screen and (min-width: 980px){ .adwrap_leader { height:250px; }} @media screen and (max-width: 980px) and (min-width: 750px) { .adwrap_leader { height: initial; min-height: 90px; }} @media screen and (max-width: 750px){ .adwrap_leader { height: initial; min-height: 100px; }} .adwrap_MPU {height: initial !important; min-height:250px; margin-bottom: 40px;} @media screen and (max-width: 750px){ .adwrap_MPU { height: initial !important; min-height:250px; margin-bottom: 40px;}} .footer .webvision {display: none;} </style> <style>.storyLayout.picture~.headerWrapper .inlineFull {margin-top: 0px;} .storyLayout.gallery~.headerWrapper .removeGapToMast, .storyLayout.picture~.headerWrapper .removeGapToMast {margin-top: 0px;} </style> <style> @media screen and (min-width: 1280px) .eme-htmlslideup .eme-footer .eme-image { display: block !important; position: absolute; right: 20px !important; width: 80px !important; bottom: 80px !important; height: 80px !important; opacity: 1; background: #F58C21; border-radius: 50%; padding: 16px !important; box-shadow: rgb(0 0 0 / 35%) 0px 5px 15px; } @media screen and (min-width: 1024px) .eme-htmlslideup .eme-footer .eme-image { display: block !important; position: absolute; right: 20px !important; width: 80px !important; bottom: 80px !important; height: 80px !important; opacity: 1; background: #F58C21; border-radius: 50%; padding: 16px !important; box-shadow: rgb(0 0 0 / 35%) 0px 5px 15px; } @media screen and (min-width: 768px) .eme-htmlslideup .eme-footer .eme-image { display: inline !important; position: absolute; right: 20px !important; width: 70px !important; bottom: 85px; height: 70px !important; opacity: 1; background: #F58C21; border-radius: 50%; padding: 13px !important; box-shadow: rgb(0 0 0 / 35%) 0px 5px 15px; } .eme-completed .eme-htmlslideup { max-width: 1024px; margin: auto; } .eme-htmlslideup .eme-main > .eme-headline { margin-bottom: 18px !important; } .eme-htmlslideup .eme-main { min-height: auto !important; padding: 10px 0 0 0; } @media screen and (min-width: 1024px) { .eme-htmlslideup .eme-button-container { order: 3; background-color: #002a63; margin-left: 0vw !important; margin-right: 0vw !important; padding-bottom: 10px; max-width: 1024px; } .eme-htmlslideup .eme-button-container .eme-button { margin-top: 10px; } } @media screen and (max-width: 767px){ .eme-htmlslideup .eme-main { padding: 10px 0px 0px; } } /* @media screen and (min-width: 1280px){ .eme-htmlslideup .eme-footer .eme-image { display: none !important; } } */ @media screen and (max-width: 767px) and (min-width: 481px) { .eme-htmlslideup .eme-content .eme-text { color: #DCDCDC; font-size: 1rem !important; line-height: 1.25rem !important; font-weight: normal; margin-bottom: 10px !important; height: auto; opacity: 1; margin-top: -30px !important; } .eme-htmlslideup .eme-main > .eme-headline { margin-bottom: 5px !important; } .eme-htmlslideup .eme-headline { color: #fff; font-size: 1.5rem !important; line-height: 1.8rem !important; font-weight: 400 !important; margin-bottom: 8px !important; height: auto; opacity: 1; order: 2; } } @media screen and (max-width: 480px){ .eme-htmlslideup .eme-content .eme-text { color: #DCDCDC; font-size: 0.85rem !important; line-height: 1.25rem !important; font-weight: normal; margin-bottom: 10px !important; height: auto; opacity: 1; }} .eme-htmlslideup .eme-main > .eme-headline { margin-bottom: 5px !important; } @media screen and (max-width: 480px){ .eme-htmlslideup .eme-headline { color: #fff; font-size: 1.25rem !important; line-height: 1.5rem !important; font-weight: 400 !important; margin-bottom: 8px !important; }} @media screen and (max-width: 480px){ .eme-htmlslideup .eme-main { background-color: #144696; padding: 20px 9px 0px !important; }} @media screen and (max-width: 480px){ .eme-htmlslideup .eme-button-container .eme-link { color: #fff; font-size: 0.85rem !important; line-height: 1.5rem !important; }} @media screen and (max-width: 480px){ .eme-htmlslideup .eme-button-container .eme-button { color: #fff; display: inline-block; background-color: #F58C21; border-radius: 6px; padding: 4px 8px 2px !important; font-weight: bold; text-transform: uppercase; text-decoration: none; text-align: center; transition: background-color .2s,color .2s; margin-top: 10px !important; margin-left: -20px; min-width: 134px; margin-bottom: -10px !important; } } header#masthead+.ad { display: flex !important; flex-wrap: wrap !important; align-content: center !important; justify-content: center !important; } </style> <!-- stylised AB premium gating message --> <style> .cappro-icons {display: flex; flex-direction: row; align-items: center; margin: 20px auto; padding: 10px;}.icon-list { width: 20%; max-width: 250px;}.icon-list img { width: 100px; display: flex; margin: 0 auto;} .icon-list p {text-align: center;} @media screen and (max-width: 800px){.icon-list { width: 80%; max-width: 500px; margin: 0 auto;}.cappro-icons {display: block;}} .cappro-button {background: #05998c !important; color: #ffffff; text-align: center; margin: 30px auto; padding: 10px; width: 300px; border-radius: 10px; font-size: 0.95em; transition: all 0.25s ease;} .cappro-button:hover {background: #333 !important; transition: all 0.25s ease;} .icon-list-image {min-height: 120px;} @media screen and (min-width: 980px){ .cappro-button {margin: 30px auto; }} .cappro-button a {color: #ffffff !important; text-decoration: none !important; } .cappro-button a:hover {text-decoration: none !important;} .cappro-subs-image { max-width: 640px; width: 100%; margin: 20px auto 40px;} @media screen and (max-width: 800px){ .cappro-subs-image { display: none;}} @media screen and (min-width: 801px){ .cappro-subs-image-mobile { display: none;}} .cappro-subs-image-mobile { max-width: 640px; width: 70%; margin: 20px auto;} </style> <!-- END stylised AB premium gating message --> <!-- START PowerBi Styling --> <style> button.bi-embed {float: right; margin-top: -15px;} .bi-report, .bi-landscape, .bi-portrait, .bi-portrait2, .bi-square, .bi-banner, .bi-banner2{ position: relative; overflow: hidden; width: 100%; margin-bottom:28px; } .bi-report{ padding-top: 56.25%; } .bi-landscape{ padding-top: 66.67%; } .bi-portrait{ padding-top: 150%; } .bi-portrait2{ padding-top: 120%; } .bi-square{ padding-top: 100%; } .bi-banner{ padding-top: 100%; } .bi-banner2{ padding-top: 27%; } @media screen and (min-width: 480px){ .bi-banner{ padding-top: 40%; } } @media screen and (min-width: 1023px){ .bi-banner{ padding-top: 28%; } } @media screen and (min-width: 1024px){ .bi-banner{ padding-top: 20%; } } .powerbi iframe{ border:1px solid #DCDCDC; } .powerbi.bi-banner iframe{ border:none; } .bi-report iframe, .bi-landscape iframe, .bi-portrait iframe, .bi-portrait2 iframe, .bi-square iframe, .bi-banner iframe, .bi-banner2 iframe{ position: absolute; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%; } .FG-CTA img {vertical-align: bottom; margin-right: 5px;} .FG-CTA {text-align: center; font-size: 1.25em;} .AB-CTA {text-align: center; font-size: 1.25em;} .AB-CTA p {text-align: center; font-size: 1.25em;} </style> <style> .grid .gridLayout ul li .subSleeve #sas_intextContainer_12152131 {display: none;} .grid .gridLayout ul li .subSleeve .sas_intextContainer_12152131 {display: none;} .grid .gridLayout ul li .subSleeve sas_intextContainer_12152131 {display: none;} .desktopNavigation ul.main>li>a>span {padding: 13px 8px 12px 3px;} .desktopNavigation ul.main>li.hasChildren>a>span {padding-right: 28px;} .desktopNavigation ul.main>li>a>span, .desktopNavigation ul.main>li>span {font-size: 1.35rem;} li.hasChildren:nth-child(9) {background: #AF151F !important; border-radius: 5px 5px 0px 0px;} .accessible-megamenu-1723133140706-15 {background: #AF151F !important; border-radius: 5px 5px 0px 0px;} </style> <!--<style> .masthead .menuContainer .desktopNavigation #mainnav > div.inner-sleeve > ul > li:nth-child(9) li.hasChildren:nth-child(9) {background: #7F8386;} #accessible-megamenu-1723131340862-15 {background: #7F8386;} #mainnav > div.inner-sleeve > ul > li:nth-child(9) {background: #7F8386;}</style>--> <!-- END PowerBi Styling --><style type="text/css">.inline_image img[width][height]:not(.zoomable-image) {contain: unset;}</style> <!-- Don't remove this script used on story promo --> <script> function getDataLayerVal(keyVal) { for (var i = 0, iL = window.dataLayer.length; i < iL; i++) { if (dataLayer[i][keyVal] !== undefined) { return dataLayer[i][keyVal]; } } } function getFullNavPath(path) { if(getDataLayerVal(path) !== undefined) { getDataLayerVal(path).split('|').join(' ').trim(); } } // Function to extract values from <meta> elements function getMetaContentByName(name,content){ var content = (content==null)?'content':content; return document.querySelector("meta[name='"+name+"']").getAttribute(content); } </script> <script src="https://unpkg.com/@ungap/url-search-params@0.2.2/min.js"></script> <!-- Begin of setting Premium user --> <script> $(document).ready(function() { var notSignedIn = getDataLayerVal('prodid') == undefined ? true : false ; if(!notSignedIn){ var splitthis = getDataLayerVal('prodid').split('|'); var premium = splitthis.filter(function(number) { return number == '24'; }); if(premium.length != 0){ document.querySelector('body').classList.add("premium"); } else{ if(document.querySelector('body').classList.contains("premium")){ document.querySelector('body').classList.remove("premium"); } } } }) </script> <!-- End of setting Premium user --> <!-- Begin comScore Tag --> <script> function readCookie(cName) { var i, x, y, arRcookies = document.cookie.split(";"); for (i = 0; i < arRcookies.length; i++) { x = arRcookies[i].substr(0, arRcookies[i].indexOf("=")); y = arRcookies[i].substr(arRcookies[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == cName) { return unescape(y); } } } var coms_ucfr = readCookie('rbi_cookies_accepted') == null ? 0 : 1; var _comscore = _comscore || []; _comscore.push({ c1: "2", c2: "32394014", cs_ucfr: coms_ucfr }); (function() { var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true; s.src = (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js"; el.parentNode.insertBefore(s, el); })(); </script> <noscript> <img src="https://sb.scorecardresearch.com/p?c1=2&c2=32394014&cs_ucfr&cv=2.0&cj=1"> </noscript> <!-- End comScore Tag --> <!-- Google Ad Manager --> <script async='async' src='https://securepubads.g.doubleclick.net/tag/js/gpt.js'></script> <script> var urlParams = new URLSearchParams(window.location.search); var pathname = window.location.pathname; var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; var showwallpaper; if(document.querySelector('meta[name="showwallpaper"]')) { showwallpaper = document.querySelector('meta[name="showwallpaper"]').content; } googletag.cmd.push(function() { var screenwidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var mapping1 = googletag.sizeMapping() .addSize([980, 0], [[970, 250], [970, 90]]) .addSize([750, 0], [[728, 90]]) .addSize([0, 0], [[320, 100], [320, 50]]) .build(); var mapping2 = googletag.sizeMapping() .addSize([980, 0], [[300, 600], [300, 250]]) .addSize([750, 0], [[300, 600], [300, 250]]) .addSize([0, 0], [[300, 250]]) .build(); var mapping3 = googletag.sizeMapping() .addSize([980, 0], [[300, 600], [300, 250]]) .addSize([750, 0], [[300, 600], [300, 250]]) .addSize([0, 0], [[300, 250]]) .build(); var mapWallpaper = googletag.sizeMapping() .addSize([0, 0], []) // 1220, 0 .addSize([1220, 0], [1, 1]) .build(); googletag.defineSlot('/13644946/FlightGlobal/topbanner', [[970,250]], 'div-gpt-ad-8826768-Topbanner-ad-1') .defineSizeMapping(mapping1) .addService(googletag.pubads()); googletag.defineSlot('/13644946/FlightGlobal/aix_lead1', [[970,250]], 'div-gpt-ad-1713862524662-0') .defineSizeMapping(mapping1) .addService(googletag.pubads()); googletag.defineSlot('/13644946/FlightGlobal/aix_lead2', [[970,250]], 'div-gpt-ad-1713863021024-0') .defineSizeMapping(mapping1) .addService(googletag.pubads()); googletag.defineSlot('/13644946/FlightGlobal/sidebar1', [[300,250]], 'div-gpt-ad-1707670-sidebar1-1') .defineSizeMapping(mapping2) .addService(googletag.pubads()); googletag.defineSlot('/13644946/FlightGlobal/sidebar2', [[300,250]], 'div-gpt-ad-1615375849628-0') .defineSizeMapping(mapping3) .addService(googletag.pubads()); googletag.defineSlot('/13644946/FlightGlobal/sidebar3', [[300,250]], 'div-gpt-ad-1669201998136-0') .defineSizeMapping(mapping3) .addService(googletag.pubads()); googletag.defineSlot('/13644946/FlightGlobal/Navigation_bar_MPU', [[300,250]], 'div-gpt-ad-9331961-1') .addService(googletag.pubads()); googletag.defineSlot('/13644946/FlightGlobal/ConferencesandEvents_MPU', [[300,250]], 'div-gpt-ad-7383182-1') .addService(googletag.pubads()); googletag.defineOutOfPageSlot('/13644946/FlightGlobal/outofpage', 'div-gpt-ad-249527336346462137-0-video-oop').addService(googletag.pubads()).setTargeting('pos', 'oop'); googletag.defineOutOfPageSlot('/13644946/FlightGlobal/outofpage', 'div-gpt-ad-249527336346462137-0-curtain-raiser-oop1').addService(googletag.pubads()).setTargeting('pos', 'oop1'); googletag.defineOutOfPageSlot('/13644946/FlightGlobal/outofpage', 'div-gpt-ad-249527336346462137-0-stayon-oop2').addService(googletag.pubads()).setTargeting('pos', 'oop2'); //mobile sticky (Mobile articles only) googletag.defineOutOfPageSlot('/13644946/FlightGlobal', 'div-gpt-ad-249527336346462137-0-interstitials-oop3').addService(googletag.pubads()).setTargeting('pos', 'oop3'); // Pass the dataLayer value element to DFP (to be used as a `key-value`) googletag.pubads().setTargeting("navcode",getMetaContentByName("navcode")); googletag.pubads().setTargeting("MicrositeNavCode",getDataLayerVal('MicrositeNavCode')); googletag.pubads().setTargeting("articleid",getDataLayerVal('StoryID')); googletag.pubads().setTargeting("jobrole",getDataLayerVal('jobr')); googletag.pubads().setTargeting("joblev",getDataLayerVal('jobl')); googletag.pubads().setTargeting("orgtype",getDataLayerVal('orgtype')); googletag.pubads().setTargeting("mainorgtype",getDataLayerVal('mainorgtype')); googletag.pubads().setTargeting("sec0",getDataLayerVal('PrimaryNavCurrent')); googletag.pubads().setTargeting("type",getDataLayerVal('Template')); googletag.pubads().setTargeting("LoggedInStatus",getDataLayerVal('LoggedIn')); googletag.pubads().setTargeting("AccessStatus",getDataLayerVal('AccessStatus')); googletag.pubads().setTargeting("prodid",getDataLayerVal('prodid')); googletag.pubads().setTargeting("usertype",getDataLayerVal('usertype')); googletag.pubads().setTargeting("ArticleName",getDataLayerVal('Headline')); //https://dvvfg.webvisioncloud.com/CMS/PageTextAddEdit.aspx?label=PageText&id=530&TB_iframe=true&width=800# googletag.pubads().setTargeting("Standfirst",getDataLayerVal('Standfirst')); googletag.pubads().setTargeting("StoryCategories",getDataLayerVal('StoryCategories')); googletag.pubads().setTargeting("fullnavpath", getFullNavPath('FullNavPath')); googletag.pubads().setTargeting("SearchKeyword", urlParams.get('qkeyword')); googletag.pubads().setTargeting("url",window.location.pathname); googletag.pubads().setTargeting('slug', document.location.pathname.substr(document.location.pathname.lastIndexOf('/'))); // wallpaper // check if wallpaper is defined, is set to be shown on this page and screen width is greater than 1220 if (document.querySelector('#div-gpt-ad-1581079248444-0') && showwallpaper && (window.innerWidth > 1220) && !dataLayer.some(function(el){return el&&'MicrositeNavCode' in el&&el.MicrositeNavCode=='200';})) { var wallpaperSlot = googletag.defineOutOfPageSlot('/13644946/FlightGlobal/Wallpaper', 'div-gpt-ad-1581079248444-0').defineSizeMapping(mapWallpaper).addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener('slotRenderEnded', function(event) { //if((event.slot.getSlotElementId() == wallpaperSlot.getSlotElementId()) && !event.isEmpty) { if((event.slot.getSlotElementId() == wallpaperSlot.getSlotElementId()) && !event.isEmpty) { if(document.querySelector('.wallpaper-ad[data-site-width-1024]')) { document.body.classList.add('site-width-1024'); } if(showwallpaper === "true") { document.body.classList.add('wallpaper-applied'); $(window).trigger('wallpaper:advert'); } } }); }; googletag.pubads().enableLazyLoad({ fetchMarginPercent: 5, // Fetch slots within 5 viewports. renderMarginPercent: 5, // Render slots within 2 viewports. mobileScaling: 0 // Double the above values on mobile. }); //googletag.pubads().enableAsyncRendering(); //googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); window.addEventListener('message', receiveMessage, false); function receiveMessage(event) { if(event.data == 'wallpaper-fireplace' || event.data == 'wallpaper-standard') { //if(event.data == 'wallpaper-standard') { document.body.classList.add(event.data); positionWallpaperFromTop(); wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = document.querySelector('#masthead').getBoundingClientRect().bottom + 'px'; } } function positionWallpaperFromTop() { if(!window.IntersectionObserver) return; var observer = new IntersectionObserver(function(entries) { if (entries[0].isIntersecting) { var wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = (document.querySelector('#masthead').getBoundingClientRect().bottom + window.scrollY) + 'px' } else { document.querySelector('#wrapper_sleeve').style.top = '0'; } }); observer.observe(document.querySelector('#masthead')); } /* window.addEventListener('message', receiveMessage, false); function receiveMessage(event) { if(event.data == 'wallpaper-standard') { document.body.className+=" wallpaper-standard"; wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = document.querySelector('#masthead').getBoundingClientRect().top + 'px'; } } */ /* window.addEventListener('message', receiveMessage, false); function receiveMessage(event) { if(event.data == 'wallpaper-fireplace') document.body.className+=" wallpaper-fireplace"; if(document.body.className.match('wallpaper-fireplace')) { var mastHeight = document.querySelector('#masthead').offsetHeight, wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = mastHeight + 'px'; } } */ </script> <!-- END Google Ad Manager --> <meta name="showwallpaper" content="true"> <meta name="google-site-verification" content="5c4xBgNLIRH38KmfNP1CK-Gkf8SpaKde3E7uEyiLV8U" /> <meta name="google-site-verification" content="bYUbjg-HKHXAQceTdE3EgN7dEtDGj-0UhYmY-LhfzdM" /> <meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1"/> <script data-ad-client="ca-pub-7045852503918369" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!---OKO Interstitial START-- <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script> window.googletag = window.googletag || {cmd: []}; // GPT ad slots var interstitialSlot, staticSlot; googletag.cmd.push(function() { // Define a web interstitial ad slot. interstitialSlot = googletag.defineOutOfPageSlot( '/13644946/dvv_interstitials', googletag.enums.OutOfPageFormat.INTERSTITIAL); // Slot returns null if the page or device does not support interstitials. if (interstitialSlot) { interstitialSlot.addService(googletag.pubads()); console.log("Interstitial is loading..."); // Add event listener to enable navigation once the interstitial loads. // If this event doesn't fire, try clearing local storage and refreshing // the page. googletag.pubads().addEventListener('slotOnload', function(event) { if (interstitialSlot === event.slot) { document.getElementById('link').style.display = 'block'; } }); } // Define static ad slots. staticSlot = googletag.defineSlot( '/13644946/dvv_interstitials', 'static-ad-1') .addService(googletag.pubads()); // Enable SRA and services. googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); </script> <style> #link { display: none; } div.content { position: fixed; top: 50%; } </style> <!--OKO Interstitial END--> <meta name="google-site-verification" content="ZO7jU7lHQGje6GaWB7_FG6S7nT47tc9ecF_zrjdIwzI" /> <!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window,document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '526026152009400'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" src="https://www.facebook.com/tr?id=526026152009400&ev=PageView &noscript=1"/> </noscript> <!-- End Facebook Pixel Code --> <script> var EnhancedAdvertisingConfig = {}; </script> <!--Global Enhanced Adverts JSON definition from PAGETEXT--> <script> EnhancedAdvertisingConfig = { "Refresh":false, "RefreshDelaySecondsDefaultDesktop":30, "RefreshDelaySecondsDefaultMobile":30, "StoryDynamicSlotsAddGroupsAll":"Ads,Widgets", "StoryDynamicSlotsAddGroupsInline":"", "StoryDynamicSlotsAddGroupsRHC":"", "StoryDynamicSlotsRemoveGroupsAll":"", "StoryDynamicSlotsRemoveGroupsInline":"", "StoryDynamicSlotsRemoveGroupsRHC":"", "StoryDynamicSlotsRepeat":true, "StoryDynamicSlotsDesktopMaxInlineSlots":6, "StoryDynamicSlotsMobileMaxInlineSlots":6, "StoryDynamicSlotsDesktopMaxRHCSlots":4, "StoryDynamicSlotsDesktopElementSpacingFirst":4, "StoryDynamicSlotsMobileElementSpacingFirst":3, "StoryDynamicSlotsDesktopElementSpacing":4, "StoryDynamicSlotsMobileElementSpacing":3, "GAMAdUnitSizesInlineMobileDefault":[[300,250]], "GAMAdUnitSizesInlineDesktopDefault":[[300,250]], "GAMAdUnitSizesRHCDefault":[[300,250],[300,600]], "RHCMinHeightForSlotInsert":250, "RHCAdContainerDefaultHeight":250, "RHCMinHeightForStickyAd":300, "RHCStickyAdThresholdHeight":300, "RHCAdSmallContainerDefaultHeight":300, "CollapseEmptyDivs":true, "Slots":[ { "Type":"GAMAdvert", "Position":"PreferRight", "Group":"Ads", "AdUnit":"/13644946/FlightGlobal/sidebar1", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":false, "Refresh":false, "InsertIfNoRHCSpace":true, "NoBackfill":true, "AdUnitSizesInline":[[300,250]], //not required after hotfix "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, { "Type":"CustomContent", "Position":"Right", "Sticky":false, "Group":"Widgets", "Repeat":false, "InsertIfNoRHCSpace":true, "HTML":"<div class=\"tab-widget-5\" data-ajax-load-content=\"\" data-cache-bust=\"true\" data-url=\"/ajax/most\"></div>", "CustomEventName":"MostPopularWidgetInit", "Javascript":function(elem,container,slotconfig,adcounter,counter,repeat){ $(window).trigger("abacus:readjusrhcheight",[event, elem]); }, "CSSClass":"wvc-custom-widget-mostpopular", "MinHeight":600 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/FlightGlobal/sidebar2", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":false, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, //repeating slots - 1 and 2 { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/FlightGlobal/sidebar1", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/FlightGlobal/sidebar2", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, //inline repaeting slots { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/13644946/FlightGlobal/sidebar1", "RefreshDelaySeconds":30, "Repeat":true, "Refresh":true, "NoBackfill":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":269 }, { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/13644946/FlightGlobal/sidebar2", "RefreshDelaySeconds":30, "Repeat":true, "Refresh":true, "NoBackfill":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":269 } ], "Overrides":[ { //If Type='Paid content' (1015) OR Type='Whitepapers' (1019) "Conditions":"StoryType-1015,StoryType-1019", "Operator":"Or", "Settings":{ "RemoveGroupsInline":"Ads" } }, { //If Category="Slots (all) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsAll":"Ads,Widgets" } }, { //If Category="Slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsRHC":"Ads,Widgets" } }, { //If Category="Slots (inline) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsInline":"Ads,Widgets" } }, { //If Category="Advert slots (all) - Off" OR Category="Safety" (12161) "Conditions":"StoryCategoriesCodes-239148,StoryCategoriesCodes-12161", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Advert slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsRHC":"Ads" } }, { //If Category="Advert slots (inline) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsInline":"Ads", } } ] };</script> <script> $(window).trigger("wvcfe:globalenhancedadvertsinit", [event, EnhancedAdvertisingConfig]); (function(w, d) { if(window.NodeList && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; } d.addEventListener('DOMContentLoaded', function(event) { if(EnhancedAdvertisingConfig.Slots) { var enhAdDebug = false; if( localStorage.getItem('enh-ads-debug') == 'true' ) enhAdDebug = true; var sp = 'story-inlinecontent-placeholder'; var supportedTypes = ['gamadvert', 'customcontent']; var supportedPositions = ['inline', 'preferright', 'right']; var isDesktopResolution = w.matchMedia("screen and (min-width: 1023px)").matches; var isStoryFullLayout = d.body.classList.contains('story-full-layout'); var inlineCounter = 1; var rhcCounter = 1; var inlineAdCounter = 1; var rhcAdCounter = 1; var ticking = false; $('#story.enhanced-advertising .storytext > div.webonly').each( function(){ var t = $(this); t.replaceWith( t.html() ); }); var storyCustomContentPlaceholders = d.querySelectorAll('#story.enhanced-advertising .storytext > *'); var maxRHCSlotsToFitIn = 0; var matches = function(el, selector) { return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); }; var getClosestParent = function(elem, selector) { for(; elem && elem !== d; elem = elem.parentNode) { if(matches(elem, selector)) { return elem; } } return null; }; var storyType = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryTypeCode && el.StoryTypeCode != 'null'; }).map(function(el) { return 'StoryType-' + el.StoryTypeCode; }).join('') : ''; var storyFormat = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFormatCode && el.StoryFormatCode != 'null'; }).map(function(el) { return 'StoryFormat-' + el.StoryFormatCode; }).join('') : ''; var storyLayout = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryLayoutCode && el.StoryLayoutCode != 'null'; }).map(function(el) { return 'StoryLayout-' + el.StoryLayoutCode; }).join('') : ''; //PWVD-780 var storyWidth = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryWidth && el.StoryWidth != 'null'; }).map(function(el) { return 'StoryWidth-' + el.StoryWidth; }).join('') : ''; var storyFullNavPath = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFullNavPath && el.StoryFullNavPath != 'null'; }).map(function(el) { return el.StoryFullNavPath; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).join('-') : ''; var storyCategoriesCodes = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryCategoriesCodes && el.StoryCategoriesCodes != 'null'; }).map(function(el) { return el.StoryCategoriesCodes; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).map(function(el) { return 'StoryCategoriesCodes-' + el; }) : []; var storyID = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryID && el.StoryID != 'null'; }).map(function(el) { return 'StoryID-' + el.StoryID; }).filter(function(el) { return el && el != 'null' && el != 'StoryID-'; }).join('') : ''; storyFullNavPath = (storyFullNavPath ? 'StoryFullNavPath-' + storyFullNavPath : ''); var allDataLayerFilters = storyCategoriesCodes.concat([storyType, storyFormat, storyLayout, storyWidth, storyFullNavPath, storyID]).map(function(m) { return m.toLowerCase(); }); EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = (EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert || 800); EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = (EnhancedAdvertisingConfig.RHCMinHeightForStickyAd || 250); if('Overrides' in EnhancedAdvertisingConfig) { if(EnhancedAdvertisingConfig.Overrides) { var overrides = EnhancedAdvertisingConfig.Overrides; var andOperator = function() { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).every(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; var orOperator = function(el) { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).some(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; for(var i = 0, iL = overrides.length; i < iL; i++) { var override = overrides[i]; var operatorFilter; if(override.Operator && override.Operator.toLowerCase() == 'and') { operatorFilter = andOperator; } else { operatorFilter = orOperator; } if(operatorFilter()) { if('Settings' in override) { if(override.Settings) { var settings = override.Settings; if('AddGroupsAll' in settings && settings.AddGroupsAll && isString(settings.AddGroupsAll)) { if(settings.AddGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll += ',' + settings.AddGroupsAll.toLowerCase(); } } if('AddGroupsInline' in settings && settings.AddGroupsInline && isString(settings.AddGroupsInline)) { if(settings.AddGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline += ',' + settings.AddGroupsInline.toLowerCase(); } } if('AddGroupsRHC' in settings && settings.AddGroupsRHC && isString(settings.AddGroupsRHC)) { if(settings.AddGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC += ',' + settings.AddGroupsRHC.toLowerCase(); } } if('RemoveGroupsAll' in settings && settings.RemoveGroupsAll && isString(settings.RemoveGroupsAll)) { if(settings.RemoveGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll += ',' + settings.RemoveGroupsAll.toLowerCase(); } } if('RemoveGroupsInline' in settings && settings.RemoveGroupsInline && isString(settings.RemoveGroupsInline)) { if(settings.RemoveGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline += ',' + settings.RemoveGroupsInline.toLowerCase(); } } if('RemoveGroupsRHC' in settings && settings.RemoveGroupsRHC && isString(settings.RemoveGroupsRHC)) { if(settings.RemoveGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC += ',' + settings.RemoveGroupsRHC.toLowerCase(); } } if('Repeat' in settings && isBoolean(settings.Repeat)) { EnhancedAdvertisingConfig.StoryDynamicSlotsRepeat = settings.Repeat; } if('DesktopMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots = settings.DesktopMaxInlineSlots; } if('MobileMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots = settings.MobileMaxInlineSlots; } if('DesktopMinRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots = settings.DesktopMinRHCSlots; } if('MobileMinRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots = settings.MobileMinRHCSlots; } if('DesktopMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots = settings.DesktopMaxRHCSlots; } if('MobileMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots = settings.MobileMaxRHCSlots; } if('DesktopElementSpacingFirst' in settings && settings.DesktopElementSpacingFirst && isNumberPositive(settings.DesktopElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst = settings.DesktopElementSpacingFirst; } if('MobileElementSpacingFirst' in settings && settings.MobileElementSpacingFirst && isNumberPositive(settings.MobileElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst = settings.MobileElementSpacingFirst; } if('DesktopElementSpacing' in settings && settings.DesktopElementSpacing && isNumberPositive(settings.DesktopElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing = settings.DesktopElementSpacing; } if('MobileElementSpacing' in settings && settings.MobileElementSpacing && isNumberPositive(settings.MobileElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing = settings.MobileElementSpacing; } if('RHCMinHeightForSlotInsert' in settings && settings.RHCMinHeightForSlotInsert && isNumberPositive(settings.RHCMinHeightForSlotInsert)) { EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = settings.RHCMinHeightForSlotInsert; } if('RHCMinHeightForStickyAd' in settings && settings.RHCMinHeightForStickyAd && isNumberPositive(settings.RHCMinHeightForStickyAd)) { EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = settings.RHCMinHeightForStickyAd; } if('CollapseEmptyDivs' in settings && isBoolean(settings.CollapseEmptyDivs)) { EnhancedAdvertisingConfig.CollapseEmptyDivs = settings.CollapseEmptyDivs; } } } } } } } var paragraphThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing; var paragraphFirstThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst; var maxInlineSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots; var minRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots; var maxRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots; var allAddGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddInlineGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddRHCGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveInlineGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveRHCGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); EnhancedAdvertisingConfig.Slots = EnhancedAdvertisingConfig.Slots.map(function(x, i) { x.Used = false; x.Index = i; if('Type' in x) { if(supportedTypes.indexOf(x.Type.toString().toLowerCase()) != -1) { x.Type = x.Type.toString().toLowerCase(); } else { x.Type = 'customcontent'; } } else { x.Type = 'customcontent'; } if('Position' in x) { if(supportedPositions.indexOf(x.Position.toString().toLowerCase()) != -1) { x.Position = x.Position.toString().toLowerCase(); } else { x.Position = 'inline'; } } else { x.Position = 'inline'; } if('CSSClass' in x) { x.CSSClass = x.CSSClass.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(' '); } else { x.CSSClass = ''; } if('Group' in x) { x.Group = x.Group.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(','); } else { x.Group = ''; } if('Sticky' in x) { if(x.Sticky.toString().toLowerCase() == 'true') { x.Sticky = true; } else { x.Sticky = false; } } else { x.Sticky = false; } if('InsertIfNoRHCSpace' in x) { if(x.InsertIfNoRHCSpace.toString().toLowerCase() == 'true') { x.InsertIfNoRHCSpace = true; } else { x.InsertIfNoRHCSpace = false; } } else { x.InsertIfNoRHCSpace = false; } if('MinHeight' in x) { x.MinHeight = parseInt(x.MinHeight.toString()); } else { x.MinHeight = 0; } if('NoBackfill' in x) { if(x.NoBackfill.toString().toLowerCase() == 'true') { x.NoBackfill = true; } else { x.NoBackfill = false; } } else { x.NoBackfill = false; } if('Refresh' in x) { if(x.Refresh.toString().toLowerCase() == 'true') { x.Refresh = true; } else { x.Refresh = false; } } else { x.Refresh = false; } if('ExtraHTML' in x) { if(x.ExtraHTML.toString()) { x.ExtraHTML = x.ExtraHTML.toString(); } else { x.ExtraHTML = ''; } } else { x.ExtraHTML = ''; } if('CustomEventName' in x) { if(x.CustomEventName.toString()) { x.CustomEventName = x.CustomEventName.toString(); } else { x.CustomEventName = ''; } } else { x.CustomEventName = ''; } if('Javascript' in x) { if(x.Javascript) { if(typeof x.Javascript === 'function') { x.Javascript = x.Javascript; } } else { x.Javascript = ''; } } else { x.Javascript = ''; } if('AdUnit' in x) { if(x.AdUnit.toString()) { x.AdUnit = x.AdUnit.toString(); } else { x.AdUnit = ''; } } else { x.AdUnit = ''; } if('AdUnitSizesInlineMobile' in x) { x.AdUnitSizesInlineMobile = x.AdUnitSizesInlineMobile; } else if('GAMAdUnitSizesInlineMobileDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineMobile = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineMobileDefault } if('AdUnitSizesInlineDesktop' in x) { x.AdUnitSizesInlineDesktop = x.AdUnitSizesInlineDesktop; } else if('GAMAdUnitSizesInlineDesktopDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineDesktop = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineDesktopDefault; } if('AdUnitSizesRHC' in x) { x.AdUnitSizesRHC = x.AdUnitSizesRHC; } else if('GAMAdUnitSizesRHCDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesRHC = EnhancedAdvertisingConfig.GAMAdUnitSizesRHCDefault; } if('RefreshDelaySeconds' in x) { x.RefreshDelaySeconds = parseInt(x.RefreshDelaySeconds.toString(), 10); } else { x.RefreshDelaySeconds = 30; } return x; }); var storyInlineContent = EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "inline" || ((!isDesktopResolution || isStoryFullLayout) && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddInlineGroups.indexOf(subel) != -1 || allAddInlineGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveInlineGroups.indexOf(subel) != -1 || allRemoveInlineGroups.indexOf('[all]') != -1; }); }); var storyRHCContent = isDesktopResolution ? EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "right" || (isDesktopResolution && !isStoryFullLayout && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddRHCGroups.indexOf(subel) != -1 || allAddRHCGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveRHCGroups.indexOf(subel) != -1 || allRemoveRHCGroups.indexOf('[all]') != -1; }); }) : []; storyInlineContent.forEach( (c, ix) => c.inlineIndex = ix ); storyRHCContent.forEach( (c, ix) => c.rhcIndex = ix ); var googletag = w.googletag || {}; googletag.cmd = googletag.cmd || []; if( isNumberPositive(maxInlineSlots) ){ //PWVD-781 for(var tmpCounter = 0, i = 0, eL = storyCustomContentPlaceholders.length, adThresholdCounter = 1; i < eL; i++) { var currentIsPara = matches(storyCustomContentPlaceholders[i], 'p:not([class])'); var nextIsPara = (i + 1 < eL) && matches(storyCustomContentPlaceholders[i + 1], 'p:not([class])'); if( currentIsPara && !nextIsPara ){ //PWVD-897 - count paragraphs followed by any other element if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } } else if( currentIsPara && nextIsPara ) { if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } tmpCounter++; adThresholdCounter = 1; storyCustomContentPlaceholders[i].outerHTML = storyCustomContentPlaceholders[i].outerHTML + "<div class=\"story-inlinecontent-placeholder story-inlinecontent-placeholder-init item-notin-viewport\" data-storyinlinecontainer=\"" + tmpCounter + "\"><div class=\"story-inlinecontent-placeholder-inner\" data-id=\"story-inline-item-" + tmpCounter + "\" data-storyinlineitem=\"" + tmpCounter + "\"></div></div>"; if(tmpCounter >= maxInlineSlots && maxInlineSlots) break; } } } if(d.querySelector('#story.enhanced-advertising:not(.story-full-layout) #rightcolumn_sleeve')) { if(!(d.body.id == "story" || d.body.id == "story_custom") && !d.querySelector('.storytext div.table-full:not(.initialized)')) { w.addEventListener("abacus:storytexttablefull:finished", function(e) { adjustRHCHeightAndInitialAds(); }, true); } else { adjustRHCHeightAndInitialAds(); } } if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').forEach(function(el) { if(el) { var inlineAdsObserver = new IntersectionObserver(function(entries) { return inlineAdsObserverCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); inlineAdsObserver.observe(el); } }); var inlineAdsObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); }; d.querySelectorAll('.storytext-end, #rhcreflow-extra-end').forEach(function(el) { if(el) { var adsInViewportObserver = new IntersectionObserver(function(entries) { return adsInViewportObserverCallback(entries); }, { root: null, rootMargin: "0px 0px 200px 0px", threshold: [1] }); adsInViewportObserver.observe(el); } }); var adsInViewportObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { if(entry.target.classList.contains('storytext-end') && d.body.classList.contains('enhanced-advertising-inline-init')) { d.body.classList.add('enhanced-advertising-storytext-endreached'); } // RHC is empty at load time so it always fires as in viewport, need to check whether rhc ads slots already init if(entry.target.classList.contains('rhcreflow-extra-end') && d.body.classList.contains('enhanced-advertising-rhc-init')) { d.body.classList.add('enhanced-advertising-rhc-endreached'); } /* if(entry.target.id === 'rhcreflow-extra'){ //Fix for issue when RHC is not in initial viewport if( location.host.indexOf('abasoftaws.co.uk') > 0 ) console.log('New observer callback'); readjusRHCHeight(); } */ } }); }; } var inlineEl = d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-completed):not(.story-inlinecontent-placeholder-processing)'); if(inlineEl) { googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { d.body.classList.add('enhanced-advertising-inline-init'); insertInlineSlot(inlineEl); console.log('Init inline ad slot load'); }); } function slotRender(event){ var el, slot = event.slot, slotId = slot.getSlotElementId(); if(enhAdDebug) console.log('Slot render: ' + slotId); if(slotId == 'custom-inline'){ el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.dataId}"]`); //Get inline slot (does not have ID) //if(!el) // el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.inlineIndex+1}"]`); } else el = d.getElementById(slotId); if(el) { var minHeight = 0; var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { var classList = el.classList; if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad'); var index = parseInt(parentInlineNode.hasAttribute('data-index') ? parentInlineNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad'); classList.add('mob-ad-50'); classList.add('ad-story-inline'); classList.add('ad-story-inline-notempty'); parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-size-' + event.size.join('x')); parentInlineNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; if(currentInlineSlot[0].Repeat == false) { currentInlineSlot[0].Used = true; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentInlineNode.classList.add('story-inlinecontent-placeholder-finished'); insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } else { classList.add('ad-story-inline-isempty'); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; currentInlineSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentInlineNode && parentInlineNode.hasAttribute('data-nobackfill')) { if(parentInlineNode.getAttribute('data-nobackfill') == '1') { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); if(!storyInlineContent.some(function(el) { return el.Used == false; })) { finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } else { insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } initRHCHeightCalc(); return; } } // Move to next from the list if( storyInlineContent.some( function(e){ return e.Used == false; } ) ) { if(enhAdDebug) console.log('slotRender: parentInlineNode: Move to next from the list') var adRetryCssClass = 'ad-story-inline-retry'; var nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Index > index && e.Used == false; }); if(!nextInlineSlotList.length) { // select repeatable ads nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextInlineSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextInlineSlotList.length) { // no more ads to add d.body.classList.add('enhanced-advertising-inline-runoutofslots'); finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); initRHCHeightCalc(); return; } } } var mapInlineAdItem = nextInlineSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } if(mapInlineAdItem.Repeat) { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-false'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-true'); } else { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-true'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-false'); } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } googletag.display(slotId); el.classList.add(adRetryCssClass); parentInlineNode.setAttribute('data-index', mapInlineAdItem.Index); if(mapInlineAdItem.ExtraHTML) { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapInlineAdItem.ExtraHTML; } } else { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } } } else if(parentRHCNode) { parentRHCNode.classList.add('story-rhccontent-placeholder-ad'); var index = parseInt(parentRHCNode.hasAttribute('data-index') ? parentRHCNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad-rhc'); classList.add('ad-story-rhc'); classList.add('ad-story-rhc-notempty'); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-size-' + event.size.join('x')); parentRHCNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { minHeight = currentRHCSlot[0].MinHeight; if(currentRHCSlot[0].Repeat == false) { currentRHCSlot[0].Used = true; } if(currentRHCSlot[0].InsertIfNoRHCSpace) { currentRHCSlot[0].InsertIfNoRHCSpace = false; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentRHCNode.classList.remove('story-rhccontent-placeholder-isempty'); parentRHCNode.classList.remove('story-rhccontent-placeholder-notempty'); parentRHCNode.classList.add((event.isEmpty ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-completed'); parentRHCNode.classList.add('story-rhccontent-placeholder-finished'); var canAddRHC = isStoryTextTallerThanRHC(); if( ( index > 0 && !d.body.classList.contains('enhanced-advertising-inline-completed') && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') ) || ( canAddRHC.canAdd && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') && canAddRHC.delta > EnhancedAdvertisingConfig.RHCMinHeightForStickyAd ) ){ parentRHCNode.classList.remove('story-rhccontent-placeholder-canbesticky'); parentRHCNode.classList.add('story-rhccontent-placeholder-sticky'); } } else { classList.add('ad-story-rhc-isempty'); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { currentRHCSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentRHCNode && parentRHCNode.hasAttribute('data-nobackfill')) { if(parentRHCNode.getAttribute('data-nobackfill') == '1') { updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); if(!storyRHCContent.some(function(el) { return el.Used == false; })) { d.body.classList.add('enhanced-advertising-rhc-runoutofslots'); finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, true); } initRHCHeightCalc(); return; } } // Move to next from the list if(enhAdDebug){ console.log('slotRender: parentRHCNode: storyRHCContent: index: ' + index); console.log(storyRHCContent); } if(storyRHCContent.some(function(e) { return e.Used == false; })) { var adRetryCssClass = 'ad-story-rhc-retry'; var nextRHCSlotList = storyRHCContent.filter(function(e) { if(enhAdDebug) console.log('%c Current index: ' + e.Index + ', slot data index: ' + index, 'color: #0C6') return e.Index > index && e.Used == false; }); if(enhAdDebug){ console.log('%c slotRender: parentRHCNode: Moved to next from the list', 'color: #06C'); console.log(nextRHCSlotList); } if(!nextRHCSlotList.length) { // select repeatable ads nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextRHCSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextRHCSlotList.length) { // no more ads to add finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); initRHCHeightCalc(); return; } } } var mapRHCAdItem = nextRHCSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } if(mapRHCAdItem.Repeat) { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-false'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-true'); } else { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-true'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-false'); } if(mapRHCAdItem.Type == 'customcontent'){ //Custom content (RSCCS-540) if(enhAdDebug) console.log('Next RHC config item is custom content'); adjustRHCHeightAndInitialAds(); } else if(mapRHCAdItem.AdUnit){ //Google ad var mapInlineAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping( googletag.sizeMapping().build() ).setTargeting( 'refresh', (refresh ? 'true' : 'false') ).setTargeting( 'refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile) ).setCollapseEmptyDiv( EnhancedAdvertisingConfig.CollapseEmptyDivs, false ).addService( googletag.pubads() ); } else { console.warn('SlotRender: Something wrong with RHC ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } googletag.display(slotId); } el.classList.add(adRetryCssClass); parentRHCNode.setAttribute('data-index', mapRHCAdItem.Index); if(mapRHCAdItem.ExtraHTML) { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapRHCAdItem.ExtraHTML; } } else { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); } } } if(parentInlineNode) { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); } else { //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); } } } initRHCHeightCalc(); } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRequested', function(event) { var slot = event.slot; var el = d.getElementById(slot.getSlotElementId()); if(el) { var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-init'); } else { parentRHCNode.classList.add('story-rhccontent-placeholder-ad-init'); } } } }); googletag.pubads().addEventListener('slotRenderEnded', function(event) { var sId = event.slot.getSlotElementId(); if( enhAdDebug && sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot RENDER END (${sId})`, 'color: #FE2ACA'); console.log(event); //loadOrRender(sId, 'render', event); } slotRender(event); }); if(enhAdDebug){ //Track slot load events googletag.pubads().addEventListener('slotOnload', (evLoad) => { var sId = evLoad.slot.getSlotElementId(); if( sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot LOAD (${ evLoad.slot.getSlotElementId() })`, 'color: #C00;'); console.log(event); //loadOrRender(sId, 'load'); } }); } googletag.pubads().addEventListener('slotVisibilityChanged', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1 && event.inViewPercentage > 0) { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode || parentStoryRHCNode) { if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = inlineEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-inline-refreshed'); inlineEl.setAttribute('data-shouldrefresh', '0'); } } } } else { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = rhcEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-rhc-refreshed'); rhcEl.setAttribute('data-shouldrefresh', '0'); } } } } } } }); googletag.pubads().addEventListener('impressionViewable', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1) { var refreshdelayseconds = slot.getTargeting('refreshdelayseconds').length ? parseInt(slot.getTargeting('refreshdelayseconds')[0], 10) : 0; if(refreshdelayseconds) { setTimeout(function() { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); inlineEl.setAttribute('data-shouldrefresh', '0'); } else { inlineEl.setAttribute('data-shouldrefresh', '1'); } } } else if(parentStoryRHCNode) { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); rhcEl.setAttribute('data-shouldrefresh', '0'); } else { rhcEl.setAttribute('data-shouldrefresh', '1'); } } } }, refreshdelayseconds * 1000); } else { console.log('Ad refresh delay in seconds is incorrect (slot: ' + slot.getSlotElementId() + '): ', refreshdelayseconds); } } }); }); function isBoolean(n) { return !!n === n; } function isNumber(n) { return +n === n; } function isString(n) { return '' + n === n; } function isNumberPositive(n) { return +n === n && n > 0; } function isNumberPositiveOrZero(n) { return +n === n && n >= 0; } function isArrayOfArrays(a) { return a.every(function(x) { return Array.isArray(x); }); } function getAbsoluteHeight(element) { if(!element) return 0; var styles = w.getComputedStyle(element); var margin = parseFloat(styles['margin-top']) + parseFloat(styles['margin-bottom']); var minHeight = element.clientHeight; return Math.ceil(minHeight ? minHeight + margin : element.offsetHeight + margin); } function updateRHCContainerState() { var classList = d.body.classList; if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed').length) { d.body.classList.add('enhanced-advertising-rhc-empty'); } else { d.body.classList.remove('enhanced-advertising-rhc-empty'); } } function insertRHCSlot(el) { if(el) { el.classList.add('story-rhccontent-placeholder-processing'); } if(el && storyRHCContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredRHCAds = storyRHCContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredRHCAds = storyRHCContent.filter(function(e) { return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { finalizeRemainingEmptyRHCSlotContainers(classList, false); return; } var mapRHCAdItem = tempFilteredRHCAds[0]; classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); if(mapRHCAdItem.CSSClass) { mapRHCAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapRHCAdItem.Type == 'gamadvert') { if(placeholder) { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); if(mapRHCAdItem.Sticky) { classList.add('story-rhccontent-placeholder-canbesticky'); placeholder.classList.add('sticky'); } if(mapRHCAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } var mapRHCAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, mapRHCAdItem.AdUnitSizesRHC, 'story-rhcad-' + rhcAdCounter); if(mapRHCAdItemSlot) { mapRHCAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with rhc ad slot \'' + 'story-rhcad-' + rhcAdCounter + '\', size(s) \'' + mapRHCAdItem.AdUnitSizesRHC.join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-rhccontent-placeholder-refresh-true'); } else { classList.add('story-rhccontent-placeholder-refresh-false'); } classList.add('story-rhccontent-placeholder-ad'); placeholder.id = 'story-rhcad-' + rhcAdCounter; placeholder.outerHTML = '<div class="story-rhccontent-placeholder-ad-extrahtml">' + mapRHCAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapRHCAdItem.AdUnit); googletag.display('story-rhcad-' + rhcAdCounter); $(w).trigger("wvcfe:storyrhcaditeminit", [$(el), $(placeholder), mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } rhcAdCounter++; } } else if(mapRHCAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); classList.add('story-rhccontent-placeholder-customcontent'); if(placeholder) { placeholder.innerHTML = mapRHCAdItem.HTML; classList.add('story-rhccontent-placeholder-notempty'); $(w).trigger("wvcfe:storyrhcitemajaxinit", [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } el.classList.add('story-rhccontent-placeholder-finished'); } } el.setAttribute('data-index', mapRHCAdItem.Index); rhcCounter++; } else { console.log('Missing placeholder: [data-id="story-rhc-item-' + rhcCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyRHCSlotContainers(classList, false); } else { console.log('Missing RHC element'); } } function insertInlineSlot(el) { if(el) { el.classList.add('story-inlinecontent-placeholder-processing'); } if(el && storyInlineContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredInlineAds = storyInlineContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredInlineAds = storyInlineContent.filter(function(e){ return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredInlineAds.length) { tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { // start from the first repeatable ad index tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { finalizeRemainingEmptyInlineSlotContainers(classList, true); return; } } } var mapInlineAdItem = tempFilteredInlineAds[0]; classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); if(mapInlineAdItem.CSSClass) { mapInlineAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapInlineAdItem.Type == 'gamadvert') { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); el.classList.add('story-inlinecontent-placeholder-ad'); if(mapInlineAdItem.Sticky) { classList.add('story-inlinecontent-placeholder-sticky'); placeholder.classList.add('sticky'); } if(mapInlineAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapInlineAdItem.Repeat) { classList.add('story-inlinecontent-placeholder-repeat-true'); } else { classList.add('story-inlinecontent-placeholder-repeat-false'); } if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, 'story-inlinead-' + inlineAdCounter); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + 'story-inlinead-' + inlineAdCounter + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-inlinecontent-placeholder-refresh-true'); } else { classList.add('story-inlinecontent-placeholder-refresh-false'); } placeholder.id = 'story-inlinead-' + inlineAdCounter; placeholder.outerHTML = '<div class="story-inlinecontent-placeholder-ad-extrahtml">' + mapInlineAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapInlineAdItem.AdUnit); googletag.display('story-inlinead-' + inlineAdCounter); $(w).trigger("wvcfe:storyinlineaditeminit", [$(el), $(placeholder), mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type); } } inlineAdCounter++; } else if(mapInlineAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); el.classList.add('story-inlinecontent-placeholder-customcontent'); placeholder.innerHTML = mapInlineAdItem.HTML; $(w).trigger("wvcfe:storyinlineitemajaxinit", [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type.toLowerCase()); } } el.classList.add('story-inlinecontent-placeholder-finished'); var inlineCustomEvent = { dataId: (mapInlineAdItem.Index+1), slot: { getSlotElementId: function(){ return 'custom-inline'; }, getAdUnitPath: function(){return 'custom-inline'} }, isEmpty: false, size:[0,0] }; el.setAttribute('data-index', mapInlineAdItem.Index); slotRender(inlineCustomEvent); //$(w).trigger('abacus:inlinecontentrender', inlineCustomEvent); } el.setAttribute('data-index', mapInlineAdItem.Index); //el.setAttribute('data-index', inlineCounter); inlineCounter++; } else { console.log('Missing placeholder: [data-id="story-inline-item-' + inlineCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyInlineSlotContainers(classList, true); } else { console.log('Missing inline element'); } } function finalizeRemainingEmptyRHCSlotContainers(classList, processremaining) { classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); classList.add('story-rhccontent-placeholder-isempty'); classList.add('story-rhccontent-placeholder-runoutofslots'); classList.add('story-rhccontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-rhccontent-placeholder-init'); c.add('story-rhccontent-placeholder-completed'); c.add('story-rhccontent-placeholder-isempty'); c.add('story-rhccontent-placeholder-runoutofslots'); c.add('story-rhccontent-placeholder-finished'); } } } } function finalizeRemainingEmptyInlineSlotContainers(classList, processremaining) { classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); classList.add('story-inlinecontent-placeholder-isempty'); classList.add('story-inlinecontent-placeholder-runoutofslots'); classList.add('story-inlinecontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-inlinecontent-placeholder-init'); c.add('story-inlinecontent-placeholder-completed'); c.add('story-inlinecontent-placeholder-isempty'); c.add('story-inlinecontent-placeholder-runoutofslots'); c.add('story-inlinecontent-placeholder-finished'); } } } } function updateInlinePlaceholderClasses(node, status, minHeight) { node.classList.remove('story-inlinecontent-placeholder-isempty'); node.classList.remove('story-inlinecontent-placeholder-notempty'); node.classList.add((status ? 'story-inlinecontent-placeholder-isempty' : 'story-inlinecontent-placeholder-notempty')); node.classList.add('story-inlinecontent-placeholder-ad-completed'); if(!status) { var computedMinHeightValue = w.getComputedStyle(node).minHeight || 0; var computedMinHeight = parseInt(computedMinHeightValue, 10); if(minHeight > computedMinHeight) { node.style.minHeight = minHeight + 'px'; } } } function updateRHCPlaceholderClasses(node, status) { node.classList.remove('story-rhccontent-placeholder-ad-init'); node.classList.remove('story-rhccontent-placeholder-isempty'); node.classList.remove('story-rhccontent-placeholder-notempty'); node.classList.add((status ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); node.classList.add('story-rhccontent-placeholder-ad-completed'); } function initRHCHeightCalc() { updateRHCFirstandLastItemStyles(); // readjust height if no in progress/loading ads as the height might change on storytext or RHC if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed.story-rhccontent-placeholder-ad-init').length) { readjusRHCHeight(); } else { setTimeout(function() { initRHCHeightCalc(); }, 0); } } function isInViewport(element) { var rect = element.getBoundingClientRect(); var height = w.innerHeight || d.documentElement.clientHeight; var width = w.innerWidth || d.documentElement.clientWidth; return ( rect.right >= 0 && rect.bottom >= 0 && rect.left <= width && rect.top <= height ); } function processElementsInViewport() { var adsInlinePlaceholders = d.querySelectorAll('.storytext .story-inlinecontent-placeholder'); //PWVD-893 : change from rhccontent var adsRHCPlaceholders = d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder'); if(adsInlinePlaceholders || adsRHCPlaceholders) { if(adsInlinePlaceholders) { adsInlinePlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-inlinecontent-placeholder-isinviewport'); classList.add('story-inlinecontent-placeholder-isnotinviewport'); } else { classList.remove('story-inlinecontent-placeholder-isnotinviewport'); classList.add('story-inlinecontent-placeholder-isinviewport'); } }); } else { adsRHCPlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-rhccontent-placeholder-isinviewport'); classList.add('story-rhccontent-placeholder-isnotinviewport'); } else { classList.remove('story-rhccontent-placeholder-isnotinviewport'); classList.add('story-rhccontent-placeholder-isinviewport'); } }); } } } function adjustRHCHeightAndInitialAds() { var output = []; var googletag = w.googletag || {}; var rhcreflowExtra = d.querySelector('#rhcreflow-extra'); if(rhcreflowExtra) { rhcreflowExtra.innerHTML = ''; minRHCSlotsToFitIn = (minRHCSlots > 0 ? minRHCSlots : 2); maxRHCSlotsToFitIn = (maxRHCSlots > 0 ? maxRHCSlots : 0); for(var i = 0, iL = Math.max(storyRHCContent.length, maxRHCSlotsToFitIn); i < iL; i++) { rhcCounter = i + 1; output.push("<div class=\"story-rhccontent-placeholder story-rhccontent-placeholder-init item-notin-viewport\" data-storyrhccontainer=\"" + rhcCounter + "\"><div class=\"story-rhccontent-placeholder-inner\" data-id=\"story-rhc-item-" + rhcCounter + "\" data-storyrhcitem=\"" + rhcCounter + "\"></div></div>"); if(rhcCounter >= maxRHCSlotsToFitIn) break; } d.querySelector('#rhcreflow-extra').innerHTML = output.join(''); if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init').forEach(function(el) { if(el) { observer = new IntersectionObserver(function(entries) { return observerCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); observer.observe(el); } }); var observerCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); } } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var hasAnyRHCLoadedBefore = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); if(rhcEl && !hasAnyRHCLoadedBefore.length) { insertRHCSlot(rhcEl); d.body.classList.add('enhanced-advertising-rhc-init'); } }); updateRHCContainerState(); } } function isStoryTextTallerThanRHC() { var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, colmain = d.getElementById('colmain').clientHeight; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); return { "canAdd": colmain > calcHeight, "delta": colmain - calcHeight }; } else { return { "canAdd": false, "delta": 0 }; } } function canAddRHCItem() { // check whether inline and RHC ads finished loading, otherwise ignore var storyRHCSlotHeight = EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert; var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, innerChild = 0; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { //innerChild = (item || item.querySelector('.story-rhccontent-placeholder-inner') || item.firstChild); //h = getAbsoluteHeight(innerChild); //if (h == 0) { // h = getAbsoluteHeight(item); //} h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); var result = { "canAddRHCItem": d.getElementById('colmain').clientHeight > calcHeight + storyRHCSlotHeight, "colmainTaller": d.getElementById('colmain').clientHeight > calcHeight }; return result; } else { return { "canAddRHCItem": false, "colmainTaller": false }; } } function readjusRHCHeight() { if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { d.getElementById('rightcolumn_sleeve').style.minHeight = d.getElementById('colmain').clientHeight + 'px'; } var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var canAdd = canAddRHCItem(); var hasInsertIfNoRHCSpace = storyRHCContent.some(function(e) { return e.InsertIfNoRHCSpace == true && e.Used == false && e.Index > slotIndex; }); if(!rhcEl || (!canAdd.canAddRHCItem && !hasInsertIfNoRHCSpace && !d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)').length)) { d.body.classList.add('enhanced-advertising-rhc-completed'); } else { d.body.classList.remove('enhanced-advertising-rhc-completed'); } //var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished)'); var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished):not(.story-rhccontent-placeholder-isempty)'); //var rhcElemInit = $('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); //PWVD-749 //var classesToExclude = ['init', 'processing', 'finished'].map( cls => '.story-rhccontent-placeholder-' + cls); //, 'isempty' //rhcElemInit = rhcElemInit.find( classesToExclude.join(',') ).remove(); if(rhcEl && (canAdd.canAddRHCItem || hasInsertIfNoRHCSpace) && rhcElementsInitialised.length == 0) { googletag.cmd.push(function() { insertRHCSlot(rhcEl); }); } } function updateRHCFirstandLastItemStyles() { d.querySelectorAll('#rhcreflow-extra > *:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-isempty)').forEach(function(item, index, data) { item.classList.remove('story-rhccontent-placeholder-first'); item.classList.remove('story-rhccontent-placeholder-last'); if(index == 0) { item.classList.add('story-rhccontent-placeholder-first'); } if(index == data.length - 1) { item.classList.add('story-rhccontent-placeholder-last'); } }); if((d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed').length == d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-finished').length) && !d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').length) { d.body.classList.add('enhanced-advertising-inline-completed'); } else { d.body.classList.remove('enhanced-advertising-inline-completed'); } } w.addEventListener('scroll', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener('resize', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener("abacus:loadcontent:complete", function(evt, context) { readjusRHCHeight(); }, true); if(d.querySelector('#story .storytext img.lazyload')) { d.addEventListener('lazyloaded', function(e) { if(w.googletag && googletag.apiReady) { if(getClosestParent(e.target, '.storytext')) { readjusRHCHeight(); } } }); } w.addEventListener("abacus:advertb:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:gamadvert:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:readjusrhcheight", function(evt, context) { readjusRHCHeight(); }, true); //w.addEventListener('abacus:inlinecontentrender', function(customEvent) { // slotRender(customEvent); //}, true); } }); })(window, document); </script> <!-- AB Google Tag Manager (noscript) --> <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-T4GDCNK');</script> <!-- AB End Google Tag Manager (noscript) --> </head> <body id="story" class="M1-master js-disabled story-style-1 story-format-1023 story-type-1094 story-is-grouplead story-is-group enhanced-advertising enhanced-advertising-rhc-empty"> <!-- AB Google Tag Manager original (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T4GDCNK" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- AB End Google Tag Manager (noscript) --> <!-- FG Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PQRKBK3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End FG Google Tag Manager (noscript) --> <!--[if lte IE 10]> <link rel="stylesheet" href="/CSS/dest/notsupported.css"> <div class="notSupported"> <div class="sleeve"> <span id="logo" class="vector-icon i-brand-logo i-brand-logo-dims"></span> <h2> Your browser is not supported </h2> <p> Sorry but it looks as if your browser is out of date. To get the best experience using our site we recommend that you upgrade or switch browsers. </p> <p class="buttonContainer"> <a class="button" href="https://www.google.co.uk/webhp?ion=1&espv=2&ie=UTF-8#q=update+my+browser" target="_blank">Find a solution</a> </p> </div> </div> <![endif]--> <script type="text/javascript">document.body.className = document.body.className.replace('js-disabled', ''); document.cookie = "_js=1; path=/";</script> <div id="wrapper"> <ul id="skiplinks"><li><a href="#wrapper_sleeve">Skip to main content</a></li><li><a href="#mainnav">Skip to navigation</a></li></ul> <header id="masthead" class="masthead"> <div class="htmlContent"> <div id='div-gpt-ad-249527336346462137-0-interstitials-oop3'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-249527336346462137-0-interstitials-oop3'); }); </script> </div> <div id='div-gpt-ad-249527336346462137-0-video-oop'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-249527336346462137-0-video-oop'); }); </script> </div> <div id='div-gpt-ad-249527336346462137-0-curtain-raiser-oop1'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-249527336346462137-0-curtain-raiser-oop1'); }); </script> </div> <div id='div-gpt-ad-249527336346462137-0-stayon-oop2'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-249527336346462137-0-stayon-oop2'); }); </script> </div> <!--wallpaper--> <div id="div-gpt-ad-1581079248444-0" class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1581079248444-0'); }); </script> </div> <!---OKO Interstitial test for TNUK--> <script> googletag.cmd.push(function() { // Ensure the first call to display comes after static ad slot // divs are defined. googletag.display(staticSlot); }); </script> </div> <div class="hot-topics-container container showMenuPushed"><div class="inner-sleeve"><ul><li class="hot-topics-item"><svg id="hot-topics-icon" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><title>hot-topics</title><path d="M.31,7.44,7.56,14.7A1,1,0,0,0,9,14.7H9L14.7,9h0a1,1,0,0,0,0-1.45L7.44.31A1,1,0,0,0,6.79,0H1A.92.92,0,0,0,.27.27h0A.92.92,0,0,0,0,1V6.65a1,1,0,0,0,0,.14H0A1,1,0,0,0,.31,7.44ZM2.39,5.3a2.07,2.07,0,1,1,2.93,0A2.07,2.07,0,0,1,2.39,5.3Z" fill="#ababab" /></svg><span>Trending now</span></li><li class="first"><a href="https://www.flightglobal.com/defence/2025-world-air-forces-directory/160846.article">2025 World Air Forces directory</a></li><li><a href="https://www.flightglobal.com/guide-to-business-aviation-training-and-safety-2024">Guide to Business Aviation Training and Safety 2024</a></li><li><a href="https://www.flightglobal.com/airline-business/podcast" class="newWindow">Airline Business podcast</a></li><li><a href="https://www.flightglobal.com/news/podcasts">First Flight - a new podcast</a></li><li><a href="https://account.flightglobal.com/register">Sustainable Aviation newsletter</a></li><li><a href="https://www.flightglobal.com/women-in-aviation/66.tag">Women in Aviation</a></li><li><a href="https://www.flightglobal.com/aix-2024">AIX 2024</a></li><li><a href="https://www.flightglobal.com/reports/2024-world-air-forces-directory/156008.article">2024 World Air Forces directory</a></li><li><a href="https://www.flightglobal.com/singapore-airshow-2024/111.tag">Singapore Airshow 2024</a></li><li><a href="https://www.flightglobal.com/guide-to-business-aviation-training-and-safety-2023">Guide to Business Aviation Training and Safety 2023</a></li><li><a href="https://www.flightglobal.com/programmes/last-of-the-jumbos-boeing-closes-chapter-with-final-747-delivery/151856.article">Final Boeing 747 delivery</a></li><li><a href="https://www.flightglobal.com/aerospace/what-lies-in-store-for-the-aviation-industry-in-2023/151124.article">2023 Industry forecast</a></li><li><a href="https://www.flightglobal.com/flight-international/how-year-of-conflict-affected-world-air-forces-inventory/151113.article">2023 World Air Forces directory</a></li><li><a href="https://www.flightglobal.com/news/shows/nbaa-2022">NBAA 2022</a></li><li><a href="https://www.flightglobal.com/news/shows/farnborough-2022">Farnborough 2022</a></li><li><a href="https://www.flightglobal.com/shell-aviation-what-will-it-take-to-decarbonise-aviation">What will it take to Decarbonise Aviation?</a></li><li><a href="https://www.flightglobal.com/aix/95.tag">AIX 2022</a></li><li><a href="https://www.flightglobal.com/news/shows/ebace-2022">EBACE 2022</a></li><li><a href="https://www.flightglobal.com/guide-to-business-aviation-training-and-safety-2022">Guide to Business Aviation Training and Safety 2022</a></li><li><a href="https://www.flightglobal.com/88.tag">Ukraine crisis</a></li><li><a href="https://www.flightglobal.com/jobs/the-flightglobal-pilot-survey-2022/147230.article">The Pilot Survey 2022</a></li><li><a href="https://www.flightglobal.com/aerospace/what-awaits-the-aviation-sector-in-2022/146889.article">What does the future of aviation look like in 2022?</a></li><li><a href="https://www.flightglobal.com/reports/world-air-forces-directory-2022/146695.article">World Air Forces directory 2022</a></li><li><a href="https://www.flightglobal.com/shell-aviation-what-will-it-take-to-decarbonise-aviation">Shell Aviation: What will it take to Decarbonise Aviation?</a></li><li><a href="https://www.flightglobal.com/edge-a-new-global-force-in-aerospace-and-defence">EDGE: A new global force in aerospace and defence</a></li><li><a href="https://www.flightglobal.com/news/shows/nbaa-2021">NBAA 2021</a></li><li><a href="https://www.flightglobal.com/airlines/world-airline-rankings-how-deeply-the-crisis-hit-the-industry-in-2020/145186.article">World Airline Rankings 2021</a></li><li><a href="https://www.flightglobal.com/news/shows/iata-agm-2021">IATA AGM 2021</a></li><li><a href="https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article">Top 100 aerospace companies</a></li><li><a href="https://www.flightglobal.com/news/shows/dsei-2021">DSEI 2021</a></li><li><a href="https://www.flightglobal.com/news/shows/maks-2021">MAKS 2021</a></li><li><a href="https://www.flightglobal.com/paid-content/defending-across-the-domains/143815.article">Defending across the domains</a></li><li><a href="https://www.flightglobal.com/flightglobal-guide-to-business-aviation-training-and-safety-2021">FlightGlobal Guide to Business Aviation Training and Safety 2021</a></li><li><a href="https://www.flightglobal.com/737-max-two-years-on">737 Max: Two years on</a></li><li><a href="https://www.flightglobal.com/the-pilot-survey-2021-report">The Pilot Survey 2021 Report</a></li><li><a href="https://www.flightglobal.com/helicopter-report">Helicopter Report</a></li><li class="last"><a href="https://www.flightglobal.com/">Sustainability at Paris</a></li></ul></div></div> <div class="mast container full" role="banner" data-multi-toggle-menu> <div class="inner-sleeve" data-menu-open-pushed> <div class="mastheadLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Site name</span> </span> </a> </div> <div id="print_logo"> <img src="/magazine/dest/graphics/logo/print_logo.png" alt="" /> </div> <div class="mastheadMobileLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Site name</span> </span> </a> </div> <div class="mastControls"> <nav data-multi-toggle-item="" class="mastNav loggedout hide"><span class="toggleIcon"><a href="#mastnav" data-toggle-button=""><span class="assistive">Mast navigation</span></a></span><ul id="mastnav" data-toggle-element=""><li><a href="https://www.flightglobal.com/subscribe?campaigncode=fgsubusernav">Subscribe</a></li><li><a href="https://account.flightglobal.com/register?campaigncode=fgregusernav&amp;returl=https://www.flightglobal.com">Register</a></li><li><a href="https://account.flightglobal.com/register?campaigncode=fgregusernav&amp;returl=https://www.flightglobal.com">Newsletters</a></li><li><a class="popup signIn" href="https://www.flightglobal.com/sign-in">Sign In</a></li></ul></nav> <div class="mastheadSearch hide" data-multi-toggle-item=""> <span class="toggleIcon"> <a href="#search" data-toggle-button=""> <span class="assistive">Search our site</span> </a> </span> <form action="https://www.flightglobal.com/searchresults" method="get" id="mastsearch" data-toggle-element=""> <fieldset> <div> <label for="search">Search our site</label> <input type="text" id="search" value="" name="qkeyword" class="text" placeholder="Search our site" /> <button class="mastSearch" type="submit">Search</button> </div> </fieldset> </form> </div> <div class="menuToggle"> <span class="toggleIcon"><a href="#mobilemenu" data-menu-toggle-button=""><span class="assistive">Menu</span></a></span> </div> </div> </div> </div> <div class="menuContainer"> <div class="mobileMenu" id="mobilemenu"> <div class="sleeve"> <a class="menuClose" href="#wrapper"> <span>Close<span class="assistive"> menu</span></span> </a> <ul class="main"> <li class="home-icon"> <a href="https://www.flightglobal.com/"> <span>Home</span> </a> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/news" aria-expanded="false"> <span>News</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/news"> <span>News</span> </a> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/news/aerospace" aria-expanded="false"> <span>Aerospace</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/news/aerospace"> <span>Aerospace</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/aerospace/mro"> <span>MRO</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/aerospace/systems-and-interiors"> <span>Systems & Interiors</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/aerospace/helicopters"> <span>Helicopters</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/aerospace/space"> <span>Space</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/aerospace/civil-uavs"> <span>Civil UAVs</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/news/air-transport" aria-expanded="false"> <span>Air transport</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/news/air-transport"> <span>Air transport</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/air-transport/airframers"> <span>Airframers</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/air-transport/engines"> <span>Engines</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/air-transport/programmes"> <span>Programmes</span> </a> </li> <li class="break"> <a href="https://www.flightglobal.com/news/air-transport/orders-and-deliveries"> <span>Orders & Deliveries</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.flightglobal.com/news/safety"> <span>Safety</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/business-aviation"> <span>Business aviation</span> </a> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/news/region" aria-expanded="false"> <span>Region</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/news/region"> <span>Region</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/region/europe"> <span>Europe</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/region/africa"> <span>Africa</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/region/north-america"> <span>North America</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/region/latin-america"> <span>Latin America</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/region/asia-pacific"> <span>Asia Pacific</span> </a> </li> <li class="break"> <a href="https://www.flightglobal.com/news/region/middle-east"> <span>Middle East</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.flightglobal.com/news/analysis"> <span>Analysis</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/interviews"> <span>Interviews</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/opinion"> <span>Opinion</span> </a> </li> <li class="break"> <a href="https://www.flightglobal.com/news/in-depth"> <span>In depth</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/news/podcasts"> <span>Podcasts</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/airlines" aria-expanded="false"> <span>Airlines</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/airlines"> <span>Airlines</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/airlines/strategy"> <span>Strategy</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/airlines/networks"> <span>Networks</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/airlines/fleets"> <span>Fleets</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/defence" aria-expanded="false"> <span>Defence</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/defence"> <span>Defence</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/defence/helicopters"> <span>Helicopters</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/defence/fixed-wing"> <span>Fixed-Wing</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/defence/military-uavs"> <span>Military UAVs</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/defence/2025-world-air-forces-directory/160846.article"> <span>2025 World Air Forces directory</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/flight-international" aria-expanded="false"> <span>Flight International</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/flight-international"> <span>Flight International</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/subscribe" class="newWindow"> <span>Subscribe to Flight International</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/flight-international/flight-international-opinion"> <span>Flight International Opinion</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/flight-international/110-years-of-flight"> <span>110 years of Flight</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/flight-international/airbus-at-50"> <span>Airbus at 50</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/flight-international/honeywell-shaping-the-future"> <span>Honeywell: Shaping the Future</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/flight-international/cae-skys-no-limit"> <span>CAE: Sky's no limit</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.flightglobal.com/events-and-webinars" aria-expanded="false"> <span>Events & webinars</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.flightglobal.com/events-and-webinars"> <span>Events & webinars</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/events-and-webinars/upcoming-webinars"> <span>Upcoming webinars</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/events-and-webinars/on-demand-webinars"> <span>On demand webinars</span> </a> </li> </ul> </li> <li class=""> <a href="https://jobs.flightglobal.com/?utm_source=FlightGlobal&amp;utm_medium=website&amp;utm_campaign=navbar " class="newWindow"> <span>Jobs</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/subscribe?campaigncode=fgsubmast" class="newWindow"> <span>Subscribe</span> </a> </li> <li class=""> <a href="https://www.flightglobal.com/airline-business" class="newWindow"> <span>Airline Business</span> </a> </li> </ul> </div> </div> <div class="mobileMenuClose"></div> <div id="mainnav" class="desktopNavigation container" data-menu-open-pushed=""><div class="dropdown vanityPanel"><div class="inner-sleeve"></div></div><div class="inner-sleeve"><ul class="main preJS"><li data-navcode="2" data-rootnavcode="2" class="home-icon"><a href="https://www.flightglobal.com/"><span>Home</span></a></li><li data-navcode="31" data-rootnavcode="31" class="hasChildren fourSubNav"><a href="https://www.flightglobal.com/news"><span>News</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="43" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/aerospace"><span>Aerospace</span></a><ul><li data-navcode="82" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/aerospace/mro"><span>MRO</span></a></li><li data-navcode="83" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/aerospace/systems-and-interiors"><span>Systems & Interiors</span></a></li><li data-navcode="84" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/aerospace/helicopters"><span>Helicopters</span></a></li><li data-navcode="85" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/aerospace/space"><span>Space</span></a></li><li data-navcode="86" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/aerospace/civil-uavs"><span>Civil UAVs</span></a></li></ul></li><li data-navcode="46" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/air-transport"><span>Air transport</span></a><ul><li data-navcode="118" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/air-transport/airframers"><span>Airframers</span></a></li><li data-navcode="119" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/air-transport/engines"><span>Engines</span></a></li><li data-navcode="120" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/air-transport/programmes"><span>Programmes</span></a></li><li data-navcode="121" data-rootnavcode="31" class="break"><a href="https://www.flightglobal.com/news/air-transport/orders-and-deliveries"><span>Orders & Deliveries</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="47" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/safety"><span>Safety</span></a></li><li data-navcode="114" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/business-aviation"><span>Business aviation</span></a></li><li data-navcode="69" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/region"><span>Region</span></a><ul><li data-navcode="70" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/region/europe"><span>Europe</span></a></li><li data-navcode="71" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/region/africa"><span>Africa</span></a></li><li data-navcode="72" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/region/north-america"><span>North America</span></a></li><li data-navcode="73" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/region/latin-america"><span>Latin America</span></a></li><li data-navcode="74" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/region/asia-pacific"><span>Asia Pacific</span></a></li><li data-navcode="75" data-rootnavcode="31" class="break"><a href="https://www.flightglobal.com/news/region/middle-east"><span>Middle East</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="100" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/analysis"><span>Analysis</span></a></li><li data-navcode="102" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/interviews"><span>Interviews</span></a></li><li data-navcode="98" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/opinion"><span>Opinion</span></a></li><li data-navcode="101" data-rootnavcode="31" class="break"><a href="https://www.flightglobal.com/news/in-depth"><span>In depth</span></a></li></ul></li><li class="subnav"><ul><li data-navcode="450" data-rootnavcode="31" class=""><a href="https://www.flightglobal.com/news/podcasts"><span>Podcasts</span></a></li></ul></li></ul></div></div></li><li data-navcode="44" data-rootnavcode="44" class="hasChildren oneSubNav"><a href="https://www.flightglobal.com/airlines"><span>Airlines</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="79" data-rootnavcode="44" class=""><a href="https://www.flightglobal.com/airlines/strategy"><span>Strategy</span></a></li><li data-navcode="233" data-rootnavcode="44" class=""><a href="https://www.flightglobal.com/airlines/networks"><span>Networks</span></a></li><li data-navcode="132" data-rootnavcode="44" class=""><a href="https://www.flightglobal.com/airlines/fleets"><span>Fleets</span></a></li></ul></li><li class="promotedStory"><a href="/fleets/jetblues-gtf-engines-off-wing-for-average-of-360-days-amid-widespread-aircraft-groundings/161817.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/0/4/8/108048_jetbluea220engine_795055.jpg" loading="lazy" class="lazyloaded" alt="JetBlue-A220-Engine"></div><div class="captionBlock"><span class="title">JetBlue’s GTF engines off-wing for average of 360 days amid widespread aircraft groundings</span></div></a></li><li class="promotedStory"><a href="/fleets/copa-perfectly-fine-with-revised-737-delivery-schedule-ceo-pedro-heilbron/161757.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/0/1/5/108015_shutterstock_1497571439_26885.jpg" loading="lazy" class="lazyloaded" alt="shutterstock_1497571439"></div><div class="captionBlock"><span class="title">Copa ‘perfectly fine’ with revised 737 delivery schedule: CEO Pedro Heilbron</span></div></a></li><li class="promotedStory"><a href="/analysis/korean-air-outlines-economies-of-scale-in-asiana-integration/161780.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/9/7/6/107976_asianakoreanairceqroy_375296.jpg" loading="lazy" class="lazyloaded" alt="Asiana Korean Air -c- EQRoy"></div><div class="captionBlock"><span class="title">Korean Air outlines ‘economies of scale’ in Asiana integration</span></div></a></li></ul></div></div></li><li data-navcode="45" data-rootnavcode="45" class="hasChildren oneSubNav"><a href="https://www.flightglobal.com/defence"><span>Defence</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="116" data-rootnavcode="45" class=""><a href="https://www.flightglobal.com/defence/helicopters"><span>Helicopters</span></a></li><li data-navcode="115" data-rootnavcode="45" class=""><a href="https://www.flightglobal.com/defence/fixed-wing"><span>Fixed-Wing</span></a></li><li data-navcode="117" data-rootnavcode="45" class=""><a href="https://www.flightglobal.com/defence/military-uavs"><span>Military UAVs</span></a></li><li data-navcode="315" data-rootnavcode="45" class=""><a href="https://www.flightglobal.com/defence/2025-world-air-forces-directory/160846.article"><span>2025 World Air Forces directory</span></a></li></ul></li><li class="promotedStory"><a href="/defence/why-more-edge-projects-are-taking-off-as-uaes-defence-ambitions-grow/161839.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/0/7/3/108073_ht750_607039.jpg" loading="lazy" class="lazyloaded" alt="EDGE HT-750"></div><div class="captionBlock"><span class="title">Why more EDGE projects are taking off as UAE’s defence ambitions grow</span></div></a></li><li class="promotedStory"><a href="/defence/china-rehearsing-forced-unification-campaign-around-taiwan-us-pacific-commander/161802.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/0/2/3/108023_chinaplachineseairforcefighterinterceptcusdod_80703.jpg" loading="lazy" class="lazyloaded" alt="China PLA Chinese air force fighter intercept c US DoD"></div><div class="captionBlock"><span class="title">China rehearsing forced unification campaign around Taiwan: US Pacific commander</span></div></a></li><li class="promotedStory"><a href="/defence/japan-signs-for-17-block-ii-chinooks-in-rotorcraft-fleet-renewal/161796.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/9/9/7/107997_ch47_189804_crop.jpg" loading="lazy" class="lazyloaded" alt="Japan Ground Self-Defence Force CH-47"></div><div class="captionBlock"><span class="title">Japan signs for 17 Block II Chinooks in rotorcraft fleet renewal</span></div></a></li></ul></div></div></li><li data-navcode="245" data-rootnavcode="245" class="current hasChildren oneSubNav"><a href="https://www.flightglobal.com/flight-international"><span>Flight International</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="67" data-rootnavcode="245" class=""><a href="https://www.flightglobal.com/subscribe" class="newWindow"><span>Subscribe to Flight International</span></a></li><li data-navcode="153" data-rootnavcode="245" class=""><a href="https://www.flightglobal.com/flight-international/flight-international-opinion"><span>Flight International Opinion</span></a></li><li data-navcode="113" data-rootnavcode="245" class=""><a href="https://www.flightglobal.com/flight-international/110-years-of-flight"><span>110 years of Flight</span></a></li><li data-navcode="140" data-rootnavcode="245" class=""><a href="https://www.flightglobal.com/flight-international/airbus-at-50"><span>Airbus at 50</span></a></li><li data-navcode="148" data-rootnavcode="245" class=""><a href="https://www.flightglobal.com/flight-international/honeywell-shaping-the-future"><span>Honeywell: Shaping the Future</span></a></li><li data-navcode="159" data-rootnavcode="245" class=""><a href="https://www.flightglobal.com/flight-international/cae-skys-no-limit"><span>CAE: Sky's no limit</span></a></li></ul></li><li class="promotedStory"><a href="/defence/how-the-global-military-fleet-shapes-up-in-our-2025-world-air-forces-review/160844.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/3/7/4/106374_f35acusairforce_122137.jpg" loading="lazy" class="lazyloaded" alt="USAF F-35A"></div><div class="captionBlock"><span class="title">How the global military fleet shapes up in our 2025 World Air Forces review</span></div></a></li><li class="promotedStory"><a href="/strategy/flying-747s-at-age-23-how-paola-velasco-shattered-biases-in-bolivias-airline-industry/160215.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/3/7/7/105377_paolavelascowia1007242_286090.jpg" loading="lazy" class="lazyloaded" alt="Former BoA captain Paola Velasco"></div><div class="captionBlock"><span class="title">Flying 747s at age 23: how Paola Velasco shattered biases in Bolivia’s airline industry</span></div></a></li><li class="promotedStory"><a href="/airframers/cash-positions-increasingly-critical-for-us-electric-air-taxi-developers/160652.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/0/5/4/106054_trioofjobyaircraft_852678.jpg" loading="lazy" class="lazyloaded" alt="Trio of Joby aircraft"></div><div class="captionBlock"><span class="title">Cash positions increasingly critical for US electric air taxi developers</span></div></a></li></ul></div></div></li><li data-navcode="110" data-rootnavcode="110" class="hasChildren oneSubNav"><a href="https://www.flightglobal.com/events-and-webinars"><span>Events & webinars</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="162" data-rootnavcode="110" class=""><a href="https://www.flightglobal.com/events-and-webinars/upcoming-webinars"><span>Upcoming webinars</span></a></li><li data-navcode="164" data-rootnavcode="110" class=""><a href="https://www.flightglobal.com/events-and-webinars/on-demand-webinars"><span>On demand webinars</span></a></li></ul></li><li class="promotedStory"><a href="/events-and-webinars/future-of-aviation-runway-safety/161795.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/9/9/5/107995_fi2024048_runwaysafety_banner_1376x928_123148.jpg" loading="lazy" class="lazyloaded" alt="Fi2024-048_runwaySafety_banner_1376 x 928"></div><div class="captionBlock"><span class="title">Future of aviation: Runway safety</span></div></a></li><li class="promotedStory"><a href="/airline-strategy-awards-2025/161558.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/6/3/9/107639_strats_25_web_1500x1000_479223.jpg" loading="lazy" class="lazyloaded" alt="STRATS_25_WEB_1500x1000"></div><div class="captionBlock"><span class="title">Airline Strategy Awards 2025</span></div></a></li><li class="promotedStory"><a href="/events-and-webinars/meet-the-airline-sustainability-leaders/160882.article" class="image layoutIcon videoLayout"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/5/4/1/106541_fi2024047_airlinesustainability_banners_1376x928_821572.png" loading="lazy" class="lazyloaded" alt="Fi2024-047_AirlineSustainability_banners_1376 x 928"></div><div class="captionBlock"><span class="title">Meet the airline sustainability leaders</span><span class="author">Exclusive partner <span class="noLink">Honeywell</span></span></div></a></li></ul></div></div></li><li data-navcode="130" data-rootnavcode="130" class="hasChildren"><a href="https://jobs.flightglobal.com/?utm_source=FlightGlobal&amp;utm_medium=website&amp;utm_campaign=navbar " class="newWindow"><span>Jobs</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a class="image" href="https://jobs.flightglobal.com/jobs/maintenance-repair-and-overhaul/" data-story="157748" target="_blank" rel="noopener noreferrer"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/4/2/5/101425_274x183engineerx2_520377.jpg" loading="lazy" class="lazyloaded" alt="274 x 183 Engineer x2"></div><div class="captionBlock"><span class="title">Search for MRO Jobs</span></div></a></li><li class="promotedStory"><a class="image" href="https://jobs.flightglobal.com/jobs/flight-crew/" data-story="157747" target="_blank" rel="noopener noreferrer"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/4/2/3/101423_pilot274x183_23160.jpg" loading="lazy" class="lazyloaded" alt="Pilot 274 x 183"></div><div class="captionBlock"><span class="title">Search for Flight Crew Jobs</span></div></a></li><li class="promotedStory"><a class="image" href="https://recruiters.flightglobal.com/pricing/" data-story="157746" target="_blank" rel="noopener noreferrer"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/4/2/1/101421_274x183engineer_748514.jpg" loading="lazy" class="lazyloaded" alt="274 x 183 Engineer"></div><div class="captionBlock"><span class="title">FlightJobs Recruiter Centre</span></div></a></li><li class="promotedStory"><a class="image" href="https://jobs.flightglobal.com/careers/?utm_source=FlightGlobal&amp;utm_medium=website&amp;utm_campaign=navbarboxcareers" data-story="136321"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/6/6/2/67662_thelatestaviationcareersnewsnew_121564.png" loading="lazy" class="lazyloaded" alt="The latest aviation careers news - NEW"></div><div class="captionBlock"><span class="title">The latest careers advice & news</span></div></a></li></ul></div></div></li><li data-navcode="229" data-rootnavcode="229"><a href="https://www.flightglobal.com/subscribe?campaigncode=fgsubmast" class="newWindow"><span>Subscribe</span></a></li><li data-navcode="487" data-rootnavcode="487" class="hasChildren"><a href="https://www.flightglobal.com/airline-business" class="newWindow"><span>Airline Business</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a href="/fleets/united-claims-worlds-largest-mainline-fleet-following-milestone-aircraft-delivery/161777.article" class="image layoutIcon heropictureLayout"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/9/7/3/107973_shutterstock_2558371707_915077.jpg" loading="lazy" class="lazyloaded" alt="shutterstock_2558371707"></div><div class="captionBlock"><span class="title">United claims ‘world’s largest’ mainline fleet following milestone aircraft delivery</span></div></a></li><li class="promotedStory"><a href="/aerospace/deficiency-tops-160m-following-reaction-engines-collapse/160947.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/5/9/3/106593_sabrepoweredcreactionenginesbgext_670559_crop.jpg" loading="lazy" class="lazyloaded" alt="SABRE powered-c-Reaction Engines-BGEXT"></div><div class="captionBlock"><span class="title">Deficiency tops £160m following Reaction Engines collapse</span></div></a></li><li class="promotedStory"><a href="/airlines/klm-rolls-out-450m-efficiency-plan-to-tackle-costs-challenges/160178.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/3/2/4/105324_klma321neoheadoncklm_711775.jpg" loading="lazy" class="lazyloaded" alt="KLM A321neo head-on-c-KLM"></div><div class="captionBlock"><span class="title">KLM rolls out €450m efficiency plan to tackle costs challenges</span></div></a></li><li class="promotedStory"><a href="/airframers/after-its-latest-low-is-boeing-ready-to-turn-the-corner/159139.article" class="image"><div class="image"><img src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/274x183/7/0/5/103705_737max10cairteamimages_215921.jpg" loading="lazy" class="lazyloaded" alt="737 Max 10"></div><div class="captionBlock"><span class="title">After its latest low, is Boeing ready to turn the corner?</span></div></a></li></ul></div></div></li><li class="more hide"><a href="#mobilemenu" data-menu-toggle-button="" aria-expanded="false"><span> More from<span class="assistive"> navigation items</span></span></a></li></ul></div></div><div class="desktopNavigationSpace"></div> </div> </header> <div class="adwrap_leader ad showMenuPushed"> <div class="" data-a-menu-open-pushed="true"> <div id='div-gpt-ad-8826768-Topbanner-ad-1'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-8826768-Topbanner-ad-1'); }); </script> </div> </div></div> <!--style="position: relative; margin-top: 30px; margin-bottom: 30px;"--> <div id="wrapper_sleeve" data-menu-open-pushed> <div class="groupTopBox removeGapToMast hide" data-toggle-outer-click="true" data-toggle-menu=""><div class="container"><div class="inner-sleeve"><h2 class="topBoxHeadline">Top 100 aerospace companies ranked by revenue</h2></div></div><div class="groupWrapper showInFocus"><a class="selector" data-toggle-button="" href="https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article"><div class="topNumberBox"><span class="topNumber">1</span></div>Top 100 aerospace companies ranked by revenue<span class="dropdownIcon"></span></a><ul><li class="selected"><div class="selectedItem"><div class="topNumberBox"><span class="topNumber">1</span></div>Top 100 aerospace companies ranked by revenue</div></li><li><a class="groupLink" href="https://www.flightglobal.com/flight-international/raytheon-technologies-tops-sales-growth-list/145147.article"><div class="topNumberBox"><span class="topNumber">2</span></div>Raytheon Technologies tops sales growth list</a></li><li><a class="groupLink" href="https://www.flightglobal.com/flight-international/operating-margins-table-highlights-industry-squeeze/145148.article"><div class="topNumberBox"><span class="topNumber">3</span></div>Operating margins table highlights industry squeeze</a></li><li><a class="groupLink" href="https://www.flightglobal.com/flight-international/commercial-downturn-marks-boeings-nadir/145150.article"><div class="topNumberBox"><span class="topNumber">4</span></div>Commercial downturn marks Boeing’s nadir</a></li><li><a class="groupLink" href="https://www.flightglobal.com/flight-international/how-defence-companies-rose-to-the-top-during-pandemic/145151.article"><div class="topNumberBox"><span class="topNumber">5</span></div>How defence companies rose to the top during pandemic</a></li></ul></div></div> <div class="storyLayout standard"></div> <div class="headerWrapper"> <div class="container titleByline"> <div class="inner-sleeve"> <div class="storyPrimaryNav"><a href="https://www.flightglobal.com/flight-international">Flight International</a></div> <div class="story_title"> <h1>Top 100 aerospace companies ranked by revenue</h1> </div> <p class="byline meta">By <span class="author"><a href="https://www.flightglobal.com/murdo-morrison/47.bio" rel="author">Murdo Morrison</a></span><span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2021-08-31T08:36:00&quot;,&quot;format&quot;: &quot;D MMMM YYYY&quot;}">2021-08-31T08:36:00+01:00</span></p> </div> </div> </div> <div id="columns" class="container"> <div id="colwrapper" class="inner-sleeve"> <div id="colmain" role="main" class="restrictedcontent"> <div id="content"> <div id="content_sleeve"> <div class="contentWrapper"> <div class="storyContentWrapper"> <div class="pageOptions"> <ul> <!--<li> <a data-facebook-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="facebook" title="Share this on Facebook"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="twitter" title="Share this on Twitter"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="linkedin" title="Share this on Linked in"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.flightglobal.com%2fflight-international%2ftop-100-aerospace-companies-ranked-by-revenue%2f145146.article&e=Top+100+aerospace+companies+ranked+by+revenue" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Top+100+aerospace+companies+ranked+by+revenue&url=https%3a%2f%2fwww.flightglobal.com%2fflight-international%2ftop-100-aerospace-companies-ranked-by-revenue%2f145146.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.flightglobal.com%2fflight-international%2ftop-100-aerospace-companies-ranked-by-revenue%2f145146.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Top 100 aerospace companies ranked by revenue&amp;body=https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/145146/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="storytext"><p>The latest Top 100 aerospace listing is unlike any before. With the worst crisis in commercial aviation coinciding with the 2020/2021 financial year on which this survey is based, red ink and minus symbols permeate the results – though not as ubiquitously as some might have feared. Of the 61 businesses we have been able to calculate operating profits for, just 18 made a loss. However, only 19 of the biggest 100 aerospace players saw revenues rise year-on-year.</p> <p>One of the reasons the industry has perhaps avoided worse carnage is the resilience of the defence and, to a lesser extent, business aviation sectors. That is why, for almost the first time in many years, Airbus and Boeing have been displaced at the top of the leader board. Defence giant Lockheed Martin takes over as number one, followed by Raytheon Technologies, the newly-merged parent of Collins Aerospace and Pratt &amp; Whitney that also has a sizeable legacy military business.</p> <div class="inline_image image_size_full" data-attachment="81246" data-sequence="2"> <p class="picture"><img alt="F-35A" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/480xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/480xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg 480w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/600xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg 600w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/780xany/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg 780w" loading="eager" class="lazyloaded" width="2756" height="1886"></p> <div class="inline_meta"><p class="inline_source"><cite>Source: Lockheed Martin</cite></p><p class="inline_caption">Lockheed Martin - manufacturer of the F-35 - takes first place with revenues of $65.4 billion</p></div></div> <p>Last year’s survey saw Boeing lose the top spot to Airbus as the effects of the 737 Max grounding in March 2019 knocked a quarter off its revenues and pushed the company into an operating loss.</p> <p>This time, its sales have fallen further, to $58.2 billion – meaning the company is now less than three-fifths the size it was two years ago in revenue terms. The Chicago-based manufacturer’s operating losses have increased more than fivefold, to an eye-watering $12.8 billion.</p> <p>But Airbus has also been dragged down the ranking by its dominant but stricken commercial aircraft operation. The Toulouse-based airframer fell even further than Boeing, to fourth place, with a 29% decline in revenues. However, it appears to have been much better than its competitor at managing costs, keeping operating losses to just $570 million.</p> <h3 id="CUSHIONING_EFFECT">CUSHIONING EFFECT</h3> <p>The cushioning effect of a healthy domestic and export defence market can be clearly seen in Lockheed’s results. The industry’s biggest company – for now – notched up revenues of $65.4 billion, up 9% on the previous year, and, although its profits were only up slightly to $8.6 billion, margins were strong at over 13%.</p> <p>Similarly, defence specialist Northrop Grumman, which remains in fifth place in the table, saw its revenues rise by just under 9%, with a more modest increase in profits.</p> <p>Three other defence-focused companies in the upper reaches of the ranking enjoyed qualified success, with like-for-like revenues at L3Harris constant with 2019/2020 and profits down by around a third. Italy’s Leonardo saw revenues fall slightly – partly a result of a commercial business badly hit by the pandemic – with profitability down by a half. BAE Systems reported an almost 10% boost in revenues, although profits for its aerospace interests were not possible to calculate.</p> <p>In normal times, the April 2020 merger of United Technologies (divested of its non-aerospace interests) and Raytheon – fourth and seventh place, respectively, in 2020 – would have vaulted the new Raytheon Technologies into third. However, the impact of the pandemic on the commercial aviation revenues of its Collins Aerospace and Pratt &amp; Whitney units has kept Raytheon revenues to $64.6 billion, about $11 billion less than its predecessors’ combined pre-Covid sales.</p> <div class="inline_image image_size_full" data-attachment="81245" data-sequence="1"> <p class="picture"><img alt="Aeroflot A350 first delivery" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/480xany/2/4/5/81245_a350cairbus_38693_crop.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/480xany/2/4/5/81245_a350cairbus_38693_crop.jpg 480w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/600xany/2/4/5/81245_a350cairbus_38693_crop.jpg 600w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/780xany/2/4/5/81245_a350cairbus_38693_crop.jpg 780w" loading="lazy" class="lazyloaded" width="3626" height="2411"></p> <div class="inline_meta"><p class="inline_source"><cite>Source: Airbus</cite></p><p class="inline_caption">Aeroflot has 22 A350-900s on order, and took delivery of its first example in 2020</p></div></div> <p>The crisis has deeply affected all the engine manufacturers, which previously were deriving the majority of their revenues from the airliner market. The UK’s Rolls-Royce, in 12th position, suffered a more than quarter fall in revenues to $11.8 billion, and posted a $2.6 billion loss. German propulsion systems supplier MTU – a key partner of P&amp;W – fared better, with revenues down under 7% and remaining in profit. It has also jumped five places in the rankings, to 22nd.</p> <h3 id="FALLING_REVENUES">FALLING REVENUES</h3> <p>Revenues at seventh-placed GE Aviation, a partner in the CFM International Leap engine and reliant also on the Boeing widebody market, fell by a third to $22 billion, with profits dropping by more than four-fifths, although the US business stayed operationally in the black. Its CFM partner Safran also managed to make money in 2020/2021, aided by its non-commercial aviation assets – although revenues and profits were down substantially.</p> <p>Confirming anecdotal evidence of high-end business aviation users continuing to fly during the downturn, the four biggest manufacturers in that sector also survived the financial year battered but profitable, with Bombardier – which completed its transition to a pure-play business jet company with the divestment of train maker Alstom in January this year – actually seeing its profits grow by more than a fifth, on revenues just over an eighth down on the previous year.</p> <p>Gulfstream parent General Dynamics Aerospace also kept its decline in revenues and profits to – in the strange context of the pandemic – manageable levels. So too did Textron, which owns the Cessna and Beechcraft brands as well as helicopter manufacturer Bell, and has substantial activities in the defence and parapublic segments. France’s Dassault Aviation – behind the Rafale fighter as well as the Falcon business jet range – saw profits slip two-thirds on a one-quarter revenue decline.</p> <p>Save for the creation of Raytheon Technologies and the continuing slimming down of Bombardier (it announced the closure of its Learjet operation this year) the Covid-19 era has seen little in the way of merger and acquisition activity, as many companies have hunkered down in survival mode.</p> <p>The question might be, however, how much consolidation can we now expect in a sector that has been devastated by the pandemic?</p> <p>A clue to what might be to come came from the recent announcement that Parker Hannifin, ranked 32nd, is to acquire 44th-placed Meggitt – which, depending on the timing of its completion, should impact the rankings next year. Diversified and acquisitive TransDigm, meanwhile, has made it into the Top 20 for the first time. The latest addition to its empire – although it will have had little effect on the table – was the connectivity arm of Cobham, a deal announced in November 2020.</p> <h3 id="COMMERCIAL_EXPOSURE">COMMERCIAL EXPOSURE</h3> <p>Aerostructures specialist Spirit AeroSystems has been having a torrid time because of its exposure to Boeing’s commercial activities, and has fallen 13 places to 30th on a 56% decline in revenues, recording an $813 million loss. The US company did buy Bombardier’s Belfast-based aerostructures division in October 2020 for $275 million. However, around the same time, it also terminated its planned but long-delayed $420 million acquisition of Belgian components maker Asco.</p> <p>Consolidation within Russia’s largely state-run aerospace industry has also led to a shift in the rankings, with Rostec now the holding company for all the major aircraft manufacturers and design houses, including those that were formerly part of United Aircraft. The two groups were respectively ranked 20th and 21st in last year’s survey. United Aircraft disappears from this year’s listing, while Rostec jumps 14 places to number six, on revenues of $26 billion.</p> <p>As has been noted many times, the crisis of the past 18 months has claimed surprisingly few corporate victims, with just one company failure among last year’s Top 100 coming as a result of the pandemic. Kansas-based TECT Aerospace – placed 96th in the previous survey – filed for bankruptcy protection in April, with Boeing agreeing to purchase the remnants of the business in an auction in July.</p> <p>Whether more vulnerable businesses will follow remains to be seen.</p> <h3 id="NEW_ENTRANTS">NEW ENTRANTS</h3> <p>There are four companies that are new to our survey this year. Ametek (61), a listed US corporation, is a manufacturer of electronic instruments and electro-mechanical devices. Hensoldt (93) is a German military sensor manufacturer that grew out of the electronics unit of Airbus Defence &amp; Space. Howmet Aerospace (27) was formed in April 2020 when Arconic spun the business off. Mercury Systems (64) is a provider of secure technologies for the aerospace and defence markets.</p> <p>Of these, Ametek, Hensoldt, and Mercury Systems made it into the Top 100 as part of our ongoing review of which companies should be included. Two businesses that featured last year now fall outside the Top 100: Asco and Figeac Aero, both part of the hard-pressed aerostructures sector. Military pilot survival system manufacturer Martin-Baker, ejected from the rankings last year, has returned in 98th place.</p> <p>One of the illustrations of how far revenues have declined across the industry during the Covid-19 crisis is seen in the relationship between revenue and rank. Last year, to make it into the Top 20, a business needed to be turning over at least $7 billion. This time, 20th-placed TransDigm had revenues of $5.1 billion. To be listed in the previous Top 100 required sales of $372 million. In the latest survey, the threshold for 100th-placed Qinetiq is $289 million.</p> <p>Last time, 67 companies in the Top 100 posted revenues of more than $1 billion, but the latest survey has just 58 businesses in the billion-dollar-plus club. Lockheed tops the rankings, with sales of $65.4 billion. In the 2020 listing, Airbus led the way with $78.9 billion, and the year before that a rampant Boeing smashed the $100 billion barrier for the first time in Top 100 history. Lockheed’s revenues this time are more than a third lower.</p> <p>What effect might the cautious industry recovery have on next year’s Top 100? Judging by 2021 so far, the path back to 2019 revenues and profitability could be very uneven, as government support packages run out, potential inflationary pressures loom, creditors become impatient, and OEMs demand that their suppliers once again invest in a ramp-up of commercial aircraft production if they want to secure and retain contracts. Company directors can expect plenty more sleepless nights.</p> <h2 id="Notes_to_the_Top_100">Notes to the Top 100</h2> <p>The information used in preparing this report has been obtained solely from company annual reports, public filings, and other publicly available information.</p> <p>Companies have been ranked for their financial year 2020 or 2020-2021. As far as possible we have sought to obtain representative figures for aerospace turnover. Companies involved predominantly in aviation services, finance and MRO have been excluded. Sectors involved with aero engines, aerostructures, aircraft, avionics, missiles and space are largely straightforward, but network-centric, telecommunications and C4IS (command, control, communications, computers and intelligence systems), as well as some overhaul operations have been included only when these are largely concerned with aerospace activities.</p> <p>Satellite services have been excluded whenever possible, as have businesses that derive more than half their revenues from services such as leasing. Joint ventures have been included in the financials. Intersegment sales have been excluded from operating results and profits where possible. Where not possible, divisional sales have been presented inclusive of interdivision sales, which may result in aerospace revenues greater than group sales.</p> <p>Generally, the profit (or loss) is before interest, tax and exceptional items and after deduction of depreciation. Discontinued or discontinuing operations have been included where they fall in fiscal year 2020 for that business.</p> <p>Average dollar exchange rates for calendar years 2020 and 2019 have been used for all non-US companies, regardless of fiscal year definitions. The source for the exchange rate information was the US Inland Revenue Service. There was movement in the average dollar exchange rates between 2019 and 2020, but to eliminate exchange rate effects, we have calculated percentage increase in revenues and profit in local currencies.</p> <p>Some companies have restated their 2019 results. Where this has happened, we have used the restated 2019 results in our analysis.</p> <p>When looking at all companies, we have revisited our assumptions on what should be included as aerospace sales, and in some cases, we have changed our assumptions. Where we have done this, we have used the same assumptions for both 2019 and 2020.</p> <p>When showing the movement in ranking, we have compared this year’s ranking to the ranking in last year’s survey, so ignoring the new entrants had they been in last year’s survey and any restating of results.</p> <p>In some companies that report the proportion of their sales which are aerospace, the aerospace sales are spread across business units, which do business across a number of sectors, of which aerospace is just one. In such cases, it is not possible to give a profit figure which corresponds to aerospace sales.</p> <p>Six companies in this year’s survey do not produce any estimates for their aerospace sales, which are in the public domain. We have included them because they are sizeable and important companies and we have used our industry knowledge, material available in the public domain, and best estimates to arrive at estimated sales figures:</p> <p>Chromalloy, a provider of advanced coatings and authorised repairs and parts for gas turbine engines. The operation is part of Sequa Corporation, which is owned by Carlyle.</p> <p>Hutchinson, which had total sales of €3.8 billion across all sectors in 2020, and is a subsidiary of the French oil company Total. In aerospace, it is a significant supplier of equipment across airframes, engines and cabin systems, such as insulation.</p> <p>Nordam, a private US company, which is a significant supplier of aircraft nacelles, transparencies and business jet interiors.</p> <p>PPG Aerospace, part of PPG Industries and a leading supplier of coatings, adhesives and sealants, and transparencies.</p> <p>Precision Castparts, a US company that is owned by Berkshire Hathaway.</p> <p>Sierra Nevada Corporation, a private US company, which has a range of businesses including space systems, avionics, aircraft modification and support, and cybersecurity.</p> <p>The Top 100 is compiled on behalf of FlightGlobal by Counterpoint Market Intelligence. Contact <a class="contactemail" title="richardapps@cpmil.com" href="mailto:richardapps@cpmil.com"></a><a>richardapps@cpmil.com</a></p> <div class="factfile"> <p><a href="https://www.flightglobal.com/reports/top-100-aerospace-companies-ranked-by-revenue-2021-full-report/145446.article" target="_blank"><strong>Click here to download the full report</strong></a></p> </div></div><div id="storytext-end" class="storytext-end"></div> </div> </div> <div class="htmlContent"> <div id="_5D747629-0520-4411-823F-93692704CCA0"></div><script>(function(w,d,t,u,c,b,m,s,n,i,e,p){(w[n]=w[n]||[]).push(arguments);e=d.createElement(t);p=d.getElementsByTagName(t)[0];e.async=1;e.src=u+'/scripts/eme.js';p.parentNode.insertBefore(e,p);})(window,document,'script','https://emeapi.abacusemedia.com','DVVFG','FG','NewsletterWidget','#_5D747629-0520-4411-823F-93692704CCA0','EMEObject','StoryFullNavPath');</script> </div> </div> <div class="topics"><div class="sleeve"><span class="topicsLabel"></span><h2>Topics</h2><ul class="topicsList"><li><a href="/aerospace/239115.subject">Aerospace</a></li><li><a href="/must-read/61.tag">Must Read</a></li><li><a href="/top-100/65.tag">Top 100</a></li></ul></div></div> <div class="pageOptions"> <ul> <!--<li> <a data-facebook-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="facebook" title="Share this on Facebook"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="twitter" title="Share this on Twitter"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="linkedin" title="Share this on Linked in"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article' data-share-title="Top 100 aerospace companies ranked by revenue" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.flightglobal.com%2fflight-international%2ftop-100-aerospace-companies-ranked-by-revenue%2f145146.article&e=Top+100+aerospace+companies+ranked+by+revenue" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Top+100+aerospace+companies+ranked+by+revenue&url=https%3a%2f%2fwww.flightglobal.com%2fflight-international%2ftop-100-aerospace-companies-ranked-by-revenue%2f145146.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.flightglobal.com%2fflight-international%2ftop-100-aerospace-companies-ranked-by-revenue%2f145146.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Top 100 aerospace companies ranked by revenue&amp;body=https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/145146/bookmark"> </li> </ul> </div> </div> <div class="groupBottomBox"><div class="sleeve"><h2 class="bottomBoxHeadline" tabindex="0">Top 100 aerospace companies ranked by revenue</h2><ul><li class="selected" tabindex="0" aria-selected="true"><span class="numberBox"><span class="bottomNumber">1</span></span><div><span class="image"><img alt="F-35A" loading="lazy" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg 100w" width="100" height="67" class="lazyloaded"><span class="currentlyReading">Currently reading</span></span><h3>Top 100 aerospace companies ranked by revenue</h3></div></li><li><span class="numberBox"><span class="bottomNumber">2</span></span><div><span class="image"><a href="https://www.flightglobal.com/flight-international/raytheon-technologies-tops-sales-growth-list/145147.article"><img alt="GTF on E190-E2" loading="lazy" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/4/7/81247_gtfone190e2cprattwhitney1_718390_crop.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/4/7/81247_gtfone190e2cprattwhitney1_718390_crop.jpg 100w" width="100" height="67" class="lazyloaded"></a></span><a href="https://www.flightglobal.com/flight-international/raytheon-technologies-tops-sales-growth-list/145147.article"><h3>Raytheon Technologies tops sales growth list</h3></a></div></li><li><span class="numberBox"><span class="bottomNumber">3</span></span><div><span class="image"><a href="https://www.flightglobal.com/flight-international/operating-margins-table-highlights-industry-squeeze/145148.article"><img alt="Garmin Autoland" loading="lazy" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/4/8/81248_autolandcgarmin_152904_crop.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/4/8/81248_autolandcgarmin_152904_crop.jpg 100w" width="100" height="67" class="lazyloaded"></a></span><a href="https://www.flightglobal.com/flight-international/operating-margins-table-highlights-industry-squeeze/145148.article"><h3>Operating margins table highlights industry squeeze</h3></a></div></li><li><span class="numberBox"><span class="bottomNumber">4</span></span><div><span class="image"><a href="https://www.flightglobal.com/flight-international/commercial-downturn-marks-boeings-nadir/145150.article"><img alt="737 Max" loading="lazy" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/5/1/81251_737maxcboeing_19077.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/5/1/81251_737maxcboeing_19077.jpg 100w" width="100" height="67" class="lazyloaded"></a></span><a href="https://www.flightglobal.com/flight-international/commercial-downturn-marks-boeings-nadir/145150.article"><h3>Commercial downturn marks Boeing’s nadir</h3></a></div></li><li><span class="numberBox"><span class="bottomNumber">5</span></span><div><span class="image"><a href="https://www.flightglobal.com/flight-international/how-defence-companies-rose-to-the-top-during-pandemic/145151.article"><img alt="CH-53 production" loading="lazy" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/5/2/81252_ch53sbeingbuiltclockheedmartin_972446_crop.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/5/2/81252_ch53sbeingbuiltclockheedmartin_972446_crop.jpg 100w" width="100" height="67" class="lazyloaded"></a></span><a href="https://www.flightglobal.com/flight-international/how-defence-companies-rose-to-the-top-during-pandemic/145151.article"><h3>How defence companies rose to the top during pandemic</h3></a></div></li></ul></div></div> </div> </div> </div> <div id="rightcolumn" class="fixedrightcolumn rightcolumn restrictedcontent"> <div id="rightcolumn_sleeve"> <!-- BELOW NOT SUPPORT Instructions for implementation depending on right or bottom. If this in the bottom position then we might need to wrap the code with ` <div class="container"> <div class="inner-sleeve"> // taxanomy-list to go here </div> </div> ` --> <div data-mpu1-reflow></div> <div id="rhcreflow-tabletlandscape"></div> <div id="rhcreflow-desktop" class="rhc-mostpopular-desktop"> </div> <div id="rhcreflow-extra"></div> <div id="rhcreflow-extra-end" class="rhcreflow-extra-end"></div> <!-- Marketplace Recommendations SRCE--> <script type="text/javascript" src="https://hb.volantisdigital.com/nativead/nativead.min.js" id="vd_native_ad"></script> </div> </div> </div> </div> <div class="container bottomAdContainer restrictedcontent"> <div class="inner-sleeve"> <div class="bottomAd"> <div id="dynamic-content"></div> <script> var LoggedIn = getDataLayerVal('LoggedIn') == 'True' ? true : false; if(!LoggedIn) { $.get('https://www.flightglobal.com/Uploads/i/g/m/advertstorybottom_anonuser_859404.html', function(data) { $("#dynamic-content").html(data); }) } var notSignedIn = getDataLayerVal('prodid') == undefined ? true : false ; if(!LoggedIn){ console.log("i am not signed in"); } if(notSignedIn && LoggedIn){ $.get('https://www.flightglobal.com/Uploads/i/g/m/advertstorybottom_registereduser_841211.html', function(data) { $("#dynamic-content").html(data); }) } if(!notSignedIn){ var splitthis = getDataLayerVal('prodid').split('|'); var premium = splitthis.filter(function(number) { return number == '24'; }); if(premium.length == 0){ $.get('https://www.flightglobal.com/Uploads/i/g/m/advertstorybottom_registereduser_841211.html', function(data) { $("#dynamic-content").html(data); }) } } // if user login = true - then check if they are NOT subscriber - i.e. activeProductID doe NOT contaion |24| // show premiumn HTML code from media library </script> </div> </div> </div> <div class="container relatedVideos restrictedcontent"> <div class="inner-sleeve"> <div id="videosreflow-tabletportrait"></div> <div id="videosreflow-mobile"></div> </div> </div> <div class="container relatedArticles" id="relatedArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>Related articles</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.flightglobal.com/aerospace/australias-cobham-operated-dash-8s-get-sensor-upgrade/147809.article" class="image"> <img alt="Australian Border Force Cobham Dash-8" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/4/6/9/85469_borderforce05hillscopynoreg_w1600_h1600_mfit_628056.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/4/6/9/85469_borderforce05hillscopynoreg_w1600_h1600_mfit_628056.jpg 100w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/172x115/4/6/9/85469_borderforce05hillscopynoreg_w1600_h1600_mfit_628056.jpg 172w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/220x148/4/6/9/85469_borderforce05hillscopynoreg_w1600_h1600_mfit_628056.jpg 220w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/280x188/4/6/9/85469_borderforce05hillscopynoreg_w1600_h1600_mfit_628056.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.flightglobal.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.flightglobal.com/aerospace/australias-cobham-operated-dash-8s-get-sensor-upgrade/147809.article">Australia’s Cobham-operated Dash 8s get sensor upgrade</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2022-03-07T07:18:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2022-03-07T07:18:00Z</span> <span class="author">By <a rel="author" href="https://www.flightglobal.com/greg-waldron/238.bio">Greg Waldron</a></span> </p> <p>De Havilland Canada Dash 8 aircraft operated by Cobham on behalf of the Australian government are undergoing an extensive sensor upgrade.</p> </div> </li> <li class=""> <a href="https://www.flightglobal.com/business-aviation/gulfstream-reveals-new-g800-test-aircraft-announces-g400/145780.article" class="image layoutIcon pictureLayout"> <img alt="G800 rollout Gulfstream" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/3/6/82236_g800rollout_561468.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/2/3/6/82236_g800rollout_561468.jpg 100w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/172x115/2/3/6/82236_g800rollout_561468.jpg 172w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/220x148/2/3/6/82236_g800rollout_561468.jpg 220w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/280x188/2/3/6/82236_g800rollout_561468.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.flightglobal.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.flightglobal.com/business-aviation/gulfstream-reveals-new-g800-test-aircraft-announces-g400/145780.article">Gulfstream reveals new G800 test aircraft; announces G400</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2021-10-05T01:33:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2021-10-05T01:33:00Z</span> <span class="author">By <a rel="author" href="https://www.flightglobal.com/greg-waldron/238.bio">Greg Waldron</a></span> </p> <p>Gulfstream has unveiled two new business jets, the long-range G800 and the smaller G400.</p> </div> </li> <li class=""> <a href="https://www.flightglobal.com/fixed-wing/lockheed-agrees-to-30000-per-flight-hour-cost-for-f-35a-by-fy2023/145448.article" class="image"> <img alt="USAF F-35A c Lockheed Martin" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/7/0/8/81708_usaff35aclockheedmartin_760909.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/7/0/8/81708_usaff35aclockheedmartin_760909.jpg 100w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/172x115/7/0/8/81708_usaff35aclockheedmartin_760909.jpg 172w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/220x148/7/0/8/81708_usaff35aclockheedmartin_760909.jpg 220w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/280x188/7/0/8/81708_usaff35aclockheedmartin_760909.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.flightglobal.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.flightglobal.com/fixed-wing/lockheed-agrees-to-30000-per-flight-hour-cost-for-f-35a-by-fy2023/145448.article">Lockheed agrees to $30,000 per flight hour cost for F-35A by FY2023</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2021-09-14T01:45:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2021-09-14T01:45:00Z</span> <span class="author">By <a rel="author" href="https://www.flightglobal.com/garrett-reim/432.bio">Garrett Reim</a></span> </p> <p>The F-35 Joint Program Office has awarded Lockheed Martin a sustainment contract for the F-35 that commits the company to reduce the operating cost of the stealth fighter to $30,000 per flight hour by fiscal year 2023, down 10.7% from FY2020.</p> </div> </li> </ul> <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> <button type="button" class="button" data-load-more-button="" data-items-offset="3" data-ajax-url="https://www.flightglobal.com/145146/loadmore?code=ARTICLES" data-items-to-load="8" data-loading-more-text="Loading more articles"> Load more articles </button> </div> </div> </div> <div class="fixedrightcolumn rightcolumn"> <!-- Marketplace Recommendations --> <!--<div class="ad"> <div id='div-gpt-ad-7135676-1'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-7135676-1'); }); </script> </div> </div>--> <!-- Marketplace Recommendations --> <!--sidebar2 Ad--> <!-- /13644946/FlightGlobal/sidebar2 --> <!--<div class="adwrap_MPU"><div class="ad"> <div id='div-gpt-ad-1615375849628-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1615375849628-0'); }); </script> </div> </div></div>--> <!-- End AdSlot 2 --> </div> </div> </div> </div> </div> <div class="container commentContainer restrictedcontent"> <div class="inner-sleeve"> <div class=" extras"> <div class="extrasStory"> <div class="contentWrapper"></div> </div></div> </div> </div> <div class="container relatedArticles" id="moreArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>More from Flight International</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.flightglobal.com/flight-international/flight-international-festive-quiz-2024/161154.article" class="image"> <img alt="Festive quiz thumbnail" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/9/3/5/106935_introcflightglobalarchive_975727.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/9/3/5/106935_introcflightglobalarchive_975727.jpg 100w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/172x115/9/3/5/106935_introcflightglobalarchive_975727.jpg 172w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/220x148/9/3/5/106935_introcflightglobalarchive_975727.jpg 220w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/280x188/9/3/5/106935_introcflightglobalarchive_975727.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.flightglobal.com/in-depth/1019.type" class="storyType">In depth</a> <h3> <a href="https://www.flightglobal.com/flight-international/flight-international-festive-quiz-2024/161154.article">Flight International festive quiz 2024</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-12-18T15:24:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-12-18T15:24:00Z</span> </p> <p>It’s time for some festive cheer: the soothing challenge of our fiendish festive quiz.</p> </div> </li> <li class=""> <a href="https://www.flightglobal.com/flight-international/straight-and-level-december-2024/160840.article" class="image"> <img alt="Global Airlines flags" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/3/6/6/106366_globalairlinesflags_289623.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/3/6/6/106366_globalairlinesflags_289623.jpg 100w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/172x115/3/6/6/106366_globalairlinesflags_289623.jpg 172w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/220x148/3/6/6/106366_globalairlinesflags_289623.jpg 220w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/280x188/3/6/6/106366_globalairlinesflags_289623.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.flightglobal.com/in-depth/1019.type" class="storyType">In depth</a> <h3> <a href="https://www.flightglobal.com/flight-international/straight-and-level-december-2024/160840.article">Straight & Level, December 2024</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-11-21T11:51:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-11-21T11:51:00Z</span> </p> <p>The lighter side of Flight International.</p> </div> </li> <li class=""> <a href="https://www.flightglobal.com/flight-international/straight-and-level-november-2024/160428.article" class="image"> <img alt="Martin Mars" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/7/2/0/105720_marsccoulsonaviation_800220.jpg" srcset="https://d3lcr32v2pp4l1.cloudfront.net/Pictures/100x67/7/2/0/105720_marsccoulsonaviation_800220.jpg 100w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/172x115/7/2/0/105720_marsccoulsonaviation_800220.jpg 172w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/220x148/7/2/0/105720_marsccoulsonaviation_800220.jpg 220w,https://d3lcr32v2pp4l1.cloudfront.net/Pictures/280x188/7/2/0/105720_marsccoulsonaviation_800220.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.flightglobal.com/in-depth/1019.type" class="storyType">In depth</a> <h3> <a href="https://www.flightglobal.com/flight-international/straight-and-level-november-2024/160428.article">Straight & Level, November 2024</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-10-24T08:23:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-10-24T08:23:00Z</span> </p> <p>The lighter side of Flight International.</p> </div> </li> </ul> <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> <button type="button" class="button" data-load-more-button="" data-items-offset="3" data-ajax-url="https://www.flightglobal.com/145146/loadmore?code=MORE" data-items-to-load="8" data-loading-more-text="Loading more articles"> Load more articles </button> </div> </div> </div> <div class="fixedrightcolumn rightcolumn"> <!-- /13644946/FlightGlobal/sidebar3 --> <div class="ad"> <div id='div-gpt-ad-1669201998136-0' style='min-width: 160px; min-height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1669201998136-0'); }); </script> </div></div> </div> </div> </div> </div> </div> <div class="container"><div class="inner-sleeve"><div id="rhcreflow-tabletportrait"></div><div id="rhcreflow-mobile"></div></div></div><div id="mobile-drop-zone"></div> <div class="container storyBottomMostPopularContainer"> <div class="inner-sleeve"> <div class="extrasStory"> <div class="contentWrapper"> <div class="tab-widget-10" data-ajax-load-content="" data-url="/ajax/most?bottom=1&storypage=1"></div> </div> </div> <div class="fixedrightcolumn rightcolumn"> </div> </div> </div> <div class="footer_ad"> <div class="footer_ad_strip"> <div class="ad"> </div> </div> </div> <div id="footer" class="footer" role="contentinfo"> <div class="container footerTopNavPageText"> <div class="inner-sleeve"> <div class="nav topNav"><ul><li class="first"><a href="https://www.flightglobal.com/contact-us">Contact us</a></li><li class=""><a href="https://www.flightglobal.com/about-us">About us</a></li><li class=""><a href="https://www.flightglobal.com/media-centre/">Advertise with us</a></li><li class=""><a href="https://jobs.flightglobal.com/" class="newWindow">Jobs</a></li><li class=""><a href="https://www.flightglobal.com/conferences-and-events">Conferences and Events</a></li><li class=""><a href="https://www.flightglobal.com/134637.article">Newsletters</a></li><li class=""><a href="https://www.flightglobal.com/paid-content">Paid content</a></li><li class="last"><a href="https://www.flightglobal.com/reports">Reports</a></li></ul></div><div class="footer-col-1"> <header> <svg xmlns="http://www.w3.org/2000/svg" width="279" height="70.626" viewBox="0 0 279 70.626"> <g id="FlightGlobalLogo" transform="translate(-128 -3411.612)"> <path id="Path_1" data-name="Path 1" d="M26.722,5.271v6.505H38.161V23.215h6.505V5.271Z" transform="translate(131.339 3406.341)" fill="#1cb8ff"/> <path id="Path_2" data-name="Path 2" d="M31.34,35.452H13.012V22.7H31.327V16.18L6.493,16.2V57.614h6.519V41.971H31.34Z" transform="translate(121.507 3411.643)" fill="#fff"/> <g id="Group_1" data-name="Group 1" transform="translate(258.955 3427.941)"> <path id="Path_3" data-name="Path 3" d="M131.291,54.427a33.633,33.633,0,0,1-16.108,3.849,22.779,22.779,0,0,1-8.277-1.456A18.556,18.556,0,0,1,96.158,46.29a21.6,21.6,0,0,1-1.54-8.3,22.536,22.536,0,0,1,1.54-8.494,19.039,19.039,0,0,1,4.262-6.516,18.7,18.7,0,0,1,6.486-4.15,22.779,22.779,0,0,1,8.277-1.458,31.437,31.437,0,0,1,8.356,1.073,17.192,17.192,0,0,1,6.983,3.822l-5.113,5.168a12.817,12.817,0,0,0-4.535-2.806,16.079,16.079,0,0,0-5.636-.99,13.483,13.483,0,0,0-5.47,1.073,12.5,12.5,0,0,0-4.207,2.969,13.458,13.458,0,0,0-2.721,4.425,15.142,15.142,0,0,0-.961,5.443,16.691,16.691,0,0,0,.961,5.773,13.522,13.522,0,0,0,2.721,4.564,12.621,12.621,0,0,0,4.207,3.024,13.176,13.176,0,0,0,5.47,1.1,23.973,23.973,0,0,0,4.975-.5,14.111,14.111,0,0,0,4.152-1.54V40.792h-7.973V34.524h14.9Z" transform="translate(-94.618 -15.72)" fill="#fff"/> <path id="Path_4" data-name="Path 4" d="M122.539,16.259h6.6V57.826h-6.6Z" transform="translate(-81.048 -16.259)" fill="#fff"/> <path id="Path_5" data-name="Path 5" d="M129.2,39.883a13.945,13.945,0,0,1,1.128-5.69,13.256,13.256,0,0,1,3.051-4.372,13.447,13.447,0,0,1,4.564-2.8,16.381,16.381,0,0,1,11.215,0,13.453,13.453,0,0,1,4.565,2.8,13.3,13.3,0,0,1,3.051,4.372,14.92,14.92,0,0,1,0,11.381,13.278,13.278,0,0,1-3.051,4.37,13.453,13.453,0,0,1-4.565,2.8,16.381,16.381,0,0,1-11.215,0,13.447,13.447,0,0,1-4.564-2.8,13.234,13.234,0,0,1-3.051-4.37A13.952,13.952,0,0,1,129.2,39.883Zm6.6,0a8.538,8.538,0,0,0,.523,2.971,7.418,7.418,0,0,0,1.538,2.528,7.8,7.8,0,0,0,11.381,0,7.445,7.445,0,0,0,1.54-2.528,8.692,8.692,0,0,0,0-5.94,7.466,7.466,0,0,0-1.54-2.529,7.8,7.8,0,0,0-11.381,0,7.439,7.439,0,0,0-1.538,2.529A8.536,8.536,0,0,0,135.8,39.883Z" transform="translate(-77.809 -11.512)" fill="#fff"/> <path id="Path_6" data-name="Path 6" d="M150.6,16.259h6.6V34.788h.165a9.382,9.382,0,0,1,1.265-1.346,10.05,10.05,0,0,1,1.868-1.291,11.287,11.287,0,0,1,2.531-.99,12.7,12.7,0,0,1,3.3-.386,12.37,12.37,0,0,1,5.17,1.073,12.052,12.052,0,0,1,4.04,2.941,13.576,13.576,0,0,1,2.611,4.4,15.6,15.6,0,0,1,.935,5.443,16.451,16.451,0,0,1-.88,5.445,12.567,12.567,0,0,1-2.584,4.4,12.188,12.188,0,0,1-4.122,2.941,13.3,13.3,0,0,1-5.443,1.071,12.456,12.456,0,0,1-5.223-1.1,8.481,8.481,0,0,1-3.85-3.519h-.108v3.959H150.6ZM172.483,44.63a8.569,8.569,0,0,0-.523-2.969,7.464,7.464,0,0,0-1.54-2.529,7.8,7.8,0,0,0-11.381,0,7.466,7.466,0,0,0-1.539,2.529,8.692,8.692,0,0,0,0,5.94,7.445,7.445,0,0,0,1.539,2.528,7.8,7.8,0,0,0,11.381,0,7.443,7.443,0,0,0,1.54-2.528A8.571,8.571,0,0,0,172.483,44.63Z" transform="translate(-67.411 -16.259)" fill="#fff"/> <path id="Path_7" data-name="Path 7" d="M188.849,49.45h-.166a8.505,8.505,0,0,1-3.627,3.272,11.4,11.4,0,0,1-4.84,1.016,12.841,12.841,0,0,1-3.546-.495,9.569,9.569,0,0,1-3.079-1.485,7.618,7.618,0,0,1-2.173-2.474,7.017,7.017,0,0,1-.825-3.464,7.965,7.965,0,0,1,.77-3.656,7.517,7.517,0,0,1,2.063-2.529,10.483,10.483,0,0,1,3-1.623,20.476,20.476,0,0,1,3.547-.906,31.3,31.3,0,0,1,3.711-.385q1.87-.082,3.519-.083h1.651v-.715a4.287,4.287,0,0,0-1.706-3.711,7.207,7.207,0,0,0-4.344-1.238,10.217,10.217,0,0,0-3.9.743,9.924,9.924,0,0,0-3.134,2.006L172.3,30.261a12.777,12.777,0,0,1,5.142-3.244,18.92,18.92,0,0,1,6.076-.99,15.276,15.276,0,0,1,4.727.633,10.44,10.44,0,0,1,3.19,1.621,7.2,7.2,0,0,1,1.951,2.283,10.613,10.613,0,0,1,.99,2.611,14.592,14.592,0,0,1,.358,2.557q.053,1.237.055,2.171V53.078h-5.938Zm-.385-8.192h-1.376c-.915,0-1.944.037-3.078.11a16.2,16.2,0,0,0-3.217.523,7.373,7.373,0,0,0-2.557,1.21,2.64,2.64,0,0,0-1.043,2.228,2.81,2.81,0,0,0,.412,1.566,3.7,3.7,0,0,0,1.073,1.071,4.465,4.465,0,0,0,1.483.633,7.181,7.181,0,0,0,1.65.192q3.408,0,5.032-1.621a5.985,5.985,0,0,0,1.623-4.427Z" transform="translate(-57.693 -11.512)" fill="#fff"/> <path id="Path_8" data-name="Path 8" d="M189.8,16.259h6.6V57.826h-6.6Z" transform="translate(-48.357 -16.259)" fill="#fff"/> </g> <rect id="Rectangle_1" data-name="Rectangle 1" width="6.505" height="41.371" transform="translate(156.567 3427.857)" fill="#fff"/> <rect id="Rectangle_2" data-name="Rectangle 2" width="6.505" height="26.022" transform="translate(168.354 3443.206)" fill="#fff"/> <path id="Path_9" data-name="Path 9" d="M62.468,30.647h-.11a8.374,8.374,0,0,0-3.794-3.468,12.316,12.316,0,0,0-5.151-1.085,13.067,13.067,0,0,0-5.394,1.057,12.123,12.123,0,0,0-4.039,2.9,12.4,12.4,0,0,0-2.547,4.338,16.233,16.233,0,0,0-.868,5.366,14.591,14.591,0,0,0,.921,5.206,12.405,12.405,0,0,0,2.629,4.229,12.752,12.752,0,0,0,4.094,2.846,13,13,0,0,0,5.313,1.057,12.589,12.589,0,0,0,4.77-.948A8.6,8.6,0,0,0,62.035,49.3h.107v1.9a14.459,14.459,0,0,1-.406,3.552,6.853,6.853,0,0,1-1.355,2.736,6.35,6.35,0,0,1-2.549,1.789,10.45,10.45,0,0,1-3.931.651,11.52,11.52,0,0,1-4.879-.975,15.96,15.96,0,0,1-4.066-2.765l-3.9,5.314a15.367,15.367,0,0,0,6.017,3.36,25.106,25.106,0,0,0,6.885.921,17.986,17.986,0,0,0,6.559-1.083A12.094,12.094,0,0,0,65.1,61.631,12.351,12.351,0,0,0,67.779,56.8a21.811,21.811,0,0,0,.868-6.369V26.745H62.468Zm-.542,11.982a6.823,6.823,0,0,1-1.545,2.412,7.443,7.443,0,0,1-2.44,1.6,8.325,8.325,0,0,1-3.225.6,7.7,7.7,0,0,1-3.036-.6,7.527,7.527,0,0,1-2.44-1.627,7.352,7.352,0,0,1-1.6-2.384,7.457,7.457,0,0,1-.569-2.927,8.516,8.516,0,0,1,.569-3.171,6.914,6.914,0,0,1,3.984-4.011,8.276,8.276,0,0,1,3.144-.571,7.188,7.188,0,0,1,7.7,7.643A8.433,8.433,0,0,1,61.926,42.629Z" transform="translate(138.067 3416.462)" fill="#fff"/> <path id="Path_10" data-name="Path 10" d="M85.765,34.046a8.353,8.353,0,0,0-2.954-2.277,10.2,10.2,0,0,0-4.418-.868,8.553,8.553,0,0,0-4.962,1.329,7.59,7.59,0,0,0-2.682,2.954h-.108V16.206l-12.96,0v6.482h6.454V57.574h6.506V43.37a9.438,9.438,0,0,1,.325-2.5,5.832,5.832,0,0,1,1.057-2.113A5.289,5.289,0,0,1,73.867,37.3a6.194,6.194,0,0,1,2.737-.542,4.121,4.121,0,0,1,2.656.786A4.677,4.677,0,0,1,80.7,39.495a8.653,8.653,0,0,1,.569,2.492c.073.887.108,1.69.108,2.412V57.574H87.88V41.146a14.9,14.9,0,0,0-.489-3.847A8.611,8.611,0,0,0,85.765,34.046Z" transform="translate(146.385 3411.655)" fill="#fff"/> <path id="Path_11" data-name="Path 11" d="M99.725,34.53V29H92.57V21.455H86.064V29h-7.5a13.074,13.074,0,0,1,2.45,5.529h5.052V46.457a19.963,19.963,0,0,0,.369,4.012,6.273,6.273,0,0,0,1.3,2.905,5.63,5.63,0,0,0,2.6,1.736,13.534,13.534,0,0,0,4.25.563,20.671,20.671,0,0,0,2.624-.195,8.3,8.3,0,0,0,2.514-.673V49.321a3.76,3.76,0,0,1-1.626.629,10.2,10.2,0,0,1-1.887.195A3.224,3.224,0,0,1,93.307,49a5.722,5.722,0,0,1-.737-3.079V34.53Z" transform="translate(156.533 3414.207)" fill="#fff"/> </g> </svg> </header> <div class="content"> <p>FlightGlobal is the global aviation community’s primary source of news, data, insight, knowledge and expertise. We provide news, data, analytics and advisory services to connect the aviation community globally and help organisations shape their business strategies, identify new opportunities and make better decisions faster.</p> </div> </div> <div class="footer-col-2"> <div> <!-- newsletter start --> <div class="newsletterSignup" data-cache-bust="true" data-ajax-load-content="" data-url="/newslettersignup?wid=12&amp;navcode=33" data-cache-bust="true"> <header><![CDATA[Never miss a beat with FlightGlobal newsletters]]></header> <intro><![CDATA[Get news and analysis direct to your inbox by selecting from our portfolio of newsletters.]]></intro> <newsletter><![CDATA[FGABWB]]></newsletter> <newsletter><![CDATA[FGAE]]></newsletter> <newsletter><![CDATA[FGDE]]></newsletter> <newsletter><![CDATA[FGFIWB]]></newsletter> <newsletter><![CDATA[FGJ]]></newsletter> <newsletter><![CDATA[FGSI]]></newsletter> <newsletter><![CDATA[FGEU]]></newsletter> <senttotext><![CDATA[Sent to:]]></senttotext> <editlinktext><![CDATA[Edit details]]></editlinktext> </div> <!-- newsletter end --> </div> </div> </div> </div> <div class="container bottomNav"><div class="inner-sleeve"><ul><li class="first"><a href="https://www.flightglobal.com/announcements">Announcements</a></li><li><a href="https://www.flightglobal.com/faqs-flightglobal-premium/138587.article">FAQs</a></li><li><a href="https://www.flightglobal.com/topics-a-z">Topics A-Z</a></li><li><a href="https://www.flightglobal.com/134641.article">Terms and conditions</a></li><li><a href="https://www.flightglobal.com/134640.article">Cookie policy</a></li><li><a href="https://www.dvvmediainternational.com/policies1/privacy-policy/" class="newWindow">Privacy policy</a></li><li class="last"><a href="https://www.dvvmediainternational.com/" class="newWindow">© DVV Media International Limited</a></li></ul></div></div> <div class="bottom"> <div class="container footerBottomNavPageText"> <div class="inner-sleeve"> <div class="footerSocial"> <span class="footerSocialText">Follow us on social media</span> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook.com/flightglobal" title="Connect with us on Facebook">Connect with us on Facebook</a> </li> <li class="footerSocialTwitter" title="Connect with us on Twitter"> <a href="https://twitter.com/FlightGlobal">Connect with us on Twitter</a> </li> <li class="footerSocialLinkedin" title="Connect with us on Linked In"> <a href="https://www.linkedin.com/company/flightglobal/">Connect with us on Linked in</a> </li> <li class="footerSocialEmail" title="Email us"> <a href="mailto:info@flightglobal.com">Email us</a> </li> <li class="footerSocialYoutube" title="Connect with us on Youtube"> <a href="https://www.youtube.com/user/Flightglobal/">Connect with us on Youtube</a> </li> </ul> </div> <p class="webvision">Site powered by <a href="https://www.abacusemedia.com/webvisioncloud">Webvision Cloud</a></p> </div> </div> </div> </div> </div> </div> <script src="/Magazine/core.js?p=7605401599288211" defer></script> <!--EME Script--> <div id="GlobalEME"></div> <script>(function(w,d,t,u,c,b,m,s,n,i,e,p){(w[n]=w[n]||[]).push(arguments);e=d.createElement(t);p=d.getElementsByTagName(t)[0];e.async=1;e.src=u+'/scripts/eme.js';p.parentNode.insertBefore(e,p);})(window,document,'script','https://emeapi.abacusemedia.com','DVVFG','FG','GlobalSlideUp','#GlobalEME','EMEObject','FullNavPath,engaged,UserID,conv_region');</script> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.1/jquery.fancybox.min.js"></script> <script> $('[data-fancybox]').fancybox({ toolbar: false, smallBtn: true, iframe: { preload: false } }) </script> <!-- DVV FG - fill firstname and message with data from dataLayer <script> $(window).on("eme:itemapplied", function(evt) { //var data = evt && evt.detail || {}; $('#EMEFirstName').html(myData.firstname); $('#EMECats').html(convMessageText.split('|').filter(function(el){return el && el!=undefined;})); }); </script> --> <!-- START SLIDE UP MESSAGE <div id="htmlslideupmessage" data-message="htmlslideupmessage" data-client="CoreTest" data-brand="CAT" class="eme-static-htmlslideupmessage eme-init"> <div class="eme-htmlslideup"> <div class="eme-htmlslideup-overlay"></div> <div class="eme-htmlslideup-wrapper"> <style> .eme-htmlslideup{ position:fixed; width:100%; height:auto; min-height:63px; z-index: 32768; box-shadow:0 -5px 5px 1px rgba(0, 0, 0, 0.1); visibility:hidden; transform:translateY(140%); opacity:0; right:0; left:0; transition:transform 1.0s,opacity 1.0s; } .eme-htmlslideup *{ box-sizing:border-box; } .eme-htmlslideup a{ color:#fff; } .eme-completed .eme-htmlslideup{ bottom:0; transform:translateY(0); opacity:1; visibility:visible; } .eme-toggle .eme-htmlslideup .eme-button-container{ padding-top:15px; } .eme-toggle .eme-htmlslideup .eme-toggle-button .eme-link{ padding:10px 15px 14px; } .eme-htmlslideup .assistive{ position:absolute!important; height:1px; width:1px; overflow:hidden; clip:rect(1px,1px,1px,1px); } .eme-htmlslideup .eme-header{ background-color: #1cafe5; position: relative; height: 9px; display:block; } .eme-toggle .eme-htmlslideup .eme-header { height: 0; padding: 0; margin: 0; } .eme-htmlslideup .eme-header .eme-trigger-action-toggle{ display:inline-block; } .eme-htmlslideup .eme-toggle-button{ position:absolute; top: -17px; right: 10px; } .eme-toggle .eme-htmlslideup .eme-toggle-button{ top:-22px; } .eme-htmlslideup .eme-toggle-button .eme-link{ background-color: #F58C21; width:46px; height:46px; display:inline-block; border-radius:23px; box-shadow:0 0 5px 1px rgba(0, 0, 0, .5); padding:14px 15px 18px; transition: box-shadow 150ms ease-in, background-color 150ms ease-in; } .eme-htmlslideup .eme-toggle-button .eme-link:hover { box-shadow: 0 0 5px 1px rgba(0, 0, 0, .85); background-color: #1cafe5; } .eme-toggle .eme-htmlslideup .eme-trigger-action-toggle .eme-toggle-button-icon{ opacity:1; transform:rotate(180deg); } .eme-htmlslideup .eme-main{ background-color: #144696; padding: 50px 9px 0; text-align:center; display: flex; flex-direction: column; } .eme-toggle .eme-htmlslideup .eme-main{ min-height:63px; padding:0; } .eme-toggle .eme-htmlslideup .eme-main .eme-headline,.eme-toggle .eme-htmlslideup .eme-main .eme-text{ display:none; } .eme-htmlslideup .eme-headline{ color:#fff; font-size:1.802rem; line-height:2.027rem; font-weight:bold; margin-bottom:17px; height:auto; opacity:1; order:2; } .eme-htmlslideup .eme-headline span{ color:#F58C21; } .eme-htmlslideup .eme-headline .eme-link{ color:#006CB8; text-decoration:underline; } .eme-htmlslideup .eme-headline .eme-link:hover{ color:#fff; } .eme-htmlslideup .eme-content{ padding:0 2px; order:1; } .eme-htmlslideup .eme-content .eme-text{ color:#DCDCDC; font-size:1.125rem; line-height:1.75rem; font-weight:normal; margin-bottom:20px; height:auto; opacity:1; } .eme-htmlslideup .eme-content .eme-text .eme-link:hover{ color:#fff; } .eme-htmlslideup .eme-button-container{ order:3; background-color: #002a63; margin-left: -50vw; margin-right: -50vw; padding-bottom: 15px; } .eme-htmlslideup .eme-button-container .eme-button{ color:#fff; display:inline-block; background-color:#F58C21; border-radius:6px; padding:6px 28px 6px; font-size:1rem; line-height:1.602rem; font-weight:bold; text-transform:uppercase; text-decoration:none; text-align:center; transition:background-color .2s,color .2s; margin-top:15px; margin-left:-20px; min-width:134px; } .eme-toggle .eme-htmlslideup .eme-button-container .eme-button{ margin-top:0; } .eme-htmlslideup .eme-button-container .eme-link{ color:#fff; font-size:1rem; line-height:1.602rem; } .eme-htmlslideup .eme-button-container .eme-button.eme-button-secondary{ background-color:#F58C21; } .eme-htmlslideup .eme-button-container .eme-button+.eme-link{ margin-left:20px; } .eme-htmlslideup .eme-button-container .eme-button:hover{ background-color:#1cafe5; color:#fff; } .eme-htmlslideup .eme-text{ } .eme-htmlslideup .eme-text-uppercase{ text-transform:uppercase; } .eme-htmlslideup .eme-ribbon-text-separator{ top:-15px; } .eme-htmlslideup .eme-inline{ display:inline-block; } .eme-htmlslideup .eme-block{ display:block; } .eme-htmlslideup .eme-footer{ display:block; height: auto; } .eme-toggle .eme-htmlslideup .eme-footer{ height:0; } .eme-htmlslideup .eme-footer .eme-image{ display:none; } .eme-htmlslideup .eme-link{ color:#fff; } .eme-htmlslideup .eme-button{ } @media screen and (min-width: 768px){ .eme-htmlslideup{ } .eme-htmlslideup .eme-image{ } .eme-htmlslideup .eme-toggle-button{ top:-23px; right:16px; } .eme-htmlslideup .eme-main{ padding: 24px 70px 0; text-align:left; } .eme-toggle .eme-htmlslideup .eme-main{ height:67px; min-height:67px; } .eme-htmlslideup .eme-headline{ font-size:2.027rem; line-height:2.027rem; font-weight:bold; margin-bottom: 48px; } .eme-htmlslideup .eme-content{ padding:0; } .eme-htmlslideup .eme-content .eme-text{ font-weight:normal; margin-bottom: 15px; } .eme-htmlslideup .eme-button-container{ text-align:center; } .eme-htmlslideup .eme-button-container .eme-button{ padding:6px 28px 6px; font-size:1rem; line-height:1.602rem; font-weight:bold; margin-top:15px; } .eme-htmlslideup .eme-button-container .eme-link.eme-link-primary,.eme-htmlslideup .eme-content .eme-button-container .eme-link.eme-link-secondary{ display:inline-block; } } @media screen and (min-width: 1280px){ .eme-htmlslideup{ min-height:63px; } .eme-htmlslideup .eme-toggle-button{ top:-12px; right:35px; z-index:1; } .eme-toggle .eme-htmlslideup .eme-toggle-button{ top:-12px; } .eme-htmlslideup .eme-main{ text-align: left; min-height: 200px; padding: 22px 0 0 0; } .eme-toggle .eme-htmlslideup .eme-main{ height:63px; } .eme-htmlslideup .eme-content .eme-button-container .eme-button{ padding:6px 28px 6px; } .eme-htmlslideup .eme-footer .eme-image{ display:inline; position:absolute; right:89px; width:223px; bottom:58px; height:auto; opacity:1; } .eme-toggle .eme-htmlslideup .eme-footer .eme-image{ height:0; opacity:0; } .eme-htmlslideup .eme-ribbon-decorations, .eme-htmlslideup .eme-footer{ max-width:1280px; margin:0 auto; position:relative; } .eme-htmlslideup .eme-content .eme-text{ margin-bottom: 8px; } .eme-toggle .eme-htmlslideup .eme-header,.eme-toggle .eme-htmlslideup .eme-footer{ margin:0 auto; } .eme-toggle .eme-htmlslideup .eme-main:after{ display:none; } .eme-htmlslideup .eme-content .eme-button-container .eme-link{ font-size:1rem; } .eme-htmlslideup .eme-main > .eme-headline, .eme-htmlslideup .eme-main > .eme-content{ max-width:1280px; width:100%; margin:0 auto; padding:0 15px; } .eme-htmlslideup .eme-main > .eme-headline{ margin-bottom:48px; } .eme-htmlslideup .eme-main .eme-content .eme-button-container{ position:absolute; bottom:13px; } } </style> <header class="eme-header"> <div class="eme-ribbon-decorations"> <div class="eme-toggle-button"> <a href="#toggle" class="eme-trigger eme-link eme-trigger-action-toggle" data-eme-target="clicktoggle" title="Toggle"><span class="assistive">Toggle</span> <svg class="eme-toggle-button-icon" xmlns="http://www.w3.org/2000/svg" width="15" height="8" viewBox="0 0 15 8"> <path class="eme-toggle-button-icon-path" data-name="Path 740" d="M7.5,8,0,0H2.5l5,5.333L12.5,0H15Z" fill="#fff"/></svg></a> </div> </div> </header> <main class="eme-main"> <h2 class="eme-headline"><a href="https://account.flightglobal.com/subscribe?sourcecode=FGRibbon&campaigncode=FGRibbonMessage">Unlock our take on the stories that matter for just <span> £22 </span> a month </a></h2> <div class="eme-content"> <p class="eme-text">Breaking news, expert analysis, member-first insights and commentary on the global aviation industry.</p> </div> <div class="eme-button-container"> <a href="https://account.flightglobal.com/subscribe?sourcecode=FGRibbon&campaigncode=FGRibbonMessage" data-eme-target="clicksubscribelink" class="eme-trigger eme-link eme-button eme-button-secondary">Subscribe</a> <a href="/sign-in" data-eme-target="clicksigninlink" class="popup signIn eme-trigger eme-link eme-link-primary">or Sign In</a> </div> </main> <footer class="eme-footer"> <div class="eme-image"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="258" height="138" viewBox="0 0 258 138"> <defs> <clipPath id="clip-path"> <rect id="Rectangle_1723" data-name="Rectangle 1723" width="258" height="138" transform="translate(1051 772)" fill="none"/> </clipPath> </defs> <g id="Mask_Group_8" data-name="Mask Group 8" transform="translate(-1051 -772)" clip-path="url(#clip-path)"> <path id="Path_1917" data-name="Path 1917" d="M26.722,5.271V78.778h129.25V208.026h73.505V5.271Z" transform="translate(1266.966 982.623) rotate(-135)" fill="#fff" opacity="0.35"/> <path id="Path_1918" data-name="Path 1918" d="M26.722,5.271V21.138h27.9v27.9H70.49V5.271Z" transform="translate(1166.387 915.591) rotate(-135)" fill="#fff" opacity="0.995"/> <path id="Path_1920" data-name="Path 1920" d="M26.722,5.271V21.138h27.9v27.9H70.49V5.271Z" transform="translate(1213.387 915.591) rotate(-135)" fill="#fff" opacity="0.995"/> <path id="Path_1922" data-name="Path 1922" d="M26.722,5.271V21.138h27.9v27.9H70.49V5.271Z" transform="translate(1258.387 915.591) rotate(-135)" fill="#fff" opacity="0.995"/> </g> </svg> </div> </footer> </div> </div> </div> <script> (function(){ var navPathListToExclude = ['200','179','44']; if(!dataLayer.some(function(el){return el.UserID && el.UserID !== undefined;}) && !dataLayer.filter(function(el){return el.FullNavPath && el.FullNavPath.split('|').filter(function(x){return navPathListToExclude.indexOf(x)!=-1;}).length}).length){ $(document).ready(function(){ $('.eme-static-htmlslideupmessage').addClass('eme-completed'); }); $('.eme-trigger-action-toggle').on('click',function(evt){ evt.preventDefault(); $(this).parents('.eme-static-htmlslideupmessage').toggleClass('eme-toggle'); }); } })() </script> --> <!-- END SLIDE UP MESSAGE --> <script type="application/ld+json">{ "@context": "https://schema.org", "@type": "Article", "description": "This year’s Top 100 reflects an aviation industry hit by nine months or more of crisis – but also one where fortunes differ hugely depending on whether a business’s focus is defence or commercial.", "image": "https://d3lcr32v2pp4l1.cloudfront.net/Pictures/2000xAny/2/4/6/81246_f35mainclockheedmartin_153102_crop.jpg", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.flightglobal.com/flight-international/top-100-aerospace-companies-ranked-by-revenue/145146.article" }, "author": { "@type": "Person", "name": "Murdo Morrison" }, "dateCreated": "2021-08-19", "dateModified": "2021-12-23", "datePublished": "2021-08-31", "hasPart": { "@type": "WebPageElement", "isAccessibleForFree": false, "cssSelector": ".restrictedcontent" }, "headline": "Top 100 aerospace companies ranked by revenue", "isAccessibleForFree": false, "publisher": { "@type": "Organization", "name": "Flight Global", "logo": { "@type": "ImageObject", "url": "https://www.flightglobal.com/magazine/dest/graphics/logo/logo.png" } } }</script> <script type="text/javascript" src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3&ns=1&cb=1549806402" async></script></body> </html>

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