91³Ô¹ÏÍø

Watch CBS News

Peaceful protester assaulted outside Westmoreland County Courthouse, police say

Greensburg police say a peaceful protester was assaulted at the Westmoreland County Courthouse on Tuesday while demonstrating against the Trump administration.

Investigators say Gregory Powers has been holding a daily "visible action" on the sidewalk near the courthouse for the past 291 days, typically without incident.

But on Tuesday, police say Justin Bowser of Texas drove his Jeep onto the sidewalk and confronted Powers, pushing them, tearing down their flags and signs, and then attempting to flee. Bowser even bent his license plate upward, so police wouldn't be able to read it.

Powers captured some of this confrontation and Bowser's arrest on camera.

Police say Bowser now faces multiple charges, including misdemeanor theft and disorderly conduct, along with a felony robbery charge for allegedly taking Powers' American flag by force.

Powers was not injured in the assault and returned to the courthouse sidewalk on Wednesday, undeterred, with a simple message.

"Other people have done similar things in the past," Powers said. "It didn't stop me then, and it is not going to stop me now. We all have to continue, regardless of what is going on in our lives. We have to endure, and that's part of what I am doing here as well. I am trying to show that we can rise up every day, in spite of all our challenges, and that we need to love each and every one of us."

Abby Graham Pardus, head of WTF Can I Do Westmoreland, the group that organizes political rallies in the county and is affiliated with Powers, says she's relieved he's OK but concerned about what she calls a rise in political violence.

Graham Pardus points to a previous incident at an October "No Kings" rally in Westmoreland County, where she says an elderly woman was assaulted by a man who used the pole of a Trump flag to hit her.

She added that while the group maintains a strong working relationship with local police, there is only so much that they and law enforcement can do to guarantee safety at public demonstrations.

"At this point," Grahm Pardus said, "When I go to these rallies, my husband used to come with me, and I have him stay home now with our kids because God forbid something happens, I want our kids to still have at least one parent. I know that sounds absolutely horrible, but that's the world we live in."

KDKA-TV reached out to Bowser's attorney for comment on the case, but did not hear back.

The "No Kings" rally is still slated to take place at the Westmoreland County Courthouse on March 28 from 12 p.m. to 2 p.m.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });