PageSourceSearch

https://www.worcesternews.co.uk/contact/

html worcesternews.co.uk collected 2026-10-02 03:11:14 UTC 141,190 bytes, 3,606 lines download raw bytes

1<!-- standard - CustomHeader-NoAds-Site.html --> <!DOCTYPE html>
2<html lang="en" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">
3<head>
4    <title>Contact &amp; Help | Worcester News</title>
5
6    <meta charset="utf-8">
7    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
8    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9    <meta name="OMG-Verify-V1" content="4389-366acdfc-5224-4c07-bb70-f74d8fbfc2db" />
10    <meta name="robots" content="max-image-preview:large">
11    <meta name="format-detection" content="telephone=no">
12
13    <style>
14        .mar-leaderboard--top {
15            display: none;
16        }
17    </style>
18    
18<script>
19        window.doNotAdvertise = true;
20    </script>
20
21    <link rel="canonical" href="https://www.worcesternews.co.uk/contact/" />
22	<meta property="fb:pages" content="952527111460548" />
23	<meta property="fb:pages" content="213163625375779" />
24	<meta property="fb:pages" content="166522910029056" />
25	<meta name="title" content="Contact & Help | Worcester News"/>
26	<meta name="description" content="Get help, support and contact information for Worcester News"/>
27	<meta name="keywords" content=""/>
28
29<script type="application/ld+json">
30    {
31        "@context": "http://schema.org",
32        "@type": "WebPage",
33        "headline": "Contact & Help | Worcester News",
34        "url": "https://www.worcesternews.co.uk/contact/"
35    }
36</script>
36
37
38
39
40
41
42
43
44
45    <link id="page_stylesheet_vars" href="/resources/responsive-static/build/mds/css/palette-4-serif-vars.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
46
47    <link href="/resources/responsive-static/build/mds/css/header-footer.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
48
49    <link id="page_stylesheet" href="/resources/responsive-static/build/mds/css/contactus.css?r=vjoPdzgg" rel="stylesheet" type="text/css">
50
51    <link rel="shortcut icon" href="/resources/images/17416325/" type="image/vnd.microsoft.icon">
52    <link rel="icon" href="/resources/images/17416325/" type="image/vnd.microsoft.icon">
53    
53<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha384-1H217gwSVyLSIfaLxHbE7dRb3v4mYCKbpQvzx0cegeju1MVsGrX5xXxAvs/HgeFs" crossorigin="anonymous"></script>
vendor: 1 bytes, line 53
53
54<script src="https://code.jquery.com/jquery-migrate-3.6.0.js" integrity="sha384-ekzRTCLAU/LqHRBjnphRAxgZZvGdoP+TfkGGsX+tBJpRdM7r2/89ZZNzC/7YTJXX" crossorigin="anonymous"></script>
vendor: 1 bytes, line 54
54
55<script type="text/javascript" src="/resources/shared/responsive-sync/?r=vjoPdzgg"></script>
55
56
57<script type="text/javascript">
58    data_layer_helper.setIsArticle(false);
59    data_layer_helper.setCookieDomain('.worcesternews.co.uk');
60    data_layer_helper.setModuleType('Newsquest\Modules\ContactUsModule');
61    data_layer_helper.setLocalInfoFolder('');
62    data_layer_helper.setHomesData('', '', '', 'contact');
63    data_layer_helper.setPrimaryDomain('www.worcesternews.co.uk');
64    data_layer_helper.setPath('/contact/');
65    data_layer_helper.setGoogleNetworkCode('154725070');
66    data_layer_helper.setArticleTimestamp('');
67    data_layer_helper.setPathOverride();
68
69
70    var extraTags = [];
71    
72        extraTags.push('user_level_anonymous');
73    
74
75    var data_layer = {
76        environment: {
77            is_test_site: 'no',
78            is_live_site: 'yes',
79            is_paywall_site: 'yes',
80            is_portable_screen: (data_layer_helper.isMobileScreen()) ? 'yes' : 'no',
81            is_desktop_screen: (data_layer_helper.isMobileScreen()) ? 'no' : 'yes',
82            is_mobile_device: data_layer_helper.getMobileDevice(),
83            is_tablet_device: data_layer_helper.getTabletDevice(),
84            server: 'webapp-857f48ddbd-4vcgp',
85            platform: 'Martini'
86        },
87        site: {
88            id: '130',
89            comments_subscriber_only: 'no',
90            viafoura_site_id: '00000000-0000-4000-8000-cdf2b616617a',
91            comments_use_viafoura: 'yes',
92            centre_id: '3',
93            centre_name: 'Worcester',
94            country: 'England',
95            name: 'Worcester News',
96            name_with_prefix_capitalised_possessive: 'The Worcester News\'',
97            name_with_prefix_lower_possessive: 'the Worcester News\'',
98            domain: 'www.worcesternews.co.uk',
99            editor_name: 'Stephanie Preece',
100            onboarding_enabled: 'yes',
101            onboarding_flow_id: 'prim_local_std',
102            allowing_mr_replacement: '',
103            cookie_domain: '.worcesternews.co.uk',
104            uses_cmp: 'yes',
105            short_domain: 'worcesternews',
106            using_piano_id: 'yes',
107            enable_skimlinks: 'yes',
108            skimlinks_domain_id: '613830',
109            disable_newsletters: 'no',
110            is_archant_site: 'no',
111            shc_merchant_name: '',
112            piano_application_group: 'Primary',
113            piano_site_name: 'Worcester News',
114            piano_site_name_possessive: 'Worcester News\'',
115            piano_site_name_with_prefix_lower: 'the Worcester News',
116            piano_site_name_with_prefix_capitalised: 'The Worcester News',
117            piano_site_name_with_prefix_capitalised_possessive: 'The Worcester News\'',
118            piano_site_name_with_prefix_lower_possessive: 'the Worcester News\'',
119            piano_location_primary: 'Worcester',
120            piano_location_primary_possessive: 'Worcester\'s',
121            piano_location_county: 'Worcestershire',
122            piano_location_county_possessive: 'Worcestershire\'s',
123            piano_primary_sports_team: '',
124            piano_primary_sports_team_nickname: '',
125            piano_primary_sports_team_sport: '',
126            piano_primary_sports_team_possessive: '',
127            piano_primary_sports_team_nickname_possessive: '',
128            piano_self_service_cancellation_setting: 'All',
129            has_app: 'yes',
130            app_provider: 'pagesuite',
131            app_platform: 'pagesuite-hybrid',
132            app_store_url_ios: 'https://apps.apple.com/app/worcester-news/id516937373',
133            app_store_url_google_play: 'https://play.google.com/store/apps/details?id=com.pagesuite.play.worcesternews',
134            cloudflare_turnstyle_site_key: '',
135        },
136        page: {
137            module: 'Newsquest\Modules\ContactUsModule',
138            referrer: data_layer_helper.getReferrerHostName(),
139            name: '(www) ' + data_layer_helper.getOmniturePath(),
140            title: document.title,
141            path: data_layer_helper.getOmniturePath(),
142            section: data_layer_helper.getPathFragment(0),
143            subsection: data_layer_helper.getPathFragment(1),
144            subsection_2: data_layer_helper.getPathFragment(2),
145            subsection_3: data_layer_helper.getPathFragment(3),
146            reference: qs.get('ref'),
147            layout: '',
148            ad_timing: data_layer_helper.getCookie('adtiming'),
149            template_namespace: 'standard',
150            template: '',
151            colour_scheme: '',
152            layout_template: '',
153            mds_font: 'serif',
154            user_used_app_last_24hours: '',
155            user_used_app_last_7days: '',
156            user_used_app_last_14days: '',
157            mds_colour_palette: 'palette-4',
158            feature_block_a_enabled: ($('[data-name="Feature Article Block A"]').length > 0) ? 'yes' : 'no',
159            feature_block_b_variant: (typeof $('[data-name="Feature Article Block B"]').data('variant') === 'undefined') ? '' : $('[data-name="Feature Article Block B"]').data('variant'),
160            is_article_list: 'no',
161            error_404: '',
162            top_stories_article_count: '',
163            interstitial_dedupe_top_stories: '',
164            interstitial_desktop_height: '',
165            interstitial_mobile_height: '',
166            interstitial_tablet_height: '',
167            interstitial_piano_module_id: '',
168            interstitial_using_recommendations: '',
169            interstitial_recommendation_header: '',
170            interstitial_article_count: '',
171            news_stories_article_count: '',
172            site_newspaper_archive_enabled: 'yes',
173            site_newspaper_archive_number_of_pages: '1024620',
174            site_newspaper_archive_start_year: 1713,
175            article_originates_from_this_site: '',
176            article_originates_from_site: '',
177            article_originates_from_url: ''
178        },
179        user: {
180            id: '',
181            first_name: '',
182            advertising_experience: 'Ad-Full',
183            is_privacy_plus: 'no',
184            is_alist: 'no',
185            level: data_layer_helper.getCookie('nq_ul'),
186            seen_cmp: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true' || data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
187            given_consent: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true') ? 'yes' : 'no',
188            consent_string: data_layer_helper.getConsentString(),
189            type: 'anonymous',
190            parsely_type: 'Anonymous',
191            chartbeat_type: 'anon',
192            type_as_int: '1',
193            is_logged_in: 'no',
194            is_admin: 'no',
195            is_internal_admin: '',
196            has_full_admin_link_permissions: '',
197            has_registered: (data_layer_helper.getCookie('nqr') !== null) ? 'yes' : 'no',
198            comments_verified: '',
199            comments_verified_date: '',
200            user_email_is_verified: '',
201            user_email_is_verified_date: '',
202            mobile_number_is_verified: '',
203            mobile_number_is_verified_date: '',
204            user_needs_email_verification: '',
205            user_needs_mobile_verification: '',
206            user_too_many_requests: '',
207            age_decade:  '0' ,
208            gender:  'u' ,
209            is_known: data_layer_helper.getCookie('__siren') ? 'yes' : 'no',
210            hash: '',
211            lr_hash_1: '',
212            lr_hash_2: '',
213            lr_hash_3: '',
214            gender:  'u' ,
215            user_decade:  '0' ,
216            subscription_plan: '',
217            subscription_tier: 'null',
218            subscription_plan_and_frequency: ' - ',
219            commented: (data_layer_helper.isArticle() && qs.get('action') === 'success') ? 'yes' : 'no',
220            time_since_last_visit: 'not implemented (maybe drop)',
221            device: data_layer_helper.getDevice(),
222            using_ad_blocker_sourcepoint: data_layer_helper.getSourcepointAdbockStatus(),
223            admin_user_name: '',
224            is_admin_internal: '',
225            is_admin_external: '',
226            card_expired: '',
227            card_will_expire: '',
228            expires_urgency: '',
229            abandoned_cart: 'no',
230            subscription_expired: 'no',
231            is_archant_site: 'no',
232            signed_up_primary_news_newsletter: 'no',
233            signed_up_primary_sport_newsletter: 'no',
234            played_free_puzzles_last_7days: '',
235            played_paid_puzzles_last_7days: '',
236            commenter_badge: '',
237            upper_role: '',
238        },
239        analytics: {
240            hierachy: 'newsquest,Worcester,www.worcesternews.co.uk,' + data_layer_helper.getPathFragment(3).replace(/\//,','),
241            link_filters: 'javascript:,worcesternews.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,',
242            tracking_block: data_layer_helper.getTrackingFromCookie('tracking_block', ''),
243            tracking_block_index: data_layer_helper.getTrackingFromCookie('tracking_block_index', ''),
244            previous_page_name: data_layer_helper.getCookie('nq_prev_page'),
245            advert_id: '',
246            position_in_list: data_layer_helper.getTrackingFromCookie('o-prop30', ''),
247            featured_content: data_layer_helper.getTrackingFromCookie('o-ref', qs.get('ref')),
248            account: data_layer_helper.getAccount()
249        },
250        chartbeat: {
251            enabled: "no",
252            id: "",
253            domain: "",
254            sections: ''
255        },
256        parsely: {
257            enabled: "yes",
258            site_id: "worcesternews.co.uk",
259            type: 'Anonymous'
260        },
261        piano: {
262            tags: data_layer_helper.getPianoTags({
263                      piano_domain: 'worcesternews',
264                      piano_master: '',
265                      breaking_news: false,
266                      editorial_opinion: false,
267                      free_subscriber: false,
268                      free_subscriber: false,
269                      has_video: false,
270                      is_article: false,
271                      article_content_level : '',
272                      article_content_level_open_access: false,
273                      picture_gallery_id: false,
274                      user_is_newsquest: false,
275                      user_is_entra_authenticated: false,
276                      user_logged_in: false,
277                      is_live_article: false,
278                      why_free_subscriber: '',
279                      extra_tags: extraTags,
280                      is_covid_headline: false,
281                      is_covid_body: false,
282                      is_alist: false,
283                      audio_provider_bytecast: false
284                  }
285            ),
286            custom_variables: {
287                article_length: '',
288                application_group: 'Primary',
289                content_is_editorial_opinion: 'no',
290                base_url: 'https://www.worcesternews.co.uk',
291                full_url: document.location.href,
292                from_discover: (document.referrer === "android-app://com.google.android.googlequicksearchbox/") ? 'yes' : 'no',
293                mds_font: 'serif',
294                mds_colour_palette: 'palette-4',
295                site_name: 'Worcester News',
296                site_name_possessive: 'Worcester News\'',
297                site_name_with_prefix_capitalised: 'The Worcester News',
298                site_name_with_prefix_lower: 'the Worcester News',
299                site_name_with_prefix_capitalised_possessive: 'The Worcester News\'',
300                site_name_with_prefix_lower_possessive: 'the Worcester News\'',
301                location_primary: 'Worcester',
302                location_primary_possessive: 'Worcester\'s',
303                location_county: 'Worcestershire',
304                location_county_possessive: 'Worcestershire\'s',
305                site_has_primary_sports_team: 'no',
306                primary_sports_team: '',
307                primary_sports_team_nickname: '',
308                primary_sports_team_sport: '',
309                primary_sports_team_possessive: '',
310                primary_sports_team_nickname_possessive: '',
311                site_id: '130',
312                content_level: '',
313                content_author: '',
314                content_id: '',
315                content_is_article: 'no',
316                content_primary_topic: '',
317                user_seen_consent_modal: ($.cookie('_sp_enable_dfp_personalized_ads') === 'true' || $.cookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
318                site_section: data_layer_helper.getPathFragment(0, true),
319                article_published_yyyy: '',
320                user_played_free_puzzles_last_7days: '',
321                user_played_paid_puzzles_last_7days: '',
322                anon_user_played_free_puzzles_last_7days: data_layer_helper.untrackedPuzzleCheck(),
323                home_delivery_phone_number: '0800 953 0227',
324                content_is_restricted: data_layer_helper.getRestrictedContent('', '', '', ''),
325                day_of_week: data_layer_helper.getDayOfWeek(),
326                user_card_expired: '',
327                user_card_will_expire: '',
328                user_expires_urgency: '',
329                user_used_app_last_24hours: '',
330                user_used_app_last_7days: '',
331                user_used_app_last_14days: '',
332                user_subscription_tier: 'null',
333                user_is_newsquest: 'no',
334                primary_news_newsletter_id: '964',
335                primary_news_newsletter_name: 'the Morning Briefing',
336                primary_news_newsletter_description: 'All the latest from the Worcester News',
337                primary_sport_newsletter_id: '965',
338                primary_sport_newsletter_name: 'the Sports AM',
339                primary_sport_newsletter_description: 'Keep up to date with the latest sport headlines.',
340                user_signed_up_primary_news_newsletter: 'no',
341                user_signed_up_primary_sport_newsletter: 'no',
342                newsletter_auto_promote: '',
343                newsletter_auto_promote_name: '',
344                newsletter_auto_promote_description: '',
345                newsletter_auto_promote_ID: '',
346                site_has_app: 'yes',
347                site_app_store_url_ios: 'https://apps.apple.com/app/worcester-news/id516937373',
348                site_app_store_url_google_play: 'https://play.google.com/store/apps/details?id=com.pagesuite.play.worcesternews',
349                subsets_experiment_id: '',
350                site_section1: data_layer_helper.getPathFragment(1, true), // GBL required
351                site_newspaper_archive_enabled: 'yes',
352                site_newspaper_archive_number_of_pages: '1024620',
353                site_newspaper_archive_start_year: 1713,
354                article_originates_from_this_site: '',
355                article_originates_from_site: '',
356                article_originates_from_url: ''
357            },
358            native_variables: {
359                setContentCreated: '',
360                setContentIsNative:  'no',
361                setContentAuthor: '',
362                setContentSection: data_layer_helper.getPathFragment(0, true)
363            }
364        },
365        article: {
366            cscore:'',
367            showing_preview: '',
368            is_article: data_layer_helper.isArticle() ? 'yes' : 'no',
369            id : '',
370            length_type: '',
371            character_count: '',
372            author: ''.toLowerCase(),
373            e_var15: ''.toLowerCase(),
374            context: '',
375            content_level: '',
376            content_level_open_access: '',
377            content_level_combined: ',,no',
378            content_is_restricted: data_layer_helper.getRestrictedContent('', '', '', ''),
379            increment: (data_layer_helper.isArticle()) ? '+1' : '',
380            sponsor: '',
381            contributions: '0',
382            is_sponsored: 'no',
383            headline: '',
384            age: data_layer_helper.getArticleAge(),
385            upload_date: '',
386            publish_date: '',
387            update_date: '',
388            rating: '',
389            source: data_layer_helper.getSource(''),
390            subjects: (typeof articleSubjects === 'object') ? articleSubjects.join(',') : '',
391            context: '',
392            grapeshot_context: (typeof gs_channels !== 'undefined') ? gs_channels : '',
393            allow_comments: 'no',
394            total_comments: '',
395            originating_site_id: '',
396            parent_article_site_id: '',
397            parent_article_id: '',
398            originating_article_id: '',
399            parent_originating_site_id: '',
400            is_original_to_site: '',
401            is_cloned: '',
402            parent_article_url: '',
403            use_skimlinks: 'no',
404            content_primary_topic: '',
405            taxonomy: {
406                article_types: '',
407                topics: '',
408                sports: '',
409                sports_teams: '',
410                locations: '',
411                shared_content: '',
412                free_tags: '',
413                farming: ''
414            },
415            audio: {
416                has_audio: 'no',
417                provider: ''
418            },
419            article_comments_use_viafoura: ''
420        },
421        homes: {
422            search_bedrooms_minimum: '',
423            search_location: 'contact',
424            search_price_minimum: '',
425            search_price_maximum: '',
426            list: '',
427            id: ''
428        },
429        video: {
430            exists: 'no',
431            auto_play_enabled: data_layer_helper.getAutoPlay('no')
432        },
433        contributions: {
434            allow_text: '',
435            allow_image: '',
436            user_contributions_number: '0',
437            has_user_contributions: 'no'
438        },
439        search: {
440            keywords: qs.get('search'),
441            results: ''
442        },
443        announcements: {
444            category: ''
445        },
446        config: {
447            google_analytics_id: 'UA-54396341-14',
448            site_template_set: 'standard',
449            path: '/contact/',
450            top_level_section: 'contact',
451            polar_property_id: 'NA-WORC-11238043',
452            gallery_show_advert_after: '5',
453            disable_outbrain_with_ad_light: 'no',
454            disable_outbrain: 'no',
455        },
456        dfp: {
457            is_landing: 'yes',
458            module_path: 'contact',
459            weather_band: '11-15',
460            weather_summary: 'sun'.toLowerCase(),
461            id: data_layer_helper.getGoogleId(),
462            display_screen: data_layer_helper.isMobileScreen() ? 'mobile' : 'desktop',
463            can_show_billboard: (window.screen.width > 960) ? 'y' : 'n'
464        },
465        dates: {
466            date: (new Date()).toLocaleDateString('en-GB'),
467            hour: (new Date()).getHours(),
468            day: data_layer_helper.getDayOfWeek(),
469            weekend: ((new Date()).getDay() === 6 || (new Date()).getDay() === 0) ? 'Weekend' : 'Weekday'
470        },
471        memorials: {
472            contact_phone_number: '',
473            contact_email_address: '',
474            publications: JSON.parse('' || '[]'),
475            user: {
476                id: '',
477                email_verified: 'no',
478                type: ''
479            },
480            funeral_director: {
481                id: '',
482                person_urn: ''
483            }
484        }
485    }
486
487    data_layer_helper.storeCurrentPageName(data_layer.page.name);
488
489    window.dispatchEvent(new Event('data-layer-loaded'))
490
491      data_layer.piano.custom_variables.user_used_app_last_24hours = 'no';
492      data_layer.piano.custom_variables.user_used_app_last_7days = 'no';
493      data_layer.piano.custom_variables.user_used_app_last_14days = 'no';
494  if (data_layer.article.is_article !== 'yes') {
495      data_layer.piano.custom_variables.site_module = 'Newsquest\Modules\ContactUsModule';
496      data_layer.piano.custom_variables.puzzles_landing_page = 'no';
497      data_layer.piano.custom_variables.puzzles_display_page = 'no';
498  }
499</script>
499
500 
501<script
502  src="https://assets.adobedtm.com/499440d21de9/54b957ecfb7e/launch-98090dfa3d73.min.js"
503  async
504></script>
504
505 
506
507<script>"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",r.title="tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();</script>
507
508
509<script type = "text/javascript">
510( function () {
511
512    window._sp_ = {
513        config: {
514            baseEndpoint: 'https://a02342.worcesternews.co.uk',
515            accountId: 52,
516            targetingParams:{
517                subscribed: false,
518                privacy: false
519            },
520            gdpr: { },
521            events: {
522                onMessageReady: function (message_type) {
523                    trackSPEvents('event76');
524                },
525                onMessageChoiceSelect: function (message_type, choice_id, choice_type_id) {
526                    console.log('message_type: ', message_type);
527                    console.log('choice_id: ', choice_id);
528                    console.log('choice_type_id: ', choice_type_id);
529                    if ('yes' === 'yes') {
530                        if (choice_type_id === 12) {
531                            trackSPEvents('event83'); //Consent Banner Reject All
532                            trackSPEvents('event82'); //Journalism Message Shown
533                        }
534                        if (choice_type_id === 11) {
535                            trackSPEvents('event78');
536                        }
537                        if (choice_type_id === 9) {
538                            trackSPEvents('event77');
539                        }
540                    } else {
541                        // these are the second argument in non-gate
542                        if (choice_type_id === 12) {
543                            trackSPEvents('event77');
544                        }
545
546                        if (choice_type_id === 11) {
547                            trackSPEvents('event78');
548                        }
549
550                        if (choice_type_id === 13) {
551		                    trackSPEvents('event83');
552                        }
553                    }
554                },
555                onPrivacyManagerActionStatus: function(message_type, status, actionType) {
556                    console.log('message_type: ' + message_type);
557                    console.log('status: ' + status);
558                    console.log('actionType: ' + actionType);
559                    if ('yes' === 'yes') {
560                        if (actionType === 11) {
561                            trackSPEvents('event79'); //Privacy Manager Accept
562                        }
563                        if (actionType === 9) {
564                            trackSPEvents('event68'); //Privacy Manager Redirect
565                        }
566                        if (actionType === 1) {
567                            trackSPEvents('event75'); //Forced tcf String Change
568                        }
569                    } else {
570                    // these are the second argument in non-gate
571                        if (actionType === 13) {
572                            trackSPEvents('event81'); //Privacy Manager Reject
573                        }
574                        if (actionType === 11) {
575                            trackSPEvents('event79'); //Privacy Manager Accept
576                        }
577                        if (actionType === 1) {
578                            trackSPEvents('event80'); //Privacy Manager Save & Exit
579                        }
580                    }
581                },
582                onPMCancel: function (message_type) {
583                    console.log('onPMCancel', message_type);
584                    trackSPEvents('event84'); //Privacy Manager Back
585                },
586            }
587        }
588    }
589
590    if (typeof window.__tcfapi === 'function') {
591        window.__tcfapi('addEventListener', 2, function (tcData, success) {
592            console.log('SP: Event Listen:', tcData, success);
593            if (success && tcData.eventStatus === 'useractioncomplete') {
594                setTcfCookie(tcData.purpose.consents, tcData.purpose.legitimateInterests);
595
596                var csnt = 'none';
597                if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
598                    csnt = 'yes';
599                } else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
600                    csnt = 'no';
601                }
602                googletag.cmd.push(function() {
603                    // console.log('DFP: Cookie check - setting dfpcsnt to ', csnt);
604                    googletag.pubads().setTargeting('dfpcsnt', csnt);
605                });
606                // ready to start DFP
607                // console.log('PIANO: setting unrestricted via useractioncomplete');
608                // runPiano('unrestricted');
609                startAdvertising(tcData.listenerId);
610
611                var e = new Event('launch:cmp:choice-made');
612                window.dispatchEvent(e);
613            } else if (success && tcData.eventStatus === 'tcloaded') {
614                // tcloaded means a valid TCF v2.0 string is available
615                // console.log('PIANO: setting unrestricted via tcloaded');
616                // runPiano('unrestricted');
617                if (tcData.gdprApplies === false) {
618                    $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.worcesternews.co.uk', path: '/', expires: 100});
619                }
620                startAdvertising(tcData.listenerId);
621
622            } else if (success && tcData.eventStatus === 'useractionnotcomplete') {
623                // do nothing - this means the user has not made a choice yet
624            } else if (success && tcData.eventStatus === 'cmpuishown') {
625                // do nothing - this means the CMP UI has been shown
626            } else if (!success) {
627                // $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.worcesternews.co.uk', path: '/', expires: 100});
628                // startAdvertising();
629            } else {
630                // console.log('PIANO: setting restricted');
631                // runPiano('restricted');
632            }
633        });
634    }
635
636    
637
638    document.addEventListener('click', function (e) {
639        const option = e.target.closest('.gdpr-option-v2');
640
641        if (!option) return;
642
643        e.preventDefault();
644        sendEvent76 = false;
645
646        const id = option.dataset.v2Id;
647        const isGate = option.dataset.isGate;
648
649        if (isGate === 'yes') {
650            trackSPEvents('event87');
651            _sp_.gdpr.loadPrivacyManagerModal(id);
652        } else {
653            trackSPEvents('event77');
654            _sp_.gdpr.loadPrivacyManagerModal(id);
655        }
656    });
657
658    function getTcfData() {
659        if (typeof window.__tcfapi !== 'function') {
660            console.warn('TCF API unavailable');
661            return;
662        }
663        window.__tcfapi('addEventListener', 2, function(data, success) {
664            if (!data.purpose || !data.purpose.consents || !data.purpose.legitimateInterests) {
665                // console.log('DFP: No TCF data found, not setting cookies');
666                return;
667            }
668            setTcfCookie(data.purpose.consents, data.purpose.legitimateInterests);
669        }, [755]);
670    }
671    getTcfData();
672
673    function setTcfCookie(data, legitimateInterests) {
674        var consents = [];
675        $.each(data, function(id, consent)  {
676            var c = (consent === true) ? 'yes' : 'no';
677            consents.push(c)
678        });
679        // console.log('DFP: consents length: ', consents.length);
680        if (consents.length !== 10) {
681            // consents = consents.fill('no', consents.length, 10);
682            for (var i = consents.length; i < 10; i++) {
683                consents[i] = 'no';
684            }
685        }
686        // console.log('DFP: Found consents to store in cookie:', consents);
687        $.cookie('prev-tcf-v2', consents.join(','), {domain: '.worcesternews.co.uk', path: '/', expires: 100});
688
689        var consentEvent4 = 'none';
690        if (typeof data[4] !== 'undefined') {
691            consentEvent4 = data[4] ? 'true' : 'false';
692        }
693        $.cookie('_sp_enable_dfp_personalized_ads', consentEvent4, {domain: '.worcesternews.co.uk', path: '/', expires: 100});
694
695        var legitInterest = 'none';
696        if (legitimateInterests && typeof legitimateInterests[2] !== 'undefined') {
697            legitInterest = legitimateInterests[2] ? 'true' : 'false';
698        }
699
700        $.cookie('_sp_legitimate_interests', legitInterest , {domain: '.worcesternews.co.uk', path: '/', expires: 100});
701    }
702
703    var sendEvent76 = true;
704
705    function trackSPEvents(events) {
706        if (events === 'event76' && !sendEvent76) {
707            return;
708        } else if (events === 'event76') {
709            sendEvent76 = false;
710        }
711
712        if (typeof window.s !== 'object') {
713            // console.log('DFP: No window.s object found, trying again in 1 second');
714            window.setTimeout(function () { trackSPEvents(events)} , 1000);
715            return;
716        }
717
718        // console.log("ADB: Tracking %s", events);
719        // Re-create the Omniture object so the data can be tracked.
720        var s = window.s;
721
722        if (events.indexOf('event70') !== -1) {
723            // console.log('DFP: Events passed, added evars');
724            s.eVar35 = 'enabled';
725            s.prop35 = 'enabled';
726        }
727
728        s.events = events;
729        s.linkTrackEvents = events;
730        s.linkTrackVars = "eVar2,eVar3,eVar4,eVar5,eVar6,evar7,evar8,evar9,eVar16,eVar19,eVar26,eVar35,eVar43,eVar67,prop35";
731        s.suppressPageView = true;
732        s.tl(true,'o','Ad Block');
733    }
734
735    function startAdvertising(id)
736    {
737        if (typeof window.doNotAdvertise !== 'undefined' && window.doNotAdvertise === true) {
738            return;
739        }
740
741        // console.log("DFP: Is the page fully loaded?", window.googleReady);
742        if (window.googleReady !== true) {
743            window.setTimeout(function () {
744                // console.log('DFP: Google not fully loaded yet, pausing quarter of a second before trying again');
745                startAdvertising(id);
746            }, 250);
747            return;
748        }
749
750        // Ensure that we never run this code twice
751        if (window.advertisingStart === true) {
752            return;
753        }
754        // console.log('DFP: Running advertisement');
755        window.advertisingStart = true;
756
757        var googletag = window.googletag;
758        // init google objects and array
759        (function() {
760            var gads = document.createElement('script');
761            gads.async = true;
762            gads.type = 'text/javascript';
763            gads.src = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js';
764            var node = document.getElementsByTagName('script')[0];
765            node.parentNode.insertBefore(gads, node);
766        })();
767
768        // launch the exco slideshow player
769        launchExcoSlideshow();
770
771        // load facebook etc
772        loadSocials();
773
774        // Checking our decision to use headerbidding (shorterned as prebid) is correct
775        // via system logic, and that we have the simplified consent to do so
776        if (usePrebid && $.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
777            var e = new Event('launch:sourcepoint:consentaccepted');
778            window.dispatchEvent(e);
779
780            // AP code initialisation
781            // the script is loaded via launch, once we have detected a consent signal via the datalayer.
782            fetchAp();
783
784            var site = 'desktop';
785            var _site = 'desktop';
786
787            // load IAS scripts and set up vars
788            (function() {
789                var ias = document.createElement('script');
790                ias.async = true;
791                ias.type = 'text/javascript';
792                ias.src = 'https://cdn.adsafeprotected.com/iasPET.1.js';
793                var node = document.getElementsByTagName('script')[0];
794                node.parentNode.insertBefore(ias, node);
795            })();
796
797            // load the prebid script
798            (function() {
799                var pbs = document.createElement('script');
800                pbs.async = true;
801                pbs.type = 'text/javascript';
802                pbs.src = 'https://micro.rubiconproject.com/prebid/dynamic/11022.js?group=newsquest';
803                var node = document.getElementsByTagName('script')[0];
804                node.parentNode.insertBefore(pbs, node);
805            })();
806
807            // tell google to actually get the bids from all relevant vendors when loaded
808            googletag.cmd.push(function () {
809                fetchHeaderBids();
810            });
811        }
812
813        // Outbrain
814        if (
815            (window.data_layer.user.advertising_experience === 'Ad-Free' || window.data_layer.config.disable_outbrain === 'yes') ||
816            (window.data_layer.user.advertising_experience === 'Ad-Light' && window.data_layer.config.disable_outbrain_with_ad_light === 'yes')
817        ) {
818            // console.log("No Outbrain script loading due to page settings");
819        } else {
820            // console.log("Loading Outbrain");
821            var ob = document.createElement('script');
822            ob.async = true;
823            ob.type = 'text/javascript';
824            ob.src = 'https://widgets.outbrain.com/outbrain.js';
825            var node = document.getElementsByTagName('script')[0];
826            node.parentNode.insertBefore(ob, node);
827        }
828
829
830        // remove the listener
831        if (id !== null) {
832            window.__tcfapi('removeEventListener', 2, function (success) { }, id);
833        }
834    }
835
836    /**
837     * Wait until we have advertising consent to show this advertising
838     * based replacement for the single image on our article pages
839     * This logic is based on excoSlidshowPlayerID that only appears on the page
840     * if a user is NOT a subscriber (including privacy plus) and the page has the
841     * correct information to show it (doesn't have a video, not in sport etc)
842     */
843    function launchExcoSlideshow() {
844        const slideShowPlayerId = window.excoSlideshowPlayerId;
845        // if we do not have a player id, we do not need to do anything
846        if (!slideShowPlayerId) {
847            return;
848        }
849
850        // this is exco's supplied code, modified for our use
851        (function (d, s, n) {
852            fjs = d.getElementsByTagName(s)[0];
853            js = d.createElement(s);
854            js.className = n;
855            js.src = '//player.ex.co/player/' + slideShowPlayerId;
856            js.setAttribute('programmatic', 'true');
857	        js.onload = function () {
858                const playerApi = ExCoPlayer.connect(slideShowPlayerId);
859                playerApi.init({});
860
861                playerApi.on('player-load', function(data) {
862                    $('.mar-article-image').remove();
863                    if (window.screen.width > 800) {
864                        $('.article-hero').attr('style', 'order: 1');
865                    }
866                    window.hide_overlay_for_exco = true;
867                });
868            };
869            fjs.parentNode.insertBefore(js, fjs);
870        }(document, 'script', 'exco-player'));
871    }
872
873    function loadSocials()
874    {
875        const socials = [
876            'https://platform.twitter.com/widgets.js',
877            'https://connect.facebook.net/en_US/all.js#xfbml=1',
878            'https://www.tiktok.com/embed.js',
879        ];
880
881        socials.forEach((social) => {
882            var script = document.createElement('script');
883            script.src = social;
884            script.async = true;
885            document.getElementsByTagName('head')[0].appendChild(script);
886        });
887    }
888
889
890})();
891
892</script>
vendor: 1 bytes, line 892
892
893<script src="https://a02342.worcesternews.co.uk/unified/wrapperMessagingWithoutDetection.js"></script>
893
894
895<script>
896window.usePiano = true;
897window.selectedOfferId = null;
898window.selectedTermId = null;
899</script>
vendor: 1 bytes, line 899
899
900<script>
901document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
902var setNptTechAdblockerCookie = function(adblocker) {
903    var d = new Date();
904    d.setTime(d.getTime() + 60 * 60 * 24 * 2 * 1000);
905    document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/";
906}
907var script = document.createElement("script");
908script.setAttribute("async", true);
909script.setAttribute("src", "//www.npttech.com/advertising.js");
910script.setAttribute("onerror", "setNptTechAdblockerCookie(true);");
911document.getElementsByTagName("head")[0].appendChild(script);
912</script>
912
913
914<script>
915// window.pdl = window.pdl || {};
916// window.pdl.requireConsent = 'v2';
917
918// Store entry point unless it's a user or subscribe page
919// to redirect after subscription
920const excludedPaths = ['/user/', '/subscribe/'];
921
922const shouldExclude = excludedPaths.some(path =>
923  window.location.pathname.includes(path)
924);
925
926if (!shouldExclude) {
927  sessionStorage.setItem(
928    'last_piano_page_interacted_with',
929    window.location.pathname
930  );
931}
932
933tp = window.tp || [];
934
935function runPiano(restrictedMode) {
936    // console.log('Running Piano with restricted mode:', restrictedMode);
937    // tp.push(['init', function() {
938    //      console.log('Piano purpose map, before calling setAllPurposes()', tp.consent.getByPurpose());
939    // }]);
940    // if (restrictedMode === 'restricted') {
941    //     // If we're in restricted mode, we need to set some specific parameters
942    //     tp.push(['init', function() {
943    //         tp.consent.setAllPurposes('opt-out')
944    //     }]);
945    // } else {
946    //     tp.push(['init', function() {
947    //         tp.consent.setAllPurposes('opt-in')
948    //     }]);
949    // }
950    // tp.push(['init', function() {
951    //     console.log('Piano purpose map, after calling setAllPurposes()', tp.consent.getByPurpose());
952    // }]);
953    // init Piano ID
954    tp.push(['init', function() {
955        tp.pianoId.init();
956    }]);
957
958    const isGooglebot = window.isRobot.googleBot();
959
960    const isArticle = (data_layer.article.is_article === 'yes');
961
962    const isCl3 = (parseInt(data_layer.article.content_level, 10) === 3);
963
964    if (isGooglebot) {
965        // we don't load Piano from all non-article pages
966        if (!isArticle) {
967            return;
968        }
969
970        // If we are on an article, we do not load piano on CL0, 1, or 2
971        if (!isCl3) {
972            return;
973        }
974    }
975    Object.keys(data_layer.piano.custom_variables).forEach(function (k) {
976        var v = data_layer.piano.custom_variables[k];
977
978        if (v != '') {
979            tp.push(["setCustomVariable", k, v]);
980        }
981    });
982
983    Object.keys(data_layer.piano.native_variables).forEach(function (k) {
984        var v = data_layer.piano.native_variables[k];
985        if (v != '') {
986            tp.push([k, v]);
987        }
988    });
989
990    tp.push(['setTags', data_layer.piano.tags]);
991
992   (function(src){
993        var a=document.createElement("script");
994        a.type = "text/javascript";
995        a.async=true;
996        a.src=src;
997        var b=document.getElementsByTagName("script")[0];
998        b.parentNode.insertBefore(a, b)
999    })("//experience.tinypass.com/xbuilder/experience/load?aid=ezH5Vwzcpu");
1000}
1001
1002// Init Piano
1003const debug = document.cookie
1004    .split('; ')
1005    .find(row => row.startsWith('debug='))
1006    ?.split('=')[1];
1007
1008tp.push(["setDebug", debug === '1']);
1009
1010tp.push(["setApplePayMerchantId", 'merchant.nq.subssites.piano']);
1011
1012tp.push(["setUsePianoIdUserProvider", true ]);
1013
1014tp.push(["addHandler", "loginRequired", function(params) {
1015    // If they're already signed in, we don't need to do anything special.
1016    if (tp.user.isUserValid()) {
1017        return;
1018    }
1019    if (typeof window._overridePianoDefault !== 'undefined' && window._overridePianoDefault !== true) {
1020        console.log("TPL Called")
1021        tp.pianoId.show({
1022            screen: 'login',
1023            displayMode: 'modal',
1024            loggedIn: (data) => {
1025                pianoId.loggedIn();
1026            },
1027            loggedOut: () => {
1028                console.log('TP-TJ: user logged out');
1029            },
1030            registrationSuccess: () => {
1031                pianoId.registered();
1032            },
1033            width: '500px',
1034            height: '460px',
1035        });
1036    }
1037}]);
1038
1039tp.push(["addHandler", "checkoutSelectTerm", function (termDetails) {
1040    if (typeof termDetails.termId !== 'undefined') {
1041        window.selectedTermId = termDetails.termId;
1042    }
1043}]);
1044
1045tp.push(["addHandler", "showTemplate", function (templateParams) {
1046    showPianoTarget(templateParams);
1047}]);
1048
1049tp.push(["addHandler", "showOffer", function (offerParams) {
1050    window.shownOffer = true;
1051
1052    // Store some data we might need later.
1053    if (typeof offerParams.offerId !== 'undefined') {
1054        window.selectedOfferId = offerParams.offerId;
1055    }
1056
1057    showPianoTarget(offerParams);
1058}]);
1059
1060function handleFullWidthBanner(selector) {
1061    if (selector === '#po-overlay-articlegate-full-width-full-article-scroll-below') {
1062        document.querySelector(selector).classList.add(selector.replace('#', ''));
1063    }
1064    document.querySelector(selector).style.minHeight = "254px";
1065    document.querySelector('#subscription-content').style.display = 'none';
1066    document.querySelectorAll('.send-us-your-news-cta').forEach((el) => { el.style.display = 'none'; });
1067    document.querySelectorAll('.mega-news-block').forEach((el) => { el.style.display = 'none'; });
1068
1069    const block = document.querySelector(selector);
1070    const containerBlock = block.parentElement;
1071    const containerBlockHeight = 254; // to prevent abrupt jumping
1072
1073    if (!block) { return; }
1074
1075    block.style.display = 'block';
1076
1077    const blockRect = block.getBoundingClientRect();
1078    const startTop = blockRect.top + window.scrollY;
1079    const blockHeight = blockRect.height;
1080    const screenWidth = window.screen.width;
1081
1082    let lastState = ''; // 'top', 'bottom', 'default'
1083
1084    function getScrollbarWidth() {
1085        return window.innerWidth - document.documentElement.clientWidth;
1086    }
1087
1088    function updatePosition() {
1089        const scrollY = window.scrollY;
1090        const viewportHeight = window.innerHeight;
1091        const bottomTrigger = startTop + blockHeight - viewportHeight;
1092
1093        let newState = 'default';
1094
1095        if (scrollY > startTop && screenWidth >= 768) {
1096            newState = 'top';
1097        } else if (scrollY < bottomTrigger && screenWidth >= 768) {
1098            newState = 'bottom';
1099        } else if (scrollY < bottomTrigger + 90 && screenWidth < 768) {
1100            newState = 'bottom-mobile';
1101        }
1102
1103        const scrollbarWidth = getScrollbarWidth();
1104
1105        if (newState !== lastState) {
1106            switch (newState) {
1107                case 'top':
1108                    block.style.position = 'fixed';
1109                    block.style.top = '0';
1110                    block.style.bottom = 'auto';
1111                    block.style.marginLeft = '0';
1112                    block.style.marginRight = '0';
1113                    containerBlock.style.minHeight = `${containerBlockHeight}px`;
1114                    break;
1115
1116                case 'bottom':
1117                    block.style.position = 'fixed';
1118                    block.style.bottom = '0';
1119                    block.style.top = 'auto';
1120                    block.style.marginLeft = '0';
1121                    block.style.marginRight = '0';
1122                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1123                    containerBlock.style.minHeight = 'unset';
1124                    break;
1125
1126                case 'bottom-mobile':
1127                    block.style.position = 'fixed';
1128                    block.style.bottom = '90px';
1129                    block.style.top = 'auto';
1130                    block.style.marginLeft = 'calc(-100vw + 100%)';
1131                    block.style.marginRight = 'calc(-100vw + 100%)';
1132                    containerBlock.style.minHeight = 'unset';
1133                    break;
1134
1135                default:
1136                    block.style.position = '';
1137                    block.style.top = '';
1138                    block.style.bottom = '';
1139                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1140                    block.style.marginLeft = '-100vw';
1141                    block.style.marginRight = '-100vw';
1142                    containerBlock.style.minHeight = 'unset';
1143                    break;
1144            }
1145
1146            lastState = newState;
1147        }
1148
1149        requestAnimationFrame(updatePosition);
1150    }
1151
1152    updatePosition();
1153    window.addEventListener('resize', updatePosition);
1154}
1155
1156function trackLocation(forceValidLocation = false) {
1157    var currentLocation = window.location.pathname;
1158
1159    let valid = false;
1160
1161    if (currentLocation.indexOf('puzzles') > -1) {
1162        valid = true;
1163    }
1164
1165    if (currentLocation.indexOf('pagesuite') > -1) {
1166        valid = true;
1167    }
1168
1169    var articleMatch = currentLocation.match(/(\d+)\.[^\/]+\/(r\/)?$/);
1170    if (articleMatch != null) {
1171        valid = true;
1172    }
1173
1174    if (forceValidLocation) {
1175        valid = true;
1176    }
1177
1178    if (currentLocation.indexOf('subscribe') > -1) {
1179        valid = false;
1180    }
1181
1182    if (!valid) {
1183        return;
1184    }
1185
1186    $.cookie('last-piano-page-interacted-with', currentLocation, {path: '/', domain: window.data_layer.site.cookie_domain});
1187}
1188
1189function trackPianoWithNewRelic(templateName) {
1190    if (this.newrelic && typeof this.newrelic === 'object') {
1191        newrelic.setCustomAttribute('user_was_shown_piano_experience', templateName);
1192    }
1193}
1194
1195function handleOfferShow(params) {
1196    console.log('Piano params', params);
1197
1198    // If on the subscription page and the URL has a term ID and offer ID, show the relevant offer.
1199    if (typeof location.pathname !== 'undefined' && location.pathname === '/subscribe/') {
1200        var offerId = location.search.match(/offer_id=([A-Z0-9]+)/);
1201        if (offerId !== null && offerId.length > 1) {
1202            offerId = offerId[1];
1203        }
1204        var termId = location.search.match(/term_id=([A-Z0-9]+)/);
1205        if (termId !== null && termId.length > 1) {
1206            termId = termId[1];
1207        }
1208        if (offerId !== null && termId !== null) {
1209            tp.offer.show({'termId': termId, 'offerId': offerId});
1210        }
1211    }
1212
1213    // we are only tracking
1214    var templateId = params.templateId;
1215    var variantId = params.templateVariantId;
1216    if (params.containerSelector !== '#po-inline-articlegate-fullarticle' &&
1217        params.containerSelector !== '#po-overlay-articlegate-full-width-full-article-scroll-below' &&
1218        params.containerSelector !== '#po-inline-articlegate-partialarticle' &&
1219        params.containerSelector !== '#po-overlay-articlegate-full-width-scroll-below'
1220    ) {
1221        $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1222            trackPianoSimplified(params, response.name);
1223        });
1224        return;
1225    }
1226
1227
1228    $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1229        trackPiano(params, response.name);
1230    });
1231}
1232
1233function trackPiano(params, templateName) {
1234    trackPianoWithNewRelic(templateName);
1235
1236    if (typeof params.activeMeters === 'string') {
1237        activeMeters = JSON.parse(params.activeMeters);
1238    } else {
1239        activeMeters = params.activeMeters;
1240    }
1241
1242    var s = window.s;
1243    if (!s || !s.pageName) {
1244        // console.log("ADB: Setting s from backup");
1245        s = window.backupAdobe;
1246        window.s = s;
1247    }
1248
1249    // this would call when CL3 is a hard gate
1250    if (!activeMeters && data_layer.article.content_level === '3') {
1251        s.eVar59 = templateName;
1252        s.eVar58 = data_layer.article.content_level;
1253        s.events = "event91";
1254        s.linkTrackVars="eVar58,eVar2,eVar3,eVar4,eVar5,eVar6,eVar15,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,eVar79,eVar104,eVar106,eVar107,eVar108,eVar118,prop63,list3,events";
1255        s.linkTrackEvents="event91";
1256        s.tl(document, 'o', 'Metered Access Notice');
1257        s.events = '';
1258        return;
1259    }
1260
1261    if (!activeMeters) {
1262        return;
1263    }
1264
1265    var meterData = activeMeters[0];
1266
1267    var meterName = meterData.meterName.toLowerCase();
1268
1269    // track event 5
1270    if (meterName.indexOf('cl1') !== -1 || meterName.indexOf('cl2') !== -1 || meterName.indexOf('cl3') !== -1 || params.containerSelector === '#po-inline-articlegate-partialarticle' || params.containerSelector === '#po-overlay-articlegate-full-width-scroll-below') {
1271        s.eVar58 = data_layer.article.content_level;
1272        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1273        s.eVar59 = templateName;
1274        s.events = "event5";
1275        s.linkTrackVars="eVar58,eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1276        s.linkTrackEvents="event5";
1277    } else {
1278        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1279        s.eVar59 = templateName;
1280        s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1281    }
1282    s.tl(document, 'o', 'Metered Access Notice');
1283    s.events = '';
1284
1285}
1286
1287/**
1288 * Just track the template name in 78 for non-article-interrupts/gates
1289 */
1290function trackPianoSimplified(params, templateName)
1291{
1292    trackPianoWithNewRelic(templateName);
1293
1294    var s = window.s;
1295    if (!s || !s.pageName) {
1296        // console.log("ADB: Setting s from backup");
1297        s = window.backupAdobe;
1298        window.s = s;
1299    }
1300    s.eVar78 = templateName;
1301    s.events = 'event90';
1302    s.linkTrackEvents="event90";
1303    s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3,eVar78, events";
1304    s.tl(document, 'o', 'Piano Template');
1305}
1306
1307function raiseLaunchEvent(name) {
1308    var e = new Event('launch:piano:' + name);
1309    window.dispatchEvent(e);
1310}
1311
1312function removePianoToast() {
1313    setTimeout(() => {
1314        document.getElementById('po-overlay-toast-left').remove()
1315    }, 30000)
1316}
1317
1318function showPianoTarget(params) {
1319    handleOfferShow(params);
1320    trackLocation();
1321
1322    if ($(params.containerSelector).length > 0) {
1323        const displayType = $(params.containerSelector).attr('data-display');
1324
1325        if (displayType) {
1326            $(params.containerSelector).addClass(`shown-${displayType}`);
1327        } else {
1328            $(params.containerSelector).addClass('shown').show();
1329        }
1330
1331        if ($(params.containerSelector).hasClass('piano--block-level') || $(params.containerSelector).hasClass('piano--inside-block')) {
1332            $(params.containerSelector).show();
1333        }
1334
1335        if (
1336            params.containerSelector === '#po-overlay-articlegate-full-width-scroll-below' ||
1337            params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below'
1338        ) {
1339            handleFullWidthBanner(params.containerSelector);
1340        }
1341
1342        if ($(params.containerSelector) === '#po-inline-subscribe-page') {
1343            $(params.containerSelector).show();
1344        }
1345
1346        if (['#po-inline-blocksystem-target-e'].includes(params.containerSelector)) {
1347            $('#po-inline-blocksystem-target-e').show();
1348            $('.piano-promo-container').show();
1349        }
1350
1351        if (params.containerSelector === '#po-overlay-toast-left') {
1352            removePianoToast()
1353        }
1354
1355        if (params.containerSelector === '#po-overlay-toast-main-navigation') {
1356            removePianoToast()
1357        }
1358
1359        if (params.containerSelector === '#po-inline-articlewall-partialarticle-closable') {
1360            $('#po-inline-articlegate-partialarticle').css('display', 'none');
1361        }
1362
1363        if (params.containerSelector === '#po-inline-articlewall-fullarticle-closable') {
1364            $('#po-inline-articlegate-fullarticle').css('display', 'none');
1365        }
1366
1367        if (params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below-closable') {
1368            $('#po-overlay-articlegate-full-width-full-article-scroll-below').css('display', 'none');
1369        }
1370    }
1371}
1372
1373tp.push(["addHandler", "checkoutComplete", function(conversion) {
1374    var s = window.s;
1375    s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
1376    s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
1377    s.products = "Subscription : Metered Access;" + conversion.termId + ";1;"+conversion.chargeAmount;
1378    s.linkTrackEvents = "event4,purchase";
1379    s.purchaseID = conversion.termConversionId;
1380    s.pageName = '(www) /subscribe/complete/';
1381    // wipe out errors
1382    s.eVar31 = '';
1383    s.linkTrackVars="eVar2,eVar3,eVar5,eVar6,eVar7,eVar8,eVar9,eVar10,eVar15,eVar16,eVar17,eVar18,eVar19,eVar20,eVar22,eVar23,eVar24,eVar25,eVar26,eVar61,eVar62,events,products,purchaseID";
1384
1385    s.tl(true, 'o', 'Subscription');
1386
1387    $.cookie('resourceConverted', conversion.rid, {path: '/', domain: window.data_layer.site.cookie_domain});
1388    $.cookie('pianoConverted', '1', {path: '/', domain: window.data_layer.site.cookie_domain});
1389    raiseLaunchEvent('checkoutComplete');
1390
1391    // Clean Session Storage
1392    sessionStorage.removeItem('nq_selected_offer_id');
1393    sessionStorage.removeItem('nq_selected_term_id');
1394    sessionStorage.removeItem('nq_adobe_tracking_article_dimensions');
1395    sessionStorage.removeItem('nq_adobe_tracking_visiting_dimensions');
1396
1397    // Show Onboarding modal after subscription
1398    const lastPage = sessionStorage.getItem('last_piano_page_interacted_with');
1399    const baseUrl = lastPage || window.location.href;
1400
1401    const url = new URL(baseUrl, window.location.origin);
1402    url.searchParams.set('show-onboarding', 'yes');
1403
1404    setTimeout(() => {
1405        window.location.href = url.pathname + url.search;
1406    }, 2000);
1407}]);
1408
1409tp.push(["addHandler", "checkoutPaymentError", function(errorData) {
1410    var s = window.s;
1411    s.pageName = '(www) /subscribe/error/';
1412    s.eVar31 = errorData.message;
1413    s.tl(true, 'o', 'CheckoutPaymentError');
1414
1415    raiseLaunchEvent('checkoutPaymentError');
1416}]);
1417
1418tp.push(["addHandler", "checkoutError", function(errorData) {
1419    var s = window.s;
1420    s.pageName = '(www) /subscribe/error/';
1421    s.eVar31 = errorData.message;
1422    s.tl(true, 'o', 'CheckoutError');
1423    raiseLaunchEvent('checkoutError');
1424}]);
1425
1426tp.push(["addHandler", "startCheckout", function(options) {
1427    sessionStorage.setItem("nq_selected_offer_id", options.offerId);
1428    sessionStorage.setItem("nq_selected_term_id", options.termId);
1429
1430    if (!tp.user.isUserValid()) {
1431        window.location = '/user/create-account/subscribe/';
1432        return;
1433    }
1434
1435    var s = window.s;
1436    s.eVar2 = '(www) /subscribe/payment/';
1437    s.pageName = '(www) /subscribe/payment/';
1438    const storedAdobeArticleDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
1439    const storedAdobeVisitingDimensions = sessionStorage.getItem('nq_adobe_tracking_visiting_dimensions');
1440    if (storedAdobeVisitingDimensions) {
1441        const storedAdobeVisitingDimensionsObj = JSON.parse(storedAdobeVisitingDimensions);
1442        s.eVar10 = storedAdobeVisitingDimensionsObj.eVar10;
1443        s.eVar22 = storedAdobeVisitingDimensionsObj.eVar22;
1444        s.eVar23 = storedAdobeVisitingDimensionsObj.eVar23;
1445        s.eVar24 = storedAdobeVisitingDimensionsObj.eVar24;
1446    }
1447    if (storedAdobeArticleDimensions) {
1448        const storedAdobeArticleDimensionsObj = JSON.parse(storedAdobeArticleDimensions);
1449        s.eVar10 = storedAdobeArticleDimensionsObj.eVar10;
1450        s.eVar15 = storedAdobeArticleDimensionsObj.eVar15;
1451        s.eVar22 = storedAdobeArticleDimensionsObj.eVar22;
1452        s.eVar23 = storedAdobeArticleDimensionsObj.eVar23;
1453        s.eVar24 = storedAdobeArticleDimensionsObj.eVar24;
1454        s.eVar25 = storedAdobeArticleDimensionsObj.eVar25;
1455    }
1456    // wipe out errors
1457    s.eVar31 = '';
1458    s.events = '';
1459    raiseLaunchEvent('startCheckout');
1460    s.linkTrackVars="eVar10,eVar15,eVar22,eVar23,eVar24,eVar25";
1461    s.t();
1462}]);
1463
1464tp.push(["addHandler", "checkoutClose", function(conversion) {
1465    raiseLaunchEvent('checkoutClose');
1466
1467    // Did they abandon the cart? If so: was anything in their cart?
1468    if (typeof conversion.state === 'undefined' || conversion.state !== 'close') {
1469        return;
1470    }
1471    if (window.selectedOfferId === null || window.selectedTermId === null) {
1472        return;
1473    }
1474    $.post('/ws/piano/abandoned-cart/', {offer_id: window.selectedOfferId, term_id: window.selectedTermId});
1475}]);
1476
1477tp.push(["addHandler", "meterExpired", function(meterData){
1478    var msg = "<div><b>meterName:</b> " + meterData.meterName
1479        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1480        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1481        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1482        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1483        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1484    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1485        $('#piano-meter-value').html(msg);
1486        $('#piano-meter-display').show();
1487        $('#piano-meter-display-content').append(msg);
1488    }
1489    var cVal = window.location.href;
1490
1491    trackLocation(true);
1492
1493    console.log("Piano Meter Expired:", meterData.meterName);
1494    if (meterData.meterName === 'CL1 Meter') {
1495        console.log("Piano: Setting meter expired cookie");
1496        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1497    }
1498
1499    raiseLaunchEvent('meterExpired');
1500
1501}]);
1502
1503tp.push(["addHandler", "meterActive", function(meterData){
1504    var msg = "<div><b>meterName:</b> " + meterData.meterName
1505        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1506        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1507        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1508        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1509        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1510    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1511        $('#piano-meter-value').html(msg);
1512        $('#piano-meter-display').show();
1513        $('#piano-meter-display-content').append(msg);
1514    }
1515
1516    console.log("Piano Meter running total:", meterData.meterName,  meterData.totalViews, meterData.maxViews, meterData);
1517    if (meterData.meterName === 'CL1 Meter' && meterData.totalViews >= meterData.maxViews) {
1518        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1519    } else {
1520        $.cookie('isMeterExpired', 'no', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1521    }
1522}]);
1523
1524
1525
1526runPiano('unrestricted');
1527
1528</script>
1528
1529
1530
1531
1532    <link rel="apple-touch-icon" href="/resources/images/17416327/">
1533    <link rel="apple-touch-icon" sizes="72x72" href="/resources/images/17416326/">
1534    <link rel="apple-touch-icon" sizes="114x114" href="/resources/images/17416328/">
1535
1536
1537    <!-- Add iconify -->
1538    
1538<script src="https://code.iconify.design/1/1.0.7/iconify.min.js" integrity="sha384-jQq64HqdQD5xg0PPkpkCOW3x8Nsfx5UT1qWOpoJxLYy6Ef+5i+8xPoAj/I3B+ZMm" crossorigin="anonymous"></script>
1538
1539</head>
1540<body class="sticky-footer" data-cache-buster="vjoPdzgg" data-template="" data-template-colour="Blue" data-namespace="standard">
1541    <!--
1542  ##+ +##  ##: `#####.  #######  ###  ###      ######  `#####.  #######      ###  ,##  +#####
1543  +## ###' ##  #######  ######## ### ###       ######  #######  ########     ###  ,##  ######:
1544  .## #### ## ###   ### ###  ### ######        ##,    ###   ### ###  ###     ###  ,##  ##`
1545   ##,#+##:## ###   ### #######  ######        #####+ ###   ### #######      ###  ,##  +#####
1546   ####`####+ ###   ### ######   #######       #####+ ###   ### ######       ###  ,##     ####
1547   #### .###. '##   ##' ### ###  ### ,##:      ##,    '##   ##' ### ###      ###  ### '##  +##
1548   :###  ###   #######  ### `##+ ###  ###      ##,     #######  ### `##+     `#######  ######+
1549    ##:  ###    #####   ###  ### ###  ,###     ##,      #####   ###  ###       #####    ####+
1550
1551Developers, designers, testers - interested in working for us?
1552Contact this guy....https://uk.linkedin.com/in/hillsimon
1553-->
1554
1555
1556    <div style="height: 0px"><div id="DFP_out_of_page"></div></div>
1557
1558    <div id="paywallWindowOverlay"></div>
1559
1560
1561
1562    <div id="takeover">
1563        <div id="martini-config" class="layout">
1564            <div id="header-content">
1565                <!-- standard - header-1.html --> <header id="site-header" class="site-header site-header--1 header-bottom-margin" >
1566    
1567    <div class="header-topnav" role="navigation" aria-label="top-navigation">
1568    
1569    <div class="container-inner-width">
1570        <div class="header-topnav-links">
1571          <ul class="list-style-none">
1572             <li><a class="mar-nav--promo-link" href="/announcements/public_notices/">Public notices</a></li> <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="/advertising/">Book an ad</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Cars</a></li> <li><a class="mar-nav--promo-link" href="/homes/">Homes</a></li> <li><a class="mar-nav--promo-link" href="https://directory.worcesternews.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
1573          </ul>
1574        </div>
1575          <ul id="links-nav" class="header-topnav--links-nav list-style-none">
1576            <li class="links-nav-label"><span class="links-nav-label-text">More</span>
1577                <ul class="list-style-none">
1578                    <li class="dropdown-icon-closed">
1579                        <span class="iconify" data-icon="akar-icons:chevron-down"></span>
1580                    </li>
1581                    <li class="dropdown-icon-open" style="display: none;">
1582                        <span class="iconify" data-icon="akar-icons:chevron-up"></span>
1583                    </li>
1584
1585                    <li class="links-nav-container">
1586                        <ul class="list-style-none">
1587                            <li><a class="mar-nav--promo-link" href="/announcements/public_notices/">Public notices</a></li> <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="/advertising/">Book an ad</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Cars</a></li> <li><a class="mar-nav--promo-link" href="/homes/">Homes</a></li> <li><a class="mar-nav--promo-link" href="https://directory.worcesternews.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
1588                        </ul>
1589                    </li>
1590                </ul>
1591            </li>
1592          </ul>
1593    </div>
1594    
1595        </div>
1596
1597    <div class="site-brand container-inner-width">
1598        <div class="site-brand__container">
1599        <a href="/">
1600            <img src="/resources/images/small_site_logo/" alt="Worcester News" class="site-brand__brand-image"/>
1601        </a>
1602        </div>
1603        <div class="simple-header-top-navigation">
1604    <div class="simple-header-top-navigation__links">
1605
1606        <div class="simple-header-top-navigation__links--primary-links header-primary-links">
1607            
1608            <a href="/subscribe/" aria-label="subscribe button" class="mar-btn mar-btn--promo-primary">
1609                Subscribe
1610            </a>
1611            
1612
1613            
1614            <ul class="list-style-none top-nav-overflow">
1615                <li><a  href="/pagesuite/" class="mar-btn mar-btn--promo-secondary">Digital Edition</a></li> <li><a  href="/puzzles/" class="mar-btn mar-btn--promo-primary">Puzzles</a></li> 
1616            </ul>
1617            
1618        </div>
1619
1620        
1621        
1622        <div class="simple-header-top-navigation__links--classifieds">
1623            
1624        </div>
1625        
1626        
1627
1628    </div>
1629    
1630    <div class="simple-header-top-navigation__links--account">
1631        
1632        <a id="user-login-not-loggedin" href="/user/login/?redirect_url=/user/account/" class="simple-header-top-navigation__user-login mar-btn" title="User Account">
1633            <div aria-label="User Account Button" id="headerUserAccountButton">
1634                <svg xmlns="http://www.w3.org/2000/svg " width="14" height="16" viewB
1634ox="0 0 10 14" fill="none">
1635<circle cx="5" cy="3.85718" r="3" fill="black"/>
1636<ellipse cx="5" cy="10.2857" rx="5" ry="2.85714" fill="black"/>
1637</svg>
1638            </div>
1639        </a>
1640        
1641    </div>
1642    
1643
1644    <button aria-expanded="false" aria-label="Open the menu" class="simple-header-top-navigation__mega-menu-btn primary-nav__menu--more-btn">
1645        <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M3 6h18M3 12h18M3 18h18"/></svg>
1646    </button>
1647
1648</div>
1649    </div>
1650
1651    <div id="mega-menu" class="mega-menu" style="display: none;">
1652    <div class="mega-menu__container mega-menu__wrapper">
1653        <div class="mega-menu__cancel-button">
1654            <i aria-expanded="true" aria-hidden="true" aria-label="Close the menu" class="mega-menu__cancel-button--icon">
1655                <span class="iconify" data-icon="eva:close-fill" data-inline="false"></span>
1656                <div>Close</div>
1657            </i>
1658        </div>
1659
1660    
1661        <div class="mega-menu-subscribe-banner">
1662            <span>Stay ahead with a digital subscription</span>
1663            <a href="/subscribe/">Subscribe</a>
1664        </div>
1665    
1666
1667    
1668        <div class="mega-menu__features expanded-sub-nav">
1669        <div class="mega-menu__features--links">
1670            
1671                <h4 class="prefix mega-menu__features--prefix link-item">Newsletters</h4>
1672            
1673            <a href="/newsletters/964/"  class="col link-item">Morning briefing</a>
1674            
1675
1676                <a href="/newsletters/966/"  class="col link-item">Daily catch-up</a>
1677            
1678
1679                <a href="/newsletters/2201/"  class="col link-item">Crime and court</a>
1680            
1681
1682                <a href="/newsletters/2202/"  class="col link-item">Politics Worcester</a>
1683            
1684
1685                <a href="/newsletters/2204/"  class="col link-item">Woo! It's the weekend</a>
1686            
1687
1688                <a href="/newsletters/965/"  class="col link-item">Sports AM</a>
1689            
1690
1691                <a href="/newsletters/3232/"  class="col link-item">Worcester Warriors</a>
1692            
1693            </div>
1694            <hr class="divider none">
1695        </div>
1696    
1697
1698        <div class="mega-menu__search">
1699          <form method="get" action="/search/">
1700              <label class="mega-menu__search--title" for="searchbar-input">Search</label>
1701              <div class="mega-menu__search--bar">
1702                  <input id="searchbar-input" class="searchbar-input" type="text" name="search" placeholder="Search Worcester News">
1703                  <button class="searchbar-btn mira-search-button" type="submit"><span class="iconify" data-icon="fe:search" data-inline="false"></span></button>
1704              </div>
1705          </form>
1706        </div>
1707
1708        <div class="mega-menu__main-list link-list">
1709      <div class="mega-menu__main-list--list-item">
1710                <div>
1711                    <div>
1712                        <a href="/news/">
1713                            <h3><span class="mega-menu__main-list--parent-link">News</span></h3>
1714                        </a>
1715                    </div>
1716        
1717                    <div class="mega-menu__main-list--child-links">
1718                      <div class="child-item">
1719                          <a href="/news/worcester/">Worcester</a>
1720                      </div>
1721                  
1722
1723                      <div class="child-item">
1724                          <a href="/news/county_news/">County News</a>
1725                      </div>
1726                  
1727
1728                      <div class="child-item">
1729                          <a href="/news/droitwich/">Droitwich</a>
1730                      </div>
1731                  
1732
1733                      <div class="child-item">
1734                          <a href="/news/business/">Business</a>
1735                      </div>
1736                  
1737
1738                      <div class="child-item">
1739                          <a href="/news/crime/">Crime</a>
1740                      </div>
1741                  
1742
1743                      <div class="child-item">
1744                          <a href="/news/national/">UK News</a>
1745                      </div>
1746                    </div>
1747        
1748                </div>
1749                <div class="divider"></div>
1750            </div>
1751      
1752
1753            <div class="mega-menu__main-list--list-item">
1754                <div>
1755                    <div>
1756                        <a href="/sport/">
1757                            <h3><span class="mega-menu__main-list--parent-link">Sport</span></h3>
1758                        </a>
1759                    </div>
1760        
1761                    <div class="mega-menu__main-list--child-links">
1762                      <div class="child-item">
1763                          <a href="/sport/local/">Local</a>
1764                      </div>
1765                  
1766
1767                      <div class="child-item">
1768                          <a href="/sport/wrfc/">Worcester Warriors</a>
1769                      </div>
1770                  
1771
1772                      <div class="child-item">
1773                          <a href="/sport/wccc/">Worcestershire CCC</a>
1774                      </div>
1775                  
1776
1777                      <div class="child-item">
1778                          <a href="/sport/wcfc/">Worcester City FC</a>
1779                      </div>
1780                  
1781
1782                      <div class="child-item">
1783                          <a href="/sport/raiders/">Worcester Raiders FC</a>
1784                      </div>
1785                    </div>
1786        
1787                </div>
1788                <div class="divider"></div>
1789            </div>
1790      
1791
1792            <div class="mega-menu__main-list--list-item">
1793                <div>
1794                    <div>
1795                        <a href="/leisure/">
1796                            <h3><span class="mega-menu__main-list--parent-link">What's On</span></h3>
1797                        </a>
1798                    </div>
1799        
1800                    <div class="mega-menu__main-list--child-links">
1801                      <div class="child-item">
1802                          <a href="/leisure/local-events/">Local Events</a>
1803                      </div>
1804                  
1805
1806                      <div class="child-item">
1807                          <a href="/leisure/car_boot_sales/">Car Boot Sales</a>
1808                      </div>
1809                  
1810
1811                      <div class="child-item">
1812                          <a href="/leisure/exhibitions/">Exhibitions</a>
1813                      </div>
1814                  
1815
1816                      <div class="child-item">
1817                          <a href="/leisure/nightlife/">Nightlife</a>
1818                      </div>
1819                  
1820
1821                      <div class="child-item">
1822                          <a href="/leisure/comedy/">Comedy</a>
1823                      </div>
1824                  
1825
1826                      <div class="child-item">
1827                          <a href="/leisure/theatre/">Theatre</a>
1828                      </div>
1829                  
1830
1831                      <div class="child-item">
1832                          <a href="/leisure/reviews/">Reviews</a>
1833                      </div>
1834                    </div>
1835        
1836                </div>
1837                <div class="divider"></div>
1838            </div>
1839      
1840
1841            <div class="mega-menu__main-list--list-item">
1842                <div>
1843                    <div>
1844                        <a href="/awards/">
1845                            <h3><span class="mega-menu__main-list--parent-link">Awards</span></h3>
1846                        </a>
1847                    </div>
1848        
1849                    <div class="mega-menu__main-list--child-links">
1850                      <div class="child-item">
1851                          <a href="/awards/health-and-social-care-awards/">Health &amp; Social Care Awards</a>
1852                      </div>
1853                    </div>
1854        
1855                </div>
1856                <div class="divider"></div>
1857            </div>
1858      
1859
1860            <div class="mega-menu__main-list--list-item">
1861                <div>
1862                    <div>
1863                        <a href="/magazines/">
1864                            <h3><span class="mega-menu__main-list--parent-link">E-Editions</span></h3>
1865                        </a>
1866                    </div>
1867        
1868                    <div class="mega-menu__main-list--child-links">
1869                      <div class="child-item">
1870                          <a href="/magazines/all/">All</a>
1871                      </div>
1872                  
1873
1874                      <div class="child-item">
1875                          <a href="/magazines/worcestershireinpandemic/">Worcestershire in the Pandemic</a>
1876                      </div>
1877                  
1878
1879                      <div class="child-item">
1880                          <a href="/magazines/ivingmagazine/">Midlands Living</a>
1881                      </div>
1882                  
1883
1884                      <div class="child-item">
1885                          <a href="/magazines/prime/">Prime</a>
1886                      </div>
1887                    </div>
1888        
1889                </div>
1890                <div class="divider"></div>
1891            </div>
1892      
1893
1894            <div class="mega-menu__main-list--list-item">
1895                <div>
1896                    <div>
1897                        <a href="/notices/">
1898                            <h3><span class="mega-menu__main-list--parent-link">Notices</span></h3>
1899                        </a>
1900                    </div>
1901        
1902                    <div class="mega-menu__main-list--child-links">
1903                      <div class="child-item">
1904                          <a href="/notices/bereavement-guide/">Bereavement Guide</a>
1905                      </div>
1906                    </div>
1907        
1908                </div>
1909                <div class="divider"></div>
1910            </div>
1911      
1912
1913            <div class="mega-menu__main-list--list-item">
1914                <div>
1915                    <div>
1916                        <a href="/submit-an-event/">
1917                            <h3><span class="mega-menu__main-list--parent-link">Submit an Event</span></h3>
1918                        </a>
1919                    </div>
1920        
1921                </div>
1922                <div class="divider"></div>
1923            </div>
1924      
1925
1926            <div class="mega-menu__main-list--list-item">
1927                <div>
1928                    <div>
1929                        <a href="/young-reporter/">
1930                            <h3><span class="mega-menu__main-list--parent-link">Young Reporter</span></h3>
1931                        </a>
1932                    </div>
1933        
1934                </div>
1935                <div class="divider"></div>
1936            </div>
1937      
1938
1939            <div class="mega-menu__main-list--list-item">
1940                <div>
1941                    <div>
1942                        <a href="/newspaper-archive/">
1943                            <h3><span class="mega-menu__main-list--parent-link">Newspaper Archive</span></h3>
1944                        </a>
1945                    </div>
1946        
1947                </div>
1948                <div class="divider"></div>
1949            </div>
1950        </div>
1951    </div>
1952
1953    <div class="mega-menu__sticky">
1954        <ul class="list-style-none mega-menu__sticky--list">
1955            <div class="mega-menu__sticky--primary-links">
1956                
1957                <li>
1958                <a href="/subscribe/">
1959                    <button class="mar-btn--promo-primary">
1960                        Subscribe
1961                    </button>
1962                </a></li>
1963            
1964                <li><a  href="/pagesuite/" class="mar-btn mar-btn--promo-secondary">Digital Edition</a></li> <li><a  href="/puzzles/" class="mar-btn mar-btn--promo-primary">Puzzles</a></li> 
1965            </div>
1966            <li><a class="mar-nav--promo-link" href="/announcements/public_notices/">Public notices</a></li> <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="/advertising/">Book an ad</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Cars</a></li> <li><a class="mar-nav--promo-link" href="/homes/">
1966Homes</a></li> <li><a class="mar-nav--promo-link" href="https://directory.worcesternews.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
1967        </ul>
1968    </div>
1969</div>
1970
1971
1972    <!-- standard - SimplePrimaryNavigation.html --> <nav aria-label="Main navigation" id="primary-nav" class="primary-nav">
1973    <div class="primary-nav__container container-inner-width">
1974        <span class="primary-nav__left">
1975          <nav class="primary-nav__menu">
1976              <div class="primary-nav__menu-container">
1977  <div class="primary-nav__menu--item">
1978                      <a class="primary-nav__menu--link" href="/news/">News</a>
1979                  </div>
1980  
1981
1982                  <div class="primary-nav__menu--item">
1983                      <a class="primary-nav__menu--link" href="/sport/">Sport</a>
1984                  </div>
1985  
1986
1987                  <div class="primary-nav__menu--item">
1988                      <a class="primary-nav__menu--link" href="/leisure/">What's On</a>
1989                  </div>
1990  
1991
1992                  <div class="primary-nav__menu--item">
1993                      <a class="primary-nav__menu--link" href="/awards/">Awards</a>
1994                  </div>
1995  
1996
1997                  <div class="primary-nav__menu--item">
1998                      <a class="primary-nav__menu--link" href="/magazines/">E-Editions</a>
1999                  </div>
2000  
2001
2002                  <div class="primary-nav__menu--item">
2003                      <a class="primary-nav__menu--link" href="/notices/">Notices</a>
2004                  </div>
2005  
2006
2007                  <div class="primary-nav__menu--item">
2008                      <a class="primary-nav__menu--link" href="/submit-an-event/">Submit an Event</a>
2009                  </div>
2010  
2011
2012                  <div class="primary-nav__menu--item">
2013                      <a class="primary-nav__menu--link" href="/young-reporter/">Young Reporter</a>
2014                  </div>
2015  
2016
2017                  <div class="primary-nav__menu--item">
2018                      <a class="primary-nav__menu--link" href="/newspaper-archive/">Newspaper Archive</a>
2019                  </div>
2020              </div>
2021          </nav>
2022        </span>
2023        <span class="primary-nav__right">
2024            <div class="primary-nav__menu--more-btn">
2025                <button aria-expanded="false" aria-label="Open the menu" class="more-link more-burger-icon">
2026                    <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M3 6h18M3 12h18M3 18h18"/></svg>
2027                </button>
2028            </div>
2029            <div class="primary-nav__right--search">
2030                <a class="primary-nav__container--search-icon search-icon" href="#" aria-label="Search for article"><span class="iconify" data-icon="ion:search-circle-sharp" data-inline="false"></span></a>
2031            </div>
2032        </span>
2033    </div>
2034</nav>
2035
2036
2037
2038    
2039
2040
2041</header>
2042            </div>
2043
2044            <div id="redesign-content">
2045                <div id="module-content" class="content">
2046                    <div class="piano--block-level block-bottom-margin" id="po-inline-banner-top-hero-content"></div>
2047
2048
2049                    <!-- standard - ContactUs.html --> <div class="block-contact-us" aria-labelledby="contact-help-heading">
2050    <h1 id="contact-help-heading" class="block-heading">Contact &amp; Help</h1>
2051    <p class="block-contact-us__intro">
2052        In need of help, support, or need to contact us, hopefully you’ll find the information you need below...
2053    </p>
2054
2055    <h2 class="block-heading" id="customer-support-heading">Customer Support</h2>
2056    <div class="block-contact-us__cta-section" aria-labelledby="customer-support-heading">
2057
2058        
2059        
2060        
2061         <!-- If not Forest Piano group with home delivery -->
2062        <div class="cta-item">
2063            <a href="/contact/faq/digital-subscriptions/" class="mar-btn mar-btn--md mar-btn--light">Digital
2064                subscriptions</a>
2065            <p>For help or questions about digital subscriptions, including help with your current subscription</p>
2066        </div>
2067        <div class="cta-item">
2068            <a href=" /contact/faq/newspaper-support" class="mar-btn mar-btn--md mar-btn--promo-secondary">Newspaper
2069                Home Delivery</a>
2070            <p>
2070For help with newspaper home delivery &amp; subscriptions, including help with your current subscription
2071            </p>
2072        </div>
2073        
2074        
2075
2076        
2077
2078        
2079        <div class="cta-item">
2080            <a href="/contact/faq/general-support/" class="mar-btn mar-btn--md mar-btn--dark">General Support</a>
2081            <p>Help &amp; questions about technical, account, or any other issues you may be experiencing with any of
2082                our products</p>
2083        </div>
2084    </div>
2085
2086    <div class="block-contact-us__grid_container">
2087        <div>
2088            <div class="social-field" style="display: none;">
2089                <p class="social-field-text">Follow us</p>
2090                <!-- standard - SocialBar.html --> <div class="social-bar  ">
2091  <!-- standard - SocialShareButton.html --> <div 
2092    aria-label="Share"
2093    class="social-share-button mar-btn"
2094    id="social-share-button">
2095    <p class="social-share-button__text" aria-label="Share">Share</p>
2096    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2097        <path d="M11.6113 1.5C11.9036 1.49999 12.1919 1.57147 12.4535 1.70882C12.7152 1.84616 12.943 2.04562 13.119 2.2915C13.2951 2.53738 13.4146 2.82297 13.4682 3.12578C13.5217 3.4286 13.5079 3.74038 13.4277 4.0366C13.3475 4.33281 13.2032 4.60537 13.006 4.83282C12.8089 5.06027 12.5644 5.23641 12.2918 5.34737C12.0191 5.45834 11.7257 5.5011 11.4347 5.47229C11.1437 5.44348 10.863 5.34389 10.6148 5.18135C10.595 5.195 10.5746 5.20756 10.5536 5.21899L5.94303 7.73788C5.94569 7.80155 5.94569 7.86531 5.94303 7.92897L5.95196 7.93476L10.3586 10.6867C10.688 10.379 11.109 10.2021 11.5489 10.1867C11.9889 10.1714 12.4201 10.3184 12.7681 10.6025C13.1161 10.8865 13.3591 11.2898 13.455 11.7425C13.5509 12.1953 13.4937 12.6691 13.2933 13.0822C13.0929 13.4953 12.762 13.8216 12.3576 14.0048C11.9532 14.1881 11.5008 14.2167 11.0785 14.0857C10.6562 13.9548 10.2906 13.6725 10.0447 13.2877C9.79893 12.9029 9.68839 12.4396 9.73221 11.978L5.37504 9.25791C5.10887 9.53171 4.77193 9.71659 4.40645 9.78938C4.04098 9.86216 3.66325 9.81961 3.32064 9.66705C2.97802 9.51449 2.68577 9.25872 2.48054 8.93181C2.27531 8.6049 2.16624 8.22141 2.167 7.82943C2.16775 7.43745 2.27831 7.05444 2.4848 6.72841C2.69129 6.40239 2.98453 6.14787 3.32773 5.99679C3.67093 5.8457 4.04882 5.80477 4.41401 5.87912C4.7792 5.95347 5.11543 6.1398 5.38053 6.41474L9.78647 4.00731C9.71119 3.71225 9.70138 3.40289 9.7578 3.10318C9.81421 2.80348 9.93533 2.52149 10.1118 2.27906C10.2882 2.03662 10.5153 1.84025 10.7753 1.70515C11.0354 1.57005 11.3214 1.49985 11.6113 1.5Z" fill="#222222"/>
2098    </svg>
2099</div>
2100
2101  
2102    
2103  
2104</div>
2105
2106            </div>
2107            <div class="block-contact-us__grid_container--card" aria-labelledby="main-details-heading">
2108                <div id="main-details-heading" class="block-contact-us__grid_container--card-heading block-heading">Main
2109                    Details</div>
2110                
2111                <div class="block-contact-us__grid_container--card-title">Address:</div>
2112                <address class="block-contact-us__grid_container--card-small-text">
2113                    
2114                    Worcester News,
2115                    
2116                    
2117                    Rear First Floor Office Redhill House,
2118                    
2119                    
2120                    227 London Road,
2121                    
2122                    
2123                    Worcester,
2124                    
2125                    
2126                    Worcestershire,
2127                    
2128                    
2129                    WR5 2JG
2130                    
2131                </address>
2132                
2133                <div class="block-contact-us__grid_container--card-title  block-contact-us__spacing ">Telephone:</div>
2134                <div class="block-contact-us__grid_container--card-small-text">
2135                    <a href="tel:(01905) 748200"
2136                        aria-label="Call (01905) 748200">(01905) 748200</a>
2137                </div>
2138                
2139                
2140
2141                <div class="block-contact-us__grid_container--card-panel">
2142                    Inside the newsroom -
2143                    <a href="/author/journalists/">&nbsp;View all our journalists</a>
2144                </div>
2145                
2146                <div class="block-contact-us__grid_container--card-title block-contact-us__spacing">Editor:</div>
2147                <div
2148                    class="block-contact-us__grid_container--card-small-text block-contact-us__grid_container--card-link">
2149                    Stephanie Preece
2150                    <a href="mailto:[email protected]">[email protected]</a>
2151                    <span aria-label="Editor telephone">(01905) 742243</span>
2152                </div>
2153                
2154
2155                
2156                <div class="block-contact-us__grid_container--card-title block-contact-us__spacing">News desk:</div>
2157                <div
2158                    class="block-contact-us__grid_container--card-small-text block-contact-us__grid_container--card-link">
2159                    <a href="mailto:[email protected]">[email protected]</a>
2160                    <span aria-label="News desk telephone">(01905) 742256</span>
2161                </div>
2162                
2163
2164            </div>
2165
2166            <div class="block-contact-us__grid_container--banner" aria-labelledby="get-involved-heading">
2167                <div id="get-involved-heading" class="block-contact-us__grid_container--banner-heading block-heading">
2168                    Get <em>involved</em> with the news
2169                </div>
2170                <div class="block-contact-us__grid_container--banner-content">
2171                    <div class="block-contact-us__grid_container--banner-text">
2172                        Got a story, lead, picture, or video you would like to share with us?
2173                    </div>
2174                    <div>
2175                        <a href="/send-us-your-news/" class="mar-btn mar-btn--md mar-btn--light">
2176                            Send us your news
2177                        </a>
2178                    </div>
2179                </div>
2180            </div>
2181            
2182            <div class="block-contact-us__grid_container--card" aria-labelledby="newspaper-sales-heading">
2183                <div id="newspaper-sales-heading" class="block-contact-us__grid_container--card-heading block-heading">
2184                    Newspaper Sales</div>
2185                <div
2186                    class="block-contact-us__grid_container--card-small-text block-contact-us__grid_container--card-link">
2187                    <a href="mailto:[email protected]">[email protected]</a>
2188                    <span aria-label="Newspaper sales telephone">(01905) 742207</span>
2189                </div>
2190            </div>
2191            
2192            
2193            <div class="block-contact-us__grid_container--card" aria-labelledby="commercial-heading">
2194                <div id="commercial-heading" class="block-contact-us__grid_container--card-heading block-heading">
2195                    Commercial</div>
2196                <p>
2197                    <a href="/advertising/" class="mar-btn mar-btn--md mar-btn--dark">Book an advert</a>
2198                </p>
2199                <div class="block-contact-us__grid_container--card-title block-contact-us__spacing ">Advertising:</div>
2200                <div class="block-contact-us__grid_container--card-small-text">
2201                    <div class="block-contact-us__grid_container--card-link">
2202                        <a href="mailto:[email protected]">
2203                            [email protected]
2204                        </a>
2205                        <span aria-label="Advertising telephone">(01905) 742372</span>
2206                    </div>
2207                </div>
2208                
2209                <div class="block-contact-us__grid_container--card-title block-contact-us__spacing">Recruitment:</div>
2210                <div class="block-contact-us__grid_container--card-small-text">
2211                    <div class="block-contact-us__grid_container--card-link">
2212                        <a href="mailto:[email protected]">
2213                            [email protected]
2214                        </a>
2215                        <span aria-label="Recruitment telephone">(0800) 9520111</span>
2216                    </div>
2217                </div>
2218                
2219            </div>
2220            
2221            
2222            <div class="block-contact-us__grid_container--card" aria-labelledby="other-info-heading">
2223                <div id="other-info-heading" class="block-contact-us__grid_container--card-heading block-heading">Other
2224                    Information</div>
2225                <div class="block-contact-us__grid_container--card-text"><p>
2226  <strong>Family Announcements</strong><br>
2227  01905 748300<br>
2228  <a href="mailto:[email protected]?subject=BMD%20Query%20Worcester%20News">[email protected]</a>
2229</p>
2230<p>
2231
2232</p>
2233<p>
2234  <strong>Public Notices (inc Goods Vehicle and Premises Licence Applications)</strong><br>
2235  01905 748300
2236</p>
2237<p>
2238  <a href="mailto:[email protected]">[email protected]</a>
2239</p>
2240<p>
2241  <br>
2242  <strong>For delivery of your Worcester News</strong><br>
2243  01905 742210
2244</p></div>
2245            </div>
2246            
2247
2248        </div>
2249        <!-- end of grid 1 container -->
2250        <div>
2251            
2252            <div class="block-contact-us__seo-section" aria-labelledby="localiq-heading">
2253                <img src="/resources/responsive-static/images/LocaliQ.svg" alt="LOCALiQ logo">
2254                <h2 id="localiq-heading">Digital Marketing Services from LOCALiQ in
2255                    <a href="https://localiq.co.uk/locations/worcester?utm_source=Worcester_News&utm_medium=referral&utm_campaign=Contact_Us_Page" target="_blank" rel="nofollow">Worcester
2256                    </a>
2257                </h2>
2258                <p>
2259                    <strong>LOCALiQ</strong>
2260                    is an award-winning Digital Marketing Agency, specialising in local marketing and accelerating
2261                    growth for UK businesses.
2262                    Part of <strong> Newsquest Media Group Ltd,</strong> publisher of The Worcester News, LOCALiQ is
2263                    based in over
2264                    <strong>
2265                        <a href="https://localiq.co.uk/locations?utm_source=NQ&utm_medium=referral++&utm_campaign=contact"
2266                            rel="nofollow" target="_blank">
2267                            35 UK locations
2268                        </a>
2269                    </strong> and delivers exceptional results for B2B, B2C, e-commerce and services businesses.
2270                </p>
2271
2272                <div class="extra-text">
2273                    <a href="https://localiq.co.uk/digital-marketing-services/ppc?utm_source=NQ&utm_medium=referral++&utm_campaign=contact"
2274                        target="_blank" rel="nofollow">PPC,</a>
2275                    <a href="https://localiq.co.uk/digital-marketing-services/seo?utm_source=NQ&utm_medium=referral++&utm_campaign=contact"
2276                        target="_blank" rel="nofollow"> SEO,</a> and
2277                    <a href="https://localiq.co.uk/digital-marketing-services/web-design?utm_source=NQ&utm_medium=referral++&utm_campaign=contact"
2278                        target="_blank" rel="nofollow"> Website Design</a> are just some of the solutions LOCALiQ can
2279                    support your business with.
2280                </div>
2281                <div class="cta-section">
2282                    <div class="mar-btn mar-btn--md mar-btn--dark">
2283                        <a href="https://localiq.co.uk/digital-marketing-services?utm_source=NQ&utm_medium=referral++&utm_campaign=contact"
2284                            target="_blank" rel="nofollow">View our digital marketing services
2285                        </a>
2286                    </div>
2287                    <p> or
2288                        <strong>
2289                            <a href="https://localiq.co.uk/contact-us?utm_source=NQ&utm_medium=referral++&utm_campaign=contact"
2290                                target="_blank" rel="nofollow" class="contact-us-link">Contact us</a>
2291                        </strong>
2292                    </p>
2293                </div>
2294            </div>
2295            
2296            <div class="block-contact-us__grid_container--card" aria-labelledby="notices-heading">
2297                <div id="notices-heading" class="block-contact-us__grid_container--card-heading block-heading">Notices
2298                    and Announcements
2299                </div>
2300                <div class="block-contact-us__grid_container--card-text">
2301                    <p>
2301Remember the life of a loved one with a notice in the newspaper and an online notice page for
2302                        friends and
2303                        family, or celebrate a happy occasion</p>
2304                </div>
2305                <a href="/notices/self-service/category"
2306                    class="mar-btn mar-btn--md mar-btn--dark block-contact-us__spacing">
2307                    Book a death notice
2308                </a>
2309                <a href="https://selfservice.newsquest.co.uk/TouchpointSS/SDE#/"
2310                    class="mar-btn mar-btn--md mar-btn--promo-secondary block-contact-us__spacing">
2311                    Book a celebration announcement
2312                </a>
2313            </div>
2314            <div class="block-contact-us__grid_container--card" aria-labelledby="careers-heading">
2315                <div id="careers-heading" class="block-contact-us__grid_container--card-heading block-heading">Careers
2316                </div>
2317                <div class="block-contact-us__grid_container--card-text">
2318                    <p>
2319                        <strong>The Worcester News</strong> is part of
2320                        <strong><a class="nq-link" href="https://www.newsquest.co.uk/">Newsquest Media
2321                                Group</a></strong>,
2322                        a leading local news &amp; magazine publisher
2323                        with a portfolio of more than 200 brands.
2324                    </p>
2325                    <div class="block-contact-us__grid_container--card-other-link">
2326                        <a href="https://www.newsquest.co.uk/careers">What we offer</a>
2327                        <a href="https://careers.newsquest.co.uk/#js-careers-jobs-block">Current vacancies</a>
2328                    </div>
2329                </div>
2330            </div>
2331            <div class="block-contact-us__grid_container--card" aria-labelledby="policies-heading">
2332                <div id="policies-heading" class="block-contact-us__grid_container--card-heading block-heading">Policies
2333                    &amp; T&amp;Cs</div>
2334                <div class="block-contact-us__grid_container--card-text">
2335                    <p>
2336                        To view our full policies including
2337                        <a class="nq-link" href="https://www.newsquest.co.uk/legal/terms-conditions/">Terms &amp;
2338                            Conditions</a>,
2339                        <a class="nq-link" href="https://www.newsquest.co.uk/terms-of-advertising">Terms of
2340                            Advertising</a>,
2341                        <a class="nq-link" href="https://www.newsquest.co.uk/legal/contributor-terms/">Contributor
2342                            Terms</a>,
2343                        <a class="nq-link" href="https://www.newsquest.co.uk/domains">Information for Domain Name
2344                            Customers</a>,
2345                        use the links provided.
2346                        For more...
2347
2348                    </p>
2349                    <div class="block-contact-us__grid_container--card-other-link">
2350                        <span>Visit</span> <a href="https://www.newsquest.co.uk/">www.newsquest.co.uk</a>
2351                    </div>
2352                </div>
2353            </div>
2354        </div>
2355        <!-- end of grid 1 container -->
2356    </div>
2357</div>
2358                </div>
2359            </div>
2360
2361            <footer class="site-footer" aria-label="site-footer">
2362    <div class="container-inner-width">
2363        <div class="links-grid" aria-label="site-footer-links">
2364            <section class="get-in-touch-section">
2365                <h2>Get in Touch</h2>
2366                <a href="/contact/">Contact Us</a><a href="/advertising/">Advertise</a><a href="/homedelivery/">Newspaper Home Delivery</a><a href="/send-us-your-news/">Send Us Your News</a><a href="/submit-an-event/">Add Your Event For Free</a><a href="/publications/">Our Publications</a>
2367            </section>
2368            <section class="follow-us-section">
2369                <h2>Follow Us</h2>
2370<a
2371                        class="footer__social-media--link"
2372                        href="https://www.facebook.com/theworcesternews?fref=ts"
2373                        title="Worcester News"
2374                        role="link"
2375                        data-media-type="facebook"
2376                    >
2377                        <i class="footer__social-media--icon iconify"></i>
2378                        Worcester News
2379                    </a>
2380
2381
2382                    <a
2383                        class="footer__social-media--link"
2384                        href="https://www.facebook.com/worcesternewssport?fref=ts"
2385                        title="Worcester News Sport"
2386                        role="link"
2387                        data-media-type="facebook"
2388                    >
2389                        <i class="footer__social-media--icon iconify"></i>
2390                        Worcester News Sport
2391                    </a>
2392
2393
2394                    <a
2395                        class="footer__social-media--link"
2396                        href="https://twitter.com/worcesternews"
2397                        title="@worcesternews"
2398                        role="link"
2399                        data-media-type="twitter"
2400                    >
2401                        <i class="footer__social-media--icon iconify"></i>
2402                        @worcesternews
2403                    </a>
2404
2405
2406                    <a
2407                        class="footer__social-media--link"
2408                        href="https://twitter.com/Worcesternewsp3"
2409                        title="Worcester News Sport"
2410                        role="link"
2411                        data-media-type="twitter"
2412                    >
2413                        <i class="footer__social-media--icon iconify"></i>
2414                        Worcester News Sport
2415                    </a>
2416            </section>
2417            <section class="useful-links-section">
2418                <h2>Useful Links</h2>
2419                <div class="useful-links">
2420                    <section>
2421                        <a href="/subscribe/">Subscriptions</a><a href="/newsletters/">Newsletters</a><a href="/reader-rewards/">Reader Rewards</a><a href="/notices/">Death Notices</a><a href="/announcements/">Announcements</a><a href="/announcements/public_notices/">Public Notices</a>
2422                    </section>
2423                    <section>
2424                        <a href="https://www.exchangeandmart.co.uk/" target="_blank">Exchange and Mart</a><a href="https://newsquest.newsprints.co.uk/" target="_blank">Photo Sales</a><a href="http://leap.worcesternews.co.uk" target="_block">Leap</a><a href="/archive/" style="display: inline-block">Archive</a> | <a href="/misc/sitemap/" style="display: inline-block">Sitemap</a><a href="/gdpr/" class="gdpr-option-v2" data-v2-id="1170586" data-is-gate="yes" rel="nofollow">Manage Consent</a><a href="https://www.newsquest.co.uk/legal/ai-notice/" target="_blank">AI Notice</a>
2425                    </section>
2426                </div>
2427            </section>
2428            <section class="ipso-terms">
2429                <img class="ipso-logo" src="/resources/responsive-static/mds/images/ipso-regulated.png" alt="IPSO Regulated image" />
2430                <p class="ipso-copy">This website and associated newspapers adhere to the Independent Press Standards Organisation's
2431    Editors' Code of Practice. If you have a complaint about the editorial content which relates to
2432    inaccuracy or intrusion, then please <a class="footer__ipso-terms--link" href="/contact">
2433    contact the editor here</a>.
2434    If you are dissatisfied with the response provided you can
2435    <a class="footer__ipso-terms--link" href="https://www.ipso.co.uk/contact-us/" target="_block">contact IPSO here</a></p>
2436            </section>
2437        </div>
2438        <div class="notice" aria-label="site-footer-notice">
2439            <img src="/resources/responsive-static/mds/images/newsquest.png" alt="Newsquest" style="width: 193px"/>
2440            <p><strong>&copy; 2001-2026. The Worcester News</strong> is owned and operated by Newsquest Media Group Ltd, an audited local newspaper network.</p>
2441            <p>Visit <a href="https://www.newsquest.co.uk/" target="_blank">newsquest.co.uk</a> to view our <a href="https://www.newsquest.co.uk/our-policies/" target="_blank">policies</a>, <a href="https://www.newsquest.co.uk/legal/" target="_blank" >terms</a> and <a href="https://www.newsquest.co.uk/legal/" target="_blank" >legal agreements</a>.</p>
2442            <p>The Echo Building, 18 Albert Road, Bournemouth, England BH1 1BZ. Registered in England & Wales | 01676637</p>
2443        </div>
2444    </div>
2445</footer>
2446
2447
2448            <div id="fb-root"></div>
2449
2450
2451        </div>
2452    </div>
2453
2454
2455
2456    <div class="mar-modal-container mar-modal-container--animate mar-modal-container--animate-out visually-hidden">
2457    <div class="mar-modal-overlay" data-uses-js="close-modal"></div>
2458
2459    <div aria-label="Pop up dialog" class="mar-modal" tabindex="-1" role="dialog">
2460        <div class="mar-modal__header">
2461            <h3 class="mar-modal__title">Modal headline</h3>
2462
2463            <div class="mar-modal__close" data-uses-js="close-modal">
2464<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2465    <path fill-rule="evenodd" clip-rule="evenodd" d="M7.60714 6L11.6518 10.0446C11.7589 10.1518 11.8438 10.2768 11.9062 10.4196C11.9688 10.5625 12 10.7143 12 10.875C12 11.1786 11.8884 11.442 11.6652 11.6652C11.442 11.8884 11.1696 12 10.8482 12C10.6875 12 10.5357 11.9688 10.3929 11.9062C10.25 11.8438 10.1339 11.7589 10.0446 11.6518L6 7.60714L1.95536 11.6518C1.84821 11.7589 1.72321 11.8438 1.58036 11.9062C1.4375 11.9688 1.28572 12 1.125 12C0.821427 12 0.558037 11.8884 0.334821 11.6652C0.111606 11.442 0 11.1786 0 10.875C0 10.7143 0.0312497 10.5625 0.09375 10.4196C0.15625 10.2768 0.241071 10.1518 0.348214 10.0446L4.36607 6L0.348214 1.95536C0.241071 1.84821 0.15625 1.72768 0.09375 1.59375C0.0312497 1.45982 0 1.3125 0 1.15179C0 0.830355 0.111606 0.558037 0.334821 0.334821C0.558037 0.111606 0.821427 0 1.125 0C1.28572 0 1.4375 0.0312497 1.58036 0.09375C1.72321 0.15625 1.84821 0.241071 1.95536 0.348214L6 4.39286L10.0446 0.348214C10.1339 0.241071 10.25 0.15625 10.3929 0.09375C10.5357 0.0312497 10.6875 0 10.8482 0C11.1696 0 11.442 0.111606 11.6652 0.334821C11.8884 0.558037 12 0.830355 12 1.15179C12 1.3125 11.9688 1.45982 11.9062 1.59375C11.8438 1.72768 11.7589 1.84821 11.6518 1.95536L7.60714 6Z" fill="#9DA0A4"/>
2466</svg>
2467
2468
2469                <span>Close</span>
2470            </div>
2471        </div>
2472
2473        <div class="mar-modal__body">Automatically injected HTML goes here</div>
2474
2475        <div class="mar-modal__actions">
2476<!-- standard - Buttons.html --> 
2477    
2478<button
2479    type="button"
2480    data-uses-js="modal-submit"
2481    
2482    class=" mar-btn
2483    mar-btn--light
2484    mar-btn--md
2485    
2486    
2487    "
2488>
2489    Submit
2490</button>
2491    
2492
2493
2494
2495<!-- standard - Buttons.html --> 
2496    
2497<button
2498    type="button"
2499    data-uses-js="modal-cancel"
2500    
2501    class=" mar-btn
2502    mar-btn--outline
2503    mar-btn--md
2504    
2505    
2506    "
2507>
2508    Cancel
2509</button>
2510    
2511
2512
2513        </div>
2514    </div>
2515</div>
2516
2517</body>
2518
2519<div id="outbrain-holder">
2520    <div id="DFP_standard_mpu_3"></div>
2521    <div id="DFP_standard_mpu_4"></div>
2522    <div id="DFP_standard_mpu_5"></div>
2523    <div id="DFP_standard_mpu_6"></div>
2524    <div id="DFP_standard_mpu_7"></div>
2525</div>
2526<script>
2527
2528const elementToObserve = document.querySelector("#outbrain-holder");
2529
2530// create a new instance of `MutationObserver` named `observer`,
2531// passing it a callback function
2532const observer = new MutationObserver(function(e) {
2533    $.each(e, function(j, obs) {
2534        $.each(obs.removedNodes, function (i, node) {
2535            var id = $(node).attr('id');
2536            addAdSlot(id, id.replace('DFP_', ''));
2537        });
2538    });
2539});
2540
2541// call `observe()` on that MutationObserver instance,
2542// passing it the element to observe, and the options object
2543observer.observe(elementToObserve, {subtree: true, childList: true});
2544</script>
2544
2545
2546<script>
2547window.domComplete = performance.now();
2548</script>
2548
2549
2550<script type="text/javascript">
2551path = document.location.href.split("/");
2552var prop30 = qs.get('lp');
2553var prop43 = qs.get('ref');
2554var pType="Newsquest\Modules\ContactUsModule"
2555
2556if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
2557    pType = 'ArticleModule';
2558}
2559for(x=4; x<7; x++)
2560{
2561    if (typeof path[x] == 'undefined')
2562    {
2563        path[x] = '';
2564    }
2565    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
2566    {
2567        path[x] = path[x-1];
2568    }
2569    else
2570    {
2571        path[x] = path[x-1] + "/" + path[x];
2572    }
2573    path[x] = path[x].replace(/\/undefined/g,"");
2574}
2575sitename = path[2].split(".");
2576
2577pathN= unescape(document.location.pathname.toString());
2578matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
2579detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
2580if (detailMatches !== null && detailMatches.length > 1)
2581{
2582    matches = detailMatches;
2583}
2584
2585if (matches !== null && matches.length > 1)
2586{
2587    var subfolder = '';
2588    path[3] = 'li';
2589    path[4] = 'li/'+subfolder;
2590    path[5] = 'li/'+subfolder+'/'+matches[1];
2591    path[6] = 'li/'+subfolder+'/'+matches[1];
2592}
2593if (pathN === '/')
2594{
2595    path[3] = 'homepage';
2596    path[4] = 'homepage';
2597    path[5] = 'homepage';
2598    path[6] = 'homepage';
2599}
2600
2601
2602function filterArray(arr) {
2603    var retArr = [];
2604    $.each(arr, function(i, part) {
2605        if (part !== '') {
2606            retArr.push(part);
2607        }
2608    });
2609
2610    return retArr;
2611}
2612</script>
2612
2613
2614
2615<script type="text/javascript">
2616var known = $.cookie('__siren') ? '1' : '0' ;
2617</script>
2617
2618
2619<script type="text/javascript">
2620
2621var known = $.cookie('__siren') ? '1' : '0' ;
2622var ref = document.referrer;
2623var parser = document.createElement('a');
2624parser.href = ref;
2625
2626// values in the below MUST be strings
2627var targeting = {
2628    'context': '',
2629    
2630    'domain': 'www.worcesternews.co.uk',
2631    'isLanding': 'yes',
2632    'top_path': 'contact',
2633    'weather': 'sun'.toLowerCase(),
2634    'jbsjs': ''.toLowerCase(),
2635    'site_search': '',
2636    'bmd_cat': '',
2637    'wt': '11-15',
2638    'cmpid': qs.get('cmpid'),
2639    'refdm': parser.hostname,
2640    'k': known,
2641    'g':  'u' ,
2642    'a':  '0' ,
2643    'topic': '',
2644    'publication': '',
2645    'primary_tag_future_use': '',
2646    'site': (isMobile()) ? 'mobile': 'desktop',
2647    'r': data_layer.user.subscription_plan !== ''
2648        ? '2'       // 2 = subscribed
2649        : data_layer.user.is_logged_in == 'yes'
2650            ? '1'   // 1 = registered
2651            : '0',  // 0 = anonymous
2652};
2653
2654if (!usePrebid) {
2655    targeting.adrq = 'adl';
2656}
2657
2658if (data_layer.video.exists === 'yes') {
2659    targeting.ptype = 'video';
2660}
2661
2662if ($.cookie('isMeterExpired') === 'yes' && window.data_layer.article.is_article) {
2663    var articleContentLevel = parseInt(window.data_layer.article.content_level, 10) || 0; // account for NaN
2664    if (articleContentLevel !== 0 && window.data_layer.article.content_level_open_access === 'no') {
2665        targeting.ao = 'y';
2666    }
2667}
2668
2669if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
2670    targeting.dfpcsnt = 'yes';
2671} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
2672    targeting.dfpcsnt = 'no';
2673} else {
2674    targeting.dfpcsnt = 'none';
2675}
2676
2677if (typeof MobileDetect !== "undefined") {
2678    targeting.canbb = (window.screen.width > 960) ? 'y' : 'n';
2679}
2680
2681if (typeof module_targeting === "object") {
2682    targeting = addToTargeting(targeting, module_targeting);
2683}
2684
2685// $.each(apData, function (k, v) {
2686//     targeting[k] = v;
2687// });
2688
2689// if (typeof gs_channels !== 'undefined') {
2690//     targeting.gs_channels = gs_channels;
2691// }
2692
2693targeting = addToTargeting(targeting, data_layer_helper.homesData);
2694
2695targeting.article_id = '';
2696var googleSiteName = 'www.worcesternews.co.uk';
2697var googlePath = '/contact/';
2698
2699var googleNetworkCode = 154725070;
2700
2701var googleChildNetworkCode = 22694024870;
2702var googleId = '/'+googleNetworkCode + ',' + googleChildNetworkCode + '/' + googleSiteName+googlePath;
2703
2704if (googleId.charAt(googleId.length - 1) === '/') {
2705    googleId = googleId.slice(0, -1);
2706}
2707
2708var googletag = googletag || {};
2709googletag.cmd = googletag.cmd || [];
2710
2711googletag.cmd.push(function () {
2712    var _YB = _YB || {
2713        ab: function () {
2714            return _YB.dool ? "b" : "a" + Math.floor(Math.random() * 10);
2715        },
2716        dool: Math.random() >= 0.1,
2717    };
2718    var yb_ab;
2719    if (Math.random() <= 0.9) {
2720        yb_ab = _YB.ab();
2721    } else {
2722        yb_ab = "c";
2723    }
2724    googletag.pubads().setTargeting("yb_ab", yb_ab);
2725});
2726
2727googletag.cmd.push(function() {
2728    googletag.pubads().set("adsense_background_color", "FFFFFF");
2729    googletag.pubads().setTargeting('rfs', "0");
2730    $.each(targeting, function (key, value) {
2731
2732        // No real value so exclude
2733        if (value === 0 || value === '' || value === null) {
2734            return;
2735        }
2736        googletag.pubads().setTargeting(key, value);
2737    });
2738
2739});
2740
2741if (isMobile() && '' === 'top') {
2742    $('.desktop-standard-leaderboard').remove();
2743    $('.mobile-top-leaderboard').show();
2744    $('#DFP_top_leaderboard_mobile').attr('id', 'DFP_top_leaderboard');
2745} else {
2746    $('.mobile-top-leaderboard').remove();
2747}
2748// Ads
2749var adUnits = [];
2750
2751hideAdsByScreensize();
2752
2753if (blackListAds.length > 0) {
2754    removeBlacklistAds(blackListAds);
2755}
2756
2757$.each(unfilteredAdUnits, function (i, unit) {
2758    removeWhitelistAds(unit);
2759});
2760
2761// set up a holder for all the adverts so we can do things with them later
2762var dfpHolder = {};
2763// the set up code
2764googletag.cmd.push(function() {
2765    $.each(adUnits, function(i, data) {
2766
2767        // check if the dom exists
2768        if ($('#'+data.domName).length === 0) {
2769            return;
2770        }
2771
2772        var dfp = null;
2773
2774        if (data.slotType === 'standard')
2775        {
2776            // get the correct sizes, using the alternate_sizes if they exist and we are on a mobile site
2777            var sizes = data.sizes;
2778            if (data.alternate_mobile_size && isMobile()) {
2779                sizes = data.alternate_mobile_size;
2780            }
2781            // push this ad slot through
2782            dfp = googletag.defineSlot(googleId, sizes, data.domName)
2783                .addService(googletag.pubads())
2784                .setTargeting("position", data.positionName)
2785                .setCollapseEmptyDiv(data.collapseContainer);
2786            // check if we have an array of targets, and assign them as a companion if we do
2787            if (data.targets instanceof Array && data.targets.length > 0 ) {
2788                dfp.setTargeting('companion', data.targets);
2789            }
2790
2791        }
2792        else if (data.slotType === 'outofpage')
2793        {
2794            dfp = googletag.defineOutOfPageSlot(googleId, data.domName)
2795                .addService(googletag.pubads())
2796                .setTargeting("position", data.positionName)
2797                .setCollapseEmptyDiv(data.collapseContainer);
2798            // check if we have an array of targets, and assign them as a companion if we do
2799            if (data.targets instanceof Array && data.targets.length > 0 ) {
2800                dfp.setTargeting('companion', data.targets);
2801            }
2802        }
2803
2804        // store
2805        dfpHolder[data.domName] = dfp;
2806
2807    });
2808
2809    if (adLight === true) {
2810        googletag.pubads().setCategoryExclusion('adlight');
2811        // var adlightexplanation = '<div class="adlight-explanation">I\'m a subscriber <a href="#" class="adlight-explanation-link">Why am I seeing this advert?</a></div>';
2812        // if ($('#DFP_premium_mpu').length > 0) {
2813        //     $('#DFP_premium_mpu').before(adlightexplanation);
2814        // }
2815
2816        // if ($('#DFP_standard_mpu_1').length > 0) {
2817        //     $('#DFP_standard_mpu_1').before(adlightexplanation);
2818        // }
2819
2820        // var imageIds = [11497497, 11497535, 11497536, 11497541, 11497542, 11497545, 11497546, 11497547];
2821        // var imageId = imageIds[Math.floor(Math.random() * imageIds.length)];
2822        // $('.adlight-explanation-link').click(function(e) {
2823        //     e.preventDefault();
2824        //     $('#adlight-explanation-modal-image').attr('src', '/resources/images/' + imageId + '/').show();
2825        //     $('#adlight-explanation-modal').modal();
2826        // });
2827    }
2828
2829    // send the request
2830    googletag.pubads().enableSingleRequest();
2831
2832    googletag.enableServices();
2833
2834    googletag.pubads().addEventListener('slotVisibilityChanged', function(event) {
2835        if (event.slot.getResponseInformation().creativeTemplateId === 828288 ||
2836            event.slot.getResponseInformation().creativeTemplateId === 12383216 ) {
2837            console.log('DFP: Magic template id detected, not refreshing');
2838            return;
2839        }
2840        var slotName = '';
2841        $.each(dfpHolder, function (a, e) {
2842            if (e == event.slot) {
2843                slotName = a;
2844            }
2845        });
2846        if (typeof window.advertisingTimer !== 'undefined') {
2847            var perc = event.inViewPercentage;
2848            window.advertisingTimer.timer(slotName, perc);
2849        }
2850    });
2851});
2852
2853// the display code
2854$.each(adUnits, function(i, data) {
2855
2856    // check if the dom exists
2857    if ($('#'+data.domName).length === 0) {
2858        return;
2859    }
2860
2861    if (data.domName === 'DFP_interstitial_mpu') {
2862        if (!inter.checkVisit()) {
2863            return;
2864        }
2865    }
2866
2867    // are we manually loading it?
2868    if ($('#'+data.domName).attr('data-manual-loading') === "yes") {
2869        return;
2870    }
2871    // for mobile, we check if the dom element has the data-delay-loading attribute set to "1"
2872    else if ($('#'+data.domName).attr('data-delay-loading') === "yes") {
2873
2874        // load it
2875        $('#'+data.domName).appear();
2876        $(document.body).on('appear', '#'+data.domName, function(e, allElement) {
2877
2878            // don't call it many times
2879            if ($(this).attr('data-processed') === 'yes') {
2880                return;
2881            }
2882
2883            $(this).attr('data-processed', 'yes');
2884
2885            // display the google ad
2886            googletag.display(data.domName);
2887            googletag.pubads().refresh([dfpHolder[data.domName]]);
2888        });
2889        return;
2890    }
2891    googletag.cmd.push(function() {
2892        googletag.display(data.domName);
2893    });
2894});
2895window.googleComplete = performance.now();
2896window.googleReady = true;
2897
2898// METHODS
2899function addToTargeting(targeting, data) {
2900    if (!data) {
2901        return targeting;
2902    }
2903    $.each(data, function (key, value) {
2904        if (!value) {
2905            return;
2906        }
2907        targeting[key] = value;
2908    });
2909    return targeting;
2910}
2911
2912function addAdSlot(slotName, slot, initHidden) {
2913    console.log("Add ad slot called for %s %s", slotName, slot);
2914    // check if item already exists
2915    if (typeof window.dfpHolder[slotName] !== 'undefined') {
2916        return;
2917    }
2918
2919    if (window.adLight === true) {
2920        return;
2921    }
2922    window.googletag.cmd.push(function() {
2923        var dfp = googletag.defineSlot(window.googleId, [[300,250]], slotName)
2924            .setTargeting('position', [slot])
2925            .addService(googletag.pubads());
2926        window.dfpHolder[slotName] = dfp;
2927
2928        if (!initHidden) {
2929            googletag.pubads().refresh([dfp]);
2930
2931            return;
2932        }
2933    });
2934}
2935
2936function hideAdsByScreensize() {
2937    if (window.screen.width < 728 && $('#BlockArticleContainer').length > 0) {
2938        if ('130' === '1147') {
2939            $('#DFP_out_of_page').remove();
2940        } else {
2941            $('#DFP_premium_mpu').remove();
2942        }
2943        $('#DFP_on_scroll').remove();
2944    } else if (window.screen.width < 728 &&
2945        ( $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='9']").length > 0 ||
2946        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='12']").length > 0  ||
2947        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='18']").length > 0  ||
2948        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='24']").length > 0 )
2949    ) {
2950        const adElement = document.querySelector('#high_vis_container');
2951        $('.omnicard[data-position="5"]').after(adElement);
2952    }
2953
2954    if ('130' === '1147' && window.screen.width > 450) {
2955        $('#DFP_bottom_leaderboard').remove();
2956    }
2957
2958    if ('130' === '1147' && window.screen.width < 728) {
2959        $('#DFP_top_leaderboard').remove();
2960    }
2961
2962    if ('130' === '1147') {
2963        $('#DFP_teads').remove();
2964        $('#DFP_out_of_page').remove();
2965    }
2966
2967    if ($('#comments-in-page').length === 1 && window.screen.width > 450) {
2968        $('#DFP_top_leaderboard').parent().remove();
2969        $('#DFP_bottom_leaderboard').parent().remove();
2970        // $('#DFP_standard_mpu_1').parent().remove();
2971    }
2972}
2973
2974function removeBlacklistAds(blackListAds) {
2975    $.each(blackListAds, function(i, name) {
2976        removeAdContainer(name);
2977    });
2978}
2979
2980function removeWhitelistAds(unit) {
2981    // VAST (video) ad units never get displayed in here.
2982    if (unit.isVast) {
2983        return;
2984    }
2985
2986    // if we have an ad-light experience
2987    if (whiteList === true) {
2988        if (typeof whiteListAds[unit.positionName] === 'undefined') {
2989            removeAdContainer(unit.domName)
2990            return;
2991        }
2992    }
2993
2994    adUnits.push(unit);
2995}
2996
2997function removeAdContainer(name) {
2998    const element = document.getElementById(name);
2999    // doesn't exist? exit
3000    if(!element) {
3001        return;
3002    }
3003
3004    const parent = element.parentElement;
3005    if (parent && parent.classList.contains('block-bottom-margin')) {
3006        // if immediate parent contains block-bottom-margin as a class, remove the parent as well
3007        parent.classList.remove('block-bottom-margin');
3008    }
3009    if (parent && parent.classList.contains('mar-leaderboard--top')) {
3010        // in case of leaderboard, remove as has min-height
3011        parent.remove();
3012        return;
3013    }
3014
3015    if (parent && parent.classList.contains('mar-leaderboard--bottom')) {
3016        // in case of article ad container, remove as has min-height
3017        parent.remove();
3018        return;
3019    }
3020
3021    element.remove();
3022}
3023</script>
3023
3024
3025
3026<script src="/resources/responsive-static/build/mds/js/global.js?cb=vjoPdzgg"></script>
3026
3027
3028
3029
3030
3031
3032<script src="/__siren/"></script>
3032
3033
3034
3035
3036<script type="text/javascript">
3037    var s_account="newsquestgroupprod";
3038</script>
3038
3039
3040<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/VisitorAPI.js?cb=vjoPdzgg"></script>
vendor: 1 bytes, line 3040
3040
3041<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/omniture.js?cb=vjoPdzgg"></script>
3041
3042
3043<script type="text/javascript">
3044
3045function getOmniturePath() {
3046    var path = '';
3047    if ($('#gallery-base-url').length === 1) {
3048        path = $('#gallery-base-url').val();
3049    }
3050    else {
3051        path = window.location.pathname;
3052    }
3053    return path;
3054}
3055
3056function getPositionFromCookie() {
3057    const cookieName = 'tracking_block_index';
3058
3059    const ref = document.cookie
3060        .split('; ')
3061        .find(row => row.startsWith(`${cookieName}=`))
3062        ?.slice(cookieName.length + 1);
3063
3064    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
3065
3066    return ref ? decodeURIComponent(ref) : undefined;
3067}
3068function getRefFromCookie() {
3069    const cookieName = 'tracking_block';
3070
3071    const ref = document.cookie
3072        .split('; ')
3073        .find(row => row.startsWith(`${cookieName}=`))
3074        ?.split('=')[1];
3075
3076    // Remove the cookie
3077    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
3078
3079    return ref;
3080}
3081
3082function getOmnitureTrackingFromCookie(key, preExistingValue) {
3083    var ref = $.cookie('o-' + key);
3084    if(typeof(ref) === 'undefined') {
3085    	ref  = preExistingValue
3086    } else {
3087    	ref = decodeURIComponent(ref);
3088    	$.removeCookie('o-' + key, {
3089            path: '/',
3090            domain: window.data_layer.site.cookie_domain,
3091        });
3092    }
3093    return ref;
3094}
3095
3096function getValidatedAPList() {
3097
3098    var validList = [1100, 1101, 1002, 1006, 1010, 1014, 1018, 1022, 1200, 1202, 1205, 1300, 1602, 1605, 1608, 1612, 1616, 1500, 1503, 1507, 1509, 1512, 1402, 1406, 1409, 1412, 1416, 14331, 14333, 14335, 14336, 14339, 14342, 14344, 14345, 14346, 14350, 14351, 14353, 14359, 14366, 14370, 14371, 14377, 14388, 14394, 14396, 14399, 14407, 14221, 14423, 15679, 15681, 15682, 15683, 15684, 15686, 15687, 15688, 15975];
3099
3100    var data = getAudienceProjectTargetingData();
3101    if (!data || !data.ap_x) {
3102        return '';
3103    }
3104
3105    validData = [];
3106    $.each(data.ap_x, function(i, td) {
3107        if ($.inArray(parseInt(td, 10), validList) !== -1) {
3108            validData.push(td);
3109        }
3110    });
3111
3112    return validData.join(',');
3113}
3114
3115path = document.location.href.split("/");
3116
3117var qs = new URLSearchParams(window.location.search);
3118
3119var prop30 = qs.get('lp');
3120var prop43 = qs.get('ref');
3121var pType="Newsquest\Modules\ContactUsModule"
3122
3123if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
3124    pType = 'ArticleModule';
3125}
3126
3127for(x=4; x<7; x++)
3128{
3129    if (typeof path[x] == 'undefined')
3130    {
3131        path[x] = '';
3132    }
3133    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
3134    {
3135        path[x] = path[x-1];
3136    }
3137    else
3138    {
3139        path[x] = path[x-1] + "/" + path[x];
3140    }
3141    path[x] = path[x].replace(/\/undefined/g,"");
3142}
3143pathN= unescape(document.location.pathname.toString());
3144matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
3145detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
3146if (detailMatches !== null && detailMatches.length > 1)
3147{
3148    matches = detailMatches;
3149}
3150
3151if (matches !== null && matches.length > 1)
3152{
3153    var subfolder = '';
3154    path[3] = 'li';
3155    path[4] = 'li/'+subfolder;
3156    path[5] = 'li/'+subfolder+'/'+matches[1];
3157    path[6] = 'li/'+subfolder+'/'+matches[1];
3158}
3159if (pathN === '/')
3160{
3161    path[3] = 'homepage';
3162    path[4] = 'homepage';
3163    path[5] = 'homepage';
3164    path[6] = 'homepage';
3165}
3166
3167
3168/* You may give each page an identifying name, server, and channel on
3169the next lines. */
3170s.pageName="(www) "+getOmniturePath();
3171s.pageName = s.pageName.toLowerCase();
3172s.server="martini";
3173s.channel="";
3174s.pageType="";
3175s.prop1= qs.get('search');
3176s.prop2="";
3177s.prop3=document.title;
3178s.prop4="";
3179s.prop5="Newsquest\Modules\ContactUsModule"; /* get from Martini */
3180s.prop6=path[3].toLowerCase();
3181s.prop7=path[4].toLowerCase();
3182s.prop8=path[5].toLowerCase();
3183s.prop9=path[6].toLowerCase();
3184s.prop10="";
3185
3186s.prop16=path[2].toLowerCase();
3187s.prop17="Worcester";
3188s.prop18="Martini";
3189s.prop19="1";
3190s.prop20 = s.getPreviousValue(s.pageName, 'gpv_pn');
3191s.prop42 = "";
3192s.prop53 = 'standard';
3193s.prop54 = '';
3194s.prop55 = '';
3195s.prop56 = "";
3196s.prop57 = ($('[data-name="Feature Article Block A"]').length > 0) ? 'Enabled' : 'Disabled';
3197s.prop58 = document.querySelector('[data-name="Feature Article Block B"]')?.dataset.variant;
3198s.prop59 = getRefFromCookie();
3199s.prop60 = getPositionFromCookie();
3200s.prop73 = document.cookie.split('; ').find(row => row.startsWith('adtiming='))?.split('=')[1] || null;
3201
3202var eVar67 = [];
3203
3204if ($.cookie('consentUUID')) {
3205    eVar67.push('yes');
3206} else {
3207    eVar67.push('no');
3208}
3209if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
3210    eVar67.push('yes');
3211} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
3212    eVar67.push('no');
3213} else {
3214    eVar67.push('none');
3215}
3216
3217if ($.cookie('_sp_legitimate_interests') === 'true') {
3218    eVar67.push('yes');
3219} else if ($.cookie('_sp_legitimate_interests') === 'false') {
3220    eVar67.push('no');
3221} else {
3222    eVar67.push('none');
3223}
3224
3225//if ($.cookie('euconsent')) {
3226//    eVar67.push($.cookie('euconsent'));
3227//} else {
3228//    eVar67.push('none');
3229//}
3230
3231s.eVar67 = eVar67.join(',');
3232// console.log('ADB: setting eVar67 to %s', eVar67.join(','));
3233
3234if ($.cookie('prev-tcf-v2')) {
3235    // console.log('ADB: Setting eVar68 to ', $.cookie('prev-tcf-v2'));
3236    s.eVar68 = $.cookie('prev-tcf-v2');
3237}
3238
3239if (typeof iabNames !== 'undefined') {
3240    s.prop29 = iabNames.join(',');
3241} else if (typeof iabIds !== 'undefined') {
3242    s.prop29 = iabIds.join(',');
3243}
3244
3245if (s.prop20 && s.prop20 !== 'no value') {
3246    s.prop21 = s.getPercentPageViewed();
3247} else {
3248    s.prop21 = '';
3249}
3250
3251if (typeof __siren !== 'undefined') {
3252    s.eVar27 = __siren;
3253}
3254
3255s.prop22 = s.getDaysSinceLastVisit('s_lv');
3256
3257
3258s.prop43=getOmnitureTrackingFromCookie('ref', prop43);
3259s.prop25 = ''
3260
3261s.prop27 = '';
3262
3263s.prop30 = getOmnitureTrackingFromCookie('prop30', prop30);
3264s.linkInternalFilters="javascript:,worcesternews.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,"
3265s.eVar61=(new Date()).toLocaleDateString("en-GB");
3266/* s.eVar62=(new Date()).toLocaleDateString("en-GB"); */
3267
3268
3269
3270
3271
3272
3273/* Article-site-cloning data */
3274s.eVar90 = window.data_layer.article.parent_originating_site_id;
3275s.eVar91 = window.data_layer.article.originating_article_id;
3276s.eVar92 = window.data_layer.article.is_original_to_site;
3277s.eVar95 = window.data_layer.site.using_piano_id;
3278s.eVar106 = '';
3279
3280s.eVar109 = '';
3281
3282/* Uber block article counts */
3283s.eVar93 = window.data_layer.page.top_stories_article_count + ':' + window.data_layer.page.interstitial_article_count + ':' + window.data_layer.page.news_stories_article_count;
3284
3285/* Conversion Variables */
3286s.campaign=""
3287s.state=""
3288s.zip=""
3289s.events=""
3290s.products=""
3291s.purchaseID=""
3292s.eVar14=""
3293try {
3294    s.list3=getValidatedAPList();
3295} catch (e) {
3296    // do nothing
3297}
3298
3299
3300
3301
3302// Initial fotorama tracking.
3303var moduleType = null;
3304if (s.prop5 === 'ArticleModule' || s.prop5 == 'PropertyModuleReplacement' || s.prop5 === 'BlockArticleModule') {
3305    moduleType = 'article';
3306} else if (s.prop5 === 'PictureGalleryModule') {
3307    moduleType = 'gallery';
3308}
3309
3310if ($('#comments-in-page').length === 1) {
3311    moduleType = 'comments';
3312}
3313
3314if (moduleType === 'article' || moduleType === 'gallery' || moduleType === 'comments') {
3315    var imagePath = '';
3316
3317    if ($('.fotorama').length > 0) {
3318        // Get the first Fotorama image.
3319        try {
3320            var el = $('.fotorama').data('fotorama').data[0].html;
3321            var url = $(el).find('div').css('background-image');
3322            imagePath = url.replace('url(','').replace(')','').replace(/\"/gi, "");
3323        } catch (e) {
3324        }
3325    } else {
3326        // If there's just one image (i.e. it's not a gallery), find its path.
3327        var imagePathSingle = $('#mainImage').attr('src');
3328        if (typeof imagePathSingle !== 'undefined') {
3329            imagePath = imagePathSingle.split('.')[0] + '/';
3330        }
3331    }
3332    var imageParts = imagePath.split('/');
3333    if (imageParts.length > 1) {
3334        s.eVar37 = imageParts[imageParts.length - 2];
3335        s.prop37 = imageParts[imageParts.length - 2];
3336        s.events = s.apl(s.events, 'event7', ',', 2);
3337    }
3338    s.eVar36 = moduleType;
3339    s.prop36 = moduleType;
3340}
3341
3342
3343
3344// Education pages.
3345if (s.prop5 === 'ResponsiveEducationModule') {
3346    // School profile page.
3347    if ($('#eduOverview').length > 0) {
3348        s.eVar40 = $('#eduOverview').data('school-status');
3349        s.prop40 = s.eVar40;
3350        s.prop41 = 'edu-' + $('#eduOverview').data('school-urn');
3351        s.prop46 = $('#town').text();
3352    }
3353
3354    // Comparison page.
3355    if ($('#eduComparisonTable').length > 0) {
3356        s.list1 = '';
3357    }
3358
3359    // Results page.
3360    if ($('.school-results').length > 0) {
3361        s.list1 = '';
3362
3363        // Track the search criteria.
3364        s.prop44 = '';
3365        s.prop45 = "".toLowerCase();
3366        s.prop46 = "".toLowerCase();
3367        s.prop49 = '';
3368        s.prop50 = '';
3369        s.prop51 = '';
3370        s.eVar2 = s.prop50;
3371
3372        var newSearch = false;
3373        if (newSearch) {
3374            s.events = s.apl(s.events, 'event17', ',', 1);
3375        }
3376    }
3377}
3378
3379// Notices Module
3380if (s.prop5 === 'NewsquestModulesNoticesModule') {
3381    // Notices Find page.
3382    if (s.pageName.includes('notices/find')) {
3383        s.pageName = '(www) /notices/find/';
3384        s.eVar50 = '';
3385        const noticesURL = new URL(window.location.href);
3386        const noticesParams = new URLSearchParams(noticesURL.search);
3387
3388        s.eVar1 = noticesParams.has('keyword') ? noticesParams.get('keyword') : 'None';
3389        s.eVar51 = noticesParams.has('sort') ? noticesParams.get('sprt') : 'best';
3390        s.eVar52 = noticesParams.has('p') ? (parseInt(noticesParams.get('p'), 10) + 1) : 1;
3391        s.eVar53 = noticesParams.has('type') ? noticesParams.get('type') : 'All';
3392        s.eVar54 = noticesParams.has('nearby') ? noticesParams.get('nearby') : 'no';
3393        s.eVar55 = noticesParams.has('daterange') ? noticesParams.get('daterange') : 'last-month';
3394
3395        if (noticesParams.has('sort')) {
3396            switch (noticesParams.get('sort')) {
3397                case 'date_asc':
3398                    s.eVar51 = 'oldest';
3399                    break;
3400                case 'date_desc':
3401                    s.eVar51 = 'newest';
3402                    break;
3403                case 'best_match':
3404                    s.eVar51 = 'best';
3405                    break;
3406                default:
3407                    s.eVar51 = noticesParams.get('sort');
3408                    break;
3409            }
3410        }
3411
3412        // Concatenate all search params into eVar44
3413        if (noticesParams.size > 0) {
3414            const searchParams = new URL(window.location.href).searchParams;
3415            s.eVar44 = '';
3416            searchParams.forEach((value, key) => {
3417                s.eVar44 += `${key}=${value},`;
3418            });
3419        } else {
3420            s.eVar44 = '';
3421        }
3422
3423        // Adobe Search Event triggering
3424        const setNoticePaginationClicked = (value) => {
3425            localStorage.setItem("isNoticePaginationClicked", value);
3426        };
3427
3428        const noticeSearchInput = document.getElementById("notices-search");
3429        const noticeSearchBtn = document.getElementById("notice-search-find");
3430        const noticePaginationBtns = document.querySelectorAll('.notice-find__pagination .pagination-btn');
3431        const noticePaginationBtnPrev = document.querySelector('.pagination-btn-previous svg');
3432        const noticePaginationBtnNext = document.querySelector('.pagination-btn-next svg');
3433
3434        noticeSearchInput?.addEventListener('change', () => setNoticePaginationClicked('false'));
3435        noticeSearchBtn?.addEventListener('click', () => setNoticePaginationClicked('false'));
3436
3437        noticePaginationBtns.forEach(btn => {
3438            btn.addEventListener('click', () => setNoticePaginationClicked('true'));
3439        });
3440
3441        noticePaginationBtnPrev?.addEventListener('click', () => setNoticePaginationClicked('true'));
3442        noticePaginationBtnNext?.addEventListener('click', () => setNoticePaginationClicked('true'));
3443
3444        if (localStorage.getItem("isNoticePaginationClicked") === 'false') {
3445            s.events = s.apl(s.events, 'event1', ',', 1);
3446        }
3447    }
3448
3449    if (/notices\/funeral-directors\/(\d+)\.([a-zA-Z0-9-?]+)?/.test(s.pageName)) {
3450        s.pageName = '(www) /notices/funeral-director/';
3451        s.eVar41 = '';
3452    }
3453}
3454
3455if (s.prop5 === 'NewsquestModulesNoticeModule') {
3456    s.eVar41 = '';
3457    const type = window.announcement_data?.details?.type || '';
3458    const subCategory = window.announcement_data?.details?.sub_category || '';
3459    s.eVar40 = type !== 'Tribute' ? type : `${type} - ${subCategory}`;
3460    s.eVar42 = window.announcement_data?.details?.id || '';
3461    s.eVar107 = '';
3462    s.eVar119 = '';
3463    s.eVar120 = '';
3464    s.eVar2 = "(www) /notice/";
3465}
3466
3467//New Property module
3468if (s.prop5 === 'ResponsivePropertyModule') {
3469    /*
3470        Use prop42 for single and list pages, for list pages use hyphen separate lists of id's
3471    */
3472    
3473    
3474    //Property's all over the place (homepage, searches etc - HOM-133
3475
3476    //Property Detail - HOM-131, HOM-134, HOM-130
3477
3478    //Contact us submissions - HOM-137
3479    if($('#propertyModule.agent-details').length > 0) {
3480        //Add a click handler for a.contact-detail
3481    }
3482
3483
3484}
3485
3486// is their a video tag on the page?
3487if ($('.exco-embed').length > 0) {
3488    console.log('VID: setting tracking for event50');
3489    s.events = s.apl(s.events, 'event50', ',', 1);
3490}
3491
3492var foundAutoPlayVid = false;
3493$('.jw-outer').each(function (a, domEle) {
3494    if ($(this).data('multimedia-block') === 'no' && !foundAutoPlayVid) {
3495        console.log('VID: setting tracking for event51');
3496        s.events = s.apl(s.events, 'event51', ',', 1);
3497        foundAutoPlayVid = true;
3498    }
3499});
3500
3501
3502
3503
3504
3505
3506
3507s.eVar66 = 'Ad-Full';
3508s.eVar114 = '';
3509
3510
3511
3512    // var eVar65Copy = s.getValOnce(s.eVar65, "ev65", 0);
3513    // if (eVar65Copy !== '' && s.prop20.indexOf("/my/subscription/activate/") > -1) {
3514    //     s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
3515    //     s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
3516    //     s.products = "Subscription : Metered Access;" + eVar65Copy + ";1;";
3517    //     s.purchaseID = "";
3518    // }
3519
3520
3521if(qs.get('action') === 'success' && (s.prop5 === 'ArticleModule' || s.prop5 === 'BMDModule' || s.prop5 === 'BlockArticleModule')) {
3522    s.events=s.apl(s.events,'event9',',',2)
3523}
3524/* Hierarchy Variables */
3525s.hier1="newsquest," + "Worcester" + ",www.worcesternews.co.uk," + path[6].replace(/\//,",");
3526
3527if (typeof MartiniFotorama !== 'undefined') {
3528    MartiniFotorama.loadOmniture(s);
3529}
3530s.prop39 = "0";
3531
3532
3533
3534// Tracking usage of Bytecast audio embeds in articles.
3535s.eVar82 = 'no';
3536s.eVar83 = '';
3537
3538    console.log('ADB: starting');
3539    console.log('Google Bot Browser: ', window.isRobot.googleBot()); //TODO Remove this log after QA
3540
3541// Tracking of Commenting Registration FLow
3542if (s.prop5 !== 'BlockArticleModule') {
3543    const storedAdobeDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
3544    if (storedAdobeDimensions) {
3545        const storedAdobeDimensionObj = JSON.parse(storedAdobeDimensions);
3546        s.eVar10 = storedAdobeDimensionObj.eVar10;
3547        s.eVar15 = storedAdobeDimensionObj.eVar15;
3548        s.eVar22 = storedAdobeDimensionObj.eVar22;
3549        s.eVar23 = storedAdobeDimensionObj.eVar23;
3550        s.eVar24 = storedAdobeDimensionObj.eVar24;
3551        s.eVar25 = storedAdobeDimensionObj.eVar25;
3552        s.eVar28 = storedAdobeDimensionObj.eVar28;
3553        s.eVar60 = storedAdobeDimensionObj.eVar60;
3554        s.eVar104 = storedAdobeDimensionObj.eVar104;
3555        s.eVar106 = storedAdobeDimensionObj.eVar106;
3556        s.eVar107 = storedAdobeDimensionObj.eVar107;
3557        s.eVar108 = storedAdobeDimensionObj.eVar108;
3558        s.prop63 = storedAdobeDimensionObj.prop63;
3559    }
3560}
3561
3562if (window.location.href.includes("/user/create-account/commenting/")) {
3563    s.eVar2 = '(www) /user/create-account/commenting/';
3564}
3565
3566/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
3567if (qs.get('callback') !== 'in' && !window.isRobot.googleBot()) {
3568    var s_code=s.t();
3569    var backupAdobe = s;
3570
3571    if(s_code)document.write(s_code)
3572}
3573
3574// Storing the visiting dimensions
3575if (s.eVar10 || s.eVar22 || s.eVar23 || s.eVar24) {
3576    const adobeTrackingVisitingDimensions = {
3577        eVar10: s.eVar10,
3578        eVar22: s.eVar22,
3579        eVar23: s.eVar23,
3580        eVar24: s.eVar24,
3581    }
3582    sessionStorage.setItem('nq_adobe_tracking_visiting_dimensions', JSON.stringify(adobeTrackingVisitingDimensions));
3583}
3584
3585//--></script>
3585
3586<!-- End SiteCatalyst code version: H.19.3. -->
3587
3588
3589
3590
3591
3592<script>
3593    if ('' !== '') {
3594        setTimeout(function() {
3595            data_layer_helper.loadScript(
3596                "/resources/responsive-static/build/mds-next/js/.js?cb=vjoPdzgg",
3597                true,
3598                null,
3599                "module"
3600            )
3601        }, 500);
3602    }
3603</script>
3603
3604
3605
3606</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.