{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Custodian Guardian Layer — structure-preserving de-identification demo\n",
    "\n",
    "*Companion to* **\"Surrogate Substitution Preserves PHI Detectability: A Multi-Detector Equivalence Study.\"**\n",
    "\n",
    "This notebook runs the paper's **case-study method end-to-end on a small sample**, so anyone can reproduce the core idea in a few minutes:\n",
    "\n",
    "1. Take clinical / PII text with known PHI.\n",
    "2. Apply the **Custodian Guardian Layer `transform`** (our method): replace each PHI value with a realistic *same-type surrogate*, leaving everything else byte-identical.\n",
    "3. Check that a downstream PHI detector (Microsoft Presidio, CPU, free) **still finds the surrogate** — i.e. the substitution is *structure-preserving*.\n",
    "4. Compute masked-span recall retention and run the **TOST equivalence** test (the statistic the paper leads with).\n",
    "\n",
    "**What you need:** a Custodian API key for step 2 (get one at the Custodian docs). Steps 3–4 run with no key.\n",
    "\n",
    "Full 11-detector × 7-benchmark results, data subsets, and scoring code: **https://custodianai.pages.dev/code**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Install dependencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%pip install -q custodian-labs presidio-analyzer presidio-anonymizer faker numpy scipy\n",
    "!python -m spacy download en_core_web_lg -q\n",
    "print('deps installed — restart runtime if spaCy was just installed, then continue.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Your Custodian API key\n",
    "Entered with `getpass`, so it is never printed or saved in the notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os, getpass\n",
    "os.environ['CUSTODIAN_SDK_API_KEY'] = getpass.getpass('Custodian API key: ')\n",
    "from custodian_labs import GuardianLayer\n",
    "guardian = GuardianLayer()\n",
    "print('Guardian Layer client ready.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Sample data (synthetic — no real patient data)\n",
    "Each item lists the PHI values by substring; we locate character offsets programmatically so there are no hand-typed indices.",
    "\n\n> **Data credit.** The sample sentences follow the style of the **ASQ-PHI** benchmark; the full ASQ-PHI corpus is used in the paper. ASQ-PHI is from Weatherhead, Golovko & McCaffrey, *ASQ-PHI: An adversarial synthetic data benchmark for clinical de-identification and search utility*, Data in Brief 65:112586, 2026 (doi:10.1016/j.dib.2026.112586)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "SAMPLES = [\n",
    "    {'text': 'What is the latest treatment protocol for a 34-year-old female diagnosed with MS like Anna S., previously treated at Methodist Hospital on April 12, 2023?',\n",
    "     'phi': [('Anna S.', 'NAME'), ('Methodist Hospital', 'LOCATION'), ('April 12, 2023', 'DATE')]},\n",
    "    {'text': 'Rec mgmt of 70yo M w/ CHF, seen by Dr. John L. at Mt. Sinai on Feb 21, 2023; looking for alt tx options.',\n",
    "     'phi': [('John L.', 'NAME'), ('Mt. Sinai', 'LOCATION'), ('Feb 21, 2023', 'DATE')]},\n",
    "    {'text': 'Follow-up for Maria Gomez, MRN 4471982, discharged from Cedars-Sinai on 03/14/2022; contact maria.g@example.com.',\n",
    "     'phi': [('Maria Gomez', 'NAME'), ('4471982', 'ID'), ('Cedars-Sinai', 'LOCATION'), ('03/14/2022', 'DATE'), ('maria.g@example.com', 'EMAIL')]},\n",
    "    {'text': 'Patient Robert Chen, DOB 08/09/1961, referred by Dr. Patel at Massachusetts General for a cardiac workup.',\n",
    "     'phi': [('Robert Chen', 'NAME'), ('08/09/1961', 'DATE'), ('Patel', 'NAME'), ('Massachusetts General', 'LOCATION')]},\n",
    "]\n",
    "\n",
    "def spans(item):\n",
    "    out = []\n",
    "    for sub, lab in item['phi']:\n",
    "        i = item['text'].find(sub)\n",
    "        if i >= 0:\n",
    "            out.append({'start': i, 'end': i + len(sub), 'label': lab, 'text': sub})\n",
    "    return out\n",
    "\n",
    "print(f'{len(SAMPLES)} sample documents, {sum(len(s[\"phi\"]) for s in SAMPLES)} PHI spans.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Apply our method: the `transform` (real value → same-type surrogate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def transform(text):\n",
    "    r = guardian.deidentify_text_outputs(text, masking_type='transform', pii_entities=['ALL'])\n",
    "    outs = r.outputs or []\n",
    "    return outs[0].text if outs else text\n",
    "\n",
    "for s in SAMPLES:\n",
    "    s['xfrm'] = transform(s['text'])\n",
    "    print('ORIG :', s['text'])\n",
    "    print('XFRM :', s['xfrm'])\n",
    "    print('-' * 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Does the surrogate stay detectable? (Microsoft Presidio, CPU)\n",
    "We score PHI detection on the original and on the transformed text, and report how many PHI values Presidio still recovers. If detection holds, the substitution is *structure-preserving*."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from presidio_analyzer import AnalyzerEngine\n",
    "from presidio_analyzer.nlp_engine import NlpEngineProvider\n",
    "\n",
    "provider = NlpEngineProvider(nlp_configuration={'nlp_engine_name': 'spacy',\n",
    "    'models': [{'lang_code': 'en', 'model_name': 'en_core_web_lg'}]})\n",
    "analyzer = AnalyzerEngine(nlp_engine=provider.create_engine(), supported_languages=['en'])\n",
    "\n",
    "def detect(text):\n",
    "    return [(r.start, r.end) for r in analyzer.analyze(text=text, language='en')]\n",
    "\n",
    "def overlap(a, b):\n",
    "    return not (a[1] <= b[0] or a[0] >= b[1])\n",
    "\n",
    "orig_found = orig_total = 0\n",
    "for s in SAMPLES:\n",
    "    preds = detect(s['text'])\n",
    "    for g in spans(s):\n",
    "        orig_total += 1\n",
    "        if any(overlap((g['start'], g['end']), p) for p in preds):\n",
    "            orig_found += 1\n",
    "print(f'Presidio recall on ORIGINAL PHI: {orig_found}/{orig_total} = {100*orig_found/orig_total:.0f}%')\n",
    "print('\\nPHI entities Presidio finds, original vs transformed (document level):')\n",
    "for s in SAMPLES:\n",
    "    print(f\"  orig={len(detect(s['text'])):2d}   transformed={len(detect(s['xfrm'])):2d}   |  {s['text'][:55]}...\")\n",
    "print('\\nSimilar counts => the surrogate carries the same detectable structure as the original.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. The statistic the paper leads with: TOST equivalence\n",
    "Null-hypothesis tests are uninformative at large N (any tiny difference becomes \"significant\"). TOST instead asks whether the effect is provably *inside* a margin Δ. Below is the exact function from the paper's `analyze_equivalence.py`; the full-scale result over 57,112 masked spans is recall 76.1%→74.9%, TOST Δ=2pt **p≈3×10⁻⁹** (equivalent)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "\n",
    "def tost_paired(b, c, n, delta):\n",
    "    \"\"\"TOST for a paired difference of proportions d=(b-c)/n at margin `delta`.\n",
    "    b = found-originally-but-not-after, c = found-after-but-not-originally.\n",
    "    Returns (difference_pct, p_value, equivalent?).\"\"\"\n",
    "    d = (b - c) / n\n",
    "    var = ((b + c) - (b - c) ** 2 / n) / (n ** 2)\n",
    "    se = math.sqrt(var) if var > 0 else 1e-12\n",
    "    p1 = 0.5 * math.erfc((d + delta) / se / math.sqrt(2))   # H0: mu <= -delta\n",
    "    p2 = 0.5 * math.erfc(-(d - delta) / se / math.sqrt(2))  # H0: mu >= +delta\n",
    "    p = max(p1, p2)\n",
    "    return d * 100, p, p < 0.05\n",
    "\n",
    "# Full-scale pooled counts from the paper (see custodianai.pages.dev/code):\n",
    "b, c, n = 3300, 2612, 57112       # lost, gained, masked spans\n",
    "diff, p, equiv = tost_paired(b, c, n, delta=0.02)\n",
    "print(f'recall change (orig - transformed): {diff:+.2f} pts')\n",
    "print(f'TOST at margin +-2 pts:  p = {p:.1e}  ->  {\"EQUIVALENT\" if equiv else \"not equivalent\"}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Study results (pre-computed — visible without running)\n",
    "\n",
    "The cells below show the **full study** outcome (11 detectors × 7 benchmarks × 7 languages, 1,750 docs). Outputs are already rendered; run them to reproduce from the numbers in the paper."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "execution_count": 1,
     "metadata": {},
     "data": {
      "text/plain": [
       "        Detector  Orig F1  Transf F1    ΔF1 Overlap retention\n     Gemma 4 31B    0.755      0.710 -0.045             99.8%\n     Gemma 4 E4B    0.737      0.698 -0.039             98.2%\n   Llama 3.3-70B    0.725      0.728  0.003             98.3%\nQwen 3.5-35B-A3B    0.715      0.668 -0.047             98.4%\n    OpenAI GPT-5    0.705      0.674 -0.031             98.3%\n     Qwen 3.5-9B    0.655      0.621 -0.034            100.0%\n     Qwen 3.5-4B    0.567      0.533 -0.034             98.0%\n        Presidio    0.416      0.398 -0.018             97.4%\nDeepSeek V2-Lite    0.409      0.384 -0.025             92.8%\n    Llama 3.1-8B    0.391      0.376 -0.015                 —\nOBI deid_roberta    0.041      0.040 -0.001                 —"
      ],
      "text/html": [
       "<table class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th>Detector</th>\n      <th>Orig F1</th>\n      <th>Transf F1</th>\n      <th>ΔF1</th>\n      <th>Overlap retention</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Gemma 4 31B</td>\n      <td>0.755</td>\n      <td>0.710</td>\n      <td>-0.045</td>\n      <td>99.8%</td>\n    </tr>\n    <tr>\n      <td>Gemma 4 E4B</td>\n      <td>0.737</td>\n      <td>0.698</td>\n      <td>-0.039</td>\n      <td>98.2%</td>\n    </tr>\n    <tr>\n      <td>Llama 3.3-70B</td>\n      <td>0.725</td>\n      <td>0.728</td>\n      <td>0.003</td>\n      <td>98.3%</td>\n    </tr>\n    <tr>\n      <td>Qwen 3.5-35B-A3B</td>\n      <td>0.715</td>\n      <td>0.668</td>\n      <td>-0.047</td>\n      <td>98.4%</td>\n    </tr>\n    <tr>\n      <td>OpenAI GPT-5</td>\n      <td>0.705</td>\n      <td>0.674</td>\n      <td>-0.031</td>\n      <td>98.3%</td>\n    </tr>\n    <tr>\n      <td>Qwen 3.5-9B</td>\n      <td>0.655</td>\n      <td>0.621</td>\n      <td>-0.034</td>\n      <td>100.0%</td>\n    </tr>\n    <tr>\n      <td>Qwen 3.5-4B</td>\n      <td>0.567</td>\n      <td>0.533</td>\n      <td>-0.034</td>\n      <td>98.0%</td>\n    </tr>\n    <tr>\n      <td>Presidio</td>\n      <td>0.416</td>\n      <td>0.398</td>\n      <td>-0.018</td>\n      <td>97.4%</td>\n    </tr>\n    <tr>\n      <td>DeepSeek V2-Lite</td>\n      <td>0.409</td>\n      <td>0.384</td>\n      <td>-0.025</td>\n      <td>92.8%</td>\n    </tr>\n    <tr>\n      <td>Llama 3.1-8B</td>\n      <td>0.391</td>\n      <td>0.376</td>\n      <td>-0.015</td>\n      <td>—</td>\n    </tr>\n    <tr>\n      <td>OBI deid_roberta</td>\n      <td>0.041</td>\n      <td>0.040</td>\n      <td>-0.001</td>\n      <td>—</td>\n    </tr>\n  </tbody>\n</table>"
      ]
     }
    }
   ],
   "source": [
    "import pandas as pd\n",
    "rows=[('Gemma 4 31B',.755,.710,'99.8%'),('Gemma 4 E4B',.737,.698,'98.2%'),\n",
    " ('Llama 3.3-70B',.725,.728,'98.3%'),('Qwen 3.5-35B-A3B',.715,.668,'98.4%'),\n",
    " ('OpenAI GPT-5',.705,.674,'98.3%'),('Qwen 3.5-9B',.655,.621,'100.0%'),\n",
    " ('Qwen 3.5-4B',.567,.533,'98.0%'),('Presidio',.416,.398,'97.4%'),\n",
    " ('DeepSeek V2-Lite',.409,.384,'92.8%'),('Llama 3.1-8B',.391,.376,'—'),\n",
    " ('OBI deid_roberta',.041,.040,'—')]\n",
    "df=pd.DataFrame(rows,columns=['Detector','Orig F1','Transf F1','Overlap retention'])\n",
    "df['ΔF1']=(df['Transf F1']-df['Orig F1']).round(3)\n",
    "df=df[['Detector','Orig F1','Transf F1','ΔF1','Overlap retention']]\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "image/png": "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3DhRunRpoa+vL4oWLSp69eolHj9+rHTfjx8/inHjxomSJUvKnr99+vT56vuR1N69ewUAUaZMmUzvmXPw4EHRv39/4eHhIWxsbIS+vr4oVqyYqFu3rli/fn2O70kh/bJk48aNmT4W6k5EhPj0RdKECROEh4eHMDMzEwYGBqJ48eKidu3aYvLkyeLWrVuyumfPnhXDhg0TXl5ewtbWVnYuatasKZYsWaJwz52snpvJycliwoQJwtnZWejr6wtbW1vRo0cP8eTJk0xjz+qYUlJSxKxZs0TlypWFiYmJMDQ0FO7u7mLcuHGZ3tPn9evXwtDQULi4uGT5GFH+IhHiO1n6g4iIVOLr64uDBw9i//79HPpAP4xevXph+fLlmDVrltIFOHLDrVu34OrqikaNGsmGmFLuWrp0KUJCQjBv3jz07ds3r8Oh7wTniBAREVGeuHnzJiIjI2Fubp7juUuqcHZ2Ru/evbFjx46vTqgn1X38+BHTpk2TPe5EUkxEiIiISKNCQ0PRuXNneHl5ISUlBSNHjsz0Roq5Zfz48TA3N8fo0aM12m9+tGrVKty5cwczZsyQrTBHBAAcmkVEpCU4NIt+FE5OTrh//z6KFSuG4OBgjB49msu5EuVDTESIiIiIiEjj+PUDERERERFpHBMRIiIiIiLSOCYiRERERESkcUxEiIiIiIhI45iIqNnbt28RExODt2/f5nUoRERERETfLSYianbp0iXUqFEDly5dyutQiIiIiIi+W0xEiIiIiIhI45iIEBERERGRxjERISIiIiIijWMiQkREREREGsdEhIiIiIiINI6JCBERERERaRwTESIiIiIi0jgmIkREREREpHFMRIiIiIiISOOYiBARERERkcYxESEiIiIiIo1jIkJERERERBrHRISIiIiIiDROL68DICJSp2VrVmm8z15dumu8TwCQSCRYtWoVgoKCsr1PUFAQ7t69iwMHDqg1lgMHDsDPzw9xcXFwcnJSa9vZZTGgq8b7fDU3UuN95pa0tDSEhIRg69ateP78OTZv3oxWrVrldVi5ruaAdRrv8+jcAI325+vrCycnJ4SHh2u039ywr0t1jfdZZ80JjfeZmbt376JEiRLYv38/fH198zoclfGKCBFRHnn79i1GjhwJFxcXGBgYwNLSEo0bN852kvD48WN06NAhR33OnTsXmzZt+oZoSVUSieSr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EZHGMREhIiIiIiKN++4nq9P3w2JA169X+gbuaJwr7RIRERHR94tXRIiIiIiISOOYiBARERERkcZxaJYWWrZmVV6HQERERESUJV4RISIiIiIijWMiQkREREREGsdEhIiIiIiINI6JCBERERERaRwnqxMREf0gag5YlyvtHp0bkCvtEhFlhVdEiIiIiIhI45iIEBERERGRxjERISIiIiIijWMiQkREREREGsdEhIiIiIiINI6JCBERERERaRwTESIiIiIi0jgmIkREREREpHFMRIiIiIiISOOYiBARERERkcbp5XUARESkWTUHrMuVdo/ODciVdomISDupnIjcuHEDBw4cwOXLl/Hs2TNIJBJYW1ujXLly8PHxQZkyZdQRJxERERERaZFvSkSSk5OxatUqLFmyBBcvXoQQQmk9iUSC8uXL4+eff0ZQUBAMDQ1VCpaIiIiIiLRDjueIREZGokyZMujbty8sLCwwefJkHDhwAPHx8UhKSsL79+8RHx+P/fv3Y9KkSShYsCB+/fVXlClTBmvWrMmNYyAiIiIioh9Mjq+I/Pzzz/j555/Rv39/ODo6Kq1jb28Pe3t7+Pj4IDQ0FPfu3cOcOXMQEhKCLl26qBw0ERERERH92HKciNy5cwdFihTJ0T6Ojo6YPXs2fv/995x2R0REREREWijHQ7NymoR8rmjRot+8LxERERERaY9cuY/I06dPcerUKTx69Cg3miciIiIioh+cWhORly9folmzZrCzs0O1atXg4OCA+vXr4+nTp+rshoiIiIiIfnBqTUT69++PhIQE7N69G9euXcPff/+Nq1ev4pdfflFnN0RERERE9IP7pvuInDx5EtWqVVMoP3DgADZv3gwPDw8AQJkyZfDkyROMHj1atSiJiIiIiEirfNMVEW9vbwwaNAjv37+XK7exsUFsbKxcWWxsLGxsbL49QiIiIiIi0jrflIgcOXIEBw4cgLu7O3bu3CkrHzFiBPr27YvatWujc+fOqFixItasWYPhw4erLWAiIiIiIvrxfVMiUrVqVZw6dQo///wz2rVrh4CAACQmJqJt27Y4duwYypYti1evXqFatWrYt28fgoKC1Bw2ERERERH9yL5pjggA6OrqIjQ0FO3atUNISAhcXV3xxx9/ICgoCNWrV1dnjEREREREpGVUXjXL2dkZ0dHRmDFjBoYOHYp69erhzp07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IiIiIiL6nMpDs8aPH4/du3dj5MiR2L9/P4QQWL16NXbu3Alvb29UrVoVV65cUUesRERERESkJVRORDZs2AB/f3+MHz8e5cqVAwDY29ujYcOG2Lt3L1JTUxEeHq5qN0REREREpEVUTkTi4+Ph4+MDANDV1QUApKamAgD09PTQqVMn/PXXX6p2Q0REREREWkTlRMTMzAxpaWmy/+vo6ODRo0ey7QULFsSTJ09U7YaIiIiIiLSIyolIqVKlcOPGDQCfroi4u7tjw4YNAAAhBDZt2gQHBwdVuyEiIiIiIi2iciJSr149bNy4Eenp6QCAkJAQ7Nq1C6VKlULp0qWxd+9eBAcHqxwoERERERFpD5WX7w0NDUXXrl1lS/b26dMHycnJWLNmDXR1ddGrVy8MGzZM5UCJiIiIiEh7qJyImJqawsXFRa5s8ODBGDx4sKpNExERERGRllJ5aBYREREREVFOqZyIhIWFye4fokz58uUxceJEVbshIiIiIiItonIisnnzZtSvXz/T7Q0aNJCtokVERERERASoIRGJi4uDq6trpttdXFwQFxenajdERERERKRF1DJH5NWrV5lue/nypWxpXyIiIiIiIkANiYi7uzu2bt2qdJsQAv/880+WV0yIiIiIiCj/UTkRCQ4OxvHjxxEUFISEhARZeUJCAnr06IHjx4/zhoZERERERCRH5fuI9OrVCwcPHkRERAQiIyNha2sLAHj8+DGEEOjQoQN++eUXlQMlIiIiIiLtoXIiAgBr1qxBixYtsHbtWty6dQsAULVqVXTu3Bnt2rVTRxdERERERKRF1JKIAED79u3Rvn17dTVHRERERERaTK13Vk9JScHDhw+RmpqqzmaJiIiIiEjLqCUROXPmDOrUqQMzMzMUL14cR44cAQA8e/YMdevWxd69e9XRDRERERERaQmVE5Fz587B29sbt2/fRrdu3eS22djY4MOHD1i9erWq3RARERERkRZROREZM2YM7OzscPnyZUydOhVCCLntdevWxcmTJ1XthoiIiIiItIjKicjhw4fRq1cvmJqaQiKRKGwvXrw4Hj16pGo3RERERESkRVRORJKTk1GwYMFMt79580bVLoiIiIiISMuonIiUKlUKp0+fznT7vn374Obmpmo3RERERESkRVRORAICAhAZGSm3MpZ0iNbMmTOxa9cudO3aVdVuiIiIiIhIi6h8Q8OhQ4diz549aNiwIVxdXSGRSDBo0CAkJCTgyZMnqF+/Pvr06aOOWImIiIiISEuofEVEX18fe/bswR9//AEjIyMYGhrixo0bsLKywvTp07Ft2zbo6Kj1volERERERPSDU+mKSEpKCk6cOAFbW1sMGjQIgwYNUldcRERERESkxVS6VKGrq4u6deti586d6oqHiIiIiIjyAZUSET09PRQtWlThJoZERERERERZUXnyhr+/P/73v/8hIyNDHfGoxYsXLzB06FA4OzvD0NAQ1tbW8PPzw+HDh+XqnThxAvXq1YOZmRnMzc3RqFEjnDt3Lm+CJiIiIiLKR1ReNatnz57Yv38/6tevj4EDB6J06dIwNjZWqFe8eHFVu8qWe/fuwdfXF+/evUNwcDDKlCmD169f48KFC3j48KGs3vHjx+Hr6wt7e3uMHz8eADB//nx4e3vj2LFjKF++vEbiJSIiopxZtmZVrrTbq0v3XGmXiJRTOREpV64cJBIJhBA4cOBApvXS09NV7SpbunTpgrS0NFy4cAG2traZ1uvfvz/09fVx6NAh2NvbAwDat2+PsmXLYsiQIdi9e7dG4iUiIiIiyo9UTkTGjBkju4FhXjt06BCOHDmCP//8E7a2tvj48SM+fvyocIXm1q1biI2NRY8ePWRJCADY29vD398fq1atwpMnT1C0aFFNHwIRERERUb6gciIyduxYNYShHjt27ADwaRhY8+bNsXPnTqSnp6N06dIYM2YMunTpAgCIjY0FAHh5eSm04enpiZUrV+L06dNo2rRplv3Fx8fjwYMHcmUXL15Ux6EQEREREWk1lROR78n169cBAL169ULp0qWxevVqpKamYubMmejatSs+fvyI7t2749GjRwAgdzVESlr2+XySzKxYsQLjxo1T4xEQEREREeUPWpWIvH37FgBgZmaG/fv3Q19fHwDQqlUrlCxZEiNGjEBgYCCSkpIAAAYGBgptGBoaAoCsTlaCg4PRsGFDubKLFy8iJCREpeMgIiIizbMY0DVX2nVH41xpl+hHp1WJiJGREQCgU6dOsiQEACwtLdGiRQtERETg+vXrsjkjKSkpCm0kJycDgNKVv77k4OAABwcHdYRORERERJSvqHwfke9JsWLFAEDpJHPpClovX76EnZ0dAOXDr6RlyoZtERERERGRemhVIlKtWjUAUJhA/nmZjY0NqlatCgCIiYlRqHf8+HFIJBJUqVIlFyMlIiIiIsrftGpoVqtWrTBgwACsWbMGo0aNgqmpKQDg8ePH2LJlC8qUKQNnZ2cAgIeHB6KiojBhwgTZFZJHjx4hKioKderU4dK9RERERD8Izu/5MWlVImJpaYk//vgDISEh8PT0RI8ePZCamopFixYhNTUV8+bNk9WdO3cu/Pz84O3tjX79+gEA5s2bh4yMDMycOTOvDoGIiIiIKF9QSyLy/v17rFu3Djdv3sTz588hhJDbLpFIsGLFCnV09VW9e/eGlZUVpk+fjtGjR0NHRwdeXl5Yt24datasKatXo0YNHDhwAKNGjcKoUaMgkUhQo0YNREVFoWLFihqJlYiIiIgov1I5ETl58iSaNWuGxMTETOtoMhEBgDZt2qBNmzZfrefl5YXo6GgNRERERERERJ9TebL64MGDkZqaiv/9739ITExERkaGwk96ero6YiUiIiIiIi2h8hWR06dPY8SIEWjXrp064iEiIiIionxA5Ssi5ubmKFy4sDpiISIiIiKifELlKyJt2rTBf//9hz59+qgjHiIiIiLSQsvWrMrrEOg7o/IVkWnTpuHZs2fo168fbt++rbBiFhERERER0ZdUviJiYWEBiUSCkydPYuHChUrrSCQSpKWlqdoVERERERFpCZUTkW7dukEikagjFiIiIiIiyidUTkTCw8PVEAYREREREeUnKs8RISIiIiIiyimVr4h87t27d3j16hUyMjIUthUvXlydXRERERER0Q9MLYnIX3/9hYkTJ+Lq1auZ1uHd1YmIiIiISErloVlbtmxBQEAA0tLSEBISAiEEOnXqBH9/fxQoUABVqlTBmDFj1BErERERERFpCZUTkT/++ANly5bFuXPnMH78eABAjx498Ndff+HUqVO4fv06KlWqpGo3RERERESkRVRORC5cuIDAwEAYGhpCR+dTc9JhWOXKlUPv3r0xZcoUVbshIiIiIiItonIikp6ejsKFCwMAjIyMAACvX7+WbXdxccGlS5dU7YaIiIiIiLSIyolIsWLFcO/ePQCfEhEbGxucPn1atv369eswMTFRtRsiIiIiItIiKq+aVaNGDezdu1c2P6RFixaYM2cOjIyMkJGRgQULFqB58+YqB0pERERERNpD5USkT58+2Lx5Mz58+AAjIyNMmjQJJ0+exNixYwEA7u7u+OOPP1TthoiIiIiItIjKiUjVqlVRtWpV2e/W1tY4d+4cLly4AF1dXZQtW1Y2iZ2IiIiIiAhQ853VP1ehQoXcapqIiIiIiH5waktEHj16hH///Rd37twBAJQsWRLNmjWDvb29urogIiIiIiItoZZEZMKECZg4cSLS0tIghJCV9+vXDyNHjkRYWJg6uiEiIiIiIi2h8uSN+fPnIywsDJUqVcLatWtx7tw5nDt3DmvXrkWlSpUwfvx4zJ8/Xx2xEhERERGRllD5isi8efNQrVo1HDlyBHp6/9dchQoV0K5dO9SsWRPz5s1D3759Ve2KiIiIiIi0hMpXRO7fv49OnTrJJSFSBQoUQOfOnXH//n1VuyEiIiIiIi2iciJSvHhxvH37NtPtb9++RfHixVXthoiIiIiItIjKiUjfvn2xZMkSPH78WGHbw4cPsXjxYvTr10/VboiIiIiISIuoPEekYMGCKFKkCFxdXdGlSxe4uroCAK5evYq1a9eiTJkyMDc3R0REhNx+3bp1U7VrIiIiIiL6QamciAQFBcn+v2jRIoXtp0+flqsDABKJhIkIEREREVE+pnIisn//fnXEQURERERE+YjKiYiPj4864iAiIiIionxE5cnqmUlMTMTNmzdzq3kiIiIiIvqBqZyIREREoHfv3nJlw4cPl01gr1mzZpbL+xIRERERUf6jciKyZMkSpKWlyX4/deoUpk2bBm9vb/Tq1QsnT57ErFmzVO2GiIiIiIi0iMpzRG7dugV/f3/Z71FRUShUqBB2794NfX19SCQS/O9//0NYWJiqXRERERERkZZQ+YrI69evUbBgQdnv0dHRqFevHvT19QEAHh4euH//vqrdEBERERGRFlE5ESlatKhsUnpCQgLOnTsHb29v2fZ3795BV1dX1W6IiIiIiEiLqDw0q06dOliwYAEKFSqE/fv3QyKRoGnTprLt169fh729vardEBERERGRFlE5ERk/fjyOHTuGYcOGAQBGjRoFJycnAEBaWho2btyItm3bqtoNERERERFpEZUTkWLFiuHy5cu4cuUKChYsiOLFi8u2JSUlYenSpahYsaKq3RARERERkRZROREBAF1dXZQvX16h3NzcHC1btlRHF0REREREpEXUfmf1xMRElCxZEjExMepumoiIiIiItITaE5H09HTcvXsXHz58UHfTRERERESkJdSeiBAREREREX0NExEiIiIiItI4tSciurq6cHR0hJGRkbqbJiIiIiIiLaH2RMTKygpxcXHw8vJSd9M5lpSUhJIlS0IikaBv374K269fv45WrVrB0tISJiYm8Pb2xr59+/IgUiIiIiKi/EWrh2aNGTMGCQkJSrfdvn0bNWrUQExMDIYNG4YZM2bg3bt3aNiwIfbu3avhSImIiIiI8pcc30ekR48eOe5EIpFgxYoVOd5PFWfOnMGcOXMwffp0DBkyRGH78OHD8erVK5w+fRqVKlUCAHTr1g3u7u749ddfce3aNUgkEo3GTERERESUX+Q4EQkPD1cok35gF0IolAshNJ6IpKeno1evXmjUqBHatGmjkIi8f/8e//zzD3x9fWVJCACYmpqiZ8+eGDNmDGJjY1GtWjWNxUxERERElJ/kOBHJyMiQ+z0hIQGNGjWCo6Mjhg0bBjc3NwDA5cuXMX36dMTHx2PXrl3qiTabZs+ejWvXrmHjxo1Kt1+4cAEpKSlK57F4enoCQLYSkfj4eDx48ECu7OLFi98YNRERERFR/pHjRORLgwcPho2NDTZt2iRX7uXlhc2bN6NRo0YYPHgwIiIiVO0qW+Li4hAWFoYxY8bAyckJd+/eVajz6NEjAIC9vb3CNmnZw4cPv9rXihUrMG7cONUCJiIiIiLKh1RORHbs2IEJEyZkur158+YICwtTtZts+/nnn1GyZEkMHjw40zpJSUkAAAMDA4VthoaGcnWyEhwcjIYNG8qVXbx4ESEhITkJmYiIiIgo31E5EUlJSVEYnvS5Bw8eICUlRdVusmXNmjXYs2cPDh06hAIFCmRaz9jYGACUxpWcnCxXJysODg5wcHD4xmiJiIiIiPIvlZfvrVWrFubNm4dDhw4pbDt48CDmzZuHmjVrqtrNV6WkpGDw4MFo0qQJihYtilu3buHWrVu4d+8eAOD169e4desWXr16BTs7OwDKh19Jy5QN2yIiIiIiIvVQ+YrIrFmzUKtWLfj5+cHDwwOurq4AgGvXruHUqVMwNzfHzJkzVQ70az58+ICEhARs374d27dvV9i+Zs0arFmzBjNmzMDPP/8MAwMDxMTEKNQ7fvw4AMDDwyPXYyYiIiIiyq9UTkTc3Nxw5swZjBgxAtu2bUNsbCyAT0vhdujQARMnTkTJkiVVDvRrTExMEBUVpVCekJCAPn36oFGjRggODkaFChVgamqK5s2bY9OmTTh//jwqVqwIAHj37h2WL1+O0qVLc+leIiIiIqJcpHIiAgBOTk5Yt24dhBB49uwZAMDa2ho6Opq7cXuBAgXQrl07hXLpqlmlSpWS2z5lyhRER0ejQYMGGDRoEMzNzbFs2TI8fPgQ27dv580MiYiIiIhykVoSESmJRIIiRYqos8lc4+zsjKNHjyI0NBRTp05FamoqKleujF27dqFevXp5HR4RERERkVZTSyLy9u1bzJ49G7t378bTp08REREBLy8vJCYmYuHChWjfvr1s7oimOTk5KdzxXaps2bLYunWrhiMiIiIiIiKVE5GEhATUqlULd+7cgbOzM+7cuYMPHz4AAKysrLB69Wq8evUKs2bNUjlYIiIiIiLSDionIqNGjcKTJ09w4sQJFC9eHDY2NnLbW7ZsiejoaFW7ISIiIiIiLaLybPJt27ahT58+qFy5stIJ3iVLlkR8fLyq3RARERERkRZRORFJTEyEs7Nz5h3o6MjuVk5ERERERASoIREpWrQobt++nen2s2fPonjx4qp2Q0REREREWkTlRKRJkyZYsWIFHj9+rLDtxIkTiIiIQMuWLVXthoiIiIiItIjKiUhYWBj09PTw008/Yfjw4ZBIJFi9ejU6deqE2rVrw87ODr///rs6YiUiIiIiIi2hlqFZx48fR/Xq1bFy5UoIIRAZGYn//e9/aNCgAQ4fPoxChQqpI1YiIiIiItISarmhoYODA7Zu3Yo3b97g+vXrEELA2dlZloC8ffsWZmZm6uiKiIiIiIi0gMpXRAYMGCD7v7m5OapWrYpq1arJJSENGzZUtRsiIiIiItIiKici8+bNw4wZM5Rue//+PRo3boxz586p2g0REREREWkRlRORCRMmIDQ0FGvXrpUr//DhA5o2bYpTp05h48aNqnZDRERERERaROU5IiNHjsSDBw8QHByMIkWKoF69ekhOTkbz5s0RExODDRs2oHHjxuqIlYiIiIiItITKV0QAYMGCBWjcuDHatm2LY8eOoVWrVjh06BDWrVuH5s2bq6MLIiIiIiLSImpZNUtHRwfr169HvXr1ULt2bejo6GDNmjVo27atOponIiIiIiItk+NE5NChQ5luGzJkCIKCgtCxY0cULVpUrm7t2rW/LUIiIiIiItI6OU5EfH19IZFIMt0uhMCyZcuwfPly2e8SiQTp6enfHiUREREREWmVHCciq1atyo04iIiIiIgoH8lxIhIYGJgbcRARERERUT6illWzMpOSkpKbzRMRERER0Q9K5URk586dGDt2rFzZwoULYW5uDhMTEwQEBODjx4+qdkNERERERFpE5URkxowZuHbtmuz3q1evYsCAAbCzs0P9+vXx999/Y8GCBap2Q0REREREWkTlROTq1avw8PCQ/f7333/DyMgIJ0+exM6dO9GhQwesXr1a1W6IiIiIiEiLqJyIvHz5ElZWVrLf9+7dizp16sDc3BzAp+V+4+LiVO2GiIiIiIi0iMqJiJWVFe7duwcAePv2LWJjY+Ht7S3b/vHjR95DhIiIiIiI5OR4+d4veXl5YfHixXB3d8fOnTuRlpaGxo0by7bfunULtra2qnZDRERERERaROVEZNy4cfDz80P79u0BfLrPiJubG4BPd1XfvHkz/Pz8VO2GiIiIiIi0iMqJiJubG65evYqjR4+iYMGCqF27tmzbq1evMGjQIPj6+qraDRERERERaRGVExEAKFSoEJo3b65QbmlpiQEDBqijCyIiIiIi0iK5emd1IiIiIiIiZdSSiBw9ehTNmjWDtbU19PT0oKurK/ejp6eWCy9ERERERKQlVE5EDh06BD8/P5w4cQLVq1dHRkYG/Pz8ULVqVQghUK5cOXTt2lUdsRIRERERkZZQORGZNGkSbG1tceXKFYSHhwMARowYgePHj2PXrl2Ii4tDz549Ve2GiIiIiIi0iMqJyMmTJ9GzZ09YW1tDR+dTcxkZGQCABg0aoGvXrhg9erSq3RARERERkRZRORFJSUmBvb09AMDAwADApzusS1WqVAmnT59WtRsiIiIiItIiKicitra2ePDgAQDAxMQEFhYWuHTpkmz7gwcPOFmdiIiIiIjkqJwhVK1aFUePHpX93qBBA8yePRuOjo7IyMjA/PnzUb16dVW7ISIiIiIiLaLyFZHg4GBYWVnhw4cPAIDJkyfDyMgIQUFB6NGjBwwMDDB9+nSVAyUiIiIiIu2h8hWR+vXro379+rLfS5YsiRs3biA6Ohq6urqoVasWChYsqGo3RERERESkRXJl8oaJiQlatGiRG00TEREREZEWUMud1YmIiIiIiHJCLYnIunXrULNmTdjY2EBXV1fhh6tmERERERHR51TOECZOnIiwsDAUKVIENWrUgKWlpTriIiIiIiIiLaZyIrJw4UL4+vpi165dKFCggDpiIiIiIiIiLafy0Kw3b96gffv2TEKIiIiIiCjbVE5EfvrpJ8THx6sjFpXduHEDY8aMgaenJ6ytrWFmZoZKlSph0qRJeP/+vUL969evo1WrVrC0tISJiQm8vb2xb9++PIiciIiIiCh/UTkRmThxIhYvXoyzZ8+qIx6VrFy5ErNnz0apUqUwZswYzJgxAy4uLhg1ahRq1Kghu+kiANy+fRs1atRATEwMhg0bhhkzZuDdu3do2LAh9u7dm4dHQURERESk/VSeI+Lj44MVK1bA09MTnp6ecHJygq6urlwdiUSCFStWqNrVV7Vr1w7Dhw+Xu4Hizz//jNKlS2PSpElYsWIF+vbtCwAYPnw4Xr16hdOnT6NSpUoAgG7dusHd3R2//vorrl27BolEkusxExERERHlRyonIidOnEBgYCA+fvyIw4cP4/Dhwwp1NJWIeHh4KC3v0KEDJk2ahEuXLgEA3r9/j3/++Qe+vr6yJAQATE1N0bNnT4wZMwaxsbGoVq1arsdMRERERJQfqZyIDBgwAPr6+ti6dSu8vb1hYWGhhrDU68GDBwCAIkWKAAAuXLiAlJQUeHl5KdT19PQEgGwlIvHx8bK2pS5evKiOkImIiIiItJrKiciFCxcwduxYNG/eXB3xqF16ejomTJgAPT09BAQEAAAePXoEALC3t1eoLy17+PDhV9tesWIFxo0bp8ZoiYiIiIjyB5UTERsbG+jr66sjllwxcOBAxMTEYPLkyXBxcQEAJCUlAQAMDAwU6hsaGsrVyUpwcDAaNmwoV3bx4kWEhISoGjYRERERkVZTORHp0aMH1qxZg759+0JPT+Xm1Gr06NGYP38+evfujeHDh8vKjY2NAQApKSkK+yQnJ8vVyYqDgwMcHBzUFC0RERERUf6hcuZQq1YtbNu2DZ6enujTpw9KlCihsGoWANSuXVvVrnJk7NixmDhxIrp3747FixfLbbOzswOgfPiVtEzZsC0iIiIiIlIPlRORevXqyf7fs2dPhSVvhRCQSCRIT09XtatsGzt2LMaNG4fAwEAsX75cIaby5cvDwMAAMTExCvseP34cQOYrcBERERERkepUTkRWrVqljjjUZvz48Rg3bhy6du2KlStXQkdH8Z6NpqamaN68OTZt2oTz58+jYsWKAIB3795h+fLlKF26NJfuJSIiIiLKRSonIoGBgeqIQy0WLFiAsLAwFC9eHPXq1cO6devkthcpUgT169cHAEyZMgXR0dFo0KABBg0aBHNzcyxbtgwPHz7E9u3beTNDIiIiIqJc9H3NLldRbGwsAOD+/ftKEyQfHx9ZIuLs7IyjR48iNDQUU6dORWpqKipXroxdu3bJDTcjIiIiIiL106pEJDw8HOHh4dmuX7ZsWWzdujX3AiIiIiIiIqUUJ1AQERERERHlMiYiRERERESkcUxEiIiIiIhI45iIEBERERGRxjERISIiIiIijWMiQkREREREGsdEhIiIiIiINI6JCBERERERaRwTESIiIiIi0jgmIkREREREpHFMRIiIiIiISOOYiBARERERkcYxESEiIiIiIo1jIkJERERERBrHRISIiIiIiDSOiQgREREREWkcExEiIiIiItI4JiJERERERKRxTESIiIiIiEjjmIgQEREREZHGMREhIiIiIiKNYyJCREREREQax0SEiIiIiIg0jokIERERERFpHBMRIiIiIiLSOCYiRERERESkcUxEiIiIiIhI45iIEBERERGRxjERISIiIiIijWMiQkREREREGsdEhIiIiIiINI6JCBERERERaRwTESIiIiIi0jgmIkREREREpHFMRIiIiIiISOOYiBARERERkcYxESEiIiIiIo1jIkJERERERBrHRISIiIiIiDROL68DICIiory1r0v1XGm3zpoTudIuEWkHXhEhIiIiIiKNYyJCREREREQax0SEiIiIiIg0jokIERERERFpHCerExEREf2AuMgA/ejydSKSkZGBuXPnYsmSJbh79y6sra3Rvn17jB8/HiYmJnkdHhHRD4UfioiIKCfy9dCsQYMGYfDgwXBzc8O8efPg7++PP//8E82bN0dGRkZeh0dEREREpLXy7RWRy5cvY968eWjTpg02btwoKy9RogT69++Pv/76CwEBAXkYIRERERGR9sq3V0TWr18PIQQGDhwoV96rVy8YGxtjzZo1eRMYEREREVE+kG+viMTGxkJHRwfVqlWTKzc0NESlSpUQGxv71Tbi4+Px4MEDhXYB4OLFi+oLNodu37yVK+2mPU7IlXbf4mautBsTE5Mr7eaWH+28ATx3Uj/aucut83b59dtcadcol54PuXXeAJ47qR/t3PG8ffKjnTfgxzt3P9rfuZwoV64czMzMslVXIoQQuRzP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",
      "text/plain": [
       "<Figure>"
      ]
     }
    }
   ],
   "source": [
    "# grouped bars: Original / Transform / Faker / Redact (Presidio masked-span recall)\n",
    "import numpy as np, matplotlib.pyplot as plt\n",
    "ben=['ASQ','MEDD','en','nl','fr','de']\n",
    "orig=[94.5,75.4,75.6,83.6,61.4,56.1]; tr=[95.7,72.9,73.5,77.7,59.9,58.3]\n",
    "fak=[97.7,79.7,89.2,93.0,78.5,78.1]; red=[0,0,1.9,3.8,2.2,0]\n",
    "x=np.arange(6); w=0.2; fig,ax=plt.subplots(figsize=(7,3.2))\n",
    "ax.bar(x-1.5*w,orig,w,label='Original',color='#9aa39e')\n",
    "ax.bar(x-0.5*w,tr,w,label='Transform',color='#0F6E5C')\n",
    "ax.bar(x+0.5*w,fak,w,label='Faker',color='#3A6EA5')\n",
    "ax.bar(x+1.5*w,red,w,label='Redact',color='#BD5B36')\n",
    "ax.set_xticks(x); ax.set_xticklabels(ben); ax.set_ylabel('masked-span recall (%)')\n",
    "ax.legend(ncol=4,fontsize=8,frameon=False); ax.set_ylim(0,108); plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "image/png": "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KpX44osv4Ofnl2lda2trfPzxxwb33bNnTwDA8uXLsx0fUZ4y9i0xIvrwZPRonxBCPHjwQPN41vnz54UQQqSmpoq2bdsKAMLa2lo0btxYdOjQQXh4eAgAwtXVVdy+fVurn3Xr1gkAwt/fX5QpU0YUK1ZMdOjQQbRv396gx2TUMQwfPlwoFArh6+srvvzyS82YRYsWFRERETrtjh49KmxsbAQAUbFiRdGhQwfh4+MjLCwsBADx3XffZXg8vv32WyGXy0WDBg1EQECAKFeunAAgrKysxH///afT7u+//xbFixcXAETx4sVF27ZtRceOHUWtWrWEXC7X2s+3H+3r2rWrsLS0FP7+/qJt27bCyclJABAfffSReP36td7j2KZNG1G+fHnh6uoqOnXqJBo1aiRkMpkAIDZu3Ch27twpTE1NRd26dUWnTp00x6l48eI6j53dv39fABAODg6ifv36onPnzqJZs2bCzs5OABBeXl4iOTk5w3MyePBgYWJiojkn9erV06nztidPnojatWtr2iqVSv0nXY9Zs2YJmUwm5HK5qFOnjggICBBeXl4CgDAzMxN79+7VabN+/XrNsalTp47o0qWLqF69upDL5eKrr74SAISPj4/e49yrVy+9cWT0iJe+8j179ggAolGjRnr7SklJEUWLFhVyuVzcv39fU963b18hk8lE1apVhb+/v+jYsaOoXr26ACAUCoXYsmWLwXFl59hl9xoVQoi1a9cKU1NTzc9dp06dxOeff655bO7d3zUbNmzQ1K9Ro4bo2LGjqFevnlAoFEImk4nly5frPXYZ6dq1qwAgfvnlF51tf/zxh+ZnISNFihQRAMSyZcu0ytXHt1WrVmLMmDGif//+4rvvvhP79u0T6enpevtq2bKlcHJyEqmpqZqyBQsWCABi27ZtQggh7t69K6ysrETPnj0l7ee7lEqlKFq0qAAgdu3aJbl9Zo/2CSFEUlKSMDExEUWLFpX0c0uUX5hIEVG+yyyR+vHHHwUAYW5urvkwPWbMGAFANG3aVDx69EhTV6lUivHjxwsAomHDhlr9qD+YqpOply9fSopR3dbKykr88ccfmvL09HQxcOBAAUB8/PHHWm0ePnwo7O3thampqc6HzmvXrmn2+/jx43qPh4WFhQgLC9OUp6aminbt2gkAonfv3lptEhIShIuLiwAgRo4cKVJSUrS237t3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SBEREREREUnER/uIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUqQlMTER4eHhSExMNHYoREREREQFFt8jRVquXLmCevXq4cyZM/D29jZ2OETZ9jAuFvdjYyCX8+9FlLn4mOe4cDwMtT5rDDsnR2OHQwWUSqVCaQcnuNo7GDsUIiogmEgR0XtLLpfD2dbe2GFQAWfyKgUA4GhlDSdeL5SBxwlxxg6BiAoY/qmWiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJcpRIhYWFQSaTQSaTYdiwYXrrPH36FGZmZpDJZGjcuLGmvHHjxpq2+r6mT5+uqRscHKy1zczMDMWKFUPdunXxzTff4J9//tE7dmBgoFY7CwsLlChRAo0aNcKECRMQGRmZ6f799ttvCAgIgIuLC8zMzFC8eHH4+/tj9+7dmba7ceMGhgwZgkqVKsHKygpFihSBp6cnBgwYgHPnzulto1Qq4erqCplMhmnTpmXYt/q4eXh4IDU1VWe7+lj9/fffmcZIRERERETZlysv5LWwsMDmzZsxf/58mJuba23bsGEDhBAwMdEdytzcHGvWrNHbZ82aNXXKpk6dirJly0KpVOLFixe4dOkSQkJCsHjxYowcORLz5s3T29fy5cthbW2N9PR0xMTE4OzZs5g/fz7mzZuHmTNnYuTIkTptxo8fj5kzZ8LNzQ19+/ZF2bJl8fjxY2zevBnt27dHjx49sG7dOigUCq12ISEhGDx4MCwsLNClSxfUrFkTJiYmuHHjBnbu3InVq1fj6tWrqFKlila7gwcPIjo6GuXKlUNoaCgmTpwImUymd38AICoqCsuXL8fw4cMzrENERFRYRU3sDgAoO31jnvSvTIxHfPghvDx/CsqkBCisbGHt5QM77xZQ2NjlyZinh/oDABr8cCBP+iei/JUriVT79u2xZcsW7NmzB506ddLatm7dOvj7++P48eO6g5uYoHv37gaP07JlS9SuXVurbMGCBQgICMD8+fNRrFgxjBs3Tqddx44d4eTkpFV27949tGrVCqNGjYKrqys6d+6s2RYSEoKZM2eiadOm2LNnDywtLTXbxo4di759+2L9+vVwd3fH1KlTNduOHTuGAQMGoEqVKjh8+DBcXFy0xpw5cyaWLl2qd99CQkJQrlw5LFiwAG3btkVYWBh8fX311i1SpAjKli2L6dOno0+fPrCxscngiBEREdG7Xt+9gejlk6FKTtSUKRNeIHb/esSd2AWXwVNh4eZpxAiJqDDIlTlStWrVQvXq1bFu3Tqt8rNnz+Lq1avo3bt3bgyjl4ODA7Zv3w5bW1vMnDkTSUlJBrUrU6YMduzYAblcjgkTJmjKU1NTMXHiRFhbW2PTpk1aSRTwJvlbuXIlypQpg3nz5uHZs2eabePGjYMQAlu3btVJotRtv/nmG527UU+ePMH+/fvRs2dP+Pv7o3jx4ggJCckwdrlcjpkzZyImJgZz5swxaH+JiIjozZ2od5Oot6mSExG9YjKUifH5HBkRFTa5tthEnz59cOTIETx8+FBTtnbtWhQvXhytWrXKsF1MTIzer/T0dIPHdnBwQPv27REfH4/Tp08b3M7T0xMNGzbE7du38d9//wEA/vjjDzx+/Bht27ZF8eLF9bazsLBA9+7d8erVKxw48Ob2fFRUFC5cuIAGDRroJEpZWb9+PZRKJXr27AkTExN069YNv/zyC+LjM/4l3qZNGzRo0AALFy7E48ePJY1HRET0oYoPP5RhEqWmSkpEfPjhfIqIiAqrXHm0DwC6d++OsWPH4qeffsL48ePx6tUr/Pzzz+jXr5/e+VEAkJSUhGLFiunddu7cOZ3H+DJTvXp1AG8WevDz85PU7tSpU7hx4wYqVqyIK1euAHhzly0zXl5eAICIiAgA0LTTN7crK2vXrkWjRo3g7u4OAOjVqxcWLlyIzZs3Y/DgwRm2mz17NurXr4/g4GCsWLFC8rj379/HgwcPtMrU+0NERGRsqtQU3J3WP1f7TIt9alC92IObkPjXUc336SolIuUK3JNn/2/QqYkvoDAvku32RFSw5Foi5ejoiDZt2iA0NBTjx4/X3FHp06dPhm0sLCywb98+vdsqVqwoaXxbW1sAQEJCQo7aqf9rZ5f5RFN1O/VdI3U7dbmhzpw5g+vXr2Ps2LGasho1aqBmzZpYu3ZtpolUvXr10K5dO4SEhGDkyJHw9JT2PHdISAimTJkiqQ0REVG+ESqkPYs2ztjKdJ2x0/7/K0dUqpz2QEQFRK4lUgDQu3dvfP755zh9+jTWrl2LOnXqZPqYm0KhQNOmTXNl7OwmMu+2ezdByqqdOuFSt0tMzPxxgXeFhITA1NQUH3/8MW7duqUp9/Pzw+zZs/HPP/9o7rbpM3PmTOzbtw/fffcddu7cKWnsvn376ty9i4iIwMCBAyX1Q0RElCdkcpgW051znBNpsU8BpQHTBxQmMHX43yP+6SolTOQKmOTgjtSrZ9FADtoTUcGSq4mUn58fXF1dMWXKFJw8eRLLly/Pze4zpX6XlNQ7We+2++ijjwAAFy5cyLSdenu1atW02l28eNHgsV++fIlt27YhLS0NH3/8sd46a9euxaJFizLso1KlSujduzfWrFmDv/76y+CxAaB06dIoXbq0pDZERET5RW5mDrdJq3O1z9gjWxG7f32W9RxadoND8/+tRPw4IQ6u9g5wtXfI9tjq5c+J6P2Qq38WUSgU6NmzJ44dO6Z5j1J+iI2Nxa5du2BnZ4cGDRoY3O7GjRv4/fffUaFCBc1jcfXq1UOJEiWwZ88exMTE6G33+vVrbNy4ERYWFmjZsiUAoGzZsvj444/xxx9/4Pr16waNv23bNrx8+RIzZszA9u3bdb4aNmyIjRs36n3x7tumTJkCS0tLvUu/ExER0f/YebeA3DLz14bIrWxh5234fGsi+jDl6h0pABg0aBDMzMzg4eEh+TG77IiNjUVAQAASEhIwZ84cneXKM3Lv3j0EBARApVLh+++/15Sbm5tj6tSpGDhwILp3745du3ahSJH/TQxVKpUYMmQI7t69i0mTJmmt7Dd79my0aNECX375JQ4dOgRnZ2etMZVKJZYuXYrmzZujSpUqCAkJgYODA8aMGaN3QY6kpCQEBgZiz549CAgIyHBfXFxcMHz4cMycORPJyckG7T8REdGHSGFjB5fBUxG9YjJUSbqP48utbOEyaEqevZSXiN4fuZ5IlSlTBsHBwQbVTU9Px8aN+t9Y7uHhgXr16mmVHTx4ENevX4dKpcKLFy9w8eJF7Nq1C4mJiRgzZgzGjBmjt68dO3bA2toa6enpeP78Oc6ePYu9e/dCpVJh0aJFOknKgAEDcOvWLcydOxdVqlRBz5494e7ujsePH2PLli2IiIhA9+7dERQUpNWuWbNmWLVqFQYPHoyKFSuiS5cuqFmzJkxMTHDr1i3s3LkTt2/fxpUrV3D9+nWcOXMGgYGBGa5q2KZNG5iamiIkJCTTRAp48w6rVatW4dy5c5nWIyIiKgzKTtf/+SA3WLh5wm38SsSHH8bL82FQJiVAYWULa6/GsPP2y7MkqsEPB/KkXyIyjlxPpKRISUlBjx499G7r1q2bTiI1efJkAICpqSlsbW3h4eGBPn36oHfv3pkuyKBe+c7MzAx2dnaoWLEiRo0ahT59+sDDw0Nvmzlz5sDf3x9Lly7FqlWr8Pz5c9jZ2aF27dqYMmUK2rdvr7dd37590aBBAyxatAjHjx/H+vXroVKp4ObmhiZNmmDbtm2oUqWKJunr0KFDhnEXLVoUvr6+OHr0KO7fv5/pfCY7OztMmDABI0eOzLAOERERvaGwsYND805a86CIiKSQCSGEsYOggiM8PBz16tXDmTNn4O3tbexwiLLtYVwsHsbFwtnW3tihUAEX8+QJju7dj2ZtWsGpRAljh0MFVG4sNkFE7xeuwUlERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJ1HtGJpMhMDDQ2GEQEREREb3XmEhlQ1hYGGQymdaXtbU1vLy8sHjxYiiVSgBAaGgoZDIZduzYoWl7584dyGQyDBs2zFjhExERIWpid0RN7G7sMAoMZWI8Yo9sxb2ZQxA1sTvuzRyC2CNboUyMN3ZoBcbpof44PdTf2GEQFRgmxg6gMOvSpQv8/f0hhEB0dDRCQ0MxYsQIXL16FatWrTJ2eERERGSA13dvIHr5ZKiSEzVlyoQXiN2/HnEndsFl8FSgaHEjRkhEBRHvSOVArVq10L17d/To0QPjxo3DX3/9BRcXF6xZswZPnjwxdnhERESUBWVivE4S9TZVciKiV0yGSErI58iIqKBjIpWLbG1t4e3tDSEEIiMjc6XP4OBgyGQy/Pfffxg/fjxKlSoFc3Nz1KhRAwcOHMiVMYiIiD5U8eGHMkyi1FRJiUj7+2Q+RUREhQUf7ctFQgjcunULAODk5IT//vsv1/ru1asXTE1NMXr0aKSmpmLRokVo164dbty4AXd392z1ef/+fTx48ECrLCIiIheiJSKiwkCVmoK70/obOwyjSot9alC91BO/IPLSadyTf7h/g05NfAGFeRFjh0FUYDCRyoHk5GTExMRACIFHjx5h6dKluHz5MurWrYsKFSrgjz/+yLWxnJycsG/fPshkMgCAr68v6tSpg5UrV2LmzJnZ6jMkJARTpkzJtRiJiKiQESqkPYs2dhSFgzIdac+ikWbsOIxNpTJ2BEQFBhOpHAgKCkJQUJDme7lcjjZt2uTJQhPDhw/XJFEA8Mknn8Da2ho3b97Mdp99+/aFn5+fVllERAQGDhyY7T6JiKgQkclhWszF2FEYVVrsU0CZnnVFhQlMHYrD5AO+I/XqWTTwAe8/0buYSOXAgAEDEBAQAJlMBisrK3h6esLBwUFyP7GxsUhNTdUqc3Z21vrew8NDp52joyOeP38ueTy10qVLo3Tp0tluT0REhZvczBxuk1YbOwyjij2yFbH712dZz6xJB5Rt2xuu9tL/nX9fcOlzIm1MpHKgQoUKaNq0aY776dChA06dOqVVJoTQ+l6hUOht+249IiIiMpyddwvEndiV6YITcitbmNb2zceoiKgwYCJVAMyfPx8vXrwwdhhEREQfHIWNHVwGT0X0islQJekmU3IrW7gMmoI4K1sjREdEBRkTqQLAy8vL2CEQEdEHpuz0jcYOocCwcPOE2/iViA8/jJfnw6BMSoDCyhbWXo1h5+0HhY0dkBBn7DCNrsEPfO0K0duYSBEREdEHT2FjB4fmneDQvJOxQyGiQoJLrxAREREREUkkE1ytgN4SHh6OevXq4cyZM/D29jZ2OETZ9jAuFg/jYuFsa2/sUKiAi3nyBEf37kezNq3gVKKEscOhAupxQhxc7R0+6FX7iEgb70gRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIpWJsLAwyGQyrS9ra2t4eXlh8eLFUCqVAIDQ0FDIZDLs2LFD0/bOnTuQyWQYNmyYscInIiIiIqI8YmLsAAqDLl26wN/fH0IIREdHIzQ0FCNGjMDVq1exatUqY4dHRES5IH7RN0hUyFF2+kZjh5InlInxiA8/hJfnT0GZlACFlS2svXxg590CChs7Y4eX66ImdgeA9/Z8EpHxMZEyQK1atdC9e3fN94MHD0blypWxZs0aTJs2zYiRERERZe313RuIXj4ZquRETZky4QVi969H3IldcBk8FRZunkaMkIio8OGjfdlga2sLb29vCCEQGRmZa/3Gx8dj3LhxKF++PMzNzVGsWDF06dJFZwz1o4QnTpzAvHnzUK5cOZibm8PT0xM//fRTrsVDRESFnzIxXieJepsqORHRKyZDmRifz5ERERVuvCOVDUII3Lp1CwDg5OSE//77L8d9xsfHo169erh37x769OmDqlWr4tGjR/jxxx/x6aef4u+//4abm5tWm/Hjx+PVq1cYOHAgzM3NsXz5cgQGBqJ8+fKoX79+jmMiIqLCLz78UIZJlJoqKRHx4Yfh0LxTPkVFRFT4MZEyQHJyMmJiYiCEwKNHj7B06VJcvnwZdevWRYUKFfDHH3/keIzJkycjMjISf/75J2rUqKEpDwwMRLVq1RAUFITQ0FCtNikpKTh37hzMzMwAAB07doSHhweWLVtmUCJ1//59PHjwQKssIiIix/tCRFRYqVJTcHdaf2OHkavSYp8aVC/24CYk/nU0j6PJP8qX8ZCZWRg7DCJ6jzGRMkBQUBCCgoI038vlcrRp0ybXFpoQQmDTpk1o1KgRXF1dERMTo9lmZWWFunXr4siRIzrthgwZokmiAMDV1RWenp64efOmQeOGhIRgypQpOd8BIqL3hVAh7Vm0saMwDmX6+7fvQmXsCIjoPcZEygADBgxAQEAAZDIZrKys4OnpCQcHB8n9xMbGIjU1VavM2dkZz549w/Pnz3HkyBEUK1ZMb1u5XHc6m4eHh06Zo6Mj7t69a1A8ffv2hZ+fn1ZZREQEBg4caFB7IqL3jkwO02Iuxo4iV6XFPgWU6VlXVJjA1KF43geUT9KePwZknApORHmHiZQBKlSogKZNm+a4nw4dOuDUqVNaZUIICCEAAE2bNsW4ceMM7k+hUOgtV/eXldKlS6N06dIGj0dE9L6Tm5nDbdJqY4eRq2KPbEXs/vVZ1nNo2e29miOlXv6ciCivMJHKR/Pnz8eLFy90yosVKwZ7e3skJCTkSsJGRESkZufdAnEndmW64ITcyhZ23n4ZbiciIl1MpPKRl5eX3nK5XI5u3brhhx9+wI4dO9CxY0edOk+fPkXx4u/PIxdERJQ/FDZ2cBk8FdErJkOVpJtMya1s4TJoynv5Ul4iorzERKqA+P777/HHH3+gU6dO6NSpE+rWrQszMzPcvXsXBw4cgJeXl86qfURElHvsRiyEU4kSxg4jT1i4ecJt/ErEhx/Gy/NhUCYlQGFlC2uvxrDz9nsvk6iy0zcaOwQies8xkSog7Ozs8Mcff2D+/PnYtm0b9uzZAxMTE5QqVQoNGjRAv379jB0iEREVYgobOzg07/RezYMiIjImmTB0ZQL6IISHh6NevXo4c+YMvL29jR0OUbY9jIvFw7hYONvaGzsUKuBinjzB0b370axNq/f2jhTl3OOEOLjaO8DVXvqqvUT0fuK6oERERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkUaFKpEJDQyGTyRAWFmZQ/bCwMMhkMoSGhuZpXERERERE9GHJlURKnbDIZDIMGzZMb52nT5/CzMwMMpkMjRs3zo1hAQCXLl1CcHAw7ty5I6ldeno61q5di2bNmqFYsWIwMzODo6MjfH19sXTpUiQnJ2crnsDAQMhkMtjZ2eH5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48eaOmlpaZg7dy5kMhnatm2b6ZiWlpYIDg7GrVu3NI/j5QVfX180atQIoaGhmkcSiYio4FDY2MFl8FTIrfQnU3IrW7gMmsKX8hIRFQJ59jB4mTJlEBwcnGW9YcOGoXv37mjSpAl69OiBuLg4rF69Gm5ublqJS0Y++eQTyOVyfP/993jx4gWsrKxQtmxZfPrpp3rry2Qy7NixA61bt8bQoUOxYcMGtGnTBs7OzoiLi8Pp06exd+9ezZ0rhUKBZcuWoX379vjkk08wYMAA2NjYYOvWrfjzzz8xfvx4vSv2vatv375YsGABzp07l2GdGzduYOPGjXq3NW3aFM7OzlmOM2nSJDRr1gzTp0/P9D1XhdmH9tZsInq/WLh5wm38SsSHH8bL82FQJiVAYWULa6/GsPP2YxJFRIXOh/rZLG9n1RqgW7duiI6OxrJlyzBy5Eh4eHhg8uTJkMvl+Ouvv7JsX6ZMGaxduxazZ8/G4MGDkZaWhl69emWYSAFAsWLF8Pvvv2P9+vXYsmUL5s+fj/j4eNja2qJGjRpYvHix1suDW7dujePHj2P69OmYO3cuUlNTUblyZaxZswZ9+/Y1aD8VCgVmzpyJDh06ZFjn6NGjOHpU/3K3R48eNSiRatq0KerWrYv169dj/Pjxmb5Ti4iIjENhYweH5p04D4qIqBCTCSGEsYOggiM8PBz16tXDmTNn4O3tbexwiLKNi02QoWKePMHRfFpsggovLjZBRO/68NYpJCIiIiIiyiEmUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQk0XuTSL148QJFihSBTCbDhg0b9NZ5/fo1li5dik8++QROTk4oUqQIypQpgxYtWmD27Nl620RFRWHIkCGo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iKdPn8LExATu7u745ptvMGbMGJ1FIdq1a4crV65g7ty5OHDgAFavXo2UlBQAQM+ePbF27VooFIq820kiIqJsUtjYwaF5J6POgyIiep/JxLsrIVCmHj16BB8fHzx8+BCHDx9GgwYNjB1SrgoPD0e9evVw5swZeHt7Gzscomx7GBeLh3GxcLa1N3YoVMDFPHmCo3v3o1mbVnB6axVWorc9ToiDq70DXO0djB0KERUQXHdUopIlS+L48eMoXrw4Pv/8c5w9e9bYIRERERERUT4rtI/2GVPp0qURFRVl7DCIiIiIiMhIeEeKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkVERERERCQREykiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJVCFz6dIlfPbZZyhatChkMhmCg4ONHRIRERER0QeHiVQOhYWFQSaTaX1ZW1vDy8sLixcvhlKpBACEhoZCJpNhx44dmrZ37tyBTCbDsGHDDBorPT0dX3zxBW7evIlp06Zhw4YN6NChQ57sFxERERERZczE2AG8L7p06QJ/f38IIRAdHY3Q0FCMGDECV69exapVq3JljMjISERGRmL+/PkGJ19ElP+iJnYHAJSdvtHIkeQOZWI84sMP4eX5U1AmJUBhZQtrLx/YebeAwsbO2OHlihrXfkV85HE4zdxs7FCIiKiQYCKVS2rVqoXu3btrvh88eDAqV66MNWvWYNq0abkyxuPHjwEADg4OWdYVQiApKQnW1ta5MjYRfZhe372B6OWToUpO1JQpE14gdv96xJ3YBZfBU2Hh5mnECImIiIyDj/blEVtbW3h7e0MIgcjIyBz317hxY/j4+AAAevfurXmM8M6dO5rHC0NDQ/HDDz+gSpUqsLCwwLx583I8LhF9uJSJ8TpJ1NtUyYmIXjEZysT4fI6MiIjI+HhHKo8IIXDr1i0AgJOTE/77778c9TdhwgTUr18fM2bMwIABA9CwYUMAQLFixXDnzh0AwKJFi/D8+XP0798fzs7OKF26dI7GJKIPW3z4oQyTKDVVUiLiww/DoXmnfIqKiIioYGAilUuSk5MRExMDIQQePXqEpUuX4vLly6hbty4qVKiAP/74I0f9N2vWDKamppgxYwa8vb21HiNUu3fvHq5fv47ixYsb1Of9+/fx4MEDrbKIiIgcxUlEb6hSU3B3Wn9jh5EjabFPDaoXe3ATEv86msfR5B1lejpM01Mh5DJjh0JERIUIE6lcEhQUhKCgIM33crkcbdq0ybWFJgzRs2dPg5MoAAgJCcGUKVPyMCKiD5hQIe1ZtLGjyB/K9EK/rzIAEMLYYRARUSHCRCqXDBgwAAEBAZDJZLCysoKnp6dBi0K8KzY2FqmpqVplzs7OBrX19JQ24btv377w8/PTKouIiMDAgQMl9UNEesjkMC3mYuwociQt9imgTM+6osIEpg6G/xGnoFGmp0P54hlkMt6RIiIiwzGRyiUVKlRA06ZNc9xPhw4dcOrUKa0yYeBfSS0tLSWNVbp0ac6jIsojcjNzuE1abewwciT2yFbE7l+fZT2Hlt0K9RypmCdP8HT2YJibmhs7FCIiKkSYSBUw8+fPx4sXL4wdBhER7LxbIO7ErkwXnJBb2cLO2y/D7URERO8rJlIFjJeXl7FDICICAChs7OAyeCqiV0yGKkk3mZJb2cJl0JT35qW8REREUjCRIiLKZWWnbzR2CLnGws0TbuNXIj78MF6eD4MyKQEKK1tYezWGnbffe5NEXa78OZq1aWXsMIiIqBBhIkVERJlS2NjBoXmnQj0PioiIKLcxkcqhxo0bG7QYRGBgIAIDA7XK3N3dDV5IIrOxDI2BiIiIiIhyh9zYARARERERERU2TKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUkRERERERBIxkSIiIiIiIpKIiRQREREREZFETKSIiIiIiIgkYiJFREREREQkERMpIiIiIiIiiZhIERERERERScREioiIiIiISCImUoWATCZDYGCgscMgIiIiIqL/x0QqE2FhYZDJZFpf1tbW8PLywuLFi6FUKgEAoaGhkMlk2LFjh6btnTt3IJPJMGzYMGOFT0QfkKiJ3RE1sbuxw8hTysR4xB7ZinszhyBqYnfcmzkEsUe2QpkYb+zQ8tSHcG6JiAojE2MHUBh06dIF/v7+EEIgOjoaoaGhGDFiBK5evYpVq1YZOzwiovfe67s3EL18MlTJiZoyZcILxO5fj7gTu+AyeCos3DyNGCEREX1oeEfKALVq1UL37t3Ro0cPjBs3Dn/99RdcXFywZs0aPHnyxNjhERG915SJ8TpJ1NtUyYmIXjH5vb8zRUREBQsTqWywtbWFt7c3hBCIjIzMtX6vXr2KFi1awMrKCg4ODujWrRuePn2aYf2tW7eiQYMGsLGxgaWlJT799FOtxwuJiN4H8eGHMkyi1FRJiYgPP5xPEREREfHRvmwRQuDWrVsAACcnJ/z333857jMqKgoNGzZESkoKhg0bhtKlS2Pfvn1o0aKF3voTJ07E999/jxYtWmDatGmQy+XYtWsXAgICsGzZMgwdOjTLMe/fv48HDx5olUVEROR4X4jIOFSpKbg7rb+xw8h1abEZ/0HpbbEHNyHxr6OS+1emp6NaUhISfjyNJJOC98+i8mU8ZGYWxg6DiIjeUfD+xSiAkpOTERMTAyEEHj16hKVLl+Ly5cuoW7cuKlSogD/++CPHY0yYMAEvXrzAiRMn4OvrCwAYOnQoOnTogIsXL2rVvXDhAr7//nt89913mDFjhqb866+/Rrt27fDdd9+hZ8+esLGxyXTMkJAQTJkyJcexE1EBIVRIexZt7CiMR5me7f23AKBKTYIqdyPKPaLARkZE9MFiImWAoKAgBAUFab6Xy+Vo06ZNri00oVKpsG/fPtSuXVuTRAFvlj0fO3Ysdu/erVV/06ZNkMlk6NWrF2JiYrS2tWnTBnv27EF4eDiaN2+e6bh9+/aFn5+fVllERAQGDhyYsx0iIuOQyWFazMXYUeS6tNingDI964oKE5g6FJfcvzI9HclJSbC0soKiAN6RSnv+GJDxSXwiooKm4P2LUQANGDAAAQEBkMlksLKygqenJxwcHCT3Exsbi9TUVK0yZ2dnPH36FC9fvkSlSpV02lSpUkWn7Nq1axBC6K2vZsgiGKVLl0bp0qUNiJyICgO5mTncJq02dhi5LvbIVsTuX59lPYeW3eDQvJPk/mOePMFfe/ejWZtWcCpRIjsh5ikufU5EVDAxkTJAhQoV0LRp0xz306FDB5w6dUqrTAghuR8hBGQyGQ4ePAiFQqG3TtWqVbMVIxFRQWPn3QJxJ3ZluuCE3MoWdt5+GW4nIiLKbUyk8tH8+fPx4sULnfJixYrB2toa169f19n277//6pRVqFABhw4dQpkyZVC5cuU8iZWIqKBQ2NjBZfBURK+YDFWSbjIlt7KFy6ApUNjYGSE6IiL6UDGRykdeXl56yxUKBVq1aoWff/4ZJ0+e1MyTEkJgzpw5OvV79OiBpUuXYvz48dixY4fOXaknT56gRAF8PIWI8k7Z6RuNHUKesnDzhNv4lYgPP4yX58OgTEqAwsoW1l6NYeft914nUe/7uSUiKqyYSBUQ06dPx8GDB9GqVSt89dVXKFWqFPbt24dnz57p1P3kk08QHByM4OBg1KxZEwEBAXBxccGjR49w/vx5HDhwQGcuFhFRYaewsYND807ZmgdFRESU25hIFRDlypXD77//jlGjRmHp0qUwNzdHy5YtsWHDBr13l4KCglC7dm0sWbIEixYtQlJSEooXL46PPvoIS5YsMcIeEBERERF9OGQiO6sd0HsrPDwc9erVw5kzZ+Dt7W3scIiy7WFcLB7GxcLZ1t7YoVABF/PkCY4W4FX7qGB4nBAHV3sHuNpLX7WXiN5PfDEFERERERGRREykiIiIiIiIJGIiRUREREREJBETKSIiIiIiIomYSBEREREREUnERIqIiIiIiEgiJlJEREREREQSMZEiIiIiIiKSiIkUERERERGRREykiIiIiIiIJGIiRUREREREJBETKSIiIiIiIomYSBEREREREUnERIqIiIiIiEgiJlJEREREREQSMZEiIiIiIiKSiIkUERERERGRREykiIiIiIiIJGIiRUREREREJBETKSIiIiIiIomYSBEREREREUnERIqIiIiIiEgiJlJEREREREQSMZEiIiIiIiKSyMTYARARERER8Dg+DkqhyvdxFTI5nO3s833cgiQsLAy+vr6IioqCu7t7rvUbHByM0NBQ3LlzJ9f6/BAV1OPIRIqIiIioAFAKFe7HxkAuz78HhlQqFUo7OOXpGGvXrsWGDRsQERGBlJQUeHp6YuTIkejWrVuejitFvXr18OjRIxQrVszYoZAeo0ePxtChQ40dhg4mUkREREQFhFwuh7Otfb6N9zghLsd9BAYGAgBCQ0P1bj9x4gTatm2LOXPmoGjRoti1axd69OgBExMTdO7cOcfj5wYzMzM4OzsbO4wPSnp6OhQKBWQyWZZ1ra2tYW1tnQ9RScM5UkRERESUZzZu3IgRI0bgk08+Qfny5TFmzBi0aNEC27Zty7Lt0qVLUalSJVhYWKBChQqYNm0a0tLSNNtjY2PRuXNnWFlZoUSJEpg4cSJ69eqFxo0ba+oEBgZqfQ+8Sfre/gAfFhYGmUyGO3fuQAiBsmXLYsqUKVptlEolSpYsiVmzZgEALly4AH9/f5QoUQJWVlaoUaMGtmzZkuU+HT16FPXr10eRIkXg4uKCwMBAPHv2TLM9ODgY7u7u2LNnDypVqgQrKys0btwYN2/e1Orn/PnzaNGiBWxtbWFtbY06dergr7/+Mngcfdzd3TF+/Hh89dVXcHBwgIODA6ZMmQKVSoXp06ejZMmScHBwwFdffYX09HStsXx9feHk5ARbW1vUrVsXR48e1epbfR5+/PFHeHh4wNzcHM+fP8fz588REBCgOYeTJk3SOYfqY6KmPn9nzpxBrVq1YGlpCS8vL5w7dy7L45+bmEgRERERUb6Ki4uDlZVVpnWCg4Mxb948zJw5E9euXcOSJUuwevVqTJ48WVOnb9++OHfuHPbs2YMTJ07gzp072LVrV45ik8lk6NmzJzZs2KBVfvjwYTx9+hQ9evQAACQkJCAgIADHjx/H5cuX0bNnT3Tv3h2nTp3KsG/13bkvv/wS//zzD/bu3Yu7d++iXbt2EEJo6j19+hTLly/Hpk2bcObMGcTHx6NPnz6a7VevXkWjRo1QtGhRnDhxAhcvXsQ333wDlUolaRx9fvjhB7i6uuKvv/7C999/j+DgYLRu3RqxsbEICwvD6tWrsWLFCvz000+aNi9fvsSgQYNw+vRpnD17Fo0aNUKrVq30Jn8HDhzAzp078c8//8DW1ha9e/fGxYsXsW/fPpw8eRIPHjzA7t27Mz9J/++7777D4sWLceHCBTg6OqJTp05aCV5e46N9RiKTydCrV68Mb4NnV2hoKHr37o2TJ0/q/PWFiIiIKKdmzJiBGTNmaL5PSUkBAOzYsUNT1r17d6xYsUJv+59++gl///03li1bluEYycnJmDNnDnbs2AF/f38AQNmyZTF9+nQMHToUM2bMwO3bt7F7924cOHAATZs2BfBmPlbZsmVzvI89e/bE1KlTcfr0aTRo0AAAsH79ejRt2hSurq4AgMaNG2t91ho1ahSOHz+OTZs2wcfHR2+/U6dOxbBhw/DVV19pyn766Se4ubnh/PnzqF27NgDg9evX+Omnn1CiRAkAb+YI9ejRA69fv4aFhQVmzZoFDw8PbNq0STOnrkKFCpLH0ad+/fr49ttvNX0uXLgQd+/exa+//goAqFixInx9fXHs2DH07dsXANC+fXutPubMmYP9+/dj+/btGD9+vNa2TZs2wc7ODgBw8+ZN7Nu3D4cOHUKTJk0AAKtWrcKxY8cyjO9t8+bNwyeffAIACAoKQoMGDXD79m1UrFjRoPY59cHekVLfwn37y9raGl5eXli8eDGUSqWxQyQiIiIqcAYNGoRLly5pvtq0aYM2bdpolU2dOlVv2z179mDQoEEICQlBrVq1Mhzj6tWrePXqFQICAjTzY6ytrTFw4EC8fPkSjx8/xr///gvgzUIRamZmZpoP1jlRrlw5NGjQAOvXrwfw5u7Tnj17NPPBAOD58+f46quvULlyZRQtWhTW1tY4evRopivLnTt3DkuWLNHapypVqgCA1t2bkiVLapIoAHBxcYEQAk+fPgXw5s5OkyZNMlyYxNBx9Pn444+1vi9ZsiRq1KihU/bkyRPN93fu3EFgYCAqVKgAOzs7WFtb47///tM5FpUqVdIkUQA057Bu3bqaMlNT00wTvbfVrFlT8/8uLi4AoBVXXvvg70h16dIF/v7+EEIgOjoaoaGhGDFiBK5evYpVq1YZOzwiIqJ8ETWxOwCg7PSN2WqvTIxHfPghvDx/CsqkBCisbGHt5QM77xZQ2Nhl3UEux0N5Rz13Rs3GxgYAUL58+Uzb/fzzz+jduzdCQkLQtWvXTOuqH1H7+eefUblyZZ3tUlbXk8vlOo+zvT3PKiO9evXC6NGjsWTJEmzbtg3m5uZo166d1vbbt29jxowZKFeuHCwtLTF8+HAkJSVl2KdKpcLo0aO1EjK1txMnU1NTrW3q+Vzq45IVQ8fRR9/Y+srejqVVq1aws7PDkiVLUKZMGZibm6Njx45ITU3VapfR45yGLDiRVaxSj1Fu+OATqVq1aqF79+6a7wcPHozKlStjzZo1mDZtWpYXGxER0Yfu9d0biF4+GarkRE2ZMuEFYvevR9yJXXAZPBUWbp5GjJCMbfXq1fjqq6+wYcMGBAQEZFm/atWqsLCwwO3bt9G6dWu9ddR3WM6cOYOWLVsCAFJTU3Hu3Dmtx9yKFy+O33//XavthQsXsoyhU6dO+Prrr7F7926sX78enTp1QpEiRTTbT506hRkzZmgea1Mqlbhx44bm0T99ateujStXrmSZdGbFy8sLJ06cgEql0ntXKrfGMcTz589x9epV7N27V3MeEhISEBUVpXXHSB/1OQwPD4efnx+AN6v5nT9/Hh4eHnkad274YB/ty4itrS28vb0hhEBkZCTS09Mxe/ZsVKlSBRYWFnB0dET79u0RERGh01ZK3YwcO3YMzZs3h729PSwsLFC9evUMnzFevXo1KlWqBHNzc5QvXx6LFi3KcgIhERFRblImxuskUW9TJSciesVkKBPj8zkyyivqR+vUX7NmzcKsWbO0yuLj/3e+Fy5ciMGDB2PJkiVo2LChpk5mK8hZW1tj/PjxmDRpEpYuXYr//vsPV69exdatWzFmzBgAb+6AtWnTBl999RVOnDiBf//9F/369UNiova12LRpU9y6dQtLlizB7du3sWrVKuzcuTPL/bS1tUW7du0wa9YsnD59Gr169dLaXqlSJWzZsgWXL19GREQEAgMDNY/eZWTq1Kn49ddfMXz4cFy8eBG3b9/G4cOH9cadmbFjx+L27dvo1q0b/v77b9y+fRvbt29HeHh4ro5jiKJFi6J48eJYs2YNrl+/jr///hudOnUyqG2FChXQunVrDBs2DCdPnsS1a9cwcOBAJCQkZPsuVX5iIvUOIQRu3boFAHByckK3bt3w7bffolSpUpg7dy4GDRqEkydPwtvbGxcvXtRqK6WuPqtWrULz5s3x8uVLTJgwAQsWLEC5cuUwePBgzS8NtUWLFmHAgAGwsLDAjBkz0KtXL8ybNw9Lly7NvYNBRESUhfjwQxkmUWqqpETEhx/Op4gKN5VKhccJcfn2lZ3HoObNm4eSJUtm+jV8+HBNffXc84EDB2rVyWou06RJk7Bo0SKEhISgRo0aaNCgARYsWKC1DPbatWtRq1YttG7dGj4+PnB1ddVZ+KBp06aYPn06Zs+ejRo1auC3337DxIkTDdrXXr164fLlyyhfvjzq16+vtS00NBRyuRze3t5o0aIFPD09dcZ+l6+vL06cOKFZda969eoYMWIErKysYG5ublBMAFCtWjWEhYXh2bNn8PHxQc2aNTF//nwoFIpcHccQcrkcO3bswL1791CzZk106tQJHTp00JlrlZF169ahRo0a+PzzzzXnsFmzZrCwsMjVOPOCTHygtzDCwsLg6+uLKVOmYMiQIRBC4NGjR1i6dCnWrFmDunXrYurUqWjevDk6deqEn3/+WZMZX758GV5eXvD29tbcKj569KjBdQHdVfsePXqEsmXLokOHDti8ebNWrMOHD8eyZctw8+ZNeHh4IC4uDq6urnBzc8Pff/8NS0tLAMCDBw9QqVIlJCUlGbRq3/379/HgwQOtsoiICAwcOBBnzpyBt7d3to8vkbE9jIvFw7jYfH2xJRVOMU+e4Oje/WjWphWcPuDHuaMmdocqNQUmNvaS2qXFPgWUBiw3rDCBqUNxw/t9/hgyMwuUm7NdUjx55XFCHFztHeBq75B15eyOER8Hpci/+R1qCpkcznb2+T5uXgkMDMSdO3cQFhZm7FAoG5RKJSpVqgR/f38sXrzY2OFk6oOfIxUUFISgoCDN93K5HG3atMGqVas0L2KbMGGC1u3FGjVqoHXr1ti9ezeePXuGYsWKad5ZYEhdfXbs2IGUlBT07dsXMTExWttat26NJUuW4NixYxgwYACOHDmC5ORkDB06VJNEAUCpUqXQrVs3gxfJCAkJ0XnZHBERfcCECmnPovOmb2W69L6NkFQY0/uUzBAZ6vTp03j06BFq1aqFxMRELFy4EFFRUejdu7exQ8vSB59IDRgwAAEBAZDJZLCysoKnp6dmJZqoqCjI5XK9q8VUrVoVu3fvRlRUFIoVKyaprj7Xrl0DAM17EPRRL+cYGRkJ4M2zue9ST9ozRN++fTUT+9TUd6SIiOgDJJPDtJiLpCZ5eUcKMs5AIHrfKZVKzJgxA7du3YJCocBHH32EEydOZLlQRUHwwSdSFSpUyDR5yS/qJyzXr1+PkiVL6q2T26uXlC5dGqVLl87VPomIqPCSm5nDbdJqSW1ij2xF7P71WdZzaNkNDs0Nm4AO/G/5cyKp1NMmqHDw8fExaC2BguiDT6Qy4+HhAZVKhWvXrqF69epa29QvEFO/PVtKXX3Uy3Q6OTllmdipE6rr16/js88+0zsWERFRfrDzboG4E7syXXBCbmULO2+/DLcTERVGvGeeCfVL12bOnKm1rPiVK1ewd+9eNGjQQPOonpS6+nTq1Anm5uYICgrCq1evdLbHx8cjJSUFANCsWTMUKVIEP/zwA5KTkzV1Hjx4oLNQBRERUV5S2NjBZfBUyK1s9G6XW9nCZdCUbL2Ul4ioIOMdqUw0a9ZMswrfixcv0KpVKzx+/Bg//PADLCwssGTJkmzV1adUqVJYvnw5+vXrh8qVK6NHjx5wc3PDs2fPEBERgd27d+Pff/+Fu7s7ihYtimnTpmH06NGoV68eevbsieTkZKxYsQIVKlQotLdHiYjIeMpO35jtthZunnAbvxLx4Yfx8nwYlEkJUFjZwtqrMey8/bKVROUkHiKi/MBEKgubNm1CrVq1EBoailGjRsHKygo+Pj6YNm0aqlWrlu26+vTu3Ruenp6YN28eVq5cibi4ODg5OaFixYqYNm0anJ2dNXVHjRoFa2trLFiwAN999x1Kly6N0aNHw87ODn369Mn140BERJQZhY0dHJp3kjQPioioMPtg3yNF+oWHh6NevXp8jxQVenyPFBmK75EiQ+THe6SIqHDhHCkiIiIiIiKJmEgRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkUR8jxRpSUpKAgBEREQYORKinHmWmIAnCXGIkPPvRZS5l3HxuHv3Ln4PD4e1vfQXx9KHQaVS4bGtPe7Z2Bo7FCLKQx999BFsbGwMqstEirRERkYCAAYOHGjkSIiIiIiI8peUd6nyhbykJTo6Gvv374eHhwesrKyMHY5eERERGDhwIFauXIlq1aoZOxwqoHidkKF4rZAheJ2QIXidFH68I0XZ5uLiggEDBhg7DINUq1bN4L8Y0IeL1wkZitcKGYLXCRmC18mHgZMHiIiIiIiIJGIiRUREREREJBETKSIiIiIiIomYSFGhU6pUKQQFBaFUqVLGDoUKMF4nZCheK2QIXidkCF4nHxau2kdERERERCQR70gRERERERFJxESKiIiIiIhIIiZSREREREREEjGRIiIiIiIikoiJFBERERERkURMpIiIiIiIiCRiIkXvHZVKBW9vb8hkMrRq1crY4VAB8fDhQ8ycORM+Pj4oWbIkrKysULVqVYwZMwbPnz83dniUz1QqFRYuXIhKlSrBwsICpUuXxqhRo5CUlGTs0KgAuXHjBiZPnoy6deuiWLFisLGxQc2aNfH999/zWqEMJScnw8PDAzKZDMOGDTN2OJSHmEjRe+fHH3/ElStXjB0GFTD79u1DcHAwHB0dMWbMGCxatAj16tXDokWLULNmTTx+/NjYIVI++uabbzBy5EhUqVIFS5cuRUBAAJYsWYLWrVtDpVIZOzwqINauXYuFCxeiXLlymDx5MubOnYuKFSti4sSJqFevHl69emXsEKkAmjx5Mp49e2bsMCg/CKL3yP3794WNjY2YP3++ACA+//xzY4dEBcSVK1fEo0ePdMpXr14tAIhRo0YZISoyhitXrgiZTCY6dOigVb5kyRIBQGzatMlIkVFBc+7cOREXF6dTPmHCBAFALF261AhRUUF2/vx5oVAoNJ9Dhg4dauyQKA/xjhS9V4YOHQoPDw8MHz7c2KFQAVO1alU4OzvrlHfu3BkAeBfzA7JlyxYIITBixAit8v79+8PS0hIbN240TmBU4NSuXRt2dnY65fy9QfoolUr0798fLVq0QIcOHYwdDuUDE2MHQJRbduzYgX379uHMmTNQKBTGDocKiQcPHgAASpQoYeRIKL+cO3cOcrkcderU0Sq3sLBAzZo1ce7cOSNFRoUFf2+QPgsXLsT169exc+dOY4dC+YR3pOi9EB8fj6+//hoDBw5E3bp1jR0OFSJBQUEAgF69ehk5Esov0dHRcHJygrm5uc42V1dXxMTEIDU11QiRUWGgVCoxbdo0mJiYoGvXrsYOhwqIqKgoBAUFYfLkyXB3dzd2OJRPeEeKCoy4uDgsWrTI4Ppff/01HBwcAABjx46FSqXCzJkz8yg6Kihycp28a/78+di+fTsGDBiAJk2a5FKEVNAlJyfrTaKAN3el1HXMzMzyMywqJEaMGIHw8HDMmDEDFStWNHY4VEAMGjQIHh4eGDlypLFDoXzERIoKjLi4OEyZMsXg+t27d4eDgwN+//13rF69Ghs2bIC9vX3eBUgFQnavk3etWbMGY8aMweeff45ly5blZohUwFlaWuLp06d6t71+/VpTh+hdkyZNwrJlyzBgwAB89913xg6HCoiNGzfi6NGj+O2332BqamrscCgfMZGiAsPd3R1CCMnthg0bhho1auDTTz/FrVu3tLYlJyfj1q1bsLe3h5OTU26FSkaU3evkbWvXrsWAAQPQvHlz7Ny5k//wfWBcXFzw77//IiUlRefO1MOHD+Hk5MS7UaQjODgY06dPR+/evbFixQpjh0MFREpKCkaOHAl/f384OztrPoc8fPgQwJupB7du3YKTkxP/2PsekomcfiIhMjJ7e3vEx8dnWmfo0KG860AA3iRR/fr1Q9OmTbF3717No1z04Zg4cSK+//57/Pbbb2jYsKGm/PXr13B0dESjRo1w8OBBI0ZIBU1wcDCmTJmCXr16Ye3atZDLOcWc3oiLi0PRokWzrDd37lyMHj06HyKi/MQ7UlTorV+/Xu/E8ICAAHh5eeHbb79F+fLljRAZFTShoaHo378/mjRpgj179jCJ+kB17twZM2bMwKJFi7QSqdWrVyM5ORndunUzYnRU0EydOhVTpkxBjx49mESRDisrK2zfvl2n/NmzZxgyZAhatGiBvn37onr16kaIjvIa70jRe0smk+Hzzz/H/v37jR0KFQB79+5F+/btYWtrizlz5qBIkSJa262trdGuXTvjBEf57quvvsKyZcvQvn17+Pv749q1a1iyZAnq16+PEydO8MMyAQB++OEHDBs2DGXKlMG0adN0rosSJUqgWbNmRoqOCrI7d+6gbNmyfCLmPcc7UkT0Qbhw4QJUKhXi4uIwYMAAne1ubm5MpD4gixYtgru7O1atWoVff/0VTk5O+OqrrzB16lQmUaShfqfYvXv39L4iwcfHh4kU0QeMd6SIiIiIiIgk4p/diIiIiIiIJGIiRUREREREJBETKSIiIiIiIomYSBEREREREUnERIqIiIiIiEgiJlJEREREREQSMZEiIiIiIiKSiIkUERERERGRREykiIiIiIiIJGIiRUREREREJBETKSIiCWQyGQIDA7XK3N3d0bhx41wbIywsDDKZDKGhobnWJ70RGhoKmUyGsLCwbPeR2+c7M7wWsi8mJgY9e/aEi4sLZDJZvp0zY2jcuDHc3d0Nrv/69Wu4u7tjwoQJeRdUFi5dugS5XI5Tp04ZLQainGIiRURERHrt3r0bwcHBxg4jW0aNGoWtW7di0KBB2LBhg1GThoJmwYIFiIuLw+jRo7PdR06vjZo1a6Jdu3YYNWoUhBDZ7ofImJhIERHRB6NHjx549eoVGjVqlO0+/vvvPxw5ciQXoyq4du/ejSlTphg7jGw5evQo/Pz8MHnyZHTv3h3NmjUzdkgFwqtXrzB37lz07t0bRYsWzXY/uXFtjBgxAufPn8eBAwdy1A+RsTCRIqICT6lUIjk52dhhUCGWmJgIAFAoFLCwsIBcnv1//szNzWFmZpZbob1XXr16hfT0dGOHAQB4/PgxHBwccr1f9bVUWG3evBlxcXHo2bOnsUNBw4YN4e7ujhUrVhg7FKJsYSJFRAWKeg7LsWPHMG3aNJQrVw4WFhbYtm0bAEAIgeXLl8PLywuWlpawtraGr68vTp48qbe/nTt3onHjxrC3t4elpSUqVqyIr7/+GqmpqQAAlUqF77//Ho0aNYKzszPMzMxQpkwZDB48GM+fP8+TfcwqpretW7cOVatWhbm5Odzc3DBnzhydOkeOHEHnzp3h4eGBIkWKwN7eHs2bN9c790A9lyI6OhpdunRB0aJFYWlpCT8/P9y4cUOn/p07d/DFF1/A1tYWtra2aNu2LaKiojKcJ3Ts2DE0b94c9vb2sLCwQPXq1fV+SIqPj8f169cRExNj4FED1qxZg1q1aqFIkSKws7ND8+bNcfr0aZ166nlsx48fR4MGDWBtbY3WrVsDyHiOlJT9zKzs+vXr+Pzzz2FjYwM7Ozt07NgRjx8/1qobHR2NUaNGoWbNmihatCgsLCxQpUoVzJ49G0ql0uDjkdcaN26Mn376CcCbY6r+Us/XCgwMhEwmw7Nnz9CnTx+UKFECVlZWePDgAQDgxx9/RPPmzeHq6gozMzOULFkS3bt3x507d3TGUp+z8PBw+Pj4wMrKCo6OjujXrx9evnypVff+/fvo06cP3NzcYG5ujuLFi6NevXqaWIODgyGTySCEwE8//aQTN5A715L6nF++fBlNmzaFtbU1ihcvjlGjRiE9PR2vX7/G6NGj4erqCgsLCzRq1AjXrl3TGSMlJQUzZsxA1apVYWFhAXt7e7Ru3RoXL17UqfvixQv0798fTk5OsLKyQuPGjXH+/PmsT+Zbtm/fDmdnZ3z88cda5Xfu3IFMJkNwcDC2bNmC6tWrw8LCAmXKlEFwcLBWgpzVtZHVOXr7+Pr5+eHQoUM655moMDAxdgBERPqMHj0aaWlp6N+/P2xtbVGxYkUAbx7N2rJlCzp27IjevXsjJSUFmzZtQrNmzfDLL7+gTZs2mj4mTJiAGTNmoEqVKvjmm29QsmRJ3L59Gzt37sTUqVNhZmaG1NRUzJ07F1988QXatm0LKysrnDt3DiEhITh9+jTOnz+fq3cfDIlJbcWKFXjy5An69u0Le3t7bNy4EePGjUOpUqXQtWtXTb3Q0FDExsaiZ8+eKFWqFB4+fIg1a9bgs88+w8mTJ9GwYUOtGJKSktCoUSPUrVsXM2bMQFRUFBYvXoy2bdviypUrUCgUAIDnz5+jYcOGePLkCQYNGoTKlSvj999/h6+vL5KSknT2bdWqVRg0aBDq1q2LCRMmwMrKCkePHsXgwYNx+/ZtzJ07V1N3165d6N27N4KCggyaZzFu3DjMmTMHderUwYwZM5CYmIhVq1bB19cXe/bsgb+/v1b9v//+Gzt37kT//v3Rq1evTPuWup8ZefjwIRo3boz27dtj7ty5uHz5MlauXImEhAStRwH/+ecf/PLLL2jfvj3KlSuHtLQ0HDp0CN9++y0iIyOxcuVKg8fMSxMmTIBKpcLvv/+ODRs2aMrr1aunVa9Zs2ZwdnbGpEmTkJSUBGtrawDAvHnzULduXXz99ddwcHDAlStXsGbNGpw4cQIRERFwdHTU6ufSpUto1aoVevfuja5duyIsLAwhISGQy+VYtWoVACA9PR3NmjXDw4cPMWTIEHh6eiI+Ph7//PMPfv/9d/Tq1QsdOnRA+fLl0aNHDzRs2BADBgzQijs3r6UHDx6gWbNm6Ny5Mzp27IgjR45gwYIFMDExwdWrV/Hq1St8++23iImJwbx589CuXTtcu3ZNc0c0LS0NLVq0wJkzZ9CjRw8MGzYM8fHxWL16NerXr4/ffvsNtWvX1tT18/PDuXPn0KNHD9StWxeXLl1C06ZNdY5lRpRKJf744w80adIkwzp79+5FZGQkhg4dCmdnZ+zduxdTpkzB3bt3sW7dOgCZXxuGnKO3eXt7Y+XKlTh9+jRatGhh0H4QFRiCiKgAWbdunQAgPD09RVJSkta2X375RQAQK1eu1CpPS0sTXl5ewt3dXahUKiGEEH/99ZcAIHx9fcWrV6+06qtUKk09lUolkpOTdeJYs2aNACC2bt2qVQ5A9OrVS6vMzc1N+Pj4ZLlvhsZ08uRJAUCULFlSxMXFaeokJSUJJycnUbduXa22L1++1Bnr8ePHwtHRUbRs2VKr3MfHRwAQs2fP1iqfM2eOACAOHTqkKRszZowAIDZu3KhVV13+9j5HR0cLc3Nz0aVLF51Yvv76ayGXy8Xt27c1ZerzHBQUpFP/XdevXxcymUzUr19fpKSkaMofPnwo7OzshJubm0hPT9eUAxAAxNGjR3X6Uo978uTJbO2nEPrPt5ubm97rZciQIQKAuH79uqYsOTlZc67f1r17dyGXy0V0dLSmTH0trFu3Tqd+fujVq5fI6KOCelu3bt30btd3XR47dkzv9QdAyGQy8eeff2qV+/v7CxMTE5GYmCiEEOLy5ct62+uj72c1N68l9Tnftm2bVnmtWrWETCYTbdq00TrPixcv1vkZW7BggU6ZEELEx8eL0qVLa11nK1euFADE5MmTteouXLhQABBubm5ZHpPIyEgBQHzzzTc626KiogQAIZfLxfnz5zXlKpVKtGvXTgAQ4eHhmvKMrg0p50gIIX7//XcBQMybN8+g+kQFCR/tI6ICafDgwbC0tNQq27hxI2xsbNCuXTvExMRovuLi4tC6dWvcuXMHN2/eBABs2rQJADBz5kxYWFho9aN+DEX9/0WKFAHw5q+1cXFxiImJ0fzF9q+//sq1fTI0JrXevXvDzs5O872lpSXq1q2r2Uc1Kysrzf+/fPkSz58/h0KhwKeffqo3frlcjq+//lqrTL2/b/e9b98+lCxZEl26dNGqq2+lrx07diAlJQV9+/bVOjcxMTFo3bo1VCoVjh07pqkfGBgIIYRBd6P27NkDIQTGjh2rdcfOxcUFvXv3xt27d3Ueg6pRowaaNm2aZd9S9zMzLi4u6NSpk1aZvuNapEgRzblOTU1FbGwsYmJi4OfnB5VKhb///lvSuGp37txBcHCwwV8qlSpb47wro+Okvi5VKhXi4+MRExODGjVqwM7OTu916e3tjU8//VSrrEmTJkhPT9c8Dqj+eTh58iSePn0qOdbcvpZcXV0REBCgVdagQQMIIfDVV19p/Uyr7wy/fS1s3LgRlSpVgpeXl9bPTGpqKpo1a4bTp0/j1atXAN4s7qBQKDBq1Cit8QYPHgxbW1uD9v/Zs2cAkOncsWbNmqFWrVqa72UyGcaOHQvgzZ3krEg9R+q7adk5n0TGxkf7iKhA8vT01Cm7du0aEhMTUaJEiQzbPXnyBJ6enrh58yZkMhlq1KiR5Vjbtm3D/PnzcfHiRaSlpWlte/HihfTgMyAlJgDw8PDQKXN0dNSZu3X79m1MmDABhw8fRlxcnNa2d5Mz4M2HxncTOfWHmbf7joqKQp06dXQWZihevDjs7e21ytRzPzJLXp48eZLhtsxERUUBAKpWraqzTV0WGRmpeQQK0H/9ZNa/ofuZmYzOF6B9XNPT0zFr1iysX78et27d0ln6ObvX3J07dyStojZx4sQcLbqhltGxPnHiBKZOnYq//voLr1+/1tqmbx8NOX5ubm6YMGECZs6ciZIlS6JmzZr47LPPEBAQgE8++STLWHP7WipbtqxOmXolvHe3qcvfvhauXbuGV69eoVixYhmOERMTg9KlSyMyMhIlS5bUSZrMzc3h4eFh0HWj/n3w7jX3tsqVK+uUValSBcCbY5MVqedIHYu+31VEBR0TKSIqkN69GwW8+Qe3WLFi2Lx5c4btPvroI83/67vL865ffvkFnTt3Rp06dbB48WKULl0aFhYWUCqVaNGiRa791V5KTGrquUqZefnyJRo1aoSkpCSMGDEC1apVg42NDeRyOWbOnIkTJ05I6jezD1iZUbdbv349SpYsqbeOvg/KeUXf9ZPXDD2uI0eOxNKlS9G5c2dMmDABxYsXh6mpKS5cuIBx48Zl+5pr3LixUd7Ho+9Ynzt3Ds2bN0f58uUxa9YslC1bVnMn7ssvv9S7j4Yev+nTp6NPnz749ddf8fvvv2PNmjWYO3cuxo4di9mzZ+fOTr0ls2sps5gz2vb2vgghUK1aNSxYsCDDfjJLsqRS9xUbG5trfeoj5RypY8nN/STKL0ykiKjQqFChAm7cuIG6detqJrRnxNPTEwcPHsTly5dRp06dDOtt2LABFhYWOHnypNYHpuvXr+da3FJjkuL48eOIjo7G2rVr0bt3b61tEydOzFHf7u7uuHXrFlQqldadi6dPn+rc+apQoQIAwMnJyeBH6gylTsCuXr2KcuXKaW37999/tepkh5T9zA0bNmxAo0aN8PPPP2uV37p1K9fHyqns3iXYvHkzlEolDh48qHVnJikpKVfu8np4eOCrr77CV199hdevX8PPzw9z5szBqFGjULx48UzbAXl3LUlVoUIFPHv2DE2aNMny7qCHhweOHDmChIQErbtSKSkpiIyMNOidUKVLl4atra3O48Fv07eyoL5jk9W1Yeg5Ul/3b/8RjKiw4BwpIio0evbsCZVKhe+++07v9rcfHVOvajd+/Hi9y4qr/yqsUCggk8m0/kIuhMD06dNzM3RJMUmh/qv3u22PHDmS4/ldrVu3xqNHj7Blyxat8nnz5unU7dSpE8zNzREUFKSZ0/G2+Ph4pKSkaH1v6PLnbdq0gUwmw9y5c7UevXz06BHWrVsHNzc3naWcpZCyn7lBoVDonK+kpCQsXLgwT8bLCfUfLKTewcjoupwxY0aO7vLGx8frPH5rYWGheRwtqyQtr68lqXr27InHjx9neEfq7d9pbdu2hVKpxPz587XqLF++HAkJCQaNp1Ao0LBhw0x/Nxw9ehQXLlzQfC+E0Lx2oV27dpryjK4Nqefozz//hImJCerXr2/QPhAVJLwjRUSFhnrJ82XLluHChQto1aoVnJyc8ODBA4SHh+PWrVuaZ/jr1KmDcePGYfbs2ahVqxY6d+4MZ2dnREVFYceOHTh79izs7e3RsWNH7Ny5E02aNEHPnj2RlpaG3bt358kLgA2NSYoGDRrA2dkZo0aNwp07d1CqVClcunQJGzZsQLVq1RAREZHteMeNG4fNmzejd+/eOHv2LCpVqoTff/8dZ86cgZOTk9ZfpEuVKoXly5ejX79+qFy5Mnr06AE3Nzc8e/YMERER2L17N/7991+4u7sDkLb8ecWKFTFmzBjMmTMHjRo1QufOnTVLVr98+RKbNm0y6DHI3NjP3NCxY0esXLkSnTt3RtOmTfHkyROsXbvW4CWs81PdunWxbNkyDBkyBJ9//jlMTU3x6aef6p0b9Lb27dtj4cKF8Pf3x4ABA2BmZoajR4/in3/+gZOTU7bjOXnyJAYMGIAvvvgCFStWhLW1Nc6fP481a9bg008/1bwmISN5fS1JNXz4cBw9ehRjxozBiRMn0KRJE9ja2uLevXs4fvy45m458GbxmVWrVmHq1KmIioqCt7c3Ll68iO3bt6NcuXIGvwg5ICAAv/76K86ePav3zniNGjXQpEkTDB06FCVLlsSePXtw7Ngx9OjRA97e3pp6GV0bly9fNvgcCSFw6NAhtGjRIsunDIgKpHxcIZCIKEv6lqd+1/r160WDBg2EjY2NMDc3F25ubqJ9+/bi559/1qm7efNmUa9ePWFtbS0sLS1FxYoVxfDhw7WWPl61apWoXLmyMDc3F87OzqJ///7i+fPnepdP1ldm6PLnhsaU2ZLX+pYcvnz5svDz8xP29vbC2tpa+Pj4iN9++01vXR8fH73LJKuXPn53OfLIyEjRvn17YW1tLWxsbESbNm1EZGSk3qXVhRDi9OnTol27dqJYsWLC1NRUlCxZUjRu3FjMmzdPa8l3Kcufq61atUrUrFlTmJubCxsbG9G0aVPx22+/6dTTd47eHffd60vKfma0/Lm+a0DfuUxKShKjR48WZcqUEebm5qJ8+fJi5syZmqXB365r7OXPlUqlGDVqlHB1dRVyuVwrlsyWRhdCiF27dolatWoJS0tL4ejoKDp37izu3r2r91hldM7ePV+RkZFi4MCBolKlSsLGxkZYWlqKSpUqiUmTJmm9KiCzPoXInWspo3MeFBQkAIioqCit8ox+xtLS0sTixYtF7dq1haWlpbC0tBTly5cXXbt2FYcPH9aq+/z5c9GnTx/h4OAgLC0thY+Pjzh37lyGP9f6vHr1Sjg4OIhhw4ZlGN/mzZtFtWrVhJmZmShVqpSYNGmSSE1N1aqf0bUh5RyFhYUJAGL//v0GxU5U0MiEMMLMVCIiKrSeP38OJycnDBw4ECtWrDB2OHnmQ9lP+vDMmjULM2fORFRUlGYp9Dt37qBs2bIGvyQ7N7Rv3x7379/HuXPnuGofFUqcI0VERBnSN99p1qxZAN68b+Z98aHsJxEAjBgxAkWLFs2zeYCGuHjxIvbs2YP58+cziaJCi3OkiIgoQ/7+/nBzc0OtWrWgUqlw/Phx7N+/H/Xq1dOaeF7YfSj7SQS8WfxB/ZJjY/n4449z/fUSRPmNiRQREWWoVatWWL9+PXbt2oVXr16hVKlSGDVqFIKCgvJ1Un5e+1D2k4iIcg/nSBEREREREUnEOVJEREREREQSMZEiIiIiIiKSiIkUERERERGRREykiIiIiIiIJGIiRUREREREJBETKSIiIiIiIomYSBEREREREUnERIqIiIiIiEgiJlJEREREREQSMZEiIiIiIiKSiIkUERERERGRREykiIiIiIiIJPo/xcKspfZdxU8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure>"
      ]
     }
    }
   ],
   "source": [
    "# forest plot: per-benchmark recall change (orig - transformed) with 95% CI and +-2 band\n",
    "labels=['Pooled','PII-de','PII-fr','ASQ-PHI','MultiCoNER','PII-en','PII-nl','MEDDOCAN']\n",
    "diff=[1.22,-0.28,-0.77,0.81,0.45,0.87,1.92,1.86]; err=[0.26,0.86,0.79,0.55,4.45,0.84,1.02,0.38]\n",
    "y=np.arange(len(labels)); fig,ax=plt.subplots(figsize=(7,3.4))\n",
    "ax.axvspan(-2,2,color='#0F6E5C',alpha=0.12,label='±2 equivalence margin')\n",
    "ax.axvline(0,color='#888',lw=0.8)\n",
    "ax.errorbar(diff,y,xerr=err,fmt='o',color='#BD5B36',capsize=3,ms=5)\n",
    "ax.set_yticks(y); ax.set_yticklabels(labels); ax.set_xlabel('recall change: original − transformed (pts)')\n",
    "ax.legend(fontsize=8,frameon=False,loc='lower right'); plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ranking proof — all 11 detectors on one document\n",
    "\n",
    "The same transformed document with every detector's predictions overlaid (sorted by F1). Most detectors tag all four surrogates cleanly; the two floor detectors (Presidio, DeepSeek) miss the *x*-masked location surrogate `Saint. Vxxxxxxxx`, and OBI over-fragments boundaries. Output is pre-rendered.",
    "\n\nThe document shown (`asq_00001`) is from the **ASQ-PHI** benchmark (ASQ-PHI is from Weatherhead, Golovko & McCaffrey, *ASQ-PHI: An adversarial synthetic data benchmark for clinical de-identification and search utility*, Data in Brief 65:112586, 2026 (doi:10.1016/j.dib.2026.112586).)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/html": [
       "<div style=\"font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.7\"><div style=\"margin-bottom:6px\"><b>Ranking proof</b> — one transformed doc (asq_00001), detectors sorted by F1. <span style=\"background:#CDEBD9;border-radius:2px\">&nbsp;green&nbsp;</span> caught · <span style=\"background:#F6E7A6;border-radius:2px\">&nbsp;yellow&nbsp;</span> false positive · <span style=\"background:#F3C9C4;border-radius:2px\">&nbsp;red&nbsp;</span> missed (leakage)</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Gold (reference)</b> &nbsp; 4 PHI spans</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing Mr. <span style=\"background:#CDEBD9;border-radius:2px\">John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">OpenAI GPT-5</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing <span style=\"background:#CDEBD9;border-radius:2px\">Mr. John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (<span style=\"background:#CDEBD9;border-radius:2px\">ID: 987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Llama 3.1-8B</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing Mr. <span style=\"background:#CDEBD9;border-radius:2px\">John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Qwen 3.5-4B</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing <span style=\"background:#CDEBD9;border-radius:2px\">Mr. John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Gemma 4 31B</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing <span style=\"background:#CDEBD9;border-radius:2px\">Mr. John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Llama 3.3-70B</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing Mr. <span style=\"background:#CDEBD9;border-radius:2px\">John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Qwen 3.5-35B-A3B</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing <span style=\"background:#CDEBD9;border-radius:2px\">Mr. John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint.</span> <span style=\"background:#CDEBD9;border-radius:2px\">Vxxxxxxx</span>x on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th</span>, <span style=\"background:#CDEBD9;border-radius:2px\">2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Gemma 4 E4B</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing Mr. <span style=\"background:#CDEBD9;border-radius:2px\">John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Qwen 3.5-9B</b> &nbsp; tp 4 · fp 0 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing <span style=\"background:#CDEBD9;border-radius:2px\">Mr. John T.</span>, operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">OBI deid_roberta</b> &nbsp; tp 4 · fp 1 · missed 0</div>Evaluation of long-term outcomes for bypass surgery in patients over <span style=\"background:#F6E7A6;border-radius:2px\">60</span>, referencing Mr. <span style=\"background:#CDEBD9;border-radius:2px\">John</span> <span style=\"background:#CDEBD9;border-radius:2px\">T</span>., operated at <span style=\"background:#CDEBD9;border-radius:2px\">Saint</span>. <span style=\"background:#CDEBD9;border-radius:2px\">Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th,</span> <span style=\"background:#CDEBD9;border-radius:2px\">2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">Microsoft Presidio</b> &nbsp; tp 3 · fp 1 · missed 1</div>Evaluation of long-term outcomes for bypass surgery in patients over <span style=\"background:#F6E7A6;border-radius:2px\">60</span>, referencing Mr. <span style=\"background:#CDEBD9;border-radius:2px\">John T.</span>, operated at <span style=\"background:#F3C9C4;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#CDEBD9;border-radius:2px\">987654321</span>)?</div><div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\"><div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\"><b style=\"color:#18211E\">DeepSeek V2-Lite</b> &nbsp; tp 2 · fp 0 · missed 2</div>Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing Mr. <span style=\"background:#CDEBD9;border-radius:2px\">John T.</span>, operated at <span style=\"background:#F3C9C4;border-radius:2px\">Saint. Vxxxxxxxx</span> on <span style=\"background:#CDEBD9;border-radius:2px\">April 25th, 2018</span> (ID: <span style=\"background:#F3C9C4;border-radius:2px\">987654321</span>)?</div></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     }
    }
   ],
   "source": [
    "# Ranking proof: one transformed document, all 11 detectors overlaid.\n",
    "from IPython.display import HTML, display\n",
    "DOC = {\"text\": \"Evaluation of long-term outcomes for bypass surgery in patients over 60, referencing Mr. John T., operated at Saint. Vxxxxxxxx on April 25th, 2018 (ID: 987654321)?\", \"panels\": [{\"name\": \"Gold (reference)\", \"marks\": [[89, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"OpenAI GPT-5\", \"marks\": [[85, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [148, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"Llama 3.1-8B\", \"marks\": [[89, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"Qwen 3.5-4B\", \"marks\": [[85, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"Gemma 4 31B\", \"marks\": [[85, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"Llama 3.3-70B\", \"marks\": [[89, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"Qwen 3.5-35B-A3B\", \"marks\": [[85, 96, \"tp\"], [110, 116, \"tp\"], [117, 125, \"tp\"], [130, 140, \"tp\"], [142, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"Gemma 4 E4B\", \"marks\": [[89, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"Qwen 3.5-9B\", \"marks\": [[85, 96, \"tp\"], [110, 126, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"]], \"tp\": 4, \"fp\": 0, \"fn\": 0}, {\"name\": \"OBI deid_roberta\", \"marks\": [[69, 71, \"fp\"], [89, 93, \"tp\"], [94, 95, \"tp\"], [110, 115, \"tp\"], [117, 126, \"tp\"], [130, 141, \"tp\"], [142, 146, \"tp\"], [152, 159, \"tp\"], [159, 161, \"tp\"]], \"tp\": 4, \"fp\": 1, \"fn\": 0}, {\"name\": \"Microsoft Presidio\", \"marks\": [[69, 71, \"fp\"], [89, 96, \"tp\"], [130, 146, \"tp\"], [152, 161, \"tp\"], [152, 161, \"tp\"], [152, 161, \"tp\"], [152, 161, \"tp\"], [110, 126, \"miss\"]], \"tp\": 3, \"fp\": 1, \"fn\": 1}, {\"name\": \"DeepSeek V2-Lite\", \"marks\": [[89, 96, \"tp\"], [130, 146, \"tp\"], [110, 126, \"miss\"], [152, 161, \"miss\"]], \"tp\": 2, \"fp\": 0, \"fn\": 2}]}\n",
    "COL={'tp':'#CDEBD9','fp':'#F6E7A6','miss':'#F3C9C4'}\n",
    "def _esc(s): return s.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')\n",
    "def _render(text,marks):\n",
    "    n=len(text); m=[None]*n; pr={'tp':1,'fp':2,'miss':3}\n",
    "    for s,e,k in marks:\n",
    "        for i in range(max(0,s),min(n,e)):\n",
    "            if m[i] is None or pr[k]<pr.get(m[i],9): m[i]=k\n",
    "    out=[]; i=0\n",
    "    while i<n:\n",
    "        j=i\n",
    "        while j<n and m[j]==m[i]: j+=1\n",
    "        seg=_esc(text[i:j])\n",
    "        out.append(f'<span style=\"background:{COL[m[i]]};border-radius:2px\">{seg}</span>' if m[i] else seg); i=j\n",
    "    return ''.join(out)\n",
    "def _panel(p):\n",
    "    stat='4 PHI spans' if p['name'].startswith('Gold') else f\"tp {p['tp']} · fp {p['fp']} · missed {p['fn']}\"\n",
    "    body=_render(DOC['text'],[tuple(x) for x in p['marks']])\n",
    "    return (f'<div style=\"border:1px solid #C5CDC8;border-radius:3px;padding:6px 8px;margin:5px 0\">'\n",
    "            f'<div style=\"font-family:sans-serif;font-size:11px;color:#5C6B64;margin-bottom:3px\">'\n",
    "            f'<b style=\"color:#18211E\">{p[\"name\"]}</b> &nbsp; {stat}</div>{body}</div>')\n",
    "legend=('<div style=\"margin-bottom:6px\"><b>Ranking proof</b> — one transformed doc (asq_00001), detectors sorted by F1. '\n",
    "        '<span style=\"background:#CDEBD9;border-radius:2px\">&nbsp;green&nbsp;</span> caught · '\n",
    "        '<span style=\"background:#F6E7A6;border-radius:2px\">&nbsp;yellow&nbsp;</span> false positive · '\n",
    "        '<span style=\"background:#F3C9C4;border-radius:2px\">&nbsp;red&nbsp;</span> missed (leakage)</div>')\n",
    "display(HTML('<div style=\"font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.7\">'\n",
    "             + legend + ''.join(_panel(p) for p in DOC['panels']) + '</div>'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7. Where to go next\n",
    "- **Full evaluation** (11 detectors × 7 benchmarks × 7 languages), data subsets, and all scoring scripts: **https://custodianai.pages.dev/code**\n",
    "- **Paper (PDF):** https://custodianai.pages.dev/paper.pdf\n",
    "- **Interactive dashboard:** https://custodianai.pages.dev\n",
    "\n",
    "The residual ~1.2-pt gap in the full study traces to surrogate-generation quality (truncation, salience loss, `x`-masking), not to detectors getting worse at PHI — a fixable, transform-side property."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "provenance": [],
   "name": "Custodian Guardian Layer — demo"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}