Maryam Akabari Monfared | Varamin | Released | Witness Report Incorporated {"@context":"https://schema.org","@type":"ProfilePage","@id":"https://witness.report/people/caba98b9-a867-11ed-8bb6-560003f1f421/maryam-akabari-monfared#profile","url":"https://witness.report/people/caba98b9-a867-11ed-8bb6-560003f1f421/maryam-akabari-monfared","name":"Maryam Akabari Monfared | Varamin | Released | Witness Report Incorporated","mainEntity":{"@type":"Person","@id":"https://witness.report/people/caba98b9-a867-11ed-8bb6-560003f1f421/maryam-akabari-monfared#person","name":"Maryam Akabari Monfared","identifier":"caba98b9-a867-11ed-8bb6-560003f1f421","url":"https://witness.report/people/caba98b9-a867-11ed-8bb6-560003f1f421/maryam-akabari-monfared","alternateName":"مریم اکبری منفرد","image":"https://witness.report/images/caba98b9-a867-11ed-8bb6-560003f1f421.jpg","nationality":["Iranian"],"description":"Last status: Released | Health: Unknown | City: Varamin"},"primaryImageOfPage":{"@type":"ImageObject","contentUrl":"https://witness.report/images/caba98b9-a867-11ed-8bb6-560003f1f421.jpg","url":"https://witness.report/images/caba98b9-a867-11ed-8bb6-560003f1f421.jpg"}} Home About Tags ShahedSang Iran Massacre 2026 Artist Athlete Blogger CaseNeedsUpdate ChainMurders Disability EnvironmentalActivist HealthcareStaff Journalist LabourActivist Lawyer NonPoliticalCase Photographer Poet PS752Justice ReligiousMinority Student Teacher TheGreenMovement Writer Browse in Advanced Search Get Involved Report New Case Membership Support Our Work Witness Report API News English Persian Advanced Search Search Logout 📞 +61485870004 📞 Call 💬 WhatsApp ✈️ Telegram (function() { const STORAGE_KEY = 'wr_google_id_token_v1'; const clientId = "196042580665-2576hlsgr5kr1qujskevu0ogjc99e0ug.apps.googleusercontent.com"; let googleIdentityPromise = null; window.wrLoadGoogleIdentity = function() { if (!clientId || (window.google && google.accounts && google.accounts.id)) { return Promise.resolve(); } if (googleIdentityPromise) return googleIdentityPromise; googleIdentityPromise = new Promise(function(resolve, reject) { const script = document.createElement('script'); script.src = 'https://accounts.google.com/gsi/client'; script.async = true; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); return googleIdentityPromise; }; const loadGoogleOnInteraction = function() { window.wrLoadGoogleIdentity().catch(function() {}); }; document.addEventListener('pointerdown', loadGoogleOnInteraction, { once: true, passive: true }); document.addEventListener('keydown', loadGoogleOnInteraction, { once: true }); window.addEventListener('load', function() { setTimeout(loadGoogleOnInteraction, 1000); }, { once: true }); // Expose for other pages (people.php) to reuse init. window.wrGoogleStorageKey = STORAGE_KEY; const authSlot = document.getElementById('wrNavAuthSlot'); const loginEl = document.getElementById('wrNavGoogleSignIn'); const logoutBtn = document.getElementById('wrNavLogoutBtn'); if (!authSlot || !loginEl || !logoutBtn) return; function base64UrlDecodeToString(s) { try { const b64 = (s || '').replace(/-/g, '+').replace(/_/g, '/'); const padded = b64 + '==='.slice((b64.length + 3) % 4); return atob(padded); } catch (_) { return ''; } } function parseJwtPayload(token) { const parts = (token || '').split('.'); if (parts.length !== 3) return null; const json = base64UrlDecodeToString(parts[1]); if (!json) return null; try { return JSON.parse(json); } catch (_) { return null; } } function hasValidToken() { const token = (localStorage.getItem(STORAGE_KEY) || '').trim(); if (!token) return false; const payload = parseJwtPayload(token); const exp = payload && typeof payload.exp === 'number' ? payload.exp : 0; if (!exp) return false; return (Date.now() / 1000) < (exp - 30); } function setLoggedInUi(isLoggedIn) { if (!clientId) { authSlot.classList.add('d-none'); return; } authSlot.classList.remove('d-none'); logoutBtn.classList.toggle('d-none', !isLoggedIn); loginEl.classList.toggle('d-none', isLoggedIn); } window.wrHandleGoogleCredential = function(response) { const token = response && response.credential ? response.credential : ''; if (!token) return; try { localStorage.setItem(STORAGE_KEY, token); } catch (_) {} // Best-effort: notify server so we can keep an audit record of logins. // (Non-blocking; failures here should not break login UX.) try { fetch('/api/log_login.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }, body: new URLSearchParams({ idToken: token }), credentials: 'same-origin', keepalive: true }).catch(function() {}); } catch (_) {} setLoggedInUi(true); try { window.dispatchEvent(new CustomEvent('wr-google-credential', { detail: { token } })); } catch (_) {} }; window.wrEnsureGoogleInit = function() { if (!clientId) return; if (window.wrGoogleInitDone) return; if (!window.google || !google.accounts || !google.accounts.id) return; google.accounts.id.initialize({ client_id: clientId, callback: window.wrHandleGoogleCredential, ux_mode: 'popup', itp_support: true }); window.wrGoogleInitDone = true; }; function initLoginButtonWhenReady() { const loggedIn = hasValidToken(); if (!loggedIn) { try { localStorage.removeItem(STORAGE_KEY); } catch (_) {} } if (!clientId) { setLoggedInUi(loggedIn); return; } if (!window.google || !google.accounts || !google.accounts.id) { setTimeout(initLoginButtonWhenReady, 50); return; } window.wrEnsureGoogleInit(); if (!loggedIn) { try { google.accounts.id.renderButton(loginEl, { theme: 'outline', size: 'medium' }); } catch (_) {} } setLoggedInUi(loggedIn); } logoutBtn.addEventListener('click', function() { try { localStorage.removeItem(STORAGE_KEY); } catch (_) {} setLoggedInUi(false); window.location.reload(); }); initLoginButtonWhenReady(); })(); Maryam Akabari Monfared مریم اکبری منفرد Nationality : Iranian Age: 50 (1976) Status: Released Health: Unknown Share: X Telegram WhatsApp Bluesky | Contribute: Help Complete This Report UUID: caba98b9-a867-11ed-8bb6-560003f1f421 Short link: https://sml.yt/4c61c Copy (function() { const copyButton = document.querySelector('.wr-short-link__copy'); if (!copyButton) return; copyButton.addEventListener('click', async function() { const url = copyButton.getAttribute('data-copy-url') || ''; try { await navigator.clipboard.writeText(url); } catch (error) { const tempInput = document.createElement('textarea'); tempInput.value = url; tempInput.setAttribute('readonly', ''); tempInput.style.position = 'fixed'; tempInput.style.opacity = '0'; document.body.appendChild(tempInput); tempInput.select(); const copied = document.execCommand('copy'); tempInput.remove(); if (!copied) return; } const label = copyButton.querySelector('span'); if (label) { label.textContent = 'Copied'; window.setTimeout(function() { label.textContent = 'Copy'; }, 1500); } }); })(); Date: 2026-04-08 City: VaraminProvince: TehranCountry: IranHealth Status: Unknown Status: ReleasedReleased from Qarchak Prison in Varamin after 17 years of imprisonment Maryam Akbari Monfared, a political prisoner and one of the longest-serving female political prisoners in Iran, was released from Qarchak Varamin Prison after serving more than 16 years and 3 months in continuous imprisonment without any leave. During the 1980s, one sister and three brothers of this political prisoner were executed by the Islamic Republic of Iran.In Esfand 1399, she was transferred from Evin Prison to Semnan Prison, where she spent the final part of her sentence before moving to Qarchak Varamin Prison.While serving her fifteenth year in Semnan Prison, she was sentenced to an additional two years in prison. She faced charges including "propaganda against the Islamic Republic," "collusion and conspiracy against national security," "spreading falsehoods," "insulting the leadership," and "encouraging the public to disrupt public order" at Evin Prosecutor's Office.It is noted that she was transferred from the women's ward of Evin Prison to Semnan Prison on 19 Esfand 1399.On 21 Khordad 1399, she was summoned to Branch 2 of the Evin Prosecutor's Office for chanting slogans against the Islamic Republic on the night of 22 Bahman; however, she did not attend the session due to the absence of her defense attorney and the lack of written notification.On 11 Farvardin 1397, in an open letter addressed to the judge of Branch 15 of the Tehran Revolutionary Court, she expressed her determination to seek justice not only for her siblings but also for her own life and the lives of her children, which she claimed had been taken from her.Maryam Akbari Monfared was arrested on 30 December 2009 by agents of the Ministry of Intelligence and was charged with "moharebeh" (waging war against God) due to her membership in the Mojahedin-e Khalq Organization after being transferred to solitary confinement in Ward 209.Following the commencement of legal proceedings on 1 June 2010, she was sentenced to 15 years in prison for "moharebeh" by Branch 15 of the Tehran Revolutionary Court, presided over by the same judge. This sentence was upheld by Branch 36 of the Tehran Court of Appeals.On 4 May 2011, while in the women's ward of Rajai Shahr Prison in Karaj, she was transferred along with eight other female political prisoners to the women's ward of Qarchak Varamin Prison.Two of her brothers were tried and sentenced to death by the Tehran Revolutionary Court in 1981 and 1984 for their alleged connections with the Mojahedin-e Khalq Organization, and their sentences were carried out. Additionally, her younger brother and sister, Abdolreza and Rogheyeh Akbari Monfared, were executed during the mass executions of political prisoners in the summer of 1988.In Bahman 1395, Maryam Akbari Monfared submitted a complaint to the United Nations Working Group on Enforced or Involuntary Disappearances, requesting accountability from the Islamic Republic regarding the executions of her brother and sister.Recently, the UN Working Group recognized Abdolreza and Rogheyeh Akbari Monfared as two of the numerous executed prisoners from the summer of 1988 and requested the Iranian government to conduct an investigation into their cases. It is noted that Abdolreza and Rogheyeh Akbari Monfared were among the political prisoners who were secretly executed shortly before the end of their prison sentences. مریم اکبری منفرد، زندانی سیاسی و از باسابقه‎ ترین زنان زندانی سیاسی در ایران، پس از تحمل بیش از ۱۶ سال و ۳ ماه حبس مداوم و محرومیت مطلق از حق مرخصی، سرانجام از زندان قرچک ورامین آزاد شد. یک خواهر و سه برادر این زندانی سیاسی در دهه شصت توسط جمهوری اسلامی ایران اعدام شده اند.مریم اکبری منفرد در اسفند ۱۳۹۹ از زندان اوین به زندان سمنان تبعید شد و بخش پایانی محکومیت خود را در زندان سمنان و متعاقباً زندان قرچک ورامین سپری کرد.در حالی که پانزدهمین سال حبس‎ش را در زندان سمنان می‎گذراند، مجددا به دو سال زندان قطعی محکوم شد. او به اتهام های «تبلیغ علیه نظام جمهوری اسلامی»، «اجتماع و تبانی علیه امنیت کشور»، «نشر اکاذیب»، «توهین به رهبری»، «تشویق مردم به برهم زدن نظم عمومی کشور» در دادسرای اوین مورد تفهیم اتهام قرار گرفته بود.لازم به ذکر است که این زندانی سیاسی، در تاریخ ۱۹ اسفند ۱۳۹۹، از بند زنان زندان اوین، به زندان استان سمنان منتقل شد.مریم اکبری منفرد، در تاریخ ۲۱خرداد ماه ۱۳۹۹، در شعبه ۲ بازپرسی دادسرای زندان اوین به اتهام سردادن شعار علیه جمهوری اسلامی در شب ۲۲ بهمن احضار شد اما بدلیل عدم حضور وکیل مدافع وی و عدم ارسال ابلاغ کتبی از حضور در این جلسه بازپرسی سرباز زده بود.در تاریخ ۱۱ فرودین ماه ۱۳۹۷، مریم اکبری منفرد در نامه ای سرگشاده که بعنوان جوابیه خطاب به ابوالقاسم صلواتی، قاضی شعبه ۱۵ دادگاه انقلاب تهران نوشته بود:”پر غرور و شعله ور با دلی سرشار از نشاط بعد از ۹سال زندانی که تک تک لحظه هایش را به آغوش می کشم نه تنها دادخواه خون خواهر و برادرانم می باشم، نه تنها دادخواه تمام زندگی ام که از من به یغما بردید می باشم، بلکه دادخواه ۹ سال زندگی کودکانم که از آنها دریغ داشتید و لحظه های کودکانه شان را به یغما بردید نیز هستم و خواهم بود.”مریم اکبری منفرد، تاریخ ۹ دی ماه سال ۱۳۸۸، توسط ماموران وزارت اطلاعات بازداشت و پس از انتقال به سلول انفرادی در بند ۲۰۹ و طی مراحل بازجوئی با اتهام محاربه از طریق عضویت در سازمان مجاهدین خلق مورد تفهیم اتهام قرار گرفت.با آغاز مراحل دادرسی در تاریخ ۱۱ خرداد ماه ۱۳۸۹، مریم اکبر منفرد توسط شعبه ۱۵ دادگاه انقلاب تهران به ریاست ابوالقاسم صلواتی از بابت اتهام محاربه از طریق عضویت در سازمان مجاهدین خلق به تحمل ۱۵ سال حبس تعزیری محکوم شد. این حکم پس از ارجاع به شعبه ۳۶ دادگاه تجدیدنظر استان تهران عیناً تائید شد.در تاریخ ۱۵ اردیبهشت ماه سال ۱۳۹۰، مریم اکبری منفرد که در آن دوران در بند زنان زندان رجائی شهر کرج بسر می برد به همراه ۸ تن دیگر از زنان زندانی سیاسی به بند زنان زندان قرچک ورامین منتقل شدند.دو بردار مریم اکبری منفرد در سالهای۱۳۶۰ و ۱۳۶۳ به اتهام ارتباط و عضویت در سازمان مجاهدین خلق توسط دادگاه انقلاب تهران محاکمه و به اعدام محکوم شدند و احکام اعدام آنها اجرا شد.همچنین عبدالرضا و رقیه اکبری منفرد، برادر کوچک و خواهر مریم اکبری منفرد در سال ۱۳۶۷ و دوران اعدامهای گسترده در تابستان سال ۱۳۶۷ زندانیان سیاسی اعدام شدند.در بهمن ماه سال ۱۳۹۵، مریم اکبری منفرد، شکایتی به گروه کاری ناپدید شدگان قهری سازمان ملل تسلیم کرد و از آنان خواست جمهوری اسلامی را درباره اعدام برادر و خواهرش پاسخگو کنند.گروه کاری سازمان ملل اخیرا ضمن به رسمیت شناختن عبدالرضاو رقیه اکبری منفرد، بعنوان ۲ تن از مجموع بی شمار زندانیان اعدام شده در تابستان ۱۳۶۷ بعنوان ناپدیدشدگان قهری در نامه ای به دولت ایران خواستار انجام تحقیق در این زمینه شده بود.لازم به ذکر است، عبدالرضا و رقیه اکبری منفرد، از جمله زندانیان سیاسی بودند که مدت زمان کمی به پایان محکومیت حبس آنها مانده بود بطور مخفیانه اعدام شدند. Relationships Aunt/Uncle of Amirhossein Akbarimonfared امیرحسین اکبری منفرد Aunt/Uncle of Zeynab Akbari Monfared زینب اکبری منفرد Aunt/Uncle of Amirhasan Akbari Monfared امیرحسن اکبری منفرد Sibling of Mohammad Akbari Monfared محمد اکبری منفرد Sibling of Alireza Akbari Monfared علیرضا اکبری منفرد Sibling of Roqiyeh Akbari Monfared رقیه اکبری منفرد Sibling of Gholamreza Akbari Monfared غلامرضا اکبری منفرد Sibling of Abdolreza Akbari Monfared عبدالرضا اکبری منفرد More people in Varamin, Released Azar Korvandi Mousazadeh آذر کروندی موسی زاده Reyhaneh Ansari Nezhad ریحانه انصاری نژاد Masoumeh Akbari معصومه اکبری Complete list ... History: Date: 2026-04-08 City: VaraminProvince: TehranCountry: IranHealth Status: Unwell Status: ReleasedAfter 17 years of imprisonment without leave, Maryam Akbari Monfared was released from Qarchak Prison in Varamin Date: 2025-04-23 City: VaraminProvince: TehranCountry: IranHealth Status: Unwell Status: ImprisonedDespite her being unwell and the emphasis of doctors that she requires immediate back and knee surgeries she has been denied specialist treatment. Date: 2024-10-22 City: VaraminProvince: TehranCountry: IranHealth Status: Unknown Status: ImprisonedOn Tuesday 1st Aban 1403 (22nd October 2024) Ms Maryam Akbari Monfared, a political prisoner, was transferred from Semnan prison to Garchak Varamin prison to serve her two-year sentence. On Mehr 20th 1403 (11th October 2024) the sentence of 15 years of imprisonment in exile of this political prisoner was completed. Date: 2024-06-24 City: SemnanProvince: SemnanCountry: IranHealth Status: Unknown Status: ImprisonedThe defense lawyer for Mrs. Akbari Monfared announced the filing of a legal case against his client in the Revolutionary Court. According to him, this case was opened on the order of the headquarters of Imam's command against this political prisoner, and this headquarters requested the seizure and possession of the property of Mrs. Akbari Monfard and her relatives. Date: 2023-02-09 City: SemnanProvince: SemnanCountry: IranHealth Status: Unknown Status: ImprisonedFor 19 years Help Complete This Report with Your Input برای تکمیل این گزارش، اطلاعات خود را بنویسید. What should be corrected or added? چه چیزی باید اصلاح یا اضافه شود؟ Send updateارسال به‌روزرسانی To send a correction or message, please sign in with Google. No subscription is needed. برای ارسال اصلاحیه یا پیام، لطفاً با حساب گوگل وارد شوید. نیازی به اشتراک نیست. (function() { const clientId = "196042580665-2576hlsgr5kr1qujskevu0ogjc99e0ug.apps.googleusercontent.com"; const signInEl = document.getElementById('wrGoogleSignIn'); const formEl = document.getElementById('wrErrorReportForm'); const tokenEl = document.getElementById('wrGoogleIdToken'); const textareaEl = document.getElementById('wrReportText'); const submitBtn = document.getElementById('wrSubmitReportBtn'); const statusEl = document.getElementById('wrReportStatus'); const loginHintEl = document.getElementById('wrReportLoginHint'); if (!clientId || !signInEl || !formEl || !tokenEl) return; const STORAGE_KEY = (window.wrGoogleStorageKey || 'wr_google_id_token_v1'); function base64UrlDecodeToString(s) { try { const b64 = (s || '').replace(/-/g, '+').replace(/_/g, '/'); const padded = b64 + '==='.slice((b64.length + 3) % 4); const binary = atob(padded); // Convert binary -> UTF-8 const bytes = Uint8Array.from(binary, c => c.charCodeAt(0)); return new TextDecoder('utf-8', { fatal: false }).decode(bytes); } catch (_) { return ''; } } function parseJwtPayload(token) { const parts = (token || '').split('.'); if (parts.length !== 3) return null; const json = base64UrlDecodeToString(parts[1]); if (!json) return null; try { return JSON.parse(json); } catch (_) { return null; } } function getStoredValidToken() { const t = (localStorage.getItem(STORAGE_KEY) || '').trim(); if (!t) return ''; const payload = parseJwtPayload(t); const exp = payload && typeof payload.exp === 'number' ? payload.exp : 0; // Consider it expired 30s early to avoid edge cases. if (!exp || (Date.now() / 1000) >= (exp - 30)) return ''; return t; } function clearStoredToken() { try { localStorage.removeItem(STORAGE_KEY); } catch (_) {} } function setFormEnabled(enabled) { const on = !!enabled; if (textareaEl) textareaEl.disabled = !on; if (submitBtn) submitBtn.disabled = !on; } function showLoginPrompt() { setFormEnabled(false); tokenEl.value = ''; if (signInEl) signInEl.classList.remove('d-none'); if (loginHintEl) loginHintEl.classList.remove('d-none'); setStatus('', ''); } function showReportFormWithToken(token) { tokenEl.value = token; if (signInEl) signInEl.classList.add('d-none'); if (loginHintEl) loginHintEl.classList.add('d-none'); setFormEnabled(true); setStatus('', ''); } function setStatus(html, kind) { if (!statusEl) return; statusEl.className = kind ? ('alert alert-' + kind) : ''; statusEl.innerHTML = html || ''; } function initWhenReady() { // If we already have a valid token from a previous page, reuse it. const existing = getStoredValidToken(); if (existing) { showReportFormWithToken(existing); return; } else { clearStoredToken(); showLoginPrompt(); } // Initialize (once) via header helper, then render the button here. function renderWhenReady() { if (!window.google || !google.accounts || !google.accounts.id) { setTimeout(renderWhenReady, 50); return; } if (typeof window.wrEnsureGoogleInit === 'function') { try { window.wrEnsureGoogleInit(); } catch (_) {} } else { // Fallback if header isn't present for some reason. try { google.accounts.id.initialize({ client_id: clientId, callback: window.wrHandleGoogleCredential || function() {}, ux_mode: 'popup', itp_support: true }); } catch (_) {} } try { google.accounts.id.renderButton(signInEl, { theme: 'outline', size: 'large' }); } catch (_) {} } renderWhenReady(); } initWhenReady(); // If user logs in from the navbar, this page can react immediately. window.addEventListener('wr-google-credential', function(e) { const token = e && e.detail && e.detail.token ? String(e.detail.token) : ''; if (!token) return; showReportFormWithToken(token); if (textareaEl) textareaEl.focus(); }); formEl.addEventListener('submit', async function(e) { e.preventDefault(); setStatus('Sending…', 'info'); try { const formData = new FormData(formEl); const res = await fetch(formEl.action, { method: 'POST', body: formData, credentials: 'same-origin' }); const data = await res.json().catch(() => null); if (!res.ok || !data || !data.ok) { const msg = (data && data.error) ? data.error : 'Could not submit your report. Please try again later.'; setStatus(msg, 'warning'); // If auth failed (expired/invalid token), clear and show sign-in. const lower = (msg || '').toLowerCase(); if (lower.includes('token') || lower.includes('google') || res.status === 401 || res.status === 403) { clearStoredToken(); showLoginPrompt(); } return; } setStatus('Thank you. Your message was sent for review.', 'success'); if (textareaEl) textareaEl.value = ''; if (textareaEl) textareaEl.disabled = true; if (submitBtn) submitBtn.disabled = true; formEl.classList.add('d-none'); } catch (err) { setStatus('Network error. Please try again.', 'warning'); } }); })(); Once you submit your report, we carefully review and publish it as the latest verified update on the detainee's case, ensuring that their situation remains visible, documented, and accessible to the public. By keeping accurate and up to date information online, Witness Report helps prevent cases from being forgotten, strengthens public awareness, and reinforces accountability. This process offers reassurance that your loved one's story continues to be seen, acknowledged, and remembered. Media WR News X (Twitter) Instagram Telegram Channel Thank You Mardom Fundation EasyHostWay.AU The Joint Action Group Get Involved Report New Case Membership Support Our Work Witness Report API About Us Privacy Policy Recently Viewed © 2022-2026 Witness Report Incorporated. Established 2022. All rights reserved. (function() { const thankYouLinks = document.querySelectorAll('[data-thank-you-login-only]'); let isLoggedIn = false; try { const storageKey = window.wrGoogleStorageKey || 'wr_google_id_token_v1'; const token = (localStorage.getItem(storageKey) || '').trim(); const tokenParts = token.split('.'); if (tokenParts.length === 3) { const encodedPayload = tokenParts[1].replace(/-/g, '+').replace(/_/g, '/'); const paddedPayload = encodedPayload + '==='.slice((encodedPayload.length + 3) % 4); const payload = JSON.parse(atob(paddedPayload)); isLoggedIn = typeof payload.exp === 'number' && (Date.now() / 1000) < (payload.exp - 30); } } catch (error) { isLoggedIn = false; } if (isLoggedIn) { thankYouLinks.forEach(function(link) { link.classList.remove('d-none'); }); } const cookieName = 'wr_recent_profiles'; const recentSections = document.querySelectorAll('[data-recent-profiles]'); function readRecentProfiles() { const cookie = document.cookie.split('; ').find(function(item) { return item.indexOf(cookieName + '=') === 0; }); if (!cookie) return []; try { const profiles = JSON.parse(decodeURIComponent(cookie.substring(cookieName.length + 1))); if (!Array.isArray(profiles)) return []; return profiles.filter(function(profile) { if (!profile || typeof profile.name !== 'string' || typeof profile.path !== 'string') return false; try { const url = new URL(profile.path, window.location.origin); return url.origin === window.location.origin && url.pathname.indexOf('/people/') === 0; } catch (error) { return false; } }).slice(0, 5); } catch (error) { return []; } } const profiles = readRecentProfiles(); const currentProfile = document.getElementById('wrCurrentProfileVisit'); if (currentProfile) { const currentPath = currentProfile.dataset.profilePath || ''; const currentName = currentProfile.dataset.profileName || ''; if (currentPath && currentName) { const existingIndex = profiles.findIndex(function(profile) { return profile.path === currentPath; }); if (existingIndex !== -1) profiles.splice(existingIndex, 1); profiles.unshift({ name: currentName, path: currentPath }); profiles.splice(5); const cookieValue = encodeURIComponent(JSON.stringify(profiles)); document.cookie = cookieName + '=' + cookieValue + '; Path=/; Max-Age=7776000; SameSite=Lax' + (window.location.protocol === 'https:' ? '; Secure' : ''); } } recentSections.forEach(function(section) { const recentList = section.querySelector('[data-recent-profiles-list]'); if (!recentList) return; profiles.forEach(function(profile) { const item = document.createElement('li'); const link = document.createElement('a'); link.href = profile.path; link.textContent = profile.name; item.appendChild(link); recentList.appendChild(item); }); if (profiles.length) section.classList.remove('d-none'); }); })(); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-L6GJNEC9YW'); // Prevent navbar from collapsing when dropdown is clicked document.addEventListener('DOMContentLoaded', function() { const dropdown = document.querySelector('.navbar .dropdown'); if (dropdown) { dropdown.addEventListener('click', function(e) { e.stopPropagation(); }); } }); if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/sw.js', { scope: '/' }).catch(function(err) { console.warn('Service worker registration failed:', err); }); }); }