V2 #1
291
extraction.py
291
extraction.py
@@ -298,14 +298,157 @@ Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après.
|
||||
{"n_ogc":"","date_concertation":"","argumentaire_medecin_controleur":""}\
|
||||
"""
|
||||
|
||||
PROMPT_SEJOUR_MANUSCRIT = """\
|
||||
Tu es un assistant d'extraction de données médicales.
|
||||
Cette page est intitulée "Séjour d'hospitalisation complète".
|
||||
Elle comporte deux colonnes de texte entièrement manuscrit :
|
||||
- Colonne gauche : "Commentaires du médecin contrôleur"
|
||||
- Colonne droite : "Commentaires du médecin du DIM"
|
||||
RÈGLES STRICTES :
|
||||
- Le texte peut déborder largement EN DESSOUS du tableau et légèrement sur les côtés des colonnes : inclure TOUT le texte visible de chaque colonne, y compris celui qui dépasse les bordures.
|
||||
- Retranscrire le texte manuscrit tel quel, y compris abréviations et codes médicaux.
|
||||
- Pour attribuer un texte débordant à la bonne colonne : le texte débordant d'une colonne lui appartient même s'il dépasse physiquement le cadre.
|
||||
- Si une colonne est illisible ou vide, retourner "".
|
||||
Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après.
|
||||
|
||||
{"commentaire_medecin_controleur":"","commentaire_medecin_dim":""}\
|
||||
"""
|
||||
|
||||
PROMPTS = {
|
||||
"FICHE_RECUEIL": PROMPT_FICHE_RECUEIL,
|
||||
"ELEMENTS_PREUVE": PROMPT_ELEMENTS_PREUVE,
|
||||
"FICHE_ADMIN_2_2": PROMPT_FICHE_ADMIN_2_2,
|
||||
"FICHE_ADMIN_1_2": PROMPT_FICHE_ADMIN_1_2,
|
||||
"FICHE_RECUEIL": PROMPT_FICHE_RECUEIL,
|
||||
"SEJOUR_MANUSCRIT": PROMPT_SEJOUR_MANUSCRIT,
|
||||
"ELEMENTS_PREUVE": PROMPT_ELEMENTS_PREUVE,
|
||||
"FICHE_ADMIN_2_2": PROMPT_FICHE_ADMIN_2_2,
|
||||
"FICHE_ADMIN_1_2": PROMPT_FICHE_ADMIN_1_2,
|
||||
}
|
||||
|
||||
SKIP_TYPES = {"SEJOUR_MANUSCRIT", "FICHE_CONCERTATION_VIDE", "AUTRE"}
|
||||
SKIP_TYPES = {"FICHE_CONCERTATION_VIDE", "AUTRE"}
|
||||
|
||||
# ─── Découpage zones FICHE_RECUEIL ───────────────────────────────────────────
|
||||
|
||||
def crop_zone(img: Image.Image, y_start: float, y_end: float) -> Image.Image:
|
||||
W, H = img.size
|
||||
return img.crop((0, int(y_start * H), W, int(y_end * H)))
|
||||
|
||||
|
||||
PROMPT_RECUEIL_Z1 = """\
|
||||
Tu es un assistant d'extraction de données médicales.
|
||||
Extrait les informations d'en-tête et des tableaux "Données du séjour" et "Données du RUM"
|
||||
de cette portion de fiche médicale de recueil du praticien conseil.
|
||||
RÈGLES STRICTES :
|
||||
- Si un champ n'a pas de valeur clairement visible, retourner "".
|
||||
- Ne jamais deviner, inférer ou compléter un champ absent.
|
||||
- Le champ "provenance" est très souvent vide : ne le remplir QUE si une valeur est explicitement imprimée.
|
||||
- Le tableau "Données du séjour" contient ces colonnes DANS CET ORDRE EXACT, de gauche à droite :
|
||||
Age(ans) | Age(jours) | Sexe | Délai dern. règles | Age gestation | Poids d'entrée |
|
||||
Durée de séjour | Mode d'entrée | Provenance | Mode de sortie | Destination |
|
||||
Nb séances | Nb RUM | Nb j EXH | Type EXB | Nb j EXB
|
||||
RÈGLE ABSOLUE : lire chaque valeur dans sa colonne uniquement. Si une colonne est vide, retourner "".
|
||||
Ne jamais décaler les valeurs vers la gauche pour compenser une cellule vide.
|
||||
Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après.
|
||||
|
||||
{"n_ogc":"","etablissement":"","finess":"","date_debut_controle":"","n_champ":"","libelle_champ":"","dossier_manquant":"","date_debut_sejour":"","date_fin_sejour":"",
|
||||
"sejour_etab":{"age_ans":"","age_jours":"","sexe":"","poids_entree":"","duree_sejour":"","mode_entree":"","provenance":"","mode_sortie":"","destination":"","nb_seances":"","nb_rum":"","nb_j_exh":"","type_exb":"","nb_j_exb":""},
|
||||
"sejour_reco":{"age_ans":"","age_jours":"","sexe":"","poids_entree":"","duree_sejour":"","mode_entree":"","provenance":"","mode_sortie":"","destination":"","nb_seances":"","nb_rum":"","nb_j_exh":"","type_exb":"","nb_j_exb":""},
|
||||
"rum_etab":{"n_rum":"","lits_dedies_sp":"","um":"","igs_ii":"","duree_rum_debut":"","duree_rum_fin":"","nature_suppl":"","nb_suppl":""},
|
||||
"rum_reco":{"n_rum":"","lits_dedies_sp":"","um":"","igs_ii":"","duree_rum_debut":"","duree_rum_fin":"","nature_suppl":"","nb_suppl":""}}\
|
||||
"""
|
||||
|
||||
PROMPT_RECUEIL_Z2 = """\
|
||||
Tu es un assistant d'extraction de données médicales.
|
||||
Extrait uniquement les lignes DP et DR de la section "Codage de l'Établissement"
|
||||
et leur colonne "Recodage" correspondante.
|
||||
RÈGLES STRICTES :
|
||||
- Le formulaire comporte exactement UNE ligne pour le DP et UNE ligne pour le DR.
|
||||
- Pour chaque ligne : si la colonne "Recodage" en face est vide sur le document, retourner "" pour dp_reco/dr_reco.
|
||||
- Si la ligne DR est entièrement vide sur le document, retourner {"code":"","libelle":""} pour dr_etab et "" pour dr_reco.
|
||||
- Ne jamais copier le code d'une autre ligne dans DP ou DR.
|
||||
Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après.
|
||||
|
||||
{"dp_etab":{"code":"","libelle":""},"dr_etab":{"code":"","libelle":""},"dp_reco":{"code":""},"dr_reco":{"code":""}}\
|
||||
"""
|
||||
|
||||
PROMPT_RECUEIL_Z3 = """\
|
||||
Tu es un assistant d'extraction de données médicales.
|
||||
Extrait toutes les lignes DAS et Actes de cette section de la fiche médicale de recueil.
|
||||
RÈGLES STRICTES :
|
||||
- Extraire TOUTES les lignes non vides, sans limite de nombre.
|
||||
- Les diagnostics (codes CIM-10 courts, ex: R33, E43, Z515) vont dans "das_etab" / "das_reco".
|
||||
- Les actes (codes CCAM longs, 7+ caractères commençant par lettres, ex: JDPE002, NJFA008) vont dans "actes_etab" / "actes_reco".
|
||||
- Ne jamais mettre un code CCAM dans das_etab, ni un code CIM-10 dans actes_etab.
|
||||
- Si la colonne "Recodage" d'une ligne est vide, ne pas créer d'entrée dans das_reco/actes_reco pour cette ligne.
|
||||
- Ne pas retourner les lignes entièrement vides.
|
||||
Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après.
|
||||
|
||||
{"das_etab":[{"code":"","niveau":"","libelle":""}],"actes_etab":[{"code":"","niveau":"","libelle":""}],"das_reco":[{"code":"","niveau":""}],"actes_reco":[{"code":"","niveau":""}]}\
|
||||
"""
|
||||
|
||||
PROMPT_RECUEIL_Z4 = """\
|
||||
Tu es un assistant d'extraction de données médicales.
|
||||
Extrait les informations de la barre GHM/GHS et de la zone décision de cette portion de fiche médicale.
|
||||
RÈGLES STRICTES :
|
||||
- Pour "se_coche" : retourner "SE1", "SE2", "SE3" ou "SE4" si une case est explicitement cochée, sinon "". Ce champ est TRÈS SOUVENT vide.
|
||||
- Pour les valeurs GHS (nombres) : retourner uniquement les chiffres sans point ni espace (ex: "4169" et non "4.169").
|
||||
- Pour "accord_desaccord" : retourner "accord" ou "désaccord" selon la case cochée.
|
||||
- Pour "atu", "ffm", "fsd" : retourner "oui" si la case est cochée, "" sinon.
|
||||
- Si un champ est absent ou illisible, retourner "".
|
||||
Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après.
|
||||
|
||||
{"ghm_etab":"","ghs_etab":"","ghm_reco":"","ghs_reco":"","recodage_impactant_facturation":"","ghs_injustifie":"","se_coche":"","atu":"","ffm":"","fsd":"","accord_desaccord":"","decision_finale":"","nom_praticien_conseil":""}\
|
||||
"""
|
||||
|
||||
# (y_start, y_end, prompt, num_predict) — légère superposition aux jointures pour ne pas couper une ligne
|
||||
# Z2 finit à 0.415 pour inclure les lignes DP+DR qui sont sous le header "Codage"
|
||||
# Z4 commence à 0.822 pour capturer la barre GHM/GHS qui précède les cases SE
|
||||
RECUEIL_ZONES = [
|
||||
(0.000, 0.325, PROMPT_RECUEIL_Z1, 8192),
|
||||
(0.310, 0.415, PROMPT_RECUEIL_Z2, 3000),
|
||||
(0.358, 0.815, PROMPT_RECUEIL_Z3, 8192),
|
||||
# Z4 commence à 0.800 pour absorber les décalages de scan sur la ligne GHM/GHS
|
||||
(0.800, 1.000, PROMPT_RECUEIL_Z4, 3000),
|
||||
]
|
||||
|
||||
|
||||
def _ask_zone(zone_img: Image.Image, prompt: str, num_predict: int,
|
||||
timing_record: dict | None) -> dict:
|
||||
"""Appelle ask_vision sur une zone, parse le JSON, gère un retry si nécessaire."""
|
||||
raw = ask_vision(prompt, zone_img, timeout=240, num_predict=num_predict,
|
||||
timing_record=timing_record)
|
||||
data = extract_json(raw)
|
||||
if data is None:
|
||||
retry_prompt = (
|
||||
"Ta réponse précédente n'était pas un JSON valide. "
|
||||
"Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après, "
|
||||
"sans bloc ```json```. Voici le schéma attendu :\n\n" + prompt
|
||||
)
|
||||
raw2 = ask_vision(retry_prompt, zone_img, timeout=240, num_predict=num_predict,
|
||||
timing_record=timing_record)
|
||||
data = extract_json(raw2)
|
||||
return data or {}
|
||||
|
||||
|
||||
def extract_fiche_recueil_zones(img: Image.Image,
|
||||
timing_record: dict | None = None) -> tuple[dict, list]:
|
||||
"""
|
||||
Extrait une FICHE_RECUEIL par découpage en 4 zones.
|
||||
Retourne (merged_data, zones_timing).
|
||||
"""
|
||||
merged: dict = {}
|
||||
zones_timing: list = []
|
||||
for idx, (y0, y1, prompt, num_pred) in enumerate(RECUEIL_ZONES, start=1):
|
||||
t0 = time.time()
|
||||
zone_img = crop_zone(img, y0, y1)
|
||||
try:
|
||||
data = _ask_zone(zone_img, prompt, num_pred, timing_record)
|
||||
except Exception as e:
|
||||
print(f" ⚠ Zone {idx}/4 erreur : {e}")
|
||||
data = {}
|
||||
elapsed = round(time.time() - t0, 2)
|
||||
zones_timing.append({"zone": idx, "duree_s": elapsed})
|
||||
print(f" → Zone {idx}/4 OK ({elapsed:.1f}s)")
|
||||
merged.update(data)
|
||||
return merged, zones_timing
|
||||
|
||||
|
||||
# ─── Traitement d'un PDF ──────────────────────────────────────────────────────
|
||||
|
||||
@@ -420,15 +563,24 @@ def _normalize_result(result: dict) -> None:
|
||||
# se_coche : normaliser "1"→"SE1", rejeter toute valeur non SE1-4
|
||||
se_raw = str(d.get("se_coche", "")).strip()
|
||||
if se_raw.upper() in {"SE1", "SE2", "SE3", "SE4"}:
|
||||
# Format déjà correct
|
||||
d["se_coche"] = se_raw.upper()
|
||||
elif se_raw in {"1", "2", "3", "4"}:
|
||||
# Chiffre seul = ambigu, le modèle confond avec le rang d'un DAS → vider
|
||||
d["se_coche"] = ""
|
||||
elif se_raw:
|
||||
# Valeur inattendue (ex: "accord", "désaccord") → vider
|
||||
d["se_coche"] = ""
|
||||
|
||||
# accord_desaccord : forcer minuscule + alias orthographiques
|
||||
acc = str(d.get("accord_desaccord", "")).strip().lower()
|
||||
acc = acc.replace("é", "e").replace("desaccord", "désaccord")
|
||||
if acc in {"accord", "désaccord"}:
|
||||
d["accord_desaccord"] = acc
|
||||
elif acc:
|
||||
d["accord_desaccord"] = ""
|
||||
|
||||
# decision_finale : forcer minuscule
|
||||
df = str(d.get("decision_finale", "")).strip().lower()
|
||||
d["decision_finale"] = df
|
||||
|
||||
if ptype in ("FICHE_ADMIN_2_2", "FICHE_ADMIN_1_2"):
|
||||
for date_field in ("date_concertation",):
|
||||
if d.get(date_field):
|
||||
@@ -611,62 +763,75 @@ def process_pdf(pdf_path: Path) -> tuple[dict, dict]:
|
||||
|
||||
print(" → Extraction en cours...")
|
||||
t0 = time.time()
|
||||
try:
|
||||
num_predict = 12000 if page_type == "FICHE_RECUEIL" else 8192
|
||||
raw = ask_vision(PROMPTS[page_type], img, timeout=240,
|
||||
num_predict=num_predict, timing_record=timing)
|
||||
except Exception as e:
|
||||
print(f" ⚠ Erreur extraction : {e}")
|
||||
duree_ext = round(time.time() - t0, 2)
|
||||
page_timing["duree_extraction_s"] = duree_ext
|
||||
page_timing["statut"] = "erreur_extraction"
|
||||
page_timing["erreur"] = str(e)
|
||||
timing["erreurs"].append({"page": i, "phase": "extraction", "type": page_type, "message": str(e)})
|
||||
timing["pages"].append(page_timing)
|
||||
result["pages_traitees"].append({"page": i, "type": page_type,
|
||||
"data": {"erreur": str(e)}})
|
||||
continue
|
||||
|
||||
duree_ext = round(time.time() - t0, 2)
|
||||
page_timing["duree_extraction_s"] = duree_ext
|
||||
print(f" → Réponse reçue ({duree_ext:.1f}s)")
|
||||
|
||||
data = extract_json(raw)
|
||||
if data is None:
|
||||
print(f" ⚠ JSON non parsable — retry en cours...")
|
||||
retry_prompt = (
|
||||
"Ta réponse précédente n'était pas un JSON valide. "
|
||||
"Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après, "
|
||||
"sans bloc ```json```. Voici le schéma attendu :\n\n"
|
||||
+ PROMPTS[page_type]
|
||||
)
|
||||
if page_type == "FICHE_RECUEIL":
|
||||
try:
|
||||
raw2 = ask_vision(retry_prompt, img, timeout=240, num_predict=12000,
|
||||
timing_record=timing)
|
||||
data = extract_json(raw2)
|
||||
data, zones_t = extract_fiche_recueil_zones(img, timing_record=timing)
|
||||
page_timing["duree_extraction_s"] = round(time.time() - t0, 2)
|
||||
page_timing["zones_timing"] = zones_t
|
||||
page_timing["statut"] = "ok"
|
||||
except Exception as e:
|
||||
print(f" ⚠ Erreur retry : {e}")
|
||||
data = None
|
||||
|
||||
if data is None:
|
||||
print(f" ⚠ Retry échoué — raw_response conservé")
|
||||
page_timing["statut"] = "json_non_parsable"
|
||||
timing["erreurs"].append({
|
||||
"page": i, "phase": "parsing_json", "type": page_type,
|
||||
"message": f"JSON non parsable après retry : {raw[:100]}",
|
||||
"retry": True,
|
||||
})
|
||||
data = {"raw_response": raw}
|
||||
else:
|
||||
print(f" ✓ Retry réussi")
|
||||
page_timing["statut"] = "ok_after_retry"
|
||||
timing["erreurs"].append({
|
||||
"page": i, "phase": "parsing_json", "type": page_type,
|
||||
"message": "JSON non parsable au 1er appel, corrigé par retry",
|
||||
"retry": True, "retry_ok": True,
|
||||
})
|
||||
print(f" ⚠ Erreur extraction zones : {e}")
|
||||
page_timing["duree_extraction_s"] = round(time.time() - t0, 2)
|
||||
page_timing["statut"] = "erreur_extraction"
|
||||
page_timing["erreur"] = str(e)
|
||||
timing["erreurs"].append({"page": i, "phase": "extraction", "type": page_type, "message": str(e)})
|
||||
timing["pages"].append(page_timing)
|
||||
result["pages_traitees"].append({"page": i, "type": page_type, "data": {"erreur": str(e)}})
|
||||
continue
|
||||
else:
|
||||
page_timing["statut"] = "ok"
|
||||
try:
|
||||
raw = ask_vision(PROMPTS[page_type], img, timeout=240,
|
||||
num_predict=8192, timing_record=timing)
|
||||
except Exception as e:
|
||||
print(f" ⚠ Erreur extraction : {e}")
|
||||
page_timing["duree_extraction_s"] = round(time.time() - t0, 2)
|
||||
page_timing["statut"] = "erreur_extraction"
|
||||
page_timing["erreur"] = str(e)
|
||||
timing["erreurs"].append({"page": i, "phase": "extraction", "type": page_type, "message": str(e)})
|
||||
timing["pages"].append(page_timing)
|
||||
result["pages_traitees"].append({"page": i, "type": page_type, "data": {"erreur": str(e)}})
|
||||
continue
|
||||
|
||||
page_timing["duree_extraction_s"] = round(time.time() - t0, 2)
|
||||
print(f" → Réponse reçue ({page_timing['duree_extraction_s']:.1f}s)")
|
||||
|
||||
data = extract_json(raw)
|
||||
if data is None:
|
||||
print(f" ⚠ JSON non parsable — retry en cours...")
|
||||
retry_prompt = (
|
||||
"Ta réponse précédente n'était pas un JSON valide. "
|
||||
"Réponds UNIQUEMENT avec un objet JSON valide, sans texte avant ni après, "
|
||||
"sans bloc ```json```. Voici le schéma attendu :\n\n"
|
||||
+ PROMPTS[page_type]
|
||||
)
|
||||
try:
|
||||
raw2 = ask_vision(retry_prompt, img, timeout=240, num_predict=12000,
|
||||
timing_record=timing)
|
||||
data = extract_json(raw2)
|
||||
except Exception as e:
|
||||
print(f" ⚠ Erreur retry : {e}")
|
||||
data = None
|
||||
|
||||
if data is None:
|
||||
print(f" ⚠ Retry échoué — raw_response conservé")
|
||||
page_timing["statut"] = "json_non_parsable"
|
||||
timing["erreurs"].append({
|
||||
"page": i, "phase": "parsing_json", "type": page_type,
|
||||
"message": f"JSON non parsable après retry : {raw[:100]}",
|
||||
"retry": True,
|
||||
})
|
||||
data = {"raw_response": raw}
|
||||
else:
|
||||
print(f" ✓ Retry réussi")
|
||||
page_timing["statut"] = "ok_after_retry"
|
||||
timing["erreurs"].append({
|
||||
"page": i, "phase": "parsing_json", "type": page_type,
|
||||
"message": "JSON non parsable au 1er appel, corrigé par retry",
|
||||
"retry": True, "retry_ok": True,
|
||||
})
|
||||
else:
|
||||
page_timing["statut"] = "ok"
|
||||
|
||||
timing["pages"].append(page_timing)
|
||||
result["pages_traitees"].append({"page": i, "type": page_type, "data": data})
|
||||
@@ -705,7 +870,8 @@ def flatten(result: dict) -> dict:
|
||||
row["dr_reco_code"] = (d.get("dr_reco") or {}).get("code", "")
|
||||
for k in ["ghm_etab","ghs_etab","ghm_reco","ghs_reco",
|
||||
"recodage_impactant_facturation","ghs_injustifie",
|
||||
"se_coche","atu","ffm","fsd","accord_desaccord","nom_praticien_conseil"]:
|
||||
"se_coche","atu","ffm","fsd","accord_desaccord",
|
||||
"decision_finale","nom_praticien_conseil"]:
|
||||
row[k] = d.get(k, "")
|
||||
general_done = True
|
||||
# ── Comptages et durées agrégés sur tous les RUM ──
|
||||
@@ -736,6 +902,9 @@ def flatten(result: dict) -> dict:
|
||||
elif ptype == "FICHE_ADMIN_1_2":
|
||||
row["admin12_date_concertation"] = d.get("date_concertation", "")
|
||||
row["admin12_argumentaire"] = d.get("argumentaire_medecin_controleur", "")
|
||||
elif ptype == "SEJOUR_MANUSCRIT":
|
||||
row["sejour_ms_controleur"] = d.get("commentaire_medecin_controleur", "")
|
||||
row["sejour_ms_dim"] = d.get("commentaire_medecin_dim", "")
|
||||
|
||||
# ── RÈGLE MÉTIER GHS FINAL ─────────────────────────────────────────────
|
||||
# ghs_final_apres_concertation est manuscrit et souvent mal lu.
|
||||
|
||||
@@ -140,6 +140,19 @@ def _normalize_keys(flat: dict) -> dict:
|
||||
return {k.replace(".rang", ".niveau"): v for k, v in flat.items()}
|
||||
|
||||
|
||||
_LOWER_FIELDS = {"accord_desaccord", "avis_dim_final", "decision_finale"}
|
||||
|
||||
def _norm_values(flat: dict) -> dict:
|
||||
"""Normalise en minuscule les champs textuels dont la casse varie entre extraction et correction."""
|
||||
out = {}
|
||||
for k, v in flat.items():
|
||||
field = k.split(".")[-1]
|
||||
if field in _LOWER_FIELDS and isinstance(v, str):
|
||||
v = v.strip().lower().replace("desaccord", "désaccord")
|
||||
out[k] = v
|
||||
return out
|
||||
|
||||
|
||||
def _get_cat(key: str, ptype: str = "") -> str:
|
||||
k = key.lower()
|
||||
if ptype == "ELEMENTS_PREUVE":
|
||||
@@ -210,8 +223,8 @@ def compare_extractions(orig_list, corr_list):
|
||||
ep_counters["json_non_parsable"]["dossiers"].add(fichier)
|
||||
continue
|
||||
|
||||
o_flat = _normalize_keys(_flatten(od))
|
||||
c_flat = _normalize_keys(_flatten(cd))
|
||||
o_flat = _norm_values(_normalize_keys(_flatten(od)))
|
||||
c_flat = _norm_values(_normalize_keys(_flatten(cd)))
|
||||
all_keys = set(o_flat) | set(c_flat)
|
||||
|
||||
for k in all_keys:
|
||||
|
||||
Binary file not shown.
4145
output/extraction_ogc_raw_qwen (3).json
Normal file
4145
output/extraction_ogc_raw_qwen (3).json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -107,7 +107,7 @@ endobj
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260421112058+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260421112058+02'00') /Producer (ReportLab PDF Library - www.reportlab.com)
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260427123928+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260427123928+02'00') /Producer (ReportLab PDF Library - www.reportlab.com)
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -118,59 +118,59 @@ endobj
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2001
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1990
|
||||
>>
|
||||
stream
|
||||
Gb!#]gNM:1'Rf-po[^Bb`K?0u2K-:U:-),''%3\Z`?N.?d(quW9W*A)OtFiiYq4gI_?s[m[*RU?SW+cuWs:)G*t!\XNR5X7JdA$s,9e[IB_2H;7_Rt+0p)MMO[2Huj>%mHaAbCSN6CAV;bnPJ$`^cS$4mb?2'@F(,EMmudo<`9VW_hU=fn"U/XjDB/10uGRiG.D[*=NZ#2K;No_^4Hd.;bLIA$N;r*d=p9ja[C:GdBMc@%+[o=K=UEMZg&/$6;oPa0rqWb7sl-moE$[+8#dSg,?oQsB[rJaOpbI7YN"T;OQG/f*5N6-q:Xs1+J8X?InCs)n+9[jVgq`'foeBr5Ied7k/n+A$iN2101iaKQ*ZN<6RF7a#42b@)6&nXEf]Nks1lGs@]%j[te+#f7.n_F^(*$(PQt9c,0UU-q3Jf*&HSP,d'LBu1aakSt;A*'M%#,oOl[+TJ;+,$MUWeZ0a6$p,LG%Y2Mg_m\n&:ttYbJ[VWN5U1$d%1hlq<tjl##bcuUl8<R)V'gc)SiuO_BC;<e8@*sUf(A_lRHM2i'C7?^]q+j@/#tA,Qc8p74;+O7c"<9F2e]gpbdQVbN:AS=KXM,c#h[J/RQT[]`H(:Hn5aY[=/J9*>Xa%mQ%qk9_5]>qnpcp\L[AogLa=bej=a17-3B&.9(t(UbMW,)Oe[h\fHPT7Io^M(bTVQuoUnVcR*I5j_OJXcXOh47Qmp*d;f"MR&?)"lGOso`3O&uJFEb0bCi_G*'l"W"N[0-GJuX)qQE+$"T'fFh5a1Rn?`4Yg>6NfU]/$#%W^+qWY0)iF<B]VgZY4Nl^=4IG<fXc-rtmhK:.P@U+1,pLE130O`1/1DS%raTIM6UfHoVZCT7]MIBAa?jo@ro!dVA,kZb<=1ILfF[QDo'W%i/4nE8>tJD>d;&X-;4AD526sFq*u8,*pP7)E#=+Z?'S@TOUga#W"ed7PW*+=T+@m21:G8FQL?-X@X`BPA4Ck^",VM)4%/l.(*oGe16G8-AF&oNm--)aNE%%O`@G)#]eKGe,u#=WZnsc<MkOE>;aAhU/e!r_#^C+$I0B:W>Bl/hs\#Q8Z9g^YVT+=84fVrcu/_#ZZAsCE1b38JUP%G0$89OS<("q8Mj+bT*C*8iQ'>Bm^^:JS4(IaAHes#j%.Pf>WDW331^"'HQWIo,`YMn\<FW`6F3e?GB`cRci%U++:j*Lgg"C<TeUmt/?:3[Bd=*&3Jr@2*:#;J.`3reS39PPR_ls%(cYFOoXOQ:Lr1HJ9Fp/kT]A`^)<&B0lhsRMD%Q26Bn=$<LSs2k0ZW:XQHWRn'H_M;DI/k?-^*\:Osrr!:5o-Qm3HE5,ZVBu9prRTbXpO(J<P)*3o$a<l(6!"a(-s_A2;29$K#A$a(5$mE'klA=C_jIl#Ddo"n",'%0>bUVbVP&H^u-A<:a,$cha@WUS.JeMA&[n%,+K"W=:iP%[UrqocE>;9q_@RU/TSp&2;?/:]dTrojL1@IM6^#STeJq%@60kg?hiUC:h+K5hitO(MLFgg9\;[+m,S^l5O#:M_eYtP,<!&J#-["iT8>'-@#00'aQ.#RK*R?p9LFnfs=/r7'/?3F;mVcA5JjEP[`m!\_0`dSf?J"/(?QnR5?TC1(6)1j5p/"\#rU&P69D<B^i5'b5oaisR"dOXH/)CI`rsl86jkGGR7$e?F6C7(,+Ju1G/P&j-%1_\:`.S9]_-(&%n7M1clg8Y=p%J7Uk5Fdie1Jpg,<R<tL?bBG,0F_<km[11Sl<)8`3G+\)`[UJ\/JV5DT:RgKA.K#DKWB(ff/^[e2<p'KN>:AB7n)8#PEQ-&S3l)>**Ye>[:ZsaZ-MbCLsqUBTZG+2A-?<\cHQ"g#.m]Ag0WZUUA0pR&mmJ^'B.ucg#WdSZC>Jj05#+f%Pg`;Ra'?JH9Q\^UIDUb\WRZlALBU8Qe&l]"*:I["?B!fdb6MIF5E#cDinQmIm8l&"5L-'2dJtOI;:V+a(SAFg&:PV(h8q4+8VH^&J';+F9F~>endstream
|
||||
Gb!#]bAnL]']&?qg;QXKgX=WQj]roQj%Seb(h_q[$CeJZ$k4%4PKD^Ce.8s?>:j5?V@5;m3qjW-m\(d0lN\l2mrO0=NR?ELJdA%>"!T:)B`&#Ca+L8jW?VQl6@g=OEg[IbPjYH=ES8!M*,#Ia6$;p,!s0[G!<b)q";5*VRd0V:%%W?Slh,!kT\6C1Ek;&ES=s)?MC`+!UK[_TSpk6DHMYtI*%8Q`]jIkLZe&mg'91nB;]eX'r2q,I>cEU$V%m'`<2mR,HLg<dEj@Mt)tS^u)$5)<fbn0/ka"![(XB!@LU85Ta+?B(#l:Ct57\BeonN\;^5bAdQ6ekXQr$AC.O0"cY(Q3D8]jtHi&_$o_DWMn$J`oD/VbK$LLF`35B$.6$m$4c]BLLf=6_%t&;E.[::c*Li(P:W@?aTF'(ZOe&25k2W`KS+$"oKs;p`H<o^HIS.&J[@s/"s(3kOV+Wuk%E3uf%0JAhc2G3e`r]CkfIG,t4",AP@1&+5n<'C)Y)Tncd>20!YN-GS3WT=1.DpJ*-4.Udq:4ap'@fllBY]1[$SVnL0o.ZCE.I^^beK\>YdH(JlE;6cP7MfM,'GgmR`FU.1;fZg^n5%ZjpWpj&6-[OT-`BeTN7=<aRLIYC]l85]MJ$k+0@_Q$cP11'4(EkfT!Q>,:4.5ZimqfPYcri/@OZ[c9Plh/1LgU]KBTWF?B9L_#R%U%RiF\jO9g&ecCm+*Z_+CS<l.ofk?VW0TKl0[Ediq/;H*.t3lUV)5,cI0PA\hP_S(SQg9/J5XCoL@sC_?F\h3Ie8ecgYSp=4nNlh]#!S9_`ec(uj%[WXJ:rl<XtF@$$ok,<ElK[[m;-K[.9hZQ[fp7$$UjNDO6p`(7\4p-RjTAQN$PZD:4RdEP=pNrjQ18Wm)4BPpX^eO]7eb):TZ;0Qj]ob2n)`GWiMHIUHe*$fZQ(]`"!M+aI8!jm?'u`j@Yl5lhHM.oRlIps"=VE(bPBpO&]Ja>!>F)_mBXM-Be16J9-AF&oNm--1aP,67O`@;%#dW_0l2f('<=rKm.FZ22SXO"4d4*MIiIK?Q%HeY&Xr(c!he`c$,W#]JfGQ)/Ua4At(r(KVfr7/p$.a"kS><c9rEQ_s2E2fAbG/b#h0g3#SmuaW%IKcL/AY2JC+-r>-D(fY6-Fo>jBHDCG3eLd*,;,K#D$hAIHcIJKmn5mo(C>bEkEc\)Y#L&8iefkO3:N\-V'/Ll?!=E!`D&8@6W/#@K%sqT>'rOqf/Rn8<+3c%tZc'6JcfK%Q+ro3E:is@+9=Ka5jB8%\!RY0Dsc`\SIQ7kJ-BT[e>UQgO-W3:5'oaoR"[o,h$DGm]5l@[.0<j@(Wj@?gd)'D.(.P3^>iWePp\;AqFMKR;XmL@l&gW1PK<pI6G*:Tfa*j,p>D]ZDG?"#.u6I^&6AOmq6R%",L^+9)mRL1h.6lT0RCJ$(!p[$7*"[#MnK^%B.q^kA_H>^V6(7N=Q.c'`^iK'qdcbW%`-6SuVN;9Xi"3>YV]$l9jt4<uu%aS*C+C2HMse[l:*H.AZr<(YI`kPdmM@S)%F$R7MRJK<Yk,s'>q^8X_!A_25khWBg0YOYkI$NB5mMOdd5QV[92%3aJnHC#Sm(h)e!;6_S$"6R'EU"$^,)s'n#+%H$%O0>@&h7ggBLgL>rRL9_eSDOXbu2L+n=J@2Q;FU1BWft[]3ffg[+hlP4:6Wq]K9U?1ulOp!'Tb1Qgn9Xm*lcj*`q=a+9qYfVegb6oqMbf`MKcG>2RLKa"A$d,RLbp&1r%bo)?B)-9haYMQ+2`P=[MN@,ASl)jTjb1JCiEJo1jbKXPhEie0u!U*H#Y\bPJA)SPhBC53O>D9\eo9tcR):G^FHnO@i_QlVQ/mfCOKQ-Z"=lnpK*]UrU(5#<u3bcrN=EM#$g!ahJ"^CB="D\>dV.8b0"ucc-?-o'niT!X7U,N7GCQtX6.L1gP_plki8I47-XJ55#-ug1]^D&NSa5]_Q\U[q4S?/rW=KbH(+~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1684
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1667
|
||||
>>
|
||||
stream
|
||||
Gb"/(>uTK;'Re<2cm.odWkN'97YBs&$_\$,:X!@T1be/,@"Xm8rqhtqY%>YZ@deL(lt/#7R!WpsYB4WP*%3#n7C1l1CP:QbkhR[VPbIjf;1Sn.cVP=:rYX#aW>JYZ$RsLr@N)8nN&+n*Kf=3#_a&d;UNgV]3MJ>X9^*$>5)^)?!IjlkqZb$s;#E5Bij3o1dqF=8V9Aq=KJa2K[1\q&k.@&V+WV@'84\c;i#Ecc!,\%cp8oK4?R7$AD&=A$@X_o4L+kFFB-sa'H'lM#6>ONN[42]jCb<!5b?JcQX[HreG%\KMALPV\M%u"a[@8uU3c2BZPA;f8D_Hst>t&6b#;],[el2_V,>9*jEQCgRjG9c[.[tP9\X8[WGtqEOK@20&f@/[=Lsg`d8=D3Rb9gMZ,t]5B`VjgR8d,r:9DR?r$(a9c%R)K4QHqu(>7<Ti:_9UTdo0sT^\fn@/67W'FFA,ulh-`5Gnc43=!"'DdTG<g4Q]j'BI+!<eggclpJee15FDYg/g$8,mHS;GX<%W>BL,/?,j<hjMHY:9qf+DKLOtDcL$G"Wa?(j)CmH`D6!I/>OC$DA]Q)fc5Mfpf+BUU6mXh=ngj.'_-]-OO-+\A)^YJ"uKRl_UI)K@(oDno)I_Le\^pGdkN9:$(_[(>U*KKH.oup2bn'P\^,'JLdr_+l9"`Y*Ma1WK#.^J\?[mT9j6KT]*6fo"Jk.J,ijq:"V?4X$`#]!Rr<>)m/K<A+6[1$T2!3aYnXm,/XQ]j5&o)20ZJ;\H-4u\-2kW<JmRUfTu_Q+\"'EC5sOJ8uEVYk[6(9;fSPhcF3IMF90[cYGcn;oAX=eM.J#]l8[n0fb+MNF2k[C:%)<RWelEiP&*?!YuOgU0usBtL`e8DHs2nY@ihlFOr'HG\Y+e>tkT!+kjgPNET>rp.Z,VEoa#A/9@:E<*h]7WWBlNEa:Ea*CMl8\\DI::)n>10Gk[2-AIp[!O5g?-lEo1'$fc1B&Sgc_Br01cal.Nf'>jH^4Z);E1=G3^=d:GN<QMmfL?g<<4eWC4%`V8$htMSm4tP?R@-tGC;0V.1s#2"6;=Lg/B)$1DR<>oqtXl"cdqe"Q3k`n`":A5<k`G?&iQ]\@Xd=7Z"<2JF65T?p3TXNa$Yi<d=\(cD'oD)ILcSc(_6lT"TbRPkh<]-u[84Xl9?GmS-a=\C+:l!;#&04uo6/kA9R"l*;oY7CfTSJ;V]T(I1(M\H8IP[p2R+e5qpl\J7a_COV8t^<bM*Z8A-u-=<P8)XfPCkE\cs)@q?.NVCof0#<G4bYfiBWk<$gZAhMpjl\,9<1*,TVV91N.aFm3pF)$=72^<L3^FIW60K#*JdAH0dVY1['@Y4o&G*,g-H.)]U67bC/bD.J'n(#H;!mHa;KG$$7I2VD]k-sGQJhhImY=o!ieR_%JS!K_T%R>&kW`o%DFr"&YRI#lDf6N]/OQnS$jU!k<"!NV!GJCB2!Y<q+)Ml64\Df**-YVAs!r!uglib[4i$ob4b35]p0cCq^)i7.B=;..h<aD9os"*=EgIlRD%+fLnJZ`SG+/ouYP=&>!"LdX.W`\s2ZRq)lO0p<lO2J`T<ed<Ia29]&\7UGgEYFG4MZ9c.ub@;Yufq2q0M-FQ_h*$'FC+OqemBAcJpNA^u5gkkB@$cU'"`Fn:Ag;r#Q-PgH?*cGC)YcS]>F92ncC:Yl~>endstream
|
||||
Gb"/(h,E&f&:`#5Th!fS<.2sLN<[j)O,l2d4u&6mBjf@6^]cO-qsR>[P%;V=@eWds^gnQbG5%ojeU"X8_#W^9cMq7T!-k,dGK1P.!g4LQ).XjM!HBmkH\>$e6(h%B@3>`/=:(hc1`>E9p$G9p?is"eZI47;?sE\DE-pai`W3osD`;T"nf8uoZOK+aQeb%R(^Znh\R<]0:eAJK#0hA*m<p=Z,/?0lS5BXeE<Oi#E:[+_B!7(>6>\h.A3n)RN"&'",)hIam0Xu:<^UZ<ZIPrT/oNVRL.b`f$@/Ar82m^.*>9"GEC@sRFFoKf!1APqhU*)"q!3"d6rt8W?=?/TPS-WA5nFY*M!YlS'foap!/W%-[k9^P1S!Ler?*sinV.tIJ=q@+E*Tp6H(?s,!RcaFI^^/i;@+XMQp(+@K'$cTn'h2XnPj8-JZtCH,nT=M4m(&`Mgs1JI$s7q=*s+[?G.5P7u>ko%j`5RQFHT!`K:T"7#BGI(h=4Wa^XqA(&55I:R=#`lZp'h(_i_k**sfB0-17>oZ5A=HDh<"'OP:u:Bsog;S6<hT%AUTTLA!f"Jc<npNI/"Go/60L?r3_oK<+XjtKO&_(WUsoBQ.Sa9_s6-pu@(??UmLe:6@G0Hu\EN7!$FIMb?XI[KGIATN=/]E8s1$+U1<q\hJR%Z:Q?]C&s&AAPQ5h'M<^+mH&_-0_6Ll200\l(oPs\in-7Tk[aZX+[S=+KZ!`V?+.5d+\KKftP1I[5fD)33Q!ZZ`&9D\P[U>lAkHAE[!qQGdT=]@2K(-*sTkW;fOsuoAq!;bb'H=E#$G<jm3-WU5BK^8L0,Q!)er-kcR^S@L?h;g084#dO6%r=j!X<6LK2:Zr.UlMl?Wj)(+b!]\56UahNlX?5uCqE+2rt*?!Zq]TPU0Ggo@)T);ea:`Te*,&&>UdWo"HY3I;Ome-_@,n(9n^b?g*`dbq5Bfs+g-R[`aYi+RkhuL[;<_Rb*NU;Jri@g8CL!cAI_1l*uB%>kfl/ZYMAfdqoY"FN1OBG&4ArX6-PAE%s8`1S&I<FOe]XnL*S"i$n\)D,KhER.f(b)#G"',d3La/441S\!C%?UorGVDpWe\[CsB8,(qZ<<E&D\?V:JiHZb*6P(-,-%)9Y2,PW^Z4`=cIE7kOj;q,.*r1EM1tEQTP&h]<JsU3G)U\5csJm,Qfufn\&Q&DcoF<ur8g$4NU6\G47o,^P+?aZrQ\jW*BNW?U@"mHa3D3S,s([18bUl3^NSi![6l%kTbH6\kaGb&X%PdI@G#^XNY-L/$?YL'MQ3^GpCp`;R\mcgl9]?kY%jWElSLobE8-Ee/9?'-@!R).'Wfs<'*ToWF!Ci7[i?hFfmff*_1Ns9_b*rdfRBmPrjt?l:ts80<6_T9q:Ra!-AT_(r+u(<EYJb5$^EPdcLEik$PhtB+Ykl]W-Io#C>fOt>p,AZ1gm.g]SJeD?VY73LM)qij67iR2U@1r'L<]#=k:jT1cF\Vbl.]$,;Zdq\1^%&:ZJeB@eOLS?[`;$S<6\m_lP',T1Srj5/164)TDkk2+Dgp%_M'=06glZPm!/K`s>Io*k)ocn?sRSE#LH6`-8<_k6S8d=R*'Y%&9`;qsCGep0jZF]5:_bWU8_495gF=<ci7SV^N5k`nlkR&Vs*V/d@%SEo;9T$q8pd&<-SjhJpf+~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1684
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1707
|
||||
>>
|
||||
stream
|
||||
Gb"/)>uTcA'Re<2cm-.YBVd6$Z?Tl3fk/FJ2OJo%-Bk`daVFsfB%m7]b$U=&aB%X/jWTfga1b&FpKktid@!g!oS;T/Y7lRQa6:u,72/RGK.+b[`@!'k7t6P4M3J-u5sRGnS7/E!V;#]?<a65%c-,BqFKZXg!-,iZi/F@X)PYa`h0d]^ZVLnT:E:"0pSf<I=;$NS/h!LCO/oKE!g-V!ZmS&1pa:q`Xs4!!notW5GV]7ERN3H?:<mH*"*ZO>L):'G<oK5]#a/UmPZ]7s$^?JZ1Ie0o55`e@FHNn!"J2]j,:VnNWbOqi0<#9bd[-/>V3K5sYPR_N#RdBeV.ffgrA)4urKY\5Js'Tsgn>,S^s%c(\[aG,dX4g6@uYHfo`V<5oNg,\PdSa6<B$cq%=)9ebZ]ER7L2sjW6B!oN0suY<$sJkS'q4=rirY/!'!fd4d(c`:kUBH`EE6EZP&qg6)!V2eJX,b\^7`i]BU<(Ep4.Q:k`Jkg&`B_c%#\7XJ!/Ifk>jreode-U63-ZHfnbULe3IGJ)&PN6*hN:PR&JuBdaj<WM<e3<_J-eXqb`q$#sC$SceJ/k'VttfO>.4cFc92Pr$gBA*M4[j&\4hD"r-+lb5u-Z-WR[gQm,Y*QWVR3P&[Orr/EG=/0SuBPe1SFcqn[ir]Piqh4EjcAESqIR(bmGMTOfjWRuPQhQ-L.%@Do&KVM70+@eok9YC[AOTapoHBd_/I$o.\mgNS:]5lQq*M=[D19*A.O3U8YZ1t*US(ug<7JKdr11"Qb>`u'g,o?-lGK8S8rpVd*(nf!=Phn!'LOXS&u@8F'n@jt<4kaCFT=WApZ_6\Gs+ri%tj"Xl&I)9kVjRb>)OUIO6`JoPcc.flf>qs"#"7aZs#&Q=+c7#oK[_F$cU'[I.qTN:BM)A8Dg85IXN#2jtKO&^b=(-F7O][X9eu]./]2T2j\=C)2?=GgNB''WR+/i$MJ+`DYdFYP\p.(6>)j#H[=MDDiI>,j`Qd$2(!!5a6_BE82D>s_bc=@PRTr;@ZWJNd>1'W_:02B.)md8T@HY9UK2ugQ,5hc>59HTAS(V_5Dk\r9?$%`cBib=0n098r#@CP5FAT-&>h^b,9[I\$A;QDIIY[`Xts`!]4qlq2j`h#lD@SkVf!^O.`Z*&.@5n:j0IOuYh_&tLJs*8D]=(b-`STO3^)[B'k/8Eih2GT^La[J6d)cX&.EhLW2fM`")4Ch6_nRXO;kq7a6/pq;J$V`&>*OD%&SDBD><-;mKBa:Z#fD,8[*)5J2G]J6kq`[#t4<d,BRSp>H:dM8bUeaLZYW7VFZqXEB%S@`4A8-SA8TYlA`>>k!e*-A7-Tff"T:LORjVp>bD'(pdY`jTTjCNiXdF\!5l0S'3m.+UJS]'?@R:bd'DBgfegg\bAeh_&ZV:PH4bsL0L]ltjU[8!i![Eb8i$`J1gA>u'W6+=Z(r`PRl0XPi3'LQYY98;$cedO'U/#Ql^@O;A!-$>.S*0u-,&.KN(RfEA]+koaKUd43ZlpSa^B_[(5LAfZ6f+8BO*&-&!N0b=iH,=a!iD)52Mh^Qqj3:"[Q9`bV\J#ErU>\j(ll_[`lp='6gtE#\--Q?q>;cn7XXfHKfZ$'8<5\a=ZU#+i%CT?k@$&G6]eq]m)2W37Kl)@U-FZ2'>Bu4A`NNBI?cNuZH-<ht'akrY$^e@Z/H~>endstream
|
||||
Gb"/(?#SIU'Rf_Zi+#t6*5<ru/Tm<'>s:;>ku.T"9:`k(Pba=kDZ>0]5-?/8'J3n\MSUtZ>NXo+\`=KNFA*9$0:MjS:(V^nUL0$1U(#""L^G\0I"J);oPHu(UaA&tM@(U2MJ9"Ue'Bl2:b/4gg3d8bNp^c!0L.sF/-Y5#J-K]#6oXR.;#;^s!GTIH+tMf:/B!Xk9_fosf"=,-_q%3pJTYa/T")'`bskspRZhY:>*C4772SQr1^jOjc*3pOba2n_8/"7`3'hJCY.19W4K!*pr"[3>$Cn4XB4o45es^?0_$EsE6l[oP'cBY)(32392]#Du2U:jXILqL5H^t?]'/?A[*t:g5.=#7S8Qhe[+^NkT#>ls;"UPi<rCE:Z[66`+DO4-&K<5D@;()LFI`#)e)h.Ta\mDI9oBGPbq/9>Q#Os2dp+(trf4_7'miV*H))N!q/D?#4c>+n9-BEnsQfWY,\li;ldac7.)D/hRKEV8=6.$U3Cd"qVE[X9=KZ\``6s`I4HG+]4%pFQ/6GND[jb<=*mbp2W"2Vht@i&SMNLcE[@@EX=?_ZlLjS:Fc'*aW@j,s3!f`V/Iq>34i!RnpP(n:!#%jT<GG;uahC<sAUGN^5d,4u/gpmT]_22EK=4mqW15o%V8l1HBE#u0P1Y;_kBBJSan]uaMG'5?Sr.N2`J79G]!%1]tD+<(`"7=[>:kI'9<UR-ThVXjDc']>^UUYiCZ-+jr0.V,6P(G2n&>$9h7%T",Fh\sOW#rPt)M:cPMX(oe<kB*u?6]]n`0Wl-eP74BT_*r2lbQn^s6^S%7Bo+NFp4Gk4iD>3GFDAI2$`o)[BpVb(;;9W$,A=]Tl3c5tXYqGB-`#BD1mY:K>hB]"=/TYOG6!lE16^i83<&g&!N&/5R:J2A[,V.<]gd'ZC5piV7?6u6m)!=a3@DDhjW\!+%5lefPdGce6=#8<SnS2_nT=>;1nR4#b@l4M4WROAroBIKJ;T"r$F$Yn!W;GbK=*_R$OH@b"i*7(anaU8R`1'Po_`P)H$U0IB*c1"ojnEU/&nqD6,7)!C?[3F,7k2%pLFTGMs03sj_TBlG]n?eR8)`0oUm.7^@WmgiWMVt!-U#gi+53!;?L<K&tML)n\tFT/@tcG=ZGU[q@]ib\<[u[!iS14<o1:5P84/i\i`)9SY"*Zgel@.>0r0??X<_DXsnn6!8;G-'aWp5h-.+Y^9$tP8\m$RI6"]Q+Z4s$M;`67h8Xe/iOQp*\&&6?6fJ"9W_9R*3AV$(7E(`#,$R%]>^ihZR0rQ9au!=J;71Honhm`?E)F&*24\+pdi`a)3l*4F60YdKZ\We04/=tiUnJV.7T'jAck;q>;[L<b$:]C#kMBUD(sbE?&D%U\I_"ua75N?!,kcuOhD"ldL>a8QmPPD?CL%/E[:-!HdF05l)i!R+D&@.Rm/1h?:aWiQM7khVpP.Y`0^K@;1o/bd!GJCBUun)Y"MD0OVuf$pr+t^S$sdVimD?P%._12G5UU\VRkH]&_+`S!$O!Qg$3Y#q-P1UkC]m(cQhc/sOk%c2gW9[?if^Q7\t8W)D)/RR!D\j)#6`s-+0]e#]M9h>GOPV6lgY"lGk1Z\0/UlM2IPX4WINAKo9k+/m,r:fG+$NphR:W*el!$jbi]&9fk"J'YjAam>iKqM2Lf%^'t;C=#7;J=4?A4A"jtY/M#ld?9+4uEQ5Htj/2:%(/SObek^GuI~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1680
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1710
|
||||
>>
|
||||
stream
|
||||
Gb"/(>>O9='RoMSn09_%*oAW`0dY%eQHO(No7U(cR=[ImJLs0oqsW-.*'7l*\1'`eD,m6'cKCC4HsE;i*uH-l_StEu"TY/nnECbl9L*n+0S9e0-QktcIh/bP8d(CjQiWm;`*-h1cBt;;)A1>D>M]kXbohuGitQN'.G2ZJ/8*o'UN)[9/4>X4Urt3";5[CcF_X0m&ZA7V5j[i.aG]:+G&kgoC3CGU3k$`W*r,faT-4*BM@bjce)l2$UZ$.5A9`P]9ZH=*3]]KpHlj@TiSdlf83$.70n'HSM565H9Ki$*&/iJcXrsQ3HL1S'ra@gV[H%;j[Q#2IdK)"aYNM84am%d;ji)1$9"WPn_rBo@kQ^93Ca;/5/WN9JF26i^3DIfIMoiGJEqqjr4?!Vr=EY1s<=@;&kF`?8[H0i%jXlX^"."l:nE=t92SkTC2-o>*7`DFjTVN%^noE+N]VIuPfQSs0'o?L%%DjOi9ri;tZ(,>QV0nL*C4:XB+@dbb$s)9+?NuUD?c??*^nTUgn%aXfiV'DO^:S>re@b6glScE/P%t8C<>j$+>;MYIb$aqtR_`6/#.'NE%-G]e9Pdjh&?6*S!`lCis4ge+G"*Zt3Tms'>rXY%XISM0ln5C8O5f8*RNPF?1EHfNU#Lsl/Zf1!+LM3uo=-5<?8AI8ADED`jkZ0Ec+F?[.BS+2+lo8ZRf@]kWM!jho7cf#fZYQmRrmM@p<LD]!EC+'rj\r0W9.SplSc#ue'LuHBqepZYBloQ2T8.``@BO"A"H,nlSgu5@%WL*-Ge9joSeBI76J>8bB3T/!M/JHM%(:2!NM.*E8s2!44V^njnR0bXLYUtFJs=9TbpCYV=Qta&c7CO'9a.l@,uj\<Hm9(R-gU"^?>5pKjfb?KHUjCm2(NQC)9h>]Z_a7#-s##H8jS.,jU=@OEg%,">)N`]l2BSfoqD'c,3!o=@]+Cj"[`#IeHRGSB`q^l"]\bpT"g/`IWZ+.h[W'[4hqg=-R6rRBXCrY5i+DVUF/Wd0/rKG+[#tk1A'urijok[I3McnUBdii*%*h4g)8R_7HA!29m(rJX%`7=Y=@5bH4BE4eQ,B-0<#>I.qSc/-AB62UAgLqE;Gq15B"E$9nXEc\ptuE_k=CLsfX_C"?s+43qlQ0Q5QcZDCQ[!L?.%"2dg<mO3#J%796KjZU:p&tV&EXh8O\SiPs3\o&]LmYI>-+S?eS.j:Xg=$]'OMe\8U#ps.%$Dgu&V0POAO3g*"ZsQI;F3^ZS47H@"!tO<1O<Wg/"UUol&-.P"6ui:,a?N)V<2YllAlfF.'BW1u?Gk9miA=6(\t"M#eI'(YK\1.9;\q4V%JlA.3N%1BqX7o%\2p4-m&6]VXIWAiYb\*uX;tLCOGdqD25jn9M+kMpF^uD4o=R7^L6p$GUjG/8EtUR;4"+7Y2Bg'dYCf@=2jOBr</,Uor:Q5m]^Q`&`dB$m<]gV(04'.MYFhQR28?(Jk+EZXc!_i.H^XF@e]?OE[Sj17IlLW><u1e0Ei.X%@W!Dn4iG$gnCKsl\f%(A[P5@<capuFToV:2(j]t"1A(:EAm!_j3??K];N=j0WAD:c=hng/L.'+Os5'KDBl"`FL-jrsTmA()mR4rO'Fjr?Ffur,Ebp3]=u9atZq:@CU>c,S1upeGjO]J%fD\@QP72Yu+kTA@Rn8?Bn/k^j$T.~>endstream
|
||||
Gb"/'hc&8h&:Vr4Th!fS<9q$3)\&[2?@cE:I:=OeUOc!t!#NNEm_;!>QIg;AX>lG)*\nU(m/=<F?*0pYO.aF?8Fc^pJ^DFGI5iR0:m>61_D+R6(R/Na^B_\#<J%WCKHhcL-:Sn8cAJmc-D@C:[CdC4jb#DLJmlJ56i6Rc3CDEe#>(W96JS(<MdfTLVR3P-3I*&YTKW)\ANs#bIN9Q9-u>l%a.qU3l/_?tA99jU'C$Z.[)Q'A(e!S_+%R-ae.;gTaob0]1hJ:9J@to_!R.>6g&Cpe@$+Q<$!R?MIi;^LIMQ?bd%Us*/NU?o+GBQ;GQ;a3I\4DkMt#[cFWi8i<=^3!RMW6NV:BJq;JF9ujAL4&0b_2.68!ut-iTn9eG1@=QH"qTMArXNApHQD!&h7q?kZ;f0]h93ROTq+#hQe--m:(k7'2Gl;$e+*Gsd';4Y(2t=MC^UNifX`g`^sKm[\bE,%boWiVRb-[G00G^(HSeh(VHAAZ];9Y-sA\mN%I'DnWgs+"!jfd^Wo7\'[l\>]\ot/#(^A*Gm6+?EYQ!L"FS8?KUo0(5WJ15)OIGfFq;:.Sc,$9.%`P:TO2_PFn;[_3>P5'N(NU-<0C\I%T+ojFAK\6EdHU[`'9u`R-`]gWBp`I*E(@^ls4ZfWAG4jCt"eAVO7[X6K"f/!HJQ^#7tVT+S.a#kku-De>'UJnGu[1;PE&rMCs:1&^I2eT*]XfjC(mB>7ffgWC#(;=q03W.l2]S%JQ<8[aM0dm\R#TZWeIAr?n0_"ZO<C48=\R]bfI>NMe^-Zm+>OJH;RYo6]u>2WAZ"^eH%+u\pGO4*-1p9`Ui!M"mn]9/CnoC;PRW^m1dbr0W)2>uYi'BX8AZHGF!=&4aPg[[bbdYLe.o&qaZ_GpdSD#%Yu/@A0Y2KL19M:?bZ7JUNP.d%_(T"WO@,5VWiH]^6Up(9^d[Vguh,D_Mk5=o^HBj"kZ,?2hj<LY+7(5UZEes`5Q=Q)lO/D$pN5-'Gg7`"Xn&;?r=_<OoDU68$(5CuS"9BF^:Ra,j!6a6_'iY<S7ZCVEPKGeN/-E8@l!b!GI+-C$4Zeb3(<ipD^?V,BSobUX\V>`6M9<#\+>,uO&+mt`]C``!*L?f4'dQuIBm,*Qu\8!"!m&8t4H.GF8_pZ>3nZ8:_LRbQFX&^CrX,f0clUJa!g7@jq*F>P:0AYTcPp`h+)PDI$6==chGamqU5@CM:4@TmLQ=%P9dpY;_%^XR9l/^U_.#fnaAn)>PH:b)nOTcK.W1dgs'XcJB_m,#a!'F%AT3[C'-\nT9kJQg<lZNen`SCVEQa,WSBR'>4X0b;8"(:sO4\8GUo?#U(HLWSmCbR>L/%>aR@:F*T2!c![2Q_eF"i+HW'o\"`<rf'o^AuumgKq\8d7r<(occLh`j'1]rW4jXUJ0sUm/S!%mG<6('d*k"DD+oodK!8Qnc2bTjM>Sk8V*:#Gd*]JP%!_XY<`pZAfCMmPD*1V7MZW6Rr7T6_AueSIuoB_=h<3-$`Q<tXIgB65o'g9,7A^+iEIK6qe"oL/DQAA40l)c]X0%<-JFc&U%4@C!eAn"$RK^b'ql#m.Kp(%ncfLB@,hA05^W$>22SOdr<=KQ`kKt4HTs]%,PDSdKKB%oA:Rdd./DGH%Z#.D0;@=Y@'qF8YR0b6Uttm0"2X#t4L3q"s286]HVXQIe$?kR^5a4ere;H3rdN[[bOZDWrW?'c23\~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1741
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1664
|
||||
>>
|
||||
stream
|
||||
Gb"/(hc&8h&:Vr4Th!fSFOo`D`>]8(0>.E5Qp*6ga\fsO7t:e"^&.7o[UiT:/LsT[%+AWuS!`%1G#p1uT>)!QkoWh&HaQ9*?&JW+:CmPk?6d<@6g5t_UndB'@QXg%Tg028-,gk"cuGhe:'X(d_tR#-RTDEmSV#Lq'W&u.UFHpDO`'XOP&c`3(UrU:IZlphK/Y4WL=3P"+_Ro^1;^:-KHWXtab:n4$34Lj"\=Y-'ucL`qcsd=!\pjYB9]-=&u/H]Y2>8D@OfelXcGLgMRu4I9'IGXUS=H\&qZdH%0`T!c*]f.Il$15!$j:;L8($k)&u"snA;h+H_9tiS,p0,!ct)hEh(VY*^%^nN\PKlHm`:-]6nV3\=2T=qn)8Ed$ml#2<oi@s5pBXPs9rm(fM>E-fdC^k>/YKmV^TbGP3YCOp6XDQGGVrT8`eDB%(:<O\@t308GNaO+A$Zb#f;8EONPbkPK`k73edj$O#1hN`B<De!"c,9b5^pl,i;8j='82cpj3Ie=h#u"H\0=Xmb93mXCGsFsni3;5G?DFD2cAPE2UXe(O9Mai4(#3_B5'ZXMhdXQp)X=l2JkN#FnrB[8^dT9A6q,X%cJSgG7\!lM?A"@Cp%Y04oLCtl;Arp:$bc-$3[=iY9(*Zc=t:1e&!g!t4X2G/]BZ_!D7g9RkEGFe78Tpr3[.0qeB_1Qr8II$bgD0)=lF]9@-+8+N0,KqB</j\fqdgmZsd1:RD0:N'C\@b8nV($Eo;<uhrj64!tJ;WsQ2<i<<Ufp'aaeDRDa.TVNK0GJ>K>+>p[+,G)d^QR7aVgI[Q6k#s:#.(,jkL2arOoIf:t;o[Zb:&=Pd>*oL#$(bp9QV+ASIV6Jk<&VZq_0d7:k(EMsDN%_o=E%`q=l654tT9+E`N\XC<tV:O90g"5c`iMaP7RW?l=Br@g]?`VAEXFdOg[`LJ9>'MRe\f03uYUr(oJ`#eL$O"A-NO>%1IlppK@\8C;E:)cIdB"9MODH\!pm3]Crghp^C>)CNOgB8$`m%\c0"3C$>=2'sth4fa\*I<?h&hG>k('>`lq[qQfh,SR4M>jgkf3aGb4HrY?`SFR+R..L=_uUOhb0W(j\KjtO@SnnFhrjUcCo`^-'O,VW333BXmJFr!WSf.WNCkli"4r'B-[f%.F=_J2m;h[fYKJk/eNl6q>+c?OSMEeq=H6pmPqZ;oVuTufWAIgCkQ6(eff#nI^^]*/JiHb@Sl`_P.PO\@al?eeY\G7+X&\l#g1gTl+W?R\Wbq@qpAV)I":Wd<\IHcegsq->b]>r@$sc"JT5L\W_NmViGV.M2O@_[WBZQua;_8`&81(I6LJ0`o`F7YuEt)5kU:Vc"Yf>ZFG>50tNBI^FAJ/&E;9c/;T(POc7UBh$@tcf?QX4Q$V6g`I=u$3r41SZD_cOtLGEWHQU5Z,jqLjl1c#@mOE0.#1UOnYI,;(U"KuRbrrSnj"((M!FD:gnSnuIH`N6V2'`jV@G(_kS<<)?kI3Jq6A#*kYfXEJ.?]_thbHqr\o+r*J<!fNEW0<G?!0ej0Q68Ja2*;lM)+cFubU7kt4(BN3g>IJ<g.NbYV8)Aeup&a\J/UMKHAsYkQ3ht[#,gmQhS^fHij(p6o&cP]Hj<,WOCm\7:`11JekR>mYM9]cp4"GCWB@n&[N:VGnS,jTVcS8LsgejY!=Ms2[,O7IY49saC`8*s5H4G?uf('gI+;=Ri(df&)D`h!-/Y[l=r%>"0l*NMNdHH&jpb/o~>endstream
|
||||
Gb"/(gJStN&:O:Sk`MYJ7J@1.`!fd]"(]Z<-`UEX@OPkDY\'j#rr$SLdYs;XSgd3RCL&PJQYs4B>FOuT'+BuuiSraq'`d]$nEq+q9L*n50S9e0T0SR"rZ'lh;^//n^s(S)LpbTAS.S-51a8T@=l52+bTKIWitQN'.G2ZJX;BgkXYH4C.M^6V.U>NCL`/-h4Y!B9`2HY?9#uou8JS7N?,t*<^q"Ojp?3HWIKSih9aq,KOT__PHqI.se+A%]H(%uc8c6K1;NPkW7Uc/Wf-HMGU+pM0U&q?Z.nD+P:A+UIJCf>!8qf^nZARhea0U]gm,[[.id<kZUtpUT@3K9#>ZR'[=Bnla*#ISA[7FP'nTZhg-(,bpSP2dkA4F/JZD0+6`FW%@BPD<g<](k`X>E<j/Equua.eaOY#VSp==b`^M^U5&+3i]P&`h$CMo"OuqI'LUpg/?]#cu2&E=:(:$i;75n*P`BU\9%F?Q0Hh^*u&OJU+7!VQr#]k,B,`'%.>YVogen-,8rBI]tV:`JQ50de_f-M9ogKF/aSl@`hiAcWk9..e.GrcW+RCT[7:5&=Pu*(!S7M5f$R&'MRcR-KFpE5XcsYAi2KLAlWZ!NJgDC<@'WcJ8#YAI^@t`W[>pbrciX'nqbIqPF(1?ZO^P2[=f&tY8\FY4cSho\MK4!ZkQ1PY;`V,1XOurYgG.d^C><i(@hBY=eNTR>:*Q23TQ/M@Te$[D&N%km>,%t+)fj*2sscp[V4b*W)+`%`dfTIda9B&q"L\f?,(D"&0+@lL/MJpD%K+R5%=E-]YXnA*Dj=]Y1jak*f;/T]Gop$28&;\AI"1dF2NCZ77s0&Gu>D#]?fWKMa8sqVSii+a*pe1U(H[>T&2(?.hA4SfZJojOQ\Vdk)JUAIq@sA1,F-@HY:*"^)>u:p&^>3+'LSX=PhihQV0(^'9t0)b5kc6WH>Ck0FiJ9gh"[pjjcIth@J>8PrZKDS#@t!LVO?`MY4Itl9f-?YL"TtMtk*1SWp5-Ml66@-)`Af?IP'Xj1N.?^FHYm,C7GdQ'm)BQWrT+bKRgV^t$p!l*dZ"".^k-Tgq?D$f_YRrpk6g"C#'KJ6n'KSY@2[2@\d8^'3_jZ+Qtn7De$']TkEEbTY$>?T1ELJK7TL*ou,'/MHaWKW]uaEkMhT=[1Cr$3EmJ-ko8YnYKC4=rr6E(hgCFb3#5=QabnHp]:rb(m#BiVLeqJ9aH8;#pMB[<9,tM37Yu'"OL-Vd.jlqItnT?.TMo#,Xb=QK<AcT:8:QErVIb2>TZ;'m\HWT4?J_;@7d+p4?K%D+m7N@CI,dCglSZL\N#`Vh*.*"POV'sq:(rFB:Qn8j]7YJn0\!X(;0@4bhHBTY3j3L#2P/PI!.PGVWhMM3BNd[R2eZ*00<?,Bnom`Oq8KU*bsL46nL_eF9&StNrX7F?AL+WcKqh"lFdP2f8HmR5jT@"(h1[;*46S/_&Tk<[\ic^c_gE1K]Vo-`+hb#i<sUO*C-SCh-%\s])1)(/jEM&r:[CL:?n_bS_VO-f('rTUDQA@&ISY$MDS:t_J9^;7.H$1re.!!N\E<c1p^#l,7JdLiQi_W#;C;(5o;@t^j>R;02EFb(#!K542UK:9Gm>lo^U,RKsLH5gsLg;\o:.UG/-al-HF9%[buX*9.PKh\e'i"!B#MhoD~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1695
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1690
|
||||
>>
|
||||
stream
|
||||
Gb"/'gJStN&:O:Sk`MYJX]fr=7a*.D/=49`H(rIC-&-FU"#3/Sp[;1)dqG9!aEC+.:m;@S)4bYf95<_T!$_+=`W(i"6>ocoa'1eo;0n(L@ueu)Pb`r8"/q<=?nE[DUo;(:Up5*O)&jm4!jqg;]GfR-42DLF$k(>tg'*J%1N`HHqTM/=KZPi;`37.&(m-"C$RsMt8/Kt+.Mquf:.?AO:qAnRa`9Cg=PgeZknfSuY#+pb"AL<IX;%Ve"'N&!m?WXHkfref`UmngO#T#OoNf#\XD_+klt>#<-C^]eLW.1(3>4+$2Mfd'nHU^S0(82bQN>Z:EFJ$Ija6oCJ/S2a9Hlc\Ef"%r;u=F+B`?jO\7X0<:Y]`Dkf2ABjYb\g]"p!9YJEDf%@#!jZb.OW:c\GUI%#AC'MCfQ/IX=8:aP^ZkQVU[!+/rG["d:2o<HMph)*$`F-'0n2P"3M]4/&3GpD,T`YGCJg?T,F_@37H;_=s]#W%nKE(*.sV8j%M7]ilJKQIu9X.TpTe>o<@Vqi:`T@<4VV<,(2(NGP:V!RH%C4RT0J]hO#@-=Io7Lg`L.!Ef=SGm^K!/&ji$L2%iT5DEi0BX/#Cjp`[D+,2WG-*LF/GV5/:+sI29PDWe;4bmD2U*9u&)Q/>TmnJLWn]jM(``&4B_Z3q)(3>.A9?Hg*6q%27n19;l%2/#luI=.gOB8j,@tV>OgH+49P\ln4A<cZIQBMMSpVFs,lJ$1CDfdl+jVT;Oo-2BIW]_DS:q_,P#1+>,Y857%[3[K3'Eg[(aisg,0;hq'2-Uo3Jl"OK8/QLZeAV//I+C4hOg<t-V+'SB;`Z;..,@(R/r9nk+HM6R_qU,NRie6,3_*q\MX$kN^h&&3XMnO3]gsXTfR5I3@G9cVb><$HV1FnKil<:A-K6>gb-R@Ki[@Nh*sGL&W[>,@cOjAB][tr6ht0WP7f?T]VhQ$%Bu<dq2Y$pgM\:i249bmBmR$sZe&TW*h@Io>"rWA6N,9L%@S(HQT*O2RoV"53ElZ$WumdR-?qO@H+SF%gOlS&8;0@!+K6#P@&`HbOKaq9:Nd97FVAIVeCs,$,"(1-B\`>[`r*n205Ul*4F&kR*!"lE^5TBe`eg$MjMkcjbR\fGqXo3$EV]o&_#O6oG8&c?kAEa.n_DB/>E6<emI,@.#$kR0MEAr;/X!X;KsC>;$'i,Umo#Vilk.n1Yj/AU(:u^Dg]%+_X"Z$pPq^]/=.=nP$bI7=LLkalc>KuQok^[j.T^XV<p<sB#fbZej1^CY.ljAJ,WG$1K\-/R^N.OSqs/XmjKJ/V>K$W6N%GZt;-k(CCFZ2lX-'?.d>\3(jdJeSM`VkCc])d9D5D=Zhd9e9ECfTYQj'XClbu]2&du"fP[:`)-a0Z6a0e^ON*_]C3adJ5HB.RV^.%6(BDIt`2p$e5k!uu>`#Ijk_h"F,FmW3<lS/a09?%+C2ZOS'Q]*[)pt:fR)".(i+rS*cL<iRLN/CB%A16)K-lK&J//cIH-O1A`n``VZL*;9BH"_q07FXV;8;V\>RUL<\C*X>?jGRXFCc+T,p6PshdQ5a*T`Y-#eI[E)r,42,ZLq`qao*bsKX*3Ri(%lEof2eIFar:H-*+-%5lfXaRq[#q:&Y_]ZHAA5^a_cW:D`e7KoC0r0P^ssO!g!fn#4??\j15\/l)]GUAJ>#_06kQ^Zs*]Lpo=<_>b,"9o/~>endstream
|
||||
Gb"/'>uTK;'Re<2cm.odWkN'77YBs&b==LY4u&6mWF=5o^nt^epYW/j9<oP=-k>SPD4.ajc9:pe?<tZ64r>F@_=c^/!eC"_G^"rE-6To%QpCq^,EQN4^IHiu-%^sbQiY#P`(DHFVp1;GWX&We,_APs+;NECYe2%5<dmF:VB%Xk'^Xf^/9>e'Fp&OY83:rHecd@J/il#k0c5V!7[55;Pd@&LBlA!^TQkl>ot1q\+g38bQtb/:gNdE3@pYQ2Yk)RXS\G3Y2it^Y71%'$VR5:JhtmBj-OD&gGhC-ir3fj8/M?5JipO84Mb"23_UNX"s!a<+bHMB9$)A8,cfM6uQOfnt7lAjm"^XD.8t%Fn1(=_<3#Va^cDKk$4ImIoT+:%Z^.2eN+_ebp!:4HEi4D2U8HYq#KLEt'^o"4'l,boUB)C9BoORZ@EfdFWd!<f:JIZrkLlBjHY`%i%]4E$eTKlmHBosS[0Ki$he!'-7p1]teIuY6+]V=5'86iA1fN%+MiU/F8+=pEX".l>2:X>rFj8G25Zgi.#XfosZ-*bT4P42RZ%N;L.fKID&FZEj9.eaI6-RU]*$S5moQLhsM<gSFO'!'2AfBbDJ&@'L2;\b<mjW75H]#X/\#dq(r@=9G%-hBk,s4[g"V";Q5ofE%*Je\.McJbK\M5o;LE)rHiDa9kcOU(M$JO%c%m@3aM25uV"C.H[lZ=hO.et<O`c_0a.JT_BohXK@KmGNqjG1J+pRl52TYe"h>fm[kA7&ZteQ.b!#G03t:UWW"BXSn4VdrHj&TMRZN&.HI0-a_l0!<@`$!&VgW\rB_%@6u7"]#?1$h.kP6SRdn^`3_:a!#AmgrsZ>44k%rUHZrR4p^JaT:?7tp%qEBdKD/`V][bXT`c4GEc[Du*,mBJnl]nNI8h*U6E"ZQ-lQ_<IqnjsMs40^.kI99grId'A\Y%l)!r$ci8DJZ[gPOZ\CL]0J>@a)V&Wh[U*S1=&rKKCRTH&IGE(!&&K?f-Z-mb03#!kZD,.:,olFFsV*i#dpf&rbL&bVoKEP#3h`k@iGB7$[i.[GhGg@^[m/?;@a6$ZPWDt:#.181p!4fda_/.5)+gW+N%_P7AUj^8.H@DcUC%A-_**/d^E]@].BrSl(&H/N"8'?NU509)Fdeih]$-;5sQ-ir!PW[ogkFTQ@8fJ^phK]B*d0Tdmhp9MaA07]O'?p\:$YZ2/I8V/f-.:"RtLZMPW0G2[)@7deChV[*oeuO<5[E[>Nbcn@A'sh85]'hYhHmg%RRV0L'8Moru/CgM[@@kkE9%>4m.bTn]3adJ9H@`*V^-h2>@+C\5RmbF?X/"H/Z'IPUiP@12^(MWYIanSNhUjgq&kn#o'T!1f9<+eq8*D$!Wa/9BiEXYE2rMF,!IJer84:l9odUclb(W'L>Sr`;*)[J!Uij>mKg1)m84#-&,3?\O"P)dk"ceoBJeZ,dNb\g9BNZuW0T</%V\e>o^$o+P$ON/]El<QWNc5IA"8G+Q_WnP&NB^Mu`-=)O:l&j#W]&<6?WFc]5h31Rel,O2'B@2TRaIb9<V;<_T*Et9qVNtIa3%3(U$A%BZCh;2S;s'2"AR4\)(+Scl08!X4f`.2ULZNGTP(+&D,dV"'(ejW>Tbb;/JpY93@$as?Z[>$YDqVF-O>%hOet$5c3il/L>'.E!n:i$UPC)m!lC1iKSIU!d=7ME3M$~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1702
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1722
|
||||
>>
|
||||
stream
|
||||
Gb"/)>>lJ"'Roe[cm-X@l5nd#)_k"N1dGfA4>Gli`%Xq@&@5'aIpZnCZIW?alm55;b':^fopqk!FEI?P"$h]g61OhmNmO7(rGi/L#g0:]0[*Ae*i7QJb5a#f9X#-2(_RH8BVCEVl,Hm6-3:6_0<PPheh0gUEJccO'^^K=M^c5`D4K<]L!`I2,iVphW*dhrpn]2"(Ksa0MKpt=@O_[^`CuG0*mL&E6uo(Lb3!C#_o;<@!R7ccmhY)N_t;n&b!)TeFbR<t#Wa+CY`p8G?Y%]q1B=B^UMN!+2Z\;phWD/Fg#YXd]=[GD6fj?/[1#*k&E#u3r@;5[>kX/MElI1V[Yo^a_D#7HVN6XA"fOO/>7F5M@J&^Em]optN9EH8=)PGc]3I&eH#Cbg7@0),a.$Q6oaRYfQhZbW:Q9S\kOS[(+rN>OCup*CG(;%<>3r-ic)[&f#+_3$gubm_Y-I=hRN77^g-PiV\m_>"2Wc"L3_ZUB0W0]X@9Rf/3?c$FdrN>b8$<.F7$J?r6ZA#G\DN4rnsC-p$Ve#(+?8LO$@C"*"7/Pni(N,*WM(Y>>8pd9]e&3hJLu(p0tTaG`T#YD.b>*KSb\d0D_+QpWX1tY-p]+KQjW`,SWBT>%)n\"`#(Ag^;2Z=pA0G(,4)]2"lUTS(6t8Bp(g!q*-6<s1q0;K$-\<cGR;[p^(5`[.82_kYbR5"hedC*Yutkl1J7fTF_sIU_NZCq1HE]5o#KO<2t'B&SdI&"2\;A]#<Wt8In_<NFEj+3hKMc9dQ'EXVSGL>S0S->9AY6grX;23DU$mB,VKBRo,=2?&(>O,T8cU+-Qbh`Bm5<W>/h1saE'[Y,X7&9kfYfi6I!JSiFjK.#>F$Q8*P#:3r(I)cTXg]F&ijPLs+(0fd]Em9?oi@`FH:K(<O`#:XaM8BB.+]rpe\+E'2:S'6@dUFm5P<Pg*V]AL$m!jcT0TY[![p#=kQL#ttCn]$AT(XYRo(j;a>;k/$0ATH.7>6AX9SCIsE%P*2<s<!0+UV:9gIGiX`0-<rp<<o/7FAM7PcPn4O;;&(*m^]5DH*'I*S`CO"R,)!P4N#NH]l=RZocc]W=FBP_t[FL7J5NSuJOmR@P\j+:$3)C#U#>#p@^d?Stf%^te(;#2f]0_qtQ-uZ^A70YZjO/H(A[GNfW<F!+n`9)abTY%$T<@0idEk35M24Eij3/$5+,'\_SGiQTUCdV7DUWYgUQ'M9kI:uAmA)Z"\"2Y>r3l4NfM"D-$3=-j4r2HiIl'^U`Xe`M&!@L/S$61-Z@Y64HO6dbl]+Du3l^-[QNg<VYCn(m38Z=s?A]U*O/4C\o"4hZB%ec2aq^Ig\t(GTP^46J)*op$Uin#l)]lLJI%_"oEqAOCkN',D=2!UD<ke;-<9dk_XE'@DY18Xpj"FTlIncuMf<nD_FB"L*kbO6;H_)I/h)>V1VsoNID7!$h`>Z\B2I0CO"$]TH)NYAM6o$"pY^$;36$?sfC^p0rOs.'J)s]pJI$"he3ls)Jr4Xd$_OR\?YSYFNRn8@h8ScUFD_)cDOIa9YZJ/\Fge&-#<`'US+_dmtl`+B<Ac=*o0Np8fKFme/$&35FZOSI>,V!*7.#'sU@L,A1T`B\?%Z&&"!PX>$#RU2%D_E$obsXq8r%.jGJ't<ff:F0[<A'jm#g'!C;Jji!8bT[Zr<O7q<TPr#]2&GG4\`A2-DLM-6%aXe2>0bg~>endstream
|
||||
Gb"/)>uTK;'Re<2cm.od>3Y=qif+/ORk>f=@/@f8-;+H)/ccm7m-_Vqfp620=B6'u0#KB:,du"3^/t%Y3]`KL@U?G>IBc'$6\^'c8.c#i>p@EG8(f%XZb_\'[7E`*+sl>AEJCHYg=Vg%XHhk(U=K#"e_nI"0o<DJ=E):,/ks]5L+_@&T>eu?bhWa7.3E=JARp=S1,,q@R@A>(!eEVi!ptBF^:fn?c0c/Kr=3Dr;>/j5Mp-eH^aN6@WnInb[I&CN.W+nNI!1_"d)Eo^iVK&N3nlQKare1gCl8pR2ZLK%Dutn)1WM$7j%fd$csPmN'""U7r>M5q)fB8GqsM<1PP0FaDAtu&hA"$M0NZd)J?0A3r4*2NpNu^N>"Jd])RS`XVQ^%HMcT*IJ8g#\Xe)Jb-IcMIMV6P)m-Yi-<QM*0CNNYO`1Ao]m9j1+$SB&)@3A5G+:O)0,nO[opu%SV3ZB#RY)+lJ^""I*ZdDum6'G$V.Yp,#HrHqIY?D19/'!l5eFFSV.WDfX^6fhH=,TG6RZq/;%647J/c_b?JjFpB*ITa0Edg$`R-+"pRr0`Q%%CR5Slto6^78M_9peI*@mkShVti0!a?=eF$]OdTKiZb6ND+s,IN/fH9detCGa=@"qkp3/0('r_i1PH`FTCckGMq4?"&U;>/Hd8C3FJ-(nDnh]NjJ\#FE0M>3]]h/1N_1^@Mq5j3Ilu4kcjZZS(m$Ue=oK3Mdql#*ABWMO4*(TFRj"5SpcT/kH'hKEXp3&XEY3n/tUbZXg^i)%X=Fk4ujQXNqSO[:5@k,et89b;mEtT&pPr\#7]i"opQVX]H".jb5HsfdI@>dJR5M.E`V^BFAQAM]H":kYuua=XgO1jBIk[AD@b;`(/:e"lbd3oJs^Kdb?9,bfhSd]qfDt8`2;Na%Bu<Eq2U>\gE.Vr)q$;_h)r[Cb2.ZZWX$aSlj]>_D$_!`>KnpVqP&h9-G6Ea0jK3G7R?=>=s[IT0:Hl-GZCMJgg/Fi5s?Y/JSCj2FA=(ibG7<^#ZJ[9fKHUm(".c&,W`2a$p@q\`dKLC/2mCjUf4S<P>=Qa.DpAe0&o(!khd_Dro4O>ER%(<!9rhD/E=[0nc8:IpY8J[gRc$fCrCBR]59RrVR$lLh#t4K\!tdbB&]d;;jp\K\ahTJ7uJFkI3Pb@!!0W'pb!9HE0$A.]'?F_(A%2qId><u[L0p@\&4kL&&`'gR"\g@ahtDF.-J)8oQmrG8CgeHGdMn=Jmcfn476qgO$'KYJor=tHTW&"j(H>>A"K/ck;t'+S\No/%bf$<,&q;XKi)mGZ6WZ!K_;`U:TCFmZJ"6_"OM3j>>mY`gsH:.V2:<o,k^/a"V-%J`F)uN"^P]IOVi>n8a17UHWY/c!pa8N!UEHBoBE&gP:`?,8LGN45US]b`HL,_FH*V9:\TWT_]+N9g`PMbF6ql$09`tjCPDF$"j&&HNm%ep"kb3^e,b$,=9oVRB>'.UDdq\+'+70*9:&a/U:SQA'FW#u((90U3N*5J_Cne=Ui^IaOG=O[s%Y2*$>[p:WiWlR[4nV3DQFU?W*A0/_H3cR![1YmPQhF7eJ_?op_eB$<Pn@BZ!_5\fij!$jF.jVals,EYLi:XW8IXS+$B2E<A`MXU2@&>W@)CnW_5ZgC_&F&:#rW0B\!j46EL1&E':VgaT<C<7R)OgQHrqXp$<R8ZcCeQL:Tfue$1tOM$Oe@WcYm9_1;<4!?1kDG>:aI~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1249
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1605
|
||||
>>
|
||||
stream
|
||||
Gb!#\9iKe#&A@7.kQoC3e[MX:+IG&$!_jY0RE8u;_h?#4Jhq9DI3i*`mDQG(:7VgGb!)rae#p%c(a/dng$_?2^dSAi?X\HkL`QS/OFcU"KMh3?LFlCJ(^P[1&6M9#K[TJ!)(I)&`*i>MH0W)1H%H%9.HHFcn-K>-'8+=]mF6Lj$tE!KT4]AGSl'H[B8+!YAYU`9?f!3;k*Iu@o'Ji?8<h(f6aG&O&7gnL2Qlo",-W%pN^8n[PKW?*8i_nt\k_Fhp_6-B+?HiJP9-hi#fTV4/=e;W+Srh<TUUUHDe@kPTAk(<@*c`G-s0"!YiRUC/0Fm`2tLU\hkhcFhl!ABnZX(f5s1C5cr`KFXRhMn[1h+-3J`2bfq^#k?8[;+nOpH@>V>1'ErC"e#O;jI#To?C!`sVWnQ6dS_7H?I6AKPgGp\679t]:%'a!\%*OIB>'B`i4?=[ccLcT-blfPFZo9;72;]YWM/@NZDQ/;m<P0!UPp>+5_C]3k[K)q*.h\`uOdFTG8i-0@V+ct>;Z3"P7NP"J7_$s!uWZ.&sg-AhRQjQeMl(Kot1/g'pTekru;Dm]I@8\rmW[&a'*+VWlf,4"?!3NA!/'HOG0,>p'j?%9.\3Zh^8+nC4\faftU@\i5O:s':<Gr"ZV&\Eq<a?'2k%]Kbnj8UeEH5da-_2nli&/^?09oM8PAr/Ydr4>OO<CP/!K[G98.HaWk/GdT5fFGcPA60H^7\MaS%F2'YK]d-c"V5,d,hXF,H,fHh.#`=Q]SZs<b?(]/F-[AS3)sc4R;l:E:in4"cS'6&l'q/5t<AD[t^\Tk8LHr$X7NJ@LD2tU_LqnP]8`[[qQ"PDhW0)<[_\<@*^_ji74M#/Y%g;rZiK=FDj\6I('aUD*\J&n8@LG'CWa&?S/@%+gqsAdH,nhY5[7]+-*)eBQ,o#4U`s\DM;u:?_N*I$'?9[%\'joEEe=cCWte:8#6<J_s=qVBQe_dS;d??6.@L4:%QPLck"3==H>R6@:N6H-dMh2S+&<U7cW2#.%EDEK'-bAeN#%C^>sC_p>dL<g#X8\%[\X,q;q!O35`(gS1\oo=d\u+3@OF_EmTh6B+`")jr.22T;l?u)q"5L'hPb/-e\JRCJn-rf/V3#Fe?,6XS-EM%9#o0Aii*[D!CHgqp(*3)pO=.0dq>-J7W^Vk2O(]&u"l0AURc;..*8*4@[?Y#)0auY@Cg'*2qGsNc>@o;#E,)lQDX(G;SG7OIBViW5&Vc/.[(,!6C2i]D~>endstream
|
||||
Gb"/'D/\/e&H;*)_2i;]E8isIDlKLRmdedd8j<J5][R8C=`J3"kk=I88g6\aU)85*Q?IhAf[N'.]&W>%LPJ-h5H+L0Rfi.4"2C?MJ2#(4!2>R,ljT]Ci9LBn8<H0Z3MM$s"d.e:lY/(QJl@69p@mj$n=]GR![o:T;*r&AP$g-LGAjl`o;Nl7G<mEr)3*>rHk3h-f:eFnF.a]<1gqNM=i0hOl%aGF(_@$b3B5)lq;WC;5L1C.q;(sl>0N<DDa=""A8c5u1Yk>YQlmd['%S&F0j\eap\M^gkJuqm@PtjTf8&&o7QK/L#tdh7FL@QS<_l\eoBt=!ZI<SD/!\sCQFG??fc!\gp3Ck!B")uB;WkP<FQR5oG*?h[2h[mX^.qZ$&qBIG9n(H=?Ns>96()&t>MnK8"%^5:E^_>uYNg'-Y4Mh*]$5:TE8m\l]QpSFG[8%T5``!3Q`):Y,:h,pkm@"'$?Wt,!^3Od)"VJpN!jN"]C:1CBsoIN+]he1+&^k0Jt$VW)^(4EHu5.YKka]6m$gDB-;b!q-DAD#^&X5UniH>^drrauR>bVD>nAAO@149E*")rniT>pMK5b5]U+4P_XY6`<FREA8rNLW!m^(W\1Ui<dn&'QC]=6mfdI'`]60]X.OG0]i!e_Dlb4h[V;7l<;MF1DcA.:Nqq_8(?;F8U3LE6&(m]MKPJU4F1:G!%B`E%[H#mj1VVfGd2MbW0HgZK16T*clZ1FP!f%X:#QrgHU%l0p_SSb5cKA"9_I;p[d@N`?)HU3Gh_T)lFofiUU\,VTJ)!ZPHP%+B3>S;f-S-D*aTBn(q6)j+6Y%XNc4L]lqGoD==)C)1!JqXgn0,SHpU?DS_rYK)juj,<6(iHUU[LZd.uMM:5d<5d5JT],N?@]`'#F27E!4\m`:X3&D%HMo:U2Q)72/?T2GUM+0J*0(H^_I\kN*3`V6a!^&FM[>gTf!C@[BuOl56(]j?-ZM.[:VkQe*ilc1W,O:;Wta8*RNf(<+3J@t@U0Rkm"m%B?-ShH^4#]cc=3E0?lgOb(#NbVh1Ws1A.ENbPfT3,\dW'tZWXkI#E@V3dP>`1Ck"BAbZ0q1P-`h-,:AFN3APV6Yjrp9A""/XWIgY#@0O3K=&Yu[BTh1=P?fB?Mc)#2)HPO&5%0HH?H-YRr9>b;;T?oS6ZW9YO.Yn#A<A.e$R0Uu<H7#RA:XLK>NTr!LM25;oipkH[r'=EK_Dh.d(X?@=ksV3/'/kbNqhr[VR:sgbRYA5LeSm2&TWQP[^gioGh&iSSaY*?Yj,G1W$<j;F+[K[MNc;b\p,%7@_.roj\frQkK3Eh)fpTBGPP@m*phGWY_MpjY=Hf`IG+Re(])b._<#SoDt``(FY]DA+%gcqPWZEKa^-c#gY-L=I\1KtPQ,bYNoeA@;13<#^%bWu3NRY/V;sGSU]UhBUh@agp+8>W(c*PN0B*FV1^CQEU()&-@DFO[\9>=hm2Q;/,ut@fr\&lY&kh0`hn*6OoG+6Kf5&.j[9r^XoaC#jqh7!W5@V5YhT5JaF:63Oe1D+)qQsDHU+Nbhe1-D07Ycr3eQtkG0\ZK45S@8$YFWP&[Sr"S)WMI(+Itla5u[scFfu>brW1'-O$*~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 24
|
||||
@@ -191,17 +191,17 @@ xref
|
||||
0000002175 00000 n
|
||||
0000002459 00000 n
|
||||
0000002564 00000 n
|
||||
0000004657 00000 n
|
||||
0000006433 00000 n
|
||||
0000008209 00000 n
|
||||
0000009981 00000 n
|
||||
0000011814 00000 n
|
||||
0000013601 00000 n
|
||||
0000015395 00000 n
|
||||
0000004646 00000 n
|
||||
0000006405 00000 n
|
||||
0000008204 00000 n
|
||||
0000010006 00000 n
|
||||
0000011762 00000 n
|
||||
0000013544 00000 n
|
||||
0000015358 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<901f406f6cfbf9b640977a323bae9dd6><901f406f6cfbf9b640977a323bae9dd6>]
|
||||
[<9e7bb413baa63d67c4d12e6c10106594><9e7bb413baa63d67c4d12e6c10106594>]
|
||||
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
|
||||
|
||||
/Info 14 0 R
|
||||
@@ -209,5 +209,5 @@ trailer
|
||||
/Size 24
|
||||
>>
|
||||
startxref
|
||||
16736
|
||||
17055
|
||||
%%EOF
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user