CINXE.COM

Play

<!DOCTYPE html> <html lang="en-US" class="no-js"> <head> <meta charset="UTF-8" /><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"b9d80a2312",applicationID:"467627310"};;/*! For license information please see nr-loader-rum-1.281.0.min.js.LICENSE.txt */ (()=>{var e,t,r={122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},217:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>b,xN:()=>v});r(860).K7.genericEvents;const n="experimental.marks",i="experimental.measures",o="experimental.resources";var a=r(993);const s=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var c=r(614),u=r(944),l=r(384),d=r(122);const f="[data-nr-mask]",g=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0,level:a.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(i)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:c.wk,inactiveMs:c.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){s(t)?e.mask_selector="".concat(t,",").concat(f):""===t||null===t?e.mask_selector=f:(0,u.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){s(t)?e.block_selector+=",".concat(t):""!==t&&(0,u.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,u.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},p={},m="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(m);if(!p[e])throw new Error("Configuration for ".concat(e," was never set"));return p[e]}function v(e,t){if(!e)throw new Error(m);p[e]=(0,d.a)(t,g());const r=(0,l.nY)(e);r&&(r.init=p[e])}function b(e,t){if(!e)throw new Error(m);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>d});var n=r(122),i=r(384),o=r(154),a=r(324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},l={};function d(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!l[e])throw new Error("Runtime for ".concat(e," was never set"));return l[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");l[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(l[e],"harvestCount")||Object.defineProperty(l[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=l[e])}},324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.281.0",i="PROD",o="CDN"},154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>l,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,l=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>d,x3:()=>u});var n=r(836),i=r(606),o=r(860),a=r(646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};l(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function l(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function d(e="",t="feature",r=!1){if(l(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(990),o=r(371),a=r(646),s=r(607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},l={},d=!1;try{d=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=m(e),l=c.length,d=0;d<l;d++)c[d].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:d?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:d};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return l[t]=l[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),l=(0,n.Zm)();l.ee||(l.ee=u)},646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(566).bz)()},566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(836),i=r(154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>l,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>d});var n=r(154),i=r(863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function l(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(836),i=r(607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];l(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return l(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,l,d;try{a=this,o=[...arguments],l="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],l],e)}i(r+"start",[o,a,s],l,c);try{return d=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],l,c),e}finally{i(r+"end",[o,a,d],l,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(836),i=r(687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},603:(e,t,r)=>{"use strict";r.d(t,{j:()=>K});var n=r(860),i=r(555),o=r(371),a=r(908),s=r(836),c=r(687),u=r(289),l=r(154),d=r(944),f=r(969),g=r(384),p=r(344);const m=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],h=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(863),b=r(614),y=r(993);var w=r(646),A=r(434);const R=new Map;function _(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,d.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[A.Jt]||t[r];return R.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>R.get(c))),i}function E(){const e=(0,g.pV)();m.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,d.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function N(e,t,g=!1){t||(0,c.Ak)(e,"api");const m={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var R="api-",E=R+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(R,n,!0,o||null===r?"session":void 0)(t,r)}function k(){}m.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,v.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},m.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),_(w,e,t,{customAttributes:r,level:i})},h.forEach((e=>{m[e]=j(R,e,!0,"api")})),m.addPageAction=j(R,"addPageAction",!0,n.K7.genericEvents),m.recordCustomEvent=j(R,"recordCustomEvent",!0,n.K7.genericEvents),m.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(R,"setPageViewName",!0)()},m.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,d.R)(40,typeof t)}else(0,d.R)(39,typeof e)},m.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,d.R)(41,typeof e)},m.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,d.R)(42,typeof e)},m.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,d.R)(23,e)}},m[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},m[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},m.interaction=function(e){return(new k).get("object"==typeof e?e:{})};const T=k.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(E+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,v.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,w),r?void 0:this}}function I(){r.e(296).then(r.bind(r,778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,d.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{T[e]=j(E,e,void 0,g?n.K7.softNav:n.K7.spa)})),m.setCurrentRouteName=g?j(E,"routeName",void 0,n.K7.softNav):j(R,"routeName",!0,n.K7.spa),m.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},l.RI?(0,u.GG)((()=>I()),!0):I(),m}var k=r(217),T=r(122);const j={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},I={};var S=r(284);const O=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function K(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:d={},exposed:f=!0}=t;d.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,k.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");I[e]=(0,T.a)(t,j);const r=(0,g.nY)(e);r&&(r.loader_config=I[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},l.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const m=(0,k.D0)(e.agentIdentifier),h=[c.beacon,c.errorBeacon];P||(m.proxy.assets&&(O(m.proxy.assets),h.push(m.proxy.assets)),m.proxy.beacon&&h.push(m.proxy.beacon),E(),(0,g.US)("activatedFeatures",S.B),e.runSoftNavOverSpa&&=!0===m.soft_navigations.enabled&&m.feature_flags.includes("soft_nav")),d.denyList=[...m.ajax.deny_list||[],...m.ajax.block_internal?h:[]],d.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,d),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=N(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),P=!0}},374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.281.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.281.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}if(!s){c=!0;var f={296:"sha512-zqOtfbjYsGTkQScey1O8Hh9fA1+m2RFxLpfv7BWqqTivgQ6iM13v6QJ4d5xykyDwx1GoMFmngC4SKpFn6VciYg=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={374:0,840:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.281.0.PROD"]=self["webpackChunk:NRBA-1.281.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(374);var e=i(944),t=i(344),r=i(566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(217);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var l=i(603);var d=i(687),f=i(234),g=i(289),p=i(154),m=i(384);const h=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function v(e){return!!(0,m.dV)().o.MO&&h(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,d.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,d.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(h(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,d.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,d.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return v(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var R=i(908),_=i(843),E=i(878),x=i(782),N=i(863);class k extends y{static featureName=x.T;constructor(e,t=!0){super(e,x.T,t),p.RI&&((0,_.u)((()=>(0,R.p)("docHidden",[(0,N.t)()],void 0,x.T,this.ee)),!0),(0,E.sp)("pagehide",(()=>(0,R.p)("winPagehide",[(0,N.t)()],void 0,x.T,this.ee))),this.importAggregator(e))}}var T=i(969);class j extends y{static featureName=T.TZ;constructor(e,t=!0){super(e,T.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,m.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,l.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,m.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,k,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1" /> <script type="text/javascript" id="cmp-inserter"> (function() { window.performance.mark('cmpstub start'); const cmpUrl = 'https://cdn.cookielaw.org/consent/cmp.stub.js'; const cmpScript = document.createElement('script'); cmpScript.async = true; cmpScript.type = 'text/javascript'; cmpScript.src = cmpUrl; cmpScript.setAttribute( 'charset', 'UTF-8' ); cmpScript.setAttribute('id', 'cmp-stub'); const cmpNode = document.getElementById('cmp-inserter'); cmpNode.parentNode.insertBefore(cmpScript, cmpNode.nextSibling); window.performance.mark('cmpstub end'); })(); </script> <script type="text/javascript"> /** * OptanonWrapper callback function. We use the OptanonWrapper function to listen for a user event and determine script behavior based on the user event. * * @return void */ function OptanonWrapper() { const otherRegionApplies = ( localStorage.getItem( 'otherRegion' ) !== null ) ? localStorage.getItem( 'otherRegion' ) : false; const ccpaApplies = ( localStorage.getItem( 'ccpaApplies' ) !== null ) ? localStorage.getItem( 'ccpaApplies' ) : false; const OTgeolocation = OneTrust.getGeolocationData(); // We use a block to be able to break from this in order to gain performance. regionFunctionBlock: { if ( otherRegionApplies === 'true' ) { console.log('otherRegionApplies is true'); // Performance. No need to execute other Javascript if the user is not GDPR/CCPA on subsequent visits. break regionFunctionBlock; } else if ( ( 'true' === ccpaApplies ) || ( 'US' === OTgeolocation.country ) ) { console.log('CCPA is true'); // User is within CCPA region. ccpaHelper(); } else { console.log('gdprHelper running'); /* User may be visiting for the first time and we now * need to know if this user is from GDPR or other region. */ gdprHelper(); } } let OTConsentCookieInit = OneTrustGetCookie( 'OptanonConsent' ); let OTConsentGroups = OneTrustGetGroups ( OTConsentCookieInit ); OneTrustGetInitialGroups(); OneTrustSetConsentValues( OTConsentGroups ); /** * Sets a localStorageItem based on its updated value. * */ function setLocalStorageItem( key, value ) { localStorage.setItem( key, value); } /** * Checks presence of query parameter within the URL * Returns true/false depending if it has the word 'regionLog' * and if it's equal to 1. */ function regionLogger() { const queryString = window.location.search; const searchParams = new URLSearchParams( queryString ); return ( ( searchParams.has( 'regionLog' ) ) && ( ( searchParams.get('regionLog') === '1' ) ) ); } /** * Inserts the GDPR stub script. * Then it checks if the user is from a GDPR specific region * using the __tcfapi function which in turn, uses the * getTCData command, which is to retrieve end-user consent * data for IAB purposes, vendors, legitimate interest, publisher * restrictions and more. Calls the gdprUpdateStorage function which is * what sets the localStorage item. */ function gdprHelper() { const tcfApplies = ( localStorage.getItem( 'gdprApplies' ) !== null ) ? localStorage.getItem( 'gdprApplies' ) : false; const gdprLogger = regionLogger(); if ( gdprLogger ) { console.log('gdprHelper helper running'); } // User is a GDPR visitor. if ( ( tcfApplies === true ) || ( typeof __tcfapi === 'function' ) ) { // This will give us a response that the user is within GDPR. __tcfapi('ping', 2, (pingReturn) => { const tcfScriptID = 'tfc-stub'; // We run this only once. if( ( document.getElementById( tcfScriptID ) === null ) && ( true === pingReturn.gdprApplies ) ) { const tcfURL = 'https://cdn.cookielaw.org/consent/tcf.stub.js'; const tcfScript = document.createElement('script'); tcfScript.async = true; tcfScript.type = 'text/javascript'; tcfScript.src = tcfURL; tcfScript.setAttribute( 'charset', 'UTF-8' ); tcfScript.setAttribute('id', tcfScriptID); const tfcNode = document.getElementById('cmp-stub'); tfcNode.parentNode.insertBefore(tcfScript, tfcNode.nextSibling); } }); gdprUpdateStorage(); } else { // User is not GDPR and not CCPA. So it is from outside. We set a localStorage item for performance. const otherRegionApplies = ( localStorage.getItem( 'otherRegion' ) !== null ) ? localStorage.getItem( 'otherRegion' ) : false; if ( otherRegionApplies === false ) { setLocalStorageItem('otherRegion', true); } } } /** * Updates the storage for GDPR only. It checks that the string has changed and if so, it updates the localStorage * for GDPR. */ function gdprUpdateStorage() { const gdprLogger = regionLogger(); __tcfapi( 'addEventListener' , 2, ( tcData, success ) => { if ( success ) { const gdprString = tcData.tcString; const gdprCurrentString = localStorage.getItem( 'gdprString' ); if( gdprLogger ) { console.log('GDPR applies and is set to:' + gdprString); console.log('GDPRData:'); console.log(tcData); } if ( gdprString !== gdprCurrentString ) { if( gdprLogger ) { console.log('GDPR Consent will change on refresh' ); console.log('Old Value: ' + gdprCurrentString ); console.log('New Value: ' + gdprString ); } setLocalStorageItem('gdprApplies', true); setLocalStorageItem('gdprString', gdprString); } } }); } /** * Inserts the CCPA stub script. * Then on page load, it checks if the user is from a CCPA specific region * using the __uspapi function which in turn, uses the * getUSPData command, which is to retrieve end-user consent * data for IAB purposes, vendors, legitimate interest, publisher * restrictions and more. Calls the ccpaUpdateStorage function which is * what sets the localStorage item. */ function ccpaHelper() { setLocalStorageItem('ccpaApplies', true); const ccpaApplies = ( localStorage.getItem( 'ccpaApplies' ) !== null ) ? localStorage.getItem( 'ccpaApplies' ) : false; const ccpaLogger = regionLogger(); if ( ccpaLogger ) { console.log('ccpaHelper helper running'); } const ccpaScriptID = 'ccpa-stub'; const ccpaURL = 'https://cdn.cookielaw.org/opt-out/otCCPAiab.js'; const ccpaScript = document.createElement('script'); ccpaScript.async = true; ccpaScript.type = 'text/javascript'; ccpaScript.src = ccpaURL; ccpaScript.setAttribute('id', ccpaScriptID); ccpaScript.setAttribute('ccpa-opt-out-ids', 'C0001,C0002,C0003,C0004'); ccpaScript.setAttribute( 'charset', 'UTF-8' ); ccpaScript.setAttribute('ccpa-opt-out-geo', 'ca'); ccpaScript.setAttribute('ccpa-opt-out-lspa', 'true'); const ccpaNode = document.getElementById('cmp-stub'); ccpaNode.parentNode.insertBefore(ccpaScript, ccpaNode.nextSibling); // We update the local Storage Item for CCPA. window.addEventListener("load", function () { if ( typeof __uspapi === "function" ) { ccpaUpdateStorage(); } }); } /** * Updates the storage for CCPA only. It checks that the string has changed and if so, it updates the localStorage * for CCPA. */ function ccpaUpdateStorage() { const ccpaLogger = regionLogger(); __uspapi( 'getUSPData' , 1, ( uspData, success ) => { if ( (success) && ( uspData.uspString !== '1---' ) ) { const ccpaString = uspData.uspString; const ccpaCurrentString = localStorage.getItem( 'ccpaString' ); if( ccpaLogger ) { console.log('USPA applies and is set to:' + ccpaString); console.log('USPA Data: '); console.log(uspData); } if ( ccpaString !== ccpaCurrentString ) { if( ccpaLogger ) { console.log('CCPA Consent will change on refresh' ); console.log('Old Value: ' + ccpaCurrentString ); console.log('New Value: ' + ccpaString ); } setLocalStorageItem('ccpaString', ccpaString); } } }); } // Assign OnetrustActiveGroups to a custom initial variable so we can compare any changes to this data layer. function OneTrustGetInitialGroups() { OptanonWrapperCount = ''; OTinitGroups = OnetrustActiveGroups; // See https://community.cookiepro.com/s/article/UUID-66bcaaf1-c7ca-5f32-6760-c75a1337c226?language=en_US } // Returns the OptanonConsent cookie using its name as a parameter. Not parsed. function OneTrustGetCookie( name ) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) { return decodeURIComponent( parts.pop().split(';').shift() ); } return; } // Parses the OptanonConsent Cookie values only. We are interested in the groups (which carry the consent). Returns an object with all the values of said cookie. function OneTrustGetConsentObject( OTcookie ) { let OTConsentObj = {}; OTcookie.split('&').forEach( ( pair ) => { if( pair !== '' ) { let splitpair = pair.split('='); let key = splitpair[0].charAt(0).toLowerCase() + splitpair[0].slice(1).split(' ').join(''); OTConsentObj[key] = splitpair[1]; } }); return OTConsentObj; } // Grabs the OptanonConsent cookie, turns this into an object (using OneTrustGetConsentObject), targets the 'groups' value, turns it into an array, removes the first element of the array. function OneTrustGetGroups ( cookie ) { let OTConsentArr = []; let OTConsentGroupsStr = OneTrustGetConsentObject(cookie).groups; OTConsentArr = OTConsentGroupsStr.split(","); OTConsentArr.shift(); return OTConsentArr; } // Sets the consent values based on the groups paramater, which is an array of consent categories that has been parsed from the OptanonConsent cookie. function OneTrustSetConsentValues( groups ){ // Create a json list with the values ​​of each consent. These values ​​will be updated if the user starts to toggle consent. // We then create a local storage item to read these values in other parts of the theme that require it. Converted to json in case we need to keep adding items. let json_consent = {}; json_consent[ "C0002" ] = groups[0].includes('2:1') ? true : false; json_consent[ "C0003" ] = groups[1].includes('3:1') ? true : false; json_consent[ "C0004" ] = groups[2].includes('4:1') ? true : false; let consent = JSON.stringify( json_consent ); localStorage.setItem( 'consent_one_trust_bdc', consent ); } // OneTrust event listener that fires whenever someone confirms cosent preferences (banner). Optanon.OnConsentChanged( function() { OTinitGroups = OnetrustActiveGroups; let OTConsentCookieChanged = OneTrustGetCookie( 'OptanonConsent' ); let OTConsentGroups = OneTrustGetGroups ( OTConsentCookieChanged ); OneTrustSetConsentValues( OTConsentGroups ); }); } </script> <script type="text/javascript" id="ot-inserter"> (function() { const otUrl = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js'; const otScript = document.createElement('script'); otScript.async = true; otScript.type = 'text/javascript'; otScript.src = otUrl; otScript.setAttribute('id', 'onetrustSDK'); otScript.setAttribute('charset', 'UTF-8'); otScript.setAttribute('data-domain-script', '1744ffcc-f9fb-436a-97fd-6530afa75829'); const otNode = document.getElementById('ot-inserter'); otNode.parentNode.insertBefore(otScript, otNode.nextSibling); })(); </script> <script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <style id="typekit-font-loading"> @import url("https://p.typekit.net/p.css?s=1&k=ewj0jxz&ht=tk&f=12784.12094.12095&a=43290994&app=typekit&e=css"); @font-face { font-family:"franklin-gothic-urw-cond"; src:url("https://use.typekit.net/af/f4a030/000000000000000077359dfc/30/l?primer=fff1a989570eb474b8c22c57cc7199e63bfc7e911b750165d0199218f0b7e7cc&fvd=n5&v=3") format("woff2"),url("https://use.typekit.net/af/f4a030/000000000000000077359dfc/30/d?primer=fff1a989570eb474b8c22c57cc7199e63bfc7e911b750165d0199218f0b7e7cc&fvd=n5&v=3") format("woff"),url("https://use.typekit.net/af/f4a030/000000000000000077359dfc/30/a?primer=fff1a989570eb474b8c22c57cc7199e63bfc7e911b750165d0199218f0b7e7cc&fvd=n5&v=3") format("opentype"); font-display:swap;font-style:normal;font-weight:500;font-stretch:normal; } @font-face { font-family:"franklin-gothic-urw-cond"; src:url("https://use.typekit.net/af/a2031c/0000000000000000000118b9/27/l?primer=fff1a989570eb474b8c22c57cc7199e63bfc7e911b750165d0199218f0b7e7cc&fvd=n7&v=3") format("woff2"),url("https://use.typekit.net/af/a2031c/0000000000000000000118b9/27/d?primer=fff1a989570eb474b8c22c57cc7199e63bfc7e911b750165d0199218f0b7e7cc&fvd=n7&v=3") format("woff"),url("https://use.typekit.net/af/a2031c/0000000000000000000118b9/27/a?primer=fff1a989570eb474b8c22c57cc7199e63bfc7e911b750165d0199218f0b7e7cc&fvd=n7&v=3") format("opentype"); font-display:swap;font-style:normal;font-weight:700;font-stretch:normal; } </style> <style id="cls-ad-css"> [id="ad_lead1"] { min-height: 50px; } @media only screen and (min-width: 768px) { [id="ad_lead1"] { min-height: 90px; } } [id="ad_sectionfront1"], [id="ad_sectionfront2"], [id="ad_articlerail1"], [id="ad_articlerail2"] { position: relative; } [id="ad_sectionfront1"]::before, [id="ad_sectionfront2"]::before, [id="ad_articlerail1"]::before, [id="ad_articlerail2"]::before { content: "Advertisement"; color: #68686d; display: block; font-family:"franklin-gothic-urw-cond"; font-size: .875rem; font-weight: 700; padding-bottom: 0.25rem; text-align: center; text-transform: uppercase; } .m-real-estate-listing__content [id="ad_sectionfront1"]::before, .m-real-estate-listing__content [id="ad_sectionfront2"]::before, .m-real-estate-listing__content [id="ad_articlerail1"]::before, .m-real-estate-listing__content [id="ad_articlerail2"]::before { display: none; } @media only screen and (min-width: 768px) { .m-real-estate-listing__content [id="ad_sectionfront1"]::before, .m-real-estate-listing__content [id="ad_sectionfront2"]::before, .m-real-estate-listing__content [id="ad_articlerail1"]::before, .m-real-estate-listing__content [id="ad_articlerail2"]::before { display: block; } } .m-advert--600 { height: 600px; } .m-sports-bar { min-height: 59px; } </style> <link rel="preconnect" href="https://cdn.cookielaw.org" crossorigin /><link rel="preconnect" href="//ads.pubmatic.com" crossorigin /><link rel="dns-prefetch" href="https://c.amazon-adsystem.com"><link rel="preconnect" href="https://c.amazon-adsystem.com" crossorigin><link rel="preconnect" href="//securepubads.g.doubleclick.net" crossorigin /><link rel="preconnect" href="https://use.typekit.net" crossorigin /><link rel="preconnect" href="https://p.typekit.net" crossorigin /><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /><link rel="preload" as="font" href="https://fonts.googleapis.com/css2?family=Source+Serif+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap" as="style" /><link href="https://fonts.googleapis.com/css2?family=Source+Serif+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap" rel="stylesheet"><link rel="preload" as="font" href="https://use.typekit.net/af/f4a030/000000000000000077359dfa/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3" /><link rel="preload" as="font" href="https://use.typekit.net/af/f4a030/000000000000000077359dfa/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3" /><link rel="preload" as="font" href="https://use.typekit.net/af/a2031c/0000000000000000000118b9/27/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3" /><link rel="preload" as="font" href="https://use.typekit.net/af/a2031c/0000000000000000000118b9/27/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3" /><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <script type="text/javascript" id="pwt-inserter"> (function() { window.performance.mark('pwt start'); let setProfile = window.matchMedia('(min-width: 1024px)').matches; const mobileNonGDPR = '12624'; const desktopNonGDPR = '12623'; const mobileGDPR = '12502'; const desktopGDPR = '12501'; let reportingId = ''; function setPWTScript (PWTid) { var url = '//ads.pubmatic.com/AdServer/js/pwt/159928/' + reportingId; var profileVersionId = ''; var wtads = document.createElement('script'); wtads.async = true; wtads.type = 'text/javascript'; wtads.src = url + profileVersionId + '/pwt.js'; var node = document.getElementById('pwt-inserter'); node.parentNode.insertBefore(wtads, node.nextSibling); window.performance.mark('pwt end'); } let regionLock = false; let otherRegionApplies = localStorage.getItem( 'otherRegion' ); let ccpaApplies = localStorage.getItem( 'ccpaApplies' ); let gdprApplies = localStorage.getItem( 'gdprApplies' ); // This check is on subsequent page loads, since the localStorage item // has been already been set. We use a regionLock variable as a lock // to determine whether we need to run a Promise or not. if ( ( 'true' === otherRegionApplies ) || ( 'true' === ccpaApplies ) ){ reportingId = setProfile ? desktopNonGDPR : mobileNonGDPR; regionLock = true; } else if ( 'true' === gdprApplies ) { // It's GDPR, so load GDPR PWT Profile reportingId = setProfile ? desktopGDPR : mobileGDPR; regionLock = true; } // We are unsure what region the first time visitor is, so we need to run // a promise in order to wait until OneTrust is loaded, and two, which // region is this user from? if ( !regionLock ) { // On first load, it is not obvious which region the user is from. const CMPTIMEOUT = 5500; // 1000ms = 1 seconds. // This is the promise callback function, with a SetTimeout that runs every 30ms. function ensureRegionIsSet( CMPTIMEOUT ) { var start = Date.now(); return new Promise( waitForRegion ); // Set the promise object within the ensureRegionIsSet function // waitForRegion makes the decision whether the condition is met // or the timeout has been exceeded which means // this promise will be rejected. function waitForRegion(resolve, reject) { otherRegionApplies = localStorage.getItem( 'otherRegion' ); ccpaApplies = localStorage.getItem( 'ccpaApplies' ); gdprApplies = localStorage.getItem( 'gdprApplies' ); // We want OneTrust to be loaded and two, wait until the localStorage item is set to true for any region. if ( ( typeof OptanonWrapper === 'function') && ( ( 'true' === otherRegionApplies ) || ( 'true' === ccpaApplies ) || ( 'true' === gdprApplies ) )) { resolve("Region is determined"); } else if ( CMPTIMEOUT && ( Date.now() - start ) >= CMPTIMEOUT ) { reject( new Error("timeout") ); } else { setTimeout( waitForRegion.bind(this, resolve, reject), 30 ); } } } // This will run the promise. ensureRegionIsSet( CMPTIMEOUT ).then(function(){ // If it's 'other' or CCPA region, load non GDPR PWT profiles. if ( ( 'true' === otherRegionApplies ) || ( 'true' === ccpaApplies ) ) { reportingId = setProfile ? desktopNonGDPR : mobileNonGDPR; setPWTScript(reportingId); } else { // It's GDPR, load PWT Profile with those modules baked in. reportingId = setProfile ? desktopGDPR : mobileGDPR; setPWTScript(reportingId); } }); } else { setPWTScript(reportingId); } })(); </script> <script src="https://www.boston.com/wp-content/themes/bdc-2020/includes/gam/lazy-load-ad.min.js" type="text/javascript"></script> <script src="//securepubads.g.doubleclick.net/tag/js/gpt.js" type="text/javascript" id="securepubads.g" async></script> <script async src="https://c.amazon-adsystem.com/aax2/apstag.js"></script> <script> window.apstag = window.apstag || { init: function() { apstag._Q.push(["i", arguments, (new Date).getTime()]) }, fetchBids: function() { apstag._Q.push(["f", arguments, (new Date).getTime()]) }, setDisplayBids: function() {}, _Q: [] }; </script> <script id="boston-ads" type="text/javascript"> var PWT = {}; var adLazyLoading = false; var googletag = googletag || {}; var gptRan = false; window.initAdserverFlag = false; var FAILSAFE_TIMEOUT = 600; const DYNAMIC_NAME = '/travel'; var adSlots = []; googletag.cmd = googletag.cmd || []; </script> <script id="boston-init-adserver" type="text/javascript"> // this function will act as a lock and will call the GPT API function initAdserver(forced) { if((forced === true && window.initAdserverFlag !== true) || (PWT.a9_BidsReceived && PWT.ow_BidsReceived)){ window.initAdserverFlag = true; PWT.a9_BidsReceived = PWT.ow_BidsReceived = false; if( 'undefined' !== typeof AdLazyLoader ) { adLazyLoading = true; var slotsToLazyLoad = []; for ( var prop in window.adSlots ) { if ( window.adSlots.hasOwnProperty( prop ) ) { slotsToLazyLoad.push( window.adSlots[ prop ] ); } } AdLazyLoader.registerSlots( slotsToLazyLoad ); } else { googletag.pubads().refresh(); } } } </script> <script id="boston-init-tam" type="text/javascript"> var initParams = { pubID: '3453', adServer: 'googletag', videoAdServer: 'DFP' }; /* * If we have CCPA user, pass the consent along. */ const ccpaApplies = localStorage.getItem( 'ccpaApplies' ); if( null !== ccpaApplies ) { //This is a CCPA user, pass the consent. let storageCCPA = localStorage.getItem( 'ccpaString' ); initParams.params = { us_privacy: storageCCPA }; } apstag.init(initParams); let slots = []; slots = [ { slotID: 'ad_lead1', sizes: [[728, 90], [970, 90], [320, 50]] }, { slotID: 'ad_articlerail1', sizes: [[300,250], [300,600], [160,600]] }, { slotID: 'ad_articlerail2', sizes: [[300,250], [300,600], [160,600]] }, ]; // Check if is inarticle1 unit. if ( 'ad_inarticle1' === 'ad_inarticle1' ) { // Push multiformat video & display slot. slots.push( { slotID: 'ad_inarticle1', mediaType: 'multi-format', multiFormatProperties: { display: { sizes: [[ 728, 90 ], [ 970, 90 ], [ 970, 250 ], [ 300, 250 ], [ 320, 100 ], [ 320, 50 ]] }, video: { sizes: [[ 300,400 ]] } } } ); } else if ( 1 === 1 ) { slots.push( { slotID: 'ad_inarticle1', mediaType: 'video', video: { sizes: [[ 1, 1 ], [ 640, 480 ]] } } ); } else { slots.push({ slotID: 'ad_inarticle1', sizes: [[ 728, 90 ], [ 970, 90 ], [ 970, 250 ], [ 300, 250 ], [ 320, 100 ], [ 320, 50 ]] }); } // Check if is inarticle1 unit. if ( 'ad_inarticle2' === 'ad_inarticle1' ) { // Push multiformat video & display slot. slots.push( { slotID: 'ad_inarticle2', mediaType: 'multi-format', multiFormatProperties: { display: { sizes: [[ 728, 90 ], [ 970, 90 ], [ 970, 250 ], [ 300, 250 ], [ 320, 100 ], [ 320, 50 ]] }, video: { sizes: [[ 300,400 ]] } } } ); } else if ( 2 === 1 ) { slots.push( { slotID: 'ad_inarticle_video1', mediaType: 'video', video: { sizes: [[ 1, 1 ], [ 640, 480 ]] } } ); } else { slots.push({ slotID: 'ad_inarticle2', sizes: [[ 728, 90 ], [ 970, 90 ], [ 970, 250 ], [ 300, 250 ], [ 320, 100 ], [ 320, 50 ]] }); } // Check if is inarticle1 unit. if ( 'ad_inarticle3' === 'ad_inarticle1' ) { // Push multiformat video & display slot. slots.push( { slotID: 'ad_inarticle3', mediaType: 'multi-format', multiFormatProperties: { display: { sizes: [[ 728, 90 ], [ 970, 90 ], [ 970, 250 ], [ 300, 250 ], [ 320, 100 ], [ 320, 50 ]] }, video: { sizes: [[ 300,400 ]] } } } ); } else if ( 3 === 1 ) { slots.push( { slotID: 'ad_inarticle2', mediaType: 'video', video: { sizes: [[ 1, 1 ], [ 640, 480 ]] } } ); } else { slots.push({ slotID: 'ad_inarticle3', sizes: [[ 728, 90 ], [ 970, 90 ], [ 970, 250 ], [ 300, 250 ], [ 320, 100 ], [ 320, 50 ]] }); } apstag.fetchBids({ slots: slots, timeout: 2e3 // Make Sure this timeout is less than or equal to OpenWrap TimeOut. }, function(bids) { googletag.cmd.push(function(){ apstag.setDisplayBids(); PWT.a9_BidsReceived = true; initAdserver(false); }); }); </script> <script id="boston-gam" type="text/javascript"> googletag.cmd.push(function() { var leaderMapping = googletag .sizeMapping() .addSize([0, 0], [[300, 250], [320, 50], [320, 100], [ 325, 508 ], [ 325, 204 ]]) .addSize([768, 200], [[728, 90], [300,250]]) .addSize([960, 200], [[728, 90], [620, 366], [300, 250]]) .addSize([1280, 200], [[970, 250], [970, 90], [728, 90], [620, 366], [300, 250]]) .build(); var leader1Mapping = googletag .sizeMapping() .addSize([0, 0], [320, 50]) .addSize([768, 200], [[768, 90], [728, 90]]) .addSize([1050, 200], [[970, 90], [728, 90]]) .build(); var leader2Mapping = googletag .sizeMapping() .addSize([0, 0], [[300, 250], [320, 100], [320, 50], [ 325, 508 ], [ 325, 204 ]]) .addSize([768, 200], [[728, 90], [300, 250]]) .addSize([1050, 200], [[728, 90], [620, 366], [300, 250]]) .build(); var railMapping = googletag .sizeMapping() .addSize([0, 0], []) .addSize([768, 200], []) .addSize([1050, 200], [[300, 250], [300, 600], [160,600]]) .build(); var videoMapping = googletag .sizeMapping() .addSize([0, 0], [[1, 1], [640, 480]]) .addSize([768, 200], [[1, 1], [640, 480]]) .addSize([1050, 200], [[1, 1], [640, 480]]) .build(); adSlots['ad_lead1'] = googletag .defineSlot('/61381659/boston.com' + DYNAMIC_NAME, [[768, 90], [728, 90], [970, 90], [320, 50]], 'ad_lead1' ) .setTargeting('pos', [['lead1'], ['atf']]) .defineSizeMapping( leader1Mapping ) .addService( googletag.pubads() ); adSlots['ad_articlerail1'] = googletag .defineSlot('/61381659/boston.com' + DYNAMIC_NAME, [[300,250], [300,600], [160,600]], 'ad_articlerail1') .setTargeting('pos', [['articlerail1'], ['atf']]) .defineSizeMapping(railMapping) .addService( googletag.pubads() ); adSlots['ad_articlerail2'] = googletag .defineSlot('/61381659/boston.com' + DYNAMIC_NAME, [[300,250], [300,600], [160,600]], 'ad_articlerail2') .setTargeting('pos', [['articlerail2'], ['atf']]) .defineSizeMapping(railMapping) .addService( googletag.pubads() ); // Dynamically build the in-article ad definitions and add to the config definition based off of the number of in-article ads adSlots['ad_inarticle_video1'] = googletag .defineSlot('/61381659/boston.com' + DYNAMIC_NAME, [[1,1],[640,480]], 'ad_inarticle_video1' ) .setTargeting('pos', [['inarticle_video1'], ['btf']]) .defineSizeMapping( videoMapping ) .addService( googletag.pubads() ); adSlots['ad_inarticle1'] = googletag .defineSlot('/61381659/boston.com' + DYNAMIC_NAME, [[728,90],[970,90],[970,250],[300,250],[320,100],[320,50]], 'ad_inarticle1' ) .setTargeting('pos', [['inarticle1'], ['btf']]) .defineSizeMapping( leader2Mapping ) .addService( googletag.pubads() ); adSlots['ad_inarticle2'] = googletag .defineSlot('/61381659/boston.com' + DYNAMIC_NAME, [[728,90],[970,90],[970,250],[300,250],[320,100],[320,50]], 'ad_inarticle2' ) .setTargeting('pos', [['inarticle2'], ['btf']]) .defineSizeMapping( leader2Mapping ) .addService( googletag.pubads() ); adSlots['nativeteasebot'] = googletag .defineSlot('/61381659/boston.com' + DYNAMIC_NAME, [300,100], 'nativeteasebot') .setTargeting('pos', ['nativeteasebot']) .addService(googletag.pubads()); adSlots['presentedby'] = googletag .defineOutOfPageSlot('/61381659/boston.com' + DYNAMIC_NAME, 'presentedby') .setTargeting('pos', [['presentedby'], ['outofpage']]) .addService(googletag.pubads()); adSlots['oosvideo'] = googletag .defineOutOfPageSlot('/61381659/boston.com' + DYNAMIC_NAME, 'oosvideo') .setTargeting('pos', [['oosvideo'], ['outofpage']]) .addService(googletag.pubads()); // common targetings googletag.pubads() .setTargeting( 'pgtype', 'post' ) .setTargeting( 'authors', 'kristi.palma' ) .setTargeting( 'ptag', 'cape-cod-travel' ) .setTargeting( 'tag', 'cape-cod,cape-cod-travel,new-england-travel,outdoors,travel,travel-guides' ) .setTargeting( 's1', 'boston.com' ) .setTargeting( 's2', 'travel' ) .setTargeting( 'pageurl', '_travel_cape-cod-travel_2022_05_20_5-things-to-do-when-visiting-yarmouth_' ) .setTargeting( 'environment', ['production']) .setTargeting( 'adunblock', ['undefined' !== typeof( window._bcm_il ) ? 'true' : 'false'] ); /* * * BlueConic Reference * https://support.blueconic.com/hc/en-us/articles/115004519689-doubleclick-for-publishers--targeting-only-#adjust-your-google-ad-manager-implementation-code-0-1 * */ if ( typeof Storage !== "undefined" ) { const targetingParamStr = localStorage.getItem("bcDFPTargetingParams"); if ( targetingParamStr ) { const targetingParameters = JSON.parse( targetingParamStr ); targetingParameters.forEach( function( param, index ) { googletag.pubads().setTargeting( param.key, param.value ); }); } } // Register event handlers to observe lazy loading behavior. (this for the QA instructions) googletag.pubads().addEventListener( 'slotRequested', function( event ) { updateSlotStatus( event.slot.getSlotElementId(), 'fetched' ); }); googletag.pubads().addEventListener( 'slotOnload', function( event ) { updateSlotStatus( event.slot.getSlotElementId(), 'rendered' ); }); googletag.pubads().addEventListener( 'slotRenderEnded', function( event ) { var size = event.size; if(size === null) return; var slot = event.slot; var slotDiv = document.getElementById(slot.getSlotElementId()); if (size[0] > slotDiv.clientWidth) { slotDiv.style.width = size[0] + 'px'; } if (size[1] > slotDiv.clientHeight) { slotDiv.style.height = size[1] + 'px'; } }); googletag.pubads().enableSingleRequest(); googletag.pubads().disableInitialLoad(); googletag.enableServices(); /* The above code is a snippet of code that is used to call the Prebid.js library. */ if( typeof PWT.requestBids === 'function' ) { PWT.requestBids( PWT.generateConfForGPT(googletag.pubads().getSlots()), function(adUnitsArray) { PWT.addKeyValuePairsToGPTSlots(adUnitsArray); PWT.ow_BidsReceived = true; initAdserver(false); } ); } // No need to handle "else" part as we have A9 wrapper on page // OpenWrap code END here setTimeout(function() { initAdserver(true); // calling this function with forced mode set to true so that GPT API is always executed }, FAILSAFE_TIMEOUT); if ( (PWT.a9_BidsReceived && PWT.ow_BidsReceived) && ! adLazyLoading && 'undefined' !== typeof AdLazyLoader ) { // This is a fallback for if prebid has already returned and // attempted to register ads to lazy load before the ads have // all been defined. adLazyLoading = true; var slotsToLazyLoad = []; for ( var prop in window.adSlots ) { if ( window.adSlots.hasOwnProperty( prop ) ) { slotsToLazyLoad.push( window.adSlots[ prop ] ); } } AdLazyLoader.registerSlots( slotsToLazyLoad ); } // Checks that there is a video with ads available in the markup. const hasArcVideo = document.getElementsByClassName( 'a-video' ).length > 0 || ( typeof hasArcVideoPlayerAd !== 'undefined' && hasArcVideoPlayerAd ); /** * =================== * Arc Video * =================== */ if ( hasArcVideo ) { const params = [ 'sz=640x480', `iu=/61381659/boston.com${DYNAMIC_NAME}`, 'gdfp_req=1', 'env=vp', 'output=xml_vast3', 'unviewed_position_start=1', 'description_url=https%3A%2F%2Fboston.com', 'ciu_szs=300x250', `cust_params=${buildCustomParams()}`, ].join('&') window.PoWaSettings = window.PoWaSettings || {}; window.PoWaSettings.advertising = window.PoWaSettings.advertising || {}; if ( typeof hasArcVideoPlayerAd !== 'undefined' && hasArcVideoPlayerAd ) { /** * Calculates the formatted duration of a video in hours, minutes, and seconds. * * @param {Object} videoData - An object containing video data such as duration. * @param {number} videoData.duration - The duration of the video in milliseconds. * * @return {string} - The formatted duration of the video in the format hh:mm:ss. */ const getTime = (videoData) => { if ( !videoData.duration ) return ''; const duration = videoData.duration / 1000; const hours = Math.floor(duration / 3600); const minutes = Math.floor(duration / 60) % 60; const seconds = Math.floor(duration % 60); const hourDisplay = hours ? `${hours}:` : ''; const minuteDisplay = hours && minutes < 10 ? `0${minutes}:` : `${minutes}:`; const secondDisplay = seconds < 10 ? `0${seconds}` : seconds; return `${hourDisplay}${minuteDisplay}${secondDisplay}`; }; // Saves the listener interval ID. let intervalPoWaId; /** * In order to create the promo markup, the script needs to override values of a variable stored in the window object. * That is the reason to create an interval that listens to PoWaSettings as early in the execution as possible. */ function setWindowPoWaSettingsPromo() { if ( window.PoWaSettings ) { const playButtonSVG = `<svg class="bdc-arc-promo__play" height="20px" viewBox="0 0 24 40" width="12px"><title>Play</title><g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Play" transform="translate(0.916016, 0.000000)" fill="#FFFFFF" fill-rule="nonzero"><path d="M22.150346,18.47837 L19.03045,15.69057 L19.032738,15.68853 L2.182097,0.62952 C1.708623,0.20849 1.091049,-0.00203 0.473474,9.99999998e-06 C0.372832,9.99999998e-06 0.274478,0.00615 0.171549,0.01841 L0.002287,0.0368 L0.002287,25.268 L0,25.268 L0,39.9673 L0.176123,39.98365 C0.276765,39.99591 0.375119,40 0.473474,40 L0.480336,40 C1.093336,40 1.708623,39.79153 2.17981,39.37663 L22.150346,21.52778 C22.62382,21.10879 22.859414,20.55491 22.857126,20.00103 C22.859414,19.45124 22.62382,18.8994 22.150346,18.47837"></path></g></g></svg> `; // Play button SVG. const logoSVG = `<svg class="bdc-arc-promo__logo" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg47" version="1.1" viewBox="0 0 104 40" height="40" width="104"><title id="title2">BDC Logo</title><defs id="defs9"><path id="path-1" d="M 0.99414923,0.99002979 V 330.92546 H 79.979206 c 43.720834,0 66.151404,-22.04811 66.151404,-62.086 v 0 -62.09308 c 0,-20.20663 -10.56015,-37.62272 -30.3914,-45.42773 v 0 c 18.90343,-6.84179 28.54284,-23.34423 28.54284,-43.55086 v 0 -54.677601 c 0,-40.052053 -22.96884,-62.10015921 -66.165566,-62.10015921 v 0 z M 58.101082,49.739505 h 13.704814 c 10.014783,0 15.574618,6.863031 15.574618,18.733453 v 0 49.103602 c 0,12.06166 -5.38277,18.91052 -15.574618,18.91052 v 0 H 58.101082 Z m -0.19123,134.569235 h 12.401617 c 13.364849,0 18.917601,7.42963 18.733453,21.50983 v 0 57.45397 c 0,12.06166 -5.368604,18.90344 -15.567535,18.90344 v 0 H 57.909852 Z" /><path id="path-3" d="M 0.30715319,65.691033 V 271.43322 c 0,39.83958 29.27943181,65.61313 73.02151481,65.61313 v 0 c 43.749162,0 72.681552,-25.58232 72.681552,-65.61313 v 0 -205.742187 c 0,-39.867906 -28.74116,-65.62020709 -72.476157,-65.62020709 v 0 C 29.79198,0.07082591 0.49838315,25.823127 0.30715319,65.691033 Z M 57.768215,267.90609 V 69.388145 c 0,-12.422864 5.552752,-20.178302 15.560453,-20.178302 v 0 c 10.206014,0 15.213406,7.755438 15.213406,20.178302 v 0 198.517945 c 0,12.43703 -5.007392,20.21372 -15.213406,20.21372 v 0 c -10.007701,0 -15.560453,-7.77669 -15.560453,-20.21372 z" /><path id="path-5" d="m 0.74508222,65.322738 v 45.597722 c 0,26.50306 8.72575228,40.77448 25.77354878,54.11808 v 0 l 47.998721,39.83957 c 7.797933,7.43672 10.942603,12.99656 10.942603,26.70846 v 0 H 85.09166 v 36.31952 c 0,12.43703 -4.10082,20.21372 -14.278503,20.21372 v 0 c -10.007702,0 -14.646799,-7.77669 -14.646799,-20.21372 v 0 -59.67791 H 0.19264011 v 63.94163 c 0,40.04497 26.70136889,65.26608 70.25930389,65.26608 v 0 c 43.182556,0 72.100776,-25.22111 72.100776,-65.26608 v 0 -53.38857 c 0,-26.50306 -9.08696,-40.76031 -26.12768,-54.111 v 0 L 68.617553,124.63236 C 60.805455,117.22397 57.660785,111.64997 57.660785,97.93807 v 0 -28.549925 c 0,-12.422864 4.447867,-20.178302 14.632633,-20.178302 v 0 c 10.206014,0 14.271421,7.755438 14.271421,20.178302 v 0 53.756865 H 142.17026 V 65.322738 c 0,-40.052053 -26.68012,-65.25191209 -70.238054,-65.25191209 v 0 c -43.565018,0 -71.18712378,25.19985909 -71.18712378,65.25191209 z" /><path id="path-7" d="M 0.18414737,65.691033 V 271.43322 c 0,39.83958 29.28651463,65.61313 73.02859763,65.61313 v 0 c 43.734995,0 72.646135,-25.58232 72.646135,-65.61313 v 0 -205.742187 c 0,-39.867906 -29.08112,-65.62020709 -72.646135,-65.62020709 v 0 C 29.647727,0.07082591 0.18414737,25.823127 0.18414737,65.691033 Z M 57.638127,267.90609 V 69.388145 c 0,-12.422864 5.566917,-20.178302 15.574618,-20.178302 v 0 c 10.191848,0 15.192158,7.755438 15.192158,20.178302 v 0 198.517945 c 0,12.43703 -5.00031,20.21372 -15.192158,20.21372 v 0 c -10.007701,0 -15.574618,-7.77669 -15.574618,-20.21372 z" /><path id="path-9" d="m 1106.8983,130.37634 v 76.47073 c 0,14.81678 10.8788,24.38537 27.1475,24.38537 v 0 c 16.2546,0 26.9989,-9.49776 26.9989,-24.38537 v 0 -76.47073 c 0,-14.8097 -10.7443,-24.38536 -26.9989,-24.38536 v 0 c -16.2687,0 -27.1475,9.57566 -27.1475,24.38536 z m 21.354,75.16754 v -73.77935 c 0,-4.62494 2.0044,-7.51463 5.7935,-7.51463 v 0 c 3.7892,0 5.6449,2.88969 5.6449,7.51463 v 0 73.77935 c 0,4.62493 -1.8557,7.50046 -5.6449,7.50046 v 0 c -3.7183,0 -5.7935,-2.87553 -5.7935,-7.50046 z" /></defs><g style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" transform="matrix(0.06987876,0,0,0.06987876,7.3493524,8.3563326)" id="BDC_Logo_2020_Full_White"><g transform="translate(27,22.137254)" id="COM"><g transform="translate(0,2.784991)" id="Group-3"><mask fill="white" id="mask-2"><use height="100%" width="100%" y="0" x="0" id="use11" xlink:href="#path-1" /></mask><g id="Clip-2" /><polygon style="fill:#ffffff" points="239.40125,424.18902 239.40125,-92.273531 -92.262328,-92.273531 -92.262328,424.18902 " mask="url(#mask-2)" id="Fill-1" /></g><g transform="translate(162.32589)" id="Group-6"><mask fill="white" id="mask-4"><use height="100%" width="100%" y="0" x="0" id="use17" xlink:href="#path-3" /></mask><g id="Clip-5" /><polygon style="fill:#ffffff" points="239.2667,430.30991 239.2667,-93.192734 -92.956407,-93.192734 -92.956407,430.30991 " mask="url(#mask-4)" id="Fill-4" /></g><g transform="translate(325.0142)" id="Group-9"><mask fill="white" id="mask-6"><use height="100%" width="100%" y="0" x="0" id="use23" xlink:href="#path-5" /></mask><g id="Clip-8" /><polygon style="fill:#ffffff" points="235.81628,430.69945 235.81628,-93.192734 -93.056755,-93.192734 -93.056755,430.69945 " mask="url(#mask-6)" id="Fill-7" /></g><polygon style="fill:#ffffff" points="616.20077,55.310787 616.20077,3.7778541 475.14388,3.7778541 475.14388,55.112475 517.05157,55.112475 517.05157,333.69912 574.4843,333.69912 574.4843,55.112475 574.4843,55.310787 " id="Fill-10" /><polygon style="fill:#ffffff" points="892.02236,333.69912 941.16138,333.69912 941.16138,3.7778541 889.24599,3.7778541 889.24599,108.49396 890.16672,177.82545 889.24599,177.82545 851.99156,3.7778541 793.2273,3.7778541 793.2273,333.69912 845.13561,333.69912 845.13561,196.37475 844.21487,132.42604 845.13561,132.42604 " id="Fill-14" /><g transform="translate(625.65744)" id="Group-13"><mask fill="white" id="mask-8"><use height="100%" width="100%" y="0" x="0" id="use31" xlink:href="#path-7" /></mask><g id="Clip-12" /><polygon style="fill:#ffffff" points="239.12244,430.30991 239.12244,-93.192734 -93.086495,-93.192734 -93.086495,430.30991 " mask="url(#mask-8)" id="Fill-11" /></g><polygon style="fill:#ffffff" points="1280.7886,333.59429 1356.1191,333.59429 1356.1191,3.6659492 973.64498,3.6659492 973.64498,56.119619 1304.9898,56.119619 1304.9898,281.13354 1241.9831,281.13354 1241.9831,324.98186 1142.8977,281.13354 973.64498,281.13354 973.64498,333.59429 1144.895,333.59429 1280.7886,393.72549 " id="Fill-15" /><polygon style="fill:#ffffff" points="1026.8791,231.25368 1026.8791,202.2009 997.84761,202.2009 997.84761,231.25368 " id="Fill-16" /><polygon style="fill:#ffffff" points="1188.5549,176.95146 1188.4203,152.70066 1188.7603,152.70066 1197.1036,231.23244 1213.2873,231.23244 1221.7651,152.70066 1222.1051,152.70066 1221.7651,176.95146 1221.7651,231.23244 1241.2706,231.23244 1241.2706,108.60445 1212.9473,108.60445 1205.4327,184.11904 1205.0927,184.11904 1197.5852,108.60445 1169.0565,108.60445 1169.0565,231.23244 1188.5549,231.23244 " id="Fill-23" /><mask fill="white" id="mask-10"><use height="100%" width="100%" y="0" x="0" id="use40" xlink:href="#path-9" /></mask><use height="100%" width="100%" y="0" x="0" style="fill:#ffffff" xlink:href="#path-9" id="Clip-21" /><path style="fill:#ffffff" id="Clip-18" d="m 1046.8804,130.37634 v 76.47073 c 0,14.81678 10.7514,24.38537 26.8005,24.38537 v 0 c 16.1979,0 26.1135,-9.49776 26.1135,-24.38537 v 0 -24.7324 h -20.8086 v 23.42921 c 0,4.62493 -1.5157,7.51463 -5.3049,7.51463 v 0 c -3.7254,0 -5.4394,-2.8897 -5.4394,-7.51463 v 0 -73.79352 c 0,-4.61077 1.6573,-7.50046 5.4394,-7.50046 v 0 c 3.7892,0 5.3049,2.88969 5.3049,7.50046 v 0 21.70106 h 20.8086 v -23.07508 c 0,-14.8097 -9.9156,-24.39953 -26.1135,-24.39953 v 0 c -16.0491,0 -26.8005,9.58983 -26.8005,24.39953 z" /></g></g></svg> `; // Play button SVG. window.PoWaSettings.promo = window.PoWaSettings.promo || { template: (settings) => { return ` <div class="bdc-arc-promo powa-click-promo-play" ${settings.image ? ` style="background-image: url('${settings.image}')"` : ''}> <div class="bdc-arc-promo__bar"> <div class="bdc-arc-promo__controls"> ${playButtonSVG} <span class="bdc-arc-promo__duration">${getTime(settings.videoData)}</span> </div> ${logoSVG} </div> </div> `; }, style: () => ` .powa-shot { background-position: center; background-size: cover; height: 100%; position: absolute; width: 100%; } .bdc-arc-promo { background-position: center; background-size: cover; display: flex; height: 100%; } .bdc-arc-promo__bar { display: flex; margin-top: auto; padding: 10px; width: 100%; } .bdc-arc-promo__controls { align-items: center; background: #0000007d; display: inline-flex; margin-bottom: -10px; margin-left: -10px; margin-top: auto; max-height: 40px; padding: 10px; } .bdc-arc-promo__controls .bdc-arc-promo__play { margin-right: 10px; } .bdc-arc-promo__logo { margin-left: auto; opacity: .5; } .bdc-arc-promo__duration { color: #FFFFFF; font-family: "franklin-gothic-urw-cond", arial; } .bdc-arc-promo, .bdc-arc-promo__controls svg { cursor: pointer; } `, }; stopWindowPoWaListening(); } } // Starts the listener interval. function startWindowPoWaListening() { intervalPoWaId = setInterval(setWindowPoWaSettingsPromo, 100); } // Stops the listener interval. function stopWindowPoWaListening() { clearInterval(intervalPoWaId); } // Loads the listener interval as soon as the site has started. window.addEventListener('DOMContentLoaded', startWindowPoWaListening); window.PoWaSettings.advertising.adBar = true; window.addEventListener('powaError', function () { document.getElementsByClassName('a-arc-video-advert')[0].remove(); }); } // Define the ad tag to be used by the player. window.PoWaSettings.advertising.adTag = function () { return `//pubads.g.doubleclick.net/gampad/ads?${params}`; }; /** * Builds the custom parameters needed for the ARC video preroll * * @return string - URL encoded string of parameters */ function buildCustomParams() { const getCurrentBreakPoint = function() { if ( window.outerWidth < 768 ) { return 'mobile'; } if ( window.outerWidth < 960 ) { return 'tablet'; } return 'desktop'; }; const getTestQueryString = function() { var queryString = window.location.search; var regex = /[\?\&]test=([^&]*)/; return queryString.match( regex ) ? queryString.match( regex )[1] : ''; }; const customParams = [ 'pos=preroll', 'breakpoint=' + getCurrentBreakPoint(), 'test=' + getTestQueryString(), ]; googletag .pubads() .getTargetingKeys() .forEach((key) => customParams.push(`${key}=${googletag.pubads().getTargeting(key)}`)); return encodeURIComponent( customParams.join('&') .replace('pgtype=post', 'pgtype=article') // Match legacy ad call format ); }; } }); //googletag.cmd.push /* * Updating the status of the slot. * This is only to check behaivor on branch env */ function updateSlotStatus( slotId, state ) { var elem = document.getElementById( slotId ); elem.className = 'activated'; console.log( slotId + ' status: ' + state ); } </script> <!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https://yoast.com/wordpress/plugins/seo/ --> <title>5 things to do when visiting Yarmouth</title> <meta name="description" content="5 things to do when visiting Yarmouth. Read more on Boston.com." /> <link rel="canonical" href="https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="5 things to do when visiting Yarmouth" /> <meta property="og:description" content="5 things to do when visiting Yarmouth. Read more on Boston.com." /> <meta property="og:url" content="https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/" /> <meta property="og:site_name" content="Boston.com" /> <meta property="article:publisher" content="https://www.facebook.com/boston" /> <meta property="article:published_time" content="2022-05-20T17:07:44+00:00" /> <meta property="article:modified_time" content="2023-05-24T14:04:27+00:00" /> <meta property="og:image" content="https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg" /> <meta property="og:image:width" content="1500" /> <meta property="og:image:height" content="981" /> <meta property="og:image:type" content="image/jpeg" /> <meta name="author" content="Kristi Palma" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:description" content="From sand sculptures to boardwalks to pirate treasure. " /> <meta name="twitter:image" content="https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg" /> <meta name="twitter:creator" content="@kristipalma" /> <meta name="twitter:site" content="@BostonDotCom" /> <meta name="twitter:label1" content="Written by" /> <meta name="twitter:data1" content="Kristi Palma" /> <meta name="twitter:label2" content="Est. reading time" /> <meta name="twitter:data2" content="4 minutes" /> <script type="application/ld+json" class="yoast-schema-graph">{ "@context": "https://schema.org", "@graph": [ { "@type": "NewsArticle", "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#article", "isPartOf": { "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/" }, "author": [ { "@id": "https://www.boston.com/#/schema/person/d95a527f4c34821280baf4386b9aaaa8" } ], "headline": "5 things to do when visiting Yarmouth", "datePublished": "2022-05-20T17:07:44+00:00", "dateModified": "2023-05-24T14:04:27+00:00", "mainEntityOfPage": { "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/" }, "wordCount": 646, "commentCount": 0, "publisher": { "@id": "https://www.boston.com/#organization" }, "image": { "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#primaryimage" }, "thumbnailUrl": "https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c.jpg", "keywords": [ "Cape Cod", "Cape Cod Travel", "New England Travel", "Outdoors", "Travel", "Travel Guides" ], "articleSection": [ "Travel" ], "inLanguage": "en-US", "potentialAction": [ { "@type": "CommentAction", "name": "Comment", "target": [ "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#respond" ] } ], "copyrightYear": "2022", "copyrightHolder": { "@id": "https://www.boston.com/#organization" } }, { "@type": "WebPage", "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/", "url": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/", "name": "5 things to do when visiting Yarmouth", "isPartOf": { "@id": "https://www.boston.com/#website" }, "primaryImageOfPage": { "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#primaryimage" }, "image": { "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#primaryimage" }, "thumbnailUrl": "https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c.jpg", "datePublished": "2022-05-20T17:07:44+00:00", "dateModified": "2023-05-24T14:04:27+00:00", "description": "5 things to do when visiting Yarmouth. Read more on Boston.com.", "breadcrumb": { "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#breadcrumb" }, "inLanguage": "en-US", "potentialAction": [ { "@type": "ReadAction", "target": [ "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/" ] } ] }, { "@type": "ImageObject", "inLanguage": "en-US", "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#primaryimage", "url": "https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c.jpg", "contentUrl": "https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c.jpg", "width": 1500, "height": 981, "caption": "The Bass Hole Boardwalk at Gray's Beach in Yarmouth." }, { "@type": "BreadcrumbList", "@id": "https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/#breadcrumb", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.boston.com/" }, { "@type": "ListItem", "position": 2, "name": "5 things to do when visiting Yarmouth" } ] }, { "@type": "WebSite", "@id": "https://www.boston.com/#website", "url": "https://www.boston.com/", "name": "Boston.com", "description": "Boston.com", "publisher": { "@id": "https://www.boston.com/#organization" }, "potentialAction": [ { "@type": "SearchAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://www.boston.com/?s={search_term_string}" }, "query-input": "required name=search_term_string" } ], "inLanguage": "en-US" }, { "@type": "NewsMediaOrganization", "@id": "https://www.boston.com/#organization", "name": "Boston.com", "url": "https://www.boston.com", "logo": "https://bdc2020.o0bc.com/wp-content/uploads/2021/05/Boston.com-Logo-609cb231cf4d6.png", "image": { "@id": "https://www.boston.com/#/schema/logo/image/" }, "sameAs": [ "https://www.facebook.com/boston", "https://x.com/BostonDotCom", "https://www.instagram.com/boston/", "https://www.youtube.com/channel/UC8IkdxFyPXgw11n4Ew0osHQ" ], "address": "1 Exchange Place, Boston, MA 02109", "areaServed": [ "Boston", "Massachusetts", "New England" ], "description": "Boston.com is the region’s leading digital destination for information on all things Boston. Millions of visitors turn to our site for the best coverage of breaking news, things to do, sports, and entertainment in Greater Boston and beyond.", "email": "tips@boston.com", "foundingDate": "1995-10-30", "legalName": "Boston Globe Media Partners", "location": "Boston", "masthead": "https://www.boston.com/contact-us/" }, { "@type": "Person", "@id": "https://www.boston.com/#/schema/person/d95a527f4c34821280baf4386b9aaaa8", "name": "Kristi Palma", "image": { "@type": "ImageObject", "inLanguage": "en-US", "@id": "https://www.boston.com/#/schema/person/image/ca8318544fb000be67a99353488c7394", "url": "https://www.boston.com/wp-content/uploads/2024/10/cropped-IMG_4797-6707dc45a689a-rotated-1-6707dc4f72826-96x96.jpg", "contentUrl": "https://www.boston.com/wp-content/uploads/2024/10/cropped-IMG_4797-6707dc45a689a-rotated-1-6707dc4f72826-96x96.jpg", "caption": "Kristi Palma" }, "description": "Kristi Palma is a culture writer for Boston.com, focusing on New England travel. She joined Boston.com in 2011 and covers airlines, hotels, and things to do across Boston and New England. She is the author of Scenic Six, a weekly travel newsletter. Kristi has written for The Boston Globe&nbsp;and worked as a reporter for&nbsp;The Eagle-Tribune, a columnist for&nbsp;The Tuscaloosa News,&nbsp;and editor of the first parenting website for The New York Times Regional Media Group. She has driven across the U.S. and backpacked through Europe, and feels there's no place quite like beautiful New England.", "sameAs": [ "https://x.com/kristipalma" ], "url": "https://www.boston.com/author/kristi-palma/" } ] }</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//apps.bostonglobe.com' /> <link rel='dns-prefetch' href='//static.chartbeat.com' /> <link rel='dns-prefetch' href='//cdn.blueconic.net' /> <link rel='dns-prefetch' href='//buy.tinypass.com' /> <link rel="alternate" type="application/rss+xml" title="Boston.com &raquo; Feed" href="https://www.boston.com/feed/" /> <link rel='stylesheet' id='wp-block-library-css' href='https://bdc2020.o0bc.com/wp-includes/css/dist/block-library/style.min.css?ver=6.7.2' type='text/css' media='all' /> <style id='co-authors-plus-coauthors-style-inline-css' type='text/css'> .wp-block-co-authors-plus-coauthors.is-layout-flow [class*=wp-block-co-authors-plus]{display:inline} </style> <style id='co-authors-plus-avatar-style-inline-css' type='text/css'> .wp-block-co-authors-plus-avatar :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-avatar :where(img){vertical-align:middle}.wp-block-co-authors-plus-avatar:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-avatar.aligncenter{display:table;margin-inline:auto} </style> <style id='co-authors-plus-image-style-inline-css' type='text/css'> .wp-block-co-authors-plus-image{margin-bottom:0}.wp-block-co-authors-plus-image :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-image :where(img){vertical-align:middle}.wp-block-co-authors-plus-image:is(.alignfull,.alignwide) :where(img){width:100%}.wp-block-co-authors-plus-image:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-image.aligncenter{display:table;margin-inline:auto} </style> <link rel='stylesheet' id='wp_blocks_embed_weather_podcast-cgb-style-css-css' href='https://bdc2020.o0bc.com/wp-content/plugins/wp-block-embed-weather-podcast/dist/blocks.style.build.css' type='text/css' media='all' /> <style id='elasticpress-related-posts-style-inline-css' type='text/css'> .editor-styles-wrapper .wp-block-elasticpress-related-posts ul,.wp-block-elasticpress-related-posts ul{list-style-type:none;padding:0}.editor-styles-wrapper .wp-block-elasticpress-related-posts ul li a>div{display:inline} </style> <style id='classic-theme-styles-inline-css' type='text/css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css' type='text/css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--red: #bb2525;--wp--preset--color--background-black: #1a1a1a;--wp--preset--color--line-gray: #e1e1e1;--wp--preset--color--blue: #2c74de;--wp--preset--color--light-gray: #f1f1f1;--wp--preset--color--off-white: #fbf1e7;--wp--preset--color--mid-gray: #b6b6b6;--wp--preset--color--dark-gray: #68686d;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='tenup-block-library-frontend-accordion-styles-css' href='https://bdc2020.o0bc.com/wp-content/plugins/block-library/dist/css/frontend-accordion-styles.css?ver=d899f5cabdebab30a4d631759350a871' type='text/css' media='all' /> <link rel='stylesheet' id='tablepress-default-css' href='https://bdc2020.o0bc.com/wp-content/plugins/tablepress-premium/css/build/default.css?ver=2.4.4-BGMP' type='text/css' media='all' /> <style id='tablepress-default-inline-css' type='text/css'> .tablepress{--style-variation:custom;--head-text-color:#7e7e7e;--head-bg-color:#fff;--head-active-bg-color:#d0d0d0;--odd-bg-color:#fff;--hover-bg-color:#d0d0d0;border:1px solid grey;border-collapse:collapse}.tablepress thead th{text-transform:uppercase;font-weight:700;border-left:1px solid grey;border-right:1px solid grey;border-bottom:3px solid grey}.tablepress tbody td a{color:var(--c-red);font-weight:700;text-decoration:none}.tablepress tbody td a:hover{color:var(--c-red);font-weight:700;text-decoration:underline;text-align:center}.tablepress tbody td{border-left:1px solid grey;border-right:1px solid grey}.tablepress td,.tablepress th,.dt-search,.dt-length,.dt-info,.dt-paging a,.dt-buttons{font-family:var(--f-primary)}.tablepress img{max-width:100%;height:auto}.tablepress-id-132 .column-1,.tablepress-id-132 .column-3,.tablepress-id-132 .column-5,{background-color:#d3dff2} </style> <link rel='stylesheet' id='tablepress-datatables-buttons-css' href='https://bdc2020.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.buttons.css?ver=2.4.4-BGMP' type='text/css' media='all' /> <link rel='stylesheet' id='tablepress-datatables-columnfilterwidgets-css' href='https://bdc2020.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.columnfilterwidgets.css?ver=2.4.4-BGMP' type='text/css' media='all' /> <link rel='stylesheet' id='tablepress-responsive-tables-css' href='https://bdc2020.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/responsive-tables.css?ver=2.4.4-BGMP' type='text/css' media='all' /> <link rel='stylesheet' id='global-css' href='https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/css/global.css?ver=476348999e4a910c7553fd27c05ad0c1' type='text/css' media='all' /> <link rel='stylesheet' id='base-css' href='https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/css/base.css?ver=d64ef26a96a53d14751b910ee35561c9' type='text/css' media='all' /> <link rel='stylesheet' id='blocks-css' href='https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/css/blocks.css?ver=abad910b7fadab2ee42437f732afcc64' type='text/css' media='all' /> <link rel='stylesheet' id='molecules-css' href='https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/css/molecules.css?ver=62bdd78b204a0df54522d6e2c8b866dc' type='text/css' media='all' /> <link rel='stylesheet' id='organisms-css' href='https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/css/organisms.css?ver=eee026e343b2bff11349dde60c211c06' type='text/css' media='all' /> <link rel='stylesheet' id='styles-css' href='https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/css/style.css?ver=a0f111604c687f9ca6d7f7b77c5a49c6' type='text/css' media='all' /> <link rel='stylesheet' id='bdc-real-estate-css' href='https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/css/real-estate.css?ver=b300d7d969043b3ff84dbf12c9f98dd1' type='text/css' media='all' /> <script type="text/javascript" src="https://apps.bostonglobe.com/common/js/enter-view/enter-view-0.1.0.min.js" id="enter-view--script-js"></script> <script type="text/javascript" src="https://apps.bostonglobe.com/common/js/pym/pym-1.3.2.min.js" id="pym--script-js"></script> <script type="text/javascript" id="chartbeat_head_js-js-extra"> /* <![CDATA[ */ var chartbeat_config = {"domain":"boston.com","uid":"8544","useCanonical":"1","oneTrusActive":"1","useAB":"","authors":"Kristi Palma","sections":"Travel","title":"5 things to do when visiting Yarmouth"}; /* ]]> */ </script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-content/plugins/bdc-chartbeat/js/bdc.chartbeat-head.js?ver=1739391765" id="chartbeat_head_js-js"></script> <script type="text/javascript" src="//static.chartbeat.com/js/chartbeat_mab.js?ver=6.7.2" id="chartbeat_mab-js"></script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" id="ua-wn-js-extra"> /* <![CDATA[ */ var uaWnSettings = {"prompt":{"enabled":true,"prompt_views":2,"prompt_again_views":8}}; /* ]]> */ </script> <script type="text/plain" src="https://bdc2020.o0bc.com/wp-content/plugins/urban-airship-web-push-notifications/assets/js/notification.js?ver=1.3.4" id="ua-wn" class="optanon-category-C0003"></script><script type="text/plain" src="//cdn.blueconic.net/bostonglobemedia.js" id="blueconic_js" class="optanon-category-C0004"></script> <script type="text/plain" class="optanon-category-C0003"> !(function(o,n,t){t=o.createElement(n),o=o.getElementsByTagName(n)[0],t.async=1,t.src="https://fallaciousfifth.com/v2ojfJQXItusfVrUEda5saSZ5uxEMzujCipb6jl01lNcP_fOujjlpKPeM-wc-_90A",o.parentNode.insertBefore(t,o)})(document,"script"),(function(o,n){o[n]=o[n]||function(){(o[n].q=o[n].q||[]).push(arguments)}})(window,"admiral");!(function(c,e,o,t,n){function r(o,t){(function n(){try{return 0<(localStorage.getItem("v4ac1eiZr0")||"").split(",")[4]}catch(o){}return!1})()&&(t=c[e].pubads())&&t.setTargeting("admiral-engaged","true")}(n=c[e]=c[e]||{}).cmd=n.cmd||[],typeof n.pubads===o?r():typeof n.cmd.unshift===o?n.cmd.unshift(r):n.cmd.push(r)})(window,"googletag","function"); </script> <meta name="nota-post-source" content="script" /> <script type="text/javascript"> /* * This is checking if the user has opted out of analytics. * OptanonWrapper plugins/bdc-functionality/includes/BDC/Theme/OneTrustCMP.php:220 */ var ConsentOnetrust = localStorage.getItem( 'consent_one_trust_bdc' ); var CleanCreative = document.createElement( 'script' ); CleanCreative.setAttribute( 'src','//cadmus.script.ac/dz9qn8fh4jznm/script.js' ); CleanCreative.setAttribute( 'type','text/javascript' ); /* * The above code is checking if the user has given consent for the category "Marketing" * and if the user has given consent, then the script is appended to the head tag. */ if ( typeof OptanonWrapper === 'function' && ConsentOnetrust && JSON.parse( ConsentOnetrust ).C0003 === true ) { document.getElementsByTagName( 'head' )[0].appendChild( CleanCreative ); } if ( typeof OptanonWrapper !== 'function' ) { document.getElementsByTagName( 'head' )[0].appendChild( CleanCreative ); } </script> <!-- REGI ENV = PRD--><script type="text/javascript"> //Registration base URL regiBaseUrl = 'http://tomcat.boston.com/profiles/outside/REST/'; </script><link rel='manifest' href='https://www.boston.com/wp-content/themes/bdc-2020/manifest.json' /><link rel="amphtml" href="https://www.boston.com/travel/cape-cod-travel/2022/05/20/5-things-to-do-when-visiting-yarmouth/?amp=1"> <!-- The following line must be placed in the head tag --> <script type="text/javascript" src="https://p.teads.tv/teads-fellow.js" async="true"></script> <script> if (typeof(window.bgmpGdpr) !== 'undefined' && !window.bgmpGdpr.isOptedOut()) { window.teads_e = window.teads_e || []; window.teads_adv_id = 39960;} </script> <!-- Start of global snippet: Please do not remove Place this snippet between the <head> and </head> tags on every page of your site. --> <!-- Global site tag (gtag.js) - Google Marketing Platform --> <script async src="https://www.googletagmanager.com/gtag/js?id=DC-11164343"></script> <script> const onetrustLibrary = 1; const onetrustConsent = localStorage.getItem('consent_one_trust_bdc'); window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push( arguments ); } gtag( 'js', new Date() ); /* * Setting the default consent for the user. * By default we granted */ gtag( 'consent', 'default', { 'analytics_storage': 'granted' } ); gtag( 'consent', 'default', { 'ad_storage': 'granted' } ); if ( 1 === onetrustLibrary && onetrustConsent && JSON.parse(onetrustConsent).C0002 === false ) { gtag( 'consent', 'update', { 'analytics_storage': 'denied' } ); } if ( 1 === onetrustLibrary && onetrustConsent && JSON.parse(onetrustConsent).C0004 === false ) { gtag( 'consent', 'update', { 'ads_storage': 'denied' } ); } gtag( 'config', 'DC-11164343' ); </script> <!-- End of global snippet: Please do not remove --> <link rel="icon" href="https://bdc2020.o0bc.com/wp-content/uploads/2021/05/BDC_Logo_2020_Social_WhiteBG-609c79a967eee-150x150.png" sizes="32x32" /> <link rel="icon" href="https://bdc2020.o0bc.com/wp-content/uploads/2021/05/BDC_Logo_2020_Social_WhiteBG-609c79a967eee-200x200.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://bdc2020.o0bc.com/wp-content/uploads/2021/05/BDC_Logo_2020_Social_WhiteBG-609c79a967eee-200x200.png" /> <meta name="msapplication-TileImage" content="https://bdc2020.o0bc.com/wp-content/uploads/2021/05/BDC_Logo_2020_Social_WhiteBG-609c79a967eee.png" /> <style type="text/css" id="wp-custom-css"> .m-gforms-poll-block .gpoll_button { display: none } </style> <meta property="og:type" content="article"/> <meta property="article:opinion" content="false"/> <meta property="article:content_tier" content="free"/> </head> <body class="post-template-default single single-post postid-24977048 single-format-standard wp-embed-responsive site-body "> <script src="https://www.boston.com/wp-content/plugins/bdc-chartbeat/js/bdc.chartbeat-body.js"></script> <!-- Begin Comscore Tag --> <script async> // Ensure _comscore is globally available window._comscore = window._comscore || []; function loadComscoreScript(bypassConsent) { var options = { enableFirstPartyCookie: true }; if (bypassConsent) { options.bypassUserConsentRequirementFor1PCookie = true; } window._comscore.push({ c1: "2", c2: "6035042", options: options }); (function() { var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true; s.src = "https://sb.scorecardresearch.com/cs/6035042/beacon.js"; s.onerror = function() { console.error("Failed to load Comscore script."); }; el.parentNode.insertBefore(s, el); })(); } // Check consent before loading Comscore script function checkConsent() { const timeoutDuration = 7000; // Timeout duration in milliseconds (e.g., 5000ms = 5 seconds) const checkInterval = 30; // Interval duration in milliseconds (e.g., 100ms) const startTime = Date.now(); function checkValues() { var otherRegionApplies = localStorage.getItem('otherRegion'); var ccpaApplies = localStorage.getItem('ccpaApplies'); var gdprApplies = localStorage.getItem('gdprApplies'); if (otherRegionApplies === 'true') { loadComscoreScript(true); // Bypass consent if other region applies } else if (gdprApplies === 'true') { loadComscoreScript(false); // Load without bypass if GDPR applies } else if (ccpaApplies === 'true') { loadComscoreScript(false); // Load without bypass if CCPA applies } else if (Date.now() - startTime < timeoutDuration) { setTimeout(checkValues, checkInterval); // Check again after the interval } else { loadComscoreScript(true); // Bypass consent if timeout is reached } } checkValues(); } // Ensure OneTrust is loaded before checking consent function ensureOneTrustLoaded(callback) { var interval = setInterval(function() { if (typeof OneTrust !== 'undefined' && typeof OptanonWrapper !== 'undefined') { clearInterval(interval); callback(); } }, 10); // Check every 10ms // Timeout to avoid infinite loop in case OneTrust never loads setTimeout(function() { clearInterval(interval); callback(); }, 7000); // 7 seconds timeout } // Flag to ensure checkConsent is called only once var checkConsentCalled = false; ensureOneTrustLoaded(function() { if (!checkConsentCalled) { checkConsentCalled = true; checkConsent(); } }); </script> <!-- End Comscore Tag --> <!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); const onetrustStorageConsent = JSON.parse(localStorage.getItem( 'consent_one_trust_bdc' ) ); if ( ( onetrustStorageConsent !== null ) ) { /* The above code is parsing the JSON data from the local storage and storing it in a variable. * Checking if the user has given consent for the cookie C0002. * If the user has given consent, the variable consent will be set to 'grant'. * If the user has not given consent,the variable consent will be set to 'revoke'. * Documentation https://developers.facebook.com/docs/meta-pixel/implementation/gdpr */ if ( onetrustStorageConsent.C0002 !== true ) { fbq('consent', 'revoke'); fbq('dataProcessingOptions', []); } else { fbq('consent', 'grant'); fbq('dataProcessingOptions', ['LDU'], 0, 0); } } fbq('init', '989222871864976'); fbq('track', 'PageView'); </script> <!-- dpo is blank which means that no geolocation access is given --> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=989222871864976&ev=PageView&noscript=1&dpo=" /></noscript> <!-- End Facebook Pixel Code --> <header class="o-site-header" id="site-header" aria-label="Site Header"> <section class="o-site-header__advert" aria-label="Leaderboard Advert"> <div id="js-advert--lead1" class="m-advert m-advert--lead1 m-advert--with-gray m-advert--header "><div class="m-advert__container"><div id="ad_lead1"><script type="type/javascript">googletag.cmd.push(function() { googletag.display("ad_lead1") })</script></div></div></div> </section> <a class="screen-reader-text" href="#site-content"> Skip to Main Content </a> <div class="o-site-header__masthead"> <div class="m-grid m-grid-container"> <div class="m-panel-menu"> <button aria-label="Toggle Panel menu" class="a-button a-button--with-icon m-panel-navigation__toggle" id="js-panel-navigation-trigger" aria-haspopup="true" aria-controls="js-panel-navigation" aria-expanded="false"> <svg class="a-icon m-panel-navigation__open" aria-hidden="true" width="19" height="15"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#menu"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#menu"></use></svg><span class="screen-reader-text">Open</span> <svg class="a-icon m-panel-navigation__close" aria-hidden="true" width="19" height="15"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#close-symbol"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#close-symbol"></use></svg><span class="screen-reader-text">Close</span> <span class="a-hide-mobile">Menu</span> </button> <nav id="js-panel-navigation" class="m-panel-navigation" aria-label="Mobile Navigation" aria-hidden="true"> <div class="m-panel-navigation__wrap" tabindex="-1"> <div class="m-panel-navigation_expose"> <ul class="a-list a-list--no-style m-panel-navigation__list"> <li class="m-panel-navigation__list-item menu-item"> <a href="https://www.boston.com"> Home </a> </li> </ul> <div class="menu-bdc-main-container"><ul id="panel-primary-nav" class="a-list a-list--no-style m-panel-navigation__menu"><li id="menu-item-22274386" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274386"><a href="https://www.boston.com/category/news/">News</a> <ul class="sub-menu"> <li id="menu-item-22667248" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667248"><a href="https://www.boston.com/tag/local-news/">Local News</a></li> <li id="menu-item-22667254" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667254"><a href="https://www.boston.com/tag/national-news/">National News</a></li> <li id="menu-item-22667253" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667253"><a href="https://www.boston.com/tag/politics/">Politics</a></li> <li id="menu-item-32490719" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32490719"><a href="https://www.boston.com/tag/massachusetts-obituaries/">Obituaries</a></li> <li id="menu-item-22667264" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667264"><a href="https://www.boston.com/tag/crime/">Crime</a></li> <li id="menu-item-32439321" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-32439321"><a href="https://www.boston.com/tag/karen-read/">Karen Read</a></li> <li id="menu-item-28992764" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28992764"><a href="https://www.boston.com/tag/traffic/">Traffic</a></li> </ul> </li> <li id="menu-item-22274480" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274480"><a href="https://www.boston.com/category/sports/">Sports</a> <ul class="sub-menu"> <li id="menu-item-22497525" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497525"><a href="https://www.boston.com/tag/boston-celtics/">Celtics</a></li> <li id="menu-item-32255017" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-32255017"><a href="https://www.boston.com/tag/jayson-tatum/">Jayson Tatum</a></li> <li id="menu-item-32255024" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32255024"><a href="https://www.boston.com/tag/jaylen-brown/">Jaylen Brown</a></li> <li id="menu-item-22497515" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497515"><a href="https://www.boston.com/tag/new-england-patriots/">Patriots</a></li> <li id="menu-item-22497530" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497530"><a href="https://www.boston.com/tag/boston-bruins/">Bruins</a></li> <li id="menu-item-22497520" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497520"><a href="https://www.boston.com/tag/boston-red-sox/">Red Sox</a></li> <li id="menu-item-22672278" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672278"><a href="https://www.boston.com/tag/new-england-revolution/">Revs</a></li> </ul> </li> <li id="menu-item-22359876" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22359876"><a href="https://www.boston.com/category/weather/">Weather</a> <ul class="sub-menu"> <li id="menu-item-23008219" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008219"><a href="https://www.boston.com/tag/weather-maps/">Maps</a></li> <li id="menu-item-23008224" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008224"><a href="https://www.boston.com/tag/storms/">Storms</a></li> <li id="menu-item-23008255" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008255"><a href="https://www.boston.com/tag/snow/">Snow</a></li> <li id="menu-item-32680987" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32680987"><a href="https://www.boston.com/tease/check-current-weather-conditions-at-new-englands-skiing-areas/">Skiing Conditions</a></li> <li id="menu-item-23008199" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008199"><a href="https://www.boston.com/tag/climate-change/">Climate Change</a></li> </ul> </li> <li id="menu-item-25890194" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-25890194"><a href="https://www.boston.com/category/real-estate/">Real Estate</a> <ul class="sub-menu"> <li id="menu-item-25890218" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890218"><a href="https://www.boston.com/tag/home-improvement/">Reno</a></li> <li id="menu-item-25890221" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890221"><a href="https://www.boston.com/tag/new-developments/">Developments</a></li> <li id="menu-item-25890196" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890196"><a href="https://www.boston.com/tag/real-estate-news/">News</a></li> <li id="menu-item-25890197" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890197"><a href="https://www.boston.com/tag/home-buying/">Buying</a></li> <li id="menu-item-25890200" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890200"><a href="https://www.boston.com/tag/open-houses/">Open Houses</a></li> <li id="menu-item-25890207" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890207"><a href="https://www.boston.com/tag/renting/">Renting</a></li> <li id="menu-item-25890215" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890215"><a href="https://www.boston.com/tag/luxury-homes/">Luxury</a></li> </ul> </li> <li id="menu-item-22274495" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274495"><a href="https://www.boston.com/category/food/">Food</a> <ul class="sub-menu"> <li id="menu-item-22672249" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672249"><a href="https://www.boston.com/tag/restaurants/">Restaurants</a></li> <li id="menu-item-22672303" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672303"><a href="https://www.boston.com/tag/food-news/">News</a></li> <li id="menu-item-22672295" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672295"><a href="https://www.boston.com/tag/restaurant-reviews/">Reviews</a></li> <li id="menu-item-22672298" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672298"><a href="https://www.boston.com/tag/food-events/">Events</a></li> <li id="menu-item-22672251" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672251"><a href="https://www.boston.com/tag/breweries-bars/">Breweries &amp; Bars</a></li> <li id="menu-item-22672285" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672285"><a href="https://www.boston.com/tag/restaurant-closings/">Closings</a></li> <li id="menu-item-22672290" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672290"><a href="https://www.boston.com/tag/restaurant-openings/">Openings</a></li> <li id="menu-item-32256222" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32256222"><a href="https://www.boston.com/newsletters-food-restaurants-bars/">Sign up for The Dish 🍽️</a></li> </ul> </li> <li id="menu-item-28296783" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-28296783"><a href="https://www.boston.com/category/love-letters/">Love Letters</a> <ul class="sub-menu"> <li id="menu-item-28296788" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-28296788"><a href="https://www.boston.com/latest-love-letter">Latest Post</a></li> <li id="menu-item-28297436" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297436"><a href="https://www.boston.com/question-for-meredith/">Send Letter</a></li> <li id="menu-item-28297426" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297426"><a href="https://www.boston.com/meredith-goldstein/">About</a></li> <li id="menu-item-28297421" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297421"><a href="https://www.boston.com/love-letters-podcast/">Podcast</a></li> <li id="menu-item-28297431" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297431"><a href="https://www.boston.com/cant-help-myself/">Book</a></li> <li id="menu-item-32453509" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32453509"><a href="https://www.boston.com/love-letters-newsletter/">Newsletter</a></li> </ul> </li> <li id="menu-item-22274485" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274485"><a href="https://www.boston.com/category/culture/">Culture</a> <ul class="sub-menu"> <li id="menu-item-22672218" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672218"><a href="https://www.boston.com/tag/arts/">Arts</a></li> <li id="menu-item-22672229" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672229"><a href="https://www.boston.com/tag/entertainment/">Entertainment</a></li> <li id="menu-item-22672234" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672234"><a href="https://www.boston.com/tag/movies/">Movies</a></li> <li id="menu-item-22672235" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672235"><a href="https://www.boston.com/tag/tv/">TV</a></li> <li id="menu-item-24669784" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24669784"><a href="https://www.boston.com/tag/streaming/">Streaming</a></li> <li id="menu-item-22672238" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672238"><a href="https://www.boston.com/tag/celebs/">Celebs</a></li> <li id="menu-item-22672241" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672241"><a href="https://www.boston.com/tag/music/">Music</a></li> <li id="menu-item-32753848" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32753848"><a href="https://www.boston.com/newsletters-streaming-movies-tv-queue/">Sign up for The Queue</a></li> </ul> </li> <li id="menu-item-30874078" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-30874078"><a href="https://www.boston.com/category/things-to-do/">Things To Do</a> <ul class="sub-menu"> <li id="menu-item-31587664" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-31587664"><a href="https://www.boston.com/newsletters-things-to-do/">Newsletter</a></li> <li id="menu-item-32601347" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32601347"><a href="https://www.boston.com/calendar-submission/">Submit your event</a></li> </ul> </li> <li id="menu-item-22360356" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-has-children menu-item-22360356 current-menu-ancestor current-post-category"><a href="https://www.boston.com/category/travel/">Travel</a> <ul class="sub-menu"> <li id="menu-item-22993850" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22993850"><a href="https://www.boston.com/tag/visiting-boston/">Visiting Boston</a></li> <li id="menu-item-24976055" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24976055 current-post-primary-term"><a href="https://www.boston.com/tag/cape-cod-travel/">Cape Cod</a></li> <li id="menu-item-22672269" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672269"><a href="https://www.boston.com/tag/new-england-travel/">New England</a></li> <li id="menu-item-24976054" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24976054"><a href="https://www.boston.com/tag/flights/">Flights</a></li> <li id="menu-item-24676057" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24676057"><a href="https://www.boston.com/tag/outdoors/">Outdoors</a></li> <li id="menu-item-28323763" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28323763"><a href="https://www.boston.com/tag/skiing/">Skiing</a></li> <li id="menu-item-32256227" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32256227"><a href="https://www.boston.com/newsletters-scenic-six/">Sign up for Scenic Six</a></li> </ul> </li> <li id="menu-item-24270121" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-24270121"><a href="https://www.boston.com/category/community/">Community</a> <ul class="sub-menu"> <li id="menu-item-24063234" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063234"><a href="https://www.boston.com/tag/tell-us/">Tell Us</a></li> <li id="menu-item-28204065" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28204065"><a href="https://www.boston.com/tag/neighborhoods/">Neighborhoods</a></li> <li id="menu-item-24063232" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063232"><a href="https://www.boston.com/tag/readers-say/">Readers Say</a></li> <li id="menu-item-24063239" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063239"><a href="https://www.boston.com/tag/book-club/">Book Club</a></li> <li id="menu-item-28991660" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28991660"><a href="https://www.boston.com/tag/wickedpedia/">Wickedpedia</a></li> <li id="menu-item-26377957" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-26377957"><a href="https://www.boston.com/tag/the-b-side/">The B-Side</a></li> <li id="menu-item-24063244" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063244"><a href="https://www.boston.com/tag/cocktail-club/">Cocktail Club</a></li> </ul> </li> <li id="menu-item-22360995" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-has-children menu-item-22360995 menu-item-hamburger-only"><a href="https://www.boston.com/">Extra</a> <ul class="sub-menu"> <li id="menu-item-22361025" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361025 menu-item-hamburger-only"><a href="https://www.boston.com/customer-support/">Customer Support</a></li> <li id="menu-item-22360999" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22360999 menu-item-hamburger-only"><a href="https://www.bostonglobemedia.com/">Advertise</a></li> <li id="menu-item-22361010" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361010 menu-item-hamburger-only"><a href="https://advertising.bostonglobemedia.com/">Classified Ads</a></li> <li id="menu-item-22361055" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361055 menu-item-hamburger-only"><a href="https://bostonglobemediapartners.applytojob.com/apply">Careers</a></li> <li id="menu-item-22361026" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361026 menu-item-hamburger-only"><a href="https://www.boston.com/contact-us/">Contact Us</a></li> <li id="menu-item-22361019" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361019 menu-item-hamburger-only"><a href="https://www.legacy.com/obituaries/bostonglobe/">Obituaries</a></li> <li id="menu-item-28173757" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-28173757"><a href="https://www.boston.com/newsletter-signup/">Newsletters</a></li> <li id="menu-item-25927243" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25927243"><a href="/tag/massachusetts-lottery/">Mass. Lottery</a></li> <li id="menu-item-25927251" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25927251"><a href="https://www.boston.com/tag/powerball/">Powerball</a></li> <li id="menu-item-25927254" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25927254"><a href="https://www.boston.com/tag/mega-millions/">Mega Millions</a></li> <li id="menu-item-22361035" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361035 menu-item-hamburger-only"><a href="https://www.boston.com/horoscope/">Horoscopes</a></li> <li id="menu-item-22361043" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361043 menu-item-hamburger-only"><a href="https://www.boston.com/comics/">Comics</a></li> <li id="menu-item-22361045" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361045 menu-item-hamburger-only"><a href="https://www.boston.com/today-in-history/">Today in History</a></li> <li id="menu-item-22360996" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22360996 menu-item-hamburger-only"><a href="https://www.boston.com/fresh-start-submit-your-appeal/">Fresh Start</a></li> </ul> </li> <li id="menu-item-31235133" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-31235133 menu-item-hamburger-only"><a href="https://www.boston.com/tag/weddings/">Weddings</a></li> <li id="menu-item-25195153" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-25195153"><a href="https://www.boston.com/category/cars/">Cars</a> <ul class="sub-menu"> <li id="menu-item-25195157" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25195157"><a href="https://www.boston.com/new-car-specials/">New Car Specials</a></li> </ul> </li> <li id="menu-item-24512309" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-24512309 menu-item-hamburger-only"><a href="https://games.boston.com/">Games</a></li> <li id="menu-item-32722766" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32722766 menu-item-hamburger-only"><a href="https://www.boston.com/new-england-skiing-conditions/">Skiing Conditions</a></li> </ul></div> </div> </div> </nav> <div class="m-panel-overlay"></div> </div> <div id="site-logo" class="m-site-logo"> <a class="m-site-logo__link" href="https://www.boston.com"> <span class="screen-reader-text">Boston.com</span> <img width="133" height="39" src="https://www.boston.com/wp-content/themes/bdc-2020/dist/images/boston-com-logo.png" aria-hidden="true" alt="" /> </a> </div> <nav class="m-secondary-menu" aria-label="Utility Navigation" id="utility-navigation"> <ul class="m-secondary-menu__list a-list--no-style"> <li class="m-header-search"> <button id="js-search-button" aria-controls="header-search-form" aria-expanded="false" aria-haspopup="true" class="a-button a-button--icon a-button--icon-svg" type="button"> <svg class="a-icon" aria-hidden="true" width="20" height="20"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#search"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#search"></use></svg> <svg class="a-icon a-icon--close" aria-hidden="true" width="20" height="20"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#close"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#close"></use></svg> <span class="screen-reader-text">Search</span> </button> <div id="js-search-form" class="m-header-search__form" aria-hidden="true"> <form role="search" id="searchform--header" class="m-search-form m-search-form--header" method="get" action="https://www.boston.com/"> <label for="search-field-search-form-1" class="screen-reader-text m-search-form__label"> Search for: </label> <input class="m-search-form__input" type="text" id="search-field-search-form-1" value="" placeholder="Search Boston.com" name="s" /> <button class="m-search-form__button" tabindex="-1" type="submit" aria-label="Submit"> <svg class="a-icon a-icon--no-action" aria-hidden="true" width="20" height="20"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#search"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#search"></use></svg><span class="screen-reader-text">Search Boston.com</span> </button> </form> </div> </li> </ul> </nav> </div> </div> <div class="o-site-header__menu"> <div class="m-grid-container m-grid-container-inline"> <nav aria-label="Main Site Navigation" class="m-site-navigation m-site-navigation--left" id="site-navigation" itemscope itemtype="https://schema.org/SiteNavigationElement"> <div class="menu-bdc-main-container"><ul id="menu-bdc-main" class="m-primary-menu m-primary-menu--section-level a-list--no-style"><li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274386"><a href="https://www.boston.com/category/news/">News</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667248"><a href="https://www.boston.com/tag/local-news/">Local News</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667254"><a href="https://www.boston.com/tag/national-news/">National News</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667253"><a href="https://www.boston.com/tag/politics/">Politics</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32490719"><a href="https://www.boston.com/tag/massachusetts-obituaries/">Obituaries</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22667264"><a href="https://www.boston.com/tag/crime/">Crime</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-32439321"><a href="https://www.boston.com/tag/karen-read/">Karen Read</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28992764"><a href="https://www.boston.com/tag/traffic/">Traffic</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274480"><a href="https://www.boston.com/category/sports/">Sports</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497525"><a href="https://www.boston.com/tag/boston-celtics/">Celtics</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-32255017"><a href="https://www.boston.com/tag/jayson-tatum/">Jayson Tatum</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32255024"><a href="https://www.boston.com/tag/jaylen-brown/">Jaylen Brown</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497515"><a href="https://www.boston.com/tag/new-england-patriots/">Patriots</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497530"><a href="https://www.boston.com/tag/boston-bruins/">Bruins</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22497520"><a href="https://www.boston.com/tag/boston-red-sox/">Red Sox</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672278"><a href="https://www.boston.com/tag/new-england-revolution/">Revs</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22359876"><a href="https://www.boston.com/category/weather/">Weather</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008219"><a href="https://www.boston.com/tag/weather-maps/">Maps</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008224"><a href="https://www.boston.com/tag/storms/">Storms</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008255"><a href="https://www.boston.com/tag/snow/">Snow</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32680987"><a href="https://www.boston.com/tease/check-current-weather-conditions-at-new-englands-skiing-areas/">Skiing Conditions</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-23008199"><a href="https://www.boston.com/tag/climate-change/">Climate Change</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-25890194"><a href="https://www.boston.com/category/real-estate/">Real Estate</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890218"><a href="https://www.boston.com/tag/home-improvement/">Reno</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890221"><a href="https://www.boston.com/tag/new-developments/">Developments</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890196"><a href="https://www.boston.com/tag/real-estate-news/">News</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890197"><a href="https://www.boston.com/tag/home-buying/">Buying</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890200"><a href="https://www.boston.com/tag/open-houses/">Open Houses</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890207"><a href="https://www.boston.com/tag/renting/">Renting</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-25890215"><a href="https://www.boston.com/tag/luxury-homes/">Luxury</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274495"><a href="https://www.boston.com/category/food/">Food</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672249"><a href="https://www.boston.com/tag/restaurants/">Restaurants</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672303"><a href="https://www.boston.com/tag/food-news/">News</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672295"><a href="https://www.boston.com/tag/restaurant-reviews/">Reviews</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672298"><a href="https://www.boston.com/tag/food-events/">Events</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672251"><a href="https://www.boston.com/tag/breweries-bars/">Breweries &amp; Bars</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672285"><a href="https://www.boston.com/tag/restaurant-closings/">Closings</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672290"><a href="https://www.boston.com/tag/restaurant-openings/">Openings</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32256222"><a href="https://www.boston.com/newsletters-food-restaurants-bars/">Sign up for The Dish 🍽️</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-28296783"><a href="https://www.boston.com/category/love-letters/">Love Letters</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-28296788"><a href="https://www.boston.com/latest-love-letter">Latest Post</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297436"><a href="https://www.boston.com/question-for-meredith/">Send Letter</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297426"><a href="https://www.boston.com/meredith-goldstein/">About</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297421"><a href="https://www.boston.com/love-letters-podcast/">Podcast</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28297431"><a href="https://www.boston.com/cant-help-myself/">Book</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32453509"><a href="https://www.boston.com/love-letters-newsletter/">Newsletter</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-22274485"><a href="https://www.boston.com/category/culture/">Culture</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672218"><a href="https://www.boston.com/tag/arts/">Arts</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672229"><a href="https://www.boston.com/tag/entertainment/">Entertainment</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672234"><a href="https://www.boston.com/tag/movies/">Movies</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672235"><a href="https://www.boston.com/tag/tv/">TV</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24669784"><a href="https://www.boston.com/tag/streaming/">Streaming</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672238"><a href="https://www.boston.com/tag/celebs/">Celebs</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672241"><a href="https://www.boston.com/tag/music/">Music</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32753848"><a href="https://www.boston.com/newsletters-streaming-movies-tv-queue/">Sign up for The Queue</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-30874078"><a href="https://www.boston.com/category/things-to-do/">Things To Do</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-31587664"><a href="https://www.boston.com/newsletters-things-to-do/">Newsletter</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32601347"><a href="https://www.boston.com/calendar-submission/">Submit your event</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-has-children menu-item-22360356 current-menu-ancestor current-post-category"><a href="https://www.boston.com/category/travel/">Travel</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22993850"><a href="https://www.boston.com/tag/visiting-boston/">Visiting Boston</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24976055 current-post-primary-term"><a href="https://www.boston.com/tag/cape-cod-travel/">Cape Cod</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-22672269"><a href="https://www.boston.com/tag/new-england-travel/">New England</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24976054"><a href="https://www.boston.com/tag/flights/">Flights</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24676057"><a href="https://www.boston.com/tag/outdoors/">Outdoors</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28323763"><a href="https://www.boston.com/tag/skiing/">Skiing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32256227"><a href="https://www.boston.com/newsletters-scenic-six/">Sign up for Scenic Six</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-24270121"><a href="https://www.boston.com/category/community/">Community</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063234"><a href="https://www.boston.com/tag/tell-us/">Tell Us</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28204065"><a href="https://www.boston.com/tag/neighborhoods/">Neighborhoods</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063232"><a href="https://www.boston.com/tag/readers-say/">Readers Say</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063239"><a href="https://www.boston.com/tag/book-club/">Book Club</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-28991660"><a href="https://www.boston.com/tag/wickedpedia/">Wickedpedia</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-26377957"><a href="https://www.boston.com/tag/the-b-side/">The B-Side</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-24063244"><a href="https://www.boston.com/tag/cocktail-club/">Cocktail Club</a></li> </ul> </li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-has-children menu-item-22360995 menu-item-hamburger-only"><a href="https://www.boston.com/">Extra</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361025 menu-item-hamburger-only"><a href="https://www.boston.com/customer-support/">Customer Support</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22360999 menu-item-hamburger-only"><a href="https://www.bostonglobemedia.com/">Advertise</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361010 menu-item-hamburger-only"><a href="https://advertising.bostonglobemedia.com/">Classified Ads</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361055 menu-item-hamburger-only"><a href="https://bostonglobemediapartners.applytojob.com/apply">Careers</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361026 menu-item-hamburger-only"><a href="https://www.boston.com/contact-us/">Contact Us</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361019 menu-item-hamburger-only"><a href="https://www.legacy.com/obituaries/bostonglobe/">Obituaries</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-28173757"><a href="https://www.boston.com/newsletter-signup/">Newsletters</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25927243"><a href="/tag/massachusetts-lottery/">Mass. Lottery</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25927251"><a href="https://www.boston.com/tag/powerball/">Powerball</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25927254"><a href="https://www.boston.com/tag/mega-millions/">Mega Millions</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361035 menu-item-hamburger-only"><a href="https://www.boston.com/horoscope/">Horoscopes</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361043 menu-item-hamburger-only"><a href="https://www.boston.com/comics/">Comics</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22361045 menu-item-hamburger-only"><a href="https://www.boston.com/today-in-history/">Today in History</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22360996 menu-item-hamburger-only"><a href="https://www.boston.com/fresh-start-submit-your-appeal/">Fresh Start</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-31235133 menu-item-hamburger-only"><a href="https://www.boston.com/tag/weddings/">Weddings</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-25195153"><a href="https://www.boston.com/category/cars/">Cars</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25195157"><a href="https://www.boston.com/new-car-specials/">New Car Specials</a></li> </ul> </li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-24512309 menu-item-hamburger-only"><a href="https://games.boston.com/">Games</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32722766 menu-item-hamburger-only"><a href="https://www.boston.com/new-england-skiing-conditions/">Skiing Conditions</a></li> </ul></div> </nav> <nav aria-label="Trending Navigation" class="m-site-navigation m-site-navigation--right m-site-navigation--trending" id="trending-navigation" itemscope itemtype="https://schema.org/SiteNavigationElement"> <div class="menu-bdc-trending-container"><ul id="menu-bdc-trending" class="m-primary-menu m-primary-menu--trending a-list--no-style"><li id="menu-item-29838788" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29838788"><a href="https://www.boston.com/news/community/2025/02/14/mbta-communities-act-misconceptions-debunked-by-experts/">MBTA Communities Act</a></li> <li id="menu-item-29648242" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29648242"><a href="https://www.boston.com/culture/tv/2025/02/13/snl-history-boston-saturday-night-live/">SNL50</a></li> <li id="menu-item-32299117" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32299117"><a href="https://www.boston.com/tag/pizza-bracket/">Pizza bracket</a></li> </ul></div> </nav> </div> </div> </header> <main class="t-main" id="site-content" aria-label="Main Site Content"> <div id="oosvideo"> <script> googletag.cmd.push(function() { googletag.display('oosvideo'); }); </script> </div> <div class="m-grid-container t-layout t-layout--is-single t-layout--with-sidebar t-layout--standard-image "> <section class="t-layout__main "> <article class="content-well content-well--article" role="main"> <div id="presentedby"> <script> googletag.cmd.push(function() { googletag.display('presentedby'); }); </script> </div> <header class="m-article-header m-article-header--standard"> <span id="article-header-primary-term"> <a class="a-term a-term--primary" href="https://www.boston.com/tag/cape-cod-travel/"> Cape Cod Travel </a> </span> <h1 class="m-article-header__headline">5 things to do when visiting Yarmouth</h1> <h2 class="m-article-header__sub-headline">From sand sculptures to boardwalks to pirate treasure.</h2> <figure class="a-photo m-article-header__photo "> <img width="768" height="432" src="https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg" class="attachment-16:9 size-16:9 wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/Grays-Beach-Bass-Hole-Boardwalk-Sunset-2020-6287b9fd8a17c-768x432.jpg?width=900 900w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <figcaption class="a-photo__caption"> The Bass Hole Boardwalk at Gray's Beach in Yarmouth.<em> Town of Yarmouth</em> </figcaption> </figure> <div class="m-article-header__meta"> <div class="m-article-header__byline"> <p class="m-article-header__author"> By <a class="a-link a-link--inline" href="https://www.boston.com/author/kristi-palma/">Kristi Palma</a> </p> <time class="m-article-header__date"> May 20, 2022 </time> <div class="m-article-header__word-estimate"><span>3 minutes to read</span></div> </div> <div class="m-article-header__social"> <ul class="a-list--no-style m-social-share"><li class="m-social-share__item"><a id="sharetools-facebook" class="m-social-share__link" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.boston.com%2F%3Fpost_type%3Dpost%26p%3D24977048" rel="noopener noreferr" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="a-icon" aria-hidden="true" role="presentation" width="18" height="15"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#facebook-white"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#facebook-white"></use></svg><span class="screen-reader-text">Facebook</span></a></li><li class="m-social-share__item"><a id="sharetools-twitter" class="m-social-share__link" href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.boston.com%2F%3Fpost_type%3Dpost%26p%3D24977048" rel="noopener noreferr" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="a-icon" aria-hidden="true" role="presentation" width="18" height="15"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#twitter-white"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#twitter-white"></use></svg><span class="screen-reader-text">Twitter</span></a></li><li class="m-social-share__item"><a id="sharetools-email" class="m-social-share__link" href="/cdn-cgi/l/email-protection#231c505641494640571e16061113574b4a4d4450061113574c061113474c061113544b464d061113554a504a574a4d440611137a42514e4c56574b05414c475a1e4b575753500610620611650611655454540d414c50574c4d0d404c4e061165061065534c50577c575a5346061067534c50570611155306106711171a141413171b" rel="noopener noreferr" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="a-icon" aria-hidden="true" role="presentation" width="18" height="15"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#mail-white"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#mail-white"></use></svg><span class="screen-reader-text">Email</span></a></li><li class="m-social-share__item"><a id="sharetools-copylink" class="m-social-share__link js-copy-link" data-clipboard-text="https://www.boston.com/?post_type=post&#038;p=24977048" rel="noopener noreferr" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="a-icon" aria-hidden="true" role="presentation" width="18" height="15"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#link-white"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#link-white"></use></svg><span class="screen-reader-text">Email</span></a></li><li class="m-social-share__item m-social-share__comments"><a href="#comments" class="m-social-share__comments-link">1</a></li></ul> </div> </div> </header> <p>Mary Maslowski, Yarmouth&#8217;s town clerk since 2020, said the town is &#8220;at the hub of Cape Cod.&#8221; </p><p>&#8220;It&#8217;s halfway down,&#8221; she said. &#8220;It&#8217;s truly the mid-Cape. A 90-minute trip from Boston puts you right in the middle of Yarmouth with easy access to beaches, boating.&#8221;</p><p>Yarmouth has three villages: South Yarmouth, West Yarmouth, and Yarmouth Port, which stretch between the coastlines of Nantucket Sound and Cape Cod Bay.</p><p>&#8220;It&#8217;s just a wonderful place for people to spend their time and make memories,&#8221; she said. &#8220;You have entertainment, you have recreation, good food. Add some friends to it, and it&#8217;s a perfect place to make lifelong memories.&#8221; </p><div class="m-content-advert"><div class="m-content-advert-wrap"><span class="m-content-advert-title">Advertisement:</span><div id="js-advert--inarticle_video1" class="m-advert m-advert--inarticle_video1 "><div class="m-advert__container"><div id="ad_inarticle_video1"><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="type/javascript">googletag.cmd.push(function() { googletag.display("ad_inarticle_video1") })</script></div></div></div></div></div><p>Ahead, Maslowski shares her picks for what to see and do in Yarmouth.</p><h2 class="wp-block-heading" id="h-stroll-the-bass-hole-boardwalk"><a href="https://www.yelp.com/biz/bass-hole-boardwalk-at-grays-beach-yarmouth-port">Stroll the Bass Hole Boardwalk</a></h2><p>One of Maslowski&#8217;s favorite places for relaxation is Bass Hole Boardwalk at <a href="https://www.capecodbeachsand.com/Cape-Cod-Beaches/Public-Access-Beach/View/BeachID/121/Grays-Beach">Gray&#8217;s Beach</a>, which features an 800-foot boardwalk that extends out over the salt marsh into Cape Cod Bay.</p><p>&#8220;It&#8217;s just a peaceful place,&#8221; she said. &#8220;It&#8217;s a place for a morning walk with a cup of coffee to watch the sea birds and see some of the wildlife. Or it&#8217;s a nice place to watch the sunset over Cape Cod Bay.&#8221;</p><p>Gray&#8217;s Beach, also known as Bass Hole, has a picnic area, restrooms, walking trails, a playground, and great tide pools perfect for young beachgoers. </p><div class="m-content-advert"><div class="m-content-advert-wrap"><span class="m-content-advert-title">Advertisement:</span><div id="js-advert--inarticle1" class="m-advert m-advert--inarticle1 "><div class="m-advert__container"><div id="ad_inarticle1"><script type="type/javascript">googletag.cmd.push(function() { googletag.display("ad_inarticle1") })</script></div></div></div></div></div><p>Check out <a href="https://yarmouthcapecod.com/gallery/bass-hole-boardwalk/">photos of the Bass Hole Boardwalk</a> posted by the Yarmouth Chamber of Commerce. </p><figure class="wp-block-image size-full"><img decoding="async" src="https://bdc2020.o0bc.com/wp-content/uploads/2021/04/36EMRXSNZYI6NA2CIF645RXHJ4-608bf6e3a2e28-scaled.jpg" alt="" class="wp-image-22143665"><figcaption class="wp-element-caption">A piece in the 2016 Yarmouth Sand Sculpture Trail.</figcaption></figure><h2 class="wp-block-heading" id="h-follow-the-sand-sculpture-trail"><a href="https://yarmouthcapecod.com/sand-sculpture-trail/">Follow the Sand Sculpture Trail</a></h2><p>An exciting way to explore Yarmouth is by following the <a href="https://yarmouthcapecod.com/sand-sculpture-trail/">Sand Sculpture Trail</a>, Maslowski said. </p><p>The trail, one of Yarmouth&#8217;s biggest attractions, is available from Memorial Day through mid-October and will showcase 32 family-friendly sand sculptures this year.</p><p>&#8220;There are sand sculptures at locations all over Yarmouth,&#8221; she said. </p><p>Guests discover the sculptures, created by Fitzysnowman Studios, at beaches, businesses, and more, she said. But the fun doesn&#8217;t stop there.</p><p>&#8220;The treat is exploring the different locations,&#8221; she said. </p><p>Sand Sculpture Trail maps are available at the Yarmouth Chamber of Commerce at 424 Route 28 in West Yarmouth. A digital map is also available <a href="https://yarmouthcapecod.com/sand-sculpture-trail/">online</a>. </p><h2 class="wp-block-heading" id="h-enjoy-dinner-with-a-view"><a href="https://www.tugboatscapecod.com/">Enjoy dinner with a view</a></h2><p>For dinner with a side of scenery, visitors can&#8217;t go wrong at <a href="https://www.tugboatscapecod.com/">Tugboats</a>, Maslowski said, which overlooks Hyannis Harbor.</p><p>&#8220;It&#8217;s excellent food and you can&#8217;t beat the view, with the harbor and all the boats coming in and out,&#8221; she said. </p><p>Another scenic spot is <a href="https://skipperrestaurant.com/">Skipper Chowder House</a>, Maslowski said. </p><p>&#8220;It is good food and it has a great view of the beaches from the deck upstairs,&#8221; she said. </p><h2 class="wp-block-heading" id="h-check-out-pirate-treasure"><a href="https://www.discoverpirates.com/">Check out pirate treasure</a></h2><p>&#8220;Yarmouth is home to a pirate museum called the <a href="https://www.discoverpirates.com/">Wydah Pirate Museum</a>, which is really fun and educational for all ages,&#8221; Maslowski said. </p><div class="m-content-advert"><div class="m-content-advert-wrap"><span class="m-content-advert-title">Advertisement:</span><div id="js-advert--inarticle2" class="m-advert m-advert--inarticle2 "><div class="m-advert__container"><div id="ad_inarticle2"><script type="type/javascript">googletag.cmd.push(function() { googletag.display("ad_inarticle2") })</script></div></div></div></div></div><p>The museum contains thousands of items from the Wydah, an overtaken slave ship turned pirate ship that shipwrecked off the coast of Cape Cod in 1717. It boasts the largest collection of pirate artifacts recovered from a single shipwreck. </p><p>Guests can watch archeologists uncover artifacts from concretions in the museum&#8217;s sea lab.</p><p>&#8220;I really found it enjoyable to see real pirate treasure excavated right here on Cape Cod,&#8221; she said. </p><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1600" height="1200" src="https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg" alt="Edward Gorey House" class="wp-image-8600573" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2018/05/goreyhouse2.jpg?width=900 900w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption">The Edward Gorey House in Yarmouth.<i> &#8211; Barbara Kilroy</i></figcaption></figure><h2 class="wp-block-heading" id="h-reader-recommendations">Reader recommendations</h2><p><strong>For food and beverag</strong>e:</p><p><a href="https://www.capecodcreamery.com/">Cape Cod Creamery</a> &mdash; <em>@seanna_wandertheworld</em>, <em>@jcmccaffrey</em></p><p><a href="https://www.captainparkers.com/">Captain Parker&#8217;s Pub</a> &mdash; <em>@bc86bc</em></p><p><a href="https://www.facebook.com/people/Keltic-Kitchen/100048632875782/">Keltic Kitchen</a> &mdash; <em>@robthowes</em>, <em>@dasania41</em></p><p><a href="https://oldyarmouthinn.com/">Old Yarmouth Inn</a> &mdash; <em>@rfilippou36</em></p><p><a href="https://www.petersonsmarket.com/pizza">R.C.&#8217;s Pizza</a> &mdash; <em>@rman389</em></p><p><strong>For activities</strong>:</p><p><a href="https://capecodinflatablepark.com/">Cape Cod Inflatable Park </a>&mdash; <em>@turneridoria</em></p><p><a href="https://www.mass.gov/locations/cape-cod-rail-trail">Cape Cod Rail Trail </a>&mdash; <em>@taylaaholivia</em>, <em>@nmedance</em></p><p><a href="https://www.edwardgoreyhouse.org/">Edward Gorey House</a> &mdash; <em>@emilyolivia27</em></p><p><a href="https://www.capecodbeachsand.com/Cape-Cod-Beaches/Public-Access-Beach/View/BeachID/121/Grays-Beach">Gray&#8217;s Beach</a> &mdash; <em>@seaglassgirl32</em></p><p><a href="https://rrct.org/preserves-trails/old-town-house-park/">Old Town House Park</a> &mdash; <em>@turneridoria</em></p><p><a href="https://www.piratescove.net/locations/massachusetts/south-yarmouth/">Pirate&#8217;s Cove Adventure Golf</a> &mdash; <em>@debahl</em>, <em>@melanie_pie</em></p><p><a href="https://www.yarmouth.ma.us/671/Seagull-Beach">Seagull Beach </a>&mdash; <em>@turneridoria</em>, <em>@melanie_pie</em></p><p><a href="https://www.facebook.com/TeplanskyPhotograpy/">Teplansky Photography</a> &mdash; <em>@paulam13</em></p><p><a href="https://enteringcapecod.com/vacation-planner-listing/weeping-beech-tree-yarmouth-port/">Weeping beech tree </a>&mdash; <em>@emilyolivia27</em></p><p><a href="https://www.poprockvintageshop.com/">Wicked Thrift &amp; PopRock Vintage</a> &mdash; <em>@melissaguisti</em></p><p><a href="https://www.discoverpirates.com/">Wydah Pirate Museum</a> &mdash; <em>@turneridoria</em>, <em>@noragenevieveingram</em></p><p><a href="https://ydredsox.com/">Yarmouth-Dennis Red Sox</a> &mdash; <em>@turneridoria</em>, @stephenharris8068</p><p><a href="https://yarmouthseasidefestival.com/">Yarmouth Seaside Festival</a> &mdash; <em>@debahl</em></p> <div class="m-block t-amp__list-container m-article-list-container m-article-list-container--frame-border a-border-frame a-list-header__headline--red m-article-list--alternative--default m-article-list--full"> <header class="t-amp__list-header a-list-header "> <h5 class="a-list-header__headline "> Cape Cod Guides:</h5> </header> <ul class="t-amp__list a-list--no-style m-article-list m-article-list--recirculation m-article-list--has-images "> <li class="m-article-list__item"> <a class="m-article-list__link-wrapper" href="https://www.boston.com/travel/cape-cod-travel/2022/05/06/5-things-to-do-when-visiting-dennis/?p1=article_recirc_inline_feed" data-p1="article_recirc_inline_feed"> <img loading="lazy" decoding="async" width="768" height="432" src="https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg" class="t-amp__list-image m-article-list__image " alt="" aria-hidden="true" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2022/05/CorporationBeach3-6273d15740d47-768x432.jpg?width=900 900w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <div class="m-article-list__content"> <h4 class="m-article-list__headline"> <span class="m-article-list__link a-link a-link--inline a-link--text-link a-link--text-link-dark"> 5 things to do when visiting Dennis </span> </h4> </div> </a> </li> <li class="m-article-list__item"> <a class="m-article-list__link-wrapper" href="https://www.boston.com/travel/cape-cod-travel/2022/03/18/5-things-to-do-when-visiting-orleans/?p1=article_recirc_inline_feed" data-p1="article_recirc_inline_feed"> <img loading="lazy" decoding="async" width="768" height="432" src="https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg" class="t-amp__list-image m-article-list__image " alt="" aria-hidden="true" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2012/06/c8ffecc6-b63f-11e1-be8c-739a9845baf8-768x432.jpg?width=900 900w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <div class="m-article-list__content"> <h4 class="m-article-list__headline"> <span class="m-article-list__link a-link a-link--inline a-link--text-link a-link--text-link-dark"> 5 things to do when visiting Orleans </span> </h4> </div> </a> </li> <li class="m-article-list__item"> <a class="m-article-list__link-wrapper" href="https://www.boston.com/travel/travel/2021/07/09/5-things-to-do-when-visiting-provincetown/?p1=article_recirc_inline_feed" data-p1="article_recirc_inline_feed"> <img loading="lazy" decoding="async" width="768" height="432" src="https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg" class="t-amp__list-image m-article-list__image " alt="" aria-hidden="true" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2021/07/IMG_8218-60e8baf547664-768x432.jpg?width=900 900w" sizes="auto, (max-width: 768px) 100vw, 768px" /> <div class="m-article-list__content"> <h4 class="m-article-list__headline"> <span class="m-article-list__link a-link a-link--inline a-link--text-link a-link--text-link-dark"> 5 things to do when visiting Provincetown </span> </h4> </div> </a> </li> </ul> </div> <div class="content-below-article"> </div> <div class="rev-content"> <div id="rev"> <div id="rc-widget-5c0cda" data-rc-widget data-widget-host="habitat" data-direct-delivery data-endpoint="//trends.revcontent.com" data-widget-id="109517"></div> </div> </div> <div> <div id="comments"> <div data-openweb-ad data-row="1" data-column="1"></div><h3 style="margin-bottom: 0.9375rem;">Conversation</h3><h5 style="margin-top: 0;">This discussion has ended. Please join elsewhere on Boston.com</h5></div> </div> </article> </section> <div class="t-layout__sidebar" id="sidebar-home"> <div class="m-widget"> <div class="m-advert m-advert--sidebar m-advert--600"> <div class="m-content-advert-wrap"> <div id="js-advert--articlerail1" class="m-advert m-advert--articlerail1 "><div class="m-advert__container"><div id="ad_articlerail1"><script type="type/javascript">googletag.cmd.push(function() { googletag.display("ad_articlerail1") })</script></div></div></div> </div> </div> </div> <div class="m-widget"> <div id="most-popular-posts" class="m-widget m-numbered-post-list"> <header class="m-numbered-post-list__header"> <h3 class="m-numbered-post-list__header-title"> Most Popular </h3> </header> <div class="m-numbered-post-list__posts"> <article id="m-numbered-post-list-1" class="m-numbered-post-list__post"> <a aria-label="SNL 50: Best moments from Saturday Night Live&#039;s 50th anniversary special" class="m-numbered-post-list__link" href="https://www.boston.com/culture/entertainment/2025/02/17/snl-50th-anniversary-special-saturday-night-live/"> <div class="m-numbered-post-list__image" data-count="1"> <img alt="SNL 50: Best moments from Saturday Night Live&#039;s 50th anniversary special" height="95" loading="lazy" src="//bdc2020.o0bc.com/wp-content/uploads/2025/02/SNL-50-recap-saturday-night-live-50th-anniversary-special-67b2c9acc08ef-768x432.jpg?width=190" width="95"/> </div> <div class="m-numbered-post-list__pseudo-link-container"> <span class="m-numbered-post-list__pseudo-link" > SNL 50: Best moments from Saturday Night Live&#039;s 50th anniversary special </span> </div> </a> </article> <article id="m-numbered-post-list-2" class="m-numbered-post-list__post"> <a aria-label="All-Star observations: Jayson Tatum clinches win for Shaq&#039;s OG&#039;s" class="m-numbered-post-list__link" href="https://www.boston.com/sports/boston-celtics/2025/02/16/jayson-tatum-nba-all-star-game-jaylen-brown-analysis/"> <div class="m-numbered-post-list__image" data-count="2"> <img alt="All-Star observations: Jayson Tatum clinches win for Shaq&#039;s OG&#039;s" height="95" loading="lazy" src="//bdc2020.o0bc.com/wp-content/uploads/2025/02/ZMERDC37VFYWUHQYBGUWCW6CNU-67b2abdd1e669-768x432.jpg?width=190" width="95"/> </div> <div class="m-numbered-post-list__pseudo-link-container"> <span class="m-numbered-post-list__pseudo-link" > All-Star observations: Jayson Tatum clinches win for Shaq&#039;s OG&#039;s </span> </div> </a> </article> <article id="m-numbered-post-list-3" class="m-numbered-post-list__post"> <a aria-label="Jaylen Brown says bizarre pause &#039;took the gas&#039; out of All-Star game" class="m-numbered-post-list__link" href="https://www.boston.com/sports/boston-celtics/2025/02/17/jaylen-brown-tnt-ceremony-nba-all-star-game-comments-quotes/"> <div class="m-numbered-post-list__image" data-count="3"> <img alt="Jaylen Brown says bizarre pause &#039;took the gas&#039; out of All-Star game" height="95" loading="lazy" src="//bdc2020.o0bc.com/wp-content/uploads/2025/02/NOT7P2RZCFPDKUT3CDXYPFVYX4-67b2ce5386050-768x432.jpg?width=190" width="95"/> </div> <div class="m-numbered-post-list__pseudo-link-container"> <span class="m-numbered-post-list__pseudo-link" > Jaylen Brown says bizarre pause &#039;took the gas&#039; out of All-Star game </span> </div> </a> </article> <article id="m-numbered-post-list-4" class="m-numbered-post-list__post"> <a aria-label="More than 100 detained immigrants transferred from New England to New Mexico, advocates say" class="m-numbered-post-list__link" href="https://www.boston.com/news/local-news/2025/02/15/more-than-100-detained-immigrants-transferred-from-new-england-to-new-mexico-advocates-say/"> <div class="m-numbered-post-list__image" data-count="4"> <img alt="More than 100 detained immigrants transferred from New England to New Mexico, advocates say" height="95" loading="lazy" src="//bdc2020.o0bc.com/wp-content/uploads/2021/06/BDC_Logo_2020_256x256-60d0abc34135e.png?width=190" width="95"/> </div> <div class="m-numbered-post-list__pseudo-link-container"> <span class="m-numbered-post-list__pseudo-link" > More than 100 detained immigrants transferred from New England to New Mexico, advocates say </span> </div> </a> </article> <article id="m-numbered-post-list-5" class="m-numbered-post-list__post"> <a aria-label="A 50-year history of Boston on &#039;Saturday Night Live&#039;" class="m-numbered-post-list__link" href="https://www.boston.com/culture/tv/2025/02/13/snl-history-boston-saturday-night-live/"> <div class="m-numbered-post-list__image" data-count="5"> <img alt="A 50-year history of Boston on &#039;Saturday Night Live&#039;" height="95" loading="lazy" src="//bdc2020.o0bc.com/wp-content/uploads/2025/02/snl-boston-teens-nomar-garciaparra-67ad2159453f0-768x432.jpg?width=190" width="95"/> </div> <div class="m-numbered-post-list__pseudo-link-container"> <span class="m-numbered-post-list__pseudo-link" > A 50-year history of Boston on &#039;Saturday Night Live&#039; </span> </div> </a> </article> </div> </div> </div> <div class="m-widget"> <div class="m-advert m-advert--sidebar"> <div class="m-content-advert-wrap"> <div id="js-advert--articlerail2" class="m-advert m-advert--articlerail2 m-advert--sticky"><div class="m-advert__container"><div id="ad_articlerail2"><script type="type/javascript">googletag.cmd.push(function() { googletag.display("ad_articlerail2") })</script></div></div></div> </div> </div> </div> </div> <div class="m-grid-container t-layout__related-news"> <hr class="a-thin-hr"> <section aria-label="In Related News" class="o-featured-content o-featured-content--c o-featured-content--c-related m-grid"> <div class="m-grid-span-8"> <header> <h3 class="o-featured-content__title"> In Related News </h3> </header> <section aria-label="C&#8217;mon, get happy. Judy Garland&#8217;s Hyannis Port rental has hit the market." class="m-article-list-feature"> <a class="o-well-c__underline--no-decoration" href="https://www.boston.com/real-estate/luxury-homes/2025/02/06/judy-garlands-hyannis-port-rental-listed/"> <div class="o-well-c__wrapper"> <div class="m-article-list-feature__image-container"> <img width="768" height="432" src="https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg" class="o-featured-content__main-image m-article-list-feature__image wp-post-image" alt="172-irving-ave-hyannis-port-aerial" decoding="async" loading="lazy" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/IMG_4151-67a532e021d2e-768x432.jpg?width=900 900w" sizes="auto, (max-width: 768px) 100vw, 768px" /> </div> <div class="m-article-list-feature__content"> <h3 class="m-article-list-feature__headline"> <span class="js-article-card-link m-article-list-feature__link" data-p1="article_recirc_well"> C&#8217;mon, get happy. Judy Garland&#8217;s Hyannis Port rental has hit the market. </span> </h3> </div> </div> </a> </section> </div> <div class="o-featured-content__article-list o-featured-content--has-title m-grid-span-4"> <div class="o-well-c__wrapper"> <ul class="a-list--no-style m-article-list m-article-list--has-images"> <li class="js-article-card m-article-list__item o-featured-content__list-image"> <div id="nativeteasebot"> <script> googletag.cmd.push(function() { googletag.display('nativeteasebot'); }); </script> </div> </li> <li class="m-article-list__item o-featured-content__list-image"> <a class="o-well-c__underline--no-decoration" href="https://www.boston.com/news/environment/2025/02/05/luxury-house-close-tumbling-cape-cod-bay-will-anyone-stop-it/"> <div class="o-well-c__wrapper o-well-c__list-item"> <img width="150" height="150" src="https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg" class="m-article-list__image" alt="A home sits atop of a sandy bluff overlooking a beach in Wellfleet." decoding="async" loading="lazy" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2025/02/AP25035791880569-67a39ac1ef73b-150x150.jpg?width=900 900w" sizes="auto, (max-width: 150px) 100vw, 150px" /> <div class="m-article-list__content o-featured-content__list-content"> <span class="m-article-list__topic"> <span class="a-link a-link--tag a-link--tag-transparent"> Environment </span> </span> <h4 class="m-article-list__headline o-featured-content__list-headline"> <span class="m-article-list__link" > A luxury house is close to tumbling into Cape Cod Bay. Will anyone stop it? </span> </h4> </div> </div> </a> </li> <li class="m-article-list__item o-featured-content__list-image"> <a class="o-well-c__underline--no-decoration" href="https://www.boston.com/community/wickedpedia/2024/12/23/how-did-christmas-tree-shops-get-its-iconic-thatched-roof-and-windmill/"> <div class="o-well-c__wrapper o-well-c__list-item"> <img width="150" height="150" src="https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg" class="m-article-list__image" alt="" decoding="async" loading="lazy" srcset="https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=200 200w, https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=300 300w, https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=400 400w, https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=500 500w, https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=600 600w, https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=700 700w, https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=800 800w, https://bdc2020.o0bc.com/wp-content/uploads/2024/12/fe9c9636-56b3-11e1-8ad3-bf025df3dbcf-67633db31b7a9-150x150.jpg?width=900 900w" sizes="auto, (max-width: 150px) 100vw, 150px" /> <div class="m-article-list__content o-featured-content__list-content"> <span class="m-article-list__topic"> <span class="a-link a-link--tag a-link--tag-transparent"> Wickedpedia </span> </span> <h4 class="m-article-list__headline o-featured-content__list-headline"> <span class="m-article-list__link" > How did Christmas Tree Shops get its iconic thatched roof and windmill? </span> </h4> </div> </div> </a> </li> </ul> </div> </div> </section> </div> </div> <!-- Page Content --> </main> <footer id="site-footer" class="o-site-footer" aria-label="Site Footer"> <div class="m-grid-container"> <section class="o-site-footer__meta m-grid"> <div class="o-site-footer__social m-grid-span-4"> <ul class="a-list--no-style m-social-share m-social-share--block m-social-share--footer"> <li class="m-social-share__item"> <a href="https://www.instagram.com/boston/" class="m-social-share__link" rel="nopenner noreferrer" target="_blank"> <svg class="a-icon a-icon--social" aria-hidden="true" width="21" height="17"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#instagram-white"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#instagram-white"></use></svg><span class="screen-reader-text">Follow Boston.com on Instagram (Opens in a New Tab)</span> </a> </li> <li class="m-social-share__item"> <a href="https://twitter.com/intent/user?screen_name=BostonDotCom" class="m-social-share__link" rel="nopenner noreferrer" target="_blank"> <svg class="a-icon a-icon--social" aria-hidden="true" width="21" height="17"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#twitter-white"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#twitter-white"></use></svg><span class="screen-reader-text">Follow Boston.com on Twitter (Opens in a New Tab)</span> </a> </li> <li class="m-social-share__item"> <a href="https://www.facebook.com/boston" class="m-social-share__link" rel="nopenner noreferrer" target="_blank"> <svg class="a-icon a-icon--social" aria-hidden="true" width="11" height="20"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#facebook-white"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#facebook-white"></use></svg><span class="screen-reader-text">Like Boston.com on Facebook (Opens in a New Tab)</span> </a> </li> </ul> </div> <div class="o-site-footer__colophon m-site-colophon m-grid-span-4"> <p class="m-site-colophon__text">&copy;2025 Boston Globe Media Partners, LLC</p> </div> <div class="o-site-footer__survey m-grid-span-4"> <a href="https://www.research.net/r/7W87PRW" class="a-link__survey">Tell Us What You Think</a> </div> <div class="o-site-footer__menu m-grid-span-12"> <nav class="o-site-footer__nav m-secondary-menu m-secondary-menu--footer a-list--no-style" aria-label="Footer Navigation"> <div class="menu-footer-container"><ul id="footer-menu" class="o-site-footer__menu-list m-secondary-menu__list a-list--no-style"><li id="menu-item-22362950" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22362950"><a href="https://www.boston.com/privacy-policy">Do not sell my data</a></li> <li id="menu-item-26585081" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-26585081"><a href="https://www.boston.com/online-gambling-content-disclaimer">GAMBLING DISCLAIMER</a></li> <li id="menu-item-22362921" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22362921"><a rel="privacy-policy" href="https://www.boston.com/privacy-policy/">Privacy Policy</a></li> <li id="menu-item-31876254" class="ot-info-display menu-item menu-item-type-custom menu-item-object-custom menu-item-31876254"><a href="#">Your Privacy Choices</a></li> <li id="menu-item-26304418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-26304418"><a href="https://www.bostonglobemedia.com/advertise/">ADVERTISE</a></li> <li id="menu-item-22362900" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22362900"><a href="https://www.boston.com/terms-of-service">Terms of Service</a></li> <li id="menu-item-22362926" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22362926"><a href="https://www.boston.com/member-agreement">Member Agreement</a></li> <li id="menu-item-26304411" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-26304411"><a href="https://www.boston.com/contact-us/">CONTACT US</a></li> <li id="menu-item-23287074" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23287074"><a href="https://globe.rec.pro.ukg.net/BOS1501BGMP/JobBoard/3ebc7d47-2d31-4b8d-817d-db673315517a/?q=&#038;o=postedDateDesc">CAREERS</a></li> <li id="menu-item-28837199" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-28837199"><a href="https://www.boston.com/html-sitemap/">Site Map</a></li> </ul></div> </nav> </div> </section> </div> </footer> <!-- Site Modal --> <div id="site-modal" class="o-site-modal" aria-hidden="true"> <div class="o-site-modal__overlay" tabindex="-1" data-a11y-dialog-hide></div> <div role="dialog" class="o-site-modal__content" aria-labelledby="m-site-modal-logo" aria-describedby="modal-description"> <button data-a11y-dialog-hide="site-modal" class="a-button o-site-modal__close" aria-label="Close this dialog window"> <svg class="a-icon" aria-hidden="true" width="17" height="17"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#close-symbol"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#close-symbol"></use></svg><span class="screen-reader-text">Close Modal</span> </button> <h3 id="m-site-modal-logo" class="m-site-logo"> <span class="screen-reader-text"> Boston.com Newsletter Signup </span> <svg class="a-icon" aria-hidden="true" width="200" height="50"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#logo"></use><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.boston.com/wp-content/themes/bdc-2020/assets/symbol-defs.svg#logo"></use></svg><span class="screen-reader-text">Boston.com Logo</span> </h3> <p id="modal-description" class="o-site-modal__description"> Stay up to date with everything Boston. Receive the latest news and breaking updates, straight from our newsroom to your inbox. </p> <!-- form id should match fieldset 'form' attribute --> <form id="newsletter-form-2" class="m-form-newsletter m-form-newsletter--vertical" action="" method="" data-mailchimp-list-ids="" > <h4 class="m-form-newsletter__heading"> Enter your email address </h4> <fieldset form="newsletter-form"> <legend class="screen-reader-text"> Submit your email </legend> <label class="m-form-newsletter__label" for="email-form-2"> <span class="screen-reader-text">Enter your email address</span> <input class="a-input m-form-newsletter__input" type="email" id="email-form-2" name="email" placeholder="Email Address" aria-required="true" required> <p class="m-form-newsletter-error"></p> </label> <div id="email_hp_wrap" style="display: none" aria-hidden="true"> <input id="name_3" name="name_3" type="text" value="" autocomplete="nope" tabindex="-1" > </div> <button type="submit" name="submit" class="a-button a-button--primary m-form-newsletter__button"> Subscribe </button> </fieldset> </form> <button type="button" name="cancel" class="a-button a-button--is-link a-c-red a-uppercase" data-a11y-dialog-hide="site-modal" > No thanks <span class="screen-reader-text"> - Closes Modal window </span> </button> </div> </div> <!-- / Site Modal --> <script type="text/javascript" id="ad-refresh-callback"> /** * Refresh the OpenWrap/Amazon ads. * * @param array slotsToRefresh The slots due to be refreshed. */ function refreshOpenWrapAds( slotsToRefresh ) { // Don't refresh "out of page" ads. const adsToNotRefresh = ['oosvideo', 'presentedby', 'outofpage']; slotsToRefresh = slotsToRefresh.filter((slot) => !adsToNotRefresh.includes(slot.getSlotElementId())) if (!slotsToRefresh.length) { return } // Remove the previous bids from GPT. PWT.removeKeyValuePairsFromGPTSlots( slotsToRefresh ); // Add targeting Refresh=true to ads that are being refreshed. slotsToRefresh.forEach((slot) => slot.setTargeting('refresh', 'true')) /* * The above code is checking if the Onetrust script is active or not. * If it is active, it checks if the user has given consent for the country code or not. * If the user has given consent, it will display the ads. */ apstag.setDisplayBids(); PWT.a9_BidsReceived = PWT.ow_BidsReceived = false; const amazonSlotsToRefresh = formatSlotsToAmazon( slotsToRefresh ), a9Promise = fetchAmazonBids( amazonSlotsToRefresh ), pubmaticPromise = fetchPubmaticBids( slotsToRefresh ); Promise.allSettled([a9Promise, pubmaticPromise]).then(results => { const allBiddersPromisesRejected = results.every(result => result.status === 'rejected'); if (!allBiddersPromisesRejected) { refreshAds(slotsToRefresh); } }); } /** * Converts the slots in the format required by Amazon. * * @param array slots The slots due to be refreshed. */ function formatSlotsToAmazon( slots ) { const amazonSlotsToRefresh = []; for (let index = 0; index < slots.length; index++) { const slotItem = slots[index], element = {}, slotSizes = [], size = []; element.slotID = slots[index].getSlotElementId(); element.slotName = slots[index].getAdUnitPath(); if ( slots[index].getSizes() ) { sizes = slots[index].getSizes(); for (let indexJ = 0; indexJ < sizes.length; indexJ++) { size[indexJ] = []; size[indexJ].push(sizes[indexJ].width, sizes[indexJ].height); slotSizes.push(size[indexJ]); } } element.sizes = slotSizes; amazonSlotsToRefresh.push(element); } return amazonSlotsToRefresh; } // Gets bids from Amazon for the provided adSlots. fetchAmazonBids = ( slots ) => { return new Promise( ((resolve) => { try { apstag.fetchBids({ slots: slots }, ( bids ) => { apstag.setDisplayBids(); PWT.a9_BidsReceived = true; resolve( bids ); }); } catch ( e ) { resolve( null ); } }) ); } // Gets bids from PubMatic for the provided adSlots. fetchPubmaticBids = ( slots ) => { PWT.removeKeyValuePairsFromGPTSlots( slots ); return new Promise( ( resolve ) => { try { PWT.requestBids( PWT.generateConfForGPT( slots ), ( adUnitsArray ) => { PWT.addKeyValuePairsToGPTSlots( adUnitsArray ); PWT.ow_BidsReceived = true; resolve( adUnitsArray ); }, ); } catch (e) { resolve( null ); } } ); } // Displays the adSlot provided using googletag. displayAdSlots = ( slots ) => { return new Promise( (( resolve ) => { try { for ( let i = 0; i < slots.length; i++ ) { googletag.display( slots[i] ); } resolve( slots ); } catch ( e ) { resolve( null ); } }) ); } // Refreshes the adSlots provided. refreshAds = ( slots ) => { PWT.initAdserverSet = true; displayAdSlots( slots ).then( slots => { googletag.pubads().refresh( slots ); } ) } </script> <script type="text/javascript"> (function (){ // The widget ID is set in PHP. const widget_id = 'rc-widget-5c0cda'; // IntersectionObserver is a vanilla JS api that detects where an element is // relative to the viewport. It eliminates the need for scroll listeners. // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API const observer = new IntersectionObserver( entries => { // Initialize if the widget is within 500px of the bottom of the viewport. if ( entries[0].isIntersecting ) { initialize(); // Stop observing once the widget has been initialized. observer.unobserve( document.getElementById( widget_id )); } }, // The options for the IntersectionObserver. { rootMargin: '0px 0px 500px 0px' } ); // Start observing the widget observer.observe( document.getElementById( widget_id ) ); function initialize(){ const onetrust_active = 1; const gdprApplies = JSON.parse(localStorage.getItem( 'gdprApplies' ) ); const ccpaApplies = localStorage.getItem( 'ccpaApplies' ); const widget_revcontent = document.getElementById( widget_id ); const scripts_initialize = document.createElement( "script" ); // OneTrust (CMP) is on if ( onetrust_active ) { // User is from CCPA if ( ( null !== ccpaApplies ) ) { const storageCCPA = localStorage.getItem( 'ccpaString' ); widget_revcontent.setAttribute( "data-us-privacy", storageCCPA ); } // User is from GDPR if ( ( null !== gdprApplies ) ) { const storageGDPR = localStorage.getItem( 'gdprString' ); widget_revcontent.setAttribute( "data-gdpr", 1 ); widget_revcontent.setAttribute( "data-gdpr-consent", storageGDPR ); } } scripts_initialize.setAttribute( "type", "text/javascript" ); scripts_initialize.setAttribute( "src", "https://assets.revcontent.com/master/delivery.js" ); scripts_initialize.setAttribute( "defer", "defer" ); // Append the script to the widget widget_revcontent.after( scripts_initialize ); } })(); </script> <script type="text/javascript"> !function(n,t,c,e,u){function r(n){try{f=n(u)}catch(n){return h=n,void i(p,n)}i(s,f)}function i(n,t){for(var c=0;c<n.length;c++)d(n[c],t); }function o(n,t){return n&&(f?d(n,f):s.push(n)),t&&(h?d(t,h):p.push(t)),l}function a(n){return o(!1,n)}function d(t,c){ n.setTimeout(function(){t(c)},0)}var f,h,s=[],p=[],l={then:o,catch:a,_setup:r};n[e]=l;var v=t.createElement("script"); v.src=c,v.async=!0,v.id="_uasdk",v.rel=e,t.head.appendChild(v)}(window,document,'https://aswpsdkus.com/notify/v1/ua-sdk.min.js', 'UA', { appKey: 'XJoCGW0GRDietgEhEXpsJg', token: 'MTpYSm9DR1cwR1JEaWV0Z0VoRVhwc0pnOndCZ3RiWnpwQnFXakEtckxkQnlyTkE1NmRDaWxSMm5vNUFQNkRRZHFjN28', websitePushId: 'web.boston.com.remix', secureIframeUrl: 'https://www.boston.com/secure-bridge.html', vapidPublicKey: 'BHRLCpgLazdtSrznUKdHmTSjqjEg5PjeRqWDX2g1ezJ40WUFkKMeifMIXqjWC2OQlNoA9KYbl47GloxsgLdbYtE=' }); </script> <script type="module"> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); const onetrustStorageConsent = JSON.parse(localStorage.getItem( 'consent_one_trust_bdc' ) ); /* The above code is parsing the JSON data from the local storage and storing it in a variable. * Checking if the user has given consent for the cookie C0002. * If the user has given consent, the variable consent will be set to 'grant'. * If the user has not given consent,the variable consent will be set to 'revoke'. * Documentation https://developers.facebook.com/docs/meta-pixel/implementation/gdpr */ if ( ( onetrustStorageConsent !== null ) && (onetrustStorageConsent.C0002 !== true ) ) { fbq('consent', 'revoke'); fbq('dataProcessingOptions', []); } else { fbq('consent', 'grant'); fbq('dataProcessingOptions', ['LDU'], 0, 0); } fbq('init', '813236348753005'); fbq('track', 'PageView'); </script> <!-- dpo is blank which means that no geolocation access is given --> <noscript><img height="1" width="1" class="hidden" src="https://www.facebook.com/tr?id=813236348753005&ev=PageView&noscript=1&dpo=" /></noscript> <script type="text/javascript" id="ot-manage-links"> const otDisplayClassEl = document.getElementsByClassName("ot-info-display"); for ( const otLinkEl of otDisplayClassEl ) { let otLinks = otLinkEl.getElementsByTagName("a"); for ( const otLinkEl of otLinks ) { let otLinkElAttr = otLinkEl.getAttribute("href") if( otLinkElAttr === "#" ) { otLinkEl.addEventListener( "click", function() { OneTrust.ToggleInfoDisplay(); event.preventDefault(); }); } } } </script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0" id="wp-polyfill-js"></script> <script type="text/javascript" id="frontend-js-extra"> /* <![CDATA[ */ var bdcFeatureFlags = {"real-estate":"1","arc-video-ads":"0","archive-pagination-schema-removal":"1","love-letters":"1","bdc-events":"1","bdc-cache-headers":"1","bdc-time-to-read":"1","election-widgets-lazy-load":"0"}; var sportsbarData = {"is_home":"","tags":"cape-cod,cape-cod-travel,new-england-travel,outdoors,travel,massachusetts-travel-guides","category":"travel"}; var breakingNews = {"post_id":"24977048","category_id":""}; var gformsData = {"ajaxurl":"https:\/\/www.boston.com\/wp-admin\/admin-ajax.php"}; var bdc2020Webpack = {"path":"https:\/\/www.boston.com\/wp-content\/themes\/bdc-2020\/dist\/"}; /* ]]> */ </script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-content/themes/bdc-2020/dist/js/frontend.js?ver=186f392f6caeac7c85301fc35781151e" id="frontend-js" async></script> <script type="text/javascript" id="avc_frontend-js-extra"> /* <![CDATA[ */ var AdRefreshControl = {"advertiserIds":[],"lineItemIds":[],"sizesToExclude":"","slotIdsToExclude":[],"viewabilityThreshold":"70","refreshInterval":"30","maximumRefreshes":"10","refreshCallback":"refreshOpenWrapAds"}; /* ]]> */ </script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-content/plugins/ad-refresh-control/dist/js/frontend.js?ver=1.1.0" id="avc_frontend-js"></script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-content/plugins/block-library/dist/js/frontend-accordion-scripts.js?ver=8563120eb740c7cc17ee526901535e7c" id="tenup-block-library-frontend-accordion-scripts-js"></script> <script type="text/plain" class="optanon-category-C0001" type="text/javascript" id="tinypass-js-before"> /* <![CDATA[ */ (function() { // Ensure the 'tp' namespace exists for Piano scripts. window.tp = window.tp || []; window.pdl = window.pdl || {}; // Set the consent version to v2. window.pdl.requireConsent = 'v2'; window.pdl.consent = {}; window.pdl.consent.products = ['COMPOSER', 'ID']; // Set the Application ID for Piano. tp.push(["setAid", "3276IrWrpu"]); // Set the Cxense Site ID for Piano. tp.push(["setCxenseSiteId", "5859613349622668998"]); // Set the API endpoint based on the environment (production or sandbox). tp.push(["setEndpoint", "https://buy.tinypass.com/api/v3"]); // Set the Piano ID URL for authentication. tp.push(["setPianoIdUrl", "https://buy.piano.io"]); // Configure user provider settings to use Piano ID only if enabled. tp.push(["setUseTinypassAccounts", false ]); tp.push(["setUsePianoIdUserProvider", false ]); // Set Piano Custom variables tp.push(["setCustomVariable", "page_type", "post"]); tp.push(["setContentCreated", "2022-05-20T21:07:44+00:00"]); tp.push(["setContentAuthor", "Kristi Palma"]); // Set Piano Tags tp.push(["setTags", ["Cape Cod","Cape Cod Travel","New England Travel","Outdoors","Travel","Travel Guides"]]); // Initialize Piano services (Piano ID and Composer). tp.push(["init", function() { // Check and set consent for Piano services. It also makes the setPianoConsent method available. function setPianoConsent() { // Define custom consent mode settings window.pdl.consent_modifiers = { 'COMPOSER': { 'source': 'opt-out', 'patches': [ { 'action': 'include', 'item': { 'key': 'pcus', 'type': 'cookie', } }, { 'action': 'include', 'item': { 'key': 'pcfe', 'type': 'cookie', } }, ] }, 'ID': { 'source': 'opt-out', 'patches': [ { 'action': 'include', 'item': { 'key': 'pnid-tc-string', 'type': 'cookie', } }, ] }, 'DL': { 'source': 'opt-out' }, }; // Parse the groups consent string from window.OnetrustActiveGroups const consentGroups = Object.fromEntries( window.OnetrustActiveGroups .split(',') .filter(group => group.trim()) // Remove empty or whitespace-only strings .map(group => [group, true]) ); // If consentGroup is not empty if (Object.keys(consentGroups).length > 0) { consentMode = 'opt-in'; // Default to 'opt-in' // All cookies allowed. if ( consentGroups.C0002 && consentGroups.C0003 && consentGroups.C0004 ) { consentMode = 'opt-in'; } // Only optional cookies blocked. else if ( consentGroups.C0002 && consentGroups.C0003 && !consentGroups.C0004 ) { consentMode = 'essential'; } // At least one essential cookie blocked. else if ( (!consentGroups.C0002 || !consentGroups.C0003) && consentGroups.C0004 ) { consentMode = 'custom'; } // All cookies blocked. else if ( (!consentGroups.C0002 || !consentGroups.C0003) && !consentGroups.C0004 ) { consentMode = 'opt-out'; } // Set consent tp.consent.setAllPurposes(consentMode); } } // Check if consent has been given for Piano services. if (!tp.consent.getByPurpose()) { // If consent has not been given, set the consent. setPianoConsent(); } // Hook on to the OneTrust consent change calllback in case the user changes their consent. window.OneTrust.OnConsentChanged = function() { setPianoConsent(); }; // Initialize Piano ID only if enabled // Initialize Piano Composer experience for content access management. // Check if consent has been given for Piano services. if (tp.consent.getByPurpose()) { tp.experience.init(); } else { // If consent has not been given, set the consent. setPianoConsent(); tp.experience.init(); } }]); })(); /* ]]> */ </script> <script type="text/plain" class="optanon-category-C0001" type="text/javascript" src="https://buy.tinypass.com/api/tinypass.min.js" id="tinypass-js"></script> <script type="text/javascript" id="bgmp-regi-bundle-js-js-extra"> /* <![CDATA[ */ var bgmpRegi = {"regi_signup_form_path":"https:\/\/www.boston.com\/wp-content\/plugins\/wp-plugin-regi-spot-im\/markup\/signup-form.php?blog_name=Boston.com","blog_name":"Boston.com"}; /* ]]> */ </script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-content/plugins/wp-plugin-regi-spot-im//bgmp-regi-bundle.js?ver=0.0.3" id="bgmp-regi-bundle-js-js"></script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-content/plugins/bdc-functionality/assets/js/tracker/lib/AppMeasurement/AppMeasurement.js?ver=2.22.0" id="app_measurement-js"></script> <script type="text/javascript" id="bdc_tracker-js-extra"> /* <![CDATA[ */ var bdcfunctionalityWebpack = {"path":"https:\/\/www.boston.com\/wp-content\/plugins\/bdc-functionality\/dist\/"}; var bdcDigitalData = {"settings":{"reportSuite":"nytbglobe,nytbgglobal","customLinksReportSuite":"nytbglobe","trackingServer":"smetrics.boston.com"},"pageInstanceID":"5 things to do when visiting Yarmouth-www.boston.com","page":{"pageInfo":{"pageID":"5 things to do when visiting Yarmouth","internalLinks":"javascript:,cars.com,boston.com,bostonglobe.com,globe.com,cityfeet.com,legacy.com,monstermoving.com,movietickets.com,newsbank.com,salary.com,snocountry.com,travidia.com,uclick.com,zap2it.com,bostondirtdogs.com,adperfect.com,bankrate.com,ce.com,flightview.com,gabriels.com,harvestadsdepot.com,interviewmastery.com,localattitude.com,pair.com,resume.com,sportsballot.com,vanlines.com,boston.addresses.com,boston.jiwire.com,boston.stats.com,gadzoo.com,jobview.boston.monster.com,mrboffo.com,mypublicnotices.com,upickem.com,realtraffic.maptuit.com,caspio.com,upickem.net,boston.houzz.com,localhost,www.boston.com","destinationURL":"https:\/\/www.boston.com\/travel\/cape-cod-travel\/2022\/05\/20\/5-things-to-do-when-visiting-yarmouth\/","pageURL":"https:\/\/www.boston.com\/travel\/cape-cod-travel\/2022\/05\/20\/5-things-to-do-when-visiting-yarmouth\/","channel":"Travel","campaign":"","subsection":"Cape Cod Travel","rssID":"","authors":"Kristi Palma","pageLayout":"rail-header-standard","pagination":"","p1":"","pageType":"article page","publishDate":"05\/20\/2022","videoName":"","cms":"WordPress","environment":"Live","summaryLength":396,"searchKeyword":"","trackingCode":"","keywords":"Cape Cod,Cape Cod Travel,New England Travel,Outdoors,Travel,Travel Guides","sponsorName":"","loginStatus":"logged out","publicationName":"Boston.com","galleryName":null,"codeVersion":"2.22.0","articleID":"BDC-24977048","refresh":"","registrationID":"","newsletter":""}}}; /* ]]> */ </script> <script type="text/javascript" src="https://bdc2020.o0bc.com/wp-content/plugins/bdc-functionality/dist/js/tracker.js?ver=6c088ae1959cff7c6c385d8c28993a82" id="bdc_tracker-js"></script> <script> const oneTrustEl = document.getElementsByClassName( 'onetrust-revcontent' ); if ( oneTrustEl.length > 0 ) { // If less than 1, no RevContent is running. // Is this if really needed? let ccpaSet = localStorage.getItem( 'ccpaApplies' ); if ( ( null !== ccpaSet ) ) { let storageCCPA = localStorage.getItem( 'ccpaString' ); oneTrustEl[0].setAttribute( "data-us-privacy", storageCCPA ); } let gdprSet = localStorage.getItem( 'gdprApplies' ); if ( ( null !== gdprSet ) ) { let storageGDPR = localStorage.getItem( 'gdprString' ); oneTrustEl[0].setAttribute( "data-gdpr", 1 ); oneTrustEl[0].setAttribute( "data-gdpr-consent", storageGDPR ); } } </script> <script type="text/javascript"> window.addEventListener('DOMContentLoaded', (event) => { const airshipExtrajs = document.getElementById("ua-wn-js-extra"); const ConsentFromOnetrustStorage = JSON.parse(localStorage.getItem( 'consent_one_trust_bdc' ) ); if ( airshipExtrajs ) { if ( ( null !== ConsentFromOnetrustStorage ) && ( ConsentFromOnetrustStorage.C0003 ) ) { document.getElementById('ua-wn-js-extra').setAttribute('type', 'text/plain'); document.getElementById('ua-wn-js-extra').setAttribute('class', 'optanon-category-C0003'); } } }); </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"b9d80a2312","applicationID":"467627310","transactionName":"ZFNbMkJTVxVYVRcMDV0ZehNDRlYLFmUKCwVfUxlLEGJWFU0=","queueTime":0,"applicationTime":1192,"atts":"SBRMRApJREobV0FfGU5L","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html> <!-- plugin=object-cache-pro client=phpredis metric#hits=20495 metric#misses=118 metric#hit-ratio=99.4 metric#bytes=3647678 metric#prefetches=0 metric#store-reads=249 metric#store-writes=79 metric#store-hits=523 metric#store-misses=111 metric#sql-queries=94 metric#ms-total=1260.32 metric#ms-cache=99.88 metric#ms-cache-avg=0.3055 metric#ms-cache-ratio=7.9 -->

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