PageSourceSearch

https://www.bostonmagazine.com/news/

html bostonmagazine.com collected 2026-09-24 15:16:57 UTC 212,428 bytes, 1,428 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3	<head>
4<script>
5    window.ddjskey = "D9F68DAD89670E48567E99279F458A";
6    window.ddoptions = {};
7    </script>
7
8    
8<script src="https://dd.bostonmagazine.com/tags.js" async>
9</script>
9
10
11		<meta name="viewport" content="width=device-width, initial-scale=1" />
12		<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
12<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1134648183",accountID:"2293006",trustKey:"2293006",xpid:"VgQOUlZTDhABVFZaBgEHVl0I",licenseKey:"b9d80a2312",applicationID:"1078100099",browserID:"1134648183"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */
13(()=>{var e={8122(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)),s=0===Object.keys(r).length?e:r;for(let a in s)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]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={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};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="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),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
13e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(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].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(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],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.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,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[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()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(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 s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(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),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(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}},6389(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})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
13const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
13if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
13o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,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},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);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)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=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)o.call(e,n)&&(t[n]=e[n])}
13(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=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[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
13;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={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"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
13{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},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,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},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},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:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||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:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
13ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.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){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.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,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
13{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
13null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
13dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
13imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
13return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
13!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
13if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
13);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
13class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
13h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
13
14		<meta content="utf-8" http-equiv="encoding">
15				
15<script type="text/javascript" id="OptanonWrapper">
16			/**
17			 * Delete all cookies except whitelisted ones
18			 */
19			function deleteUnconsentedCookies() {
20				// Get all cookies
21				const cookies = document.cookie.split(';');
22
23				// Get whitelisted cookies from PHP
24				const whitelistedCookies = ["wordpress_logged_in","wordpress_logged_in_*","wordpress_sec_*","OptanonConsent","OptanonAlertBoxClosed","eupubconsent-v2","OneTrustWPCCPANotice","OneTrustGroupConsent","gform_*","gf_csrf_token_*","ep_auth_token","wp-query-monitor-*","wp_fail2ban_*","srm_redirect_*"];
25
26				// Get all domains to try
27				const domain  = window.location.hostname;
28				const domains = domain.split('.');
29				const paths   = ['/', ''];
30
31				// Try to delete each cookie
32				cookies.forEach(cookie => {
33					const cookieName = cookie.split('=')[0].trim();
34
35					// Check if cookie matches any whitelist pattern
36					const isWhitelisted = whitelistedCookies.some(pattern => {
37						const regexPattern = pattern
38							.replace(/\./g, '\\.')
39							.replace(/\*/g, '.*');
40						return new RegExp('^' + regexPattern + '$').test(cookieName);
41					});
42
43					if (!isWhitelisted) {
44
45						// Try every combination of domain and path
46						domains.forEach((d, i) => {
47							const domainPart = '.' + domains.slice(i).join('.');
48							paths.forEach(path => {
49								// Try with domain
50								document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=${domainPart}; path=${path}`;
51								// Try without domain
52								document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=${path}`;
53								// Try with exact domain
54								document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=${domain}; path=${path}`;
55							});
56						});
57					}
58				});
59			}
60			/**
61			 * OptanonWrapper callback function. We use the OptanonWrapper function to listen
62			 * for a user event and determine script behavior based on the user event.
63			 *
64			 * @return void
65			 */
66			function OptanonWrapper() {
67
68				// Get all registered script IDs from js_onetrust_handles.
69				const scriptIds = ["mc-datalayer-yaml","gpt","mc-ads","mc-hubspot-subscription-form","mc-integrations-hubspot","mc-integrations-hubspot-legacy","metrocorp-ads-secondary","nativo-tracking"];
70
71				// These will be needed for the fetch request, to delete HttpOnly cookies.
72				const ajaxurl = 'https://www.bostonmagazine.com/wp-admin/admin-ajax.php';
73				const nonce = '70dec35bdd';
74
75
76				// OneTrust event listener that fires when a user confirms consent preferences in the banner.
77				Optanon.OnConsentChanged( function() {
78
79					// Get the active groups from a OneTrust global.
80					const activeGroups = window.OnetrustActiveGroups;
81					const hasDeclinedCategories = !activeGroups.includes('C0002') ||
82						!activeGroups.includes('C0003') ||
83						!activeGroups.includes('C0004');
84
85					// if any category is declined, disable all OT registered scripts.
86					if (hasDeclinedCategories) {
87						// Disable all tracked scripts
88						scriptIds.forEach(id => {
89							const script = document.getElementById(id);
90							if (script) {
91								script.type = 'text/plain';
92							}
93						});
94						// Delete all client side cookies except whitelisted ones.
95						deleteUnconsentedCookies();
96
97						// Server request to delete server side (HttpOnly) cookies.
98						fetch(ajaxurl, {
99							method: 'POST',
100							credentials: 'same-origin',
101							headers: {
102								'Content-Type': 'application/x-www-form-urlencoded',
103							},
104							body: new URLSearchParams({
105								action: 'delete_unconsented_cookies',
106								nonce: nonce
107							})
108						});
109					}
110				});
111			}
112		</script>
112
113				
113<script type="text/javascript" id="ot-inserter">
114			(function() {
115				const otUrl    = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js';
116				const otScript = document.createElement('script');
117				otScript.async = true;
118				otScript.type  = 'text/javascript';
119				otScript.src   = otUrl;
120				otScript.setAttribute('id', 'onetrustSDK');
121				otScript.setAttribute('charset', 'UTF-8');
122				otScript.setAttribute('data-domain-script', '01947541-75bb-7dce-8570-43f9ca73af23');
123				const otNode = document.getElementById('ot-inserter');
124				otNode.parentNode.insertBefore(otScript, otNode.nextSibling);
125			})();
126		</script>
126
127		<link rel="preconnect" href="https://securepubads.g.doubleclick.net" /><link rel="preconnect" href="https://www.googleadservices.com" /><link rel="preconnect" href="https://s.ntv.io" /><link rel="preconnect" href="https://ib.adnxs.com" /><link rel="preconnect" href="https://ap.lijit.com" />	<!-- Below is a recommended list of pre-connections, which allow the network to establish each connection quicker, speeding up response times and improving ad performance. -->
128	<link rel="preconnect" href="https://a.pub.network/" crossorigin />
129	<link rel="preconnect" href="https://b.pub.network/" crossorigin />
130	<link rel="preconnect" href="https://c.pub.network/" crossorigin />
131	<link rel="preconnect" href="https://d.pub.network/" crossorigin />
132	<link rel="preconnect" href="https://btloader.com/" crossorigin />
133	<link rel="preconnect" href="https://api.btloader.com/" crossorigin />
134	<link rel="preconnect" href="https://cdn.confiant-integrations.net" crossorigin />
135	<!-- Below is a link to a CSS file that accounts for Cumulative Layout Shift, a new Core Web Vitals subset that Google uses to help rank your site in search -->
136	<!-- The file is intended to eliminate the layout shifts that are seen when ads load into the page. If you don't want to use this, simply remove this file -->
137	<!-- To find out more about CLS, visit https://web.dev/vitals/ -->
138	<link rel="stylesheet" href="https://a.pub.network/bostonmagazine-com/cls.css">
139		
139<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
140	var freestar = freestar || {};
141	freestar.queue = freestar.queue || [];
142	freestar.config = freestar.config || {};
143	freestar.config.enabled_slots = [];
144	freestar.config.targeting = [
145		{
146		"bostonmagazine_banner-1": {
147			"pos": ["1"],
148		}
149	},
150	{
151		"bostonmagazine_banner-2": {
152			"pos": ["2"],
153		}
154	},
155	{
156		"bostonmagazine_banner-3": {
157			"pos": ["3"],
158		}
159	},
160	{
161		"bostonmagazine_rail-1": {
162			"pos": ["1"],
163		}
164	},
165	{
166		"bostonmagazine_rail-2": {
167			"pos": ["2"],
168		}
169	},
170	{
171		"bostonmagazine_rail-3": {
172			"pos": ["3"],
173		}
174	},
175	{
176		"bostonmagazine_curated_module-1": {
177			"pos": ["1"],
178		}
179	},
180	{
181		"bostonmagazine_curated_module-2": {
182			"pos": ["2"],
183		}
184	},
185	{
186		"bostonmagazine_curated_module-3": {
187			"pos": ["3"],
188		}
189	},
190		];
191	freestar.initCallback = function () { (freestar.config.enabled_slots.length === 0) ? freestar.initCallbackCalled = false : freestar.newAdSlots(freestar.config.enabled_slots) }
192	</script>
192
193	
193<script src="https://a.pub.network/bostonmagazine-com/pubfig.min.js" data-cfasync="false" async type="text/plain" class="optanon-category-C0004"></script>
193
194	<style>
195	#pmLink {
196		visibility: hidden;
197		text-decoration: none;
198		cursor: pointer;
199		background: transparent;
200		border: none;
201	}
202
203	#pmLink:hover {
204		visibility: visible;
205		color: grey;
206	}
207	</style>
208			
208<script type="text/plain" class="optanon-category-C0004">
209			freestar.config.disabledProducts = {
210				superflex: true
211			};
212		</script>
212
213		<link rel="preconnect" href="https://www.bostonmagazine.com/" /><link rel="preconnect" href="https://s.ntv.io/" /><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1, noarchive' />
214
215	<!-- This site is optimized with the Yoast SEO Premium plugin v27.9 (Yoast SEO v27.9) - https://yoast.com/product/yoast-seo-premium-wordpress/ -->
216	<title>City Life Archives - Boston Magazine</title>
217	<meta name="description" content="Discover the news about Boston from the people who know the city best. Boston Magazine&#039;s news section will keep you up to date on the most relevant politics, weather, sports, policies, neighborhoods, and more." />
218	<link rel="canonical" href="https://www.bostonmagazine.com/news/" />
219	<link rel="next" href="https://www.bostonmagazine.com/news/page/2/" />
220	<meta property="og:locale" content="en_US" />
221	<meta property="og:type" content="article" />
222	<meta property="og:title" content="City Life Archives" />
223	<meta property="og:url" content="https://www.bostonmagazine.com/news/" />
224	<meta property="og:site_name" content="Boston Magazine" />
225	<meta name="twitter:card" content="summary_large_image" />
226	<!-- / Yoast SEO Premium plugin. -->
227
228
229<link rel='dns-prefetch' href='//securepubads.g.doubleclick.net' />
230<link rel='dns-prefetch' href='//s.ntv.io' />
231<link rel='dns-prefetch' href='//use.typekit.net' />
232<link rel='dns-prefetch' href='//p.typekit.net' />
233<link rel='preconnect' href='https://use.typekit.net' />
234<link rel='preconnect' href='https://p.typekit.net' />
235<link rel="alternate" type="application/rss+xml" title="Boston Magazine &raquo; City Life Vertical Feed" href="https://www.bostonmagazine.com/news/feed/" />
236<style id="wp-img-auto-sizes-contain-inline-css">
237img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
238/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
239</style>
240<style id="wp-emoji-styles-inline-css">
241
242	img.wp-smiley, img.emoji {
243		display: inline !important;
244		border: none !important;
245		box-shadow: none !important;
246		height: 1em !important;
247		width: 1em !important;
248		margin: 0 0.07em !important;
249		vertical-align: -0.1em !important;
250		background: none !important;
251		padding: 0 !important;
252	}
253/*# sourceURL=wp-emoji-styles-inline-css */
254</style>
255<style id="classic-theme-styles-inline-css">
256/*! This file is auto-generated */
257.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}
258/*# sourceURL=/wp-includes/css/classic-themes.min.css */
259</style>
260
261<style id="global-styles-inline-css">
262: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--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 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,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 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%);
262--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 rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }: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;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.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;}
262.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;}
263/*# sourceURL=global-styles-inline-css */
264</style>
265
266<link rel='stylesheet' id='metro_typekit-css' href='https://use.typekit.net/fhn8jjz.css?ver=7.1.2' media='all' />
267<link rel='stylesheet' id='bostonmagazine-css' href='https://bomag.o0bc.com/wp-content/themes/metrocorp/dist/css/boston.min.css?ver=1790091448' media='all' />
268<link rel='stylesheet' id='tablepress-default-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/css/build/default.css?ver=3.2.1-BGMP' media='all' />
269<link rel='stylesheet' id='tablepress-datatables-buttons-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.buttons.css?ver=3.2.1-BGMP' media='all' />
270<link rel='stylesheet' id='tablepress-datatables-fixedheader-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.fixedheader.css?ver=3.2.1-BGMP' media='all' />
271<link rel='stylesheet' id='tablepress-datatables-fixedcolumns-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.fixedcolumns.css?ver=3.2.1-BGMP' media='all' />
272<link rel='stylesheet' id='tablepress-datatables-scroll-buttons-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.scroll-buttons.css?ver=3.2.1-BGMP' media='all' />
273<link rel='stylesheet' id='tablepress-responsive-tables-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/responsive-tables.css?ver=3.2.1-BGMP' media='all' />
274<link rel='stylesheet' id='tablepress-datatables-columnfilterwidgets-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.columnfilterwidgets.css?ver=3.2.1-BGMP' media='all' />
275<link rel='stylesheet' id='tablepress-datatables-serverside-processing-css' href='https://bomag.o0bc.com/wp-content/plugins/tablepress-premium/modules/css/build/datatables.serverside-processing.css?ver=3.2.1-BGMP' media='all' />
276<script id="gpt-js-extra">
277var mcAds = {"advertiserSlug":"","currentSite":"bostonmagazine","gptNetworkID":"/61381659/site195.tmus/","hasBannerThree":"true","isArchive":"false","isGeodir":"false","isSingle":"","postType":"post","slots":{"banner-1":{"adUnit":"banner","adSizes":"[[728, 90], [320, 100], [970, 250], [320, 50], [970, 90]]","id":"banner-1","mapping":"bannerOneMapping","hasSettings":true,"targeting":{"pos":"1"},"isRefresh":"true","isLazy":"false","isPrebid":"true"},"banner-2":{"adUnit":"banner","adSizes":"[[728, 90], [320, 100], [970, 250], [300, 250], [320, 50], [970, 90]]","id":"banner-2","mapping":"bannerMapping","hasSettings":true,"targeting":{"pos":"2"},"isRefresh":"true","isLazy":"true","isPrebid":"true"},"banner-3":{"adUnit":"banner","adSizes":"[[728, 90], [320, 100], [970, 250], [300, 250], [320, 50], [970, 90], [1,1]]","id":"banner-3","mapping":"bannerMapping","hasSettings":true,"targeting":{"pos":"3"},"isRefresh":"true","isLazy":"true","isPrebid":"true"},"adslot_0":{"adUnit":"native_river","adSizes":"fluid","id":"adslot_0","targeting":{"pos":"1"}},"adslot_1":{"adUnit":"native_river","adSizes":"fluid","id":"adslot_1","targeting":{"pos":"2"}},"adslot_2":{"adUnit":"native_river","adSizes":"fluid","id":"adslot_2","targeting":{"pos":"3"}},"curated_module-1":{"adUnit":"curated_module","adSizes":"fluid","id":"curated_module-1","hasSettings":true,"targeting":{"pos":"1"},"isRefresh":"false","isLazy":"true","isPrebid":"false"},"curated_module-2":{"adUnit":"curated_module","adSizes":"fluid","id":"curated_module-2","hasSettings":true,"targeting":{"pos":"2"},"isRefresh":"false","isLazy":"true","isPrebid":"false"},"rail-1":{"adUnit":"rail","adSizes":"[[320, 100], [320, 50], [300, 250], [300, 600], [1,1]]","id":"rail-1","mapping":"railMapping","hasSettings":true,"targeting":{"pos":"1"},"isRefresh":"true","isLazy":"true","isPrebid":"true"},"rail-2":{"adUnit":"rail","adSizes":"[[320, 100], [320, 50], [300, 250], [300, 600], [1,1]]","id":"rail-2","mapping":"railMapping","hasSettings":true,"targeting":{"pos":"2"},"isRefresh":"true","isLazy":"true","isPrebid":"true"},"rail-3":{"adUnit":"rail","adSizes":"[[320, 100], [320, 50], [300, 250], [300, 600], [1,1]]","id":"rail-3","mapping":"railMapping","hasSettings":true,"targeting":{"pos":"3"},"isRefresh":"true","isLazy":"true","isPrebid":"true"},"toprailsponsor-1":{"adUnit":"toprailsponsor","adSizes":"[[300, 150], [300, 90], [1,1]]","id":"toprailsponsor-1","mapping":"toprailMapping","targeting":{"pos":"1"}},"interstitial":{"adUnit":"interstitial","id":"interstitial","outOfPage":true},"skin":{"adUnit":"skin","adSizes":"[1, 1]","id":"skin"},"ad-reveal":{"adUnit":"ad-reveal","adSizes":"[[1300, 500], [780, 300], [360, 585]]","id":"ad-reveal","hasSettings":true,"mapping":"adrevealMapping","isRefresh":"false","isLazy":"false","isPrebid":"false"},"bottom-anchor":{"adUnit":"BOTTOM_ANCHOR","id":"bottom-anchor","isMobile":true,"outOfPage":true,"outOfPageFormat":"BOTTOM_ANCHOR","targeting":{"test":"outofpage"}}},"slotsFired":[],"slotsViewed":[],"targeting":{"vertical":"news","cat":[],"environment":"production","post_type":"section","vertical-landing":"news-171017"},"debug":""};
278//# sourceURL=gpt-js-extra
279</script>
vendor: 1 bytes, line 279
279
280<script type="text/plain" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"  id="gpt" class="optanon-category-C0004"></script>
280<script type="text/plain" src="https://bomag.o0bc.com/wp-content/mu-plugins/metrocorp-ads/dist/js/metrocorp-ads.js?ver=1.0.0"  id="mc-ads" class="optanon-category-C0004"></script>
280<script type="text/plain" src="https://s.ntv.io/serve/load.js"  id="nativo-tracking" class="optanon-category-C0004"></script>
280<link rel="https://api.w.org/" href="https://www.bostonmagazine.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.bostonmagazine.com/wp-json/wp/v2/mc-tax-vertical/171017" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.bostonmagazine.com/xmlrpc.php?rsd" />
281<meta name="generator" content="WordPress 7.1.2" />
282<link rel='preload' href='https://www.bostonmagazine.com/wp-content/themes/metrocorp/dist/fonts/FoundersGrotesk/FoundersGroteskX-CondensedWeb-Medium.woff' as='font' type='font/woff' crossorigin>
283<link rel='preload' href='https://www.bostonmagazine.com/wp-content/themes/metrocorp/dist/fonts/inter/inter-v12-latin-regular.woff2' as='font' type='font/woff' crossorigin>
284<link rel='preload' href='https://www.bostonmagazine.com/wp-content/themes/metrocorp/dist/fonts/inter/inter-v12-latin-500.woff2' as='font' type='font/woff' crossorigin>
285<link rel='preload' href='https://www.bostonmagazine.com/wp-content/themes/metrocorp/dist/fonts/inter-v12-latin-600.woff2' as='font' type='font/woff' crossorigin>
286<link rel='preload' href='https://www.bostonmagazine.com/wp-content/themes/metrocorp/dist/fonts/inter-v12-latin-700.woff2' as='font' type='font/woff' crossorigin>
287<script type="application/ld+json">{
288    "@context": "http:\/\/schema.org",
289    "@type": "WebPage",
290    "publisher": {
291        "@type": "Organization",
292        "name": "Boston Magazine",
293        "logo": {
294            "@type": "ImageObject",
295            "url": "https:\/\/www.bostonmagazine.com\/wp-content\/themes\/metrocorp-bostonmagazine\/images\/logo-bostonmag.png"
296        }
297    },
298    "mainEntityOfPage": {
299        "@type": "WebPage",
300        "@id": "https:\/\/www.bostonmagazine.com\/news"
301    }
302}</script>
302<meta name="google-site-verification" content="0XaV9QKUdAM56rDbamBZ6GVmS2NqzAhSO1DgPDye__o" /><link rel="icon" href="https://bomag.o0bc.com/wp-content/uploads/sites/2/2017/10/cropped-boston-magazine-favicon-32x32.png" sizes="32x32" />
303<link rel="icon" href="https://bomag.o0bc.com/wp-content/uploads/sites/2/2017/10/cropped-boston-magazine-favicon-192x192.png" sizes="192x192" />
304<link rel="apple-touch-icon" href="https://bomag.o0bc.com/wp-content/uploads/sites/2/2017/10/cropped-boston-magazine-favicon-180x180.png" />
305<meta name="msapplication-TileImage" content="https://bomag.o0bc.com/wp-content/uploads/sites/2/2017/10/cropped-boston-magazine-favicon-270x270.png" />
306<script type="text/javascript">
307	window.dataLayer = window.dataLayer || [];
308</script>
308
309
310<script type="text/javascript">
311	window.gtag = window.gtag || function() {
312		window.dataLayer.push( arguments );
313	};
314
315	/**
316	 * Read the consent state OneTrust stores in the OptanonConsent cookie.
317	 *
318	 * @return {?string} The raw groups value, or null when nothing is stored.
319	 */
320	function mcStoredConsentGroups() {
321		var cookie = document.cookie.match( /(?:^|;\s*)OptanonConsent=([^;]*)/ );
322
323		if ( ! cookie ) {
324			return null;
325		}
326
327		try {
328			var groups = decodeURIComponent( cookie[1] ).match( /groups=([^&]*)/ );
329			return groups && groups[1] ? groups[1] : null;
330		} catch ( e ) {
331			return null;
332		}
333	}
334
335	/**
336	 * Map OneTrust categories onto Consent Mode v2 signals.
337	 *
338	 * Reads either the cookie format ( C0002:1 ) or the OnetrustActiveGroups
339	 * format ( ,C0001,C0002, ) so the default and update commands cannot
340	 * drift apart.
341	 *
342	 * @param {string} groups The category string to read.
343	 * @return {Object} Consent Mode v2 signals.
344	 */
345	function mcConsentSignals( groups ) {
346		var isActive = function( category ) {
347			return -1 !== groups.indexOf( category + ':1' ) ||
348				-1 !== groups.indexOf( ',' + category + ',' );
349		};
350
351		var advertising = isActive( 'C0004' ) ? 'granted' : 'denied';
352
353		return {
354			analytics_storage: isActive( 'C0002' ) ? 'granted' : 'denied',
355			ad_storage: advertising,
356			ad_user_data: advertising,
357			ad_personalization: advertising
358		};
359	}
360
361	function mcUpdateGoogleConsent() {
362		window.gtag( 'consent', 'update', mcConsentSignals( window.OnetrustActiveGroups || '' ) );
363	}
364
365	var mcStoredGroups   = mcStoredConsentGroups();
366	var mcDefaultConsent = mcStoredGroups ? mcConsentSignals( mcStoredGroups ) : {
367		analytics_storage: 'denied',
368		ad_storage: 'denied',
369		ad_user_data: 'denied',
370		ad_personalization: 'denied'
371	};
372
373	mcDefaultConsent.wait_for_update = 1000;
374
375	window.gtag( 'consent', 'default', mcDefaultConsent );
376
377	window.addEventListener( 'OneTrustGroupsUpdated', mcUpdateGoogleConsent );
378
379	if ( window.OnetrustActiveGroups ) {
380		mcUpdateGoogleConsent();
381	}
382</script>
382
383
384<script type="text/javascript">dataLayer.push({"content_type":"non-post","post_id":"non-post"}); var gtmLoaded=true;</script>
384
385<!-- Google Tag Manager -->
386<noscript>
387<iframe data-src="//www.googletagmanager.com/ns.html?id=GTM-WFHFBM" height="0" width="0" class="optanon-category-C0004" style="display:none;visibility:hidden"></iframe></noscript>
388<script type="text/javascript">
389if ( typeof dataLayer[0].gaReferer === 'undefined' ) {
390	var referrer = document.referrer, siteURL = window.location.origin;
391	if ( ! referrer || referrer.indexOf( siteURL ) === 0 ) {
392		dataLayer[0].gaReferer = null;
393	} else {
394		dataLayer[0].gaReferer = referrer;
395	}
396}
397
398dataLayer.push({
399	'gtm.start': new Date().getTime(),
400	event: 'gtm.js'
401});
402</script>
vendor: 1 bytes, line 402
402
403<script async type="text/javascript" src="https://www.googletagmanager.com/gtm.js?id=GTM-WFHFBM"></script>
403<!-- End Google Tag Manager -->
404<!-- Start of HubSpot Embed Code -->
405<script type="text/plain" class="optanon-category-C0004" id="hs-script-loader" async defer src="//js.hs-scripts.com/43837035.js"></script>
405
406<!-- End of HubSpot Embed Code -->
407<meta name="p:domain_verify" content="3a9adbe7c6bf24035a0284a21da2840a"/>
408	</head>
409	<body class="archive tax-mc-tax-vertical term-news term-171017 wp-theme-metrocorp wp-child-theme-metrocorp-bostonmagazine current-site-bostonmagazine">
410	<div class="hat-nav container">
411	<nav class="hat-nav__menu">
412		<ul class="hat-nav__list">
413			<li>
414				<a href="https://www.bostonglobe.com/?p1=HatNav_BoMag" data-track-name="BDCHatNav_BG">The Boston Globe</a>
415			</li>
416			<li>
417				<a href="https://www.boston.com/?p1=HatNav_BoMag" data-track-name="BDCHatNav_BDC">Boston.com</a>
418			</li>
419			<li>
420				<a href="https://www.bostonmagazine.com/?utm_source=bomag&utm_medium=referral&utm_campaign=hatnav_bomag" class="active">Boston Magazine</a>
421			</li>
422			<li>
423				<a href="https://www.boston.com/tag/the-b-side/?p1=HatNav_BoMag" data-track-name="BDCHatNav_BSide">B-Side</a>
424			</li>
425		</ul>
426	</nav>
427</div>
428			<div align="center" data-freestar-ad="__360x585 __1300x500" id="bostonmagazine_ad-reveal" class="gpt-ad">
429	
429<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
430	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_ad-reveal", slotId: "bostonmagazine_ad-reveal" });
431	</script>
431
432	</div><div id="under-reveal"></div><div class="header-navigation-spacer"></div>
433<div class="header-navigation js-header-menu-full" id="js-header-navigation">
434	<div class="container header-navigation-inner">
435		<div class="navigation-logo">
436			<a href="//www.bostonmagazine.com" aria-label="Boston Magazine" >
437				<svg class="mc-icon bostonmagazine-logo" aria-hidden="true"><title>Boston Magazine</title><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-logo"></svg>			</a>
438		</div>
439		<button
440			id="js-mobile-menu-toggle"
441			class="mobile-menu-toggle"
442			aria-hidden="true"
443			aria-label="Toggle navigation menu"
444			aria-expanded="false"
445			aria-controls="js-header-navigation-wrapper"
446		>
447			<svg class="mc-icon hamburger" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-hamburger"></svg>			<svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg>		</button>
448
449		<div class="header-menu-wrapper" id="js-header-navigation-wrapper">
450
451			<div class="header-menu"><ul id="menu-primary-menu" class="menu-header-main"><li id="menu-item-2933157" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2933157"><a href="https://www.bostonmagazine.com/issues/">Magazine</a></li>
452<li id="menu-item-2417140" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2417140"><a href="/find-it-boston-search/">Find It / Boston</a>
453<ul class="sub-menu">
454	<li id="menu-item-2417143" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2417143"><a href="/find-a-doctor/">Doctors</a></li>
455	<li id="menu-item-2417146" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2417146"><a href="/dentists/">Dentists</a></li>
456	<li id="menu-item-2669250" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2669250"><a href="/lawyers/">Lawyers</a></li>
457	<li id="menu-item-2763054" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2763054"><a href="/senior-living/">Senior Living</a></li>
458	<li id="menu-item-2452224" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2452224"><a href="/wedding/">Wedding Experts</a></li>
459	<li id="menu-item-2464168" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2464168"><a href="/private-schools/">Private Schools</a></li>
460	<li id="menu-item-2477508" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2477508"><a href="/home-design/">Home Design Experts</a></li>
461	<li id="menu-item-2511746" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2511746"><a href="/real-estate-agents/">Real Estate Agents</a></li>
462</ul>
463</li>
464<li id="menu-item-2351177" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical current-menu-item menu-item-has-children menu-item-2351177"><a href="https://www.bostonmagazine.com/news" aria-current="page">City Life</a>
465<ul class="sub-menu">
466	<li id="menu-item-2667249" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2667249"><a href="/fashion-style/">Style</a></li>
467	<li id="menu-item-2351199" class="no-children menu-item menu-item-type-custom menu-item-object-custom menu-item-2351199"><a href="/education/">Education</a></li>
468	<li id="menu-item-2429289" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2429289"><a href="/private-schools/">Find a Private School</a></li>
469</ul>
470</li>
471<li id="menu-item-2351186" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-2351186"><a href="https://www.bostonmagazine.com/restaurants">Restaurants</a>
472<ul class="sub-menu">
473	<li id="menu-item-2593122" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2593122"><a href="/best-restaurants-in-boston/">50 Best Restaurants</a></li>
474</ul>
475</li>
476<li id="menu-item-2351180" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vert
476ical menu-item-has-children menu-item-2351180"><a href="https://www.bostonmagazine.com/health">Wellness</a>
477<ul class="sub-menu">
478	<li id="menu-item-2351202" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-2351202"><a href="https://www.bostonmagazine.com/health">Be Well Boston</a></li>
479	<li id="menu-item-2351205" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351205"><a href="/dentists/">Find a Dentist</a></li>
480	<li id="menu-item-2351206" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351206"><a href="/find-a-doctor/">Find a Doctor</a></li>
481</ul>
482</li>
483<li id="menu-item-2456643" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2456643"><a href="/weddings/">Weddings</a>
484<ul class="sub-menu">
485	<li id="menu-item-2593127" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-2593127"><a href="https://www.bostonmagazine.com/weddings">Guides &#038; Advice</a></li>
486	<li id="menu-item-2351247" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351247"><a href="/weddings/2026/01/06/best-of-boston-weddings-2026/">Best of Boston Weddings</a></li>
487	<li id="menu-item-2351214" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351214"><a href="/wedding/">Find a Wedding Expert</a></li>
488	<li id="menu-item-2351244" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351244"><a href="/category/real-weddings/">Real Weddings</a></li>
489	<li id="menu-item-2757961" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2757961"><a href="/bubblybrunch">Bubbly Brunch Event</a></li>
490</ul>
491</li>
492<li id="menu-item-2351189" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-2351189"><a href="https://www.bostonmagazine.com/property">Home &amp; Property</a>
493<ul class="sub-menu">
494	<li id="menu-item-2593129" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-2593129"><a href="https://www.bostonmagazine.com/property">Properties &#038; News</a></li>
495	<li id="menu-item-2477503" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2477503"><a href="/home-design/">Find a Home Design Expert</a></li>
496	<li id="menu-item-2511748" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2511748"><a href="/realestate-agents/">Find a Real Estate Agent</a></li>
497	<li id="menu-item-2351251" class="topics-only menu-item menu-item-type-custom menu-item-object-custom menu-item-2351251"><a href="/tag/home-design">Home Design</a></li>
498	<li id="menu-item-2351253" class="topics-only menu-item menu-item-type-custom menu-item-object-custom menu-item-2351253"><a href="/property/2024/11/14/best-of-boston-home-2025/">Best of Boston Home</a></li>
499</ul>
500</li>
501<li id="menu-item-2351183" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-2351183"><a href="https://www.bostonmagazine.com/arts-entertainment">Things To Do</a>
502<ul class="sub-menu">
503	<li id="menu-item-2351248" class="topics-only menu-item menu-item-type-custom menu-item-object-custom menu-item-2351248"><a href="https://www.bostonmagazine.com/things-to-do/weekend/">Things To Do This Weekend</a></li>
504	<li id="menu-item-2351220" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-2351220"><a href="https://www.bostonmagazine.com/arts-entertainment">Arts &amp; Entertainment</a></li>
505	<li id="menu-item-2351223" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351223"><a href="/events/">Boston magazine Events</a></li>
506	<li id="menu-item-2803594" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2803594"><a href="https://www.bostonmagazine.com/bestofbostonsoiree/">Best of Boston Soiree 2026</a></li>
507</ul>
508</li>
509<li id="menu-item-2351197" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2351197"><a href="/travel/">Travel</a>
510<ul class="sub-menu">
511	<li id="menu-item-2806575" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2806575"><a href="http://bostonmagazine.com/travelawards">New England Travel Awards</a></li>
512</ul>
513</li>
514<li id="menu-item-174761" class="menuBes menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-174761"><a href="/best-of-boston/">Best of Boston</a>
515<ul class="sub-menu">
516	<li id="menu-item-2734635" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2734635"><a href="/best-of-boston/">Latest Winners</a></li>
517</ul>
518</li>
519</ul></div>
520			<div class="header-tablet-elements">
521				<div class="header-subscribe">
522					<div class="thin-line">
523						<span class="screen-reader-text">Subscribe</span>
524						<svg class="mc-icon bostonmagazine-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-subscribe"></svg>					</div>
525					<ul id="menu-top-left" class="menu-header-subscribe"><li id="menu-item-2351233" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351233"><a href="https://w1.buysub.com/pubs/PB/BOS/BOS_sub.jsp?cds_page_id=270289&#038;cds_mag_code=BOS&#038;id=1732211763015&#038;lsid=43261101552083486&#038;vid=6">ALL ACCESS</a></li>
526<li id="menu-item-2655360" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2655360"><a href="/newsletters">NEWSLETTERS</a></li>
527<li id="menu-item-2351235" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351235"><a href="https://bostonglobemedia.cloud.buysub.com">MY ACCOUNT</a></li>
528</ul>				</div>
529
530				<div class="header-social">
531					<div class="thin-line">
532						<span class="screen-reader-text">Follow</span>
533						<svg class="mc-icon bostonmagazine-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-follow"></svg>					</div>
534					<ul id="menu-social" class="menu-header-social"><li id="menu-item-2351226" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351226"><a target="_blank" href="https://www.facebook.com/bostonmagazine"><span class="screen-reader-text">Facebook</span></a></li>
535<li id="menu-item-2351228" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351228"><a target="_blank" href="https://www.instagram.com/bostonmagazine/"><span class="screen-reader-text">Instagram</span></a></li>
536<li id="menu-item-2351231" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351231"><a target="_blank" href="https://www.twitter.com/bostonmagazine"><span class="screen-reader-text">Twitter</span></a></li>
537</ul>				</div>
538			</div>
539
540		</div>
541					<div class="header-search">
542				<div class="search-form-wrapper" id="js-search-form-wrapper" aria-hidden="true">
543					<form role="search" method="get" class="search-form" action="https://www.bostonmagazine.com/">
544	<label>
545		<span class="screen-reader-text">Search for:</span>
546		<input type="search" class="search-field"
547			placeholder="Search …"
548			value="" name="s"
549			title="Search for:" />
550	</label>
551	<button type="submit">
552		<svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-icon-search"></svg>		<span class="screen-reader-text">Search</span>
553	</button>
554</form>
555				</div>
556				<button id="js-toggle-search" aria-expanded="false" aria-controls="js-search-form-wrapper">
557					<svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-icon-search"></svg>					<svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg>				</button>
558			</div>
559			</div>
560</div>
561		</div>
562		<header class="site-header" role="banner" id="js-header">
563
564			<div class="site-header-inner container">
565
566				<div class="header-social">
567					<div class="thin-line">
568						<span class="screen-reader-text">Follow</span>
569						<svg class="mc-icon bostonmagazine-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-follow"></svg>					</div>
570					<ul id="menu-social-1" class="menu-header-social"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351226"><a target="_blank" href="https://www.facebook.com/bostonmagazine"><span class="screen-reader-text">Facebook</span></a></li>
571<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351228"><a target="_blank" href="https://www.instagram.com/bostonmagazine/"><span class="screen-reader-text">Instagram</span></a></li>
572<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351231"><a target="_blank" href="https://www.twitter.com/bostonmagazine"><span class="screen-reader-text">Twitter</span></a></li>
573</ul>				</div>
574
575				<div class="header-logo">
576	<div itemscope itemtype="https://schema.org/Organization">	<a href="https://www.bostonmagazine.com/news" aria-label="Boston Magazine">
577		<svg class="mc-icon bostonmagazine-section-news" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-section-news"></svg>	</a>
578	<span class="section-front-tagline"></span></div></div>
579
580				<div class="header-subscribe">
581					<div class="thin-line">
582						<span class="screen-reader-text">Subscribe</span>
583						<svg class="mc-icon bostonmagazine-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-subscribe"></svg>					</div>
584					<ul id="menu-top-left-1" class="menu-header-subscribe"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351233"><a href="https://w1.buysub.com/pubs/PB/BOS/BOS_sub.jsp?cds_page_id=270289&#038;cds_mag_code=BOS&#038;id=1732211763015&#038;lsid=43261101552083486&#038;vid=6">ALL ACCESS</a></li>
585<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2655360"><a href="/newsletters">NEWSLETTERS</a></li>
586<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351235"><a href="https://bostonglobemedia.cloud.buysub.com">MY ACCOUNT</a></li>
587</ul>				</div>
588
589			</div>
590		</header>
591			
592		<div class="mobile-section-front">
593				<a href="https://www.bostonmagazine.com/news">
594			<svg class="mc-icon bostonmagazine-section-news" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-section-news"></svg>		</a>
595		<span class="section-front-tagline">
596					</span>
597	</div>
598	
599			<div class="header-navigation-secondary container"><ul id="menu-primary-menu-1" class="menu-topics"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2933157"><a href="https://www.bostonmagazine.com/issues/">Magazine</a></li>
600<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2417140"><a href="/find-it-boston-search/">Find It / Boston</a>
601<ul class="sub-menu">
602	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2417143"><a href="/find-a-doctor/">Doctors</a></li>
603	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2417146"><a href="/dentists/">Dentists</a></li>
604	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2669250"><a href="/lawyers/">Lawyers</a></li>
605	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2763054"><a href="/senior-living/">Senior Living</a></li>
606	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2452224"><a href="/wedding/">Wedding Experts</a></li>
607	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2464168"><a href="/private-schools/">Private Schools</a></li>
608	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2477508"><a href="/home-design/">Home Design Experts</a></li>
609	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2511746"><a href="/real-estate-agents/">Real Estate Agents</a></li>
610</ul>
611</li>
612<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vert
612ical current-menu-item menu-item-has-children menu-item-2351177"><a href="https://www.bostonmagazine.com/news" aria-current="page">City Life</a>
613<ul class="sub-menu">
614	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2667249"><a href="/fashion-style/">Style</a></li>
615	<li class="no-children menu-item menu-item-type-custom menu-item-object-custom menu-item-2351199"><a href="/education/">Education</a></li>
616	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2429289"><a href="/private-schools/">Find a Private School</a></li>
617</ul>
618</li>
619<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-2351186"><a href="https://www.bostonmagazine.com/restaurants">Restaurants</a>
620<ul class="sub-menu">
621	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2593122"><a href="/best-restaurants-in-boston/">50 Best Restaurants</a></li>
622</ul>
623</li>
624<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-2351180"><a href="https://www.bostonmagazine.com/health">Wellness</a>
625<ul class="sub-menu">
626	<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-2351202"><a href="https://www.bostonmagazine.com/health">Be Well Boston</a></li>
627	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351205"><a href="/dentists/">Find a Dentist</a></li>
628	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351206"><a href="/find-a-doctor/">Find a Doctor</a></li>
629</ul>
630</li>
631<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2456643"><a href="/weddings/">Weddings</a>
632<ul class="sub-menu">
633	<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-2593127"><a href="https://www.bostonmagazine.com/weddings">Guides &#038; Advice</a></li>
634	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351247"><a href="/weddings/2026/01/06/best-of-boston-weddings-2026/">Best of Boston Weddings</a></li>
635	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351214"><a href="/wedding/">Find a Wedding Expert</a></li>
636	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351244"><a href="/category/real-weddings/">Real Weddings</a></li>
637	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2757961"><a href="/bubblybrunch">Bubbly Brunch Event</a></li>
638</ul>
639</li>
640<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-2351189"><a href="https://www.bostonmagazine.com/property">Home &amp; Property</a>
641<ul class="sub-menu">
642	<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-2593129"><a href="https://www.bostonmagazine.com/property">Properties &#038; News</a></li>
643	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2477503"><a href="/home-design/">Find a Home Design Expert</a></li>
644	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2511748"><a href="/realestate-agents/">Find a Real Estate Agent</a></li>
645	<li class="topics-only menu-item menu-item-type-custom menu-item-object-custom menu-item-2351251"><a href="/tag/home-design">Home Design</a></li>
646	<li class="topics-only menu-item menu-item-type-custom menu-item-object-custom menu-item-2351253"><a href="/property/2024/11/14/best-of-boston-home-2025/">Best of Boston Home</a></li>
647</ul>
648</li>
649<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-2351183"><a href="https://www.bostonmagazine.com/arts-entertainment">Things To Do</a>
650<ul class="sub-menu">
651	<li class="topics-only menu-item menu-item-type-custom menu-item-object-custom menu-item-2351248"><a href="https://www.bostonmagazine.com/things-to-do/weekend/">Things To Do This Weekend</a></li>
652	<li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vert
652ical menu-item-2351220"><a href="https://www.bostonmagazine.com/arts-entertainment">Arts &amp; Entertainment</a></li>
653	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351223"><a href="/events/">Boston magazine Events</a></li>
654	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2803594"><a href="https://www.bostonmagazine.com/bestofbostonsoiree/">Best of Boston Soiree 2026</a></li>
655</ul>
656</li>
657<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2351197"><a href="/travel/">Travel</a>
658<ul class="sub-menu">
659	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2806575"><a href="http://bostonmagazine.com/travelawards">New England Travel Awards</a></li>
660</ul>
661</li>
662<li class="menuBes menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-174761"><a href="/best-of-boston/">Best of Boston</a>
663<ul class="sub-menu">
664	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2734635"><a href="/best-of-boston/">Latest Winners</a></li>
665</ul>
666</li>
667</ul></div>	
668			<div style="width:1px;height:1px;margin:-1px 0 0 0;padding:0;display:block;">
669			<div align="center" data-freestar-ad="" id="bostonmagazine_skin" class="gpt-ad">
670	
670<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
671	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_skin", slotId: "bostonmagazine_skin" });
672	</script>
672
673	</div>		</div>
674	
675	<div align="center" data-freestar-ad="" id="bostonmagazine_interstitial" class="gpt-ad out-of-page">
676	
676<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
677	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_interstitial", slotId: "bostonmagazine_interstitial" });
678	</script>
678
679	</div><div align="center" data-freestar-ad="" id="bostonmagazine_bottom-anchor" class="gpt-ad out-of-page">
680	
680<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
681	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_bottom-anchor", slotId: "bostonmagazine_bottom-anchor" });
682	</script>
682
683	</div>
684
685	<div align="center" data-freestar-ad="__320x100 __970x250" id="bostonmagazine_banner-1" class="gpt-ad advertisement container">
686	
686<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
687	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_banner", slotId: "bostonmagazine_banner-1" });
688	</script>
688
689	</div>
690	<div class="list-post" style="display:none" aria-hidden="true">
691	<a href="https://www.bostonmagazine.com/scrapertrap" class="post-image-link"><img width="400" height="250" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" class="attachment-image-list size-image-list wp-post-image" alt=""></a>
692
693	<div class="list-post-card">
694		<a href="https://www.bostonmagazine.com/scrapertrap" class="post-slug">I'm a scraper</a>
695		<div class="post-title">
696			<a href="https://www.bostonmagazine.com/scrapertrap">This search result is here to prevent scraping</a>
697		</div>
698		<div class="post-excerpt">
699			<p>If you're a human and see this, please ignore it. If you're a scraper, please click the link below :-)
700  Note that clicking the link below will block access to this site for 24 hours.</p>
701		</div>
702		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/scrapertrap" class="byline">I'm a scraper</a></span>
703	</div>
704</div>
705
706		<div class="content-with-sidebar">
707		<div class="featured-post">
708
709			<a href="https://www.bostonmagazine.com/news/best-public-high-schools-boston-2026-2027-chart/" class="post-image-link">
710				<img width="300" height="200" src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-300x200.jpg" class="attachment-thumbnail size-thumbnail" alt="Stone archway above a doorway with the words &quot;PUBLIC SCHOOL&quot; carved into it, set in a brick building with three white-framed windows above." sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 969px) calc( ( ( 100vw - 30px ) / 3 * 2 ) - 35px ), 605px" srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-600x400.jpg 600w" data-no-lazy="true" decoding="async" fetchpriority="high" />			</a>
711			<div class="featured-post-card">
712				<a href="https://www.bostonmagazine.com/category/news/" class="post-slug">News</a>				<h2 class="post-title">
713					<a href="https://www.bostonmagazine.com/news/best-public-high-schools-boston-2026-2027-chart/">
714						The Top Public High Schools in Greater Boston, Ranked for 2026					</a>
715				</h2>
716				<div class="post-excerpt">
717					<p>
718						<p><span class="s1">We crunched the numbers to come up with our guide to the region’s top-performing schools. Does your town make the grade?</span></p>
719					</p>
720				</div>
721			</div>
722		</div>
723		<div class="trending-widget">
724	<div align="center" data-freestar-ad="__300x150 __300x150" id="bostonmagazine_toprailsponsor-1" class="gpt-ad toprail-bewell">
725	
725<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
726	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_toprailsponsor", slotId: "bostonmagazine_toprailsponsor-1" });
727	</script>
727
728	</div>
729			<h2 class="title-line">Trending</h2>
730		
731		<ol>
732							<li>
733					<h3 class="trending-post-title post-title">
734						<a href="https://www.bostonmagazine.com/news/best-public-high-schools-boston-2026-2027-chart/">
735							The Top Public High Schools in Greater Boston, Ranked for 2026						</a>
736					</h3>
737				</li>
738								<li>
739					<h3 class="trending-post-title post-title">
740						<a href="https://www.bostonmagazine.com/news/2026/09/13/boston-greek-restaurant-feud-lawsuit-xenia-krasi/">
741							Inside Demetri Tsolakis&#8217;s Legal Battle With His Former Boss						</a>
742					</h3>
743				</li>
744								<li>
745					<h3 class="trending-post-title post-title">
746						<a href="https://www.bostonmagazine.com/news/2026/09/23/jonathan-tucker-boston/">
747							Jonathan Tucker Would Like a Word With TD Garden&#8217;s Owner						</a>
748					</h3>
749				</li>
750								<li>
751					<h3 class="trending-post-title post-title">
752						<a href="https://www.bostonmagazine.com/news/2026/09/20/networking-after-50-awkward/">
753							A Wildly Inefficient Man&#8217;s Guide to Networking After 50						</a>
754					</h3>
755				</li>
756								<li>
757					<h3 class="trending-post-title post-title">
758						<a href="https://www.bostonmagazine.com/news/2026/09/01/is-college-still-worth-it/">
759							Is College in Boston Still Worth It?						</a>
760					</h3>
761				</li>
762						</ol>
763			
764</div>
765
766	</div>
767	<div class="container">
768		<hr class="double">
769		<div class="grid-content">
770									<div class="grid-post">
771							<a href="https://www.bostonmagazine.com/news/2026/09/01/is-college-still-worth-it/" class="post-image-link">
772								<img width="300" height="200" class="attachment-thumbnail size-thumbnail lazyload" alt="A blue graduation cap with a tassel, featuring the words &quot;NOW WHAT?&quot; written in white on the top, set against a white background with the word &quot;Boston&quot; partially visible in large blue letters behind it." decoding="async" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-300x200.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-600x400.jpg 600w" data-sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 969px) calc( ( ( 100vw - 30px ) / 3 ) - 35px ), 605px" />							</a>
773							<div class="grid-post-card">
774								<a href="https://www.bostonmagazine.com/category/longform/" class="post-slug">Longform</a>								<h2 class="post-title">
775									<a href="https://www.bostonmagazine.com/news/2026/09/01/is-college-still-worth-it/">
776										The Great College Reckoning: Is Higher Education Still Worth It?									</a>
777								</h2>
778							</div>
779						</div>
780												<div class="grid-post">
781							<a href="https://www.bostonmagazine.com/education/2026/08/09/private-school-admissions/" class="post-image-link">
782								<img width="300" height="200" class="attachment-thumbnail size-thumbnail lazyload" alt="" decoding="async" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-300x200.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-600x400.jpg 600w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat.jpg 900w" data-sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 969px) calc( ( ( 100vw - 30px ) / 3 ) - 35px ), 605px" />							</a>
783							<div class="grid-post-card">
784								<a href="https://www.bostonmagazine.com/category/opinion/personal-essay/" class="post-slug">Personal Essay</a>								<h2 class="post-title">
785									<a href="https://www.bostonmagazine.com/education/2026/08/09/private-school-admissions/">
786										What It Actually Takes to Apply to Private School									</a>
787								</h2>
788							</div>
789						</div>
790												<div class="grid-post">
791							<a href="https://www.bostonmagazine.com/news/top-hospitals-greater-boston/" class="post-image-link">
792								<img width="300" height="200" class="attachment-thumbnail size-thumbnail lazyload" alt="" decoding="async" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-300x200.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-600x400.jpg 600w" data-sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 969px) calc( ( ( 100vw - 30px ) / 3 ) - 35px ), 605px" />							</a>
793							<div class="grid-post-card">
794								<a href="https://www.bostonmagazine.com/category/guides/" class="post-slug">Guides</a>								<h2 class="post-title">
795									<a href="https://www.bostonmagazine.com/news/top-hospitals-greater-boston/">
796										Greater Boston&#8217;s Top Hospitals for Surgery, By Procedure and Specialty									</a>
797								</h2>
798							</div>
799						</div>
800								</div>
801
802					<hr class="solid">
803		
804	</div>
805
806	
807	
808	<div class="container find-a-pro-container">
809	<div class="find-a-pro js-opened bdocs-open" id="js-find-a-pro">
810		<h2 class="find-a-pro-title h2-dirmod-boston"><span><em>Find It Boston</em>What you need, when you need it.</span></h2>
811		<div class="find-a-pro-inner">
812			<ul class="ul-bostonmagazine">
813				<li><button class="js-directory-toggle" aria-expanded="true" aria-controls="js-find-a-pro-overlay-9"><span class="button">Doctors</span></button>						<div class="find-a-pro-overlay js-expanded" id="js-find-a-pro-overlay-9" aria-hidden="false">
814						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
815
816						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-9" aria-expanded="true"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
817						<div class="js-directory-form">
818<form id="directory-search-form_9" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/find-a-doctor/" method="get">
819
820						<div class="directory-search-form__search-input s text">
821														<label class="search-input-label" for="s_9"><span class="visually-hidden">Search For...</span>
822				
823				<input id="s_9" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search For..." autocomplete="off"/>									</label>
824				
825			</div>					<div class="directory-search-form__search-input cat select">
826														<label class="search-input-label" for="cat_9"><span class="visually-hidden">Specialty</span>
827				
828				<select name="cat[]" id="cat_9" class="postform header-search-select header-search-select--cat"><option value="0" selected="">Specialty</option><option value="370">Addiction Psychiatry</option><option value="376">Adolescent Medicine</option><option value="325">Allergy &amp; Immunology</option><option value="1254">Anesthesiology</option><option value="1246">Anti-Aging Regenerative Medicine</option><option value="1653">Bariatric Surgery</option><option value="408">Cardiac Electrophysiology</option><option value="423">Cardiovascular Disease</option><option value="437">Child &amp; Adolescent Psychiatry</option><option value="442">Child Neurology</option><option value="445">Clinical Genetics</option><option value="460">Colon &amp; Rectal Surgery</option><option value="23">Dermatology</option><option value="478">Developmental-Behavioral Pediatrics</option><option value="1222">Diabetes &amp; Metabolism</option><option value="480">Diagnostic Radiology</option><option value="1261">Emergency Medicine</option><option value="1219">Endocrinology</option><option value="1264">Facial Plastic Surgery/Otolaryngology</option><option value="114">Family Medicine</option><option value="1234">Female Hair Loss</option><option value="496">Gastroenterology</option><option value="499">Geriatric Medicine</option><option value="502">Geriatric Psychiatry</option><option value="505">Gynecologic Oncology</option><option value="512">Hand Surgery</option><option value="513">Hematology</option><option value="866">Hospice &amp; Palliative Medicine</option><option value="515">Infectious Disease</option><option value="1243">Integrative Gastroenterology</option><option value="54">Internal Medicine</option><option value="516">Interventional Cardiology</option><option value="517">Maternal &amp; Fetal Medicine</option><option value="520">Medical Oncology</option><option value="839">Neonatal-Perinatal Medicine</option><option value="529">Nephrology</option><option value="533">Neurological Surgery</option><option value="536">Neurology</option><option value="538">Neuroradiology</option><option value="760">Nuclear Medicine</option><option value="215">Obstetrics &amp; Gynecology</option><option value="540">Ophthalmology</option><option value="971">Orthopedic Surgery</option><option value="1737">Other</option><option value="547">Otolaryngology</option><option value="549">Pain Medicine</option><option value="78">Pathology</option><option value="1014">
828Pediatric Allergy &amp; Immunology</option><option value="1265">Pediatric Anesthesiology</option><option value="553">Pediatric Cardiology</option><option value="1270">Pediatric Critical Care Medicine</option><option value="1252">Pediatric Dermatology</option><option value="1253">Pediatric Emergency Medicine</option><option value="555">Pediatric Endocrinology</option><option value="556">Pediatric Gastroenterology</option><option value="558">Pediatric Hematology-Oncology</option><option value="1646">Pediatric Infectious Diseases</option><option value="560">Pediatric Nephrology</option><option value="1648">Pediatric Neurological Surgery</option><option value="1649">Pediatric Orthopedic Surgery</option><option value="563">Pediatric Otolaryngology</option><option value="565">Pediatric Pulmonology</option><option value="1659">Pediatric Radiology</option><option value="1656">Pediatric Rehabilitation Medicine</option><option value="568">Pediatric Rheumatology</option><option value="571">Pediatric Surgery</option><option value="576">Pediatric Urology</option><option value="1228">
828Pediatrics</option><option value="582">Physical Medicine &amp; Rehabilitation</option><option value="183">Plastic Surgery</option><option value="1267">Podiatry</option><option value="589">Psychiatry</option><option value="592">Pulmonary Disease</option><option value="594">Radiation Oncology</option><option value="963">Reproductive Endocrinology/Infertility</option><option value="597">Rheumatology</option><option value="603">Sleep Medicine</option><option value="1000">Sports Medicine</option><option value="178">Surgery</option><option value="1647">Surgical Oncology</option><option value="608">Thoracic &amp; Cardiac Surgery</option><option value="1644">Thoracic Surgery</option><option value="996">Urogynecology/Female Pelvic Medicine &amp; Reconstructive Surgery</option><option value="619">Urology</option><option value="624">Vascular &amp; Interventional Radiology</option><option value="627">Vascular Surgery</option></select>									</label>
829				
830			</div>			
831	
832	<input class="directory-search-form__submit-button" type="submit" value="Find" />
833
834	<a href="https://www.bostonmagazine.com/find-a-doctor" class="directory-search-form__see-all">See All</a>
835</form>
836</div><div class="bdoctors-search-sponsor-hm" id="hmbg-bdocs">
837	<a href="https://www.massgeneralbrigham.org/" id="find-mme-specialist" target="_blank">
838		<span class="search-sponsor-cta-text">Find a specialist Today</span>
839		<em>Brought to you by</em>
840		<img src="https://www.bostonmagazine.com/wp-content/uploads/sites/2/2020/12/300x250-mgb.png" alt="Mass General Brigham - logo"/>
841	</a>
842</div>
843							</div>
844						</div>
845						<!-- .find-a-pro-overlay -->
846						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-28"><span class="button">Weddings</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-28" aria-hidden="true">
847						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
848
849						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-28" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
850						<div class="js-directory-form">
851<form id="directory-search-form_28" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/wedding/" method="get">
852
853	
854		<div class="directory-search-form__search-input">
855						<label class="search-input-label" for="search-input_28">
856				<span class="visually-hidden">
857					Search for...				</span>
858				<input id="search-input_28" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search for..."/>
859		</div>
860
861	
862	
863	<input class="directory-search-form__submit-button" type="submit" value="Find" />
864
865	<a href="https://www.bostonmagazine.com/wedding" class="directory-search-form__see-all">See All</a>
866</form>
867</div>							</div>
868						</div>
869						<!-- .find-a-pro-overlay -->
870						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-19"><span class="button">Dentists</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-19" aria-hidden="true">
871						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
872
873						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-19" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
874						<div class="js-directory-form">
875<form id="directory-search-form_19" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/dentists/" method="get">
876
877						<div class="directory-search-form__search-input cat select">
878														<label class="search-input-label" for="cat_19"><span class="visually-hidden">Specialty</span>
879				
880				<select name="cat[]" id="cat_19" class="postform header-search-select header-search-select--cat"><option value="0" selected="">Specialty</option><option value="2454">Airway Dentistry</option><option value="87">Cosmetic Dentistry</option><option value="2393">Dental Anesthesiology</option><option value="2098">Dental Implants</option><option value="38">Endodontics</option><option value="2448">Functional Wellness</option><option value="29">General Dentistry</option><option value="2103">Implant Dentistry</option><option value="809">Oral and Maxillofacial Surgery</option><option value="2101">Oral Medicine</option><option value="2400">Oral Pathology</option><option value="99">Orthodontics</option><option value="115">
880Pediatric Dentistry</option><option value="68">Periodontics</option><option value="336">Prosthodontics</option><option value="2451">Sleep Dentistry</option><option value="2460">TMD</option><option value="2457">TMJ</option></select>									</label>
881				
882			</div>					<div class="directory-search-form__search-input s text">
883														<label class="search-input-label" for="s_19"><span class="visually-hidden">Search For...</span>
884				
885				<input id="s_19" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search For..." autocomplete="off"/>									</label>
886				
887			</div>			
888	
889	<input class="directory-search-form__submit-button" type="submit" value="Find" />
890
891	<a href="https://www.bostonmagazine.com/dentists" class="directory-search-form__see-all">See All</a>
892</form>
893</div>							</div>
894						</div>
895						<!-- .find-a-pro-overlay -->
896						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-43"><span class="button">Schools</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-43" aria-hidden="true">
897						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
898
899						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-43" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
900						<div class="js-directory-form">
901<form id="directory-search-form_43" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/private-schools/" method="get">
902
903	
904		<div class="directory-search-form__search-input">
905						<label class="search-input-label" for="search-input_43">
906				<span class="visually-hidden">
907					Search for...				</span>
908				<input id="search-input_43" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search for..."/>
909		</div>
910
911	
912	
913	<input class="directory-search-form__submit-button" type="submit" value="Find" />
914
915	<a href="https://www.bostonmagazine.com/private-schools" class="directory-search-form__see-all">See All</a>
916</form>
917</div>							</div>
918						</div>
919						<!-- .find-a-pro-overlay -->
920						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-47"><span class="button">Home Design</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-47" aria-hidden="true">
921						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
922
923						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-47" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
924						<div class="js-directory-form">
925<form id="directory-search-form_47" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/home-design/" method="get">
926
927	
928		<div class="directory-search-form__search-input">
929						<label class="search-input-label" for="search-input_47">
930				<span class="visually-hidden">
931					Search for...				</span>
932				<input id="search-input_47" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search for..."/>
933		</div>
934
935	
936	
937	<input class="directory-search-form__submit-button" type="submit" value="Find" />
938
939	<a href="https://www.bostonmagazine.com/home-design" class="directory-search-form__see-all">See All</a>
940</form>
941</div>							</div>
942						</div>
943						<!-- .find-a-pro-overlay -->
944						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-51"><span class="button">Real Estate</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-51" aria-hidden="true">
945						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
946
947						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-51" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
948						<div class="js-directory-form">
949<form id="directory-search-form_51" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/real-estate-agents/" method="get">
950
951	
952		<div class="directory-search-form__search-input">
953						<label class="search-input-label" for="search-input_51">
954				<span class="visually-hidden">
955					Search for...				</span>
956				<input id="search-input_51" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search for..."/>
957		</div>
958
959	
960	
961	<input class="directory-search-form__submit-button" type="submit" value="Find" />
962
963	<a href="https://www.bostonmagazine.com/real-estate-agents" class="directory-search-form__see-all">See All</a>
964</form>
965</div>							</div>
966						</div>
967						<!-- .find-a-pro-overlay -->
968						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-67"><span class="button">Lawyers</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-67" aria-hidden="true">
969						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
970
971						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-67" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
972						<div class="js-directory-form">
973<form id="directory-search-form_67" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/lawyers/" method="get">
974
975						<div class="directory-search-form__search-input cat select">
976														<label class="search-input-label" for="cat_67"><span class="visually-hidden">Specialty</span>
977				
978				<select name="cat[]" id="cat_67" class="postform header-search-select header-search-select--cat"><option value="0" selected="">Specialty</option><option value="127">Antitrust Law</option><option value="102">Appellate Law</option><option value="117">Arbitration And Mediation</option><option value="161">Attorneys for Nonprofits</option><option value="143">Aviation</option><option value="115">Banking And Financial</option><option value="88">Bankruptcy And Workout</option><option value="122">Business Law</option><option value="79">Civil Law Litigation</option><option value="50">Civil Rights</option><option value="47">Class Action</option><option value="105">Commercial Litigation</option><option value="99">Construction</option><option value="164">Consumer Debt</option><option value="84">Corporate Counsel</option><option value="31">Corporate Law</option><option value="55">
978Criminal Defense</option><option value="23">Criminal Defense/White Collar</option><option value="107">Education</option><option value="57">Elder Law</option><option value="136">Eminent Domain</option><option value="315">Energy/Oil and Gas</option><option value="320">Family Law</option><option value="63">First Amendment and Media</option><option value="167">Gaming Law</option><option value="128">Government And Administrative</option><option value="159">Healthcare Law</option><option value="93">Immigration Law</option><option value="110">Insurance</option><option value="87">Intellectual Property Rights</option><option value="341">International Law</option><option value="96">Labor And Employment</option><option value="317">Land Use/Environmental</option><option value="155">Medical Malpractice (Defense)</option><option value="153">Medical Malpractice (Plaintiff)</option><option value="40">Personal Injury</option><option value="116">Product Liability</option><option value="158">Professional Malpractice (Non-Medical Defense)</option><option value="337">Real Estate (Commercial)</option><option value="340">Real Estate (Residential)</option><option value="90">Securities Law</option><option value="137">Sports Law</option><option value="71">Tax Law</option><option value="162">Technology/Virtual</option><option value="45">Trusts and Estates</option><option value="62">Whistleblowers</option><option value="168">Workers&#039; Compensation</option></select>									</label>
979				
980			</div>					<div class="directory-search-form__search-input s text">
981														<label class="search-input-label" for="s_67"><span class="visually-hidden">Search</span>
982				
983				<input id="s_67" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search" autocomplete="off"/>									</label>
984				
985			</div>			
986	
987	<input class="directory-search-form__submit-button" type="submit" value="Find" />
988
989	<a href="https://www.bostonmagazine.com/lawyers" class="directory-search-form__see-all">See All</a>
990</form>
991</div><div class="bdoctors-search-sponsor-hm" id="hmbg-bdocs">
992	<a href="https://www.rubinrudman.com/2024-boston-magazines-top-lawyers-list/?utm_source=bostonmagazine&utm_campaign=findit-lawyers&utm_term=dec2024" id="find-mme-specialist" target="_blank">
993		<span class="search-sponsor-cta-text">Find a lawyer Today</span>
994		<em>Brought to you by</em>
995		<img src="https://www.bostonmagazine.com/wp-content/uploads/sites/2/2024/12/rubin-rudman-homepage-placement.png" id="logo-lawyers" alt="Rubin and Rudman - logo"/>
996	</a>
997</div>
998							</div>
999						</div>
1000						<!-- .find-a-pro-overlay -->
1001						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-69"><span class="button">Mortgages</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-69" aria-hidden="true">
1002						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
1003
1004						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-69" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
1005						<div class="js-directory-form">
1006<form id="directory-search-form_69" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/mortgage-lenders/" method="get">
1007
1008	
1009		<div class="directory-search-form__search-input">
1010						<label class="search-input-label" for="search-input_69">
1011				<span class="visually-hidden">
1012					Search for...				</span>
1013				<input id="search-input_69" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search for..."/>
1014		</div>
1015
1016	
1017	
1018	<input class="directory-search-form__submit-button" type="submit" value="Find" />
1019
1020	<a href="https://www.bostonmagazine.com/mortgage-lenders" class="directory-search-form__see-all">See All</a>
1021</form>
1022</div>							</div>
1023						</div>
1024						<!-- .find-a-pro-overlay -->
1025						</li><li><button class="js-directory-toggle" aria-expanded="false" aria-controls="js-find-a-pro-overlay-74"><span class="button">Senior Living</span></button>						<div class="find-a-pro-overlay" id="js-find-a-pro-overlay-74" aria-hidden="true">
1026						<div class="find-a-pro-overlay-inner" id="find-pro-inner-bostonmagazine">
1027
1028						<button class="js-close-directory-button" aria-controls="js-find-a-pro-overlay-74" aria-expanded="false"><svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-close"></svg><span class="screen-reader-text">Close form</span></button>
1029						<div class="js-directory-form">
1030<form id="directory-search-form_74" class="directory-search-form" role="search" autocomplete="off" action="https://www.bostonmagazine.com/senior-living/" method="get">
1031
1032						<div class="directory-search-form__search-input s text">
1033														<label class="search-input-label" for="s_74"><span class="visually-hidden">Search For...</span>
1034				
1035				<input id="s_74" class="directory-search-form__search-text-field" type="text" name="s" value="" placeholder="Search For..." autocomplete="off"/>									</label>
1036				
1037			</div>					<div class="directory-search-form__search-input cat select">
1038														<label class="search-input-label" for="cat_74"><span class="visually-hidden">Category</span>
1039				
1040				<select name="cat[]" id="cat_74" class="postform header-search-select header-search-select--cat"><option value="0" selected="">Category</option><option value="140">Assisted Living</option><option value="139">Home Healthcare</option><option value="21">Independent Living</option><option value="122">Memory Care</option><option value="182">Personal Care</option></select>									</label>
1041				
1042			</div>			
1043	
1044	<input class="directory-search-form__submit-button" type="submit" value="Find" />
1045
1046	<a href="https://www.bostonmagazine.com/senior-living" class="directory-search-form__see-all">See All</a>
1047</form>
1048</div>							</div>
1049						</div>
1050						<!-- .find-a-pro-overlay -->
1051						</li>			</ul>
1052		</div>
1053	</div>
1054</div>
1055
1056	<div align="center" data-freestar-ad="__320x100 __970x250" id="bostonmagazine_banner-2" class="gpt-ad advertisement container">
1057	
1057<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1058	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_banner", slotId: "bostonmagazine_banner-2" });
1059	</script>
1059
1060	</div>
1061	<div class="container">
1062	<h2 class="title-line">Latest Stories</h2>	<div class="content-with-sidebar">
1063
1064		<div class="list-content">
1065			<div class="list-post">
1066
1067	<a href="https://www.bostonmagazine.com/arts-entertainment/2026/09/23/jonathan-tucker-boston/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_hub_web_leadcrop-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_hub_web_leadcrop-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_hub_web_leadcrop-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_hub_web_leadcrop-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_hub_web_leadcrop-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1068	<div class="list-post-card">
1069		<a href="https://www.bostonmagazine.com/category/qa/" class="post-slug">Q&amp;A</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/arts-entertainment/2026/09/23/jonathan-tucker-boston/"><p>Jonathan Tucker Is Very Good at Playing Cops. He&#8217;s Also Being Sued Over a Weed Store.</p></a></h2>
1070		<div class="post-excerpt">
1071			<p>
1072			<p>The Charlestown native danced with Boston Ballet as a kid and currently plays a Boston police officer on Netflix’s <em>
1072I Will Find You</em>. His local cannabis dispensaries are also going to court over their name. He’d like to talk about the last one.</p>
1073</p>
1074		</div>
1075		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/jonathan-soroff/" class="byline">Jonathan Soroff</a></span>	</div>
1076</div>
1077<div class="list-post">
1078
1079	<a href="https://www.bostonmagazine.com/news/2026/09/20/networking-after-50-awkward/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Boston_OldNetwork_Finishfeat-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Boston_OldNetwork_Finishfeat-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Boston_OldNetwork_Finishfeat-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Boston_OldNetwork_Finishfeat-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Boston_OldNetwork_Finishfeat-600x400.jpg 600w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Boston_OldNetwork_Finishfeat.jpg 900w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1080	<div class="list-post-card">
1081		<a href="https://www.bostonmagazine.com/category/opinion/personal-essay/" class="post-slug">Personal Essay</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/09/20/networking-after-50-awkward/"><p>A Wildly Inefficient Man’s Guide to Networking</p></a></h2>
1082		<div class="post-excerpt">
1083			<p>
1084			<p>The career coach said it’s never too late to reconnect with colleagues. Our columnist, 30-plus years into his professional life, decided to find out.</p>
1085</p>
1086		</div>
1087		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/steve-calechman/" class="byline">Steve Calechman</a></span>	</div>
1088</div>
1089<div class="list-post">
1090
1091	<a href="https://www.bostonmagazine.com/news/2026/09/13/boston-greek-restaurant-feud-lawsuit-xenia-krasi/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_fea_greekfeud_web_leadcrop-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_fea_greekfeud_web_leadcrop-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_fea_greekfeud_web_leadcrop-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_fea_greekfeud_web_leadcrop-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_fea_greekfeud_web_leadcrop-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1092	<div class="list-post-card">
1093		<a href="https://www.bostonmagazine.com/category/longform/" class="post-slug">Longform</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/09/13/boston-greek-restaurant-feud-lawsuit-xenia-krasi/"><p>Inside Boston&#8217;s Great Greek Restaurant Feud</p></a></h2>
1094		<div class="post-excerpt">
1095			<p>
1096			<p>George Aboujaoude hired Demetri Tsolakis, and together they built one of the Seaport’s first great restaurants. Then Tsolakis went out on his own and built one of the best Greek restaurant groups in America. Now they’re battling in court—and neither of them is backing down.</p>
1097</p>
1098		</div>
1099		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/wyndham-lewis/" class="byline">Wyndham Lewis</a></span>	</div>
1100</div>
1101<div align="center" data-freestar-ad="__336x280 __605x271" id="bostonmagazine_native_river-0" class="gpt-ad native-river">
1102	
1102<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1103	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_native_river", slotId: "bostonmagazine_native_river-0" });
1104	</script>
1104
1105	</div><div class="list-post">
1106
1107	<a href="https://www.bostonmagazine.com/education/2026/09/08/why-you-should-have-college-roommates/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_dept_college_web_leadcrop-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_dept_college_web_leadcrop-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_dept_college_web_leadcrop-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_dept_college_web_leadcrop-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/Sept2026_dept_college_web_leadcrop-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1108	<div class="list-post-card">
1109		<a href="https://www.bostonmagazine.com/category/opinion/" class="post-slug">Opinion</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/education/2026/09/08/why-you-should-have-college-roommates/"><p>Why You Should Have Roommates in College</p></a></h2>
1110		<div class="post-excerpt">
1111			<p>
1112			<p>As loneliness among students reaches crisis levels, one writer’s case for not rooming alone—and the real education that happens after midnight.</p>
1113</p>
1114		</div>
1115		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/john-d-spooner/" class="byline">John D. Spooner</a></span>	</div>
1116</div>
1117<div class="list-post">
1118
1119	<a href="https://www.bostonmagazine.com/news/2026/09/03/ed-markey-interview-2026/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="An older man with white hair wearing a dark blue suit, white shirt, and blue patterned tie is standing behind a wooden podium, smiling and pointing forward. The background includes an American flag and blurred elements suggesting a formal setting." srcset="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/03/GettyImages-2206451078.jpg" data-srcset="" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1120	<div class="list-post-card">
1121		<a href="https://www.bostonmagazine.com/category/qa/" class="post-slug">Q&amp;A</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/09/03/ed-markey-interview-2026/"><p>Ed Markey Is a “Walking, Talking Antidepressant&#8221;</p></a></h2>
1122		<div class="post-excerpt">
1123			<p>
1124			<p>The Senator would rather talk about Donald Trump than his 2026 primary challenger.</p>
1125</p>
1126		</div>
1127		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/jonathan-soroff/" class="byline">Jonathan Soroff</a></span>	</div>
1128</div>
1129<div class="nativo-section-front-1"></div><div class="list-post">
1130
1131	<a href="https://www.bostonmagazine.com/news/2026/09/01/is-college-still-worth-it/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="A blue graduation cap with a tassel, featuring the words &quot;NOW WHAT?&quot; written in white on the top, set against a white background with the word &quot;Boston&quot; partially visible in large blue letters behind it." decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_September2026_cover_copy-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1132	<div class="list-post-card">
1133		<a href="https://www.bostonmagazine.com/category/longform/" class="post-slug">Longform</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/09/01/is-college-still-worth-it/"><p>The Great College Reckoning: Is Higher Education Still Worth It?</p></a></h2>
1134		<div class="post-excerpt">
1135			<p>
1136			<p>The deal was simple: pay for the degree, get a good job. But now AI, school 
1136closures, and a shrinking number of students are breaking that contract—and no American city has more riding on what happens next than ours.</p>
1137</p>
1138		</div>
1139		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/jason-schwartz/" class="byline">Jason Schwartz</a></span>	</div>
1140</div>
1141		</div>
1142
1143		<div class="advertisement-side">
1144			<div class="sticky"><div align="center" data-freestar-ad="__336x280 __300x600" id="bostonmagazine_rail-1" class="gpt-ad freestar-sticky">
1145	
1145<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1146	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_rail", slotId: "bostonmagazine_rail-1" });
1147	</script>
1147
1148	</div></div>		</div>
1149	</div>
1150</div>
1151
1152	<div class="container post-article-container">
1153	<hr class="double">
1154	<div class="newsletter">
1155		<h2 class="newsletter-title">
1156			Get a compelling long read and must-have lifestyle tips in your inbox every Sunday morning — great with coffee!		</h2>
1157		<div class="newsletter-inner">
1158			<div class="hbspt-form js-hubspot-newsletter"></div>
1159		</div>
1160	</div>
1161</div>
1162
1163		<div class="three-column-module container">
1164		<h2 class="title-line">In This Section</h2>
1165		<div class="grid-content with-separator">
1166			<div class="grid-post"><a href="https://www.bostonmagazine.com/news/best-public-high-schools-boston-2026-2027-chart/" class="grid-post-card-link"><span class="post-image-link"><img class="lazyload" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/09/1200x800_GettyImages-184996589.jpg" alt="The Top Public High Schools in Greater Boston, Ranked" /></span><h3 class="post-title">The Top Public High Schools in Greater Boston, Ranked</h3></a><div class="guide-list"><p>We crunched the numbers to come up with our annual guide to the top-performing schools in the region.</p>
1167</div></div><div class="grid-post"><a href="https://www.bostonmagazine.com/boston-power-list-2026/" class="grid-post-card-link"><span class="post-image-link"><img class="lazyload" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/05/1200x800_150-featured-image.jpg" alt="The 150 Most Influential Bostonians" /></span><h3 class="post-title">The 150 Most Influential Bostonians</h3></a><div class="guide-list"><p><span style="font-weight: 400">Power looks different in every town. </span>Ours comes with lab coats, a Bakemas cookie, and 351 town names in alphabetical order.</p>
1168</div></div><div class="grid-post"><div align="center" data-freestar-ad="__372x409 __300x390" id="bostonmagazine_curated_module-1" class="gpt-ad">
1169	
1169<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1170	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_curated_module", slotId: "bostonmagazine_curated_module-1" });
1171	</script>
1171
1172	</div></div>		</div>
1173	</div>
1174	
1175	<div class="container">
1176	<hr class="double">	<div class="content-with-sidebar">
1177
1178		<div class="list-content">
1179			<div class="list-post">
1180
1181	<a href="https://www.bostonmagazine.com/news/best-public-high-schools-boston-2026-2027-chart/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="Stone archway above a doorway with the words &quot;PUBLIC SCHOOL&quot; carved into it, set in a brick building with three white-framed windows above." decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200-GettyImages-510006525-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1182	<div class="list-post-card">
1183		<a href="https://www.bostonmagazine.com/category/news/" class="post-slug">News</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/best-public-high-schools-boston-2026-2027-chart/"><p>The Top Public High Schools in Greater Boston, Ranked for 2026</p></a></h2>
1184		<div class="post-excerpt">
1185			<p>
1186			<p><span class="s1">We crunched the numbers to come up with our guide to the region’s top-performing schools. Does your town make the grade?</span></p>
1187</p>
1188		</div>
1189			</div>
1190</div>
1191<div class="list-post">
1192
1193	<a href="https://www.bostonmagazine.com/news/2026/08/23/massachusetts-state-flag/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_flags_web_leadcrop-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_flags_web_leadcrop-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_flags_web_leadcrop-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_flags_web_leadcrop-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_flags_web_leadcrop-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1194	<div class="list-post-card">
1195		<a href="https://www.bostonmagazine.com/category/longform/" class="post-slug">Longform</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/08/23/massachusetts-state-flag/"><p>Why Can&#8217;t Massachusetts Make a Good State Flag?</p></a></h2>
1196		<div class="post-excerpt">
1197			<p>
1198			<p>Maine rebranded itself with one of the country’s most beloved flags. Massachusetts has held two commissions and produced reports, surveys, scoring systems, finalists, and no flags. What gives?</p>
1199</p>
1200		</div>
1201		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/jason-schwartz/" class="byline">Jason Schwartz</a></span>	</div>
1202</div>
1203<div align="center" data-freestar-ad="__336x280 __605x271" id="bostonmagazine_native_river-1" class="gpt-ad native-river">
1204	
1204<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1205	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_native_river", slotId: "bostonmagazine_native_river-1" });
1206	</script>
1206
1207	</div><div class="list-post">
1208
1209	<a href="https://www.bostonmagazine.com/news/2026/08/16/cape-cod-rescue-story-wellfleet-navy-wreck/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_capecod_web_leadcrop-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_capecod_web_leadcrop-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_capecod_web_leadcrop-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_capecod_web_leadcrop-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_dept_capecod_web_leadcrop-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1210	<div class="list-post-card">
1211		<a href="https://www.bostonmagazine.com/category/opinion/personal-essay/" class="post-slug">Personal Essay</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/08/16/cape-cod-rescue-story-wellfleet-navy-wreck/"><p>Adrift off Wellfleet: A Cape Cod Coming-of-Age Story</p></a></h2>
1212		<div class="post-excerpt">
1213			<p>
1214			<p>Four teenagers set out for a sunken Navy wreck off Eastham. The trip did not go as planned.</p>
1215</p>
1216		</div>
1217		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/beth-mccullough-kerner/" class="byline">Beth McCullough-Kerner</a></span>	</div>
1218</div>
1219<div class="list-post">
1220
1221	<a href="https://www.bostonmagazine.com/education/2026/08/09/private-school-admissions/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat-600x400.jpg 600w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/relay-race-illofeat.jpg 900w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1222	<div class="list-post-card">
1223		<a href="https://www.bostonmagazine.com/category/opinion/personal-essay/" class="post-slug">Personal Essay</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/education/2026/08/09/private-school-admissions/"><p>What It Actually Takes to Apply to Private School</p></a></h2>
1224		<div class="post-excerpt">
1225			<p>
1226			<p>The admissions race means SSAT tutors, educational consultants, Zoom meetings, and mahjong nights. For one mom, at least, the actual acceptance was the easiest part.</p>
1227</p>
1228		</div>
1229		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/brittany-kooienga/" class="byline">Brittany Kooienga</a></span>	</div>
1230</div>
1231<div class="nativo-section-front-2"></div><div class="list-post">
1232
1233	<a href="https://www.bostonmagazine.com/news/top-hospitals-greater-boston/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/08/1200x800_TopHospitals-widthbadges-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1234	<div class="list-post-card">
1235		<a href="https://www.bostonmagazine.com/category/guides/" class="post-slug">Guides</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/top-hospitals-greater-boston/"><p>Greater Boston&#8217;s Top Hospitals: Our First Directory Is Here</p></a></h2>
1236		<div class="post-excerpt">
1237			<p>
1238			<p>Our inaugural guide to the region&#8217;s most excellent care.</p>
1239</p>
1240		</div>
1241			</div>
1242</div>
1243		</div>
1244
1245		<div class="advertisement-side">
1246			<div class="sticky"><div align="center" data-freestar-ad="__336x280 __300x600" id="bostonmagazine_rail-2" class="gpt-ad freestar-sticky">
1247	
1247<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1248	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_rail", slotId: "bostonmagazine_rail-2" });
1249	</script>
1249
1250	</div></div>		</div>
1251	</div>
1252</div>
1253
1254		<div class="three-column-module container">
1255		<h2 class="title-line"></h2>
1256		<div class="grid-content with-separator">
1257			<div class="grid-post"><a href="https://www.bostonmagazine.com/best-of-boston/" class="grid-post-card-link"><span class="post-image-link"><img class="lazyload" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/06/Best-of-Boston-2026.jpg" alt="Best of Boston 2026" /></span><h3 class="post-title">Best of Boston 2026</h3></a><div class="guide-list"><p>Our annual group love letter to the 250-plus things that are absolutely superlative about this city.</p>
1258</div></div><div class="grid-post"><a href="https://www.bostonmagazine.com/tag/the-salty-cod/" class="grid-post-card-link"><span class="post-image-link"><img class="lazyload" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2025/01/Driveway-Shovelerfeat.jpg" alt="The Salty Cod: A Column" /></span><h3 class="post-title">The Salty Cod: A Column</h3></a><div class="guide-list"><p>Humorist Steve Calechman grapples with your uniquely New England dilemmas.</p>
1259</div></div><div class="grid-post"><div align="center" data-freestar-ad="__372x409 __300x390" id="bostonmagazine_curated_module-2" class="gpt-ad">
1260	
1260<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1261	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_curated_module", slotId: "bostonmagazine_curated_module-2" });
1262	</script>
1262
1263	</div></div>		</div>
1264	</div>
1265	
1266	<div class="container">
1267	<hr class="double">	<div class="content-with-sidebar">
1268
1269		<div class="list-content">
1270			<div class="list-post">
1271
1272	<a href="https://www.bostonmagazine.com/news/2026/07/29/blizzard-of-lies-karen-read-book-excerpt/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/960x640GettyImages-2155407465-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/960x640GettyImages-2155407465-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/960x640GettyImages-2155407465-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/960x640GettyImages-2155407465-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/960x640GettyImages-2155407465-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1273	<div class="list-post-card">
1274		<a href="https://www.bostonmagazine.com/category/excerpt/" class="post-slug">Excerpt</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/07/29/blizzard-of-lies-karen-read-book-excerpt/"><p>Read an Excerpt of Dave Wedge&#8217;s &#8220;Blizzard of Lies&#8221;</p></a></h2>
1275		<div class="post-excerpt">
1276			<p>
1277			<p>The first non-fiction book about the Karen Read case is out now.</p>
1278</p>
1279		</div>
1280		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/dave-wedge/" class="byline">Dave Wedge</a></span>	</div>
1281</div>
1282<div class="list-post">
1283
1284	<a href="https://www.bostonmagazine.com/news/2026/07/22/karen-read-texts-turtleboy-harassment-campaign/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_karenread_web_leadcrop-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_karenread_web_leadcrop-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_karenread_web_leadcrop-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_karenread_web_leadcrop-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_karenread_web_leadcrop-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1285	<div class="list-post-card">
1286		<a href="https://www.bostonmagazine.com/category/longform/" class="post-slug">Longform</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/07/22/karen-read-texts-turtleboy-harassment-campaign/"><p>Inside the Campaign To Acquit Karen Read</p></a></h2>
1287		<div class="post-excerpt">
1288			<p>
1289			<p>For three years, the witnesses in the Karen Read murder trial were harassed at their jobs, their homes, their children’s sports games. It wasn’t random. It wasn’t a movement of true believers. It was a coordinated campaign against them. And now they’re fighting back.</p>
1290</p>
1291		</div>
1292		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/gretchen-voss/" class="byline">Gretchen Voss</a></span>	</div>
1293</div>
1294<div align="center" data-freestar-ad="__336x280 __605x271" id="bostonmagazine_native_river-2" class="gpt-ad native-river">
1295	
1295<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1296	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_native_river", slotId: "bostonmagazine_native_river-2" });
1297	</script>
1297
1298	</div><div class="list-post">
1299
1300	<a href="https://www.bostonmagazine.com/arts-entertainment/2026/07/16/bso-symphony-hall-crisis-hostetter-chad-smith-nelsons/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="" decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_BSO_web_leadcrop-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_BSO_web_leadcrop-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_BSO_web_leadcrop-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_BSO_web_leadcrop-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/07/Aug2026_feature_BSO_web_leadcrop-600x400.jpg 600w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1301	<div class="list-post-card">
1302		<a href="https://www.bostonmagazine.com/category/longform/" class="post-slug">Longform</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/arts-entertainment/2026/07/16/bso-symphony-hall-crisis-hostetter-chad-smith-nelsons/"><p>The Bitter Fight for Symphony Hall</p></a></h2>
1303		<div class="post-excerpt">
1304			<p>
1305			<p><span class="s1">The Boston Symphony Orchestra parted ways </span><span class="s2">with Andris Nelsons, its longtime maestro,</span> <span class="s2">and went to war with itself. Inside the struggle over who controls one of American music’s crown jewels—and whether it can survive being saved.</span></p>
1306</p>
1307		</div>
1308		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/tom-mcgrath/" class="byline">Tom McGrath</a></span>	</div>
1309</div>
1310<div class="nativo-section-front-3"></div><div class="list-post">
1311
1312	<a href="https://www.bostonmagazine.com/news/2026/07/08/locals-guide-to-boston-tall-ships/" class="post-image-link"><img width="115" height="77" class="attachment-post-thumbnail size-post-thumbnail lazyload" alt="A large sailing ship with multiple white and beige sails is on the water, viewed from behind two people wearing hats who are watching it. The ship has a dark hull and is named &quot;Oosterschelde.&quot; The scene appears to be on a calm body of water with a bright, overcast sky." decoding="async" loading="lazy" data-src="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/06/Metro_Images_TallSlider18-115x77.jpg" data-srcset="https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/06/Metro_Images_TallSlider18-115x77.jpg 115w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/06/Metro_Images_TallSlider18-605x403.jpg 605w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/06/Metro_Images_TallSlider18-300x200.jpg 300w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/06/Metro_Images_TallSlider18-600x400.jpg 600w, https://bomag.o0bc.com/wp-content/uploads/sites/2/2026/06/Metro_Images_TallSlider18.jpg 900w" data-sizes="auto, (max-width: 767px) calc( ( 100vw - 30px )  / 3 ), (max-width: 1023px) calc( ( 100vw - 30px )  / 3 ), 217px" /></a>
1313	<div class="list-post-card">
1314		<a href="https://www.bostonmagazine.com/category/guides/" class="post-slug">Guides</a>		<h2 class="post-title"><a href="https://www.bostonmagazine.com/news/2026/07/08/locals-guide-to-boston-tall-ships/"><p>A Locals-Only Guide to Boston&#8217;s Tall Ships</p></a></h2>
1315		<div class="post-excerpt">
1316			<p>
1317			<p>The best viewing spots, the smartest times to board, and how to beat the crowds.</p>
1318</p>
1319		</div>
1320		<span class="byline-wrapper">By <a href="https://www.bostonmagazine.com/author/mckenna-johnson/" class="byline">McKenna Johnson</a></span>	</div>
1321</div>
1322<span class="pagination"><span class="page-numbers current">1</span><a class="page-numbers" href="https://www.bostonmagazine.com/news/page/2/"> 2 </a><a class="page-numbers" href="https://www.bostonmagazine.com/news/page/3/"> 3 </a><a class="page-numbers" href="https://www.bostonmagazine.com/news/page/4/"> 4 </a><a class="page-numbers" href="https://www.bostonmagazine.com/news/page/5/"> 5 </a><a class="page-numbers" href="https://www.bostonmagazine.com/news/page/6/"> 6 </a><a class="page-numbers" href="https://www.bostonmagazine.com/news/page/7/"> 7 </a><a href=https://www.bostonmagazine.com/news/page/2/ class="next page-numbers" > > </a><a href=https://www.bostonmagazine.com/news/page/15/ class="last page-numbers"> >> </a></span><div class="post-navigation"></div>		</div>
1323
1324		<div class="advertisement-side">
1325			<div class="sticky"><div align="center" data-freestar-ad="__336x280 __300x600" id="bostonmagazine_rail-3" class="gpt-ad freestar-sticky">
1326	
1326<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1327	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_rail", slotId: "bostonmagazine_rail-3" });
1328	</script>
1328
1329	</div></div>		</div>
1330	</div>
1331</div>
1332
1333	<div align="center" data-freestar-ad="__320x100 __970x250" id="bostonmagazine_banner-3" class="gpt-ad advertisement container">
1334	
1334<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1335	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_banner", slotId: "bostonmagazine_banner-3" });
1336	</script>
1336
1337	</div>
1338
1339
1340<footer class="site-footer" role="contentinfo" id="js-footer">
1341	<div class="footer-navigation"><ul id="menu-footer-menu" class="menu-footer-main container"><li id="menu-item-174641" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-174641"><a href="https://www.bostonmagazine.com/about/">About</a></li>
1342<li id="menu-item-203231" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-203231"><a href="https://www.bostonmagazine.com/contact/">Contact</a></li>
1343<li id="menu-item-461741" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-461741"><a href="https://www.bostonmagazine.com/masthead/">Masthead</a></li>
1344<li id="menu-item-174651" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-174651"><a href="https://w1.buysub.com/pubs/BM/BOS/BOS_sub.jsp?cds_page_id=270289&#038;cds_mag_code=BOS&#038;id=1739901742813&#038;lsid=50491202228084314&#038;vid=1">Subscribe</a></li>
1345<li id="menu-item-174671" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-174671"><a href="/boston-magazine-media-kit/">Advertise</a></li>
1346<li id="menu-item-174661" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-174661"><a href="https://bostonglobemedia.cloud.buysub.com">Customer Service</a></li>
1347<li id="menu-item-2323712" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2323712"><a href="https://www.bostonmagazine.com/careers/">Careers and Internships at Boston Magazine</a></li>
1348<li id="menu-item-174681" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-174681"><a href="https://www.bostonglobe.com/about/help/privacy-policy/">Privacy Policy</a></li>
1349<li id="menu-item-2796278" class="ot-info-display menu-item menu-item-type-custom menu-item-object-custom menu-item-2796278"><a href="#">Your Privacy Choices</a></li>
1350</ul></div>	<div class="site-footer-inner container">
1351		<a href="https://www.bostonmagazine.com" class="footer-logo" aria-label="Boston Magazine">
1352			<span><svg class="mc-icon bostonmagazine-logo" aria-hidden="true"><title>Boston Magazine</title><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=1790091448#mc-icon-bostonmagazine-logo"></svg></span>
1353		</a>
1354		<ul id="menu-social-2" class="menu-footer-social"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351226"><a target="_blank" href="https://www.facebook.com/bostonmagazine"><span class="screen-reader-text">Facebook</span></a></li>
1355<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351228"><a target="_blank" href="https://www.instagram.com/bostonmagazine/"><span class="screen-reader-text">Instagram</span></a></li>
1356<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2351231"><a target="_blank" href="https://www.twitter.com/bostonmagazine"><span class="screen-reader-text">Twitter</span></a></li>
1357</ul>		<p class="footer-copyright">&copy;2026 Boston Globe Media Partners, LLC</p>
1358	</div>
1359	</footer>
1360
1361<div class="container" id="gutter-container"></div>
1362
1363<script type="speculationrules">
1364{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/sites/2/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/metrocorp-bostonmagazine/*","/wp-content/themes/metrocorp/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
1365</script>
1365
1366<button id="pmLink">Privacy Manager</button>		
1366<script type="text/javascript" id="ot-manage-links">
1367			const otDisplayClassEl = document.getElementsByClassName("ot-info-display");
1368			for ( const otLinkEl of otDisplayClassEl ) {
1369				let otLinks = otLinkEl.getElementsByTagName("a");
1370				for ( const otLinkEl of otLinks ) {
1371					let otLinkElAttr = otLinkEl.getAttribute("href")
1372					if( otLinkElAttr === "#" ) {
1373						otLinkEl.addEventListener( "click", function() {
1374							OneTrust.ToggleInfoDisplay();
1375							event.preventDefault();
1376						});
1377					}
1378				}
1379			}
1380		</script>
1380
1381		
1381<script id="mc-breaking-news-banner-script-js" src="https://bomag.o0bc.com/wp-content/mu-plugins/metrocorp-breakingnewsbanner/assets/js/breaking-news-bar.js?ver=1"></script>
vendor: 1 bytes, line 1381
1381
1382<script id="metrocorp-js-extra">
1383var mcGlobal = {"isSingle":"","directoryName":"Boston Magazine"};
1384//# sourceURL=metrocorp-js-extra
1385</script>
vendor: 1 bytes, line 1385
1385
1386<script id="metrocorp-js" src="https://bomag.o0bc.com/wp-content/themes/metrocorp/dist/js/metrocorp.min.js?ver=1790091448" defer></script>
vendor: 1 bytes, line 1386
1386
1387<script id="metrocorp-secondary-js" src="https://bomag.o0bc.com/wp-content/themes/metrocorp/dist/js/metrocorp-secondary.min.js?ver=1790091448" defer></script>
vendor: 1 bytes, line 1387
1387
1388<script type="text/plain" src="https://bomag.o0bc.com/wp-content/mu-plugins/metrocorp-ads//dist/js/metrocorp-ads-secondary.js?ver=88982254c2d846b515d0"  id="metrocorp-ads-secondary" class="optanon-category-C0004"></script>
1388<script type="text/plain" src="//js.hsforms.net/forms/v2.js?ver=1.0.0"  id="mc-integrations-hubspot" class="optanon-category-C0004"></script>
1388<script id="mc-hubspot-subscription-form-js-extra">
1389var mcHubSpot = {"portalId":"43837035","formId":"bfc3022c-8482-4600-8cb5-1f8e1b257cd2","isSingle":"false","title":"","vertical":""};
1390//# sourceURL=mc-hubspot-subscription-form-js-extra
1391</script>
vendor: 1 bytes, line 1391
1391
1392<script type="text/plain" src="https://bomag.o0bc.com/wp-content/mu-plugins/metrocorp-hubspot/assets/js/metrocorp-hubspot-subscription-form.js?ver=1790091444"  id="mc-hubspot-subscription-form" class="optanon-category-C0004"></script>
1392<script id="wp-emoji-settings" type="application/json">
1393{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://cdn10.bostonmagazine.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}}
1394</script>
vendor: 1 bytes, line 1394
1394
1395<script type="module">
1396/*! This file is auto-generated */
1397var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
1398//# sourceURL=https://www.bostonmagazine.com/wp-includes/js/wp-emoji-loader.min.js
1399</script>
1399
1400<!-- Start of AdCellerant Embed Code -->
1401<script src="https://js.adsrvr.org/up_loader.1.1.0.js" type="text/plain" class="optanon-category-C0004"></script>
vendor: 1 bytes, line 1401
1401
1402<script type="text/plain" class="optanon-category-C0004">
1403	function initAdCellerant() {
1404		if (typeof ttd_dom_ready === 'undefined') {
1405			setTimeout(initAdCellerant, 100);
1406			return;
1407		}
1408		
1409		ttd_dom_ready(function() {
1410			if (typeof TTDUniversalPixelApi === 'function') {
1411				var universalPixelApi = new TTDUniversalPixelApi();
1412				universalPixelApi.init("1qqfa0h", ["g7kke2y"], "https://insight.adsrvr.org/track/up");
1413			}
1414		});
1415	}
1416	initAdCellerant();
1417</script>
1417
1418<!-- End of AdCellerant Embed Code -->
1419
1420	<div align="center" data-freestar-ad="" id="bostonmagazine_bottom-anchor" class="gpt-ad">
1421	
1421<script data-cfasync="false" type="text/plain" class="optanon-category-C0004">
1422	freestar.config.enabled_slots.push({ placementName: "bostonmagazine_bottom-anchor", slotId: "bostonmagazine_bottom-anchor" });
1423	</script>
1423
1424	</div>
1425<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"b9d80a2312","applicationID":"1078100099","transactionName":"ZFNbMkJTVxVYVRcMDV0ZehNDRlYLFmICHUIeFlQFHUZYHhRABhcWWlVYCg==","queueTime":0,"applicationTime":249,"atts":"SBRMRApJREobV0FfGU5L","errorBeacon":"bam.nr-data.net","agent":""}</script>
1425</body>
1426</html>
1427
1428<!-- plugin=object-cache-pro client=phpredis metric#hits=6678 metric#misses=196 metric#hit-ratio=97.2 metric#bytes=2678970 metric#prefetches=0 metric#store-reads=189 metric#store-writes=4 metric#store-hits=525 metric#store-misses=5 metric#sql-queries=2 metric#ms-total=303.60 metric#ms-cache=92.04 metric#ms-cache-avg=0.4794 metric#ms-cache-ratio=30.3 -->

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