A Malvern man who was arrested for bringing a gun and other weapons to a “No Kings” protest in West Chester over the summer was taken into federal custody Thursday morning.
Kevin Krebs, 31, will be prosecuted by the U.S. Attorney’s Office on charges that include making and possessing explosives, according to a law enforcement source.
State charges had been filed against Krebs after investigators serving a search warrant at his home found multiple homemade pipe bombs and other explosive devices.
The case was taken over by federal authorities after months of investigation. Krebs was arrested by federal agents during his arraignment on the gun charges at the Chester County Justice Center.
Thomas G. Bellwoar Jr. and Christian J. Hoey, the attorneys representing Krebs, said in an emailed statement Thursday night: “Kevin was adopted at a very young age from a desperate environment in an orphanage in Lithuania. He has been diagnosed with significant mental health issues, including autism and Asperger syndrome. We believe his condition will be a central focus of his defense in Federal Court.”
On June 14, Krebs was arrested after other participants in a “No Kings” protest in West Chester reported to police that he was carrying a gun.
Officers confronted Krebs, who allegedly was carrying a loaded Sig Sauer handgun without a permit to carry a concealed firearm, a bayonet, pepper spray, and other weapons, police said.
Krebs was also carrying several magazines of ammunition for an assault-style rifle that was in his car nearby, police said.
When authorities searched his home on Conestoga Road, they found 13 handmade pipe bombs, along with components used to make detonators, and tactical vests and bullet-resistant armor, according to court filings.
Krebs had 21 guns total, according to authorities.
He had been released initially after posting bail, but that was later revoked and he has been in custody since.
Chester County District Attorney Chris de Barrena-Sarobe said previously that investigators were still trying to determine whether Krebs’ arrest was a “thwarted act of domestic terrorism.” The prosecutor said the case does not necessarily fit neatly into existing political narratives.
Krebs is a licensed electrician and former Home Depot employee who is registered as a Democrat but had been registered as a Republican. In recent months, he had been posting violent rhetoric against President Donald Trump and police.
Ursinus College president Robyn E. Hannigan, who was in her fourth year at the small liberal arts school in Collegeville, was abruptly removed from the job Thursday and her Ursinus webpage was removed.
”I met with the board this morning,” said Hannigan, 60, who was reached by phone. “I was let go. It’s the board’s decision. It’s not for cause. The board wanted to go in a different direction.”
She declined to disclose what the board told her at the meeting.
In a statement, the college said it was a board decision “made in the best interests of the college’s long-term success.”
Joseph DeSimone, chair of the college’s board of trustees and a 1986 Ursinus grad, declined in an interview to say why the board chose to part ways with Hannigan, saying it was a personnel decision. The leadership change is happening just as the college is about to celebrate homecoming weekend.
The move comes after the college experienced a 10% decline in first-year enrollment this fall and a 6.4% decline in overall enrollment, which stands at 1,406.
The college also was coping with financial challenges, in part because of the enrollment decline, but also because the retention rate last year for returning freshmen was 77%, six percentage points lower than the school’s average, Hannigan told the student newspaper, the Grizzly, in an interview published Oct. 2.
“We have a structural deficit, which means that we’re not living within our means and our revenues are not enough to cover our expenses,” she told the Grizzly. “So we have to fix that.”
She told the student newspaper that Ursinus took steps last year to “right the ship” financially and launched APEX, a program designed to better align academics with experiential learning and career prep. That is expected to bring enrollment back up, she said.
The college is offering students up to $2,000 for internships, team-based career coaching and advising, and a week for first-year students devoted to real world problem-solving.
The college plans to hold a town hall for faculty and staff at noon Friday.
“This decision should not reflect in any way on the strength of the college and its direction,” Hannigan told The Inquirer. “It is the nature of the business that we are in.”
The news stunned the campus community.
“I was just baffled,” said senior Renee Washart, editor in chief of the Grizzly. “I did not see this coming at all.”
She said she met with Hannigan on Monday, as she does once every month in her role as editor, and there was no indication of the change.
“She was talking about future plans for Ursinus,” said Washart, a chemistry and English major from Frederick, Md.
Washart said she was in class when an email came to campus about the change in leadership and her phone “started blowing up.” Her professor, she said, was hearing it for the first time, too.
Hannigan, an academic in the sciences who holds several patents, said that she was under a contract that goes for “another couple years” and that she would be on leave for a few weeks while a separation agreement is worked out.
DeSimone, a professor of Translational Medicine and chemical engineering at Stanford University, said in an announcement to the campus shortly before 11:30 a.m. that Gundolf Graml, the provost, will serve as interim president.
“The board has full confidence in Dr. Graml to ensure continuity of operations and to advance the college’s strategic priorities,” the college said in a statement. “The college’s mission, values, and commitment to our students remain unchanged.”
In an interview, DeSimone said there were no current plans to launch a search for a new president and that Graml and the executive team were well positioned to lead the college forward. Applications and donations are up, he said.
Hannigan came to Ursinus in July 2022 from Clarkson University in Potsdam, N.Y., where she was the provost. She was the first permanent female leader of Ursinus and the first of Native American descent.
In a 2022 interview with The Inquirer, she said she was a first-generation college student whose parents scraped to save enough to pay for her first year of college and whose older brother chose to forgo college so that she could go.
She grew up in New Jersey and received a bachelor’s degree in biology from the College of New Jersey, a master’s in geology from SUNY Buffalo, and a doctoral degree in earth and environmental science from the University of Rochester.
Hannigan described her departure from Ursinus as “a friendly separation.”
“The college has been doing great work in trying to turn around and do what it needs to do to thrive in the future,” she said.
William B. Starks, 96, of Philadelphia, pastor emeritus at Community Baptist Church in Chester, former associate pastor at Greater Ebenezer Baptist Church in Philadelphia, retired supervisor for the Philadelphia Parks and Recreation Department, Montford Point Marine, lifelong singer, and volunteer, died Saturday, Oct. 4, of age-associated decline at Germantown Home rehabilitation center.
Born and reared in Nashville, Tenn., the Rev. Starks grew up singing in church every Sunday. So his wife and two daughters were not surprised that he was ordained in 1966, served 31 years as pastor at Community Baptist, and continued to sing in choirs and elsewhere for the rest of his life.
He was energetic and empathetic, they said, and he became so effective as a spiritual and practical mentor in Chester that city and church officials dedicated part of West Seventh Street in his honor on June 1. They renamed a segment of the street as Rev. William B. Starks Way, installed a sign at Fulton and West Seventh Streets, and called it “a lasting tribute to his selfless service and deep impact on our community.”
The Rev. Starks was recruited from Greater Ebenezer Baptist by Community Baptist in 1978 and commuted every Sunday, and sometimes three nights a week, from his home in West Oak Lane to the church in Chester. His family said he never missed a Sunday service.
Rev. Starks ministered at Community Baptist Church in Chester from 1978 to 2009.
“His love for the Word of God encouraged him,” his family said in a tribute.
The Rev. Starks was direct and serious in the pulpit, and willing to “roll up his sleeves and fight your fight,” his daughter Rhonda said. He created a Presidents Council to better organize church affairs, celebrated when the church paid off the mortgage, and encouraged its use as a satellite location for the Manna Bible Institute.
He invited women and young pastors to preach, and induced the Rev. Jesse Jackson, Gov. Ed Rendell, Rep. Robert Brady, and other notables to address his congregation. His outreach and ministry were recognized in awards and honors from the Four Chaplains Memorial Foundation and other church groups.
In the community, he monitored schools and families for discord, and confronted street-corner problems he encountered. He spoke out often against violence, injustice, crime, and drug abuse.
Rev. Starks (front center) is honored by the Philadelphia chapter of the National Montford Point Marine Association.
“He truly believed in the church being involved spiritually, socially, and politically,” his family said. “He truly had a heart for the people.” Earlier, he attended Tenth Memorial Baptist Church and studied theology at what is now Cairn University in Langhorne.
The Rev. Starks worked at Philco and Whitman’s Chocolates in Philadelphia after he left the Marines in 1952. He spent 25 years with the Philadelphia Parks and Recreation Department, earned service commendations from the Fairmount Park Commission, and left when he became pastor at Community Baptist. He retired from the church in 2009.
He enlisted in the Marines after high school in 1948 and became one of the celebrated Montford Point Marines in North Carolina. He spent four years in the Corps, sang with the Marine choir, rose to corporal, and was transferred to Philadelphia. He never left.
In 2012, he and other Montford Point Marines were awarded the Congressional Gold Medal for enduring racism, segregation, and discrimination during their military tours and still serving with honor and distinction.
Rev. Starks joined the Marines in 1948.
His mother’s cousin was a church pianist and singer, and she regularly took him along to sing at church in Nashville when he was young. Later, he took music classes in high school and studied voice with professor John W. Work III at nearby Fisk University.
In retirement, he volunteered at Eleanor C. Emlen Elementary School and elsewhere in the community. “He was very humble, generous, loving, and caring,” his daughter Rhonda said.
William Barton Starks was born Nov. 2, 1928. He grew up with two brothers, and it was obvious early that his singing voice was exceptional.
He met fellow singer Inez Baldwin at a recital, and they married in 1951. They had daughters Cheryl and Rhonda, and lived in North Philadelphia and West Oak Lane.
Rev. Starks (fifth from right) “would give you anything,” his daughter Cheryl said.
The Rev. Starks and his wife enjoyed annual summer cruises to the Bahamas. He was known as Big Daddy, his family said, “because he was like a father to so many people.” His wife died in 2016.
“He meant the world to me,” said his daughter Cheryl. “He would give you anything.”
His daughter Rhonda said: “He always told us he would do anything and everything for his family, and he did.”
In addition to his daughters, the Rev. Starks is survived by four grandchildren, five great-grandchildren, and other relatives. His brothers died earlier.
Rev. Starks (right) doted on his daughters and grandchildren.
Services were held on Oct. 17 and 18. Interment was Oct. 23 at Washington Crossing National Cemetery.
Frost advisories are up for Friday morning for areas just outside Philadelphia on both sides of the Delaware River as the region is about to experience its chilliest spell in more than six months.
While the urban hotplate areas of Philly and Delaware County were not included in the National Weather Service advisory zones, cooler areas of the city and Delco could see some patchy white.
“It is certainly possible,” said Zachary Cooper, a meteorologist at the agency’s Mount Holly office.
Conditions conducive to frost — relatively clear skies, temperatures in the 30s, and light winds — may whiten the pumpkins in the region through the weekend.
As per standard procedure, the weather service will be issuing frost advisories until the end of the growing season, defined as the first time temperatures reach 32 degrees or lower in a given area.
It won’t be freezing, just frosty
Philly’s first freezing reading typically doesn’t occur until mid-November, but frost can form with temperatures above 32.
The air temperatures are measured about six feet off the ground, but they can be several degrees lower on the ground and on cooler surfaces.
When winds are calm, they keep the air from mixing, and that allows thin layers of colder air to develop at ground level.
The winds won’t be completely calm Friday morning, but “they should be light enough for favorable” frost conditions, the weather service said.
The dry spell in the Philly region continues
Temperatures should be several degrees below normal into next week, with highs mostly in the 50s and lows 35 to 40 degrees, the weather service says.
Notably absent from the extended outlook is precipitation. Officially, at Philadelphia International Airport, only 0.81 inches of rain have fallen this month. That’s less than a third of normal.
One University of Pennsylvania faculty member was called into a university office to answer for assigning “a pedagogically-relevant reading about conflict in Palestine,” others for political posts on personal social media accounts.
One faced questions for wearing a stole with the Palestinian flag at an off-campus event.
These are among “unfounded accusations of antisemitism” that Penn’s chapter of the American Association of University Professors said faculty and students have endured in the last year. Chapter representatives accompanied faculty to meetings at Penn’s Office of Religious and Ethnic Interests, which called the faculty in for questioning, according to a statement the group released Wednesday.
The religious and ethnic interests office oversees the implementation of Title VI of the Civil Rights Act, which prohibits discrimination based on race, color, national origin, or shared ancestry. It was formed following accusations of antisemitism on campus in the aftermath of Hamas’ Oct. 7, 2023, attack on Israel, when Penn was roiled by dueling complaints of unfairly treating Jewish and pro-Palestinian members of its community.
Then-Penn president Liz Magill resigned in December 2023 following a bipartisan backlash over her congressional committee testimony regarding antisemitism complaints, and the following spring, pro-Palestinian protesters erected an encampment on the College Green that ultimately was dismantled by police.
Since January, President Donald Trump’s administration has targeted universities that it asserts have failed to respond adequately to antisemitism complaints, and the group of Penn professors said they are worried that the university is following the president’s lead.
“We are concerned that Penn’s own Title VI office may be responding to these external pressures in a manner that risks chilling faculty speech and potentially discriminating against faculty in violation of the law,” the group asserted in a statement published on its website Wednesday. “… Faculty members, who in some cases had already been subject to targeted harassment, felt that they were expected to take unsubstantiated accusations of antisemitism at face value and to express contrition or offer some concession to their unidentified accuser, or face the possibility of disciplinary action.”
Penn did not respond to a request for comment. Neither did the religious and ethnic interests office.
Penn announced the creation of the office in September 2024, noting it was the first of its kind nationally and saying it would ensure a consistent response across all of its schools.
“Over the past year, our campus and our country witnessed a disquieting surge in antisemitism, Islamophobia, and other forms of religious and ethnic intolerance,” J. Larry Jameson, who was then interim president and was named president six months later, said at the time. “The Office of Religious and Ethnic Inclusion (Title VI) is being formed to confront this deeply troubling trend, and to serve as a stand-alone center for education and complaint resolution.”
The office formally opened in December with the foundational goals of educating, investigating, mediating, and evaluating. Its codirectors are Steve Ginsburg, who had served over a decade as an executive of the Anti-Defamation League, and Majid Alsayegh, founder of Alta Management Services LLC, which helped clients with criminal justice reform. The office’s chief investigator is Deborah Frey, who previously served as an assistant U.S. attorney in the Eastern District of Pennsylvania, working on discrimination complaints.
“Because of our own lived experiences as targets of bigotry, we know this work is not going to be easy,” Ginsburg had told Penn Today. “These issues are complex and require deep thought and sensitivity for those who are impacted.”
Faculty and students were not named in Wednesday’s statement and declined to comment through an AAUP executive committee member out of fear of retribution or harassment. The AAUP did not disclose the number of faculty and students involved.
But the reports “come almost exclusively from faculty who are Palestinian, Arab, Muslim, and/or Black,” the group said, giving rise to concerns about potential discrimination.
The faculty and students referred to in the letter were not sanctioned or punished for their activities, but the mere act of being called in and questioned has “a chilling effect” on research, teaching, and speech, said the AAUP executive committee member, who asked not to be identified because the chapter wanted to speak with one voice.
“For instance, in one meeting, a faculty member whose peer-reviewed research was subject to a complaint was pressured to make a modification to the presentation of that research, although their work had the support of their colleagues and dean,” the AAUP chapter said.
In that case, the faculty member had been called in because the research “referenced a third-party resource that a complainant claimed, without evidence, promoted hatred of Israel and of Jews in the United States,” the letter stated.
The chapter called on the office to “clarify and modify its procedures to ensure the transparency, consistency, and fairness essential to carrying out the office’s mission.”
And it asked the office to respond to a series of questions, including about the criteria it uses to decide whether to pursue a complaint.
More than 300,000 Pennsylvanians who struggle to pay their heating bills will need to wait longer for assistance from the state government due to funding stoppages caused by the federal government shutdown.
The Pennsylvania Department of Human Services said in a news release Wednesday that Pennsylvania will delay the opening of this year’s Low-Income Home Energy Assistance Program (LIHEAP) untilat least Dec. 3 because of a pause in federal funding due to the shutdown.The program was originally scheduled to open on Nov. 3.
The opening date for the program will be reassessed once the shutdown ends and is contingent on the state receiving the delayed federal funds, Brandon Cwalina, DHS press secretary, said in a statement Thursday.
LIHEAP distributes benefits to utility companies or home heating fuel providers for Pennsylvanians who need assistance paying their heating bills. The state has received more than $200 million each of the last two years from the federal government to carry out the program.
Pennsylvania Human Services Secretary Val Arkoosh said in the news release that the program “is especially critical for older adults and low-income families” as colder months approach.
Once DHS receives federal funding after the shutdown ends, the department will begin accepting LIHEAP applications and will continue processing applications that had been received during the shutdown.
This announcement comes the same week that DHS said nearly 2 million Pennsylvanians will not receive benefits from the Supplemental Nutrition Assistance Program (SNAP) next month if the shutdown continues. The food assistance program provides $366 million a month to low-income people in Pennsylvania,including roughly 500,000 in Philadelphia.
Joline Price, an attorney in the energy unit at Community Legal Services who works with clients to advocate for their access to water, heat, and electricity, said many of the same households could be affected by a lack of SNAP benefits and assistance in paying their heating bills, creating a “huge and devastating impact.” The program assisted 56,000 Philadelphia households last season, she noted.
“Even if some of these benefits become available later in November, they’re gonna be making really serious choices between food and utilities,” Price said. “It’s gonna be — I don’t even know that I have the words — it’s going to be bad.”
Other resources are available in the meantime — for instance, some electric and gas companies offer assistance programs — but there are gaps that remain with LIHEAP help beginning later than expected. For instance, Pennsylvania has an annual winter utility shut-off moratorium for qualified residents from Dec. 1 through March 31, though it does not eliminate any outstanding home heating bills, DHS said.
Prior to Dec. 1, low-income Pennsylvanians who are already “drowning” in utility costs could see their electric or gas shut off, Price said.
“Until then, folks are vulnerable to having their electric or their gas shut off, which would then bring them into the winter without safe heating sources,” Price said.
Democratic Gov. Josh Shapiro and members of his administration are arguing that impacts to crucial services are on the shoulders of Republicans in Washington, who hold both chambers of Congress and the White House. Meanwhile, Republicansare blaming the shutdown on Democrats because the majority party cannot pass funding legislation in the Senate without at least seven Democrats crossing the aisle.
Arkoosh echoed Shapiro’s messaging Wednesday, saying of LIHEAP: “Inaction from the Republican-controlled Congress now threatens access to this assistance.”
“I urge Congress and the White House to recognize the serious consequences that limiting heating assistance will have on the health and safety of people in Pennsylvania. Congress must come together for a solution that protects people most at risk,” she said.
Pinwheel Provisions opened in a new, larger space next to the Bryn Mawr Film Institute this week.
We may only be a month into fall, but the area’s culinary scene has been booming this season. Two new eateries opened in the last few weeks, with a third debuting today, and more on the horizon.
Heads up for drivers: Work on the North Narberth Avenue bridge between Elmwood and Haverford Avenues is set to begin next week, starting with vegetation clearing on Monday and Tuesday from 7 a.m. to 3 p.m. Work will then transition to night hours, taking place from 8 p.m. to 4 a.m. next Wednesday and Thursday.
Reminder for registered voters: Tuesday is the last day to request a mail-in ballot for the Nov. 4 election. You can apply for a mail-in or absentee ballot here.
Friends and family gathered outside Adath Israel in Merion Station last week to celebrate the release of Israeli hostage Alon Ohel from Hamas captivity following a ceasefire agreement earlier this month. Among those was Ohel’s cousin, Lower Merion resident Benjamin Mittman. A number of local residents have held vigils and rallies to support the families of hostages like Ohel. (6abc)
Rev. Carolyn Cavaness, who previously led the Bethel A.M.E. Church of Ardmore for 10 years, where she served as its first female pastor, recently reflected on her first full year as head of the historic Mother Bethel A.M.E. Church in Philadelphia, where she is also the first female pastor. The Inquirer’s Nate File spoke with her about what it’s like leading the oldest church property in the U.S. to be owned continuously by Black people.
A more than 9,000-square-foot Gladwyne mansion has hit the market with an asking price of $8.5 million. The six-bedroom, 11-bathroom home has a terrace, pool, sauna, and a media room. It sits on 12.75 acres and has the potential to be subdivided into three parcels. (Philadelphia Business Journal)
Lower Merion Township is hosting an open house on Saturday from 10 a.m. to 1 p.m. where residents can tour the police and fire stations, get a close-up look at emergency vehicles, and enjoy balloon animals, music, and food.
Bryn Mawr College this month released new guidelines for students protesting on campus, including the use of bullhorns and which campus spaces students can occupy. The school is also encouraging students to schedule demonstrations through its facilities platform, something that’s left both professors and students concerned. (The Bi-College News)
🏫 Schools Briefing
LMSD is hosting one of four community events regarding its new strategic plan next Wednesday from 6:30 to 8:30 p.m. The event will be held in the Lower Merion High School cafeteria, where residents can hear ideas and offer input on the five-year plan running from 2026 to 2031.
Mark your calendars: The district’s book fairs continue today and tomorrow. There will be a trunk-or-treat event at Penn Valley Elementary on Saturday from 2:30 to 4 p.m., with another planned at Merion Elementary next Thursday at 5:30 p.m. Saturday is also Lower Merion High School’s homecoming dance and next week is LMHS spirit week. See all the district’s events here.
Carlino’s Market is expanding, now selling its products at 10 Wegmans stores in southeastern Pennsylvania. The popular Ardmore market expects to triple its sales and production as a result. Its signature sauces will roll out to other Wegmans locations in Delaware, New Jersey, and New York in the coming months. (Philadelphia Business Journal)
🎳 Things to Do
👻 Halloween Funky Brunch & Market: This family-friendly event includes craft vendors, live music, and trick-or-treating for kids. ⏰ Saturday, Oct. 25, 11 a.m.-3 p.m. 💵 Free 📍 Ardmore Music Hall
🎶 Wicked Singalong: In anticipation of the release of Wicked: For Good, watch the first movie and sing along to the hits. Registration is required. ⏰ Saturday, Oct. 25, noon-3 p.m. 💵 Free 📍 Penn Wynne Library
🧙♀️ The Witches of Narberth: Kids can scour the borough in search of witches and treats ahead of next week’s Halloween parade. The hunt runs from 1 to 4 p.m. ⏰ Saturday, Oct. 25, 1-4 p.m. 💵 Free 📍 Narberth
🎃 Halloween Party: Now in its fifth year, the Sean King Fund for Inclusive Practices event includes games, face painting, music, and dancing. Costumes are welcome. ⏰ Saturday, Oct. 25, 2-4 p.m. 💵 Free 📍 Linwood Park
🍎 Heirloom Apple Tasting & Baking Contest: Get a taste of apples you won’t find in the grocery store and buy ones to take home. There will also be a baking competition. ⏰ Saturday, Oct. 25, 2-4 p.m. 💵 $7.18-$12.51 📍 Harriton House
🎭 The Phantom of the Opera: The original film, starring Lon Chaney and Mary Philbin, turns 100 this year. To mark the occasion, Bryn Mawr Film Institute will host two screenings of the silent horror flick, accompanied by a live performance from students at the School of Rock Main Line. ⏰ Saturday, Oct. 25 and Sunday, Oct. 26, 11:30 a.m. 💵 $11.75-$16.25 📍 Bryn Mawr Film Institute
🍫 Halloween Crafting: Kids can make four spooky, but edible Halloween-themed crafts while dressed in costumes. ⏰ Sunday, Oct. 26, 4-5 p.m. 💵 $21.20 📍 The Candy Lab
The home spans nearly 4,000 square feet and has a pool and outdoor kitchen.
This four-bedroom Penn Valley home has a sleek interior, with living and family rooms, a dining room, and an eat-in kitchen with an island on the first floor. Upstairs, the primary suite has a fireplace with a sitting area, two walk-in closets, access to a balcony, and a bathroom with a soaking tub and dual vanities. It also has a finished basement with another living room, a bar, media room, and a wine cellar, while outside there’s a patio with a built-in kitchen and a pool. There are open houses today from 4:30 to 6 p.m., and from noon to 2 p.m. tomorrow, Saturday, and Sunday.
By submitting your written, visual, and/or audio contributions, you agree to The Inquirer’s Terms of Use, including the grant of rights in Section 10.
This suburban content is produced with support from the Leslie Miller and Richard Worley Foundation and The Lenfest Institute for Journalism. Editorial content is created independently of the project donors. Gifts to support The Inquirer’s high-impact journalism can be made at inquirer.com/donate. A list of Lenfest Institute donors can be found at lenfestinstitute.org/supporters.
Swarthmore has tabled a proposal to implement an earned income tax after Swarthmore College stepped up to help fill a budget hole.
Swarthmore residents aren’t facing an earned income tax, at least for the time being.
The borough last week agreed to table an unpopular proposal to implement an EIT after Swarthmore College agreed to contribute $638,000 to cover a funding gap left by the closure of Crozer-Chester Medical Center earlier this year, The Inquirer’s Denali Sagner reports.
The borough is, however, considering implementing an emergency services tax. It will continue budget discussions at Monday’s finance committee meeting.
Task wrapped up on Sunday, delivering a bittersweet conclusion to the seven-episode show starring Mark Ruffalo. While the Delco-set HBO mini-series was undoubtedly a cops and robbers-heavy story, it also provided “a brooding, layered examination of fatherhood in various forms,” The Inquirer’s Rosa Cartagena reports. Its ending is exactly what show creator and Berwyn native Brad Ingelsby wanted. Read more about the finale here. (Warning: Spoilers!)
With the conclusion of Task, we’ve also put together a final map of the show’s local filming locations, including the Delaware County Courthouse and Government Center in Media, which was featured in the finale. We also gathered video of some of the cast’s favorite Delco phrases, which you can watch here. Those who watched were treated to some of the region’s wooded scenery, so much so that it prompted The New York Times to refer to the region as “rural America.” The Inquirer’s Jason Nark took issue with that characterization and with another journalist calling the region “downtrodden,” noting “Delco’s not much different from Philadelphia’s other ring counties.”
The Promenade at Granite Run continues to evolve, and come spring, will be home to an IKEA “plan and order point with pick-up” store. Unlike traditional stores, which are shoppable, the smaller format allows customers to meet with IKEA team members to plan out home spaces and then arrange delivery or pick up of their goods. The new store, part of a pad site near Middletown Road, will span about 3,755 square feet.
Despite Democrats holding power in Delaware County Council for the past few years, Republicans see an opening to regain representation after a double-digit property tax increase last year. Voters will elect two members to the five-person board on Nov. 4, and Republicans are hoping to build up traction.
Speaking of the election, Tuesday is the last day for registered voters to request a mail-in ballot for next month’s election. You can apply for a mail-in or absentee ballot here.
Ahead of the holidays, the Media Food Bank is seeking donations for an array of goods, including shelf-stable foods, personal care items, pet food, household goods, and items for babies. Find a list of needed supplies here.
Artist Susan O’Reilly is relocating her eponymous studio from Aston to 415 Dartmouth Ave. in Swarthmore next month, taking over the space formerly home to barbershop Cutz to Cutz. She will offer fine art classes and workshops, as well as individual sessions, with plans to add children’s programming later. The same block will also be home to secondhand store Heart and Soul’d come the new year, which is relocating to 407 Dartmouth Ave. It will maintain its current space at 14 Park Ave. until then, using its new space to show larger pieces like furniture by request. (The Swarthmorean)
Swarthmore is hosting a flu vaccine clinic on Wednesday from 4 to 6 p.m. at the borough council room. Those interested must register in advance.
🏫 Schools Briefing
Media Elementary School is hosting a trunk-or-treat event Friday, and fall theater performances kick off Saturday and run through Tuesday. There’s also a boys basketball tournament this weekend and a community blood drive on Tuesday. See the district’s full calendar here.
Tomorrow ispicture day makeups for Wallingford-Swarthmore students, and on Saturday, Wallingford Elementary is hosting its pancake breakfast and Halloween carnival from 8 a.m. to 1 p.m. See the district’s full calendar here. WSSD is also hosting community conversation sessions on Tuesday with superintendent Russell D. Johnston. The morning session will be held from 9:30 to 10:30 a.m.and an evening session will be from 6 to 7 p.m., both at Strath Haven Middle School.
Martinique Deux, the new live entertainment venue and bar in the basement space of the Phoenix building in Media, is hosting its grand opening tonight. The evening’s live music lineup starts at 7 p.m. with Mike Malloy, followed by Cordelia Blue at 8 p.m., and The Shevlins at 10 p.m.
🎳 Things to Do
🎭 Young Frankenstein: It’s your last chance to catch this musical comedy about a doctor who’s inherited his grandfather’s estate in Transylvania. ⏰ Through Sunday, Oct. 26, times vary 💵 $27-$47 📍 TheMedia Theatre
🍫 Creekside’s Halloween Party: Creekside Swim Club’s community party includes a mad scientist’s lab, costumes, face painting, raffles, and, of course, candy. ⏰ Friday, Oct. 24, 5-7 p.m. 💵 $10 📍 Creekside Swim Club, Wallingford
🛍️ Merchant Night Market: Swarthmore stores will stay open later for this special shopping event. ⏰ Friday, Oct. 24, 5-9 p.m. 💵 Pay as you go 📍 Swarthmore
👻Halloween Parade: Media Borough is hosting its annual Halloween parade, complete with performances by Penncrest and Strath Haven’s marching bands. Put on your costume and join the fun along State Street, where there will also be appearances by the Philadelphia Ghostbusters, and Star Wars cosplayers Garrison Carida and Kyber Base. ⏰ Saturday, Oct. 25, 11 a.m. 💵 Free 📍 State Street, Media
🍬 Haunted Trail: Middletown Township’s Halloween-themed event for kids ages 12 and under includes trick-or-treating and games. ⏰ Saturday, Oct. 25, 4-7:30 p.m. 💵 Free 📍 Sleighton Park
🧙♀️ Costume Party: This month’s Teen Activity Day at the Rocky Run YMCA is a Halloween-themed party. It’s open to 13- to 18-year-olds. ⏰ Saturday, Oct. 25, 5:30-7 p.m. 💵 Free 📍 Rocky Run YMCA, Media
🕺 Delco Dance Night: Put on your costume and dance to tunes at this 21-and-over Halloween-themed event. ⏰ Saturday, Oct. 25, 7-10 p.m. 💵 $15.75 in advance, $20 at the door 📍 Park Avenue Community Center, Swarthmore
🎃 PumpkinPalooza: The Media borough’s event includes a jack-o-lantern stroll and contest, as well as yard games and fall treats. ⏰ Sunday, Oct. 26, 6-7:30 p.m. 💵 Free 📍 Media Community Center lawn
🗡️ Jack The Ripper: A Virtual London Walking Tour for Grown-Ups: Take a virtual walking tour following in the footsteps of the notorious 1800s serial killer. Registration is required. ⏰ Tuesday, Oct. 28, 5:30-6:45 p.m. 💵 Free 📍 Helen Kate Furness Free Library, Wallingford
The home’s family room has a fireplace and connects to the kitchen and dining room.
Situated in the Mills at Rose Valley, this two-story townhome has three bedrooms and three-and-a-half bathrooms. The first floor features a living room, a family room with a fireplace, a dining room, and an eat-in kitchen. The bedrooms are located on the second floor, including a primary suite with a walk-in closet and a bathroom with a soaking tub. The home also has a finished basement that has space for an additional bedroom or a home office, as well as a deck out back.
By submitting your written, visual, and/or audio contributions, you agree to The Inquirer’s Terms of Use, including the grant of rights in Section 10.
This suburban content is produced with support from the Leslie Miller and Richard Worley Foundation and The Lenfest Institute for Journalism. Editorial content is created independently of the project donors. Gifts to support The Inquirer’s high-impact journalism can be made at inquirer.com/donate. A list of Lenfest Institute donors can be found at lenfestinstitute.org/supporters.
Bette E. Landman, 88, of Glenside, Montgomery County, the first female president of Arcadia University, award-winning professor of anthropology at Arcadia and Temple Universities, longtime board member, lecturer, and volunteer, died Thursday, Oct. 16, at Jefferson Abington Hospital. The cause of her death has not been disclosed.
An expert in cultural anthropology, Dr. Landman joined Arcadia, known then as Beaver College, from Temple in 1971 as an assistant professor of anthropology. She was promoted to dean of students in 1976 and rose to vice president of academic affairs and then acting president in 1982 before her appointment as president in 1985.
For the next 19 years, until her retirement in 2004, Dr. Landman doubled the university’s enrollment to more than 3,000 students, increased its endowment from $267,000 to $26 million, supervised construction of seven buildings, and expanded international study programs. She also maneuvered successfully through an eight-month maintenance staff strike in 1993 and initiated the school’s name and academic status change from Beaver College to Arcadia University in 2001.
She adroitly addressed the school’s thorny financial issues, strengthened its liberal arts program and College of Global Studies, and diversified the student body. “The school has come up from the floor, and it’s because of her,” Joseph Castle 2nd, then chair of Arcadia’s board of trustees, told The Inquirer in 2004.
When she retired, Arcadia colleague Gene Bucci said: “It’s a sad day. Bette is the college.” Another colleague, Norman Johnston, said: “Without her, there might not even be a college here anymore.”
In a recent tribute, current Arcadia president Ajay Nair praised Dr. Landman’s “extraordinary vision and unwavering dedication to access and inclusion.” He said: “Her spirit, vision, light, and legacy will forever remain a central part of the university.”
Dr. Landman studied marriage, child-rearing, and other social constructs for nine months on the remote Caribbean island of Canouan for her doctoral dissertation in 1965 and ’66, and she lectured for decades around the country on evolution and human relationships. She evaluated academic programs and advised colleges around the world, and said often that expansive educations are vital for everyday success.
“A baccalaureate degree must expose men and women to arts and sciences,” she told The Inquirer in 1992. “It gives breadth to what they do. I realize people work and need job skills, but the really basic skills are critical thinking, problem solving, and the ability to make judgements and effective communication, oral and written.”
Dr. Landman became president at Arcadia in 1985.
She was also effective in improving Arcadia’s athletic program and was inducted into its Hall of Fame in 2009. She held leadership roles in the National Collegiate Athletic Association and Pennsylvania Athletic Conference, and Arcadia officials said on the Hall of Fame website: “Bette Landman put our university on the national map in athletics.”
Over the years, Arcadia officials named their new Landman Library in her honor, awarded her an honorary doctorate of education, and created the Bette Landman Award for students dedicated to academic success, community service, and global learning. Before Arcadia, she was an assistant professor of anthropology for five years at Springfield College in Massachusetts and then at Temple from 1969 to 1971.
She earned a bachelor’s degree in elementary education and graduated first in her class of 1959 at Bowling Green State University in Ohio. At Ohio State University, she earned a master’s degree in physical anthropology in 1961 and a doctorate in cultural anthropology in 1972.
“She treated every student like we were part of her family,” a former student said in a tribute. “She knew us by name. All university presidents should aspire to be like Bette.”
Dr. Landman taught anthropology at Springfield College and Temple and Arcadia Universities.
As a volunteer, Dr. Landman was president of the charitable Arcadia Foundation and chair of boards and commissions for the Association of American Colleges, the American Red Cross, and other groups. She was on boards for the National Association of Independent Colleges and Universities, Abington Memorial Hospital, and Wilson College.
She was named a Distinguished Daughter of Pennsylvania in 1992 by theFoundation for Enhancing Communities and earned a lifetime achievement award in 2003 from the Pennsylvania Council on International Education. In 1992, the Pennsylvania chapter of the American Council on Education created an award in her name to honor a leader in women’s education in Pennsylvania.
She never really enjoyed fundraising, colleagues said, so she assembled a formidable staff around her. Her brother, Todd, said: “She was a tremendous team builder.” A former colleague said on Facebook: “Everyone who worked around Bette loved her.”
The Springfield Union wrote about Dr. Landman’s doctoral dissertation in 1966.
Bette Emmeline Landman was born July 18, 1937, in Piqua, Ohio. She grew up with an older sister, Patricia, and a younger brother, Todd, and she told memorable bedtime stories to her brother when they were young.
She worked odd jobs during her high school years, earned a teaching scholarship to Bowling Green, and taught fifth grade in Ohio before joining Springfield College in 1963.
At Arcadia, she liked to host student gatherings at the president’s residence, and her personal library was filled with books on history, art, and architecture. Friends noted her “infectious smile” and called her “a wonderful woman” and “an incredible lady.”
Her brother said: “She was a very compassionate person. She was committed to success.”
This article about Dr. Landman appeared in The Inquirer in 2003.
In addition to her brother, Dr. Landman is survived by other relatives. Her sister died earlier.
HBO's Task once again brought the Philadelphia region back into the spotlight over its seven-episode run, showcasing a slew of local spots from Ridley Township to Coatesville and beyond.
And with the series wrapped, we can say: Creator Brad Ingelsby did right by Delco, where the series is largely set.
Sure, the accents were pretty great — but as we look back at the show, it's clear that the Philadelphia region was integral to Task. Here, we've rounded up all the local spots — sans private homes — we could identify in Task. Check out the map below to see what locations wound up the show, and why the series takes us there:
Loading…
Aston Township
Mirenda Center at Neumann University
First seen in episode one
Courtesy of Neumann University
Tom (Mark Ruffalo) mans a table at a job fair here while temporarily working as a recruiter for the FBI. Next to his station, the distinctive pillars of the center’s atrium are visible.
Collingdale
Rita’s Italian Ice & Frozen Custard
First seen in episode one
Alejandro A. Alvarez / Staff Photographer
Emily (Silvia Dionicio), Tom’s daughter, works her part-time job here. In the scene where it is shown, Tom orders a black cherry water ice, a flavor choice of which we approve.
Philadelphia
Former Philadelphia Police Department Headquarters
First seen in episode one
Jessica Griffin / Staff Photographer
We get a brief glimpse of the exterior of the former Philadelphia police headquarters, colloquially known as the Roundhouse. Whether the interior is the same building is unclear, but in the show, this appears to be where the FBI’s Philly field office is located.
Bangor
Bangor Quarry
First seen in episode one
Robbie (Tom Pelphrey), Cliff (Raúl Castillo), and Peaches (Owen Teague) head here for a post-robbery swim. On a real-life note, you should not do the same — not only is it dangerous, but it’s also trespassing, according to the Bangor Borough Police Department.
Coatesville
Lincoln Highway and 2nd Avenue
First seen in episode two
TOM GRALISH / Staff Photographer
The Dark Hearts motorcycle gang rides through this intersection in formation, the giveaway being Presence Bank in the background in one shot.
Coatesville
Polish American Citizens Club
First seen in episode two
Courtesy of HBO
Done up as the so-called Lefty’s Taproom in the show, this location serves as the Dark Hearts’ clubhouse and watering hole. In real life, it’s just off Lincoln Highway, lending a bit of realism to the gang’s ride through downtown Coatesville.
Aston Township
Martin’s Taphouse
First seen in episode two
Martin's stands in as the exterior of the Tip Top Lounge in the series, which we see in this episode stacked with motorcycles parked outside the front door.
Sharon Hill
Dixon’s Lounge
First seen in episode two
Courtesy of HBO
While the exterior of the Tip Top Lounge is in Aston, the interior bears a striking resemblance to Delco’s own Dixon’s Lounge. Here, Robbie and Cliff are stood up by an, ahem, “business partner” before walking out on an order of crabfries.
Boothwyn
Willowbrook Shopping Center
First seen in episode two
Isaiah Vazquez / For The Inquirer
Maeve (Emilia Jones) takes Sam (Ben Lewis Doherty) to a fictional “Val-U Corner” store here with the intent of dropping him off for police to find before the plan goes awry. The store is located near the real Blue Cherry Ice Cream and Bakery, which is visible in the background.
Phoenixville
Phoenixville Area High School
First seen in episode two
During his search for his daughter, Emily (Silvia Dionicio), Tom (Mark Ruffalo) finds her in the dugout of a baseball field that, in real life, is at Phoenixville Area High School. Its distinctive backstop is visible from a bird's-eye view in the series.
Philadelphia
Ralph’s Italian Restaurant
First seen in episode three
MICHAEL KLEIN / Staff
Dark Hearts leaders Jayson (Sam Keeley) and Perry (Jamie McShane) walk through the kitchen here to meet with local drug kingpin Freddy Frias (Elvis Nolasco), but in the show, it doesn’t appear to be serving the Italian food we’re used to in real life.
Aston Township
Mount Hope Cemetery
First seen in episode three
Isaiah Vazquez / For The Inquirer
It’s a very quick shot, but it’s there just under four minutes into the episode. In the background, you can see the Commodore Barry Bridge, and graves on a hill in the cemetery in the foreground.
Union Township
Sixpenny Creek Quarry
First seen in episode three
Courtesy of HBO
Robbie (Tom Pelphrey) and Cliff (Raúl Castillo) finally get their meeting with Eryn (Margarita Levieva), their Dark Hearts insider, but it doesn’t go according to plan.
Upper Darby
Llanerch Diner
First seen in episode three
Tom Gralish / Staff Photographer
Taskforce members Aleah (Thuso Mbedu) and Lizzie (Alison Oliver) head to Upper Darby's famed Llanerch Diner for a tip on the drug house robberies they're investigating, and get a break in the case.
Lansdowne
Rosedon Plaza
First seen in episode three
Jose F. Moreno / Staff Photographer
In the background of one shot during the chase for Ray (Peter Patrikios), you can see the old Doc's Deli (Deli Green). That puts Ray in the corner of the Rosedon Plaza parking lot as Lizzie (Alison Oliver) makes the arrest.
Coatesville
Coatesville Police Department
First seen in episode three
Steven M. Falk / For The Inquirer
Whether the interior is the same station isn’t clear, but an exterior shot sets this spot up as the place where the Task team interrogates Ray (Peter Patrikios) and Shelley (Mickey Sumner). Out front, a police cruiser reads “Delaware County Sheriff,” which is a little far from home.
Holmes
The Ridley House
First seen in episode three
Isaiah Vazquez / For The Inquirer
Following the chase and interrogation, Lizzie (Alison Oliver) and Grasso (Fabien Frankel) head to this local bar to unwind. Grasso indicates it is a Barnaby’s, which, in real life, was true at one point – until the location became the Ridley House in 2019.
King of Prussia
Pennsylvania Turnpike on-ramp
First seen in episode four
TOM GRALISH / Staff Photographer
It’s a quick shot as Tom (Mark Ruffalo) drives around at the beginning of the episode, but you can just make out the LasikPlus building on Mall Boulevard in the background. That puts this Pennsylvania Turnpike entrance in King of Prussia.
Malvern
I-76 Exit 320
First seen in episode four
Tom (Mark Ruffalo) appears to take this exit as he is driving to meet his fellow taskforce members.
Marcus Hook
Marcus Hook Community Center
First seen in episode four
Erin Blewett / For The Inquirer
As County Chief Dorsey (Raphael Sbarge) exits the building, you can see a door tagged with “Delaware County Sheriff’s Office.” But the green awning above him is a dead giveaway — that’s the Marcus Hook Community Center.
Aston Township
Rockdale Industrial Center
First seen in episode four
It's disguised as a trucking depot in the series, but this is where Robbie (Tom Pelphrey) and Cliff (Raúl Castillo) travel with Sam (Ben Lewis Doherty) to arrange transportation for their escape into Canada before being confronted by a Good Samaritan.
Chester
Upland Diner
First seen in episode four
Erin Blewett / For The Inquirer
Upland Diner’s parking lot serves as Robbie’s (Tom Pelphrey) holding area during this episode’s drug deal. Unfortunately, we only get an exterior shot of the building, but the restaurant’s vintage-style sign is proudly on display. Great pancakes, for the record.
Newtown Square
Ridley Creek State Park entrance
First seen in episode four
JOSE F. MORENO / Staff Photographer
Cliff (Raúl Castillo) can be seen turning onto North Sandy Flash Drive from Gradyville Road as he heads to the drug deal meeting spot. If you look closely, you can just barely make out a sign for Ridley Creek State Park.
Wilmington, Del.
Beaver Creek
First seen in episode four
It's tough to spot, but the dam that Cliff (Raúl Castillo) parks his car next to during this episode's failed drug deal — or, more accurately, the Dark Hearts' setup — appears to be in Beaver Creek on the Delaware-Pennsylvania border.
Coatesville
City Clock Apartments
First seen in episode four
Steven M. Falk / For The Inquirer
Another brief shot, but the clock face on the tower of the City Clock Apartments is prominently featured. The building formerly was the National Bank of Coatesville, and has been on the National Register of Historic Places since 1977.
Downingtown
Coatesville-Downingtown Bypass
First seen in episode five
FBI Boss Kathleen McGinty (Martha Plimpton) and the rest of the task force swerve across traffic here while looking for Tom (Mark Ruffalo). In the background, you can just make out the sign for Pacer Pool Services & Supplies.
Downingtown
Marsh Creek State Park
First seen in episode five
After surviving his encounter with Robbie (Tom Pelphrey), Tom (Mark Ruffalo) emerges from the woods to see a beautiful summer scene of families enjoying the lake at Marsh Creek State Park.
Boothwyn
I-95 Pennsylvania Welcome Center
First seen in episode five
Erin Blewett / For The Inquirer
FBI boss Kathleen McGinty (Martha Plimpton) stuffs her face with fast food at the center's picnic tables as the task crew looks for their leader. As McGinty explains, she is “an emotional eater.”
Everett
Woy Bridge
First seen in episode five
In what is likely the farthest-flung filming location – at least in relation to the rest of the local spots – we get some shots of Everett’s Woy Bridge in Bedford County as the taskforce closes in on Robbie (Tom Pelphrey).
Milmont Park
Our Lady of Peace Parish
First seen in episode six
RON TARVER / Staff Photographer
Though disguised well as a juvenile detention facility in the show, this little Delco parish provides at least the exterior shots for where Tom (Mark Ruffalo) meets Sam (Ben Lewis Doherty) for the first time.
Coatesville
High Bridge
First seen in episode seven
This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso's (Fabien Frankel) fate with the Dark Hearts.
Media
Delaware County Courthouse and Government Center
First seen in episode seven
Courtesy of Delaware County Government Center and Courthouse
Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.
story continues after advertisement
Explore the map of all locations at your own pace. Tap onHover overa pin to learn more.
That's it for Task. But rest assured, if HBO decides to focus on Philly again, we'll be back. Until then, see youse later.
Staff Contributors
Design and Development: Sam Morris
Reporting: Nick Vadala
Editing: Emily Babay
First seen in episode
(()=>{var fr=Object.create;var _e=Object.defineProperty;var dr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var vr=Object.getPrototypeOf,gr=Object.prototype.hasOwnProperty;var et=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var mr=(e,t,r,n)=>{if(t&&typeof t==”object”||typeof t==”function”)for(let i of pr(t))!gr.call(e,i)&&i!==r&&_e(e,i,{get:()=>t[i],enumerable:!(n=dr(t,i))||n.enumerable});return e};var yr=(e,t,r)=>(r=e!=null?fr(vr(e)):{},mr(t||!e||!e.__esModule?_e(r,”default”,{value:e,enumerable:!0}):r,e));var ft=et(I=>{var Sr={0:”Jan.”,1:”Feb.”,2:”March”,3:”April”,4:”May”,5:”June”,6:”July”,7:”Aug.”,8:”Sept.”,9:”Oct.”,10:”Nov.”,11:”Dec.”};function at(e){return e===void 0&&(e=new Date),Sr[e.getMonth()]}var xr={0:”Jan”,1:”Feb”,2:”Mar”,3:”Apr”,4:”May”,5:”Jun”,6:”Jul”,7:”Aug”,8:”Sep”,9:”Oct”,10:”Nov”,11:”Dec”};function lt(e){return e===void 0&&(e=new Date),xr[e.getMonth()]}function ne(e){return e==null}function ht(e){return typeof e==”number”&&isFinite(e)}function Se(e){return ht(e)&&Math.floor(e)===e}var Tr=[“one”,”two”,”three”,”four”,”five”,”six”,”seven”,”eight”,”nine”],Cr=[“million”,”billion”,”trillion”,”quadrillion”,”quintillion”,”sextillion”,”septillion”,”octillion”,”nonillion”,”decillion”],ut=[“th”,”st”,”nd”,”rd”,”th”,”th”,”th”,”th”,”th”,”th”],Lr=[11,12,13];function ct(e){if(ne(e))return””;var t=+e;return Se(t)?Lr.indexOf(t%100)>-1?ut[0]:ut[t%10]:””}var Pr=[“first”,”second”,”third”,”fourth”,”fifth”,”sixth”,”seventh”,”eighth”,”ninth”],Ar=new RegExp(/s+([^s]*)s*$/);I.apdate=function(e){return e===void 0&&(e=new Date),at(e)+” “+e.getDate()+”, “+e.getFullYear()},I.apdatetab=function(e){return e===void 0&&(e=new Date),lt(e)+” “+e.getDate()+”, “+e.getFullYear()},I.apmonth=at,I.apmonthtab=lt,I.apnumber=function(e){if(ne(e))return””;var t=+e;return Se(t)?t=10?e.toString():Tr[t-1]:e.toString()},I.aptime=function(e){e===void 0&&(e=new Date);var t,r,n=e.getHours(),i=e.getMinutes(),o=i===0;if(o){if(n===0)return”midnight”;if(n===12)return”noon”}return n0?n:12):(t=”p.m.”,r=n===12?n:n-12),o?r+” “+t:r+”:”+(i<10?"0"+i:i)+" "+t},I.capfirst=function(e){if(ne(e))return"";var t=String(e);return""+t.charAt(0).toUpperCase()+t.slice(1)},I.intcomma=function(e){if(ne(e))return"";var t,r=+e;return ht(r)?((t=r.toString().split("."))[0]=t[0].replace(/B(?=(d{3})+(?!d))/g,","),t.join(".")):e.toString()},I.intword=function(e){if(ne(e))return"";var t=+e;if(!Se(t))return e.toString();var r=Math.abs(t);if(r<1e6)return e.toString();var n=Math.ceil(Math.log(r+1)/Math.LN10)-1,i=n-n%3,o=t/Math.pow(10,i);return(o=Math.round(10*o)/10)+" "+Cr[Math.floor(i/3)-2]},I.ordinal=function(e,t){if(t===void 0&&(t=!1),ne(e))return"";var r=+e;return Se(r)?t&&r{(function(e,t){typeof We==”object”&&typeof je<"u"?je.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis=h?m:””+Array(h+1-p.length).join(u)+m},K={s:O,z:function(m){var h=-m.utcOffset(),u=Math.abs(h),p=Math.floor(u/60),c=u%60;return(h<=0?"+":"-")+O(p,2,"0")+":"+O(c,2,"0")},m:function m(h,u){if(h.date()<u.date())return-m(u,h);var p=12*(u.year()-h.year())+(u.month()-h.month()),c=h.clone().add(p,f),y=u-c<0,w=h.clone().add(p+(y?-1:1),f);return+(-(p+(u-c)/(y?c-w:w-c))||0)},a:function(m){return m1)return m(w[0])}else{var b=h.name;$[b]=h,c=b}return!p&&c&&(C=c),c||!p&&C},E=function(m,h){if(ie(m))return m.clone();var u=typeof h==”object”?h:{};return u.date=m,u.args=arguments,new te(u)},M=K;M.l=oe,M.i=ie,M.w=function(m,h){return E(m,{locale:h.$L,utc:h.$u,x:h.$x,$offset:h.$offset})};var te=function(){function m(u){this.$L=oe(u.locale,null,!0),this.parse(u),this.$x=this.$x||u.x||{},this[R]=!0}var h=m.prototype;return h.parse=function(u){this.$d=function(p){var c=p.date,y=p.utc;if(c===null)return new Date(NaN);if(M.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c==”string”&&!/Z$/i.test(c)){var w=c.match(F);if(w){var b=w[2]-1||0,A=(w[7]||”0″).substring(0,3);return y?new Date(Date.UTC(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,A)):new Date(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,A)}}return new Date(c)}(u),this.init()},h.init=function(){var u=this.$d;this.$y=u.getFullYear(),this.$M=u.getMonth(),this.$D=u.getDate(),this.$W=u.getDay(),this.$H=u.getHours(),this.$m=u.getMinutes(),this.$s=u.getSeconds(),this.$ms=u.getMilliseconds()},h.$utils=function(){return M},h.isValid=function(){return this.$d.toString()!==x},h.isSame=function(u,p){var c=E(u);return this.startOf(p)<=c&&c<=this.endOf(p)},h.isAfter=function(u,p){return E(u)<this.startOf(p)},h.isBefore=function(u,p){return this.endOf(p)<E(u)},h.$g=function(u,p,c){return M.u(u)?this[p]:this.set(c,u)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(u,p){var c=this,y=!!M.u(p)||p,w=M.p(u),b=function(j,H){var J=M.w(c.$u?Date.UTC(c.$y,H,j):new Date(c.$y,H,j),c);return y?J:J.endOf(a)},A=function(j,H){return M.w(c.toDate()[j].apply(c.toDate("s"),(y?[0,0,0,0]:[23,59,59,999]).slice(H)),c)},k=this.$W,D=this.$M,z=this.$D,X="set"+(this.$u?"UTC":"");switch(w){case l:return y?b(1,0):b(31,11);case f:return y?b(1,D):b(0,D+1);case d:var q=this.$locale().weekStart||0,Q=(k<q?k+7:k)-q;return b(y?z-Q:z+(6-Q),D);case a:case v:return A(X+"Hours",0);case s:return A(X+"Minutes",1);case o:return A(X+"Seconds",2);case i:return A(X+"Milliseconds",3);default:return this.clone()}},h.endOf=function(u){return this.startOf(u,!1)},h.$set=function(u,p){var c,y=M.p(u),w="set"+(this.$u?"UTC":""),b=(c={},c[a]=w+"Date",c[v]=w+"Date",c[f]=w+"Month",c[l]=w+"FullYear",c[s]=w+"Hours",c[o]=w+"Minutes",c[i]=w+"Seconds",c[n]=w+"Milliseconds",c)[y],A=y===a?this.$D+(p-this.$W):p;if(y===f||y===l){var k=this.clone().set(v,1);k.$d[b](A),k.init(),this.$d=k.set(v,Math.min(this.$D,k.daysInMonth())).$d}else b&&this.$d[b](A);return this.init(),this},h.set=function(u,p){return this.clone().$set(u,p)},h.get=function(u){return this[M.p(u)]()},h.add=function(u,p){var c,y=this;u=Number(u);var w=M.p(p),b=function(D){var z=E(y);return M.w(z.date(z.date()+Math.round(D*u)),y)};if(w===f)return this.set(f,this.$M+u);if(w===l)return this.set(l,this.$y+u);if(w===a)return b(1);if(w===d)return b(7);var A=(c={},c[o]=t,c[s]=r,c[i]=e,c)[w]||1,k=this.$d.getTime()+u*A;return M.w(k,this)},h.subtract=function(u,p){return this.add(-1*u,p)},h.format=function(u){var p=this,c=this.$locale();if(!this.isValid())return c.invalidDate||x;var y=u||"YYYY-MM-DDTHH:mm:ssZ",w=M.z(this),b=this.$H,A=this.$m,k=this.$M,D=c.weekdays,z=c.months,X=c.meridiem,q=function(H,J,se,ae){return H&&(H[J]||H(p,y))||se[J].slice(0,ae)},Q=function(H){return M.s(b%12||12,H,"0")},j=X||function(H,J,se){var ae=H{window.addEventListener(“resize”,()=>{rt(),$e()}),window.addEventListener(“scroll”,()=>{$e()})},rt=()=>{wr.setAttribute(“viewBox”,`0 0 ${window.innerWidth} ${window.innerHeight}`)},$e=()=>{let e=document.querySelector(“.js-steps”).dataset.current;re!==e&&(re=e,ot()),!re||re==”all”?it():nt()},nt=()=>{if(re){let e=document.querySelector(`.js-steps-step[data-step=”${re}”] .js-steps-pin`),t=document.querySelector(“.js-map-location.is-current .js-map-pin”);if(t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),o=document.querySelector(“.js-steps”).getBoundingClientRect(),s=o.top>0?o.top:0,a=r.width/2;ce.setAttribute(“y1”,r.top+a-s),ce.setAttribute(“x1”,r.left+a),ce.setAttribute(“y2”,n.top+a-s),ce.setAttribute(“x2”,n.left+a)}}},it=()=>{ce.classList.add(“is-hidden”)},Mr=()=>{ce.classList.remove(“is-hidden”)},ot=()=>{it(),clearTimeout(tt),tt=setTimeout(()=>{re!==void 0&&re!==”all”&&(nt(),Mr())},1200)},st={init:()=>{br(),rt(),$e()},onChange:()=>{ot()}};var Rn=ft();var ze=e=>{if(e)return e.trim().toLowerCase().normalize(“NFD”).replace(/[u0300-u036f]/g,””).replace(/[^A-Z0-9 ]/gi,””).trim().replace(/ /g,”-“)};var dt=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);var pe=(e,t=null,r=null)=>{r||(r=document.querySelector(“head”));let n=document.createElement(“script”);n.type=”text/javascript”,n.src=e,t&&(n.onload=t),r.appendChild(n)},pt=()=>(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state===”Subscribed”,vt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state;return window.location.host.includes(“zzz-systest”)||window.location.host.includes(“pmn.arcpublishing.com”)||window.location.host.includes(“stage.fusion.inquirer.com”)||typeof t>”u”},gt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.hasAdsFreeReading;return!!(t&&t==1)},Be=()=>window.location.host.includes(“localhost”),xe=(e,t=””)=>{let r=document.querySelector(`template#${e}`);if(!r||!(r instanceof HTMLTemplateElement))return console.log(`Couldn’t find .`),null;let n=r.content.cloneNode(!0).childNodes;if(n.length==0)return console.log(`Template ${r} has no children, returning null.`),null;n.length>1&&console.log(`Template ${r} has multiple children, only returning the first.`);let i=n[0];return i.setAttribute(“data-id”,t),i},Te=(e,t)=>{let r=[…e.querySelectorAll(“[data-populate]”)];e.dataset.populate&&r.unshift(e);let n=r.filter(i=>{let o=i.closest(“[data-populate-context]”);return!o||o==e});for(let i of n){let s=i.dataset.populate.trim().split(/s*,s*/).map(a=>a.split(/s*:s*/));for(let[a,d]of s){let g=a.split(“.”).reduce((x,F)=>x?.[F],t),l=g==null||g==null,v=d?.split(/s+/)||[“innerHTML”];for(let x of v)x.startsWith(“.”)&&i.classList.toggle(x.substring(1),l?!1:g),!l&&(x==”innerHTML”?i.innerHTML=g:x.startsWith(“@”)?i.setAttribute(x.substring(1),g):x.startsWith(“–“)&&i.style.setProperty(x,g))}}};var Er=()=>{gt()&&document.querySelectorAll(“.js-adbox”).forEach(t=>{t.classList.add(“is-hidden”)})},mt={init:()=>{Er()}};var le,yt,kr=()=>{le=document.getElementById(“js-inno-toast”)},Dr=e=>{if(!le)return;le.innerHTML=e,le.classList.add(“inno-toast–active”);let t=()=>{le.addEventListener(“transitionend”,$r,{once:!0}),le.classList.remove(“inno-toast–active”)};clearTimeout(yt),yt=setTimeout(t,5e3)},$r=()=>{le.innerHTML=””},ue={init:()=>{kr()},showToast:Dr};var Ce,wt=!1,zr=async()=>new Promise(e=>{setTimeout(()=>{console.log(“simulating createShareLink for localhost”),e(“https://inquirer.com/interactives”),Br()},100)}),Br=()=>{let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||setTimeout(()=>{let t=e?.querySelector(“span”);t&&(t.innerHTML=”Gift link copied to clipboard“)},20)},Fr=()=>{let e=window.services?.createShareLink;e&&(Ce=e),Be()&&(Ce=zr),Ce&&Or()},Hr=async e=>{let t=”text/plain”,r=async()=>{try{return await Ce(window.location.pathname)}catch{e.dataset.state=”error”,ue.showToast(“Hmm, we couldn’t generate a gift link…”)}},n=new ClipboardItem({[t]:r()});await navigator.clipboard.write([n]).catch(i=>{console.log(i),ue.showToast(“Couldn’t copy to clipboard, try again?”),e.dataset.state=”error”}),ue.showToast(“Gift link copied to clipboard!”),e.dataset.state=”complete”},Or=()=>{document.querySelectorAll(“.js-gift”).forEach(t=>{(pt()||Be()||vt())&&t.classList.add(“is-available”)}),document.querySelectorAll(“.js-gift-button”).forEach(t=>{t instanceof HTMLButtonElement&&t.addEventListener(“click”,()=>{t.classList.contains(“disabled”)||(t.dataset.state=”loading”,wt=!0,Hr(t),setTimeout(()=>{t.dataset.state=”ready”},2e3))})});let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||Rr(e)},Rr=e=>{new MutationObserver(r=>{for(let n of r){let i=[…n.addedNodes].at(0);if(!(i instanceof HTMLElement))return;wt&&ue.showToast(i.outerHTML)}}).observe(e,{subtree:!0,childList:!0})},bt={init:()=>{Fr()}};var Ur=()=>{window.addEventListener(“message”,e=>{if(e.data[“datawrapper-height”]){let t=e.data[“datawrapper-height”];for(let r in t)document.querySelector(`#datawrapper-chart-${r}`).setAttribute(“height”,t[r])}})},Ir=()=>{document.querySelectorAll(“.js-datawrapper-graphic”).forEach(e=>{pe(`https://datawrapper.dwcdn.net/${e.dataset.id}/embed.js`,null,e)})},qr=()=>{window.addEventListener(“message”,e=>{let t=e.data;document.querySelectorAll(`iframe[src*=”${t.id}”]`).forEach(n=>{n.style.height=`${t.height}px`})},!1)},Gr=()=>{document.querySelectorAll(“.js-pym-graphic”).forEach(e=>{if(typeof window{new window.pym.Parent(e.id,e.dataset.iframe)};typeof window.pym>”u”?pe(“https://pym.nprapps.org/pym.v1.min.js”,t):t()}})},Mt={init:()=>{Ur(),Ir(),Gr(),qr()}};var ve,Nr=()=>{document.querySelectorAll(“.js-hover”).forEach(e=>{e.addEventListener(“click”,()=>{St(e)}),e.addEventListener(“mouseenter”,()=>{St(e)}),e.addEventListener(“mouseout”,()=>{xt(e)})}),window.addEventListener(“scroll”,()=>{ve!==null&&Zr()})},Zr=()=>{(ve>window.scrollY+100||ve{xt(e)})},St=e=>{e.classList.add(“is-visible”),ve=window.scrollY},xt=e=>{e.classList.remove(“is-visible”),ve=null},Tt={init:()=>{Nr()}};var N=Uint8Array,he=Uint16Array,Wr=Int32Array,Ct=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Lt=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),jr=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pt=function(e,t){for(var r=new he(31),n=0;n<31;++n)r[n]=t+=1<<e[n-1];for(var i=new Wr(r[30]),n=1;n<30;++n)for(var o=r[n];o<r[n+1];++o)i[o]=o-r[n]<<5|n;return{b:r,r:i}},At=Pt(Ct,2),Et=At.b,Jr=At.r;Et[28]=258,Jr[258]=28;var kt=Pt(Lt,0),Yr=kt.b,Vn=kt.r,Oe=new he(32768);for(S=0;S>1|(S&21845)<>2|(_&13107)<>4|(_&3855)<>8|(_&255)<>1;var _,S,ge=function(e,t,r){for(var n=e.length,i=0,o=new he(t);i<n;++i)e[i]&&++o[e[i]-1];var s=new he(t);for(i=1;i<t;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(r){a=new he(1<<t);var d=15-t;for(i=0;i<n;++i)if(e[i])for(var f=i<<4|e[i],g=t-e[i],l=s[e[i]-1]++<<g,v=l|(1<<g)-1;l>d]=f}else for(a=new he(n),i=0;i>15-e[i]);return a},me=new N(288);for(S=0;S<144;++S)me[S]=8;var S;for(S=144;S<256;++S)me[S]=9;var S;for(S=256;S<280;++S)me[S]=7;var S;for(S=280;S<288;++S)me[S]=8;var S,Dt=new N(32);for(S=0;S<32;++S)Dt[S]=5;var S;var Vr=ge(me,9,1);var Kr=ge(Dt,5,1),Fe=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},Y=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<>(t&7)&r},He=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<>(t&7)},Xr=function(e){return(e+7)/8|0},Qr=function(e,t,r){return(t==null||te.length)&&(r=e.length),new N(e.subarray(t,r))};var _r=[“unexpected EOF”,”invalid block type”,”invalid length/literal”,”invalid distance”,”stream finished”,”no stream handler”,,”no callback”,”invalid UTF-8 data”,”extra field too long”,”date not in range 1980-2099″,”filename too long”,”stream finishing”,”invalid zip data”],G=function(e,t,r){var n=new Error(t||_r[e]);if(n.code=e,Error.captureStackTrace&&Error.captureStackTrace(n,G),!r)throw n;return n},Re=function(e,t,r,n){var i=e.length,o=n?n.length:0;if(!i||t.f&&!t.l)return r||new N(0);var s=!r,a=s||t.i!=2,d=t.i;s&&(r=new N(i*3));var f=function(ae){var Xe=r.length;if(ae>Xe){var Qe=new N(Math.max(Xe*2,ae));Qe.set(r),r=Qe}},g=t.f||0,l=t.p||0,v=t.b||0,x=t.l,F=t.d,P=t.m,V=t.n,O=i*8;do{if(!x){g=Y(e,l,1);var K=Y(e,l+1,3);if(l+=3,K)if(K==1)x=Vr,F=Kr,P=9,V=5;else if(K==2){var ie=Y(e,l,31)+257,oe=Y(e,l+10,15)+4,E=ie+Y(e,l+5,31)+1;l+=14;for(var M=new N(E),te=new N(19),U=0;U<oe;++U)te[jr[U]]=Y(e,l+U*3,7);l+=oe*3;for(var m=Fe(te),h=(1<<m)-1,u=ge(te,m,1),U=0;U>4;if(C<16)M[U++]=C;else{var c=0,y=0;for(C==16?(y=3+Y(e,l,3),l+=2,c=M[U-1]):C==17?(y=3+Y(e,l,7),l+=3):C==18&&(y=11+Y(e,l,127),l+=7);y–;)M[U++]=c}}var w=M.subarray(0,ie),b=M.subarray(ie);P=Fe(w),V=Fe(b),x=ge(w,P,1),F=ge(b,V,1)}else G(1);else{var C=Xr(l)+4,$=e[C-4]|e[C-3]<i){d&&G(0);break}a&&f(v+$),r.set(e.subarray(C,R),v),t.b=v+=$,t.p=l=R*8,t.f=g;continue}if(l>O){d&&G(0);break}}a&&f(v+131072);for(var A=(1<<P)-1,k=(1<>4;if(l+=c&15,l>O){d&&G(0);break}if(c||G(2),z264){var U=z-257,q=Ct[U];X=Y(e,l,(1<>4;Q||G(3),l+=Q&15;var b=Yr[j];if(j>3){var q=Lt[j];b+=He(e,l)&(1<O){d&&G(0);break}a&&f(v+131072);var H=v+X;if(v<b){var J=o-b,se=Math.min(b,H);for(J+v<0&&G(3);v<se;++v)r[v]=n[J+v]}for(;v<H;++v)r[v]=r[v-b]}}t.l=x,t.p=D,t.b=v,t.f=g,x&&(g=1,t.m=P,t.d=F,t.n=V)}while(!g);return v!=r.length&&s?Qr(r,0,v):r.subarray(0,v)};var en=new N(0);var tn=function(e){(e[0]!=31||e[1]!=139||e[2]!=8)&&G(6,"invalid gzip data");var t=e[3],r=10;t&4&&(r+=(e[10]|e[11]<>3&1)+(t>>4&1);n>0;n-=!e[r++]);return r+(t&2)},rn=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<>>0};var nn=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<>5&1)==+!t&&G(6,”invalid zlib data: “+(e[1]&32?”need”:”unexpected”)+” dictionary”),(e[1]>>3&4)+2};function on(e,t){return Re(e,{i:2},t&&t.out,t&&t.dictionary)}function sn(e,t){var r=tn(e);return r+8>e.length&&G(6,”invalid gzip data”),Re(e.subarray(r,-8),{i:2},t&&t.out||new N(rn(e)),t&&t.dictionary)}function an(e,t){return Re(e.subarray(nn(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}function $t(e,t){return e[0]==31&&e[1]==139&&e[2]==8?sn(e,t):(e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31?on(e,t):an(e,t)}var ln=typeof TextDecodercn(e,”name”,{value:t,configurable:!0}),B=(e,t,r)=>new Promise((n,i)=>{var o=d=>{try{a(r.next(d))}catch(f){i(f)}},s=d=>{try{a(r.throw(d))}catch(f){i(f)}},a=d=>d.done?n(d.value):Promise.resolve(d.value).then(o,s);a((r=r.apply(e,t)).next())}),Qn=T((e,t)=>{let r=!1,n=””,i=L.GridLayer.extend({createTile:T((o,s)=>{let a=document.createElement(“img”),d=new AbortController,f=d.signal;return a.cancel=()=>{d.abort()},r||(e.getHeader().then(g=>{g.tileType===1?console.error(“Error: archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles. See https://github.com/protomaps/PMTiles/tree/main/js for details.”):g.tileType===2?n=”image/png”:g.tileType===3?n=”image/jpeg”:g.tileType===4?n=”image/webp”:g.tileType===5&&(n=”image/avif”)}),r=!0),e.getZxy(o.z,o.x,o.y,f).then(g=>{if(g){let l=new Blob([g.data],{type:n}),v=window.URL.createObjectURL(l);a.src=v,a.cancel=void 0,s(void 0,a)}}).catch(g=>{if(g.name!==”AbortError”)throw g}),a},”createTile”),_removeTile:T(function(o){let s=this._tiles[o];s&&(s.el.cancel&&s.el.cancel(),s.el.width=0,s.el.height=0,s.el.deleted=!0,L.DomUtil.remove(s.el),delete this._tiles[o],this.fire(“tileunload”,{tile:s.el,coords:this._keyToTileCoords(o)}))},”_removeTile”)});return new i(t)},”leafletRasterLayer”),hn=T(e=>(t,r)=>{if(r instanceof AbortController)return e(t,r);let n=new AbortController;return e(t,n).then(i=>r(void 0,i.data,i.cacheControl||””,i.expires||””),i=>r(i)).catch(i=>r(i)),{cancel:T(()=>n.abort(),”cancel”)}},”v3compat”),zt=class{constructor(t){this.tilev4=T((r,n)=>B(this,null,function*(){if(r.type===”json”){let x=r.url.substr(10),F=this.tiles.get(x);if(F||(F=new Le(x),this.tiles.set(x,F)),this.metadata)return{data:yield F.getTileJson(r.url)};let P=yield F.getHeader();return(P.minLon>=P.maxLon||P.minLat>=P.maxLat)&&console.error(`Bounds of PMTiles archive ${P.minLon},${P.minLat},${P.maxLon},${P.maxLat} are not valid.`),{data:{tiles:[`${r.url}/{z}/{x}/{y}`],minzoom:P.minZoom,maxzoom:P.maxZoom,bounds:[P.minLon,P.minLat,P.maxLon,P.maxLat]}}}let i=new RegExp(/pmtiles://(.+)/(d+)/(d+)/(d+)/),o=r.url.match(i);if(!o)throw new Error(“Invalid PMTiles protocol URL”);let s=o[1],a=this.tiles.get(s);a||(a=new Le(s),this.tiles.set(s,a));let d=o[2],f=o[3],g=o[4],l=yield a.getHeader(),v=yield a?.getZxy(+d,+f,+g,n.signal);if(v)return{data:new Uint8Array(v.data),cacheControl:v.cacheControl,expires:v.expires};if(l.tileType===1){if(this.errorOnMissingTile)throw new Error(“Tile not found.”);return{data:new Uint8Array}}return{data:null}}),”tilev4″),this.tile=hn(this.tilev4),this.tiles=new Map,this.metadata=t?.metadata||!1,this.errorOnMissingTile=t?.errorOnMissingTile||!1}add(t){this.tiles.set(t.source.getKey(),t)}get(t){return this.tiles.get(t)}};T(zt,”Protocol”);var Bt=zt;function Ft(e,t){return(t>>>0)*4294967296+(e>>>0)}T(Ft,”toNum”);function Ht(e,t){let r=t.buf,n=r[t.pos++],i=(n&112)>>4;if(n<128||(n=r[t.pos++],i|=(n&127)<<3,n<128)||(n=r[t.pos++],i|=(n&127)<<10,n<128)||(n=r[t.pos++],i|=(n&127)<<17,n<128)||(n=r[t.pos++],i|=(n&127)<<24,n<128)||(n=r[t.pos++],i|=(n&1)<<31,n<128))return Ft(e,i);throw new Error("Expected varint not more than 10 bytes")}T(Ht,"readVarintRemainder");function fe(e){let t=e.buf,r=t[e.pos++],n=r&127;return r<128||(r=t[e.pos++],n|=(r&127)<<7,r<128)||(r=t[e.pos++],n|=(r&127)<<14,r<128)||(r=t[e.pos++],n|=(r&127)<<21,r<128)?n:(r=t[e.pos],n|=(r&15)<<28,Ht(n,e))}T(fe,"readVarint");function Ie(e,t,r,n){if(n===0){r===1&&(t[0]=e-1-t[0],t[1]=e-1-t[1]);let i=t[0];t[0]=t[1],t[1]=i}}T(Ie,"rotate");function Ot(e,t){let r=ye(2,e),n=t,i=t,o=t,s=[0,0],a=1;for(;a26)throw new Error(“Tile zoom level exceeds max safe number limit (26)”);if(t>ye(2,e)-1||r>ye(2,e)-1)throw new Error(“tile x/y outside zoom level bounds”);let n=fn[e],i=ye(2,e),o=0,s=0,a=0,d=[t,r],f=i/2;for(;f>0;)o=(d[0]&f)>0?1:0,s=(d[1]&f)>0?1:0,a+=f*f*(3*o^s),Ie(f,d,o,s),f=f/2;return n+a}T(Rt,”zxyToTileId”);function dn(e){let t=0,r=0;for(let n=0;n<27;n++){let i=(1<<n)*(1<e)return Ot(n,e-t);t+=i}throw new Error(“Tile zoom level exceeds max safe number limit (26)”)}T(dn,”tileIdToZxy”);var pn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.None=1]=”None”,e[e.Gzip=2]=”Gzip”,e[e.Brotli=3]=”Brotli”,e[e.Zstd=4]=”Zstd”,e))(pn||{});function Pe(e,t){return B(this,null,function*(){if(t===1||t===0)return e;if(t===2){if(typeof globalThis.DecompressionStream>”u”)return $t(new Uint8Array(e));let r=new Response(e).body;if(!r)throw new Error(“Failed to read response stream”);let n=r.pipeThrough(new globalThis.DecompressionStream(“gzip”));return new Response(n).arrayBuffer()}throw new Error(“Compression method not supported”)})}T(Pe,”defaultDecompress”);var vn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.Mvt=1]=”Mvt”,e[e.Png=2]=”Png”,e[e.Jpeg=3]=”Jpeg”,e[e.Webp=4]=”Webp”,e[e.Avif=5]=”Avif”,e))(vn||{});function Ut(e){return e===1?”.mvt”:e===2?”.png”:e===3?”.jpg”:e===4?”.webp”:e===5?”.avif”:””}T(Ut,”tileTypeExt”);var gn=127;function It(e,t){let r=0,n=e.length-1;for(;r>1,o=t-e[i].tileId;if(o>0)r=i+1;else if(o=0&&(e[n].runLength===0||t-e[n].tileId-1,o=/Chrome|Chromium|Edg|OPR|Brave/.test(n);this.chromeWindowsNoCache=!1,i&&o&&(this.chromeWindowsNoCache=!0)}getKey(){return this.url}setHeaders(t){this.customHeaders=t}getBytes(t,r,n,i){return B(this,null,function*(){let o,s;n?s=n:(o=new AbortController,s=o.signal);let a=new Headers(this.customHeaders);a.set(“range”,`bytes=${t}-${t+r-1}`);let d;this.mustReload?d=”reload”:this.chromeWindowsNoCache&&(d=”no-store”);let f=yield fetch(this.url,{signal:s,cache:d,headers:a});if(t===0&&f.status===416){let v=f.headers.get(“Content-Range”);if(!v||!v.startsWith(“bytes */”))throw new Error(“Missing content-length on 416 response”);let x=+v.substr(8);f=yield fetch(this.url,{signal:s,cache:”reload”,headers:{range:`bytes=0-${x-1}`}})}let g=f.headers.get(“Etag”);if(g!=null&&g.startsWith(“W/”)&&(g=null),f.status===416||i&&g&&g!==i)throw this.mustReload=!0,new Ue(`Server returned non-matching ETag ${i} after one retry. Check browser extensions and servers for issues that may affect correct ETag headers.`);if(f.status>=300)throw new Error(`Bad response code: ${f.status}`);let l=f.headers.get(“Content-Length”);if(f.status===200&&(!l||+l>r))throw o&&o.abort(),new Error(“Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.”);return{data:yield f.arrayBuffer(),etag:g||void 0,cacheControl:f.headers.get(“Cache-Control”)||void 0,expires:f.headers.get(“Expires”)||void 0}})}};T(qt,”FetchSource”);var yn=qt;function W(e,t){let r=e.getUint32(t+4,!0),n=e.getUint32(t+0,!0);return r*ye(2,32)+n}T(W,”getUint64″);function Gt(e,t){let r=new DataView(e),n=r.getUint8(7);if(n>3)throw new Error(`Archive is spec version ${n} but this library supports up to spec version 3`);return{specVersion:n,rootDirectoryOffset:W(r,8),rootDirectoryLength:W(r,16),jsonMetadataOffset:W(r,24),jsonMetadataLength:W(r,32),leafDirectoryOffset:W(r,40),leafDirectoryLength:W(r,48),tileDataOffset:W(r,56),tileDataLength:W(r,64),numAddressedTiles:W(r,72),numTileEntries:W(r,80),numTileContents:W(r,88),clustered:r.getUint8(96)===1,internalCompression:r.getUint8(97),tileCompression:r.getUint8(98),tileType:r.getUint8(99),minZoom:r.getUint8(100),maxZoom:r.getUint8(101),minLon:r.getInt32(102,!0)/1e7,minLat:r.getInt32(106,!0)/1e7,maxLon:r.getInt32(110,!0)/1e7,maxLat:r.getInt32(114,!0)/1e7,centerZoom:r.getUint8(118),centerLon:r.getInt32(119,!0)/1e7,centerLat:r.getInt32(123,!0)/1e7,etag:t}}T(Gt,”bytesToHeader”);function qe(e){let t={buf:new Uint8Array(e),pos:0},r=fe(t),n=[],i=0;for(let o=0;o<r;o++){let s=fe(t);n.push({tileId:i+s,offset:0,length:0,runLength:1}),i+=s}for(let o=0;o<r;o++)n[o].runLength=fe(t);for(let o=0;o<r;o++)n[o].length=fe(t);for(let o=0;o0?n[o].offset=n[o-1].offset+n[o-1].length:n[o].offset=s-1}return n}T(qe,”deserializeIndex”);var Nt=class extends Error{};T(Nt,”EtagMismatch”);var Ue=Nt;function Ge(e,t){return B(this,null,function*(){let r=yield e.getBytes(0,16384);if(new DataView(r.data).getUint16(0,!0)!==19792)throw new Error(“Wrong magic number for PMTiles archive”);let n=r.data.slice(0,gn),i=Gt(n,r.etag),o=r.data.slice(i.rootDirectoryOffset,i.rootDirectoryOffset+i.rootDirectoryLength),s=`${e.getKey()}|${i.etag||””}|${i.rootDirectoryOffset}|${i.rootDirectoryLength}`,a=qe(yield t(o,i.internalCompression));return[i,[s,a.length,a]]})}T(Ge,”getHeaderAndRoot”);function Ne(e,t,r,n,i){return B(this,null,function*(){let o=yield e.getBytes(r,n,void 0,i.etag),s=yield t(o.data,i.internalCompression),a=qe(s);if(a.length===0)throw new Error(“Empty directory is invalid”);return a})}T(Ne,”getDirectory”);var wn=class{constructor(t=100,r=!0,n=Pe){this.cache=new Map,this.maxCacheEntries=t,this.counter=1,this.decompress=n}getHeader(t){return B(this,null,function*(){let r=t.getKey(),n=this.cache.get(r);if(n)return n.lastUsed=this.counter++,n.data;let i=yield Ge(t,this.decompress);return i[1]&&this.cache.set(i[1][0],{lastUsed:this.counter++,data:i[1][2]}),this.cache.set(r,{lastUsed:this.counter++,data:i[0]}),this.prune(),i[0]})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,s.data;let a=yield Ne(t,this.decompress,r,n,i);return this.cache.set(o,{lastUsed:this.counter++,data:a}),this.prune(),a})}prune(){if(this.cache.size>this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{Ge(t,this.decompress).then(a=>{a[1]&&this.cache.set(a[1][0],{lastUsed:this.counter++,data:Promise.resolve(a[1][2])}),o(a[0]),this.prune()}).catch(a=>{s(a)})});return this.cache.set(r,{lastUsed:this.counter++,data:i}),i})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,yield s.data;let a=new Promise((d,f)=>{Ne(t,this.decompress,r,n,i).then(g=>{d(g),this.prune()}).catch(g=>{f(g)})});return this.cache.set(o,{lastUsed:this.counter++,data:a}),a})}prune(){if(this.cache.size>=this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{this.getHeader(t).then(s=>{i(),this.invalidations.delete(r)}).catch(s=>{o(s)})});this.invalidations.set(r,n)})}};T(Zt,”SharedPromiseCache”);var bn=Zt,Wt=class{constructor(t,r,n){typeof t==”string”?this.source=new yn(t):this.source=t,n?this.decompress=n:this.decompress=Pe,r?this.cache=r:this.cache=new bn}getHeader(){return B(this,null,function*(){return yield this.cache.getHeader(this.source)})}getZxyAttempt(t,r,n,i){return B(this,null,function*(){let o=Rt(t,r,n),s=yield this.cache.getHeader(this.source);if(ts.maxZoom)return;let a=s.rootDirectoryOffset,d=s.rootDirectoryLength;for(let f=0;f0){let v=yield this.source.getBytes(s.tileDataOffset+l.offset,l.length,i,s.etag);return{data:yield this.decompress(v.data,s.tileCompression),cacheControl:v.cacheControl,expires:v.expires}}a=s.leafDirectoryOffset+l.offset,d=l.length}else return}throw new Error(“Maximum directory depth exceeded”)})}getZxy(t,r,n,i){return B(this,null,function*(){try{return yield this.getZxyAttempt(t,r,n,i)}catch(o){if(o instanceof Ue)return this.cache.invalidate(this.source),yield this.getZxyAttempt(t,r,n,i);throw o}})}getMetadataAttempt(){return B(this,null,function*(){let t=yield this.cache.getHeader(this.source),r=yield this.source.getBytes(t.jsonMetadataOffset,t.jsonMetadataLength,void 0,t.etag),n=yield this.decompress(r.data,t.internalCompression),i=new TextDecoder(“utf-8″);return JSON.parse(i.decode(n))})}getMetadata(){return B(this,null,function*(){try{return yield this.getMetadataAttempt()}catch(t){if(t instanceof Ue)return this.cache.invalidate(this.source),yield this.getMetadataAttempt();throw t}})}getTileJson(t){return B(this,null,function*(){let r=yield this.getHeader(),n=yield this.getMetadata(),i=Ut(r.tileType);return{tilejson:”3.0.0″,scheme:”xyz”,tiles:[`${t}/{z}/{x}/{y}${i}`],vector_layers:n.vector_layers,attribution:n.attribution,description:n.description,name:n.name,version:n.version,bounds:[r.minLon,r.minLat,r.maxLon,r.maxLat],center:[r.centerLon,r.centerLat,r.centerZoom],minzoom:r.minZoom,maxzoom:r.maxZoom}})}};T(Wt,”PMTiles”);var Le=Wt;var we=[{name:”Mirenda Center at Neumann University”,town:”Aston Township”,coordinates:”39.87518295957942, -75.44287264018742″,photo:”CUFT75EQJFCNXF6TBJWB47IZBE”,description:”Tom (Mark Ruffalo) mans a table at a job fair here while temporarily working as a recruiter for the FBI. Next to his station, the distinctive pillars of the centeru2019s atrium are visible.”,episode:”1″},{name:”Rita’s Italian Ice & Frozen Custard”,town:”Collingdale”,coordinates:”39.91438144966683, -75.27198755476991″,photo:”PVN6FY7AZVH57NJJ5QZMPSORVQ”,description:”Emily (Silvia Dionicio), Tomu2019s daughter, works her part-time job here. In the scene where it is shown, Tom orders a black cherry water ice, a flavor choice of which we approve.”,episode:”1″},{name:”Former Philadelphia Police Department Headquarters”,town:”Philadelphia”,coordinates:”39.95454212611587, -75.15196309318775″,photo:”L7RTCVGETVB6BGP3OI6FGI75II”,description:”We get a brief glimpse of the exterior of the former Philadelphia police headquarters, colloquially known as the Roundhouse. Whether the interior is the same building is unclear, but in the show, this appears to be where the FBIu2019s Philly field office is located.”,episode:”1″},{name:”Bangor Quarry”,town:”Bangor”,coordinates:”40.870304770450126, -75.20395382209078″,photo:””,description:”Robbie (Tom Pelphrey), Cliff (RaxFAl Castillo), and Peaches (Owen Teague) head here for a post-robbery swim. On a real-life note, you should not do the same u2014 not only is it dangerous, but itu2019s also trespassing, according to the Bangor Borough Police Department.”,episode:”1″},{name:”Lincoln Highway and 2nd Avenue”,town:”Coatesville”,coordinates:”39.98367030794463, -75.82206085300957″,photo:”DKXFYZ5EGBEHJJKLSUGLQQDAR4″,description:”The Dark Hearts motorcycle gang rides through this intersection in formation, the giveaway being Presence Bank in the background in one shot.”,episode:”2″},{name:”Polish American Citizens Club”,town:”Coatesville”,coordinates:”39.98079295642107, -75.83090353169075″,photo:”WICMTOVTBFE3HANVTH2PSHED5M”,description:”Done up as the so-called Leftyu2019s Taproom in the show, this location serves as the Dark Heartsu2019 clubhouse and watering hole. In real life, itu2019s just off Lincoln Highway, lending a bit of realism to the gangu2019s ride through downtown Coatesville.”,episode:”2″},{name:”Martin’s Taphouse”,town:”Aston Township”,coordinates:”39.89042265129427, -75.43449503510138″,photo:””,description:”Martin’s stands in as the exterior of the Tip Top Lounge in the series, which we see in this episode stacked with motorcycles parked outside the front door.”,episode:”2″},{name:”Dixon’s Lounge”,town:”Sharon Hill”,coordinates:”39.897139107273794, -75.27191565278125″,photo:”BHMNCU4FFJGOBPUKYCZBB2XEOA”,description:”While the exterior of the Tip Top Lounge is in Aston, the interior bears a striking resemblance to Delcou2019s own Dixonu2019s Lounge. Here, Robbie and Cliff are stood up by an, ahem, u201Cbusiness partneru201D before walking out on an order of crabfries.”,episode:”2″},{name:”Willowbrook Shopping Center”,town:”Boothwyn”,coordinates:”39.83646391291799, -75.44319408140227″,photo:”ZU5QXUIDONETHIPPADUJYMAKCY”,description:”Maeve (Emilia Jones) takes Sam (Ben Lewis Doherty) to a fictional u201CVal-U Corneru201D store here with the intent of dropping him off for police to find before the plan goes awry. The store is located near the real Blue Cherry Ice Cream and Bakery, which is visible in the background.”,episode:”2″},{name:”Phoenixville Area High School”,town:”Phoenixville”,coordinates:”40.11868357112564, -75.51793551723154″,photo:””,description:”During his search for his daughter, Emily (Silvia Dionicio), Tom (Mark Ruffalo) finds her in the dugout of a baseball field that, in real life, is at Phoenixville Area High School. Its distinctive backstop is visible from a bird’s-eye view in the series.”,episode:”2″},{name:”Ralph’s Italian Restaurant”,town:”Philadelphia”,coordinates:”39.94006065749021, -75.15774535245488″,photo:”GMDZYMAHRNFGPBTYLRABBDJYHM”,description:”Dark Hearts leaders Jayson (Sam Keeley) and Perry (Jamie McShane) walk through the kitchen here to meet with local drug kingpin Freddy Frias (Elvis Nolasco), but in the show, it doesnu2019t appear to be serving the Italian food weu2019re used to in real life.”,episode:”3″},{name:”Mount Hope Cemetery”,town:”Aston Township”,coordinates:”39.871593701306836, -75.4390865914003″,photo:”4PCNSW4SPBAW7L2WFSJ2STJ3IM”,description:”Itu2019s a very quick shot, but itu2019s there just under four minutes into the episode. In the background, you can see the Commodore Barry Bridge, and graves on a hill in the cemetery in the foreground.”,episode:”3″},{name:”Sixpenny Creek Quarry”,town:”Union Township”,coordinates:”40.23700358370588, -75.78650582204335″,photo:”PLM34YOMIRCPPDVCGTFXM5FGME”,description:”Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) finally get their meeting with Eryn (Margarita Levieva), their Dark Hearts insider, but it doesnu2019t go according to plan.”,episode:”3″},{name:”Llanerch Diner”,town:”Upper Darby”,coordinates:”39.96894828437008, -75.29301814827437″,photo:”6QXQDIMGKVDR5J64W4PVS3WP3E”,description:”Taskforce members Aleah (Thuso Mbedu) and Lizzie (Alison Oliver) head to Upper Darby’s famed Llanerch Diner for a tip on the drug house robberies they’re investigating, and get a break in the case.”,episode:”3″},{name:”Rosedon Plaza”,town:”Lansdowne”,coordinates:”39.94225704587108, -75.26528827286353″,photo:”SCB2N67GLFACZO33OOA7CLXQMM”,description:”In the background of one shot during the chase for Ray (Peter Patrikios), you can see the old Doc’s Deli (Deli Green). That puts Ray in the corner of the Rosedon Plaza parking lot as Lizzie (Alison Oliver) makes the arrest.”,episode:”3″},{name:”Coatesville Police Department”,town:”Coatesville”,coordinates:”39.982144078230384, -75.82033869646108″,photo:”XTADWTS6UNEDHOJGNIMWPBBOLE”,description:”Whether the interior is the same station isnu2019t clear, but an exterior shot sets this spot up as the place where the Task team interrogates Ray (Peter Patrikios) and Shelley (Mickey Sumner). Out front, a police cruiser reads u201CDelaware County Sheriff,u201D which is a little far from home.”,episode:”3″},{name:”The Ridley House”,town:”Holmes”,coordinates:”39.89753600427107, -75.31137880453917″,photo:”F2JJYIIZWFA3FFTHDPSXFI5M5A”,description:”Following the chase and interrogation, Lizzie (Alison Oliver) and Grasso (Fabien Frankel) head to this local bar to unwind. Grasso indicates it is a Barnabyu2019s, which, in real life, was true at one point u2013 until the location became the Ridley House in 2019.”,episode:”3″},{name:”Pennsylvania Turnpike on-ramp”,town:”King of Prussia”,coordinates:”40.08960425823238, -75.39689126886788″,photo:”BURLUGM6TRDX3CE46XSFYGJK7M”,description:”Itu2019s a quick shot as Tom (Mark Ruffalo) drives around at the beginning of the episode, but you can just make out the LasikPlus building on Mall Boulevard in the background. That puts this Pennsylvania Turnpike entrance in King of Prussia.”,episode:”4″},{name:”I-76 Exit 320″,town:”Malvern”,coordinates:”40.073716457225665, -75.52365668680957″,photo:””,description:”Tom (Mark Ruffalo) appears to take this exit as he is driving to meet his fellow taskforce members.”,episode:”4″},{name:”Marcus Hook Community Center”,town:”Marcus Hook”,coordinates:”39.81198192114949, -75.41200706776057″,photo:”B76EM6PKTFEB7KFWEUWGOWYDL4″,description:”As County Chief Dorsey (Raphael Sbarge) exits the building, you can see a door tagged with u201CDelaware County Sheriffu2019s Office.u201D But the green awning above him is a dead giveaway u2014 thatu2019s the Marcus Hook Community Center.”,episode:”4″},{name:”Rockdale Industrial Center”,town:”Aston Township “,coordinates:”39.885281970146785, -75.44479191780039″,photo:””,description:”It’s disguised as a trucking depot in the series, but this is where Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) travel with Sam (Ben Lewis Doherty) to arrange transportation for their escape into Canada before being confronted by a Good Samaritan. “,episode:”4″},{name:”Upland Diner”,town:”Chester”,coordinates:”39.85816357241053, -75.37189095611281″,photo:”PVJMMBSI2ZBGJNQO46VYY5P6GQ”,description:”Upland Dineru2019s parking lot serves as Robbieu2019s (Tom Pelphrey) holding area during this episodeu2019s drug deal. Unfortunately, we only get an exterior shot of the building, but the restaurantu2019s vintage-style sign is proudly on display. Great pancakes, for the record.”,episode:”4″},{name:”Ridley Creek State Park entrance”,town:”Newtown Square”,coordinates:”39.95853496065017, -75.43948479664033″,photo:”KOSWCMRRHRAB7MLGNLQIF535UM”,description:”Cliff (RaxFAl Castillo) can be seen turning onto North Sandy Flash Drive from Gradyville Road as he heads to the drug deal meeting spot. If you look closely, you can just barely make out a sign for Ridley Creek State Park.”,episode:”4″},{name:”Beaver Creek”,town:”Wilmington, Del.”,coordinates:”39.839261612846315, -75.57139152554225″,photo:””,description:”It’s tough to spot, but the dam that Cliff (RaxFAl Castillo) parks his car next to during this episode’s failed drug deal u2014 or, more accurately, the Dark Hearts’ setup u2014 appears to be in Beaver Creek on the Delaware-Pennsylvania border.”,episode:”4″},{name:”City Clock Apartments”,town:”Coatesville”,coordinates:”39.98382540387415, -75.8211284189516″,photo:”3BYXFXCYUFFRZBUSN5UAPYVYOA”,description:”Another brief shot, but the clock face on the tower of the City Clock Apartments is prominently featured. The building formerly was the National Bank of Coatesville, and has been on the National Register of Historic Places since 1977.”,episode:”4″},{name:”Coatesville-Downingtown Bypass”,town:”Downingtown”,coordinates:”40.01895444780408, -75.70181027552258″,photo:””,description:”FBI Boss Kathleen McGinty (Martha Plimpton) and the rest of the task force swerve across traffic here while looking for Tom (Mark Ruffalo). In the background, you can just make out the sign for Pacer Pool Services & Supplies.”,episode:”5″},{name:”Marsh Creek State Park”,town:”Downingtown”,coordinates:”40.06782560219195, -75.72000193749815″,photo:”NT5JGVMLZFDJTGHC6M7BZFI7Y4″,description:”After surviving his encounter with Robbie (Tom Pelphrey), Tom (Mark Ruffalo) emerges from the woods to see a beautiful summer scene of families enjoying the lake at Marsh Creek State Park.”,episode:”5″},{name:”I-95 Pennsylvania Welcome Center”,town:”Boothwyn”,coordinates:”39.82418322018552, -75.43745107822149″,photo:”5HPTTXFG3ZA2HGAW54OXM4D5ZY”,description:”FBI boss Kathleen McGinty (Martha Plimpton) stuffs her face with fast food at the center’s picnic tables as the task crew looks for their leader. As McGinty explains, she is u201Can emotional eater.u201D”,episode:”5″},{name:”Woy Bridge”,town:”Everett”,coordinates:”40.0150517796881, -78.304498566625″,photo:””,description:”In what is likely the farthest-flung filming location u2013 at least in relation to the rest of the local spots u2013 we get some shots of Everettu2019s Woy Bridge in Bedford County as the taskforce closes in on Robbie (Tom Pelphrey).”,episode:”5″},{name:”Our Lady of Peace Parish”,town:”Milmont Park”,coordinates:”39.88193514095659, -75.33589782814482″,photo:”HGPPGXLRFZFUFE5WBNNXP3DXFM”,description:”Though disguised well as a juvenile detention facility in the show, this little Delco parish provides at least the exterior shots for where Tom (Mark Ruffalo) meets Sam (Ben Lewis Doherty) for the first time.”,episode:”6″},{name:”High Bridge”,town:”Coatesville”,coordinates:”39.98390784773821, -75.82749681114403″,photo:””,description:”This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso’s (Fabien Frankel) fate with the Dark Hearts.”,episode:”7″},{name:”Delaware County Courthouse and Government Center”,town:”Media”,coordinates:”39.92029464476607, -75.39155431097433″,photo:”NWW6JA6A4FBAJHW7ZIXSIPZ2YA”,description:”Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.”,episode:”7″}];var Z=63710088e-1,ai={centimeters:Z*100,centimetres:Z*100,degrees:360/(2*Math.PI),feet:Z*3.28084,inches:Z*39.37,kilometers:Z/1e3,kilometres:Z/1e3,meters:Z,metres:Z,miles:Z/1609.344,millimeters:Z*1e3,millimetres:Z*1e3,nauticalmiles:Z/1852,radians:1,yards:Z*1.0936};function xn(e,t,r={}){let n={type:”Feature”};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function jt(e,t,r={}){return xn({type:”MultiPoint”,coordinates:e},t,r)}function Ze(e,t,r){if(e!==null)for(var n,i,o,s,a,d,f,g=0,l=0,v,x=e.type,F=x===”FeatureCollection”,P=x===”Feature”,V=F?e.features.length:1,O=0;O<V;O++){f=F?e.features[O].geometry:P?e.geometry:e,v=f?f.type==="GeometryCollection":!1,a=v?f.geometries.length:1;for(var K=0;K<a;K++){var C=0,$=0;if(s=v?f.geometries[K]:f,s!==null){d=s.coordinates;var R=s.type;switch(g=r&&(R==="Polygon"||R==="MultiPolygon")?1:0,R){case null:break;case"Point":if(t(d,l,O,C,$)===!1)return!1;l++,C++;break;case"LineString":case"MultiPoint":for(n=0;n<d.length;n++){if(t(d[n],l,O,C,$)===!1)return!1;l++,R==="MultiPoint"&&C++}R==="LineString"&&C++;break;case"Polygon":case"MultiLineString":for(n=0;n<d.length;n++){for(i=0;i<d[n].length-g;i++){if(t(d[n][i],l,O,C,$)===!1)return!1;l++}R==="MultiLineString"&&C++,R==="Polygon"&&$++}R==="Polygon"&&C++;break;case"MultiPolygon":for(n=0;n<d.length;n++){for($=0,i=0;i<d[n].length;i++){for(o=0;o<d[n][i].length-g;o++){if(t(d[n][i][o],l,O,C,$)===!1)return!1;l++}$++}C++}break;case"GeometryCollection":for(n=0;n{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]<n[0]&&(r[2]=n[0]),r[3]{pe(“https://interactives.inquirer.com/storage/dependencies/maplibre/5.3.0/maplibre-gl.js”,()=>{let e=new Bt;be=window.maplibregl,be.addProtocol(“pmtiles”,e.tile);let t=”https://interactives.inquirer.com/melish/1.2″,r=`${t}/us-latest.pmtiles`,n=new Le(r);e.add(n),n.getHeader().then(async()=>{let o=await(await fetch(`${t}/styles/neutral.json`)).json();ee=new be.Map({container:”map”,zoom:13,center:[-75.165222,39.952583],cooperativeGestures:!0,attributionControl:!1,padding,style:{…o,sources:{openmaptiles:{type:”vector”,url:`pmtiles://${r}`}}}}),ee.scrollZoom.disable(),ee.touchPitch.disable(),ee.addControl(new be.NavigationControl({showCompass:!1,showZoom:!0,visualizePitch:!1}),”bottom-right”),ee.on(“load”,()=>{Cn(),Ee!==”all”?Ae=we.filter(s=>parseInt(s.episode)parseFloat(d)).reverse(),s.id=ze(s.name),s.photo&&(s.imageSrc=`https://interactives.inquirer.com/secondbank/arc/${s.photo}/650.webp`);let a=xe(“js-map-stub”);Te(a,s),a.addEventListener(“click”,()=>{Yt(a)}),a.addEventListener(“mouseover”,()=>{Yt(a)}),a.addEventListener(“mouseout”,()=>{Xt()}),new be.Marker({element:a}).setLngLat(s.coordinates).addTo(ee)}document.querySelector(“.js-map”).classList.add(“is-loaded”),Kt=!0,Me!=””&&(er(Me),_t(Me))})})})},Yt=e=>{Xt(),e.classList.add(“is-highlight”)},Xt=()=>{document.querySelectorAll(“.js-map-location”).forEach(e=>{e.classList.remove(“is-highlight”)})},Cn=()=>{Ee=document.querySelector(“.js-steps”).dataset.episodeForPage},Qt=()=>{let e=window.innerWidth>960;padding={top:50,bottom:e?50:window.innerHeight/2,left:e?window.innerWidth/2+50:50,right:50}},Ln=()=>{window.addEventListener(“resize”,()=>{Qt()})},_t=e=>{if(Me=null,e==null){let t=we.filter(r=>r.episode==Ee);ee.fitBounds(Vt(t),{animate:!0})}else if(e.step==”all”)ee.fitBounds(Vt(Ae),{animate:!0});else{let t=we.filter(r=>ze(r.name)==e.step);t.length>0&&ee.flyTo({center:t[0].coordinates,padding,zoom:13,animate:!0,duration:1e3})}},er=e=>{document.querySelectorAll(“.js-map-location”).forEach(t=>{t.classList.remove(“is-current”)}),e&&e.step!==”all”&&document.querySelector(`.js-map-location[data-id=”${e.step}”]`).classList.add(“is-current”)},Vt=e=>{let t=jt(e.map(n=>n.coordinates));return Jt(t)},ke={init:()=>{Tn(),Qt(),Ln()},update:e=>{Kt?(_t(e),er(e)):Me=e}};var Je=yr(tr());var Pn=async()=>{let t=await(await fetch(“https://interactives.inquirer.com/pepper/2025-task-locations/data.json”)).json();t=t.nav,console.log(t);let r=(0,Je.default)();t=t.filter(i=>r.isAfter((0,Je.default)(`${i.date} 22:00`))),t=t.filter(i=>i.link);let n=document.querySelector(“.js-nav-links”);for(let i of t){i.text=`Episode ${i.episode}`;let o=xe(“js-nav-link-stub”);Te(o,i),n.appendChild(o)}},rr={init:()=>{Pn()}};var De,An=(e,t)=>{De=De||window.PMNdataLayer,De?De.push({event:”misc_event”,eventAction:e,eventLabel:t}):window.location.hostname.includes(“localhost”)?console.log(“Analytics event:”,e,t,”(not actually being sent due to localhost)”):console.log(“Failed to push analytics event”,e,t)},nr={event:(e,t)=>{An(e,t)}};var ir=1,Ye=class{constructor(t){this.el=t,this.contentPosition=”default”,this.possibleSteps=new Array,this.currentStep=null,this.offset=window.innerHeight*.5,this.instanceOfSteps=ir,this.hasMap=!!t.dataset.map,ir++,this.setOffset(),this.setPossibleSteps(),this.updateContent(),this.bindings()}setPossibleSteps(){this.el.querySelectorAll(“.js-steps-step”).forEach(t=>{t.dataset.step&&this.possibleSteps.push(t.dataset.step)})}bindings(){window.addEventListener(“scroll”,()=>{this.updateContent()}),window.addEventListener(“resize”,()=>{this.updateContent(),this.setOffset()})}setOffset(){window.innerWidth>960?this.offset=window.innerHeight*.5:this.offset=window.innerHeight*.8}updateContent(){this.updateCurrentStep()}updateCurrentStep(){let t,r;if(this.el.querySelectorAll(“.js-steps-step”).forEach((i,o)=>{i.getBoundingClientRect().top{let a=”is-“+o,d=”is-“+s;this.possibleSteps.indexOf(o){document.querySelectorAll(“.js-steps”).forEach(e=>{new Ye(e)})}};var En=()=>{},sr={init:()=>{En()}};var de,Ve,Ke=!0,kn=()=>{de=document.querySelectorAll(“.js-video-autoplay”)},Dn=()=>{window.addEventListener(“resize”,()=>{ar()}),window.addEventListener(“scroll”,()=>{ar()}),de.forEach(e=>{e.addEventListener(“volumechange”,t=>{e.muted!==Ke&&!dt()&&(Ke=e.muted,$n())})})},ar=()=>{let e;de.forEach((t,r)=>{let n=t.getBoundingClientRect(),i=n.height/2;n.y-i&&(e=t)}),e!==Ve&&(Ve=e,de.forEach(t=>{t.pause()}),e?e.play():Ve=null)},$n=()=>{de.forEach(e=>{e.muted=Ke})},lr={init:()=>{kn(),de&&Dn()}};var ur={init:()=>{st.init?.(),mt.init?.(),bt.init?.(),Mt.init?.(),Tt.init?.(),ke.init?.(),rr.init?.(),or.init?.(),sr.init?.(),lr.init?.(),ue.init?.()}};var zn=()=>{},cr={init:()=>{zn()}};var Bn=document.querySelector(“.js-inno”),hr=()=>{ur.init(),cr.init()};Bn?hr():new MutationObserver((t,r)=>{if(document.querySelector(“.js-inno”)){r.disconnect(),hr();return}}).observe(document,{attributes:!0,childList:!0,subtree:!0});})();