CINXE.COM

Arriva wins Dutch train and bus operating contact | News | Railway Gazette International

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="preload" as="style" href="/Magazine/core.css?p=7513768095036817"> <link rel="preload" as="script" href="/Magazine/core.js?p=7513768095036817"> <link rel="preload" as="image" href="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg" imagesrcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg 480w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/600xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg 600w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/780xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg 780w" imagesizes="(max-width: 1023px) 100vw, 780px" /> <!-- DVV Google Tag Manager DO NOT delete --> <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-KGQPK8B');</script> <!-- End Google Tag Manager --> <title>Arriva wins Dutch train and bus operating contact | News | Railway Gazette International</title> <meta name="description" content="NETHERLANDS: The province of Gelderland has awarded Arriva the contract to operate the Achterhoek Rivierenland package of rail and bus services from December 14 2025." /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2024-11-23 11:30:09.474"/> <meta name="momentlocale" content="en-gb"/> <meta name="momentlocaleformat" content="D MMMM 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="Wed, 23 Oct 2024 12:00 GMT" /> <link rel="canonical" href="https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article" /> <meta name="blockthis" content="blockGA" /> <meta name="showwallpaper" content="true" /> <meta name="navcode" content="36" /> <meta name="primarynavigation" content="Passenger ,News" /> <meta property="og:title" content="Arriva wins Dutch train and bus operating contact" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article" /> <meta property="og:site_name" content="Railway Gazette International" /> <meta property="og:description" content="NETHERLANDS: The province of Gelderland has awarded Arriva the contract to operate the Achterhoek Rivierenland package of rail and bus services from December 14 2025. EBS and Keolis had also bid for the contract which covers regional passenger train services on the Apeldoorn - Zutphen, Zutphen ..." /> <meta property="og:image:width" content="1024" /> <meta property="og:image:height" content="536" /> <meta property="og:image" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1024x536/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg" /> <meta property="og:image:alt" content="Gelderland train livery impression (Image Arriva)" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="Arriva wins Dutch train and bus operating contact" /> <meta property="twitter:description" content="NETHERLANDS: The province of Gelderland has awarded Arriva the contract to operate the Achterhoek Rivierenland package of rail and bus services from December 14 2025. EBS and Keolis had also bid for the contract which covers regional passenger train services on the Apeldoorn - Zutphen, Zutphen ..." /> <meta property="twitter:image:src" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1120xAny/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg" /> <meta property="twitter:image:alt" content="Gelderland train livery impression (Image Arriva)" /> <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=7513768095036817" rel="stylesheet" type="text/css"> <link href="/Magazine/print.css?p=7513768095036817" 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':'67651'}); window.dataLayer.push({'StoryFormatProperty':'O'}); window.dataLayer.push({'StoryCategories':'|Passenger|Arriva|Netherlands|Bus|'}); window.dataLayer.push({'StoryLayout':'Standard'}); window.dataLayer.push({'StoryWidth':'standard width'}); window.dataLayer.push({'StoryLayoutCode':'1'}); window.dataLayer.push({'StoryFormatCode':'1097'}); window.dataLayer.push({'StoryTypeCode':'1013'}); window.dataLayer.push({'StoryCategoriesCodes':'|63|2053|2160|2178|'}); window.dataLayer.push({'StoryFullNavPath':'|1|31|36|'}); window.dataLayer.push({'UserID':undefined}); window.dataLayer.push({'NavCode':'36'}); window.dataLayer.push({'MicrositeNavCode':'-1'}); window.dataLayer.push({'NavKey':'36'}); window.dataLayer.push({'NavigationAreaNavCode':'31'}); </script> <script type="text/javascript"> window.dataLayer.push({'AccessQualificationTypeName':'Free access (anonymous users)'}); window.dataLayer.push({'AccessProductCode':'RGofree'}); window.dataLayer.push({'AccessProductName':'Railway Gazette Online Free'}); window.dataLayer.push({'AccessCount':'1'}); </script> <script type="text/javascript"> //add any client specific dimensions window.dataLayer = window.dataLayer || []; window.dataLayer.push({'UserStateLoggedIn':'False'}); window.dataLayer.push({'FullNavPath':'|1|31|36|'}); window.dataLayer.push({'Content Title':'Arriva wins Dutch train and bus operating contact | News'}); window.dataLayer.push({'AccessStatus':'Granted'}); window.dataLayer.push({'Template':'Story'}); window.dataLayer.push({'Pubcode':'2'}); window.dataLayer.push({'PublicationName':'Railway Gazette International'}); window.dataLayer.push({'StoryAccessControl':'Private'}); window.dataLayer.push({'StoryFormat':'No auto related content'}); window.dataLayer.push({'StoryType':'News'}); window.dataLayer.push({'Headline':'Arriva wins Dutch train and bus operating contact'}); window.dataLayer.push({'LongHeadline':undefined}); window.dataLayer.push({'Intro':undefined}); 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|News|Passenger|'}); window.dataLayer.push({'PrimaryNavCurrent':'Passenger'}); window.dataLayer.push({'PrimaryNavCodeCurrent':'36'}); window.dataLayer.push({'CategoryCodes':'|63|2053|2160|2178|'}); window.dataLayer.push({'Tags':undefined}); window.dataLayer.push({'Bylines':'|Railway Gazette International|'}); window.dataLayer.push({'IssueDate':'01-10-2024'}); window.dataLayer.push({'IssueDateTime':'01-10-2024 00:00:00'}); window.dataLayer.push({'PublishDate':'23-10-2024'}); window.dataLayer.push({'PublishDateTime':'23-10-2024 12:00:00'}); window.dataLayer.push({'BrowseJobsURL':undefined}); window.dataLayer.push({'grecaptcha':'6LdF8vonAAAAAD7o_GFdZx7ScY1_ggHdHUmijbXX'}); </script> <link href='https://fonts.googleapis.com/css?family=PT+Sans:400,700' rel='stylesheet' type='text/css'> <style> /* CLS FIXES */ #wrapper_sleeve { position: relative; max-width: 1024px; margin: 0 auto; background-color: #fff; } body#story.story-style-2 #wrapper_sleeve, body#story.story-style-4 #wrapper_sleeve, body#story.story-style-5 #wrapper_sleeve, body#story.story-style-6 #wrapper_sleeve, body#story.story-style-7 #wrapper_sleeve{ max-width:unset; } .footer { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:1180px; margin: 0 auto; } .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:1180px; margin: 0 auto; } .footer .container .inner-sleeve { max-width: 1220px; } #wrapper_sleeve>:first-child { padding-top: 31px; background-color: #fff; } .accessContainer>.container:first-child .inner-sleeve { padding-top: 60px; } @media only screen and (max-width: 768px) { .accessContainer .storyPreview .access-denied-index-img.picture img{ width:100px; } } @media screen and (min-width: 1024px){ .hero-spin{ width:100%; margin-left: -50%; margin-right: -50%; } .grid .hero-carousel .swiper-box, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.site-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.site-width-background{ width:100%; margin-left: calc(-50% + 50%); } body#story.story-style-1 .contentWrapper{ width: auto; padding-right: 7%; } body#story.story-style-2 .contentWrapper, body#story.story-style-4 .contentWrapper, body#story.story-style-5 .contentWrapper, body#story.story-style-6 .contentWrapper, body#story.story-style-7 .contentWrapper { width: 107%; padding-right: 7%; } } @media screen and (min-width: 1180px){ .grid .hero-carousel .swiper-box{ width:100%; margin-left: -50%; margin-right: -50%; } } @media screen and (min-width: 1280px){ .directories.directory-search .contentWrapperLeft { margin-left: 0; width: 100%; } } </style> <style type="text/css"> /* START styles for HTML messaging */ #top .html-message, #main .html-message, #foot .html-message { margin: 40px 0px; } #top .html-message .content, #main .html-message .content, #foot .html-message .content { background-color: #f2f2f2; padding: 20px 20px 50px; z-index: 9; position: relative; } #top .html-message.content-close-block .content, #main .html-message.content-close-block .content, #foot .html-message.content-close-block .content { padding-top: 40px; } #top .html-message .content .col-1, #main .html-message .content .col-1, #foot .html-message .content .col-1 { margin-bottom: 25px; } #top .html-message .content .col-1 header h2, #main .html-message .content .col-1 header h2, #foot .html-message .content .col-1 header h2 { color: #000; font-size: 1.424rem; line-height: 1.602rem; margin-bottom: 13px; } #top .html-message .content .col-1 section p, #main .html-message .content .col-1 section p, #foot .html-message .content .col-1 section p { color:#444; font-size: 1rem; line-height: 1.266rem; margin-bottom: 20px; } #top .html-message .content .col-1 section ul, #main .html-message .content .col-1 section ul, #foot .html-message .content .col-1 section ul { padding: 0; margin: 0; list-style: none; } #top .html-message .content .col-1 section li, #main .html-message .content .col-1 section li, #foot .html-message .content .col-1 section li { color: #444; font-size: 1rem; line-height: 1.266rem; margin-bottom: 12px; position: relative; padding-left: 18px; } #top .html-message .content .col-1 section li:before, #main .html-message .content .col-1 section li:before, #foot .html-message .content .col-1 section li:before { content: ''; position: absolute; display: inline-block; left: -2px; top: 2px; width: 14px; height: 14px; background-position: -504px -517px; background-repeat: no-repeat; background-image: url(/magazine/dest/graphics/output/sprite.css-007e76df.svgz); } #top .html-message .content .col-1 footer .button, #main .html-message .content .col-1 footer .button, #foot .html-message .content .col-1 footer .button { position: absolute; bottom: 30px; } #top .html-message .content .col-2, #main .html-message .content .col-2, #foot .html-message .content .col-2 { background-color: #fff; position: relative; padding: 25px 20px; margin-bottom: 41px; } .html-message.content-close-block .content .col-2:after { content: ""; display: inline-block; border-left: 28px solid transparent; border-right: 28px solid transparent; border-top: 28px solid #fff; position: absolute; right: 25px; bottom: -28px; } #top .html-message .content .col-2 section .image , #main .html-message .content .col-2 section .image, #foot .html-message .content .col-2 section .image { display: none; } #top .html-message .content .col-2 section .quotation, #main .html-message .content .col-2 section .quotation, #foot .html-message .content .col-2 section .quotation { margin-bottom: 5px; } #top .html-message .content .col-2 section .quotation p, #main .html-message .content .col-2 section .quotation p, #foot .html-message .content .col-2 section .quotation p { color: #E39B00; font-size: 1.125rem; line-height: 1.424rem; font-weight: bold; } #top .html-message .content .col-2 section .quotation-source, #main .html-message .content .col-2 section .quotation-source, #foot .html-message .content .col-2 section .quotation-source { overflow: hidden; } #top .html-message .content .col-2 section .quotation-source p, #main .html-message .content .col-2 section .quotation-source p, #foot .html-message .content .col-2 section .quotation-source p { color: #666; font-size: .889rem; line-height: 1rem; margin-bottom: 5px; } /* Styling for 'close' button */ .content-close-block { position: relative; } .content-close-block .content-close-block-trigger { position: absolute; top: 0; right: 0; z-index: 30000; background-color: #f2f2f2; padding: 6px; text-transform: uppercase; font-size: 0.702rem; line-height: 0.702rem; text-decoration: none; font-weight: bold; } .content-close-block .content-close-block-trigger:after { content: ""; display: inline-block; width: 20px; height: 14px; background-repeat: no-repeat; background-image: url(https://d1c4d7gnm6as1q.cloudfront.net/pictures/web/m/u/g/message_close_691357.svgz); background-position: 4px 0px; } @media screen and (min-width: 1024px) { #top .oneColumn .html-message .content, #foot .oneColumn .html-message .content { display: flex; flex-wrap: nowrap; flex-direction: row; padding: 27px 40px 40px; } #top .oneColumn .html-message.content-close-block .content, #foot .oneColumn .html-message.content-close-block .content { padding-top: 40px; } #top .oneColumn .html-message .content .col-1, #foot .oneColumn .html-message .content .col-1 { flex: 1 67.68%; padding-right: 20px; margin-bottom: 70px; } #top .oneColumn .html-message .content .col-1 header h2, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 header h2, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 header h2, #main .oneColumn .html-message .content .col-1 header h2, #foot .oneColumn .html-message .content .col-1 header h2, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 header h2, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 header h2 { /* font-size: 2.566rem; line-height: 2.887rem; */ font-size: 2.281rem; line-height: 2.566rem; } #top .twoColumns .html-message .content .col-1 header h2, #foot .twoColumns .html-message .content .col-1 header h2 { font-size: 2.281rem; line-height: 2.566rem; } /* #top .oneColumn .html-message .content .col-1 section p, #top .twoColumns .html-message .content .col-1 section p, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section p, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section p, #main .oneColumn .html-message .content .col-1 section p, #foot .oneColumn .html-message .content .col-1 section p, #foot .twoColumns .html-message .content .col-1 section p, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section p, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section p { font-size: 1.125rem; line-height: 1.802rem; margin-bottom: 10px; } */ /* #top .oneColumn .html-message .content .col-1 section li, #top .twoColumns .html-message .content .col-1 section li, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li, #main .oneColumn .html-message .content .col-1 section li, #foot .oneColumn .html-message .content .col-1 section li, #foot .twoColumns .html-message .content .col-1 section li, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li { font-size: 1.125rem; line-height: 1.802rem; margin-bottom: 0; } */ /* #top .oneColumn .html-message .content .col-1 section li:before, #top .twoColumns .html-message .content .col-1 section li:before, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li:before, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li:before, #main .oneColumn .html-message .content .col-1 section li:before, #foot .oneColumn .html-message .content .col-1 section li:before, #foot .twoColumns .html-message .content .col-1 section li:before, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li:before, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li:before { top: 5px; } */ #top .oneColumn .html-message .content .col-1 footer .button, #foot .oneColumn .html-message .content .col-1 footer .button { bottom: 40px; } #top .oneColumn .html-message .content .col-2, #foot .oneColumn .html-message .content .col-2 { background-color: transparent; flex: 1 56.565%; padding: 13px 0 0; margin-bottom: 41px; } #top .oneColumn .columnOne .html-message.content-close-block .content .col-2:after, #foot .oneColumn .columnOne .html-message.content-close-block .content .col-2:after { display: none; } #top .oneColumn .html-message .content .col-2 section .image, #top .twoColumns .html-message .content .col-2 section .image, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image, #main .oneColumn .html-message .content .col-2 section .image, #foot .oneColumn .html-message .content .col-2 section .image, #foot .twoColumns .html-message .content .col-2 section .image, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image { display: block; float: left; width: 140px; height: 140px; margin-right: 17px; margin-bottom: 10px; } #top .oneColumn .html-message .content .col-2 section .image img, #top .twoColumns .html-message .content .col-2 section .image img, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image img, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image img, #main .oneColumn .html-message .content .col-2 section .image img, #foot .oneColumn .html-message .content .col-2 section .image img, #foot .twoColumns .html-message .content .col-2 section .image img, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image img, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image img { border-radius: 100%; } #top .oneColumn .html-message .content .col-2 section .quotation, #foot .oneColumn .html-message .content .col-2 section .quotation { float: right; margin-bottom: 5px; min-width: 240px; width: calc(100% - 160px); } #top .oneColumn .html-message .content .col-2 section .quotation p, #top .twoColumns .html-message .content .col-2 section .quotation p, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .quotation p, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .quotation p, #main .oneColumn .html-message .content .col-2 section .quotation p, #foot .oneColumn .html-message .content .col-2 section .quotation p, #foot .twoColumns .html-message .content .col-2 section .quotation p, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .quotation p, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .quotation p { font-size: 1.4rem; margin-bottom: 15px; line-height: 2rem; } #top .oneColumn .html-message .content .col-2 section .quotation-source, #foot .oneColumn .html-message .content .col-2 section .quotation-source { clear: both; float: left; width: 140px; } #top .oneColumn .html-message .content .col-2 section .quotation-source p, #foot .oneColumn .html-message .content .col-2 section .quotation-source p { margin-bottom: 0; } } /* END styles for HTML messaging */ </style> <style type="text/css"> /* START styles for thank you page */ .thankYouTop { text-align: center; } .spinPromo.thankYouTop.package h2 { padding: 10px 0; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2, .package .columns .column-3 { background-color: #fff; padding: 20px; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2{ margin-bottom: 20px; } @media screen and (min-width: 1024px) { .spinPromo.thankYouTop.package .columns { display: flex; flex-direction: row; max-width: 1180px; margin-left: auto; margin-right: auto; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2, .package .columns .column-3 { flex: 1 1; position: relative; text-align: left; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2{ margin-bottom: 0; } .spinPromo.thankYouTop.package .columns .column-2, .package .columns .column-3 { margin-left: 20px; } .spinPromo.thankYouTop.package .columns .column-inner { padding-bottom: 50px; } .spinPromo.thankYouTop.package .columns .column-footer { position: absolute; left: 20px; right: 20px; bottom: 20px; padding: 0; } } /* END styles for thank you page */ </style> <style> .mast-sharing-icons { display: none; position: absolute; right: 20px; bottom: -20px; list-style: none; margin: 0; padding: 0; } .mast-sharing-icons:after { display: table; clear: both; content: ''; } .mast-sharing-icons li { float: left; } .mast-sharing-icons li:not(:last-child) { margin-right: 8px; } .mast-sharing-icons li a { display: inline-block; } .mast-sharing-icons li a svg [id$="-circle"] { fill: #005092; transition: fill 200ms linear; } .mast-sharing-icons li a:hover svg [id$="-circle"] { fill: #000; } @media screen and (min-width: 1024px) { .mast-sharing-icons { display: block; } } </style> <!-- TEMP PATCH: DVVMCS-366 START --> <style> header#masthead+.ad { position: relative; } @media screen and (min-width: 1024px) { .wallpaper-applied header#masthead+.ad:before { content: ''; position: absolute; left: -50vw; right: -50vw; z-index: 0; top: -24px; bottom: -24px; width: 1024px; margin: 0 auto; } .wallpaper-applied header#masthead+.ad > div { position: relative; } } </style> <!-- TEMP PATCH: AC - REMOVAL OF RG CHINA LOGO AND RE-WORK OF GRID REPEAT -- START --> <style> .brand-list ul li { margin: 0 auto; } @media screen and (min-width: 1280px){ .brand-list ul { -ms-grid-columns: 1fr 20px 1fr 20px 1fr 20px 1fr 20px 1fr; grid-template-columns: repeat(3,1fr) !important; grid-gap: 170px; }} @media screen and (min-width: 768px) and (max-width: 1280px) { .brand-list ul { display: -ms-grid; display: grid; -ms-grid-columns: 1fr 20px 1fr 20px 1fr; grid-template-columns: repeat(2,1fr) !important; grid-gap: 75px; margin: auto; text-align: center !important; }} #cookiePolicy div p {text-align: left;} </style> <!-- TEMP PATCH: AC END --> <!-- AC - Ads text colour for global enhanced ads --> <style> .ad-text { background: #f0f2f2; font-size: 0.675rem; padding: 2px; color: #444; text-transform: uppercase; border-top: 4px solid #DCDCDC; } </style> <style> .wallpaper-applied.site-width-1024 .ad-style1, .wallpaper-applied.site-width-1024 header#masthead+.ad { width: 728px; } </style> <!-- START DIRECTORY CSS STYLING --> <style> .directories .contactOption__web a{ overflow-wrap: break-word; } .directories .company-footer .company-footer__content__sleeve .company-footer__content .company-footer__info-logo-request-info, .directories .company-footer .company-footer__content__sleeve .company-footer__content { gap:20px; } @media screen and (min-width: 1024px){ .full-branded-section, .full-container { width: unset; left: unset; right: unset; margin-left: unset; margin-right: unset; } .directories .company-footer .company-footer__content__sleeve .company-footer__content .company-footer__info-logo-request-info .company-footer__info{ margin:0; } } @media screen and (min-width: 1280px){ .directories #content .headerWrapper, .directories .contentWrapper { width: 100%; } .directories .company-header .company-header__content__sleeve .company-header__content .company-header__info { padding-left: 20px; padding-right: 20px; } .directories .company-header .company-header__content__sleeve .company-header__content .company-header__logo-request-info .company-header__logo .company-header__logo_inner { margin-right: 20px; } .directories .contactus__header .contactus__header_location { margin-left: 12%; } .directories .company-header .company-header__content__sleeve .company-header__company-tabs, .directories .company-footer .company-footer__content__sleeve .company-footer__content { padding-left: 20px; padding-right: 20px; } } </style> <!-- END DIRECTORY CSS STYLING --> <!-- Beginnig hot topics CSS STYLING --> <style> .hot-topics-item {display: none;} .hot-topics-item > span:nth-child(2) > a:nth-child(1) {display: none;} .wallpaper-applied.site-width-1024 .hot-topics-container { position: relative; width: 100% !important; margin: auto; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1024px !important; width: 100%; margin: 0 auto; } .directories .contactus__footer { display: none; } div.company-footer__info-logo-request-info > div.company-footer__info > button { display: none !important; } div.company-header__content > div.company-header__info > button { display: none !important; } .cta-button-wrapper { margin: 0 auto !important; display: table;} .cta-button { background: transparent; padding: 10px 20px; border: 2px solid #005092; border-radius: 20px; margin: 0 auto !important; transition: all 0.25s ease; } .cta-button:hover { background: #005092; color: #fff !important; padding: 10px 20px; border: 2px solid #005092; border-radius: 20px; transition: all 0.25s ease; text-decoration: none; } .storytext .inline_gallery.style1-gallery .galleryscroll .text.content {background: #ffffff73; padding: 10px;} </style> <!-- <style> div#wrapper div#wrapper_sleeve.showMenuPushed div.container.relatedArticles.companyNews {display: none;} </style> --> <!-- END hot topics CSS STYLING --> <script data-ad-client="ca-pub-7045852503918369" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <meta name="google-site-verification" content="ojKNsJR7hnpBNaYvxbPPxNCHSQ0YJnk6BHFQui-VqsQ" /> <meta name="google-site-verification" content="HCoJsr9OuUiqJS--PJxmsXQRuTF7_scJPa_V9A_g7yA" /> <meta name="google-site-verification" content="yqc9O3gL22UT2bkYsY2LHSea9TJiT_5aiXGAQd2Grgw" /> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <!-- Begin of setting Premium user --> <script> $(document).ready(function() { var notSignedIn = getDataLayerVal('PartyActiveProductIds') == undefined ? true : false ; if(!notSignedIn){ var splitthis = getDataLayerVal('PartyActiveProductIds').split('|'); var premium = splitthis.filter(function(number) { return number == '2'; }); 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 --> <style> .mast-sharing-icons { display: none; position: absolute; right: 20px; bottom: -20px; list-style: none; margin: 0; padding: 0; } .mast-sharing-icons:after { display: table; clear: both; content: ''; } .mast-sharing-icons li { float: left; } .mast-sharing-icons li:not(:last-child) { margin-right: 8px; } .mast-sharing-icons li a { display: inline-block; } .mast-sharing-icons li a svg [id$="-circle"] { fill: #005092; transition: fill 200ms linear; } .mast-sharing-icons li a:hover svg [id$="-circle"] { fill: #000; } @media screen and (min-width: 1024px) { .mast-sharing-icons { display: block; } } </style> <script> var showwallpaper; if(document.querySelector('meta[name="showwallpaper"]')) { showwallpaper = document.querySelector('meta[name="showwallpaper"]').content; } </script> <style> @media screen and (min-width: 1220px) { .wallpaper-applied.site-width-1024 .mast.container .inner-sleeve, .wallpaper-applied.site-width-1024 #mainnav.container .inner-sleeve { max-width: 1220px; } } </style> <script type='text/javascript'> function getDataLayerVal(keyVal) { for (var i = 0; i < window.dataLayer.length; i++) { if (dataLayer[i][keyVal] !== undefined) { return dataLayer[i][keyVal]; } } } function updateContentFromDataLayer(selector, value) { return document.querySelector(selector).innerText = getDataLayerVal(value) } </script> <script> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { // Define a size mapping object which can be applied to the ad positions. The first // parameter to addSize is a viewport size, while the second is a list of allowed ad sizes. // The sizes included below match those in the examples provided in this support document. //(Used for: AdvertA, AdvertC, AdvertAttach) var mapSmallRight = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,75],[320,50],[300,250]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300,250]]).build(); //(Used for: AdvertB) var mapSmallRightB = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,75],[320,50],[300,250]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300,250], [120,600], [160,600], [300,600]]).build(); //(Used for: AdvertD, AdvertE, AdvertF) var mapLargeRight = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300, 50]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300, 600]]).build(); // WV Cloud Documentation | Google DoubleClick Advertising // abacusemedia.com/webvision Page 6 of 12 //(Used for: Masthead Leaderboard;) var mapLB = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,50], [320, 50]]). // 601, 0 (Small Tablet - Portrait) addSize([601, 0], [[468,60]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[728,90]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[728,90], [970,250]]).build(); var mapWallpaper = googletag.sizeMapping(). addSize([0, 0], []). // 1220, 0 addSize([1220, 0], [1, 1]).build(); // var wallpaperSlot = googletag.defineOutOfPageSlot('/13644946/WallpaperV5', 'div-gpt-ad-1602240785818-0').addService(googletag.pubads()); // ADVERT A googletag.defineSlot('/13644946/RGI.COM_MPU_GENERAL_PAGES', [300, 250], 'div-gpt-ad-1602084646203-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); // ADVERT B googletag.defineSlot('/13644946/RGI_MPU_General2', [300, 250], 'div-gpt-ad-1601978937945-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); // ADVERT C googletag.defineSlot('/13644946/RGI_MPU_C', [300, 250], 'div-gpt-ad-1666188956933-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); // UNDER NAV googletag.defineSlot('/13644946/RGI.COM_LEAD_GENERAL_PAGES', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1601973347622-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Home Leaderboard 2 googletag.defineSlot('/13644946/RGI_Leaderboard_2', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1724079785985-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Home Leaderboard 3 googletag.defineSlot('/13644946/RGI_Leaderboard_3', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1724081464759-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Leaderboard 4 googletag.defineSlot('/13644946/RGI_leaderboard_4', [[970, 250]], 'div-gpt-ad-1726133201831-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // home video slot //googletag.defineSlot('/13644946/rgivideo', [[640, 480], [300, 250]], 'div-gpt-ad-1644499013896-0').addService(googletag.pubads()); //RG ADHESION - (WB 10.09/2024) googletag.defineOutOfPageSlot('/13644946/RGI_Adhesion', 'div-gpt-ad-1725960169073-0').addService(googletag.pubads()); // Microsite ad units googletag.defineSlot('/13644946/Metro_MPU_General', [300, 250], 'div-gpt-ad-1602154876742-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_MPU_B', [300, 250], 'div-gpt-ad-1602154919837-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_MPU_C', [300, 250], 'div-gpt-ad-1602154953662-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_Leaderboard_General', [[300, 50], [728, 90], [468, 60]], 'div-gpt-ad-1707835215170-0').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_Skyscraper', [[300, 600], [300, 250]], 'div-gpt-ad-1602154984749-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Masthead_Leader_under_Nav', [[300, 50], [728, 90], [468, 60]], 'div-gpt-ad-1602155029502-0').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Advert_A', [300, 250], 'div-gpt-ad-1602155062284-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_MPU_B', [300, 250], 'div-gpt-ad-1602155092840-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Advert_C', [300, 250], 'div-gpt-ad-1602155131343-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); //Out of page unit - added 15-9-22 googletag.defineOutOfPageSlot('/13644946/RGI_Interstitial', 'div-gpt-ad-1663232421348-0').addService(googletag.pubads()); googletag.pubads().setTargeting('UserStateLoggedIn', getDataLayerVal('UserStateLoggedIn')); googletag.pubads().setTargeting('StoryCategories', getDataLayerVal('StoryCategories')); googletag.pubads().setTargeting('navcode', getDataLayerVal('NavCode')); googletag.pubads().setTargeting('articleid', getDataLayerVal('StoryID')); googletag.pubads().setTargeting('storylayout', getDataLayerVal('StoryLayout')); googletag.pubads().setTargeting('jobtitle', typeof jobtitleVar !== 'undefined' ? jobtitleVar.slice(1,-1) : ''); googletag.pubads().setTargeting('industrysector', typeof industrySectorVar !== 'undefined' ? industrySectorVar.slice(1,-1) : ''); googletag.pubads().setTargeting('MicrositeNavCode', getDataLayerVal('MicrositeNavCode')); googletag.pubads().setTargeting('usertype', getDataLayerVal('usertype')); googletag.pubads().setTargeting('ProductId',getDataLayerVal('PartyActiveProductIds')); googletag.pubads().setTargeting("url",window.location.pathname); googletag.pubads().setTargeting('slug', document.location.pathname.substr(document.location.pathname.lastIndexOf('/'))); if (document.querySelector('#div-gpt-ad-1602240785818-0') && showwallpaper && (window.innerWidth > 1220)) { var wallpaperSlot = googletag.defineOutOfPageSlot('/13644946/WallpaperV5', 'div-gpt-ad-1602240785818-0').addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener('slotRenderEnded', function(event) { 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(); }); // 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-1578661320890-0') && showwallpaper && (window.innerWidth > 1220)) { var wallpaperSlot = googletag.defineOutOfPageSlot('/210416249/Wallpaper', 'div-gpt-ad-1602240785818-0').defineSizeMapping(mapWallpaper).addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener('slotRenderEnded', function(event) { debugger; if((event.slot.getSlotElementId() == wallpaperSlot.getSlotElementId()) && !event.isEmpty) { debugger; if(document.querySelector('.wallpaper-ad[data-site-width-1024]')) { document.body.className += ' ' + 'site-width-1024'; } if(showwallpaper === "true") { document.body.className += ' ' + 'wallpaper-applied'; $(window).trigger('wallpaper:advert'); } } }); }; */ 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')); } </script> <!-- THIS IS COMMENTED OUT AS IT ALREADY EXISTS ON A SEPARATE PAGE TEXT "Google tag manager" --> <!-- Google Tag Manager (noscript) <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KGQPK8B" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> End Google Tag Manager (noscript) --> <script type="text/javascript"> _linkedin_partner_id = "3203105"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script><script type="text/javascript"> (function(){var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript"; b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(); </script> <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=3203105&fmt=gif" /> </noscript> <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":3, "StoryDynamicSlotsMobileMaxInlineSlots":3, "StoryDynamicSlotsDesktopMaxRHCSlots":3, "StoryDynamicSlotsDesktopElementSpacingFirst":3, "StoryDynamicSlotsMobileElementSpacingFirst":2, "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/RGI.COM_MPU_GENERAL_PAGES", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":false, "Refresh":true, "InsertIfNoRHCSpace":true, "NoBackfill":true, "AdUnitSizesInline":[[300,250]], //not required after hotfix "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[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/RGI_MPU_General2", "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/RGI.COM_MPU_GENERAL_PAGES", "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/RGI_MPU_General2", "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/RGI.COM_MPU_GENERAL_PAGES", "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/RGI_MPU_General2", "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='Sponsored' (1018) OR Type='Organisations' (1015) OR Type='Tender' (1030) OR Type='Job' (1031) "Conditions":"StoryType-1015,StoryType-1018,StoryType-1030,StoryType-1031", "Operator":"Or", "Settings":{ "RemoveGroupsAll":"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" "Conditions":"StoryCategoriesCodes-99999999", "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> <!-- GOOGLE ANALYTICS IS BEING INCLUDED THROUGH GOOGLE TAG MANAGER --> <!-- Global site tag (gtag.js) - Google Analytics <script async src="https://www.googletagmanager.com/gtag/js?id=UA-2220664-14"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-2220664-14'); gtag('config', 'AW-1034638432'); </script> --> <!-- Abacus Google Tag Manager DO NOT delete --> <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-MJ3XLK3'); </script> <!-- End Google Tag Manager --> <script data-ad-client="ca-pub-7045852503918369" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> </head> <body id="story" class="M1-master js-disabled story-style-1 story-format-1013 story-type-1097 enhanced-advertising enhanced-advertising-rhc-empty"> <!-- Abacus Google Tag Manager (noscript) DO NOT delete --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MJ3XLK3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!---Railway Gazette Google Tag Manager---> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KGQPK8B" height="0" width="0" style="display:none;visibility:hidden"></iframe></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"> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <div id='div-gpt-ad-1602240785818-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602240785818-0'); }); </script> </div> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1602146700128-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602146700128-0'); }); </script> </div>--> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1602173815824-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602173815824-0'); } ); </script> </div> --> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1578661320890-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1578661320890-0'); }); </script></div>--> <!-- /13644946/RGI_Interstitial --> <div id='div-gpt-ad-1663232421348-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1663232421348-0'); }); </script> </div> <!-- /13644946/RGI_Adhesion --> <div id='div-gpt-ad-1725960169073-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1725960169073-0'); }); </script> </div> </div> <!--<div class="leaderboard"> <div class="ad"> <div id='div-gpt-ad-1601973347622-0' class="dt-ad-90 tab-ad-90 mob-ad-50"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1601973347622-0'); }); </script> </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="https://www.railwaygazette.com/"> <span class="logoIcon"> <span class="assistive">Railway Gazette</span> </span> </a> </div> <div id="print_logo"> <img src="/magazine/dest/graphics/logo/print_logo.png" alt="railway gazette logo" /> </div> <div class="mastheadMobileLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Railway Gazette</span> </span> </a> </div> <ol class="mast-sharing-icons"> <li><a href="https://facebook.com/railwaygazette" aria-label="Facebook" rel="noopener noreferrer" target="_blank"><svg id="mast-fb-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-fb-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.46,15.46,0,0,1,4.89,5.17L5.06,5A15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" transform="translate(0 0)" fill="#005092"/><path id="mast-fb-share-ring" d="M16,31A15,15,0,1,0,1,16,15.08,15.08,0,0,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" transform="translate(0 0)" fill="#fff"/><path id="mast-fb-share-icon" d="M19.15,16.38H17V24H13.83V16.38h-1.5v-2.7h1.5V11.95a3,3,0,0,1,3.23-3.22h2.32v2.62H17.65c-.3,0-.67.15-.67.75v1.58h2.4Z" transform="translate(0 0)" fill="#fff"/></svg></a></li> <li><a href="https://twitter.com/railwaygazette" aria-label="Twitter" rel="noopener noreferrer" target="_blank"><svg id="mast-twitter-share" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_30_2)"> <path id="mast-tw-share-circle" d="M16 31.1111C24.3456 31.1111 31.1111 24.3456 31.1111 16C31.1111 7.65439 24.3456 0.888916 16 0.888916C7.65436 0.888916 0.888885 7.65439 0.888885 16C0.888885 24.3456 7.65436 31.1111 16 31.1111Z" fill="#005092"/> <path d="M17.5225 14.7749L23.4788 8H22.0671L16.8979 13.8825L12.7643 8H8L14.2468 16.8957L8 24H9.41173L14.8732 17.7876L19.2357 24H24L17.5225 14.7749ZM15.5889 16.9722L14.9539 16.0882L9.92 9.03991H12.088L16.1495 14.7279L16.7821 15.6137L22.0677 23.0076H19.8997L15.5889 16.9722Z" fill="white"/> </g> <defs> <clipPath id="clip0_30_2"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg> </a></li> <li><a href="https://www.linkedin.com/company/railway-gazette-international/" aria-label="LinkedIn" rel="noopener noreferrer" target="_blank"><svg id="mast-linked-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-linked-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-linked-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><g id="mast-linked-share-icon"><path id="mast-linked-share-icon-n" d="M19.07,12.77A2.53,2.53,0,0,0,16.75,14V13H14.13v7.88h2.63V16.45a2.08,2.08,0,0,1,.08-.67,1.5,1.5,0,0,1,1.35-1c1,0,1.35.75,1.35,1.8v4.2h2.63V16.3C22.08,13.9,20.8,12.78,19.07,12.77Z" fill="#fff"/><rect id="mast-linked-share-icon-i" x="10" y="13" width="2.63" height="7.88" fill="#fff"/><path id="mast-linked-share-icon-tittle" d="M11.35,9.18a1.39,1.39,0,0,0-1.5,1.26s0,.06,0,.09a1.36,1.36,0,0,0,1.37,1.35h.05a1.39,1.39,0,0,0,1.5-1.26s0-.06,0-.09a1.32,1.32,0,0,0-1.29-1.35Z" fill="#fff"/></g></svg></a></li> <li><a href="https://www.youtube.com/RailwayGazette" aria-label="YouTube" rel="noopener noreferrer" target="_blank"><svg id="mast-youtube-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-youtube-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-youtube-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><path id="mast-youtube-share-icon" d="M14.31,18.25V13.47l4.38,2.44ZM24,12.63a4,4,0,0,0-.62-1.69,2.83,2.83,0,0,0-1.61-.75C19.49,10,16.1,10,16.1,10h0s-3.39,0-5.72.19a1.87,1.87,0,0,0-1.61.75,3.27,3.27,0,0,0-.62,1.69A25,25,0,0,0,8,15.34v1.31a22.86,22.86,0,0,0,.18,2.72,4,4,0,0,0,.63,1.69,3,3,0,0,0,1.79.75c1.25.09,5.54.19,5.54.19s3.39,0,5.63-.19a1.87,1.87,0,0,0,1.61-.75A4,4,0,0,0,24,19.38a25,25,0,0,0,.18-2.72V15.34A22.86,22.86,0,0,0,24,12.63Z" fill="#fff"/></svg></a></li> <li><a href="https://www.instagram.com/railwaygazette/" aria-label="Instagram" rel="noopener noreferrer" target="_blank"><svg id="mast-instagram-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-instagram-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-instagram-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><path id="mast-instagram-share-icon" d="M22.3,10.76A1.38,1.38,0,0,0,21.16,9.7H10.76A1.48,1.48,0,0,0,9.7,10.84v10.4a1.48,1.48,0,0,0,1.14,1.06h10.4a1.39,1.39,0,0,0,1.06-1.06Zm-3-.08h1.21a.52.52,0,0,1,.53.51s0,0,0,0v1.21a.51.51,0,0,1-.45.53H19.34a.64.64,0,0,1-.53-.3V11.29a.46.46,0,0,1,.45-.61ZM16,13.42a2.54,2.54,0,0,1,.23,5.08H16a2.54,2.54,0,0,1,0-5.09Zm4.93,1.44v5.62a.52.52,0,0,1-.51.53H11.52A.52.52,0,0,1,11,20.5s0,0,0,0V14.86H12.2A4,4,0,0,0,12.5,18,3.66,3.66,0,0,0,14,19.49a3.81,3.81,0,0,0,4.1-.15,3.51,3.51,0,0,0,1.14-1.21,3.61,3.61,0,0,0,.53-1.59,4.17,4.17,0,0,0-.15-1.67Z" fill="#fff"/></svg></a></li> </ol> <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.railwaygazette.com/advertise-with-us" class="newWindow">Advertise</a></li><li><a href="https://account.railwaygazette.com/register?surveycode=50&amp;campaigncode=reg_toplink?returl=https://www.railwaygazette.com/56310.article">Register</a></li><li><a href="https://www.railwaygazette.com/subscriptions?campaigncode=rgsubusernav">Subscribe</a></li><li><a class="popup signIn" href="https://www.railwaygazette.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.railwaygazette.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.railwaygazette.com/"> <span>Home</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.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.railwaygazette.com/news"> <span>News</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/passenger"> <span>Passenger</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/traction-and-rolling-stock"> <span>Traction & Rolling Stock</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/high-speed"> <span>High Speed</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/freight"> <span>Freight</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/infrastructure"> <span>Infrastructure</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/policy"> <span>Policy</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/technology"> <span>Technology</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/business"> <span>Business</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/research-training-and-skills"> <span>Research, Training & Skills</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/accessibility-and-inclusion/2297.subject"> <span>Accessibility & inclusion</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/news/people"> <span>People</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/news/regions" aria-expanded="false"> <span>Regions</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.railwaygazette.com/news/regions"> <span>Regions</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/africa"> <span>Africa</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/asia"> <span>Asia</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/australasia"> <span>Australasia</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/europe"> <span>Europe</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/middle-east"> <span>Middle East</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/central-and-south-america"> <span>Central & South America</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/north-america"> <span>North America</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/uk" class="newWindow"> <span>UK news from Rail Business UK</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.metro-report.com" class="newWindow" aria-expanded="false"> <span>Urban transport news from Metro Report 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.metro-report.com" class="newWindow"> <span>Urban transport news from Metro Report International</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/metros" class="newWindow"> <span>Metros</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/light-rail-and-tram" class="newWindow"> <span>Light Rail & Tram</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/suburban-and-commuter-rail" class="newWindow"> <span>Suburban & Commuter Rail</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/metro-report/news/modes/peoplemovers-and-monorails" class="newWindow"> <span>Peoplemovers & Monorails</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/news/innotrans"> <span>InnoTrans</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/in-depth"> <span>In depth</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/events" aria-expanded="false"> <span>Events</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.railwaygazette.com/events"> <span>Events</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-industry-events-2024"> <span>Rail Industry Events 2024</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-industry-events-2025"> <span>Rail Industry Events 2025</span> </a> </li> <li class=""> <a href="https://www.railbusinessawards.com/" class="newWindow"> <span>Rail Business Awards</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2024"> <span>Rail Training & Skills Courses 2024</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2025"> <span>Rail Training & Skills Courses 2025</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/innotrans"> <span>InnoTrans</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data" aria-expanded="false"> <span>Maps & Data</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.railwaygazette.com/maps-and-data"> <span>Maps & Data</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators" aria-expanded="false"> <span>Railway Operators</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.railwaygazette.com/maps-and-data/railway-operators"> <span>Railway Operators</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/passenger"> <span>Passenger</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/freight"> <span>Freight</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/train-operator-/-open-access"> <span>Train Operator / Open Access</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/track-authority"> <span>Track Authority</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/holding-company"> <span>Holding Company</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/tourist"> <span>Tourist</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators" aria-expanded="false"> <span>Urban Railway Operators</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.railwaygazette.com/maps-and-data/urban-railway-operators"> <span>Urban Railway Operators</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/metro"> <span>Metro</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/light-rail-/-tramway"> <span>Light Rail / Tramway</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/commuter"> <span>Commuter</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/infrastructure/track-authority"> <span>Infrastructure/Track Authority</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/holding-company"> <span>Holding Company</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/urban-rail-list-of-openings"> <span>Urban rail - list of openings</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/maps" aria-expanded="false"> <span>Maps</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.railwaygazette.com/maps-and-data/maps"> <span>Maps</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps/country-and-city-map-directory/53920.article"> <span>Country and city map directory</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/country-profiles"> <span>Country Profiles</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/regulatory-authorities"> <span>Regulatory Authorities</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/associations"> <span>Associations</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/data-and-analysis"> <span>Data & Analysis</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/magazines" aria-expanded="false"> <span>Magazines</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.railwaygazette.com/magazines"> <span>Magazines</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/magazines/railway-gazette-international"> <span>Railway Gazette International</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/magazines/metro-report-international"> <span>Metro Report International</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/tenders-and-jobs"> <span>Tenders & Jobs</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/sponsored-content" aria-expanded="false"> <span>Sponsored content</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.railwaygazette.com/sponsored-content"> <span>Sponsored content</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-white-papers/23803.more"> <span>White Papers</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-broadcasts/23797.more?navcode=369"> <span>Webinars</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-sponsored-content/23800.more?navcode=369"> <span>Digital Advertorials</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/sponsored-content/supplier-directory"> <span>Supplier Directory</span> </a> </li> </ul> </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="352" data-rootnavcode="352" class="home-icon"><a href="https://www.railwaygazette.com/"><span>Home</span></a></li><li data-navcode="31" data-rootnavcode="31" class="current hasChildren fourSubNav"><a href="https://www.railwaygazette.com/news"><span>News</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="36" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/passenger"><span>Passenger</span></a></li><li data-navcode="47" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/traction-and-rolling-stock"><span>Traction & Rolling Stock</span></a></li><li data-navcode="46" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/high-speed"><span>High Speed</span></a></li><li data-navcode="40" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/freight"><span>Freight</span></a></li><li data-navcode="39" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/infrastructure"><span>Infrastructure</span></a></li><li data-navcode="37" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/policy"><span>Policy</span></a></li><li data-navcode="48" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/technology"><span>Technology</span></a></li><li data-navcode="38" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/business"><span>Business</span></a></li><li data-navcode="286" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/research-training-and-skills"><span>Research, Training & Skills</span></a></li><li data-navcode="6215" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/accessibility-and-inclusion/2297.subject"><span>Accessibility & inclusion</span></a></li><li data-navcode="49" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/news/people"><span>People</span></a></li></ul></li><li class="subnav"><ul><li data-navcode="50" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions"><span>Regions</span></a><ul><li data-navcode="70" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/africa"><span>Africa</span></a></li><li data-navcode="73" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/asia"><span>Asia</span></a></li><li data-navcode="74" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/australasia"><span>Australasia</span></a></li><li data-navcode="75" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/europe"><span>Europe</span></a></li><li data-navcode="76" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/middle-east"><span>Middle East</span></a></li><li data-navcode="72" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/central-and-south-america"><span>Central & South America</span></a></li><li data-navcode="71" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/north-america"><span>North America</span></a></li><li data-navcode="77" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/uk" class="newWindow"><span>UK news from Rail Business UK</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="35" data-rootnavcode="31" class=""><a href="https://www.metro-report.com" class="newWindow"><span>Urban transport news from Metro Report International</span></a><ul><li data-navcode="354" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/metros" class="newWindow"><span>Metros</span></a></li><li data-navcode="355" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/light-rail-and-tram" class="newWindow"><span>Light Rail & Tram</span></a></li><li data-navcode="356" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/suburban-and-commuter-rail" class="newWindow"><span>Suburban & Commuter Rail</span></a></li><li data-navcode="357" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/metro-report/news/modes/peoplemovers-and-monorails" class="newWindow"><span>Peoplemovers & Monorails</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="44" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/innotrans"><span>InnoTrans</span></a></li></ul></li></ul></div></div></li><li data-navcode="33" data-rootnavcode="33" class="hasChildren"><a href="https://www.railwaygazette.com/in-depth"><span>In depth</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a href="/in-depth/stations-keeping-eurostar-passengers-connected/67826.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/7/9/68679_eurostarlondonstpancrasphotobz_110946.jpg" loading="lazy" class="lazyloaded" alt="Eurostar London St Pancras photo BZ"></div><div class="captionBlock"><span class="title">Stations: Keeping Eurostar passengers connected</span></div></a></li><li class="promotedStory"><a href="/in-depth/stations-barcelonas-next-rail-hub-nears-completion/67792.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/2/5/68625_cabeceranortelasagreraadif_452635.jpg" loading="lazy" class="lazyloaded" alt="cabecera norte La SagreraADIF"></div><div class="captionBlock"><span class="title">Stations: Barcelona’s next rail hub nears completion</span></div></a></li><li class="promotedStory"><a href="/in-depth/interview-putting-era-at-the-heart-of-europes-railway-ecosystem/67774.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/6/3/68563_ertmsstakeholdersplatform_705799.jpg" loading="lazy" class="lazyloaded" alt="ertms stakeholders platform"></div><div class="captionBlock"><span class="title">Interview: Putting ERA at the heart of Europe’s railway ecosystem</span></div></a></li><li class="promotedStory"><a href="/in-depth/interview-ukrainian-railways-looks-for-more-international-partnerships/67765.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/5/2/68552_ukrainianrailwaysphotoukrainianrailways1_136772.jpg" loading="lazy" class="lazyloaded" alt="Ukrainian Railways (photo Ukrainian Railways) (1)"></div><div class="captionBlock"><span class="title">Interview: Ukrainian Railways looks for more international partnerships</span></div></a></li></ul></div></div></li><li data-navcode="344" data-rootnavcode="344" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/events"><span>Events</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="6311" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-industry-events-2024"><span>Rail Industry Events 2024</span></a></li><li data-navcode="6381" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-industry-events-2025"><span>Rail Industry Events 2025</span></a></li><li data-navcode="6334" data-rootnavcode="344" class=""><a href="https://www.railbusinessawards.com/" class="newWindow"><span>Rail Business Awards</span></a></li><li data-navcode="6382" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2024"><span>Rail Training & Skills Courses 2024</span></a></li><li data-navcode="6409" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2025"><span>Rail Training & Skills Courses 2025</span></a></li><li data-navcode="6406" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/news/innotrans"><span>InnoTrans</span></a></li></ul></li><li class="promotedStory"><a class="image" href="https://www.railbusinessawards.com/" data-story="67533" target="_blank" rel="noopener noreferrer"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/0/67880_rbas_463180.png" loading="lazy" class="lazyloaded" alt="RBAs"></div><div class="captionBlock"><span class="title">Rail Business Awards</span></div></a></li><li class="promotedStory"><a class="image" href="https://www.railwaygazette.com/events/rail-industry-events-2025" data-story="65503"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/7/61887_2025_903874.jpg" loading="lazy" class="lazyloaded" alt="2025"></div><div class="captionBlock"><span class="title">Rail Industry Events 2025</span></div></a></li><li class="promotedStory"><a class="image" href="https://www.railwaygazette.com/events/rail-industry-events-2024" data-story="63299"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/6/61886_2024_960559.jpg" loading="lazy" class="lazyloaded" alt="2024"></div><div class="captionBlock"><span class="title">Rail Industry Events 2024</span></div></a></li></ul></div></div></li><li data-navcode="118" data-rootnavcode="118" class="hasChildren threeSubNav"><a href="https://www.railwaygazette.com/maps-and-data"><span>Maps & Data</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="125" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators"><span>Railway Operators</span></a><ul><li data-navcode="132" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/passenger"><span>Passenger</span></a></li><li data-navcode="131" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/freight"><span>Freight</span></a></li><li data-navcode="133" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/train-operator-/-open-access"><span>Train Operator / Open Access</span></a></li><li data-navcode="134" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/track-authority"><span>Track Authority</span></a></li><li data-navcode="130" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/holding-company"><span>Holding Company</span></a></li><li data-navcode="129" data-rootnavcode="118" class="break"><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/tourist"><span>Tourist</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="124" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators"><span>Urban Railway Operators</span></a><ul><li data-navcode="138" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/metro"><span>Metro</span></a></li><li data-navcode="139" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/light-rail-/-tramway"><span>Light Rail / Tramway</span></a></li><li data-navcode="136" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/commuter"><span>Commuter</span></a></li><li data-navcode="135" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/infrastructure/track-authority"><span>Infrastructure/Track Authority</span></a></li><li data-navcode="137" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/holding-company"><span>Holding Company</span></a></li><li data-navcode="330" data-rootnavcode="118" class="break"><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/urban-rail-list-of-openings"><span>Urban rail - list of openings</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="151" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/maps"><span>Maps</span></a><ul><li data-navcode="161" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps/country-and-city-map-directory/53920.article"><span>Country and city map directory</span></a></li></ul></li><li data-navcode="128" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/country-profiles"><span>Country Profiles</span></a></li><li data-navcode="126" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/regulatory-authorities"><span>Regulatory Authorities</span></a></li><li data-navcode="127" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/associations"><span>Associations</span></a></li><li data-navcode="383" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/data-and-analysis"><span>Data & Analysis</span></a></li></ul></li></ul></div></div></li><li data-navcode="111" data-rootnavcode="111" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/magazines"><span>Magazines</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="121" data-rootnavcode="111" class=""><a href="https://www.railwaygazette.com/magazines/railway-gazette-international"><span>Railway Gazette International</span></a></li><li data-navcode="122" data-rootnavcode="111" class=""><a href="https://www.railwaygazette.com/magazines/metro-report-international"><span>Metro Report International</span></a></li></ul></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-current-issue-november-2024/67681.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/3/1/4/68314_rgin2411coverminipic_108396.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2411-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International Current Issue - November 2024</span></div></a></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-2024-digital-archive/65790.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/9/7/3/62973_rgin2401coverminipic_848447.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2401-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International 2024 Digital Archive</span></div></a></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-2023-digital-archive/63453.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/4/1/55641_rgin2301coverminipic_330197.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2301-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International 2023 Digital Archive</span></div></a></li></ul></div></div></li><li data-navcode="349" data-rootnavcode="349" class="hasChildren"><a href="https://www.railwaygazette.com/tenders-and-jobs"><span>Tenders & Jobs</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a href="/tenders-and-jobs/the-pays-de-la-loire-region--west-of-france/67867.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/6/7/68767_logofondsblanc_156719300x200_588471.jpg" loading="lazy" class="lazyloaded" alt="logofondsblanc_156719-300x200"></div><div class="captionBlock"><span class="title">The Pays-de-la Loire Region ( West of France)</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/principal-structures-engineer/67845.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/1/8/68718_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Principal Structures Engineer</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/commercial-procurement-manager/67776.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/7/3/68573_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Commercial Procurement Manager</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/project-manager/67777.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/7/2/68572_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Project Manager</span></div></a></li></ul></div></div></li><li data-navcode="369" data-rootnavcode="369" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/sponsored-content"><span>Sponsored content</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="6320" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-white-papers/23803.more"><span>White Papers</span></a></li><li data-navcode="6318" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-broadcasts/23797.more?navcode=369"><span>Webinars</span></a></li><li data-navcode="6319" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-sponsored-content/23800.more?navcode=369"><span>Digital Advertorials</span></a></li><li data-navcode="6383" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/sponsored-content/supplier-directory"><span>Supplier Directory</span></a></li></ul></li><li class="promotedStory"><a href="/sponsored-content/rail-baltica-creating-a-strategic-link-for-europe/67648.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/2/6/9/68269_estoniaulemistestationvisualisation1_3467.jpg" loading="lazy" class="lazyloaded" alt="Estonia-Ulemiste-station-visualisation-(1)"></div><div class="captionBlock"><span class="title">Rail Baltica: creating a strategic link for Europe</span><span class="author">Sponsored by <span class="noLink">Rail Baltica</span></span></div></a></li><li class="promotedStory"><a href="/sponsored-content/croatian-konar-group-among-the-first-in-europe-to-manufacture-battery-multiple-unit-and-the-only-one-to-present-such-an-advancement-at-innotrans-2024/67523.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/3/2/67832_konarsmeasurementtrain_793077.jpg" loading="lazy" class="lazyloaded" alt="KONČAR's-Measurement-train"></div><div class="captionBlock"><span class="title">Croatian KONČAR Group among the first in Europe to manufacture Battery Multiple Unit and the only one to present such an advancement at InnoTrans 2024</span><span class="author">Sponsored by <span class="noLink">KONČAR</span></span></div></a></li><li class="promotedStory"><a href="/sponsored-content/lb-foster-highlights-at-innotrans/67476.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/1/9/67719_lbfoster_92071.jpg" loading="lazy" class="lazyloaded" alt="LBFoster"></div><div class="captionBlock"><span class="title">L.B. Foster highlights at InnoTrans</span><span class="author">Sponsored by <span class="noLink">L.B. Foster</span></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> <!-- Masthead leaderboard - under nav--> <div class="ad showMenuPushed" class="ad showMenuPushed" data-a-menu-open-pushed="true" style="position: relative; margin-top: 24px;"> <!-- /13644946/RGI.COM_LEAD_GENERAL_PAGES --> <div id='div-gpt-ad-1601973347622-0' class="dt-ad-90 tab-ad-90 mob-ad-50"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1601973347622-0'); }); </script> </div> </div> <!-- Masthead leaderboard - under nav <div class="ad showMenuPushed" class="ad showMenuPushed" data-a-menu-open-pushed="true" style="position: relative; margin-top: 24px;"> <!-- /210416249/RGI.COM_LEAD_GENERAL_PAGES <div id='div-gpt-ad-1568119471514-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1568119471514-0'); }); </script> </div> </div>--> <div id="wrapper_sleeve" data-menu-open-pushed> <div class="storyLayout standard"></div> <div class="headerWrapper"> <div class="container titleByline"> <div class="inner-sleeve"> <div class="storyPrimaryNav"><a href="https://www.railwaygazette.com/news/passenger">Passenger</a></div> <div class="story_title"> <h1>Arriva wins Dutch train and bus operating contact</h1> </div> <p class="byline meta">By <span class="author"><a href="https://www.railwaygazette.com/railway-gazette-international/1098.bio" rel="author">Railway Gazette International</a></span><span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-10-23T12:00:00&quot;,&quot;format&quot;: &quot;D MMMM YYYY&quot;}">2024-10-23T12:00: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.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="facebook" title="Share this on Facebook" rel="noopener noreferrer"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="twitter" title="Share this on Twitter" rel="noopener noreferrer"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="linkedin" title="Share this on Linked in" rel="noopener noreferrer"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp" rel="noopener noreferrer"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.railwaygazette.com%2fpassenger%2farriva-wins-dutch-train-and-bus-operating-contact%2f67651.article&e=Arriva+wins+Dutch+train+and+bus+operating+contact" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Arriva+wins+Dutch+train+and+bus+operating+contact&url=https%3a%2f%2fwww.railwaygazette.com%2fpassenger%2farriva-wins-dutch-train-and-bus-operating-contact%2f67651.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.railwaygazette.com%2fpassenger%2farriva-wins-dutch-train-and-bus-operating-contact%2f67651.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Arriva wins Dutch train and bus operating contact&amp;body=https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.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="/67651/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="storytext"><div class="inline_image image_size_full fullsize" data-attachment="68234" data-sequence="1"><button class="show-fullscreen" data-url="/attachment?attype=P&amp;atcode=68234&amp;storycode=67651">Show Fullscreen</button> <p class="picture"><img alt="Gelderland train livery impression (Image Arriva)" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg 480w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/600xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg 600w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/780xany/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg 780w" loading="eager" class="lazyloaded" width="2636" height="1484"></p> </div> <p>NETHERLANDS: The province of Gelderland has awarded <a class="intextlink" href="https://www.railwaygazette.com/arriva/2053.subject" rel="intextlink_2">Arriva</a> the contract to operate the Achterhoek Rivierenland package of rail and bus services from December 14 2025.</p> <p>EBS and <a class="intextlink" href="https://www.railwaygazette.com/keolis/2055.subject" rel="intextlink_1">Keolis</a> had also bid for the contract which covers regional passenger train services on the Apeldoorn – Zutphen, Zutphen – Winterswijk – Arnhem and Arnhem – Tiel lines. Arriva has operated these routes since 2012, as well as bus services in Rivierenland which it has run since 2003 and buses in Achterhoek taken on in 2010.</p> <p>The contract runs for 10 years, with options for up to a further seven years which would take the total value to €2bn.</p> <p>The rail element of the contract will include refurbishing 24 <a class="intextlink" href="https://www.railwaygazette.com/stadler/2068.subject" rel="intextlink_0">Stadler</a> GTW diesel multiple-units to increase comfort and efficiency. The work includes the installation of toilets by October 2027, along with the provision of defibrillators and technical and cosmetic changes including new and cleaner engines. Another nine DMUs from the former Arnhem – Nijmegen concession will be added to the fleet from 2025, and a further four refurbished sets when Arriva starts operating a RegioExpress service from Arnhem to Doetinchem in 2028. These trainsets will run on hydrotreated vegetable oil from the start of the concession.</p> <p>All trains and buses will carry the region’s purple and green livery.</p> <p>‘With a long contract we can invest securely and grow our operations, ensuring we make a difference to passengers’, said Anne Hettinga, Managing Director of Arriva Nederland, on October 17. ‘We can also support the local transport authorities to achieve their sustainability targets.’</p></div><div id="storytext-end" class="storytext-end"></div> </div> </div> <div class="htmlContent"> </div> </div> <div class="topics"><div class="sleeve"><span class="topicsLabel"></span><h2>Topics</h2><ul class="topicsList"><li><a href="/arriva/2053.subject">Arriva</a></li><li><a href="/bus/2178.subject">Bus</a></li><li><a href="/netherlands/2160.subject">Netherlands</a></li><li><a href="/news/passenger">Passenger</a></li></ul></div></div> <div class="pageOptions"> <ul><!-- <li> <a data-facebook-share="true" data-share-url='https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="facebook" title="Share this on Facebook" rel="noopener noreferrer"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="twitter" title="Share this on Twitter" rel="noopener noreferrer"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="linkedin" title="Share this on Linked in" rel="noopener noreferrer"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article' data-share-title="Arriva wins Dutch train and bus operating contact" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp" rel="noopener noreferrer"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.railwaygazette.com%2fpassenger%2farriva-wins-dutch-train-and-bus-operating-contact%2f67651.article&e=Arriva+wins+Dutch+train+and+bus+operating+contact" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Arriva+wins+Dutch+train+and+bus+operating+contact&url=https%3a%2f%2fwww.railwaygazette.com%2fpassenger%2farriva-wins-dutch-train-and-bus-operating-contact%2f67651.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.railwaygazette.com%2fpassenger%2farriva-wins-dutch-train-and-bus-operating-contact%2f67651.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Arriva wins Dutch train and bus operating contact&amp;body=https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.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="/67651/bookmark"> </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> </div> </div> </div> </div> <div class="container bottomAdContainer restrictedcontent"> <div class="inner-sleeve"> <div class="bottomAd"> </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.railwaygazette.com/passenger/liege-maastricht-aachen-regional-services-finally-launched/66906.article" class="image"> <img alt="Three Countries train launch (Photo Arriva)" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/1/3/7/66137_threecountriestrainlaunchphotoarriva_941162.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/1/3/7/66137_threecountriestrainlaunchphotoarriva_941162.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/1/3/7/66137_threecountriestrainlaunchphotoarriva_941162.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/1/3/7/66137_threecountriestrainlaunchphotoarriva_941162.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/1/3/7/66137_threecountriestrainlaunchphotoarriva_941162.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/passenger/liege-maastricht-aachen-regional-services-finally-launched/66906.article">Liège – Maastricht – Aachen regional services finally launched</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-07-11T11:23:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-07-11T11:23:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p> EUROPE: A through regional passenger train service linking Liège in Belgium with Aachen in Germany via Maastricht in the Netherlands was finally launched on June 30. Branded as LIMAX for the cities served, the so-called Three Countries Service was originally expected to start running in 2018. ...</p> </div> </li> <li class=""> <a href="https://www.railwaygazette.com/business/investor-sees-genuine-growth-potential-as-db-completes-sale-of-arriva/66660.article" class="image"> <img alt="Arriva Czech Republic train (Photo Arriva Group)" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/4/3/4/65434_arrivaczechrepublictrainphotoarrivagroup_153403.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/4/3/4/65434_arrivaczechrepublictrainphotoarrivagroup_153403.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/4/3/4/65434_arrivaczechrepublictrainphotoarrivagroup_153403.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/4/3/4/65434_arrivaczechrepublictrainphotoarrivagroup_153403.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/4/3/4/65434_arrivaczechrepublictrainphotoarrivagroup_153403.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/business/investor-sees-genuine-growth-potential-as-db-completes-sale-of-arriva/66660.article">Investor sees ‘genuine growth potential’ as DB completes sale of Arriva</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-06-03T14:00:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-06-03T14:00:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p> EUROPE: The sale of Deutsche Bahn’s non-German public transport business Arriva to I Squared Capital has been completed, the companies announced on June 3. DB said it would now focus on rail transport within Germany, while I Squared said it sees opportunities to invest in decarbonisation. ...</p> </div> </li> <li class=""> <a href="https://www.railwaygazette.com/infrastructure/electrification-of-two-dutch-regional-railways-funded/66358.article" class="image"> <img alt="nl Arriva Stadler Wink and windmill" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/5/6/5/64565_nlarrivastadlerwinkandwindmill_710875.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/5/6/5/64565_nlarrivastadlerwinkandwindmill_710875.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/5/6/5/64565_nlarrivastadlerwinkandwindmill_710875.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/5/6/5/64565_nlarrivastadlerwinkandwindmill_710875.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/5/6/5/64565_nlarrivastadlerwinkandwindmill_710875.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/infrastructure/electrification-of-two-dutch-regional-railways-funded/66358.article">Electrification of two Dutch regional railways funded</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-04-23T04:35:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-04-23T04:35:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p>NETHERLANDS: The government has confirmed co-funding for the electrification for two regional lines in the provinces of Overijssel and Gelderland.</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.railwaygazette.com/67651/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"> <!-- 22-09-22 - New ENHANCED ADS unit--> <!-- /13644946/RGI_MPU_C --> <div class="ad"> <div id='div-gpt-ad-1666188956933-0' style='min-width: 300px; min-height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1666188956933-0'); }); </script> </div></div> <!-- /210416249/RGI_MPU_C --> <!-- <div class="ad"> <div id='div-gpt-ad-1572343283773-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1572343283773-0'); }); </script> </div> </div>--> <!--<div class="ad">--> <!-- /13644946/RGI_MPU_C <div id='div-gpt-ad-1602146167342-0' style='width: 300px; height: 250px;'>   <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602146167342-0'); } );   </script> </div> </div>--> </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"><div class="inner-sleeve"><div id="rhcreflow-tabletportrait"></div><div id="rhcreflow-mobile"></div></div></div><div id="mobile-drop-zone"></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="brand-list"> <ul> <li> <a href="https://www.railwaygazette.com"> <svg id="Group_1156" data-name="Group 1156" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="212" height="50" viewBox="0 0 212 50"> <rect id="Rectangle_1553" data-name="Rectangle 1553" width="212" height="50" fill="#fff"/> <g id="Group_1155" data-name="Group 1155"> <path id="Path_2131" data-name="Path 2131" d="M25,0A24.993,24.993,0,0,0,5.3,40.378H34.725a3.2,3.2,0,0,0,3.19-3.19V35.41h-7.76a5.781,5.781,0,0,1-5.775-5.775V14.155a5.738,5.738,0,0,1,1-3.243H15.367a3.194,3.194,0,0,0-3.19,3.19V35.4H9.644V14.1a5.729,5.729,0,0,1,5.723-5.723H34.725A5.729,5.729,0,0,1,40.447,14.1V37.188a5.729,5.729,0,0,1-5.722,5.722H7.566A25,25,0,1,0,25,0" fill="#005191"/> <path id="Path_2132" data-name="Path 2132" d="M34.725,10.912h-4.57a3.245,3.245,0,0,0-3.242,3.242V29.636a3.246,3.246,0,0,0,3.242,3.242h7.76V14.1a3.194,3.194,0,0,0-3.19-3.19" fill="#005191"/> <g id="Group_1151" data-name="Group 1151"> <path id="Path_2133" data-name="Path 2133" d="M61.792,25.954H59.531V10.628H65.3a6.432,6.432,0,0,1,3.983,1.011,3.959,3.959,0,0,1,1.291,3.316v.688a4.516,4.516,0,0,1-.742,2.745,3.822,3.822,0,0,1-2.293,1.367l3.746,6.2H68.659L65.214,19.97H61.792Zm6.522-10.72a4.79,4.79,0,0,0-.15-1.324,1.552,1.552,0,0,0-.5-.785,1.939,1.939,0,0,0-.925-.377,9.068,9.068,0,0,0-1.443-.1H61.792v5.3H65.3a9.068,9.068,0,0,0,1.443-.1,1.887,1.887,0,0,0,.925-.388,1.616,1.616,0,0,0,.5-.8,4.781,4.781,0,0,0,.15-1.324Z" fill="#1d1d1b"/> </g> <g id="Group_1152" data-name="Group 1152"> <path id="Path_2134" data-name="Path 2134" d="M81.747,24.1a1.83,1.83,0,0,1-.474,1.442,2.7,2.7,0,0,1-1.722.409H76.322a5.022,5.022,0,0,1-3.24-.828A3.073,3.073,0,0,1,72.1,22.64v-.474a2.979,2.979,0,0,1,1.065-2.583,5.7,5.7,0,0,1,3.326-.775,7.881,7.881,0,0,1,2.024.2,3.791,3.791,0,0,1,1.076.442v-.646a5.128,5.128,0,0,0-.075-.937,1.194,1.194,0,0,0-.366-.667,1.93,1.93,0,0,0-.84-.409,6.335,6.335,0,0,0-1.5-.14q-.9,0-1.926.011t-1.755.032l.409-1.873q.6-.021,1.486-.032t1.786-.011a6.137,6.137,0,0,1,3.767.915,3.231,3.231,0,0,1,1.163,2.7Zm-7.535-1.485a1.385,1.385,0,0,0,.453,1.13,2.674,2.674,0,0,0,1.657.377h3.272V22.144a2.619,2.619,0,0,0-.086-.71.87.87,0,0,0-.345-.484,1.873,1.873,0,0,0-.753-.27,8.165,8.165,0,0,0-1.313-.085h-.5a7.543,7.543,0,0,0-1.173.075,1.812,1.812,0,0,0-.732.258.967.967,0,0,0-.377.484,2.258,2.258,0,0,0-.108.754Z" fill="#1d1d1b"/> <path id="Path_2135" data-name="Path 2135" d="M86.655,11.532a1.5,1.5,0,0,1-.334,1.087,1.941,1.941,0,0,1-2.174,0,1.492,1.492,0,0,1-.334-1.087,1.489,1.489,0,0,1,.334-1.087,1.936,1.936,0,0,1,2.174,0A1.493,1.493,0,0,1,86.655,11.532Zm-2.541,3.293h2.261V25.954H84.114Z" fill="#1d1d1b"/> <path id="Path_2136" data-name="Path 2136" d="M88.721,9.96h2.26V25.954h-2.26Z" fill="#1d1d1b"/> <path id="Path_2137" data-name="Path 2137" d="M100.367,17.538l-2.239,8.416H95.8L92.51,14.825h2.26l2.217,8.762,2.346-8.762h2.2l2.239,8.8,2.346-8.8h2.11l-3.358,11.129h-2.325Z" fill="#1d1d1b"/> </g> <g id="Group_1153" data-name="Group 1153"> <path id="Path_2138" data-name="Path 2138" d="M118.557,24.1a1.83,1.83,0,0,1-.474,1.442,2.693,2.693,0,0,1-1.721.409h-3.229a5.022,5.022,0,0,1-3.24-.828,3.07,3.07,0,0,1-.98-2.486v-.474a2.98,2.98,0,0,1,1.066-2.583,5.694,5.694,0,0,1,3.325-.775,7.876,7.876,0,0,1,2.024.2,3.787,3.787,0,0,1,1.077.442v-.646a5.122,5.122,0,0,0-.076-.937,1.183,1.183,0,0,0-.366-.667,1.92,1.92,0,0,0-.839-.409,6.338,6.338,0,0,0-1.5-.14q-.9,0-1.926.011t-1.755.032l.409-1.873q.6-.021,1.486-.032t1.786-.011a6.138,6.138,0,0,1,3.768.915,3.23,3.23,0,0,1,1.162,2.7Zm-7.534-1.485a1.388,1.388,0,0,0,.452,1.13,2.677,2.677,0,0,0,1.658.377H116.4V22.144a2.616,2.616,0,0,0-.087-.71.869.869,0,0,0-.344-.484,1.879,1.879,0,0,0-.753-.27,8.173,8.173,0,0,0-1.313-.085h-.5a7.543,7.543,0,0,0-1.173.075,1.812,1.812,0,0,0-.732.258.973.973,0,0,0-.377.484,2.286,2.286,0,0,0-.107.754Z" fill="#1d1d1b"/> <path id="Path_2139" data-name="Path 2139" d="M121.98,27.849q1.077.042,1.873.043h1.636a5.68,5.68,0,0,0,1.356-.14,2.028,2.028,0,0,0,.915-.474,1.855,1.855,0,0,0,.5-.915,6.021,6.021,0,0,0,.152-1.484v-.238c-.13.116-.273.23-.431.345a2.386,2.386,0,0,1-.592.3,4.463,4.463,0,0,1-.883.2,9.483,9.483,0,0,1-1.3.075,5.451,5.451,0,0,1-3.175-.785,3.16,3.16,0,0,1-1.109-2.767v-7.19h2.26V21.5a7.315,7.315,0,0,0,.054.948,1.352,1.352,0,0,0,.28.689,1.37,1.37,0,0,0,.711.419,4.919,4.919,0,0,0,1.323.14,7.472,7.472,0,0,0,1.486-.118,1.723,1.723,0,0,0,.86-.409,1.473,1.473,0,0,0,.409-.754,5.157,5.157,0,0,0,.109-1.151V14.825h2.26V24.879a7.606,7.606,0,0,1-.291,2.259,3.352,3.352,0,0,1-.926,1.507,3.845,3.845,0,0,1-1.614.85,8.872,8.872,0,0,1-2.335.27H123.7q-.452,0-.969-.011c-.344-.007-.732-.019-1.162-.032Z" fill="#1d1d1b"/> <path id="Path_2140" data-name="Path 2140" d="M149.749,17.925v6.006a2.7,2.7,0,0,1-.345,1.528,1.29,1.29,0,0,1-1.141.5H144.54a10.11,10.11,0,0,1-3.165-.419A4.447,4.447,0,0,1,139.4,24.3a4.576,4.576,0,0,1-1-2.056,13.16,13.16,0,0,1-.28-2.873V17.194a13.247,13.247,0,0,1,.27-2.81,4.279,4.279,0,0,1,3.013-3.358,10.422,10.422,0,0,1,3.326-.441h2.39q1.1,0,2.195.043l-.366,2.023c-.6-.014-1.123-.025-1.56-.032s-.826-.011-1.163-.011h-1.647a10.141,10.141,0,0,0-2.066.172,2.3,2.3,0,0,0-1.249.667,2.773,2.773,0,0,0-.613,1.421,14.513,14.513,0,0,0-.161,2.411v2a13.058,13.058,0,0,0,.183,2.454,2.828,2.828,0,0,0,.634,1.41,2.2,2.2,0,0,0,1.227.636,10.455,10.455,0,0,0,1.938.15h3.014V19.863h-2.842l.409-1.938Z" fill="#1d1d1b"/> <path id="Path_2141" data-name="Path 2141" d="M161.309,24.1a1.834,1.834,0,0,1-.474,1.442,2.7,2.7,0,0,1-1.722.409h-3.229a5.022,5.022,0,0,1-3.24-.828,3.073,3.073,0,0,1-.979-2.486v-.474a2.979,2.979,0,0,1,1.065-2.583,5.7,5.7,0,0,1,3.326-.775,7.867,7.867,0,0,1,2.023.2,3.787,3.787,0,0,1,1.077.442v-.646a5.121,5.121,0,0,0-.076-.937,1.183,1.183,0,0,0-.366-.667,1.92,1.92,0,0,0-.839-.409,6.335,6.335,0,0,0-1.5-.14q-.9,0-1.926.011c-.682.007-1.268.018-1.755.032l.409-1.873q.6-.021,1.485-.032t1.787-.011a6.137,6.137,0,0,1,3.767.915,3.231,3.231,0,0,1,1.163,2.7Zm-7.535-1.485a1.388,1.388,0,0,0,.452,1.13,2.677,2.677,0,0,0,1.658.377h3.272V22.144a2.619,2.619,0,0,0-.086-.71.875.875,0,0,0-.345-.484,1.873,1.873,0,0,0-.753-.27,8.173,8.173,0,0,0-1.313-.085h-.495a7.566,7.566,0,0,0-1.174.075,1.823,1.823,0,0,0-.732.258.971.971,0,0,0-.376.484,2.258,2.258,0,0,0-.108.754Z" fill="#1d1d1b"/> <path id="Path_2142" data-name="Path 2142" d="M165.915,24.082h6.78l-.387,1.872H163.2V24.19l6.48-7.492h-6.458l.387-1.873h8.762V16.59Z" fill="#1d1d1b"/> <path id="Path_2143" data-name="Path 2143" d="M176.463,21.219a8.867,8.867,0,0,0,.1,1.464,1.72,1.72,0,0,0,.387.882,1.5,1.5,0,0,0,.807.442,6.474,6.474,0,0,0,1.378.118h1.582q.957,0,2.486-.043l-.387,1.872c-.445.015-.826.025-1.141.033s-.606.01-.872.01h-1.668a7.265,7.265,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.507-1.011,3.562,3.562,0,0,1-.743-1.593,10.3,10.3,0,0,1-.193-2.078v-1.2a10.879,10.879,0,0,1,.2-2.207,3.831,3.831,0,0,1,.754-1.657,3.476,3.476,0,0,1,1.528-1.044,7.409,7.409,0,0,1,2.55-.366,6.969,6.969,0,0,1,2.357.334,3.6,3.6,0,0,1,1.443.9,3.023,3.023,0,0,1,.721,1.313,6.077,6.077,0,0,1,.194,1.539v.323a6.9,6.9,0,0,1-.086,1.227,1.623,1.623,0,0,1-.28.7.88.88,0,0,1-.484.323,2.79,2.79,0,0,1-.7.076Zm2.669-4.952a5.838,5.838,0,0,0-1.378.13,1.471,1.471,0,0,0-.807.484,2,2,0,0,0-.387.98,10.839,10.839,0,0,0-.1,1.614h5.36v-.732a5.181,5.181,0,0,0-.118-1.195,1.469,1.469,0,0,0-.431-.764,1.832,1.832,0,0,0-.829-.4A6.019,6.019,0,0,0,179.132,16.267Z" fill="#1d1d1b"/> <path id="Path_2144" data-name="Path 2144" d="M186,12.2l2.261-.409v3.035h4.089l-.387,1.873h-3.7v5.166a7.223,7.223,0,0,0,.075,1.163,1.326,1.326,0,0,0,.29.689,1.12,1.12,0,0,0,.614.323,5,5,0,0,0,1.022.086h1.96l-.388,1.829h-1.55a9.594,9.594,0,0,1-2.121-.193,2.775,2.775,0,0,1-1.312-.656,2.444,2.444,0,0,1-.668-1.238A8.618,8.618,0,0,1,186,21.929Z" fill="#1d1d1b"/> <path id="Path_2145" data-name="Path 2145" d="M193.9,12.2l2.261-.409v3.035h4.089l-.387,1.873h-3.7v5.166a7.225,7.225,0,0,0,.075,1.163,1.326,1.326,0,0,0,.29.689,1.12,1.12,0,0,0,.614.323,5,5,0,0,0,1.022.086h1.959l-.387,1.829h-1.55a9.594,9.594,0,0,1-2.121-.193,2.783,2.783,0,0,1-1.313-.656,2.45,2.45,0,0,1-.667-1.238,8.619,8.619,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <path id="Path_2146" data-name="Path 2146" d="M203.8,21.219a8.867,8.867,0,0,0,.1,1.464,1.729,1.729,0,0,0,.388.882,1.494,1.494,0,0,0,.806.442,6.48,6.48,0,0,0,1.378.118h1.583q.957,0,2.486-.043l-.388,1.872c-.444.015-.825.025-1.14.033s-.607.01-.872.01H206.47a7.273,7.273,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.506-1.011,3.574,3.574,0,0,1-.744-1.593,10.374,10.374,0,0,1-.193-2.078v-1.2a10.8,10.8,0,0,1,.205-2.207,3.83,3.83,0,0,1,.753-1.657,3.476,3.476,0,0,1,1.528-1.044,7.415,7.415,0,0,1,2.551-.366,6.977,6.977,0,0,1,2.357.334,3.6,3.6,0,0,1,1.442.9,3.036,3.036,0,0,1,.722,1.313,6.078,6.078,0,0,1,.193,1.539v.323a6.81,6.81,0,0,1-.086,1.227,1.6,1.6,0,0,1-.28.7.876.876,0,0,1-.484.323,2.776,2.776,0,0,1-.7.076Zm2.669-4.952a5.843,5.843,0,0,0-1.378.13,1.464,1.464,0,0,0-.806.484,2.014,2.014,0,0,0-.388.98,10.839,10.839,0,0,0-.1,1.614h5.36v-.732a5.181,5.181,0,0,0-.118-1.195,1.462,1.462,0,0,0-.431-.764,1.833,1.833,0,0,0-.828-.4A6.035,6.035,0,0,0,206.47,16.267Z" fill="#1d1d1b"/> </g> <g id="Group_1154" data-name="Group 1154"> <path id="Path_2147" data-name="Path 2147" d="M60.394,33.579v7.213H59.331V33.579Z" fill="#1d1d1b"/> <path id="Path_2148" data-name="Path 2148" d="M62.937,33.579l3.718,5.44v-5.44h1.063v7.213h-.962l-3.7-5.41v5.41H61.995V33.579Z" fill="#1d1d1b"/> <path id="Path_2149" data-name="Path 2149" d="M74.992,33.579l-.193.952H72.4v6.261H71.335V34.531H68.8L69,33.579Z" fill="#1d1d1b"/> <path id="Path_2150" data-name="Path 2150" d="M81.019,33.579l-.192.952H77.139v2.077h3.627l-.193.952H77.139v2.279h3.88l-.192.953H76.076V33.579Z" fill="#1d1d1b"/> <path id="Path_2151" data-name="Path 2151" d="M83.39,40.792H82.326V33.579h2.715a3.02,3.02,0,0,1,1.874.476,1.864,1.864,0,0,1,.608,1.56v.325a2.125,2.125,0,0,1-.35,1.291,1.8,1.8,0,0,1-1.078.643l1.762,2.918H86.621L85,37.976H83.39Zm3.069-5.045a2.246,2.246,0,0,0-.071-.623.728.728,0,0,0-.233-.37.911.911,0,0,0-.435-.177,4.165,4.165,0,0,0-.679-.046H83.39v2.492h1.651a4.294,4.294,0,0,0,.679-.045.9.9,0,0,0,.435-.183.756.756,0,0,0,.233-.375,2.246,2.246,0,0,0,.071-.623Z" fill="#1d1d1b"/> <path id="Path_2152" data-name="Path 2152" d="M89.883,33.579l3.718,5.44v-5.44h1.063v7.213H93.7L90,35.382v5.41H88.941V33.579Z" fill="#1d1d1b"/> <path id="Path_2153" data-name="Path 2153" d="M100.489,38.725H97.521l-.75,2.067H95.7l2.755-7.213h1.175l2.755,7.213h-1.134Zm-2.644-.912h2.31L99,34.653Z" fill="#1d1d1b"/> <path id="Path_2154" data-name="Path 2154" d="M109.079,33.579l-.193.952h-2.4v6.261h-1.064V34.531H102.89l.192-.952Z" fill="#1d1d1b"/> <path id="Path_2155" data-name="Path 2155" d="M111.227,33.579v7.213h-1.064V33.579Z" fill="#1d1d1b"/> <path id="Path_2156" data-name="Path 2156" d="M115.7,40.974a4.79,4.79,0,0,1-1.565-.213,2.054,2.054,0,0,1-.942-.633,2.336,2.336,0,0,1-.461-1.043,7.616,7.616,0,0,1-.122-1.444v-.922a7.558,7.558,0,0,1,.117-1.4,2.412,2.412,0,0,1,.451-1.048,2.08,2.08,0,0,1,.937-.659,4.587,4.587,0,0,1,1.585-.228,4.813,4.813,0,0,1,1.565.213,2.054,2.054,0,0,1,.942.633,2.334,2.334,0,0,1,.461,1.044,7.517,7.517,0,0,1,.122,1.443v.922a7.558,7.558,0,0,1-.117,1.4,2.4,2.4,0,0,1-.451,1.049,2.089,2.089,0,0,1-.936.658A4.577,4.577,0,0,1,115.7,40.974Zm0-.922a4.648,4.648,0,0,0,.988-.086,1.078,1.078,0,0,0,.6-.35,1.537,1.537,0,0,0,.3-.744,8,8,0,0,0,.08-1.271V36.76a7.909,7.909,0,0,0-.08-1.261,1.546,1.546,0,0,0-.3-.745,1.108,1.108,0,0,0-.6-.355,4.419,4.419,0,0,0-.988-.091,4.625,4.625,0,0,0-.987.086,1.077,1.077,0,0,0-.6.35,1.526,1.526,0,0,0-.3.745,7.96,7.96,0,0,0-.081,1.271V37.6a7.9,7.9,0,0,0,.081,1.261,1.518,1.518,0,0,0,.3.744,1.1,1.1,0,0,0,.6.355A4.339,4.339,0,0,0,115.7,40.052Z" fill="#1d1d1b"/> <path id="Path_2157" data-name="Path 2157" d="M121.124,33.579l3.718,5.44v-5.44H125.9v7.213h-.962l-3.7-5.41v5.41h-1.064V33.579Z" fill="#1d1d1b"/> <path id="Path_2158" data-name="Path 2158" d="M131.72,38.725h-2.968L128,40.792h-1.074l2.756-7.213h1.175l2.755,7.213H132.48Zm-2.644-.912h2.31l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2159" data-name="Path 2159" d="M135.711,33.579v6.26h3.657l-.192.953h-4.528V33.579Z" fill="#1d1d1b"/> </g> </g> </svg> </a> </li> <li> <a href="https://www.railwaygazette.com/metro-report"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="187.227" height="50.27" viewBox="0 0 187.227 50.27"> <g id="Group_1169" data-name="Group 1169" transform="translate(0.5)"> <rect id="Rectangle_1567" data-name="Rectangle 1567" width="187" height="50" transform="translate(-0.5 0.27)" fill="none"/> <g id="Group_1165" data-name="Group 1165"> <path id="Path_2267" data-name="Path 2267" d="M66.869,19.367,62.8,12.048V23.737H60.54V8.41h2.519l4.908,8.783L72.595,8.41h2.562V23.737H72.9V11.854l-4.025,7.512Z" fill="#1d1d1b"/> <path id="Path_2268" data-name="Path 2268" d="M79.806,19a8.97,8.97,0,0,0,.1,1.464,1.732,1.732,0,0,0,.387.883,1.511,1.511,0,0,0,.808.441,6.409,6.409,0,0,0,1.378.118h1.582q.957,0,2.486-.043l-.387,1.873c-.445.014-.826.025-1.141.032s-.607.011-.872.011H82.476a7.3,7.3,0,0,1-2.487-.355,3.5,3.5,0,0,1-1.507-1.012,3.567,3.567,0,0,1-.742-1.593,10.28,10.28,0,0,1-.194-2.077V17.537a10.787,10.787,0,0,1,.205-2.206,3.829,3.829,0,0,1,.753-1.658,3.464,3.464,0,0,1,1.529-1.043,7.383,7.383,0,0,1,2.55-.367,6.977,6.977,0,0,1,2.357.334,3.607,3.607,0,0,1,1.442.9,3.037,3.037,0,0,1,.722,1.313,6.086,6.086,0,0,1,.194,1.54v.322a6.8,6.8,0,0,1-.087,1.227,1.621,1.621,0,0,1-.279.7.885.885,0,0,1-.484.323,2.844,2.844,0,0,1-.7.075Zm2.67-4.951a5.9,5.9,0,0,0-1.378.129,1.47,1.47,0,0,0-.808.484,2.018,2.018,0,0,0-.387.98,10.976,10.976,0,0,0-.1,1.614h5.361v-.731a5.169,5.169,0,0,0-.119-1.195,1.458,1.458,0,0,0-.431-.764,1.833,1.833,0,0,0-.829-.4,6.086,6.086,0,0,0-1.312-.118" fill="#1d1d1b"/> <path id="Path_2269" data-name="Path 2269" d="M89.342,9.981,91.6,9.573v3.034h4.09l-.388,1.874H91.6v5.166a7.336,7.336,0,0,0,.075,1.162,1.334,1.334,0,0,0,.291.689,1.114,1.114,0,0,0,.613.323,4.947,4.947,0,0,0,1.022.086h1.96l-.388,1.83h-1.55a9.577,9.577,0,0,1-2.12-.194,2.765,2.765,0,0,1-1.314-.657,2.431,2.431,0,0,1-.667-1.237,8.619,8.619,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <path id="Path_2270" data-name="Path 2270" d="M97.221,23.737V16.116a4.037,4.037,0,0,1,.3-1.646,2.763,2.763,0,0,1,.851-1.1,3.569,3.569,0,0,1,1.323-.614,7.167,7.167,0,0,1,1.722-.193h1.593c.374,0,.682.007.926.021l-.387,1.873h-.216c-.129,0-.287,0-.473-.011s-.387-.01-.6-.01h-.624a3.961,3.961,0,0,0-1.185.14A1.289,1.289,0,0,0,99.8,15a1.405,1.405,0,0,0-.269.689,7.126,7.126,0,0,0-.054.925v7.126Z" fill="#1d1d1b"/> <path id="Path_2271" data-name="Path 2271" d="M110.179,12.263a9.859,9.859,0,0,1,2.38.248,3.435,3.435,0,0,1,1.6.861,3.615,3.615,0,0,1,.915,1.636,9.575,9.575,0,0,1,.291,2.572v1.184a9.578,9.578,0,0,1-.291,2.573,3.62,3.62,0,0,1-.915,1.636,3.435,3.435,0,0,1-1.6.861,11.58,11.58,0,0,1-4.758,0,3.434,3.434,0,0,1-1.6-.861,3.639,3.639,0,0,1-.915-1.636,9.622,9.622,0,0,1-.29-2.573V17.58a9.62,9.62,0,0,1,.29-2.572,3.634,3.634,0,0,1,.915-1.636,3.434,3.434,0,0,1,1.6-.861,9.841,9.841,0,0,1,2.378-.248m2.885,5.317a11.067,11.067,0,0,0-.118-1.819,2.16,2.16,0,0,0-.431-1.044,1.514,1.514,0,0,0-.871-.484,9.147,9.147,0,0,0-2.929,0,1.517,1.517,0,0,0-.871.484,2.15,2.15,0,0,0-.43,1.044,11.049,11.049,0,0,0-.119,1.819v1.184a11.055,11.055,0,0,0,.119,1.82,2.142,2.142,0,0,0,.43,1.043,1.513,1.513,0,0,0,.871.485,9.147,9.147,0,0,0,2.929,0,1.509,1.509,0,0,0,.871-.485,2.151,2.151,0,0,0,.431-1.043,11.072,11.072,0,0,0,.118-1.82Z" fill="#1d1d1b"/> <path id="Path_2272" data-name="Path 2272" d="M125.248,23.737h-2.261V8.41h5.77a6.429,6.429,0,0,1,3.983,1.012,3.96,3.96,0,0,1,1.291,3.315v.688a4.516,4.516,0,0,1-.743,2.745A3.82,3.82,0,0,1,131,17.538l3.745,6.2h-2.626l-3.444-5.985h-3.423Zm6.523-10.72a4.776,4.776,0,0,0-.151-1.324,1.56,1.56,0,0,0-.495-.786,1.963,1.963,0,0,0-.926-.377,9.068,9.068,0,0,0-1.442-.1h-3.509v5.3h3.509a8.938,8.938,0,0,0,1.442-.1,1.881,1.881,0,0,0,.926-.387,1.62,1.62,0,0,0,.495-.8,4.776,4.776,0,0,0,.151-1.324Z" fill="#1d1d1b"/> <path id="Path_2273" data-name="Path 2273" d="M138.271,19a8.971,8.971,0,0,0,.1,1.464,1.724,1.724,0,0,0,.387.883,1.511,1.511,0,0,0,.808.441,6.409,6.409,0,0,0,1.378.118h1.582q.959,0,2.486-.043l-.387,1.873c-.445.014-.826.025-1.141.032s-.607.011-.872.011h-1.668a7.286,7.286,0,0,1-2.486-.355,3.492,3.492,0,0,1-1.508-1.012,3.556,3.556,0,0,1-.742-1.593,10.28,10.28,0,0,1-.194-2.077V17.537a10.862,10.862,0,0,1,.2-2.206,3.841,3.841,0,0,1,.754-1.658A3.464,3.464,0,0,1,138.5,12.63a7.379,7.379,0,0,1,2.55-.367,6.977,6.977,0,0,1,2.357.334,3.606,3.606,0,0,1,1.442.9,3.036,3.036,0,0,1,.722,1.313,6.086,6.086,0,0,1,.194,1.54v.322a6.8,6.8,0,0,1-.087,1.227,1.621,1.621,0,0,1-.28.7.878.878,0,0,1-.484.323,2.833,2.833,0,0,1-.7.075Zm2.67-4.951a5.9,5.9,0,0,0-1.378.129,1.47,1.47,0,0,0-.808.484,2.008,2.008,0,0,0-.387.98,10.977,10.977,0,0,0-.1,1.614h5.36v-.731a5.175,5.175,0,0,0-.118-1.195,1.458,1.458,0,0,0-.431-.764,1.833,1.833,0,0,0-.829-.4,6.086,6.086,0,0,0-1.312-.118" fill="#1d1d1b"/> <path id="Path_2274" data-name="Path 2274" d="M152.952,12.264a9.615,9.615,0,0,1,2.347.247,3.3,3.3,0,0,1,1.581.872,3.681,3.681,0,0,1,.894,1.668,10.426,10.426,0,0,1,.28,2.637v.969a11.512,11.512,0,0,1-.226,2.443,3.746,3.746,0,0,1-.8,1.679,3.4,3.4,0,0,1-1.56.979,8.332,8.332,0,0,1-2.54.323,5.167,5.167,0,0,1-1.712-.247,3.337,3.337,0,0,1-1.13-.635V27.5h-2.282V17.58a9.466,9.466,0,0,1,.291-2.55,3.628,3.628,0,0,1,.915-1.636,3.51,3.51,0,0,1,1.593-.873,9.223,9.223,0,0,1,2.346-.257m-.021,9.966a6.581,6.581,0,0,0,1.453-.129,1.508,1.508,0,0,0,.86-.517,2.188,2.188,0,0,0,.41-1.087,14.072,14.072,0,0,0,.1-1.84v-.969a13.072,13.072,0,0,0-.108-1.883,2.189,2.189,0,0,0-.42-1.077,1.484,1.484,0,0,0-.861-.495,8.6,8.6,0,0,0-2.852,0,1.576,1.576,0,0,0-.883.484,2.093,2.093,0,0,0-.441,1.044,11.04,11.04,0,0,0-.119,1.819v1.528a7.557,7.557,0,0,0,.13,1.551,2.021,2.021,0,0,0,.452.958,1.661,1.661,0,0,0,.882.484,6.371,6.371,0,0,0,1.4.129" fill="#1d1d1b"/> <path id="Path_2275" data-name="Path 2275" d="M165.071,12.263a9.844,9.844,0,0,1,2.379.248,3.439,3.439,0,0,1,1.6.861,3.623,3.623,0,0,1,.914,1.636,9.535,9.535,0,0,1,.291,2.572v1.184a9.537,9.537,0,0,1-.291,2.573,3.628,3.628,0,0,1-.914,1.636,3.439,3.439,0,0,1-1.6.861,11.575,11.575,0,0,1-4.757,0,3.429,3.429,0,0,1-1.6-.861,3.639,3.639,0,0,1-.915-1.636,9.623,9.623,0,0,1-.29-2.573V17.58a9.62,9.62,0,0,1,.29-2.572,3.634,3.634,0,0,1,.915-1.636,3.429,3.429,0,0,1,1.6-.861,9.835,9.835,0,0,1,2.378-.248m2.885,5.317a11.18,11.18,0,0,0-.118-1.819,2.16,2.16,0,0,0-.431-1.044,1.52,1.52,0,0,0-.872-.484,9.141,9.141,0,0,0-2.928,0,1.517,1.517,0,0,0-.871.484,2.15,2.15,0,0,0-.431,1.044,11.051,11.051,0,0,0-.119,1.819v1.184a11.056,11.056,0,0,0,.119,1.82,2.142,2.142,0,0,0,.431,1.043,1.513,1.513,0,0,0,.871.485,9.141,9.141,0,0,0,2.928,0,1.515,1.515,0,0,0,.872-.485,2.151,2.151,0,0,0,.431-1.043,11.185,11.185,0,0,0,.118-1.82Z" fill="#1d1d1b"/> <path id="Path_2276" data-name="Path 2276" d="M172.347,23.737V16.116a4.037,4.037,0,0,1,.3-1.646,2.772,2.772,0,0,1,.851-1.1,3.574,3.574,0,0,1,1.324-.614,7.155,7.155,0,0,1,1.722-.193h1.593q.56,0,.925.021l-.387,1.873h-.215c-.129,0-.288,0-.474-.011s-.388-.01-.6-.01h-.624a3.944,3.944,0,0,0-1.184.14,1.287,1.287,0,0,0-.646.419,1.415,1.415,0,0,0-.269.689,7.127,7.127,0,0,0-.054.925v7.126Z" fill="#1d1d1b"/> <path id="Path_2277" data-name="Path 2277" d="M180.376,9.981l2.26-.408v3.034h4.091l-.388,1.874h-3.7v5.166a7.2,7.2,0,0,0,.076,1.162,1.334,1.334,0,0,0,.29.689,1.121,1.121,0,0,0,.613.323,4.95,4.95,0,0,0,1.023.086H186.6l-.387,1.83h-1.55a9.57,9.57,0,0,1-2.12-.194,2.761,2.761,0,0,1-1.314-.657,2.431,2.431,0,0,1-.667-1.237,8.618,8.618,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <rect id="Rectangle_1568" data-name="Rectangle 1568" width="1.064" height="7.213" transform="translate(60.34 31.361)" fill="#1d1d1b"/> <path id="Path_2278" data-name="Path 2278" d="M63.956,31.361l3.718,5.44v-5.44h1.064v7.213h-.963l-3.7-5.41v5.41H63.014V31.361Z" fill="#1d1d1b"/> <path id="Path_2279" data-name="Path 2279" d="M76.011,31.361l-.193.952h-2.4v6.26H72.354v-6.26H69.821l.192-.952Z" fill="#1d1d1b"/> <path id="Path_2280" data-name="Path 2280" d="M82.038,31.361l-.193.952H78.158V34.39h3.627l-.192.952H78.158v2.279h3.88l-.193.952H77.094V31.361Z" fill="#1d1d1b"/> <path id="Path_2281" data-name="Path 2281" d="M84.418,38.573H83.355V31.361h2.714a3.03,3.03,0,0,1,1.875.476,1.863,1.863,0,0,1,.607,1.56v.324a2.126,2.126,0,0,1-.349,1.292,1.8,1.8,0,0,1-1.079.643l1.763,2.917H87.65l-1.621-2.815H84.418Zm3.07-5.044a2.251,2.251,0,0,0-.071-.623.734.734,0,0,0-.233-.37.925.925,0,0,0-.436-.177,4.271,4.271,0,0,0-.679-.046H84.418v2.492h1.651a4.156,4.156,0,0,0,.679-.046.88.88,0,0,0,.436-.182.763.763,0,0,0,.233-.375,2.241,2.241,0,0,0,.071-.623Z" fill="#1d1d1b"/> <path id="Path_2282" data-name="Path 2282" d="M90.912,31.361l3.718,5.44v-5.44h1.064v7.213H94.73l-3.7-5.41v5.41H89.969V31.361Z" fill="#1d1d1b"/> <path id="Path_2283" data-name="Path 2283" d="M101.517,36.507H98.549L97.8,38.574H96.726l2.755-7.213h1.176l2.755,7.213h-1.135ZM98.874,35.6h2.31l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2284" data-name="Path 2284" d="M110.108,31.361l-.193.952h-2.4v6.26h-1.064v-6.26h-2.533l.192-.952Z" fill="#1d1d1b"/> <rect id="Rectangle_1569" data-name="Rectangle 1569" width="1.064" height="7.213" transform="translate(111.192 31.361)" fill="#1d1d1b"/> <path id="Path_2285" data-name="Path 2285" d="M116.733,38.756a4.782,4.782,0,0,1-1.565-.213,2.054,2.054,0,0,1-.942-.633,2.341,2.341,0,0,1-.461-1.043,7.609,7.609,0,0,1-.122-1.444V34.5a7.55,7.55,0,0,1,.117-1.4,2.4,2.4,0,0,1,.45-1.049,2.082,2.082,0,0,1,.937-.658,4.547,4.547,0,0,1,1.586-.229,4.79,4.79,0,0,1,1.565.213,2.054,2.054,0,0,1,.942.633,2.35,2.35,0,0,1,.461,1.044,7.608,7.608,0,0,1,.121,1.444v.921a7.564,7.564,0,0,1-.116,1.4,2.41,2.41,0,0,1-.45,1.049,2.1,2.1,0,0,1-.938.658,4.563,4.563,0,0,1-1.585.228m0-.922a4.632,4.632,0,0,0,.987-.086,1.077,1.077,0,0,0,.6-.349,1.526,1.526,0,0,0,.3-.745,7.978,7.978,0,0,0,.081-1.271v-.841a7.892,7.892,0,0,0-.081-1.261,1.526,1.526,0,0,0-.3-.745,1.1,1.1,0,0,0-.6-.355,4.411,4.411,0,0,0-.987-.09,4.577,4.577,0,0,0-.988.086,1.071,1.071,0,0,0-.6.349,1.532,1.532,0,0,0-.3.744,8.132,8.132,0,0,0-.08,1.272v.841a8.021,8.021,0,0,0,.08,1.261,1.532,1.532,0,0,0,.3.744,1.1,1.1,0,0,0,.6.355,4.355,4.355,0,0,0,.988.091" fill="#1d1d1b"/> <path id="Path_2286" data-name="Path 2286" d="M122.152,31.361l3.718,5.44v-5.44h1.064v7.213h-.963l-3.7-5.41v5.41H121.21V31.361Z" fill="#1d1d1b"/> <path id="Path_2287" data-name="Path 2287" d="M132.759,36.507h-2.968l-.75,2.067h-1.074l2.756-7.213H131.9l2.756,7.213h-1.134Zm-2.644-.912h2.309l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2288" data-name="Path 2288" d="M136.75,31.361v6.26h3.657l-.192.952h-4.528V31.361Z" fill="#1d1d1b"/> <path id="Path_2289" data-name="Path 2289" d="M25.273,0a25,25,0,1,0,6.2,49.224V29.946h-.016V13.633a3.2,3.2,0,0,0-3.193-3.193H25.053a3.2,3.2,0,0,0-3.193,3.193V35.165H19.327V29.958h0V13.644a3.2,3.2,0,0,0-3.193-3.193h-3.21a3.2,3.2,0,0,0-3.193,3.193V35.168H7.2V13.644a5.731,5.731,0,0,1,5.725-5.725h3.21a5.712,5.712,0,0,1,4.456,2.139,5.718,5.718,0,0,1,4.466-2.151h3.209a5.712,5.712,0,0,1,4.552,2.267,5.712,5.712,0,0,1,4.379-2.046h5.418V10.66H37.193A3.194,3.194,0,0,0,34,13.85V48.43A25,25,0,0,0,25.273,0" fill="#009254"/> </g> </g> </svg> </a> </li> <li> <a href="https://www.railwaygazette.com/uk"> <svg id="rail_business_uk_small" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="219" height="50" viewBox="0 0 219 50"> <rect id="Rectangle_1554" data-name="Rectangle 1554" width="219" height="50" fill="#fff"/> <g id="Group_1157" data-name="Group 1157"> <path id="Path_2160" data-name="Path 2160" d="M62.156,31.85H59.9V16.523h5.769a6.425,6.425,0,0,1,3.983,1.012,3.956,3.956,0,0,1,1.291,3.314v.69a4.513,4.513,0,0,1-.742,2.744A3.809,3.809,0,0,1,67.9,25.65l3.746,6.2H69.023l-3.445-5.985H62.156Zm6.522-10.72a4.738,4.738,0,0,0-.151-1.324,1.542,1.542,0,0,0-.5-.786,1.949,1.949,0,0,0-.925-.377,9.082,9.082,0,0,0-1.443-.1H62.156v5.295h3.508a8.952,8.952,0,0,0,1.443-.1,1.886,1.886,0,0,0,.925-.387,1.606,1.606,0,0,0,.5-.8,4.738,4.738,0,0,0,.151-1.324Z" fill="#1d1d1b"/> <path id="Path_2161" data-name="Path 2161" d="M82.111,30a1.833,1.833,0,0,1-.473,1.442,2.694,2.694,0,0,1-1.723.409H76.686a5.017,5.017,0,0,1-3.24-.829,3.073,3.073,0,0,1-.979-2.486v-.474a2.975,2.975,0,0,1,1.066-2.582,5.694,5.694,0,0,1,3.325-.775,7.836,7.836,0,0,1,2.024.2,3.773,3.773,0,0,1,1.077.441V24.7a5.114,5.114,0,0,0-.076-.937,1.186,1.186,0,0,0-.366-.667,1.9,1.9,0,0,0-.84-.409,6.273,6.273,0,0,0-1.5-.14q-.9,0-1.927.01t-1.755.032l.409-1.872q.6-.021,1.486-.032t1.787-.011a6.139,6.139,0,0,1,3.767.914,3.235,3.235,0,0,1,1.162,2.7Zm-7.534-1.485a1.385,1.385,0,0,0,.452,1.129,2.662,2.662,0,0,0,1.657.377h3.273V28.04a2.616,2.616,0,0,0-.087-.71.871.871,0,0,0-.344-.485,1.88,1.88,0,0,0-.753-.269,8.055,8.055,0,0,0-1.314-.086h-.494a7.674,7.674,0,0,0-1.174.075,1.827,1.827,0,0,0-.732.259.967.967,0,0,0-.377.484,2.262,2.262,0,0,0-.107.753Z" fill="#1d1d1b"/> <path id="Path_2162" data-name="Path 2162" d="M87,17.427a1.493,1.493,0,0,1-.334,1.087,1.937,1.937,0,0,1-2.175,0,1.489,1.489,0,0,1-.333-1.087,1.492,1.492,0,0,1,.333-1.087,1.937,1.937,0,0,1,2.175,0A1.5,1.5,0,0,1,87,17.427m-2.541,3.294h2.261V31.85H84.457Z" fill="#1d1d1b"/> <rect id="Rectangle_1555" data-name="Rectangle 1555" width="2.26" height="15.995" transform="translate(89.064 15.856)" fill="#1d1d1b"/> <path id="Path_2163" data-name="Path 2163" d="M99.2,16.523h6.243a5.278,5.278,0,0,1,3.467.926,3.607,3.607,0,0,1,1.075,2.884V20.5a3.957,3.957,0,0,1-.494,2.056,2.9,2.9,0,0,1-1.615,1.217,3.258,3.258,0,0,1,1.841,1.172,3.8,3.8,0,0,1,.7,2.4V27.7a3.707,3.707,0,0,1-1.313,3.164,5.849,5.849,0,0,1-3.6.991H99.2Zm8.482,3.854a1.762,1.762,0,0,0-.528-1.443,2.712,2.712,0,0,0-1.711-.431h-3.982v4.37h3.724a2.809,2.809,0,0,0,1.926-.527,2.172,2.172,0,0,0,.571-1.668Zm-6.221,9.493h4.047a2.985,2.985,0,0,0,1.97-.506,2.329,2.329,0,0,0,.569-1.8v-.279a2.426,2.426,0,0,0-.613-1.894,3.189,3.189,0,0,0-2.1-.539h-3.875Z" fill="#1d1d1b"/> <path id="Path_2164" data-name="Path 2164" d="M117.157,32.195a6.646,6.646,0,0,1-3.66-.818,3.112,3.112,0,0,1-1.227-2.8V20.72h2.261v7.406a6.14,6.14,0,0,0,.064.947,1.3,1.3,0,0,0,.322.69,1.616,1.616,0,0,0,.786.419,5.949,5.949,0,0,0,1.454.14,5.8,5.8,0,0,0,1.442-.14,1.6,1.6,0,0,0,.775-.419,1.283,1.283,0,0,0,.323-.69,6.13,6.13,0,0,0,.065-.947V20.72h2.26v7.859a3.112,3.112,0,0,1-1.227,2.8,6.6,6.6,0,0,1-3.638.818" fill="#1d1d1b"/> <path id="Path_2165" data-name="Path 2165" d="M130.245,25.285a4.248,4.248,0,0,1,1.571.4,2.5,2.5,0,0,1,1.367,1.7,4.3,4.3,0,0,1,.119.98v.3a2.836,2.836,0,0,1-1.1,2.379,5.494,5.494,0,0,1-3.379.85q-.969,0-2.25-.011T124,31.85l.387-1.872q1.163.021,2.368.032t2.175.01a3.625,3.625,0,0,0,1.712-.279,1.18,1.18,0,0,0,.462-1.1,2.074,2.074,0,0,0-.054-.484.875.875,0,0,0-.215-.4,1.263,1.263,0,0,0-.464-.291,2.975,2.975,0,0,0-.817-.16l-2.584-.238a3.817,3.817,0,0,1-1.355-.333,2.74,2.74,0,0,1-.9-.668,2.565,2.565,0,0,1-.5-.893,3.232,3.232,0,0,1-.162-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.243,5.243,0,0,1,3.315-.829h2.153q1.119,0,2.519.043l-.388,1.873c-.6-.014-1.134-.025-1.593-.033s-.866-.01-1.216-.01h-1.712a3.1,3.1,0,0,0-1.528.268,1.04,1.04,0,0,0-.431.959,2.029,2.029,0,0,0,.054.494.731.731,0,0,0,.215.366,1.325,1.325,0,0,0,.474.259,3.463,3.463,0,0,0,.829.15Z" fill="#1d1d1b"/> <path id="Path_2166" data-name="Path 2166" d="M137.931,17.427a1.493,1.493,0,0,1-.334,1.087,1.937,1.937,0,0,1-2.175,0,1.493,1.493,0,0,1-.334-1.087,1.5,1.5,0,0,1,.334-1.087,1.937,1.937,0,0,1,2.175,0,1.5,1.5,0,0,1,.334,1.087m-2.541,3.294h2.26V31.85h-2.26Z" fill="#1d1d1b"/> <path id="Path_2167" data-name="Path 2167" d="M140,31.85V23.993a3.157,3.157,0,0,1,1.2-2.778,8.733,8.733,0,0,1,7.47,0,3.159,3.159,0,0,1,1.194,2.778V31.85H147.6V24.445a6.149,6.149,0,0,0-.064-.947,1.29,1.29,0,0,0-.322-.689,1.621,1.621,0,0,0-.8-.42,8.007,8.007,0,0,0-2.971,0,1.617,1.617,0,0,0-.8.42,1.284,1.284,0,0,0-.323.689,6.149,6.149,0,0,0-.064.947V31.85Z" fill="#1d1d1b"/> <path id="Path_2168" data-name="Path 2168" d="M154.2,27.115a8.854,8.854,0,0,0,.1,1.463,1.733,1.733,0,0,0,.387.882,1.508,1.508,0,0,0,.807.443,6.484,6.484,0,0,0,1.378.117h1.582q.958,0,2.487-.042l-.387,1.872q-.669.021-1.141.032c-.317.008-.607.012-.872.012h-1.669a7.29,7.29,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.507-1.012,3.55,3.55,0,0,1-.742-1.593,10.225,10.225,0,0,1-.194-2.078V25.65a10.869,10.869,0,0,1,.2-2.206,3.83,3.83,0,0,1,.754-1.658,3.471,3.471,0,0,1,1.528-1.044,7.44,7.44,0,0,1,2.551-.366,7,7,0,0,1,2.357.334,3.611,3.611,0,0,1,1.443.9,3.027,3.027,0,0,1,.721,1.314,6.072,6.072,0,0,1,.193,1.539v.322a6.9,6.9,0,0,1-.086,1.227,1.628,1.628,0,0,1-.279.7.882.882,0,0,1-.485.323,2.782,2.782,0,0,1-.7.076Zm2.669-4.952a5.838,5.838,0,0,0-1.378.13,1.464,1.464,0,0,0-.807.483,2.023,2.023,0,0,0-.387.98,10.863,10.863,0,0,0-.1,1.615h5.361v-.733a5.112,5.112,0,0,0-.119-1.194,1.462,1.462,0,0,0-.431-.764,1.833,1.833,0,0,0-.828-.4,5.973,5.973,0,0,0-1.314-.119" fill="#1d1d1b"/> <path id="Path_2169" data-name="Path 2169" d="M169.617,25.285a4.254,4.254,0,0,1,1.572.4,2.5,2.5,0,0,1,1.367,1.7,4.353,4.353,0,0,1,.118.98v.3a2.835,2.835,0,0,1-1.1,2.379,5.5,5.5,0,0,1-3.38.85q-.968,0-2.249-.011t-2.573-.032l.388-1.872q1.163.021,2.368.032t2.174.01a3.62,3.62,0,0,0,1.712-.279,1.18,1.18,0,0,0,.463-1.1,2.073,2.073,0,0,0-.055-.484.857.857,0,0,0-.215-.4,1.258,1.258,0,0,0-.463-.291,2.983,2.983,0,0,0-.817-.16l-2.584-.238a3.823,3.823,0,0,1-1.356-.333,2.735,2.735,0,0,1-.9-.668,2.583,2.583,0,0,1-.506-.893,3.232,3.232,0,0,1-.162-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.246,5.246,0,0,1,3.316-.829H169.9q1.118,0,2.518.043l-.388,1.873c-.6-.014-1.133-.025-1.593-.033s-.865-.01-1.216-.01h-1.711a3.1,3.1,0,0,0-1.529.268,1.042,1.042,0,0,0-.43.959,2.032,2.032,0,0,0,.053.494.723.723,0,0,0,.215.366,1.339,1.339,0,0,0,.475.259,3.464,3.464,0,0,0,.828.15Z" fill="#1d1d1b"/> <path id="Path_2170" data-name="Path 2170" d="M180.639,25.285a4.248,4.248,0,0,1,1.572.4,2.5,2.5,0,0,1,1.367,1.7,4.356,4.356,0,0,1,.119.98v.3a2.838,2.838,0,0,1-1.1,2.379,5.5,5.5,0,0,1-3.38.85q-.968,0-2.249-.011T174.4,31.85l.388-1.872q1.163.021,2.368.032c.8.007,1.529.01,2.174.01a3.62,3.62,0,0,0,1.712-.279,1.18,1.18,0,0,0,.463-1.1,2.021,2.021,0,0,0-.055-.484.857.857,0,0,0-.215-.4,1.258,1.258,0,0,0-.463-.291,2.983,2.983,0,0,0-.817-.16l-2.584-.238a3.823,3.823,0,0,1-1.356-.333,2.746,2.746,0,0,1-.9-.668,2.583,2.583,0,0,1-.506-.893,3.231,3.231,0,0,1-.161-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.241,5.241,0,0,1,3.315-.829h2.153q1.119,0,2.518.043l-.388,1.873c-.6-.014-1.133-.025-1.593-.033s-.865-.01-1.216-.01H178.53a3.1,3.1,0,0,0-1.529.268,1.042,1.042,0,0,0-.43.959,2.033,2.033,0,0,0,.053.494.731.731,0,0,0,.215.366,1.339,1.339,0,0,0,.475.259,3.454,3.454,0,0,0,.828.15Z" fill="#1d1d1b"/> <path id="Path_2171" data-name="Path 2171" d="M197.086,32.238a8.758,8.758,0,0,1-3-.43,3.951,3.951,0,0,1-1.8-1.271,4.824,4.824,0,0,1-.882-2.067,14.833,14.833,0,0,1-.238-2.8V16.523h2.262v9.192a13.888,13.888,0,0,0,.149,2.239,3.052,3.052,0,0,0,.561,1.4,2.133,2.133,0,0,0,1.119.721,8.271,8.271,0,0,0,3.66,0,2.137,2.137,0,0,0,1.119-.721,3.029,3.029,0,0,0,.559-1.4,13.631,13.631,0,0,0,.151-2.239V16.523h2.261v9.149a14.838,14.838,0,0,1-.237,2.8,4.837,4.837,0,0,1-.882,2.067,3.948,3.948,0,0,1-1.809,1.271,8.776,8.776,0,0,1-2.992.43" fill="#1d1d1b"/> <path id="Path_2172" data-name="Path 2172" d="M208.065,23.239l6.5-6.716h2.69L210.3,23.777l7.706,8.073h-3.122l-6.824-7.212V31.85H205.8V16.523h2.26Z" fill="#1d1d1b"/> <path id="Path_2173" data-name="Path 2173" d="M30.4,35.675h3.825a2.923,2.923,0,0,0,2.92-2.92V16.178a2.924,2.924,0,0,0-2.92-2.921H27.5V32.78h-.021a2.922,2.922,0,0,0,2.919,2.9" fill="#e8aa00"/> <path id="Path_2174" data-name="Path 2174" d="M27.5.124V10.741h6.723a5.444,5.444,0,0,1,5.436,5.437V32.755a5.443,5.443,0,0,1-5.436,5.436H30.4a5.442,5.442,0,0,1-5.434-5.412H24.95V13.325H15.625a3.222,3.222,0,0,0-3.179,3.257v21.6H9.891v-21.6a5.779,5.779,0,0,1,5.734-5.811H24.95V0A24.983,24.983,0,1,0,27.5.124" fill="#e8aa00"/> </g> </svg> </a> </li> </ul> </div> <!-- <div class="footerSocial"> <span class="footerSocialText">Connect with us</span> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook/railwaygazette" title="Connect with us on Facebook"></a> </li> <li class="footerSocialTwitter"> <a href="https://www.twitter.com/railwaygazette" title="Connect with us on Twitter"></a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/railway-gazette-international" title="Connect with us on Linked in"></a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/railwaygazette" title="Connect with us on Instagram"></a> </li> <li class="footerSocialYoutube"> <a href="https://www.youtube.com/railwaygazette" title="Connect with us on Youtube"></a> </li> <li class="footerSocialRSS"> <a href="#" title="RSS"></a> </li> </ul> </div> --> </div> </div> <div class="container bottomNav"><div class="inner-sleeve"><ul><li class="first"><a href="https://www.railwaygazette.com/contact-us">Contact us</a></li><li><a href="https://www.railwaygazette.com/about-us">About us</a></li><li><a href="https://www.railwaygazette.com/advertising">Advertising</a></li><li><a href="https://account.railwaygazette.com/register" class="newWindow">Register</a></li><li><a href="https://www.railwaygazette.com/subscriptions?campaigncode=rgsubusernav">Subscribe</a></li><li><a href="https://www.railwaygazette.com/terms-and-conditions">Terms and Conditions</a></li><li><a href="https://www.railwaygazette.com/54152.article">Cookie Policy</a></li><li><a href="https://www.dvvmediainternational.com/policies1/privacy-policy/" class="newWindow">Privacy Policy</a></li><li><a href="https://www.railwaygazette.com/topics-a-z">Topics A-Z</a></li><li><a href="https://www.railwaygazette.com/archive-by-date">Archive (by date)</a></li><li class="last"><a href="https://www.dvvmediainternational.com/" class="newWindow">© DVV Media International Ltd</a></li></ul></div></div> <div class="bottom"> <div class="container footerBottomNavPageText"> <div class="inner-sleeve"> <div class="footerSocial"> <span class="footerSocialText"><strong>Follow</strong> Railway Gazette on social media</span> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook.com/railwaygazette/" rel="noopener noreferrer" target="_blank" title="Connect with Railway Gazette on Facebook"></a> </li> <li class="footerSocialTwitter"> <a href="https://twitter.com/railwaygazette" rel="noopener noreferrer" target="_blank" title="Follow Railway Gazette on Twitter"></a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/railway-gazette-international/" rel="noopener noreferrer" target="_blank" title="Connect with Railway Gazette on LinkedIn"></a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/railwaygazette/" rel="noopener noreferrer" target="_blank" title="Connect with us on Instagram"></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=7513768095036817" defer></script> <!-- AD Renewals Script - Start --> <script type="text/javascript"> (function(d, s) { var config = { baseUrl:'account.railwaygazette.com', partyId: 0 }; var cacheDate = new Date(); cacheDate.setHours(0,0,0,0); var _abacus_ = d.createElement('script'); _abacus_.type = 'text/javascript'; _abacus_.async = true; _abacus_.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + config.baseUrl + '/templatejs?partyId=' + config.partyId + '&cacheDate=' + cacheDate.getTime(); var sc = d.getElementsByTagName(s)[0]; sc.parentNode.insertBefore(_abacus_, sc); })(document, 'script'); </script> <!-- AD Renewals Script - End --> <script type="application/ld+json">{ "@context": "https://schema.org", "@type": "Article", "description": "NETHERLANDS: The province of Gelderland has awarded Arriva the contract to operate the Achterhoek Rivierenland package of rail and bus services from December 14 2025.", "image": "https://d1c4d7gnm6as1q.cloudfront.net/Pictures/2000xAny/2/3/4/68234_gelderlandtrainliveryimpressionimagearriva_991783.jpg", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.railwaygazette.com/passenger/arriva-wins-dutch-train-and-bus-operating-contact/67651.article" }, "author": { "@type": "Person", "name": "Railway Gazette International" }, "dateCreated": "2024-10-23", "dateModified": "2024-10-23", "datePublished": "2024-10-23", "hasPart": { "@type": "WebPageElement", "isAccessibleForFree": false, "cssSelector": ".restrictedcontent" }, "headline": "Arriva wins Dutch train and bus operating contact", "isAccessibleForFree": false, "publisher": { "@type": "Organization", "name": "Railway Gazette International", "logo": { "@type": "ImageObject", "url": "https://www.railwaygazette.com/magazine/dest/graphics/logo/logo.png" } } }</script> </body> </html>

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