// ==UserScript== // @name MissAv批量备份收藏视频 // @name:af Missav Batch Backup Collection Video’s // @name:am Sisev batch የመጠባበቂያ ቅጂዎች ቪዲዮዎች // @name:ar Missav Batch Backup Collection Videos // @name:az Missav Batch Backup Toplama Videoları // @name:be Відэа калекцыі рэзервовага капіявання Missav Batch // @name:bem Amavidyo yakulonganika ayakuminkana // @name:bg Missav Batch Backup Collection Videos // @name:bn মিসাভ ব্যাচ ব্যাকআপ সংগ্রহ ভিডিও // @name:bo མི་སི་ཨེ་ཝ་ཡི་རྒྱབ་སྣོན་རྒྱབ་སྐྱོར་བསྡུ་རུབ་བརྙན་འཕྲིན། // @name:bs Video sa kolekcijom Batch Batch Batch // @name:ca Missav Batch Backup Collection Videos // @name:ceb Ang Missav Batch Backup Collection Video // @name:ckb ڤیدیۆی کۆکردنەوەی باکئەپی وەجبەی میسڤ // @name:cs Videa sběrnice zálohky Missav Batch // @name:cy Fideos Casgliad Wrth Gefn Swp Missav // @name:da Missav Batch Backup Collection Videos // @name:de Missav Batch Backup Collection Videos // @name:dv މިސާވް ބެޗް ބެޗް ބެކަޕް ކަލެކްޝަން ވީޑިއޯ // @name:dz MissAv batch རྒྱབ་ཐག་བསྡུ་སྒྲིག་བརྙན་ཐུང་། // @name:el Missav Batch Backup Collection Videos // @name:en MissAv batch backup collection videos // @name:eo Vidbendoj de Missav Batch Rezerva Kolekto // @name:es Videos de colección de copias de seguridad de Missav Batch // @name:et Missav partii varukogude videod // @name:eu Missav Batch Backup Bildumako bideoak // @name:fa فیلم های مجموعه پشتیبان Missav Batch // @name:fi Missav Batch Backup Collection -videot // @name:fo MissAv batch backup savnsvideoir // @name:fr Vidéos de collection de sauvegarde de Missav Batch // @name:gd Bhideothan cruinneachadh Bistaw baidse baidse // @name:gl Vídeos de colección de copias de seguridade por lotes de Missav // @name:gu મિસવ બેચ બેકઅપ સંગ્રહ વિડિઓઝ // @name:haw ʻO nā wikiō RISAV Batch Rub // @name:he סרטוני אוסף גיבוי אצווה של מיסב // @name:hi मिसाव बैच बैकअप संग्रह वीडियो // @name:hr Videozapisi za prikupljanje sigurnosnih kopija Missav Batch // @name:ht Missav pakèt backup koleksyon videyo // @name:hu Missav Batch biztonsági mentési gyűjtemény videók // @name:hy MissaV խմբաքանակի կրկնօրինակման հավաքածուի տեսանյութեր // @name:id Video koleksi cadangan Batch Missav // @name:is Missav Batch Backup Collection myndbönd // @name:it Video di raccolta di backup batch MISSAV // @name:ja Missavバッチバックアップコレクションビデオ // @name:ka Missav Batch სარეზერვო კოლექციის ვიდეოები // @name:kk Missav пакеті Сақтық көшірме жасау жиынтығы Бейнелер // @name:km វីដេអូប្រមូលបម្រុងបម្រុងបណ្តេញចេញ Missav Batch // @name:kn ಮಿಸ್ಸಾವ್ ಬ್ಯಾಚ್ ಬ್ಯಾಕಪ್ ಸಂಗ್ರಹ ವೀಡಿಯೊಗಳು // @name:ko Missav 배치 백업 컬렉션 비디오 // @name:ku Missav Batch Backup Collection Videos // @name:ky Missav Batch Rustraup Collection Videos // @name:la Missav Batch tergum collectio videos // @name:lb Missav Batch Backup Collection Videoen // @name:lo Missavav Back Backup ການເກັບກໍາຂໍ້ມູນ // @name:lt „Missav Batch Backup“ kolekcijos vaizdo įrašai // @name:lv Misav pakešu rezerves kolekcijas video // @name:mg Missav Batch Backup Video Videos // @name:mi Ko nga ataata kohinga kohinga panui a Misv // @name:mk Видеа за собирање резервни копии Missav серија // @name:ml മിസ്സവ് ബാച്ച് ബാക്കപ്പ് ശേഖരണം വീഡിയോകൾ // @name:mn Missav Backup Backup цуглуулах видео // @name:ms Video Koleksi Backup Missav Batch // @name:mt Vidjows tal-Ġbir tal-Backup tal-Lott MissAV // @name:my Missav Batch Backup Collection ဗီဒီယိုများ // @name:ne मिस बच ब्याकअप संग्रह भिडियोहरू // @name:nl Missav Batch Backup Collection Video’s // @name:no Missav Batch Backup Collection -videoer // @name:ny Mavidiyo a Cark Batch Olent // @name:pa ਮਿਸਵ ਬੈਚ ਬੈਕਅਪ ਭੰਡਾਰ ਵੀਡੀਓ // @name:pap Videonan di kolekshon di backup di batch di MissAv // @name:pl Filmy z kolekcji kopii zapasowej Missav Batch // @name:ps د مس پرتله د بیک اپ ویډیوګانې // @name:pt Vídeos de coleção de backup de lote missav // @name:ro Videoclipuri colecția de rezervă MissAv Batch Backup // @name:ru Миссав пакетный резервный видео видео // @name:rw Mis Minch Inyuma Video // @name:sg A-vidéo ti bungbingo ye ti MissAv . // @name:si මිසව් බ්ලවුච් උපස්ථ එකතු කිරීමේ වීඩියෝ // @name:sk Missav Batch Backup Collection Video // @name:sl Video posnetki zbirke varnostnih kopij Missav Batch // @name:sm Miss Clotch Back BadUop Colling Vitio // @name:sn Missav Batch Backup Kuunganidza mavhidhiyo // @name:so Masav Dutch Patch Patch Videos // @name:sr Видео снимци за бацкуп Мисав Батцх Бацкуп Цоллецтион // @name:sv Missav Batch Backup Collection Videos // @name:sw Video za Mkusanyiko wa Backup wa Missav // @name:ta மிசாவ் தொகுதி காப்பு சேகரிப்பு வீடியோக்கள் // @name:te మిస్సావ్ బ్యాచ్ బ్యాకప్ సేకరణ వీడియోలు // @name:tg GOADID PAXAP STAPS Videos Videos // @name:th วิดีโอคอลเลกชันสำรองชุด Missav // @name:ti ሚሳቭ ባች ባክኣፕ ስብስብ ቪድዮታት // @name:tk Missav Batch ätiýaçlyk nusgasy // @name:tn MissAv batch batch backup pokello dividio // @name:to MissAv batch backup ’a e ngaahi vitio ’o e tanaki // @name:tpi MisAv bet bek koleksen vidio // @name:tr Missav Toplu Yedekleme Koleksiyonu Videoları // @name:uk Missav Batch Reskup Collection Відео // @name:ur مساو بیچ بیک اپ کلیکشن ویڈیوز // @name:uz Missav partopni zaxiralash uchun video // @name:vi Video bộ sưu tập sao lưu missav // @name:xh I-Missav Batch Batch Backup Videos // @name:yi מיסאַוו פּעקל באַקקופּ זאַמלונג ווידיאס // @name:zh MissAv批量备份收藏视频 // @name:zh-CN MissAv批量备份收藏视频 // @name:zh-HK MissAv批量備份收藏視頻 // @name:zh-MO MissAv批量備份收藏視頻 // @name:zh-MY MissAv批量备份收藏视频 // @name:zh-SG MissAv批量备份收藏视频 // @name:zh-TW MissAv批量備份收藏視頻 // @name:zu Amaqoqo weCisav Batch Backup // @description 从当前missav页面获取图片文件和视频信息,并合并结果后提供下载生成的网页文件 // @description:af Kry prentlêers en video -inligting op die huidige Missav -bladsy, en gee die afgelaaide webbladlêer na die samesmelting van die resultate. // @description:am አሁን ካለው የ SWALAV ገጽ የምርጫ ፋይሎችን እና ቪዲዮ መረጃ ያግኙ እና የወረደ ድረ-ገጽ ፋይልን ካዋሃዱ በኋላ ያቅርቡ. // @description:ar احصل على ملفات الصور ومعلومات الفيديو من صفحة Missav الحالية ، وقم بتوفير ملف صفحة الويب الذي تم تنزيله بعد دمج النتائج. // @description:az Mövcud mistav səhifəsindən şəkil faylları və video məlumatları əldə edin və nəticələrin birləşdikdən sonra yüklənmiş veb səhifə sənədini verin. // @description:be Атрымайце файлы малюнкаў і інфармацыю пра відэа з бягучай старонкі MISSAV і ўкажыце загружаны файл вэб -старонкі пасля аб’яднання вынікаў. // @description:bem Pokeni amafailo ya fikope na mashiwi ya vidio ukufuma pe buula lya nomba ilyafilwa, kabili peeleni failo ya ibuula lya pa webu ilyakokwa panuma ya kusanshamo ifyasangwa. // @description:bg Вземете файлове с снимки и видео информация от текущата страница Missav и предоставете изтегления файл на уеб страницата след сливане на резултатите. // @description:bn বর্তমান মিসাভ পৃষ্ঠা থেকে ছবি ফাইল এবং ভিডিও তথ্য পান এবং ফলাফলগুলি মার্জ করার পরে ডাউনলোড করা ওয়েব পৃষ্ঠা ফাইল সরবরাহ করুন। // @description:bo ད་ལྟའི་ missav ཤོག་ངོས་ནས་པར་རིས་དང་བརྙན་འཕྲིན་གྱི་གནས་ཚུལ་ལེན་ནས་གྲུབ་འབྲས་མཉམ་དུ་བསྡུས་རྗེས་ཕབ་ལེན་བྱས་པའི་དྲ་ཚིགས་ཤོག་ངོས་ཡིག་ཆ་དེ་སྤྲོད་དགོས། // @description:bs Nabavite datoteke slikovne datoteke i video informacije sa trenutne stranice MisAV-a i pružite preuzetu datoteku web stranice nakon spajanja rezultata. // @description:ca Obteniu fitxers d’imatges i informació de vídeo de la pàgina de Missav actual i proporcioneu el fitxer de pàgina web descarregat després de fusionar els resultats. // @description:ceb Pagkuha mga file sa litrato ug kasayuran sa video gikan sa karon nga panid sa Missav, ug hatagi ang na-download nga file nga panid sa web pagkahuman sa paghiusa sa mga sangputanan. // @description:ckb فایلە وێنەییەکان و زانیاری ڤیدیۆیی لە پەیجی ئێستای Missav وەربگرە، و فایلە وێب پەڕەی دابەزێنراوەکە دابین بکە دوای تێکەڵکردنی ئەنجامەکان. // @description:cs Získejte obrazové soubory a informace o videu z aktuální stránky MissAV a po sloučení výsledků zadejte stažený soubor webové stránky. // @description:cy Sicrhewch ffeiliau lluniau a gwybodaeth fideo o’r dudalen MISSAV gyfredol, a darparwch y ffeil dudalen we sydd wedi’i lawrlwytho ar ôl uno’r canlyniadau. // @description:da Få billedfiler og videooplysninger fra den aktuelle Missav -side, og angiv den downloadede websidefil efter fusionering af resultaterne. // @description:de Holen Sie sich Bilddateien und Videoinformationen von der aktuellen MILSAV -Seite und geben Sie die heruntergeladene Web -Datei an, nachdem Sie die Ergebnisse verschubst. // @description:dv މިހާރު ބޭނުންކުރާ މިސާވް ޕޭޖުން ޕިކްޗަރ ފައިލްތަކާއި ވީޑިއޯގެ މަޢުލޫމާތު ހޯދައި، ނަތީޖާ އެއްކޮށްލުމަށްފަހު ޑައުންލޯޑް ކުރެވިފައިވާ ވެބް ޕޭޖް ފައިލް ފޯރުކޮށްދިނުން. // @description:dz ད་ལྟོའི་ missav ཤོག་ལེབ་ལས་ པར་རིས་ཡིག་སྣོད་དང་ བརྡ་དོན་བརྡ་དོན་ཚུ་ ལེན་ཞིནམ་ལས་ གྲུབ་འབྲས་ཚུ་ མཉམ་སྡེབ་འབད་བའི་ཤུལ་ལས་ ཕབ་ལེན་འབད་ཡོད་པའི་ ཝེབ་ཤོག་ལེབ་ཡིག་སྣོད་འདི་ བྱིན། // @description:el Λάβετε αρχεία εικόνων και πληροφορίες βίντεο από την τρέχουσα σελίδα MISSAV και δώστε το αρχείο ιστοσελίδας που κατεβάστηκε μετά τη συγχώνευση των αποτελεσμάτων. // @description:en Get picture files and video information from the current missav page, and provide the downloaded web page file after merging the results. // @description:eo Akiru bildajn dosierojn kaj filmetajn informojn de la aktuala Missav -paĝo, kaj havigu la elŝutitan retpaĝan dosieron post kunfandi la rezultojn. // @description:es Obtenga archivos de imagen e información de video de la página de Missav actual, y proporcione el archivo de página web descargada después de fusionar los resultados. // @description:et Hankige pildifaile ja videoteavet praegusest Missavi lehelt ning pärast tulemuste ühendamist esitage allalaaditud veebilehe fail. // @description:eu Lortu argazki fitxategiak eta bideo informazioa uneko Missav orrialdetik eta eman deskargatutako web orriaren fitxategia emaitzak batu ondoren. // @description:fa پرونده های تصویری و اطلاعات ویدیویی را از صفحه Missav فعلی دریافت کنید و پس از ادغام نتایج ، پرونده صفحه وب بارگیری شده را ارائه دهید. // @description:fi Hanki kuvatiedostot ja videotiedot nykyiseltä Missav -sivulta ja anna ladattu verkkosivutiedosto tulosten yhdistämisen jälkeen. // @description:fo Fá myndafílur og videoupplýsingar frá aktuellu rakstrarsíðuni, og gev tær heintaðu heimasíðufíluna eftir at hava lagt úrslitini saman. // @description:fr Obtenez des fichiers photo et des informations vidéo à partir de la page Missav actuelle et fournissez le fichier de page Web téléchargé après avoir fusionné les résultats. // @description:gd Faigh faidhlichean dealbh agus fiosrachadh bhidio bhon duilleag Bhissav gnàthach, agus thoir seachad am faidhle duilleag lìn a chaidh a luchdachadh sìos às deidh dhaibh a bhith a ’ro-innse nan toraidhean. // @description:gl Obter ficheiros de imaxes e información de vídeo desde a páxina de Missav actual e proporcionar o ficheiro de páxina web descargado despois de fusionar os resultados. // @description:gu વર્તમાન મિસવ પૃષ્ઠથી ચિત્ર ફાઇલો અને વિડિઓ માહિતી મેળવો, અને પરિણામોને મર્જ કર્યા પછી ડાઉનલોડ કરેલ વેબ પૃષ્ઠ ફાઇલ પ્રદાન કરો. // @description:haw E kiʻi i nā kiʻi kiʻi kiʻi a me nāʻike wikiō mai kaʻaoʻao o kēia mau kiʻi o kēia manawa, a hāʻawi i ka faila pūnaewele i hoʻoihoʻia ma hope o ka hoʻohuiʻana i nā hopena. // @description:he קבל קבצי תמונות ומידע וידאו מדף Missav הנוכחי, וספק את קובץ דף האינטרנט שהורד לאחר מיזוג התוצאות. // @description:hi वर्तमान मिसाव पेज से चित्र फ़ाइलें और वीडियो जानकारी प्राप्त करें, और परिणामों को मर्ज करने के बाद डाउनलोड की गई वेब पेज फ़ाइल प्रदान करें। // @description:hr Nabavite datoteke s slikama i videozapise s trenutne stranice Missav i nanesite preuzetu datoteku web stranice nakon spajanja rezultata. // @description:ht Jwenn dosye foto ak enfòmasyon videyo ki soti nan paj aktyèl la missav, epi yo bay dosye a paj entènèt telechaje apre fusion rezilta yo. // @description:hu Szerezzen képfájlokat és videóinformációkat az aktuális MISSAV oldalról, és adja meg a letöltött weboldal fájlt az eredmények egyesítése után. // @description:hy Ստացեք նկարների ֆայլեր եւ տեսանյութեր ներկայիս MissaV էջից եւ ներկայացրեք ներբեռնված վեբ էջի ֆայլը արդյունքների միավորումը: // @description:id Dapatkan file gambar dan informasi video dari halaman MISSAV saat ini, dan berikan file halaman web yang diunduh setelah menggabungkan hasilnya. // @description:is Fáðu myndskrár og myndbandsupplýsingar frá núverandi Missav síðu og gefðu niður hlaðnar vefsíðuskrá eftir að hafa sameinað niðurstöðurnar. // @description:it Ottieni file di immagini e informazioni video dalla pagina MISSAV corrente e fornisci il file della pagina Web scaricata dopo aver unito i risultati. // @description:ja 現在のMISSAVページから画像ファイルとビデオ情報を取得し、結果をマージした後にダウンロードしたWebページファイルを提供します。 // @description:ka მიიღეთ სურათების ფაილები და ვიდეო ინფორმაცია მიმდინარე MissAV გვერდიდან და მიაწოდეთ ჩამოტვირთვის ვებ - გვერდის ფაილი შედეგების შერწყმის შემდეგ. // @description:kk Ағымдағы Missav бетінен сурет файлдары мен бейне ақпаратын алыңыз және нәтижелерді біріктіргеннен кейін жүктелген веб-парақтың файлын беріңіз. // @description:km ទទួលបានឯកសាររូបភាពនិងព័ត៌មានវីដេអូពីទំព័រដើមរបស់ទំព័របច្ចុប្បន្ននិងផ្តល់ឯកសារទំព័រដែលបានទាញយកបន្ទាប់ពីបញ្ចូលលទ្ធផល។ // @description:kn ಪ್ರಸ್ತುತ ಮಿಸ್ಸಾವ್ ಪುಟದಿಂದ ಚಿತ್ರ ಫೈಲ್‌ಗಳು ಮತ್ತು ವೀಡಿಯೊ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಿರಿ ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ವಿಲೀನಗೊಳಿಸಿದ ನಂತರ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ವೆಬ್ ಪುಟ ಫೈಲ್ ಅನ್ನು ಒದಗಿಸಿ. // @description:ko 현재 Missav 페이지에서 사진 파일 및 비디오 정보를 가져오고 결과를 병합 한 후 다운로드 된 웹 페이지 파일을 제공하십시오. // @description:ku Pel û agahdariya vîdyoyê ji rûpelê missav ya heyî bistînin, û pelê dakêşana malperê dakêşin piştî ku encaman li hev bikin. // @description:ky Учурдагы Missav баракчасынан сүрөт файлдарын жана видео маалыматын алыңыз жана Жүктөлүп алынган веб-баракчаны жыйынтыктарын бириктиргенден кийин бериңиз. // @description:la Get picture files et video notitia ex current Missav pagina, et providere downloaded textus page file post bus praecessi. // @description:lb Kritt Foto Dateien a Video Informatiounen vun der aktueller Mioc Säit, a kréien den Isspostausgeschoss, d’Fuscht dës Resultater vun der aktueller Säit. // @description:lo ເອົາເອກະສານຮູບພາບແລະຂໍ້ມູນວິດີໂອຈາກຫນ້າ Missav ໃນປະຈຸບັນ, ແລະໃຫ້ເອກະສານຫນ້າເວບທີ່ດາວໂຫລດມາຫຼັງຈາກການລວມເອົາຜົນໄດ້ຮັບ. // @description:lt Gaukite paveikslėlių failus ir vaizdo informaciją iš dabartinio „Missav“ puslapio ir pateikite atsisiųstą tinklalapio failą sujungę rezultatus. // @description:lv Saņemiet attēlu failus un video informāciju no pašreizējās Misav lapas un pēc rezultātu apvienošanas nodrošiniet lejupielādēto tīmekļa lapas failu. // @description:mg Makà rakitra sy fampahalalana an-tsary avy amin’ny pejin’ny Missav amin’izao fotoana izao, ary omeo ny rakitra pejin’ny pejin’ny tranonkala efa nampidirina taorian’ny nanangonana ny valiny. // @description:mi Tikina nga konae pikitia me nga korero ataata mai i te whaarangi MisV o naianei, me te whakarato i te kōnae whaarangi Tukutuku i muri i te whakakotahi i nga hua. // @description:mk Добијте датотеки со слики и видео информации од тековната страница Missav и обезбедете ја преземената датотека со веб -страница по спојувањето на резултатите. // @description:ml നിലവിലെ മിസ്സവ് പേജിൽ നിന്ന് ചിത്ര ഫയലുകളും വീഡിയോ വിവരങ്ങളും നേടുക, മാത്രമല്ല ഫലങ്ങൾ ലയിപ്പിച്ച ശേഷം ഡ download ൺലോഡ് ചെയ്ത വെബ് പേജ് ഫയൽ നൽകുക. // @description:mn Зургийн файл, видео мэдээллийг одоогийн Missav хуудсаас аваад үр дүнг нэгтгэсний дараа татаж авсан вэб хуудасны файлыг өгнө үү. // @description:ms Dapatkan fail gambar dan maklumat video dari halaman Missav semasa, dan sediakan fail laman web yang dimuat turun selepas menggabungkan hasilnya. // @description:mt Ikseb fajls tal-istampi u informazzjoni tal-vidjow mill-paġna MISSAV kurrenti, u ipprovdi l-fajl tal-web imniżżel wara li tgħaqqad ir-riżultati. // @description:my လက်ရှိ MissAV စာမျက်နှာမှရုပ်ပုံဖိုင်များနှင့်ဗွီဒီယိုအချက်အလက်များကိုရယူပါ။ ရလဒ်များကိုပေါင်းပြီးအပြီးတွင် download လုပ်ထားသောဝက်ဘ်စာမျက်နှာကိုထုတ်ပေးပါ။ // @description:ne परिणामहरू विलियम फाइलहरू र भिडियो जानकारी प्राप्त गर्नुहोस्, परिणामहरू मर्ज पछि डाउनलोड गरिएका वेब पृष्ठ फाइल प्रदान गर्नुहोस्। // @description:nl Ontvang fotobestanden en video -informatie van de huidige Missav -pagina en geef het gedownloade webpagina -bestand op na het samenvoegen van de resultaten. // @description:no Få bildefiler og videoinformasjon fra den gjeldende Missav -siden, og oppgi den nedlastede websiden -filen etter å ha slått sammen resultatene. // @description:ny Pezani mafayilo a zithunzi ndi zidziwitso za kanema kuchokera patsamba laposachedwa, ndikupereka fayilo yomwe idatsitsidwa ndi tsamba litatha. // @description:pa ਮੌਜੂਦਾ ਮਿਸਡਵ ਪੇਜ ਤੋਂ ਤਸਵੀਰ ਅਤੇ ਵੀਡਿਓ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੋ, ਅਤੇ ਨਤੀਜਿਆਂ ਦੇ ਮੰਦਰ ਦੇ ਬਾਅਦ ਡਾਉਨਲੋਡ ਕੀਤੇ ਵੈੱਬ ਪੇਜ ਫਾਈਲ ਨੂੰ ਪ੍ਰਦਾਨ ਕਰੋ. // @description:pap Haña e archivonan di potrèt i informashon di video for di e página di mickv aktual, i duna e archivo di página web download despues di fusioná e resultadonan. // @description:pl Uzyskaj pliki obrazu i informacje wideo z bieżącej strony MISSAV i podaj pobrany plik strony internetowej po połączeniu wyników. // @description:ps د اوسني مساو پا page ې څخه عکس فایلونه او ویډیو معلومات ترلاسه کړئ، او د پایلو د لیکلو وروسته د ویب پا page ې فایل فایل چمتو کړئ. // @description:pt Obtenha arquivos de imagem e informações de vídeo da página atual do Missav e forneça o arquivo da página da web baixado após a fusão dos resultados. // @description:ro Obțineți fișiere de imagine și informații video din pagina MissAV curentă și furnizați fișierul de pagină web descărcat după fuziunea rezultatelor. // @description:ru Получите файлы изображений и информацию о видео с текущей страницы Missav и предоставьте загруженный файл веб -страницы после слияния результатов. // @description:rw Shaka dosiye n’amashusho ya videwo uhereye kurupapuro rwa MSANV, hanyuma uhe dosiye y’urubuga rwakuwe nyuma yo guhuza ibisubizo. // @description:sg Bâ afichier ti foto nga na asango ti vidéo so ayeke na yâ ti lembeti ti missav so ayeke dä, na mû na mo fichier ti lembeti ti Internet so mo téléchargé ni na peko ti so mo bungbi arésultat ni. // @description:si වත්මන් මිසක් පිටුවෙන් පින්තූර ලිපිගොනු සහ වීඩියෝ තොරතුරු ලබා ගන්න, සහ ප්රති .ල ඒකාබද්ධ කිරීමෙන් පසු බාගත කළ වෙබ් පිටු ගොනුව ලබා දෙන්න. // @description:sk Získajte obrázky a informácie o videu z aktuálnej stránky Missav a po zlúčení výsledkov poskytnite stiahnutý súbor webovej stránky. // @description:sl Pridobite slikovne datoteke in video informacije s trenutne strani Missav in po združitvi rezultatov navedite naloženo datoteko spletne strani. // @description:sm Maua ata faila ma ata vitio mai le itulau o loʻo iai nei o le faʻauiga itulau, ma fai le upega tafaʻilagi itulau ’upega tafaʻilagi ina ua uma ona faʻaoʻo i le faʻaiuga. // @description:sn Tora mafaira emifananidzo uye vhidhiyo ruzivo kubva kune yazvino missav peji, uye ipa iyo yakadhindwa peji peji faira mushure mekubatanidza mhedzisiro. // @description:so Ka hel faylalka sawirka iyo macluumaadka fiidiyowga ee bogga hadda jira ee MISAV, oo bixi faylka bogga bogga la soo degsaday ka dib marka aad ku biirato natiijooyinka. // @description:sr Добијајте датотеке са сликама и видео информације са тренутне странице Мисав и дате преузету датотеку веб странице након спајања резултата. // @description:sv Få bildfiler och videoinformation från den aktuella Missav -sidan och ange den nedladdade webbsidan efter att ha sammanfogat resultaten. // @description:sw Pata faili za picha na habari ya video kutoka kwa ukurasa wa sasa wa Missav, na upe faili ya ukurasa wa wavuti iliyopakuliwa baada ya kuunganisha matokeo. // @description:ta தற்போதைய மிசாவ் பக்கத்திலிருந்து படக் கோப்புகள் மற்றும் வீடியோ தகவல்களைப் பெற்று, முடிவுகளை இணைத்த பிறகு பதிவிறக்கம் செய்யப்பட்ட வலைப்பக்கக் கோப்பை வழங்கவும். // @description:te ప్రస్తుత మిస్సావ్ పేజీ నుండి పిక్చర్ ఫైల్స్ మరియు వీడియో సమాచారాన్ని పొందండి మరియు ఫలితాలను విలీనం చేసిన తర్వాత డౌన్‌లోడ్ చేసిన వెబ్ పేజీ ఫైల్‌ను అందించండి. // @description:tg Файлҳои расмӣ ва маълумоти видеоро аз мисами кунунӣ гиред ва пас аз муттаҳид кардани натиҷаҳо пешниҳоди зеркашии саҳифаро пешниҳод кунед. // @description:th รับไฟล์รูปภาพและข้อมูลวิดีโอจากหน้า Missav ปัจจุบันและระบุไฟล์หน้าเว็บที่ดาวน์โหลดหลังจากรวมผลลัพธ์ // @description:ti ካብቲ ሕጂ ዘሎ ናይ ሚስኤቪ ገጽ ናይ ስእሊ ፋይላትን ናይ ቪድዮ ሓበሬታን ረኸቡ፣ ውጽኢት ድሕሪ ምውህሃድ ድማ ነቲ ዝወረደ ናይ መርበብ ሓበሬታ ገጽ ፋይል ኣቕርቡ። // @description:tk Suraty faýllary we wideo maglumatlaryny häzirki misva sahypasyndan alyň we netijeleri ylalaşandan soň ýüklenen Web sahypasyna beriň. // @description:tn Fumana difaele tsa setshwantsho le tlhahisoleseding ya video ho tswa ho leqephe la hajwale la ho se folose, mme o fana ka faele ya leqephe la webo e laisolotsweng kamora ho kopanya diphetho. // @description:to Ma’u ’a e ngaahi faile ’ata mo e fakamatala vitio mei he peesi misv lolotonga, pea ’oatu ’a e faile peesi uepi kuo download hili hono fakataha’i ’o e ngaahi ola. // @description:tpi Kisim piksa fail na vidio infomesen long pes bilong misev nau, na givim web pes fail yu bin daunlodim bihain long yu bungim ol risal. // @description:tr Geçerli Missav sayfasından resim dosyaları ve video bilgileri alın ve sonuçları birleştirdikten sonra indirilen web sayfası dosyasını sağlayın. // @description:uk Отримайте файли зображень та відеозапис на поточній сторінці Missav та надайте завантажений файл веб -сторінки після об’єднання результатів. // @description:ur موجودہ مساو پیج سے تصویر فائلیں اور ویڈیو کی معلومات حاصل کریں ، اور نتائج کو ضم کرنے کے بعد ڈاؤن لوڈ کردہ ویب پیج فائل فراہم کریں۔ // @description:uz Natijada uni birlashtirishdan so’ng rasm va video ma’lumotlarni oling va natijalarni birlashtirishdan so’ng yuklab olingan veb-sahifa faylini taqdim eting. // @description:vi Nhận tệp hình ảnh và thông tin video từ trang Missav hiện tại và cung cấp tệp trang web đã tải xuống sau khi hợp nhất kết quả. // @description:xh Fumana iifayile zemifanekiso kunye nolwazi lwevidiyo kwiphepha langoku, kwaye unikezele ngefayile yephepha lewebhu lewebhu emva kokudibanisa iziphumo. // @description:yi באַקומען בילד טעקעס און ווידעא אינפֿאָרמאַציע פון די קראַנט מיסאַוו בלאַט און צושטעלן די דאַונלאָודיד וועב בלאַט טעקע נאָך מערדזשינג די רעזולטאַטן. // @description:zh 从当前missav页面获取图片文件和视频信息,并合并结果后提供下载生成的网页文件 // @description:zh-CN 从当前missav页面获取图片文件和视频信息,并合并结果后提供下载生成的网页文件 // @description:zh-HK 從當前missav頁面獲取圖片文件和視頻信息,並合併結果後提供下載生成的網頁文件 // @description:zh-MO 從當前missav頁面獲取圖片文件和視頻信息,並合併結果後提供下載生成的網頁文件 // @description:zh-MY 从当前missav页面获取图片文件和视频信息,并合并结果后提供下载生成的网页文件 // @description:zh-SG 从当前missav页面获取图片文件和视频信息,并合并结果后提供下载生成的网页文件 // @description:zh-TW 從當前missav頁面獲取圖片文件和視頻信息,並合併結果後提供下載生成的網頁文件 // @description:zu Thola amafayela wesithombe nemininingwane yevidiyo evela ekhasini lamanje le-Missav, futhi unikeze ifayela le-Web elilandiwe ngemuva kokuhlanganisa imiphumela. // @namespace https://github.com/ChinaGodMan/UserScripts // @version 2025.04.27.1347 // @license MIT // @author 人民的勤务员 & ChatGPT // @match https://missav.ws/* // @match https://missav.live/* // @match https://missav.ai/* // @match https://missav123.com/* // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_download // @grant GM_openInTab // @icon data:image/png;base64,/9j/4AAQSkZJRgABAQIAdgB2AAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAMgAyADAREAAhEBAxEB/8QAHQABAAEEAwEAAAAAAAAAAAAAAAgDBAcJAQIGBf/EAF4QAAEDAgMDBAkNDQYDCAICAwABAgMEBQYHERIhMQgTQVEXIlZhcYGx0dIJFDJCcnN1kZSVobKzFRYjNDU2NzhSVWJ0wRgZgpLh8CQz8SVDU5OiwsPTRGNUg0Zko//EAB0BAQABBQEBAQAAAAAAAAAAAAAGAwQFBwgCAQn/xABMEQEAAQIDAgcMBgkEAgICAwEAAQIDBAURBjESIUFRcZHRBxMUFTJSVGGBkqGxFiIzNHLBFyM1NkJTc7LCYoLh8EOi4vEkRCVjk9L/2gAMAwEAAhEDEQA/ANnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUpKmKJ2y56I79lN6/EB3jkbKxHtXVq9aaAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0kmZCmr3tYn8S6AcRTsm2thVXZ46oqeUCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKck8cOm29rFXgiqBzHNHNrsPa/TjovACk98r51jY5rERqO1VuqrxA5ie6OXm5Hbe1vY9UTf1oB1hejHSOX28uzr4tP6AdqftHzR9TtpPAu/wAuoFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHV8jYm7T3I1vW5dAOjKqGR2y2RrndSLvA4qJHs5tGbKbbtnVya6bgOjnSU7ke+TnI13O3Imz1L4AEi6Ve1prsRKvxr/oBztIlVG9PYys018G9PoVQLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpLK2FurtV1XRETeqr1IBT2qh+9GMjTqcuq/QB1dUOdSse1ESSTRqIvQq+bf8QHDWrFIscLWq/RFfI/ivnAK1Z3ORyJHUR70enV0eLvAOd23U02mm1qxydWv+qaAU2qskktM9dlWu2on/AE/R5AKUzJPWsSKmkvOufonWm0qeRALvaT1zFInsZWbOv0p9GoFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcOcjGq5yoiJvVVAoJNLLvjjRreh0i6a+IDmKZdJUk0R0a71bw0011/31AUm6okcrmI+ok9ijl3MTj4tAO7tXubFUMY5r/Yub1/08IHR6vWnmjVdqSJUc1eldN6eYBNOkdQxVTagmb23Unf+kCm+N8DKva3tbFoxelU7YDsn4Ojbrxp36a95F0+qoF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALfn3zKvMtRWpu5x67vF1gcRTPSdI3vjejmqqKxNNFTo4r1gXIFui7VVI5d/NtRGp4d6/wBAOsNNHPEySVqSveiOVXJqia9CdQHM8bYIY1Y1GsjejtE6E6fKoB70p53Pdujeidt0Iqdf++gAyRstQsjV1jaxUV3Qq6/00+kDojFfQOVE7ZVdI1P8SuT+gHVVZVz6xqqo5mu2ibmuRd2/xqBVa2aWSN0jGsRmvB2uq6aAcx0aM2NZHuaxe1buREAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZJ1R/Nxt238V36I3wqBTfNLCrVe+JU2kRWIi66KunHX+gF0BQqE25IY19irtVTr0Tz6AdUjbVSyrJ2zWO2UYvDgi6qnTxA7rSRtjkbGxse23RdlNAKW2roYJkRVVns2pxTdovxL5AOZJmVKxsicj1R6OVW+1RN+/yAd4u3qpnJwRGs8aaqvlQC12283HD7J8UmzsImva8N/iUCs6GZYnQIjVZwR7nb9nq06wO8lJzj5F5xzWP9kxum/doBXRNlEROCbgOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt21SyoixROe1eDndqn07/oAOmmiTakjbsJxVjlVU7+miAdHwsmqlbIm2xzEVqKuqbl37vGgHG277n6a6OT8Gq+PZVQO742yTMhVPwTWa7HQvR8QFVsEbHI5sbWuTgqNTcB2c9rE1c5Gp1qugFGRyQT86q/gnojXO6EXoXwb/IBwyOWFuzErHR+12lVFanV3wOkSr67VFk57Vqo9ETtWr0J5QKiQywppE9qs6GvTh4FALA+bdM9FZ+wxNEXw9YFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACi+pRHuYxj5HN4o1NETxqBxt1HHmmadXOb/ACAU5ntnZC/tkZt7L266cd2i+PQDvTNSGWWJqI1u57UToRd3lRfjApMVfWkaoqtdM9Fc5OO9f9oBXSkhRunNM09ygFVV0TVeAFCddtrJY1R6xu10auuqcFT6QOG6vcs1O5rkf7JruCr195QKcyyNfGr5E5xHJpFH0prv1692oFd0DmvV8T0Yq+yaqatXv+EDhWTv3OkaxP4E3/GoFWONsTEa1NEQDsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFvJVtYrtGOejV0c5NNGgXAFi9yTMSSRFe166Rxa6IvfX4tQO1EiJLJsNiaxUTtYna6L8Sf7QDhWKtNURN1VzHKqInSnskT6dAO0SpA2V6sWOFUTZY7iq9O7v7twHCMdDDSOd7Jmyx3jTTy6Adlj231MKroj0R6L1a7vKn0gEdz6t7ZIqmPii7/AA7ulFA6VCOcxWzztaipojI00V39V8QHZWSP5mV0aPcjNHMcumirpvAq00SxQo12nFV0Tgmq66AcesoP/DRE6k4fEBVYxsbUa1qNanQiaIB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFKWdI3I1Gq9670a3jp1gdoZUmja9E016F6AKEz9t8iOcrIY01erdyqvHT4vKBRja1KiJWRRRKi702021TTpTTwdIFz7Cs70jPpRf9foAoU0LmSM0Y5qsVyPe5dzk36eHoUDs1nPwVKt4PcqsXwIm/40A7c4jpKaZOEibK+NNU8n0gcbLWI6nkXZaq6xu4dOvxooHZ/PMb+EnjYzpfs6L9K6AUo4nSUz2NRXMSTVvOe3Tj5dQK1PE5sskisSNHIibCLrw13r8f0Ad30sUjlcrE2l4qm5VA7Rwxw67DGt146JxA7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOFXRNV3IBTbVQvkRjZGucu7dvAqgU5peZjV2m0vBE616ALZ+u0rXySvk01VsKaI3/ffUDu90j6BHKjmybKK5E499PKBxEqSI+BYuajVnaovFU4KBWpXrJTsV3stNHeFNy/SBaoxi0MCuYj1j0YjV4bWuzv8YHaTfFK9WtZNBvRW9Kaa/EvACqi7NWi9EjPpT/r9AHWmiRyuc9VfIx6pq5ddOrROjdoBWqI+egexNyqm5epegCmxkr5mSPRjNGq3RF1VddPMBVkhjmREexr0ThtJqBxHBHDrsRtZr+ymgFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoyVcMSqjpGoqcU11VAKwHCqiIqruRALR0rpGte972Mf7CONO2cnWoFSkV2kjXI9ER3aq/jpp59QKNPI6LYR0TtXO2ZJXdK7+H++kCvT9pJNH1O2k8C/wCuoHRI2yvqoncHqjt3UqIn9FApw7ErI2OhY2KRu0xG8U8Pf3gc7TuYie5dXRSbKu601Vuv9QO740lq3MkVXMVqOa3Xdx37unoAuUTRNE4AWnMTbHNIjGsa/aa9V36a6pu+gC7c1r2q1yI5F4oqagU2UsMbtpsTGqnSjUAqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHACglbAq6c4nDXaXcnx8AKkUzJkVWORyIumqAWL67t3NfNzbkcqc3EzV3HxgddHy720rnfx1T9yeICqsirS7Svje+FyOXmuCJ0p8WoF8BQqfZ06rwSTf8S6fToBbysjjmlV6SS69u5GrojU4a8d/D6AK8WsMyR7Sujc3abquumnFNfGgHM/aSwyfxbC+Bf9UQBB2k00ffR6eBf9UUDrJE6NX7LOdik3uZrvRe9qB0bC57FjSNYY3Lq9Xu1c7vcV8oFxNA2ZG7WqbK6orV0XqA5jiZCioxuiKuq99QO4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRfVxRv2XPTa1RF0TXTXr6gOWVMUr9hkjXO010RdQKFXV8xLsOlbCzZRUcrdVXvJ/vpAoc4s3sYZ6jvyrsN+L/QCtT6qr4ZOYYjk0SKLj3wK9I9X07Nr2SJsu8Kbl8gCrRVpZkTirHafEBRqGNc6GTV6oqbLWMXRXa7+PgQA1WxNZLHtNYrth8bl1036eLRQK1UxX070b7JE2m+FN6AdNtFqIZE9jK1W/1T+oHeaN222WPTbRNFReDk6gKLWOR6ujpljeuvbSOTZTr0RFUCu2nalOsSqrkVFRV6V14qAjp2RO2kRVdpptOVVX6QKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0kmjhTt3tZ4VA6R1TJJEYiO1VFVFVqoi/H4QKM8z31DY27bI0dsvcmnFU3f9QKHOSsWOOSR71crmta1UbrsrxVV38AK6I1aVuxsose7tE5xW95O/wA4pXOjqXtej/wAIm0iyKmq6d5AOlU5zKx2zO2nRzE37O0rt68EApRww1LkRedqVVNpFlcqN+L/QDtC5ZI5GokdNE1mr0a3e1epdfMBfUu362j29ztlNQOZ4ueiVuui8UXqVOCgWsrmv/wCYskEmzsuRrdUcne3AVomrJKkmyrGNbssReK9a/QgFWWJJo1Y7VEXpTiBxFTsiVXJqrl3K5zlVV+MCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXPaxNXORqdaroBR9exbtlVciqibTWqqb1048AOK2d8bNmJqrI5FVFTTo48ekC3mfJTpI/nnrCiNfroiuXVdNEVdyAVadqLzsao1Hu7ZUe/bcvfVPiApbb45Y5XJI5je1VXojERF3bk4gVrgqsSFzXtjVH/8AMdwbuUC0VI5XaSTz1K6oio3tG7+HUB3YnMVCQxQxQvVdNdFVVbpvXXcBc0SORZkV22zbXR2mmq9P0/1AugLJWpCxIpNprWLrHK1NdOpP6AcsbzrWxs2lZtbb5HpptLrru8YF4BQjo441avbO2fY7TlVE8CcAK4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUamR0UW0zRF2kRVcmuiKumoFB6tSdsUkssj3e1YmyifF4F6QOebdHMrIGQRL+07e5fF/qB1ZMskUcquRzopVa5yJoioq6f1RQFavNzxvWTmmK1dpyN2tdFRUTygUrkjIpElWJZFTftPRVY1PB1gVpGPZo38JImmvaqkbE8fEDiNsbJIJWNYm0qscrF2k39/p4fSBUrNhrmP29mVuuwmmuviAptR0W1KrGsqJk2WsTo76+VQO0kTnf86BJ+jbj3L8S+cDmni/4jbRkjGtbpo9VXVV8fe+kC7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwuui6cejUCxdOqU7JppnNa9PYRN06NdOlQO0kTYthzI49t3t53b08qgNZJXT00j2uese0mymmi/70A5qHrLRRytXZcitdrprs79/lUCnUMjlomKqSVCJq1NhFTVe+ne0A4p9p1M17UVEcqpzdO1G/SvgAOYx8UjthnPR6PRNvbdu37+rgBd1CRS06847ZjXRdrXQC2aiyObNMjUji3teqaK7q3dAFTSaRm1JEyVqrqjF3Ob1eP4gKfMNc6NjIZYu2RV1cuiIm/r073jAvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0mj52J7P2kVALOSRVZDOjo4nObsukk9r06J9IHd6tjcqtji0e3tpHP2Nr6AKNM+OZ1RTMbGxqt3bDtd/DXXxp8QFeWRZaFr1Tc7ZV/eTXtv6gdJZ1qI0WKTYTnVicqJru4eYClO5UpYfwbJZGqsfbprw16PEBUYrpYkjRzpV22u20j2GtRFRd3xAXU0CSqjkXYkb7F6dHnQBFAkaq5VV8i8Xu/wB7gKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZObsxTN0aqxSbbdvgiLv1+lfiAI5HRtk/A1ErVVOc1RqN8e8Cj64jjrY9GxI569s5km0u/dpw69PiAu6fVnPRpxY5VRO8u/+oFvDOroHQxu0mbFt6/xarr9IHCLpTz7apNq1Jk2tyLqnD6AFJK5muu/inMwxaInf1/3xAuo6dFpY4pE10aiL3l8IBlN2yLJIsqt9jruRO/4e+BXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJoFmhnhRqOc16Pa1enXf50A4a1YNFkSlpk6kTVf6AVOcYsrZUjlkc1NnaRqomi97dqBVpWuRj0cxWtV6q1Haa6Lv8ALqB19YMRdGuc2Pd2jeGqcO/1AVUgjbIr0jbtrxdpvAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3tRKpEX2MrFavhT/RVAtIKaSnjRHRU0SN3c4/eq9/8A2oFZz45o0au1UaKipzTdE1Tv/wCoFSFzpKlZEjexjmIi7eib0Xdu8agdn0jXSbbXLE9V1VzdNV3adPgQDlKSFGsRWI/YTRquTXQCtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGSnV8m22R0erdldlE3/H4VA5hpo4ETYYiL0u03r4VAqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClPEsqN0dsOau0jkTUDrHSRscr3JzsirrtvRFX/QCuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUK6uprZSS1VZURUtNE3afNM9GMYnWqruQ+TMUxrKpbtV3q4t26Zmqd0Rxyj7mLy4MBYOklpbQs+Ka5mqf8ABdpAi9+V3H/CimGv5rYtcVH1p+DaWU9zjOMwiLmJ0s0z53HV7sfnMI+4r5e+Prw97bPSW2wwL7FWxLPKn+J+7/0mGuZxfq8iIhtTA9zDJ8PETia6rk9PBjqjj+LG1z5TmaV1e502NLlHr7Wnc2FPiYiFjVj8TVvrlLrOxuQWI0pwlM9Os/OZfJdnpmI5VVca3zVf/wDek85T8LxHnz1r6Nmslj/9S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdh2dMxO7W+/L5POPC8R589Z9Gsl9Et+7HYdnTMTu1vvy+TzjwvEefPWfRrJfRLfux2HZ0zE7tb78vk848LxHnz1n0ayX0S37sdi5pOULmXQuRYsb3pNOh9U56fE7U9RjcTG6uVG5spkVzysHR7sR8ntMO8tXNKwvZz92prxEnGOvpWLr/iZsr9JdUZpiaN869KPYvud5BiYngWptz/pqn5TrDNuBPVCLZWSRwYtw9LblXctXbX86xO+rHaORPAqmVs5zTPFdp06Gusz7leItxNeXX4q9VXFPXHF8ISawPmVhjMi3+vMOXmlukSJq9sT9JI+85i9s3xoZ21ft341t1atO5lk+Pyi53rHWpon17p6J3S9MV2HAAAAAAAAAAAAAAAAGIc9OUphvJOjWCdyXTEMjNqC1wPTaTqdIvtG/SvQhjcXjreFjSeOrmTvZrZDHbR18Oj6lmN9c/KI5Z+EcrX7mtnxi/OGvdJfLi5tCjtYrbTKrKeJOjtfbL33aqQ7EYu7iZ+vPFzcjqXI9mctyC3FOEt/X5ap46p9vJ0RpDHhZJWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0cP4jumFbpDcbPcKi210S6snppFY5PGnFO8e6K6rdXConSVpisJh8damxiaIrpnkmNYTPyF5ccVylprFmFzdLUO0ZFe4m7Mbl6OeansV/iTd1onElGDzaKtKMR19rnvafub1WYqxeTa1Rvmid/+2eXonj6Uv4J46mFk0MjZYpGo5j2Lq1yLwVF6UJJE68cNC1U1UVTTVGkwqH15AAAAAAAAAAAAAj1ypOU7T5QW91isb46nFtVHqmujm0TF4PenS5fat8a7uOGzDHxho4FHlT8G1Ni9ja8+ueF4uJjD0z7ap5o9XPPsj1a7Ltdq2+3KouFxqpa2tqHrJLPM5XPe5eKqqkKqqmuZqqnWXWFixaw1qmzZpimmniiI3QtDyrgAAAAAfUt2Fb3d9FoLNcK1F4LT0r3+RCpTbrq8mJlZXcbhbH2t2mnpmI/N9hmUuOJW6swdfnJ1pbZvRKng97zJ6pWM55lccU4q379Pa7diHHfcZf8A5sm9EeD3vMnql88e5V6Vb9+ntOxDjvuMv/zZN6I8HveZPVJ49yr0q379PadiHHfcZf8A5sm9EeD3vMnqk8e5V6Vb9+ntOxDjvuMv/wA2TeiPB73mT1SePcq9Kt+/T2nYhx33GX/5sm9EeD3vMnqk8e5V6Vb9+ntOxDjvuMv/AM2TeiPB73mT1SePcq9Kt+/T2nYhx33GX/5sm9EeD3vMnqk8e5V6Vb9+ntOxDjvuMv8A82TeiPB73mT1SePcq9Kt+/T2nYhx33GX/wCbJvRHg97zJ6pPHuVelW/fp7TsQ477jL/82TeiPB73mT1SePcq9Kt+/T2nYhx33GX/AObJvRHg97zJ6pPHuVelW/fp7TsQ477jL/8ANk3ojwe95k9Unj3KvSrfv09p2Icd9xl/+bJvRHg97zJ6pPHuVelW/fp7TsQ477jL/wDNk3ojwe95k9Unj3KvSrfv09qzq8t8W0DFfU4XvMDU4ukt8qJ9U8zYuxvpnqVqM2y+5OlGIon/AHU9r4NRTy0kisnifC9OLZGq1fiUpTExvZOmumuNaZ1hTPj2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAknyXOVTV5aVtNhrE1Q+qwpM5GRTPVXPoFXpTrj629HFOpc5l+YTYmLdyfq/L/hqHbTYm3nFFWOwFPBvxvjkr/+XNPLulsLpamGtpoqinlZNBK1HxyRrq1zVTVFRelFQmcTExrDlWuiq3VNFcaTHFMKp9eAAAAAAAAAAAxpn/nHSZK4Aqbu/Yluk+sFvpXL/wA2ZU4r/C3ivxdJY4zExhbU18vIl+y+z9zaLMKcNHFRHHXPNHbO6Gra/X2vxNeay63OpfWV9XK6aaeRdVe5V3kArrquVTXVOsy7SwuGs4OzRh7FPBopjSIjmWB4XQAAAety7ypxVmtdfWGGLPPcXoqJJMibMMKdb5F3N8pcWcPdxE8G3GrB5rneAyW133HXYpjkjlnojfKXmWvqeFupo4qnHN8lrZtyuoLV+DjTvOkVNp3iRCRWMmpjjvVa+qGi837qd6uZt5XZimPOq456o4o9sykfg/IXL3AkTUs2ErZBI3/v5YEmlXv7b9V+kzdGEsWvIohqnH7TZxmUz4TiapjmidI6o0h72GFkEaMjYjGJwa1NEQutNEbqqmqdap1Vj6+AAAAAAAAAAAAAAAAAB8S+YPsWJadYbtZqG6ROTRW1dMyTyoUq7dFyNKqYle4fH4vB1cLD3aqJ9UzHyYQx7yG8tcYRySW6jnwvWu3pLbZPwevfjdqmng0MZeyrD3PJjgz6mw8s7o2d4CYpvVRep5qo4+uNJ69UTM2+RfjvLSOeuoIm4ps0erlqbexeejb1vi4+NuqEexGWXrH1qfrR6uxu3I+6BlWbzFq7Pebk8lW6eird16MBORWuVqoqORdFRdyopiGzYnXjhwH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzuRBygHpNHl3fqnaY5FW0Tyu3ovFYNerirfGnUSfKsZ/+vXPR2Oe+6PstHBnOsHTx/8AkiPhV+U9fOmqSlzwAAAAAAAAAOFXRNV4AaxOVdm4/NTNOt9bzK+yWlXUVE1F7V2i9vJ/icnxIhA8xxPhF6dN0cUOydiMijJMqo4cfrbn1qvbuj2R8dWGDFthAAABKfk3ci6uzDipcR40Sa14dfpJBQt7SorG9Cr+wxevivRpxM/gssqvaXL3FTzc7TO1ndAtZXNWCyzSu9umrfTT2z8I5eZPjC+FLRguzw2qx26ntdBCmjIKZmy1O+vWvfXepLaLdFqng0RpDmXGYzE5henEYqua655ZfcKi0AAAAAAAAAAAAAAAAAAAAAAAACO+fvJBw1m5BPdLUyKwYp0VyVULNIah3VKxOv8AaTf4TEYvLreIiaqeKr/u9s3ZnbrHZHVTYxEzcsc076fwz+U8XQ12Y7wHfctcSVNixDQSUFwgXe129sjeh7HcHNXoVCGXbNdiuaLkaS6qy3M8Lm2GpxWDr4VE/D1THJPqefKLKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABc2241NouFNXUczqerppGzRSsXRzHtXVFTxoeqappmKo3wo3rNGIt1Wrsa01RMTHPEtr2R+ZcObWWlnxCxWpVSx81Vxt/7udu56eBV3p3lQ2HhL8YmzTc5eXpcQbR5PVkeZ3cFPkxOtM89M7uzph7wu0ZAAAAAAAAMYcpTHzsuMmsQ3SGTm62WH1nSqnFJZe1RU8CKrvEWGOvd4w9VUb93WmWyGVxm+dWMPVGtMTwquinj+PFHtaq1VVXVd6mvnbIAAATF5HPJUjxC2kx3jGk27ajkktdtmbunVF3TSIvFmvsU6ePDjJMty/h6X7scXJH5tDbe7aTheFlOW1fX3V1Ryf6Y9fPPJu3p5tajURqIiInBE6CWObN/HLuH0AAAAAAAAAAAAAAAAAAAAAAAAAADFueuRVkzywpJQV7G010harqC5Nbq+nf1L1sXpb/AFLHF4SjFUcGrfySluze0mK2bxcXrM60T5VPJMdscktWmOsE3fLrFVww9fKZaW40T9h7favToe1elqpvRSBXbVVmubdcccOy8uzHD5rhaMZhataKo/7E+uOV8EpMmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu/U+sfuosS33CE8i8xXQpXUzVXckrNEeieFqov8AgJJk17SuqzPLxtD91PK4uYazmVEcdE8GeieOOqfmnQSxzYAAAAAAAAQ79URxM6GzYSsDH6JPNNWyNReKMRGN+u4jWdXNKaLftb87lGDiq/isZMboimPbxz8oQgIo6PAAGa+SlkY7OnMNiV0TvvctWzUXB/BJN/aQovW5U395FMpl+E8Ku/W8mN/Y17trtHGz+Xz3qf11zip9XPV7Pno2jU1JDRU8UEEbYYImoxjGJo1rUTREROhEQnkRERpDjeqqquqa651md66D4AAAAAAAAAAAAAAAAAAAAAAAAAAAAARu5ZWQkeaWCJL/AGunR2J7LE6SPYTtqmBN74l61Te5vf1TpMLmWE7/AG+HR5UfGG1NgNppybGxhMRV+puzp+Grkn8p6+RrVIS63AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIvJ4xM7CWdeELgj1ZH6/ZTyLrxZJ+Dd9Di9wVzveIoq9fzRLavBxjskxVnTj4MzHTTxx8m142G4hAAAAAAAANf8A6oNXunzVslKq9rBaWuRO+6WTXyIQ7OZ1vUx6nUfcstRTlN65z3J+FMIuGAboAOWtV7ka1Fc5V0RE4qofJnTjltd5MmU8eUeUtqt0kSR3asalbcHab1meiLsr7lNG+JSf4HD+D2Yp5Z45cU7X51OeZtcvRP6un6tPRHL7Z42XTIoWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOFTVNF3oBqy5XmU7cq8365tHDzVmvCLcKNGpo1m0v4Rie5dru6lQgWYYfvF+dN08cOyNhs7nOcoom5Oty39Wr2bp9sfHVhIxjYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbJVOob1QVLF0dDURyIqdCo5F/oeqJ0qiVtiaIuWK6J5YmPg3JU8vP08Un7bUd8aGzYnWNX5/1U8GqaeZUPryAAAAAAA14cvv9NdJ8EQ/XkIXnH3iOh1Z3L/2JV/Uq+VKNZg23wDK3JcwI3MLPHDNumj5yjp5vX1S1eCxxJt6L4XI1PGZDAWu/Yimmd2/qQrbLMpyvJMRepnSqY4MdNXF8I1ltlNgOKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARd5fuBG4iyip7/ABR7VXYatsquRN/MyaMenx7C+IwWb2uHY4cb6W3u5lmU4XN5wlU/Vu0zH+6njj4atcxDHVoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADXhy+/010nwRD9eQhecfeI6HVncv/YlX9Sr5Uo1mDbfAJh+pxYdbU4uxde3sRVpKOKljcqcFkerl+iNCRZNT9euvmhojurYqaMJhsLE+VVNXVGn5p8Euc1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8VnFh5mK8q8WWl7UclVbJ2NT+JGKrf8A1IhbYmjvlmujniWcyHFTgs1w2Ij+Gunq14/g08JwQ1w7vcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKtJ+Nw+7b5T7G9TueRPQ3K278nUvvTfIhs2ndD8/bv2lXTK5PSkAAAAAAA14cvv8ATXSfBEP15CF5x94jodWdy/8AYlX9Sr5Uo1mDbfAJ6epvUrW4OxlUaJq+4Qx695sar/7iW5LH6uufW5p7rFczjMLb5qZnrn/hMckbRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALWthbU0c7HJq18bmqneVD5PHD3bmaa6ZjklpWuESQ3CqjTgyV7U8TlNYzxTL9A7U8K3TPqhbnxVAAAAAAAAJ6clnk3ZdZg5KWK+Ygw3HcLrUPnSWodUTMVyNme1u5r0TciJ0EtwGCw97D01106zx/NzRtltZnOV53ewuEv8Ging6RpTO+mJnfDx3LYyLwRlXgqwV2FrGy1VVRcFhle2aR+0zm3Lpo5y9KFtmmFs4e3TVbp0mZSDue7R5pnWNvWsfe4dNNOscURx6xzRCHhG29wAAAAERVVERNVXoQCYnJ/5DLcWYTqLzjx1VbJK+DS3UMDtiWDXek0mvT1MXo4kjweV98omu/xa7u1obafujTgsXThsp0r4E/Xqnjif9MfnPUwDndkViLI7Ei2+7xeuKCZVWiucTV5qob/AO1ydLV+lN5icVhLmFr4NW7kls3Z7aTB7RYbv2HnSuPKpnfE/nHNLHJZJY43daAZj5JmBbFmRnRb7HiGhbcrXLS1Ej6dz3MRXNZq1dWqi7l75ksutUXsRFFyNY40C23zLFZTk1eKwdfBriqmNdInfPHv1TiuvI/yiprZWSx4QiSSOF7mr67n3KjVVPbkpqy7CxEzwPm52s7dbRV3aaZxM6TMfw08/Q1eSaNkciKmiKqEEdixxxDNvI+y/sGZmb6WfEtvbc7b9z55uYdI5ibbVZourVRd2qmUy2zRfv8AAuRrGkte7d5pjMoyjwnBV8CvhUxrpE8U688SmPjLkkZT2zCF8rKbCUMVRT0M80T/AF1Ouy9sblRd7+tEJLdy7C00VTFHJPO0JgNuNoL2Ls2q8TMxVVTE/Vp3TMeprJRyaJvIM6+NpOsDkAAAAAAAAAAAAAAAB6fBGWWKsyX1bMMWOqvTqRGrOlKiLzaO12ddVTjovxFe1Yu39e9066MPmOcYDKYpnHXot8LXTXl03vtYg5P2YuFbNV3a74RuNBbaRnOT1MzWoyNuumq7++Va8HiLdM1VUTEQx2F2oybG3qcPh8TTVXVxREa6z8GPizSkAkJyJsvsPZj5nXS3YltMF4oorY+ZkM+uy16SMRHblToVfjMzldm3evTTcjWNGre6HmmMynLLd7A3JoqmuI1jm0lLXM3kzZX2XLrFNfRYMt9PWUtrqZoZmberHticrXJ23FFRCQX8DhqbVVUURrES0jlG1+e4jMcPZu4qqaaq6YmOLjiZjXkaxU4IQZ2A5A+thjCl3xre4LRYrfNc7nOjljpoERXuRqKq6a9SIqlS3bru1cCiNZWOMxuHy+zOIxVcUURvmd3HxPdu5L2a7Gq5cC3VERNVXYb6Rd+AYnzJRyNscgni8Mo+PYxe9jo3uY5NlzVVFRehULBMImJjWHAfQAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADXhy+/010nwRD9eQhecfeI6HVncv/YlX9Sr5Uo1mDbfAJ+epwfmDiz4TZ9khLsl+zr6XM3dX+/4b8E/3JfkiaNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSqPxeX3K+Q+TueqfKhpUu35Wrvf5PrKayq8qX6BWPsqOiPktDyrgAABkPDHJ6zExpYqa82TCtXcLXVIqw1MTmbL0RVaumrkXiip4i8t4PEXaYroo1iUVxm1WTZffqw2KxEU1074nXi5eZ9b+yjm13D3D/PH6RU8X4rzJWX022e9Lp+PYf2Uc2u4e4f54/SHi/FeZJ9NtnvS6fj2H9lHNruHuH+eP0h4vxXmSfTbZ70un49if/JSwhd8DZHWGzX6gktt0gfULLTSqiuajpnuTgqpvRUUl+X267WHporjSeP5uY9tcdhsyzu9icJXw6JinSY9VMQ8Xy4st8S5lYGw/RYZtE13qqe4rNLHArUVjObcmq6qnSpbZrYuX7dMW41nVIO51m2ByjHX7uPuxRTNGkTOu/WOZDT+yjm13D3D/ADx+kRnxfivMlvz6bbPel0/HsP7KObXcPcP88fpDxfivMk+m2z3pdPx7D+yjm13D3D/PH6Q8X4rzJPpts96XT8ex8TGGQ2P8AWSS8YhwxV2u2RvbG6omcxWo5y6NTc5V3qUrmEv2aeHcp0hkcBtLlGZ34w2DxEV1zx6Rryex4EtEmX1ivVVhu9UN1oVjbWUUzZ4VljSRqOauqatVFRU7ynuiqaKoqjfC2xOHt4uzXh7vk1RMTpOnFPrhsy5NvKjs+d9ubbqzmrVi2CPWah2tGVCJxkh14p1t4p303k4wWPoxUcGeKr/u5yHtbsbidnbk3rWtdiZ4quWPVV+U7pZTx/gGy5m4Xq7Df6NtZQVLdFbwex3Q9i+1cnQpf3rNF+iaLkawhmWZnisoxVOLwlXBrp6p9U88S1iZ1ZDXfI3HtLb6xFrLNVTtdQXFG9rOzaTtXdT06U8ablILicJXhbsUzxxO6XYGz20uH2kwFV619W5TH1qeWJ03x6p5JbO6bL3CzqaJVwzZ1XYT/wDAi6vck5izb08mOpyFXmmP4U//AJFfvVdq7t2D7DZ6ltTQWS30VSiKiTU1LHG9EXimqIinqm3RTOtNMQtruOxd+ngXrtVUc01TMfGX2nMSRqtciK1U0VF4KhVWUTpxw8/2PMKr/wD4zZ/kEXolHvNrzY6mT8aY/wBIr96rtXFswjY7LUeuKCzUFDUbKt52mpWRv0XimqIi6H2m3RTOtNMQoXsdisRTwL12qqOaapmPjL6k0DKiJ8cjGvieio5jk1RUXiioVd6ziZpmKqZ0mHwux3hXuZtHyCL0Sh3m15sdTKeNcf6RX71Xaw7yt8GYftfJ8xXVUVjttJUxxw7E0FJGx7fwzE3KiaoY7MLVFOGrmKY6vWnOw+YYy9tBhrd29VVTMzxTVMx5M+trKIO6+AO8EMlTPHDDG+aaRyMZHG1XOc5eCIicVPsRM8UPNVVNFM1VTpEJT4E9T8xTifDVJcrze4MOVdQm2lumpXSyRt6NtUciI5eroM/aye5coiqurSeZpfMu6hgMHiarGGszdpp/iidImfVxTxevlY75RHJuqeT99xPXF9hvX3U51G81TrFzexs8dXLrrtfQWWMwU4Pg61a6pXsrtbRtP37gWZt9703zrrrr6o5mGTGJ+AZZyd5MWN86EbVWuiZb7LtaLda/VkS9ewmmr/EmnfMjhsDexPHTGkc8oRn22GV5B+rv1cK55tPHPt5I9qT2HPU5MO08LFvmKblXT6ds2hiZAzXvbW0pnKMltx5dcy0/i+6tja6p8Ew9NMf6pmZ+Gj0E3qeuW8kOzHcL/E/9v11Gv0LGVpyfD88sXT3Us6idaqLcx0T/AP8ATHOOPU5qmCnknwliltXI1NW0t1h2Fd3kkZu+NpZXclmI1tVdaVZd3V6KqopzDD6Rz0Tr8J7UUMc5e4hy1vsloxJa57XXN3o2VNWyN/aY5Nzk76KR+7ZuWKuDcjSW7MtzTB5vYjEYK5FdPq3x6pjfE9LzpRZUAmn6mz+Use+9UfllJPkm+57Pzc+91n7PB9Nf+KR3Ku/V4x1/If8AvaZjH/da+hqrYv8AeHCfi/KWp4gDtcAlP6nb+mK8/Az/ALWMz+Tfb1dDTPdT/ZFr+pH9tScecP6KMafA1Z9i4lGI+xr6J+TnbIv2rhf6lH90NOicENcO73IGdeRL+sdhv3up+weZXK/vVPt+TXHdC/dy/wBNP90Nn1X+Kze4d5Cd1bnHtHlR0tKlx/KVV78/6ymsat8v0EtfZ09EfJbnlVAAACrSfjcPu2+U+xvU7nkT0Nytu/J1L703yIbNp3Q/P279pV0yuT0pAAAAAAANeHL7/TXSfBEP15CF5x94jodWdy/9iVf1KvlSjWYNt8An56nB+YOLPhNn2SEuyX7Ovpczd1f7/hvwT/cl+SJo0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFKo/F5fcr5D5O56p8qGlS7flau9/k+sprKrypfoFY+yo6I+S0PKuAAAG1Dkd/q3YO97m+3kJ7lv3Wj/ALyuMtvP3jxXTT/bSzWZNAQAAAAAAACO/Lx/V5uX89S/aGGzb7tPTDaHc3/eC3+Gr5NZhCHXYBd2i71tgudLcbdVS0VfSyJLDUQuVr43JwVFPVNU0TFVM6TChfsWsTaqs3qYqpqjSYndMNj/ACceVhZ8ysGVq4orKe0Ygs9Os1e+RyMjnhbxmZ/VqcFXdxJrgswov2575OlUb+1ydtXsRiMpxtPgFE12rs6U6ccxM/wz+U8yKHKe5TlZnTiGGitbVpMK2yfnaSN7e3qJE3c8/q7zehF37yP47HTiqtKfJjd2t2bHbH29n8PN2/8AWv1xpVPJEebH5yu2cvDNiNjWJW2rRqaJ/wBnt8568bYnnjqUZ7m2z8zrNFXvSyzyYOVbjvNLNyhsGIaq3utc1NPK9IaVsTtprNW9tr1mQwGYXsRfii5MacaE7YbFZTk2U14zB01cOJpjjqmd88fEmTc7jHTW6rnjmj5yOF729snFGqqElqq0iZaEs2aq7lNMxOkzDXBJy8s12yORK21aIqp+T2+chXjbE88dTq+O5ts/MeRV70swclblT43zXzT+4eJau3rbfWM0/wCBpmxO22q3Ttte+pkcBj72IvcC5MaaILtpsZleS5X4VgaauHwojjmZ4p15Er8WYhitWFrxXU1TTrU09HNNFq9qpttYqt3a796ISG5XwaKqondDSeCws38VatXKZ4NVVMT0TMRLXenL0zZVPx21fN7fOQ3xtiueOp1P+jXZ/wAyv3peex7yt8w8ycKV2Hb1U2+S2VqNSZsNG1j1Rrkcmjtd29EKN7Mb9+ibdcxpPqZTLNh8nynF0Y3C01RXTu1q1jjjTcwwYxP2a8tuSDmRmNJDKlodYLZJo5a67axJsr0tZ7N3xad8yljLsRe49NI9bXubbdZLlUTT33vlcfw0cfXO6OtNvIzkmYRyZSKvVv3dxIib7nVsTSJenmmb0Z4d698k+Fy+1hvrb6ufsc8bR7bZjn+tn7Oz5scv4p5ejd6mdTKteoQ+qT8MB+Gr/wDiIvnf/j9v5Ohe5Nvxn+z/ACQiIu6GZ65IuQUWdOOJqq7Rudhq0bMtWxN3riRfYQ69S6Kq95O+ZbLsJGKua1eTH/dGtNudpqtn8FFvDz+uuaxT6o5auz19DZpQUNNaaOGko4WU1NCxI44Ymo1rGpuREROCE6iIpjSHIVy5Xerm5cnWqeOZnfLA2avLUwHlpc5rVB65xJdIFVk0Vu2eaicnFrpFXTXvJroYjEZnYsTwY+tPqbKyXufZtm9qMRXpaondNWus+uIjj69GNqL1SK0OqkbV4Kr4qdV9nDWse5E8CtTX4yxjOqNeOj4pbc7k+JinW3i6Zn10zH5z8kiMpc9cIZz26SfDtx26mFE5+hqG83UQ99W9Kd9NUMxh8XaxUa259nK1XnezeY7P3IoxtHFO6qOOmfbz+qeNWziygsec2D6my3eFvObKupKxG/hKaXTc9q9XWnBUPWJw1GJomiv2epTyHPcVs/jKcVhp4v4qeSqOafynkancY4Ur8DYqumH7pHzdfbqh1PKicFVF3KneVNFTvKa/u26rVc0Vb4dtYDG2sxwtvF2J1priJj/vq3PjlJfpp+ps/lLHvvVH5ZST5Jvuez83PvdZ+zwfTX/ilxmrgTsmZe3vDC1i29tzg5j1zzfOc32yLrs6prw6yQ4i13+1Vb101aPyXMvFGYWcfweF3uddNdNfbxoqf3a8fd6/5rT/AO0wHiSP5nw/5bq/SzV6H/7/APxP7tePu9f81p/9o8SR/M+H/J+lmr0P/wB//iyhyeuSSzIbGNZfG4ldefXFG6k5haNIdnV7XbWu2v7PDvl9g8u8EuTXwteLTchm1O287S4OjCzh+BwauFrwteSY03Rzs3Yww/8AfThK82VZvW/3Qo5qXntna2Ntit2tN2umuuhlLlvvlFVHPGjXmBxXgWLtYrTXgVRVpz6TroiCnqa8aJ+fr/mxP/tI74kj+Z8P+W9v0s1eh/8Av/8AE/u14+71/wA1p/8AaPEkfzPh/wAn6WavQ/8A3/8Ai9vkryKGZP5i23FLMWOui0bZW+tVoUi29tit9ltrpprrwLnC5XGGuRd4eunqRvaDuhTnuXXMBOG4HC04+FrumJ3aQk5V/is3uHeQz1W5qKjyo6WlS4/lKq9+f9ZTWNW+X6CWvs6eiPktzyqgAABVpPxuH3bfKfY3qdzyJ6G5W3fk6l96b5ENm07ofn7d+0q6ZXJ6UgAAAAAAGvDl9/prpPgiH68hC84+8R0OrO5f+xKv6lXypRrMG2+AT89Tg/MHFnwmz7JCXZL9nX0uZu6v9/w34J/uS/JE0aAAAAD5l9vtBhq01VzutXFQW+lYsk1TO7ZYxqdKqeK66aKZqqnSIV8Nhr2Lu02LFM1V1TpERvlDPE3qjKUt9rYbFhKOvtMcitp6mrqnRSStT2ytRq7OvQmvAjdzOtKpiijWG+8H3KeHYoqxeJmm5MccRETEerXXjfN/vI7v3EUXy5/oFPx1V5nxX36JsP6XV7sdr2GUHLnuOZuZNhwvLhOloIrlOsLqhlY57maMc7VEVqa+xLnDZrVfu025o019bAZ73OLOUZbex9OJmqaI104MRrxxHOmCSJo4AAAAAD5t4vNDh+3S19zrIKCjhbrJUVMiRsYnfVdx5qqpojhVTpCtYw93FXItWKJqqndERrKM2ZPL+wbheSWkwvRVGKqpmrfXCLzFKi95yptO8Sad8wWIze1RxW44U/Bt7Ke5jmWMiLmOrizTzb6uqOKOv2I74t5dmaGInvSgqaHD1O7gyhpke9E93JtL8Whhrma4m55M6dDaeC7m+RYWIm7TVdn/AFTpHVGjGl2z6zHvjldW43vkmvFrK18bfiaqIWVWLxFe+uetL7GzOS4eP1eEoj/bE/PV8CTMDFMrlc/Et4e7rWvl9Ipd+uedPWyUZXgKY0ixR7tPYuqLNLGducjqXFt7gVOGxcJU/wDcfYxF6N1c9ajcybLLsaV4aif9tPY9ph/lY5sYce1YMY1lWxv/AHde1lQ1f86Kv0l1RmGJo3V9fGwGK2J2fxcfWwsU/h1p+Usz4G9UWvdI+OHFmHKa4w8HVNresMqd/Ydq1fjQydrOa44rtOvQ19mPcrwtyJqy+/NM81XHHXGk/NKnK7lE4EzfjayxXljbhpq621iczUt8DV9l4Wqpn8PjLOJ8iePm5Wmc52WzXIp1xdr6nnRx09fJ7dGTy9RMAAAAFKo/F5fcr5D5O56p8qGlS7flau9/k+sprKrypfoFY+yo6I+S0PKuAAAH2qDG2IrVSR0tFf7nR0seqMgp6yRjG79dzUXRN5Vi7cpjSKp62Pu5fg71c3LtmmqqeWaYmevRcdkbFndRefnCX0j7367509al4qy/0ej3aew7I2LO6i8/OEvpDv13zp6zxVl/o9Hu09h2RsWd1F5+cJfSHfrvnT1nirL/AEej3aexsn5HFyrLxyfMO1VfVT1tS99Sjp6iRZHu0neiaqq68Cb5bVNWGpmqdd/zck7fWbdjaC/btUxTTEU8URpHkxyQ8H6oLfLnYcvsNS2y41Vulfc3Nc+kmdE5yc07cqtVNULPOK6qLVM0zpxpL3MMNYxOYYim/RFURRyxE8sc6CnZGxZ3UXn5wl9IinfrvnT1ukfFWX+j0e7T2HZGxZ3UXn5wl9Id+u+dPWeKsv8AR6Pdp7DsjYs7qLz84S+kO/XfOnrPFWX+j0e7T2LS5Yxv96pVpbhfLlX0yqjlhqauSRiqnBdFVUPNVyuqNKqpn2q1nAYTD198s2aaaueKYifhD5BTX762FMKXbG9/o7JY6KS4XKrfsRQRJqvfVV6ETiqruQqW7dV2qKKI1mVjjcbh8uw9WKxVcU0U75n/ALv5oTGu/qeLG5bUy2+8q7G8bVlnWVf+EmVU/wCU3dq3TgjunpTqklWTfqo4NX1/g0NY7qUzmVXfrX/408UaeVH+qefXljqQ4xLhq64MvdXaLzQz2240ztianmTZVPOi9CpuUjdduq1VNFcaS31hMZh8wsU4nDVxXRVxxMf93sj8lvLKy5t5sU+H7+2eS3yUk8zkppebftNRFTeXuAsUYi93uvdoie2Wb4rI8pqxmDmOHFVMccaxxpof2B8qP/493+cF8xJvFOG5p62gf0l5/wCdR7v/AC5j5BmVkL9uOG8xu/aZcXIvkHinDRz9b5PdKz6qNJmif9kdqv8A2GMs/wBq/fOj/MevFWH9fWp/pGzv/wDr9yFv/YHyo/8A493+cF8x58U4bmnrVf0l5/51Hu/8uWcgvKyJ21HBeWO623FyL5B4pw3r63ye6Vn9XFM0e5HaqryEssVRUVL2qL0Lc3eY++K8N6+t5/SPnn+j3IUf7A+VH/8AHu/zgvmPninDc09b3+kvP/Oo93/l8+/chTK23WS41UNPdudgppJWbVeqptNaqp0d48V5VhopmYietc4bukZ9dv0W6qqNJmI8nnnpa5Yv+az3SeUhkb3Vk7pbqbIqJZbeqru9bx7/APChs2nyYfn7iPtq+mfmwJnzyxsMZWU09ssk8OIsUaKxKeB+1BTO65Xp0p+ym/r0MTi8yt4eODRx1Nk7NbB47Oaqb+KibVjnnyqvwx+c8XSz1ZKt9fZ6Gol052anjlfomiaq1FXymWpnWmJlrbEURav10U7omY6pQy9Un4YD8NX/APERnO//AB+38m/u5Nvxn+z/ACQiIu6GbJOQFaYKHIj13G1EnrrnUSSuTiuzssRPEjfpJrlFMRhteeZcm902/Vcz3vc7qKKYj26z+b1XK8x1X4ByLvdda5XQV1W+OhjnYujo0kXRzkXoXZRyIvfLjMbtVnD1TTvniYPYXLbOZ55atX41pp1qmOfg7o69GrFVVVVVVVVd6qvSQJ2cAeuymxzccuMxLFfrbM+KanqmJI1q7pYlciPYvWioqoXGHu1WbtNdLB53l1nNcvvYS/GsVROnqmN0+yW4mN6SMR6cHIiobIcITxTo1r8vm0Q23PpaiJqNdXWynnl0Ti5FezX4mIQjN6YpxOscsQ6z7md+q7kXAq/grqiOjin80cDDNsJLci/O3CeTVZiuTFNbNRtuEdO2n5qnfLtKxZNrXZTd7JDOZZirWGmvvk6a6NR7f7PZhn9GGjAURVwJq11mI36ab+hKT+3PlJ++qz5BL5jOeNML53wab/R1tF/Kj3qe0/tz5Sfvqs+QS+YeNML53wP0dbRfyo96ntP7c+Un76rPkEvmHjTC+d8D9HW0X8qPep7X128rDAr7ZBcWsvz7fO3aiqm2SpWJ6a6ao5GaKm4reMLOnC49OiVhOxWaxcmzM2+HG+O+Uax7NXypeXBlRA5WS3avicntX26ZF8hS8Z4WOX4Sv6e53tBVGtNumf8AfT2uv9ufKT99VnyCXzHzxphfO+B+jraL+VHvU9p/bnyk/fVZ8gl8w8aYXzvgfo62i/lR71Paf258pP31WfIJfMPGmF874H6Otov5Ue9T2qVRy5MpZIJGNvNZq5qon/AS9XgPs5phdPK+D3T3OtoYqiZtR71Pa1oVkjZqyeRi6tfI5yL3lVSDzxy65txNNFMTzQonxUAAACrSfjcPu2+U+xvU7nkT0Nytu/J1L703yIbNp3Q/P279pV0yuT0pAAAAAAANeHL7/TXSfBEP15CF5x94jodWdy/9iVf1KvlSjWYNt8An56nB+YOLPhNn2SEuyX7Ovpczd1f7/hvwT/cl+SJo0AAAPD5n5tYYyisD7riS4MpWaLzNM3tp6h37MbOKr3+CdKoW9/EW8NTwrks5k+R43PMRGHwVGs8s8keuZ/7PM1v8oDlMYgz0uKwSK61YbhftU1rjfqjup8q+2d9CdHWQnGY65i503U8zrLZjZDB7OW+FH17076p+VPNHxnlYcManoBlnkofrEYH/AJ132TzIZf8AeqOlCNtv3exf4fzhtiNgOKwAAAAYpz1z/wAPZF2BKm5SevLtUNX1la4nIkky9a/ssTpcvi1UsMXi7eEp1q38kJfs5sxjNo8R3uxHBtx5VU7o7Z9TW3m7npi3Om7uq7/Xu9Ztcq09tgVW00CdGjelf4l1UhWIxd3E1a1zxc3I60yPZzL8gs97wlH1uWqfKn2/lHEx8WaUAAAAAAAKlNUzUVRHUU8r4J4nI5ksTla5ipwVFTein2JmJ1h4ropuUzRXGsTySmHycuXFV2uopcO5iVDqygcqRwX1U1lh6ESb9pv8XFOnUkeCzWaZi3f3c/a0RtX3Ord6mrGZNTwat80ck/h5p9W7m0TppKuG4UsVRTysmglaj45Y1RzXtVNUVFTiioSyJiY1hzfXRVRVNFcaTG+F2HwAAUqj8Xl9yvkPk7nqnyoaVLt+Vq73+T6ymsqvKl+gVj7Kjoj5LQ8q4AA+9hjAWJMapULYLFcLylPspMtDTul5vXXTa0TdrovxFW3ZuXfIpmWNxmZYLL+D4Xept8LdwpiNejV9zsEZjdw1/wDm+TzFbwTEeZPUxv0kyb0u370dp2CMxu4a/wDzfJ5h4JiPMnqPpJk3pdv3o7TsEZjdw1/+b5PMPBMR5k9R9JMm9Lt+9HadgjMbuGv/AM3yeYeCYjzJ6j6SZN6Xb96O1sW5IeH7nhjIXD1uu9BUWyvikqVkpqqJY5G6zPVNWrv3oqKTPLqKqMNTTVGk8fzcq7c4qxjM+vXsPXFdMxTpMTrHkxyvDcvTBt9xngHDlNYbPW3iohuSySRUULpXMbzTk1VETcmpaZtaru2qYojXjSLuaY/CYDH368XdpoiaNImqYjj1jnQi7BGY3cNf/m+TzEX8ExHmT1OiPpJk3pdv3o7TsEZjdw1/+b5PMPBMR5k9R9JMm9Lt+9HadgjMbuGv/wA3yeYeCYjzJ6j6SZN6Xb96O07BGY3cNf8A5vk8w8ExHmT1H0kyb0u370drzWI8K3nB9e2hvlrq7RWOYkqQVkKxvViqqI7RejcvxFCu3XbnSuNJZfCY3DY+333C3Irp101idY19j2+QeeVwyJxe670lDTXGlqWJDV08zESR0euvaSaasX6F6ULrCYqrCV8KI113o7tNs5Z2kwng9yuaaqeOmY3a+uN0x8eZs1yrzbw5nFhpl3w9XJM1NGz0z9Emp3/svb0eHgvQTnD4i3iaOHblyDnWR43IcTOGxlGnNPJVHPE/9mHnM+uT1YM9MPrDWMSivsDF9ZXSNvbxr+y/9pirxTxoUMXg6MXTpPFPJLK7NbU4zZvEcK3PCtT5VHJPrjmn19aBuA7tduSLndJPiexTVdTSU80CQRSpG2Zr00bKx6oqK1dP9qROzVVl2I1uU7nSmZ2MPtzkkUYG9EU1TE6zGukxviY52ff7yW3dw1X8vZ6Bl/HdPmfFrX9E170uPdntP7yW3dw1X8vZ6A8d0+Z8T9E170uPdntSry7xezH2BrHiNlO6jZc6VlSlO920rEcmuir0mfs3O/W6bmmmrSua4Ccsx17BTVwpt1TGu7XRgTN3luUWU2YV2wrLhSpuUlArEWpZWNYj9pjX+xVq6ey0MRic0pw92bU0a6etszIu55dzvL7ePpxMUxXrxcGZ00mY36+p7bk68pKm5QX3c9b2Oay/cvmtedqEl5zb2uGiJpps/SXODxsYvhaU6aI9tVsnXsx3nh3oud813Rpppp6551/yhM/IMgsP2q6VFnlvLK6pWlSKKdIlYqMV2uqouvAqYzFxhKYqmNdVrsts1XtNiLlii7FHAjXWY1149OeGCv7yW3dw1X8vZ6BivHdPmfFsn9E170uPdntWd39UVtt0tVbRpgmrjWogfEj1r2Ls7TVTX2HfPNWc01UzHA+KtY7ld6zdoueFxPBmJ8meSelCNrla5HJxRdSLOh9NY0ZSx5ynMxcwqFKCvxBLR2xGJH6xtyet43NRNNHK3tneNVL+7jsRejg1VaR6kNy3Y/Jsrr79asxVXv4VX1p9mvFHshi32yeEsEync3S4a/Nu0/ykP1ENl0eTHQ/P/GfeLn4p+aG3qk/DAfhq/wD4iOZ3/wCP2/k333Jt+M/2f5IREXdDJ9+p4Y8pa7A96wlLK1tdbqtayKNV3vhkREVU8Dmrr7pCXZNeibdVrljjcyd1PLa7eOtZjTH1a6eDM8009sT8GcOUVlpNmzlFfcP0uylwextRSK5dEWaNUc1FXo10VvjMrjbE4ixVbjfyNd7K5vTkmbWcZc8iOKroninq3tT93tFdYLnU265Uk1DX0z1jmp52K17HJxRUU19VTVRM01RpLtexftYq1TesVRVTVxxMccStDyuGVOTfk9c83MybVT09LItmo6iOouNZsrzccbXI5W68Np2miJ3+8ZDBYarEXYiI4o3oXtZn1jI8tuV11frKomKY5ZmeLXojfMtsqIiJ1IhsBxQ1X8sDHtNmBnreqiilbPQ29rLdFIi6tfzaLtqi9W2riBZlei9iapjdHE7L2Fy2vLMjtUXY0qr1rmOnd8NGFjGNgAAABkfITJi45249pbLTNfFbYlSa41iJughRd+/9p3BE6/AXuEw1WKuRRG7lRLabP7Oz2AqxNfHXPFRHPV2RvlthslkosOWejtVvhbT0NHC2CCFqbmMamiIbAppiimKad0OKMRiLuKvV37061VTMzPrlrm5b2aUOPczkslrYx1rsCOgdNExPw1Qv/MXVOKN0RqeBeshmaX4vXuBTup+bqvud5NXluWeFYifr3uPSeSnk69/UjlzT/wBh3+VTDaS2vwo5zmn/ALDv8qjSThRznNP/AGHf5VGknCjncOY5vsmqnhQ+PsTE7nAfQAAAAVaT8bh923yn2N6nc8iehuVt35Opfem+RDZtO6H5+3ftKumVyelIAAAAAABrw5ff6a6T4Ih+vIQvOPvEdDqzuX/sSr+pV8qUazBtvgE/PU4PzBxZ8Js+yQl2S/Z19Lmbur/f8N+Cf7kvyRNGgHzL5frdhu2y191rqe3UUSavnqZUjY1PCp4qrpojhVTpC4w+FvYu5FnD0TVVO6IjWUUM5eX3ZbI2e3YBpkvVw0Vv3UqWq2mjXrY3c6T6E8JgMTm9FP1bEazz8jdWQdzLE4iab+b1d7p82PKnpndHxnoQixlje+5gXya8Yhuc90uEq75Z3ao1P2WpwaidSbiLXbtd6rh3J1l0RgMuwuV2Iw2DtxRRHJHznnn1y+GUmRAAGWeSh+sRgf8AnXfZPMhl/wB6o6UI22/d7F/h/OG2I2A4rAAADHudmblsyXwJXYhr1SaZv4KkpEXR1ROqdqxO90qvQiKWmJxFOGtzcq9iSbPZHf2gx9GDs8Ub6p5qeWez1tUuO8dXnMfFNdiC/Vbqu41b9pzl9ixvQxqdDUTciEAu3a79c11zxy7Ty3LcNlOFowmEp4NFPx9c88zyvgFFlAAiaqiJvVdyIgGQ8I8nvMfHELJrPhC5TU7/AGNRNFzEa99HPVEXxF5bweIucdFEotjtqMly6ZpxGJpiY5InWeqNXvabkL5t1EaOdaaCDX2slwj1+hVLuMqxU8kdaM190fZ6mdIu1T0Uy+ZeeRlm5Z4lkXDCVrU3r6yq4pV+La1X4jxVlmKp/h1Xljb/AGexE6eEcH8VNUfkxPiLCl6wjWrSXy01toqU/wC6rYHRKvg1Tf4jH1267c6Vxom2FxuFx1HfMLcprp54mJ+T5RTXoAAl1yKOUpNhy60uAMSVSyWerfsWypmd+KyrwiVV9o5eHUvhJFleNmiqLFyeKd3qaM7oeyVOLs1Zvgqf1lPlxH8Uc/THLzx0NgJLnM4AApVH4vL7lfIfJ3PVPlQ0qXb8rV3v8n1lNZVeVL9ArH2VHRHyWh5VwABOD1Nn8Wx57uk8kpKck3V+xzv3WvKwfRX/AIptknc+AAAAAAAAAABri9UJ/Tfb/gaH7SUhecfeI6I/N1X3L/2JX/Uq+VKMJg24HqstMzb/AJUYop75h+sdTVMa6SRLviqGdLJG9KL9HFC4sX68PXw7csLm+T4TO8LVhMZTrTO6eWJ54nklskwFyqsGYtytqcY1tdHaEtzEbcaGR2ssEqpuY1OL9pfY6cfEpNbOPs3LM3ZnTTfDkvM9i8zwOaU5bao4fD8iqN0xzzzacvMgFyhc+LlntjD7pVELaK1UaOit9GiJtRxquqq93S52iKvQnBCI4zF1Yu5wp4ojc6b2X2bs7N4PvNE8Kurjqnnn1RzRyfFn7DvqeMN+sFsuK43lhWspYqjm/uci7O2xHaa85v01MvRk0V0xVw9/qayxXdTqw2IuWPBNeDMxrwuadPNfR/u2Ye7yT5tT/wCw9+JY8/4Lb9LVXoce/wD/ABSzy5wf94GBLHhtKla1LXSMpfXGxsc5spprpqunxkhs2+826beuujSOa47xnjr2N4PB75VM6b9NUfs4uRDHmzmJdsVPxY+2rXrGvrVtCkmxssaz2W2mvsdeBh8TlcYi7N3h6a+ps7Ie6JVkeXW8BGG4fA14+FprrMzu0nne45N/JtZyfVvuzfnXv7qc17KmSHm9ja/iXXXa+gusFgvA+F9bXVHtrNrJ2o7zrZ733vXl11109Ucz6HKLyDbn9h+1Wt95dZUoapannW0/Oq/Vit002k04lTG4TwumKddNFpsptNOzOIuX4td84dOmmumnHrzSwL/dtRd3knzan/2GI8Sx5/wbM/S1V6HHv/8AxY3z+5HEWSOXr8TMxQ+7K2qip/Wy0aRa7arv2tteGnUWWMy2MLa75wtfYlezO3tW0OYRgZw/A4pnXha7vVpCM5g23gDs32aeEPk7m6TDX5t2n+Uh+ohsujyY6H5/4z7xc/FPzQ29Un4YD8NX/wDERzO//H7fyb77k2/Gf7P8kIiLuhnocBY7veW+KaK/4fq3UlypndqqJq2Rq8WOb7Zq8FQrWbtdiuK6J42LzPLcLm2FrwmMp4VFXw9cTyTDafkjmRfszMIw3K/YSrcLVatauzUKnNz6+2jRV20TvORPCpPcLfrv0cKujgy4x2iynCZRi5sYTE03qfVvj1TydU9T7OM8pMG5hoi4jw3b7tIiaNmnhTnUTqR6aO+kqXcPavfaUxKwy/O8yyriwV+qiOaJ4urc8bR8kfKOknSdmCqNzkXVGyyyvb/lV6oW8ZdhYnXgM/XtztFcp4M4ufZFMfGIZPsWHLZhi3x0Nnt9Na6KP2NPSxNjYniRC+ooptxwaI0hD8Tir+MuTdxFc11TyzMzPxRV5Y/KAxvgyhnw/ZsOV1ittWiwvxHNo5JWrxbCrVVGKqdLlR3UicTAZljL1qO90UzETy9jc+wey+V5jXGMxN+m5XTx97jk9dWumvs4vXKAaqqqqquqr0qRF02AAAHtspsoMRZy4ois1gpVeiKi1NZIipDSs6XPd5E4r0F1h8NcxNfAoj/hHc7z3B5BhZxOLq6I5ap5o7d0NoWTOTtkyVwdBY7QzblXSSrrHtRJKmXTe53kROhCd4bC0YajgUe31uOc/wA+xW0GMnFYmdI3U08lMc0fnPKyGXaOPnrZLeqqq0FKqquqqsLd/wBB54NPMr+EXo4ornrlz9xLf+76X/yG+Y+cGnmPCL3nz1yfcS3/ALvpf/Ib5hwaeY8IvefPXJ9xLf8Au+l/8hvmHBp5jwi9589coZeqNUNPRWfA6wQRQK6oqtebYjde1j6iN51ERTRp62+u5TcruXsXw6pnip39MoQEWdFAAAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADXhy+/010nwRD9eQhecfeI6HVncv/YlX9Sr5Uo1mDbfAJ+epwfmDiz4TZ9khLsl+zr6XM3dX+/4b8E/3JUYkvsWG8PXO7TRulgoKaSqeyPTac1jVcqJr07jP11RRTNc8jSuEsVYvEW8PROk1zER7Z0QYx56olf7nHJBhPD1NZ43bm1de/1xKnfRqaNRfDqRW9nNdXFap06XR+W9yvCWZivML01zzU/Vjr45+SNGOMy8U5kV61eJb5WXeXXVrZ5PwbPcsTtW+JDB3b9y/OtyrVt3LsowGU2+94KzFEeqOOemd8vMlBlwAAAAZZ5KH6xGB/5132TzIZf96o6UI22/d7F/h/OG2I2A4rAAADWhy4805cc5tzWGnmV1ow6i0rGIvauqF3yu8KLo3/CQnNcRN2/wI3U/Plda9zrJacuymMXXH6y9x/7f4Y/P2o5mFbWAPTZc5c3vNPFdJYLBSrU1k66ucu6OFieykevQ1P8ATiV7FmvEVxRRHGw+bZrhclwtWMxdWlMdczyRHrlshyT5JuD8oqKGplpIr9iJGor7nVxo7Yd080xdzE7/AB75NcJl9rDRrMa1c/Y5O2i22zLPa5opqm3Z5KYnf+KeX5epnNE0TROBlGvXIAD4eKMI2bGVrkt19tdNdaGRNHQ1USPTwprwXvpvKdy3Rdjg1xrC9weOxOX3YvYS5NFUcsTogjymuRjLgGjqsUYJSassUWslXbXqr5aVvS5i8XsTp13p304RPHZZ3mJu2eOObmdJbIbfxmddOAzTSm7PFTVuir1TzT8J9SJxH27ADtHI+KRskblY9qo5rmroqKnBUG58mIqjSdza/wAmTNJ2beUNnu9S9H3SBFoq5elZo9EVy+6TZd4yf4G/4RYiqd+6XFG1+TRkmb3cPRH1J+tT0TyeydY9jLRkUMAKVR+Ly+5XyHydz1T5UNKl2/K1d7/J9ZTWVXlS/QKx9lR0R8loeVcAAffwtj/EuCPXCYev1wsqVGysyUNQ6LnNNdNrRd+mq/GVrd65a8iqY6GMxmWYHMeD4ZZpucHdwoidOjV97s+Zk93eIPnCTzlXwvEfzJ62O+jOSeh2/djsOz5mT3d4g+cJPOPC8R/MnrPozknodv3Y7Hp8tcc5vZpY0tuG7PjbEL6qskRHSLXyq2GNPZyO38Gpv+gr2LuKxFyLdFc8frYbN8t2dybBXMbicJb4NMebHHPJEcW+WzWibT4CwbH90blNUUtqpNqouFdKr5HoxurpHuXiq6KpOI4Nm39aeKI3y5BuTXmeMnvNuIquVcVNMaRGs8URDzGQeYE2aWXVPiWVqsbXVlWsMa+0ibO9sbfE1EKGEvTetd8nlmfmzG02V05NmM4Gn+CmjX1zNMTM9b5+dubDMpbtgWsqpUjs9xujrfXKvBrHxrsv/wALkavg1POKxHg9VEzumdJXWz2STndrGW7ca3KKOFT0xPHHtjX26PQ5rYTuWOMA3K3WK9VVju8kfOUVfRTujVsib2oqtXe13Be8uvQVsRbqu2ppoq0nkliclxtjLsfbvYq1Fy3E6VU1RrxTv38sb4axr5nBmthu8VtqueMsR0dwo5XQzwSV8qOY9F0VOJBq8TiaKppqrnWPW7Bw2RbP4uzRiLGFt1UVRrE8GOOJ9iy7PmZPd3iD5wk8548LxH8yetdfRnJPQ7fux2HZ8zJ7u8QfOEnnHheI/mT1n0ZyT0O37sdjzGJcWXrGVwbXX661l4rGxpEk9bM6V6MRVVG6r0b1+MoV3K7s8KudZZbCYHC4C33rCW4op110pjSNefifJKa+APf5YZHYvzfoL1PhejZWstiRrPE+ZI1kV2uy1uu5XaIq6KqF5Ywt3ExVNuNdEXzjaLLciuWqMfXwe+a6Tprpppv044h5bFGEL5guvkoL9aay0VbdU5qrhdGq+DXcqd9C3uW67U8GuNJZrB4/C5hbi7hLkV088Tq3BZffmDhr4MpvsmmxrP2dPRDhXNPv9/8AHV/dLD2Z/LOwdlTjW44YulrvFRXUOxzklLFGsa7TEcmiq9F4OToMdfzO1h65t1ROsJzk+wGZZ1gqMdYuURTXrpEzOvFOnJE8zNuHL1HiPD9tusMUkEVdTR1LI5URHta9qORHaaproplaauHTFUcrXmKw9WExFzD1TEzRMxrG7inTiYKzA5b2C8ucZXbDVwtV6qK22y8zLJTQxrG52iLuVXovT1GIvZpZs3Jt1ROsNkZZ3PMzzXB28bZuURTXGsRMzr8Il7bI/lBWHPmC7zWOhuFIy2ujZKtcxjdpXo5U2dly/sqXWFxlGLiZoiY050e2i2XxezVVqnFV01TXrpwdeTTfrEc6vnZnzYsibTbrhfKStq4a+d0ETKFjXORUbtKq7Tk3H3F4qjCUxVXE8fMpbPbN4vaW7cs4WqmmaI1nha8+nJErTI7lFYfz6W7pYqK4Uf3M5vnfXzGN2tva02dly/sqecJjbeL14MTGnOuNotlcZs13rwqumrh66cHXk036xHO8Ty+v1fpvhOl8ri1zf7t7YSHuaft+n8FX5NahCXW4B2b7NPCHydzdJhr827T/ACkP1ENl0eTHQ/P/ABn3i5+Kfmht6pPwwH4av/4iOZ3/AOP2/k333Jt+M/2f5IREXdDJsciDk3UdbQw5iYkpW1O09fuRSTN1YiNXRZ3IvFdUVG+BV6iU5XgomO/3I6O1zz3RNrLluucmwVWn8yY38f8AD29XOmRifFNswXYa283irjobZRx85NPKuiNT+qrwRE4qSO5cptUzXXOkQ0Lg8Hfx9+jDYanhV1TpEQhZmD6opcH18sGC8PU0VE1VRlbdVc6SROtI2qiN8aqRm9nNWulmni9boHK+5VZi3FeZ35mrzaOKI9s669UPEUvqgOZ0NQj5YbHURou+NaNzUXxo/UtIzfExPHp1JHX3Mcjqp0pmuJ5+FHYkDkVy4bJmXdqaw4koEw5ealyR08zJdulnevBuq72KvQi6ovWZjCZrRfqii5Gk/BrDaTudYrKLVWLwVffbdPHMaaVRHPzTHR1JGYkw7bcW2WqtV3o4bhbqpixzU8zdprkX+vf6DNV0U3KZprjWJapwuKv4K9TiMNXNNdPHEw1ZcpLJKbI7MOa1xufLZqxq1NtqH8ViVdFY5f2mruXr3L0kCxuFnC3eDG6dzszZLaGnaLL4vzxXKeKuPXzx6p3/AAYpMemoiK5yIiKqquiInFQ+TOnHKR+RXIrxPmW+numI2y4Zw47R34ZmlVUN/gYvsUX9p3iRTNYTLLl/Sq59Wn4tT7Sd0DA5RFVjBaXb3q8mnpnl6I64bA8v8u7Blfh6Gy4dt0dBQx712U1fK7pe93Fzl61JfZs0WKeBbjSHMWZ5rjM4xE4nG1zVVPVHqiOSGNOUhymbRkdZnUlO+O44rqGa0tAjtUj14SS6cG9ScV+kssbjqMLTpHHVzdqWbJ7IYnaK9FyvWmxTP1quf1U88/JAyblSZrzzyS/fxcmK9yu2Y3Na1NV4ImzuQic4/FT/ABy6Vp2L2fppinwSni6e10/tRZr93d2/zt9E+eH4nz5e/ods/wCh0dU9p/aizX7u7t/nb6I8PxPnyfQ7Z/0Ojqntehy9zqzmzGxpaMN2zG92fV3CdsSOR7VSNvFz17Xg1uq+IrWcVi79yLdNc6yxeabP7NZTgruNv4Sjg0Rry8c8kb+WeJs7ttK+hoKenfPJVPhjax08q6vkVE0Vzu+vEndMaREOPrtcXLlVcRpEzM6Ruj1Q15cv3MNuJs0qLDdNLt0tgp9mVGru9cSaOd8TUYnxkMze/wB8vRbj+H5upO5llU4PK6sbXH1r08X4aeKOudUXzBNxgAAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADXhy+/010nwRD9eQhecfeI6HVncv8A2JV/Uq+VKNZg23wCfnqcH5g4s+E2fZIS7Jfs6+lzN3V/v+G/BP8Ackjmz+i7F/wRV/YvMziPsa+iWpsk/amG/HR/dDTg32CeA1w7ydgAFWkpJ7hVQ01LDJU1MzkZHDE1XPe5eCIib1U+xE1TpCncuUWqJruTpEb5ndDIWaeRl9yesOGKzESsp7he2TS/c9N7qZjNjRHrw2l296Jw0LzEYWvDU0zc31ciL5LtHhc9xGIt4PjotaRwvOmdd3qjTfyscFklgBlnkofrEYH/AJ132TzIZf8AeqOlCNtv3exf4fzhtiNgOKwAB8+93Nlns9fcJE7Skp5J3eBrVcvkPNVXBpmrmV8PanEXqLMb6piOudGmC8XSa+XeuuVQ5Xz1k8lRI5eKuc5XL5TWdVU11TVPK78w9mnD2aLNG6mIiPZGizPK4F3IBs05GWUFPlvlXRXaogRL5f4m1lTK5O2ZEu+KNOpEaqOXvu7xOcsw0WLMVTvq43IPdAz2vNs1rw9E/qrM8GI55/inr4uiEhzLtZAAAAAoyxMnjcx7UexyK1zXJqiovFFQ+kTNM6xvasOVllNBlJm5W0tvi5qzXJnr+iYibo2uVUfGnea5F07yoQHMMPGHvzFO6eOHZmxOeVZ5lNFy9Otyj6tXr03T7Y+OrDJjE/AJp+pwYlclwxjh5ztY3Rw18bV6FRVY7ys+Ik+S3eOu37XPvdXwdM28LjY36zTPzj806CUudgClUfi8vuV8h8nc9U+VDSpdvytXe/yfWU1lV5Uv0CsfZUdEfJaHlXAAAABeWez1uILrS2220stbX1UiRQ08Ldp73Ku5EQ9U0zXVFNMazK3v37WFtVX71UU00xrMzuiGznkt8nSlyPwt64rmx1OK7ixFrahu9IW8UhYvUnSvSveRCdYDBRhbetXlTv7HH+2W1dzaPFcC1xWKPJjn/wBU+ueTmhifl7Z5tt1sjy6s8+tXV7M91fG7/lxcWRL33Lo5U6kTrMdm2L4MeD0b53pt3NNnJvXZznE0/Vp4qPXPLV7N0evoZW5En6uOGvfKr7d5f5Z92p9vzQ3uh/vFf6Kf7YY99Ud/Rzhb4Vd9k4s85+yo6fySfuU/tHEfg/yh6DkU56tzIwQ3DN1qEdiKxxtjRZF7appk3Mf31buaviXpK2V4vv8Ab73VP1qfkxXdC2bnKcd4dh6f1N2dfw1cse3fHtWfK/5LyZnUD8WYYp2piqjj/wCIpmpp6/iROHvjU4dabuo+ZlgO/wAd9tx9aPir7C7Y+J7kZfjqv1FU8U+ZM/4zy82/na7ZoZKaaSGaN0UsblY+N6aOa5NyoqLwUhsxpxS6ppqiuIqpnWJdD49AAAu5ANovI2y3XLzJK1PqI+buN5VblUIqaORHonNtXwMRvxqTvLbHecPGu+eNxxt7m3jTO7kUTrRa+pHs3/HVjT1RLGsFuwPY8MMbG6tuVStS9VaiuZDGnQvRq5yf5VLLObsU26bfLKWdyvL67uOvY6deDRGnTNXZEfFJ7L78wcNfBlN9k0zln7OnohqLNPv9/wDHV/dLXZym8Nz4x5XlxsVM1Xz3GsoqZqJ/FFGir4k1UhuOom5jpojlmHU2yGLowGyVGKr3UU1z1TU2VW+iitlBT0sWjYaeJsTE6mtTRPoQm8RFMREOSrlyq9cquVb6pmetFvlo8m1uPLLLjbDlKi4ioItauCJu+tganFETi9qcOtN3QhgczwXfqe/W4+tG/wBcNx7AbWTlt6MrxtX6mufqzP8ADVP5T8J4+d29Tww4+3ZUXm6yN2fulc3IxVTiyNiN+srhk1HBs1Vc8vndSxcXc1tYeP4KPjVMz8tGUOUnkfT545fS25j0gvVErqm2zuXRqS6aKx38Lk3d7cvQX+OwsYq1weWNyHbJbR17OZhF+Y1t1cVcernj1xvYF9TvtVXZLrmNb6+nfS1tLLTQzQSJo5j2rKiovjMTk1M01XKat8afm2V3U71vEWsDetVa01RVMTHLE8Fkjl9fq/TfCdL5XF5m/wB29sIp3NP2/T+Cr8mtQhLrcA7N9mnhD5O5ukw1+bdp/lIfqIbLo8mOh+f+M+8XPxT80NvVJ+GA/DV//ERzO/8Ax+38m++5Nvxn+z/JCSONZpGRpxe5Gp41IvvdCVTwYmW5vBNjp8MYQslqpWJHBRUUNOxqJwRrEQ2VaoiiimmOSHAuYYivF4y7iLk6zVVM9cokeqN4vq6a24SwzDI5lJVvmrahqLukVmy1iL3kVzl+Ij2c3JiKLcbp428O5TgbddzE46qNaqdKY9Wusz8oQZIs6MAOWPdG9r2OVj2qjmuauioqcFQPkxExpLbxkJiupxzk5hG+VjlfWVVAznnrxe9urHO8atVfGbFwlybtiiud8w4Z2lwVGXZxicLa8mmqdOieOI9mrCPqiOHoK3Kmy3dWp66oLo2Jr9N+xIx20nxtaviMVnNETZpq5pbE7lmKrt5rdw8eTXRr7aZjT5y16EPdRpxcg2wZa4gtM9R9yYp8eW521PJXOSVUjVe1khau5qdC7tUXp3oSrKaMPXTrp9eOf8nOfdLxWd4W9FHfJjC17uDxcfLFU75545Jjk4k0Z6iOlhfLK9scTEVznvXRGonFVXoQkszpxy0DTTNUxTTGsyiPyheXLbsNMqrFgCSK6XbfHLd1Tap6denm/wDxHd/2Kd8j2MzWmjWixxzz8jd+y/c4vYuacXm8TRb3xR/FPTzR8eh5nky8lesx7cW5iZmpNcEq3euKa31yq59Sq70mm19r1N6enduWhgcBN2e/4jj15Of1yy+1+2drLbfibI9KeDxTVTup/wBNPr555OlYcpnkUyWRtXijL6mfPQJrLVWNmrnwpxV0PS5v8PFOjXgnjHZXwdbliOLm7F1sh3QYxE04DOKtKt1NfJPqq5p9e6eVDpUVqqioqKm5UXoI23zv4xrXPcjWornOXRGomqqvUCZiI1lsY5GHJzfllYXYqxBTbGJbpEiRwSJ21HTrv2V6nu3KvUmidZM8swXg9PfbkfWn4Q5T2/2rjOL/AIBg6tbNueOfOq5+iOTr5mas3My6DKbL+74lr3NVKWNUghVdFmmXcxieFfo1UyuIv04e1Nyrka+yPKL2d5hbwVn+KeOeaOWfZHxai7/fKzE18r7vcJVnrq6d9RPIvtnuVVXymuq65rqmqrfLuTDYa3g7FGHsxpTRERHRCwPC6AAAABVpPxuH3bfKfY3qdzyJ6G5W3fk6l96b5ENm07ofn7d+0q6ZXJ6UgAAAAAAGvDl9/prpPgiH68hC84+8R0OrO5f+xKv6lXypRrMG2+AT89Tg/MHFnwmz7JCXZL9nX0uZu6v9/wAN+Cf7kkc2f0XYv+CKv7F5mcR9jX0S1Nkn7Uw346P7oacG+wTwGuHeTsBkrKTk9Y1zkq2JZLY6G27Wkl1rGrHTMTp0d7Ze83UvsPg72Jn6kcXPyIjnm1OWZBRPhVzWvkpjjqn2cnTOjYDkVyWMK5Jwx1jI0vWJHN0kutSxNWdaRN4MTv8AFesl+EwFrDRrvq5+xzDtJtnmG0NU25nvdnkojl/FPL8vUwR6pP8AlDAfvVZ5YjEZ3vt+38myu5N5GM6aP8kKyMuggDLPJQ/WIwP/ADrvsnmQy/71R0oRtt+72L/D+cNsRsBxWAAPG5wvfHlRjF0fs0s9Wqae9OLXE/Y19Es3kUROa4WJ3d8o/uhp1b7FDXLvByBUpo0mqYY3exe9rV8CqfY45eK5mmmZhuns1LHQ2mipYkRIoYGRsROCNRqInkNm0xpTGj8/b9c3L1ddW+Zmfi+gelEAAAAACEXqktDEkeBK1ETn1dVwqvTs6Rr5SL51EfUnpdCdya5VrjLXJ9Sf7oQhIu6HAJR+p4Pe3Oa7NRV2HWaTa/8ANj0M9k3289DTfdSiJye3M/zI+VTYwTJywAUqj8Xl9yvkPk7nqnyoaVLt+Vq73+T6ymsqvKl+gVj7Kjoj5LQ8q4AAAfcwZgm95gX+nsuH7dNcrjOujYok3NTpc5eDWp0qu4q2rVd6qKKI1ljsfmGFyvD1YnGVxRRHLPyjnn1NkHJr5LVpyRoG3K4LFdcXTs0lrNnVlMi8Y4teHfdxXvJuJrgsBThY4VXHV/3c5N2t2yxG0NzvFnWjDxPFHLV66vyjdHS9LyiM9bbkbgmWvkc2e+VSOit1Frvkk09m5P2G8VXwJ0lbGYunC2+Fyzuhidltm720mNizTxWqeOurmjmj1zydbVbfr5X4nvVdd7nUvq7hWyunnnkXVXuVdVUgVddVyqaqp45dn4bDWsHZow9ing0UxpEeqGzTkSfq44a98qvt3k3yz7tT7fm5F7of7xX+in+2GPfVHf0c4W+FXfZOLPOfsqOn8kn7lP7RxH4P8oQewBjq7Za4tt+IrJOsFfRybaJ7WRvtmOTpa5NUVCL2btViuLlG+HRGZ5bh83wleDxUa01R1TyTHrhtdyezZs+cuCqS/wBoeiOcmxVUjl1fTTJ7Jjv6L0popsDDYijE24ro/wDpxVn+SYnIMbVg8RHrpnkqjkmPz5pYa5T/ACQKPM9KjEuFGQ27FaNV01PuZDX6df7Mn8XBenrMZj8ui/rctcVXzT/Y7bq5k/BwOYTNVjknfNHbT6uTk5mvW+WO4Yau1TbLrRTW+4Uz1ZNTVDFa9ip1opD66KqKppqjSYdRYfE2cXapv4euKqKuOJjdKxPC5APf5D5byZr5r2DDyMV1LLOk1Y5Pa07O2kXxomnhVC8wljwi9Tb5OXoRjaXNoyXKr2M1+tEaU/inijt9jbpT08dLCyGFqRwxtRrGImiNRE0RENhxGnFDhyqqa6pqqnWZaruVvmMmZGdl9qIJedt1tX7m0qouqbMeqOcnherl+IgWY3u/4iqY3RxOzdiMq8U5LZoqjSuv69XTVu6o0bNsvvzBw18GU32TScWfs6eiHImaff7/AOOr+6WBMIZTyYg5Y2NcbVsKpb7K2CGkVybn1L6diKqe5Yq+NyGIt4fhY6u9O6Pno2Tj87jC7H4TLLU/Xu8KavVTFc/OflLIXKjzFZlrkpiGvZIkdfVwrQUaa71llRW6p4G7TvEXmPvd4w9VXLPFHtRfY7KpzfOrFmY1ppnhVdFPH8Z0j2sIZf8AK5ZQcmqCSSRK7HVK9tko6Ny7T6mVU0hlVOKps6a9at06TGWcx4OE131xxR+TYWabDTc2lmIjg4WqO+VTyUx/FHTru9U+pJXKLBa4By4sVjlVr6uCBH1ciIibdQ9VfKu7+NzjNYe33i1TRO/82pc8zCMzzG9iqfJmfq+qmOKn4RDGuBOURDiXlLYvwE+di0NPExlvd+1PEn4dqL066r/5allaxkV4uuxycnTG9Lcy2WqwmzWFzaI+tMzw/wANXkT/AN53o8vrxhi653ZhpYYk9f08NFDdqiNU5uWoTndERP2mt0Ry9fgK9mq1OIucDfxa9PGxWaWMdYyTA+Fz9Wqa5oid8U/V+Ezxx/y8Zy+v1fpvhOl8ri1zf7t7YSDuaft+n8FX5NahCXW4B2b7NPCHydzdJhr827T/ACkP1ENl0eTHQ/P/ABn3i5+Kfmht6pPwwH4av/4iOZ3/AOP2/k333Jt+M/2f5IRtesbkc32TV1Qi7oWY1jSW5HLTE0GMcAYdvdM9HxVtDDNu6FVibSeJdU8RsmxXF21TXHLDgrNsJXgMwv4WuOOiqY+PF8EeuXrlJcMbYMtmJbRTPq6qwvk9cwRN2nrTv0VXInTsq1FXvKq9Bh82w1V23FyiOOn5NodzTPLOXY25gcRVwab2mkzu4UcntietryIc6mAPp4aw1c8Y36istnpJK65VkiRQwxpqqqvSvUicVXoQqW6KrtUUURrMrPGYyxgLFeJxNXBopjWZlt6yswW3LrLvD2G2vST7m0ccD3pwc/TV6p4XKqmxbFvvNqm3zQ4YznMJzXML+NmNOHVM+zk+COPqimKYaLL7D2Hkc1amvuHrpWIu9I4mKmv+Z6fEYXObkRapo55bX7leCquZhfxmn1aKdPbVPZCABEHTj0eXmPrtlji+3Yiss6w11G/a2VXtZWL7KNydLXJuUr2b1ViuLlG+GJzXLMPnGDrwWKjWmrrieSY9cPfZzcqXGuczpKWrq0tFiVd1qoHK2Nyf/sdxf493eLvE4+9ieKZ0jmhGcg2NyzINLlunh3fPq3+yN0fP1sPGNTxI/k3csC75UTU1ixI+a84SVUY3VdqehTrjVfZM/gXxacFzWCzKvD6UXOOn5NTbWbCYfOqasZgoii/8Kunmn19bYnhrEtsxhZaW7WethuNuqmJJDUQO1a5P6L1ou9CZ0V03KYqonWJcr4rCX8Deqw+JommunimJRX5VvI9jxYyqxfgajbFfN8lbaYURravrfGnBJOtODvDxwGYZbFzW7Zjj5Y5259idu5wU05dmtWtrdTXP8Pqn/T6+To3VeS5yNo8Fy0mK8cQx1N9bpJR2xdHx0a8Ue/odJ3uDe+vD7gMt71pdvb+SOZ42y29nMIqy/K5mLW6qrdNXqjmp+M9CV9fX09ro56uqnZT0sDFklmlcjWsaiaqqqvBEQkMzFMay0nbt13q4t241qniiI3zLWTysOUM/OvFraG1yPZhO1Pc2kau71zJwdM5O/wAGp0J4VILmGM8Kr4NPkx/3V1/sTstGz+E77fj9fc8r/THJTH5+voYHMS2UAAAAABVpPxuH3bfKfY3qdzyJ6G5W3fk6l96b5ENm07ofn7d+0q6ZXJ6UgAAAAAAGvDl9/prpPgiH68hC84+8R0OrO5f+xKv6lXypRrMG2+AT89Tg/MHFnwmz7JCXZL9nX0uZu6v9/wAN+Cf7kk8zaSaty5xRTU0T6iea11MccUbVc57liciIiJxVVM3fiZtVRHNLUWUV028xw9dc6RFdMzM8kaw145f8h/MvGKxS19DBheidoqy3N/4TTvRN1dr4dCHWcrxF3jqjgx63U+Z90TJMBrTZrm9VzU7veni6tUpsr+QvgPA7oay9JLi25M0XWtRG07V70Sbl/wASqZ6xlVi1x1/Wn4dTTOcd0bNsxibeG0s0T5vle92RCRNJSQ0NNFBTwsp4I27LIomo1rU6kRNyIZqIiI0hqquuq5VNdc6zPLO9dh8QY9Un/KGA/eqzyxEVzvfb9v5Oie5N5GM6aP8AJCsjLoIAyzyUP1iMD/zrvsnmQy/71R0oRtt+72L/AA/nDbEbAcVgAD42LbV93cL3i2aa+u6KanRPdMVv9Sldp4dFVPPC8wV7wbFWr3m1RPVMS0wT076SeSCRFbJE5WORehUXRUNazGk6O/KaorpiundPG6Hx7co5WKjm7nIuqeEPkxrGktyGWmIosX5fYbvUD0fFW0EM2qdasTaTxLqniNk2K4uWqa45YcFZvhKsDmF/DVxx01VR8eL4PVFdigAAAAAICeqNYmiqsYYTsUb0c+io5aqVqL7FZHIjdfFGvxkRzmqOHRRzQ6V7lOEqowmJxcxxVVRTH+2NZ+aH5HW9gCYHqcVjfPjPFt4Vv4KmoIqVHL+0+Ta8kZIsmp/WV180NFd1fExTg8NhuWqqZ6o0/NPslzmkApVH4vL7lfIfJ3PVPlQ0qXb8rV3v8n1lNZVeVL9ArH2VHRHyWh5VwABnXITklYlzqigu00rLJhZz1RbhJo+SbRdHJEzpXVFTVdE8JlsJl1zFfWnip52t9ptt8Ds/M4emO+X/ADd0RzcKfyjjbCcq8nML5O2NLdhy3NgV6Is9ZKu1PUO63v6fAmiJ0ITHD4a3hqeDbhy3nWfY/Pr/AH7G1680R5MdEfnvWmdGdlgyRwtJdLvOklU9FbR2+Nyc7UydSJ0J1u4J9BTxWKowtHCr38kc642f2exe0WKjD4aNKY8qrkpjt5o5WrjNDM++Zt4uq8QX2fnKiVdmKBirzdPH7WNidCJ9K71IJfv14iublbsjJsnwuR4SnB4SNIjfPLM8sy8mW7ONofIk/Vxw175VfbvJ1ln3an2/Nx33Q/3iv9FP9sMe+qO/o5wt8Ku+ycWec/ZUdP5JP3Kf2jiPwf5Q1/ERdOsjZG53XrI7GEd3trlqKCbSOvt7naMqY9focnFF6PAql7hMVXha+FTu5YRTaPZ7DbRYOcPe4qo46auWmeyeWG0bLjMixZq4Xpb/AGCrSpo5k0c1V0khf0se3ocn+9xPLF+jEURXbnicb5tlOKyXFVYTF06VR1THPE8sPL518nbCud1r2LtT+s7tE3Smu1M1Emj6kX9tv8K+LQt8Vg7WKj60cfOzOz21OYbO3dcPVwrc76J3T2T649urXbnZydMWZH1qLdoW1lmlk5unu1LvhkXoa5OLHaJwXxKpDcVgruFn627ndT7PbV5ftFRph54NyI1mid8euOePXHtYtLBM0+fU98q/uPha6Y4rYdmpurvWlErk3pAxe3cnunpp/gJdk+H4NE3p5d3Q5m7qGc9/xVvKrU/Vt/Wq/FO6PZHzZ05RWZDcqsor/fGSIyt5laaiTpWeTtWaeDVXf4TKY2/4PYqr5eTpa42Vymc6zezhZj6uutX4Y45693takpXukV73uVz3aq5y8VXpU167fiIjSIbmMvvzBw18GU32TTZVn7OnohwRmn3+/wDjq/ul5KzZ24Zqs1b5gCV6W3EFI9ksbJVRG1qOja7Vi9LkRdFau/RN2vRQpxVub1VieKqPiy+I2ex1GVWc3pjh2qtYnT+HSZjj9U8+5Cflv51MzFzAZhy1zpJZLA50avYurZqld0ju+jdNlP8AF1kXzTFd+u97p3U/N0N3O9n5yrL5xt+nS7e0nop5I9u+fY+tyGMjJMXYvbji7Uy/cWzyf8Ekibqiq6FTrRnHw6dSlTKsJ3yvv1UcUbulY90faSnA4TxVh6v1l2Preqntq3dGqaGeOZ1NlHlnecRTPb64hjWKjicv/NqHbo2/HvXvIpJcXfjD2qrk+zpaB2cyevPcztYOndM61TzUxv7OlqfsuMbzh/FUOJKCukp73FO6pbVpvdzjtdp2/jrqvxkApu10V98pnjdr4jAYbFYWcFdoibcxpp6o3JiepxVMlVVZgVFRI6aWV1K98j11c5yrKqqq9KqpI8lmZm5M+r82h+6vTTRTgqKY0iOFEf8Aqydy+v1fpvhOl8ri+zf7t7YRDuaft+n8FX5NahCXW4B2b7NPCHydzdJhr827T/KQ/UQ2XR5MdD8/8Z94ufin5obeqT8MB+Gr/wDiI5nf/j9v5N99ybfjP9n+SERF3QyXHIt5TNHglEwNimqSmtE8qvt1fKujIJHL20b16GuXei8EVV14kiyzHRa/U3J4uSWje6BsfczD/wDlcBTrciPr0xvqiN0x645Y5YT9Y9lREjmq18b01RUXVFRSXb3M0xNM6TxSwlj/AJHOWWP6+WvntEtorpVV0k1pl5lHuXpVmit18Ri72W4e9PCmNJ9TYWWbeZ5lluLVN2K6Y3RXGvx4p+LxVJ6njl5DUI+a6X6piRdeaWojai+NGalrGTWInjmUgr7qWc1U6U27cTz6T2s05b5I4MylgczDNjgop3t2ZKp+sk8idSyO1XTvJohlLGFs4eP1dOjX+bbQ5nndWuOvTVEbo3Ux7I4n2cdY+seW+HKm94gro6Gggaqq569s9ehjG8XOXoRCrdu0WKJrrnSGOy3LcVm2JpwuDomqqfh655o9bVbntnBXZ2Zg1l/qmOp6NE5ihpFXXmIEVdEX+JdVVe+pAMXiasVdmud3I7Q2byK1s9l9OEonWrfVPPVP5Ruj1MeFmlQAAAXlos1wv9ayjtlDU3GreujYKWJ0j18SIp6ppqrnSmNZW9/EWcLRNy/XFNMcszER8U4+RrlHm3l3cnT3VYrNhOqRXT2i4PV0znabnxsb/wAt3DXVU1TinAlWW4fFWZ1q4qZ5Jc57f55s7mtvgYfWu/Turp4o6JmfKjo60zCSNEPiYoxVacF2Wpu97uEFtt0DdZKiofstTvJ1r1Im9SncuU2qZqrnSF3g8HiMfepw+FomuurdENdvKd5Wtbm/JLh/D3PW3CLH9vtdrLXKnBX9TOlG+NepIbjsxqxP1LfFT83VGx+xFrIojGYzSrET1UdHPPPPUjiYVtgAAAAAABVpPxuH3bfKfY3qdzyJ6G5W3fk6l96b5ENm07ofn7d+0q6ZXJ6UgAAAAAAGvDl9/prpPgiH68hC84+8R0OrO5f+xKv6lXypRrMG2+AT89Tg/MHFnwmz7JCXZL9nX0uZu6v9/wAN+Cf7kvyRNGgAAAAgx6pP+UMB+9VnliIrne+37fydE9ybyMZ00f5IVkZdBAGWeSh+sRgf+dd9k8yGX/eqOlCNtv3exf4fzhtiNgOKwAAA1TcrPLWXLXOq+RMiWO23SRblRuRO1Vsiqrmp7l+0nxEBzCxNjEVRyTxw7O2JzanNsltVTP17ccCrpjdPtjSWHTGp6ATh5Bue9Ktu7HV6qWw1UUjpbTJK7RJGuXV8KL1ourkTp1XqJTlOLjTweuejsc590vZq533x1hqdYnir05NN1XRpxSm0SdoAAAAAHnMb40tOXmGa6/XurbR26kjV73uXe5ehrU6XKu5EKV27TZom5XPFC/y/L8RmmJowmFp4VdU/9mfVHK1K5sZiVua2YF5xPWosbq2XWKHXXmYk3MZ4monj1Ne4i9OIuzcnldv5JlVrJcvtYG1x8GOOeeZ45n2y8iWzOgGzXkSZay4AyXpq2siWO436X7oSNcmjmxqiJEi/4U2v8ROMssTZsRM76uPschd0PN6czzmq1bnWizHBjp31fHi9iQxmGsQClUfi8vuV8h8nc9U+VDSpdvytXe/yfWU1lV5Uv0CsfZUdEfJaHlXAAEr+Qlnj96WKZMDXao2bVd5Nuhe93aw1X7PeR6Jp4UTrJBlOK73X3mrdO7p/5aT7pOznh2FjNcPT+stx9b108/8At+WqSfKC5VmHMlqaWgpXR3rFSt/B22J/awL0OmcnsU/h4r3uJm8ZmFvCxwY46ubtal2X2Kxu0FUXq/1djlqnl9VMcvTuhrgzAzDvuZ2JKi+Yhr311bMuia7mRN6GMbwa1OpCF3r1d+vh3J1l1hleVYTJ8NThcHRwaY65nnmeWXnCgywBtD5En6uOGvfKr7d5Oss+7U+35uO+6H+8V/op/thj31R39HOFvhV32Tizzn7Kjp/JJ+5T+0cR+D/KGv4iLp0A9/k3nViHJLEzbpZJucppFRtZbpVXmalnUqdC9Tk3p9BeYbFXMLXwqPbHOjGf7PYPaHDd4xUaVR5NUb6Z7OeOVsryt5QWEc1sIT36gr2UXrKLnLhSVT0bLRoiaqrutvHRybl+gm2HxlrEW+HTOmm/1OR852YzHJcZGEu0TVwp0pmN1XR6/VvQA5UPKDqs8MYqyjfJDhe3Pcygp13c4vBZnJ+07o6k8ZEcfjJxVzi8mN3a6c2O2Xt7O4PW5Gt+vjqnm/0x6o5eeWN8usD12ZGN7Nhq3NVam41DYtrTdGzi9695rUVfEWNm1VeuRbp5UtzXMbWU4K7jb26iNemeSPbPE2/YVw1RYQw5bbJb40ioaCBlPCz+Fqaar314r4TY1uiLdEUU7ocK4zF3cdibmKvTrVXMzPtQT9UEzUS/YztuC6ObapLOz1zVo1dzqh6bkX3LPrqRPOL/AA7kWY3R83SPcwybwbB3Mzux9a7xU/hjtn5IkO9gvgI+3e3NZffmDhr4MpvsmmyrP2dPRDgfNPv9/wDHV/dLWvyx55ablKYnmhkfDMx1M5kkbla5qpAzRUVOCkKzKZjF1THq+TrPYKimvZvD01RrE8L+6WEHOVzlc5Vc5V1VV4qpimxIjTihnjk1cqe65JVzLVcUkumD5pNZaTXV9Mqrvki1+NW8F7ymWwOPqws8Grjp+XQ1ttbsZh9oaJxFn6mIiOKeSr1VflPJ0O/K35QrM6sV09FZpZPvVtaf8PtIrfXEqp20qtXen7KIvRr1n3McZ4VXwaPJh42H2WnZ/CVXcTH6+5v9URujX4z/AMPd5H8jXDGc2V9qxNHie5UNbPzkVTA2GORkcrHKionBdNNF3r0l3hcst4mzFyKpiUb2i2/x+QZpcwNWHpqpjSYnWYmYmNf+EpOT9yeLVkBablTUVxqLtVXGVsk9VOxGbmoqNa1qa6Imq9PSZ7B4OnB0zFM6zLTW1G1OI2ou2671EUU0RMREce/fMyx/6oLeIKLJOmoXvRKitukKRM13qjGuc5fFu+Ms84qiMPFPPKUdzCxXczuq7EcVNFWvt0iGuQhbq4AJuXUCU1B6oVje30VNSx4dsTmQRNiarkm1VGoib+37xnozi9ERHBhpi73Lsru3Krk369ZmZ/h5fYxhnpyi77n59x/u1bqCg+5nO816yR/bbezrrtOX9lCxxeNrxenDiI0THZzZXC7M998Grqq4emvC05NeaI52KDHpsAZdys5U+YGU8EVHbbqlxtMe5tuubVmianUxdUc3wIuneMjh8ffw8aUzrHNKDZzsZk+d1TcvW+Dcn+Knin28k+2GfrH6pHpC1LzglXS9L6Cu0Rf8Lm/1MtRnWvl0dUtZYjuT8f8A+Ni+L/VT+cT+T7MvqkOH2sXm8G3Rz+hHVMaJ8eilbx1b8yWPjuUYzXjxVPVLxOK/VF8RV0MkWHcMUVrc5NEnrZnVDm99GojU+PUtbmdXJ4rdOnxSHBdynB25irGYiqv1UxFMdfHKNOPsz8UZn3X7oYnvNRdJ2682yR2kcSdTGJ2rfEhg71+5fq4VydW3MsyfAZPa7zgbUURy889M75eXKDMgGS8isjqzPa/1tot97t9pq6WFJ+brUerpWa6OViNTfpqmu9OJfYTCzi6pppqiJhENpNo7ezdijEXrNVdNU6fV04p9evOktYvU3aZqtdesayvT20dBRI3/ANTnL5DN0ZLH8dfVDUmJ7rFc8WGwkf7qvyiI+bKeFeQzlZhxWyVVtrL9M3frcalVaq+5Zsp8Zf28qw1G+NelDcb3Rs+xcTFuuLcf6Y4+udZZqw5gyw4OpEprHZqK0QaabFHTtj18Oib/ABmSotUW40oiIa+xePxePr4eLu1Vz65mV7dLxRWKikrLlWQUFJGmr5qmRI2NTvqq6FSuqmiNap0hb2LF3E1xbs0zVVPJEaz8Eas2OXlg/B7JqPCsbsV3RNWpKzWOkYvWr13v/wAKad8wmIza1b4rX1p+DbWSdzTMsdMXMwnvNHNvqn2bo9vUhBmlnPizOK6+vMSXN9RExVWGii7SngT+BnDxrqvfItfxV3E1a3J7HROTbP5fkNrvWCt6TO+qeOqemfy3PEFqkQAAAAAAABVpPxuH3bfKfY3qdzyJ6G5W3fk6l96b5ENm07ofn7d+0q6ZXJ6UgAAAAAAGvDl9/prpPgiH68hC84+8R0OrO5f+xKv6lXypRrMG2+AT89Tg/MHFnwmz7JCXZL9nX0uZu6v9/wAN+Cf7kvyRNGgAAAAgx6pP+UMB+9VnliIrne+37fydE9ybyMZ00f5IVkZdBAGWeSh+sRgf+dd9k8yGX/eqOlCNtv3exf4fzhtiNgOKwAAAwxym8hafPPBDqeBY6fENBtTW6ofuRXadtE5f2XaJ4FRFMbjsJGLt6R5Ubk62Q2lr2cx3Dr47VfFXHymPXHxjiaur9Ybhhi8VdqutHLQXGkkWKanmbsuY5P8AfHpIJXRVbqmmqNJh2PhsTZxlmnEYeqKqKo1iY5VgeF0qU88tLNHNDI+GaNyPZJG5Wua5N6KipwU+xMxOsPFVNNymaao1iUscoOX5e8M0cNsxtQOxDSxojG3KncjKpE/jRe1f4dy9epIMNm9dEcG9Gsc/K0nnvcywuMrm/ldfeqp/hnjp9nLHxhJbDXLJynxLE133zNtUzv8AubnC+FU8eit+kzdGZYWvfVp0tR4zYLaDCTMRh+HHPTMT/wA/B7GHPnLmdiPjxxYVavT6/jT+pcxi8PP8cdbB1bNZ1TOk4S57s9ixunKTyvs8bnVOObOuntYahJXfEzVTxVjcNTvrhcWdk89vzpRhK/bGnz0Yjx76oFgaxQzR4co67EtaiKjHKxaen177ndsqeBpjr2b2aPs44U9Sb5b3Mc1xNUTjaqbVPvVdUcXxQyzhz6xZnZc21F+rEjoYXKtNbKbVtPD39PbO/iXVSN4nF3cVOtc8XM37kOzWX7PWuBhKdap31T5U9keqGOiySsAkPyT+TNV5u4ggv16pnw4OoZUc9z009eyNXXmmdbf2l8XHhmcvwM4mrh1+THxas222ut5Hh5wmGq1xFccX+mJ5Z9fNHtbLYYWU0TIo2oyNiI1rWpojUTgiITfc5HmqapmqqeOVcABSqPxeX3K+Q+TueqfKhpUu35Wrvf5PrKayq8qX6BWPsqOiPktDyrgADvDNJTTRzQyOiljcj2SMXRzXJvRUXoU+xOnHDzVTFcTTVGsS5qKiWqnklnkfNNI5XPkkcrnOVeKqq8VEzMzrL5TTTRTFNMaRCmfHsAATS5OPK9wLlVlFZ8NXqK7OuNI6ZZFpaVr4+3lc5NFV6dCp0EnwWY2cPYi3XrrDn3avYXNc6ze7jcLNHAq4OmtUxPFERzS8ryueUthDO7CFltmHY7iypo65aiX17TpG3Z2FbuVHLv1Ut8xx1rFUU029eKWb2H2RzHZ3F3b+MmnSqnSODOvHrrzQiuYBucAAVYKuelSVIJ5IUlYsciRvVu2xeLV04p3lPsTMblOq3RXpwoidOOPVPOpHxUXdqu9dYrhDX22snoK2FdqOoppFjkYvecm9D1TVVRPCpnSVC/YtYm3Nq/TFVM74mNYlJXLTl8Y0wpA2jxLSw4rpWtVGTyLzNS1dN2rkTR3jTXvmbsZvet8VyOF82pM37mWWY2rvmBqmzVzb6erfHsnT1I44kxBW4sxBcb1cZVmrq+ofUzPXpc5VVfEYWuublU11b5bXwmFtYLD28NZjSmiIiOiHzFTVFQ8LtPzC/L8wHY8M2i3T2i+umpKSGne5kMWyrmMRqqn4ThqhLreb2aaIpmJ4ocyYzuZZtiMTdvU3aNKqpmOOeWdeZEbP/MO35q5sXvE9rhqKehrea5uOqaiSJsxtauqIqpxavSR3GXqcRequU7pbx2Yyq9kuVWsDfmJqp1103cczPq52PSzSoAASL5M/KvhyIwzdrJcLLU3mmqqpKqDmZ2x80qtRr0XVF46N+kzWBzCMJRNFVOurVO1+xNW0uJt4mzdi3VTGk6xM68esbubjZfqvVI7W2B/rbBFc6bTtUlrmI3Xv6NVTIznVOnFR8UFo7k+I4Ud8xdOnqpntRbzsz0xDnniGK4XlY6akpmq2jt9PrzUDV4rv3ucuiauXqTgYHFYu5i6uFXujdDcuz2zeD2cw82cNrNVXlVTvnsiOSGOSySsAAAAAAAAAAAAAAA9Rllj+vyvx1Z8TW5y8/QTI90euiSxruexe85qqhXsXqrFyLlPIw2cZZZzjA3cDe3Vx1TyT7JbFqvlr5S0VFDOuIJJpZI2vWnp6SV8jFVNdle101ThxJpOaYWI14XwcqW+57tDcrmiLMRETvmqIifXv1+DwOJPVF8JUSPbY8OXa6P8AavqXMp2L9Ll+gs685tR5FMz8EnwfcqzC5pOKv00R6tap/KGG8ZeqAZhX9skVmpLbhuF25HxRrPMie6fu/wDSY27m9+vioiIT7AdzHJ8NpViaqrs+ueDHVHH8WA8XZg4mx7VrU4ivtdeJddU9dTq5rfA3gniQxFy9cvTrcqmWy8DleByyjgYOzTRHqj898vPlFlAAAAAAAAAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADXhy+/010nwRD9eQhecfeI6HVncv8A2JV/Uq+VKNZg23wCfnqcH5g4s+E2fZIS7Jfs6+lzN3V/v+G/BP8Acl+SJo0AAAAEGPVJ/wAoYD96rPLERXO99v2/k6J7k3kYzpo/yQrIy6CAMs8lD9YjA/8AOu+yeZDL/vVHShG237vYv8P5w2xGwHFYAAAAMP56cmvC2eVDzlfGttvsTNmnu1M1OcTqa9Pbt7y706FQx+KwNrFR9binnTXZva3H7OV6Wp4Vqd9E7umOaf8Astf+cXJhxtkwktXc6SOvsiO0bdaJ21Hx3bTV7Zi+FNO+RDE4G9huOqNY53T2Q7YZZn+luxVwbnm1b/ZO6WJDHJwAAONlOoDnRAAAC/sVhuGJrtTWu1UktfcKl2xDTwpq569490UVXKoppjWVricTZwdqq/iKopop3zKYmSHIFqHz093zGmayFqo9tkpJNXO70sibkT+FvxkkwmUa/XxHV2tDbRd0yiKasPksaz58x/bH5z1JsWq1Ulit0FDb6WKjoqdiRxU8LUaxjU4IiJwJPTTFMcGmNIc+Xr9zEXKr16qaqquOZnjmZfQPSkAAKVR+Ly+5XyHydz1T5UNKl2/K1d7/ACfWU1lV5Uv0CsfZUdEfJaHlXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKtJ+Nw+7b5T7G9TueRPQ3K278nUvvTfIhs2ndD8/bv2lXTK5PSkAAAAAAA14cvv9NdJ8EQ/XkIXnH3iOh1Z3L/2JV/Uq+VKNZg23wCfnqcH5g4s+E2fZIS7Jfs6+lzN3V/v+G/BP9yX5ImjQAAAAQY9Un/KGA/eqzyxEVzvfb9v5Oie5N5GM6aP8kKyMuggDLPJQ/WIwP8AzrvsnmQy/wC9UdKEbbfu9i/w/nDbEbAcVgAABTkkbExXvcjWtTVVVdEROsERMzpCHXKA5dMGHaqpsOXrYbhXRqsc16lTbgjd0pE326p+0u7wkbxmaxRM0WOOefsb32Y7nFeKppxeca00zxxRHFM/ink6N/QhXi7HmIse3F9diG9Vl3qXLrtVMquRvea3g1O8iEYuXrl6dblWroHA5bg8ttxawdqKI9UfOd8+18EpMmAAAAAAA5a90bkc1ytci6orV0VA+TETGks2ZRcrrHmVc8EElwfiKxtVEfbrlIr1Rv8A+uRe2Yvxp3jKYbML+HnTXWOaWvc82HynOqZrijvV3zqY0643T8/W2EZO54Yazrw/90rFU7FREiJVW+dUSemcvQ5OlOpyblJhhsVbxVPCon2OXc+2dx2zt/vOLp4p8mqN1XR6+eN7IxeIyAAKVR+Ly+5XyHydz1T5UNKl2/K1d7/J9ZTWVXlS/QKx9lR0R8loeVcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADXhy+/010nwRD9eQhecfeI6HVncv/YlX9Sr5Uo1mDbfAJ+epwfmDiz4TZ9khLsl+zr6XM3dX+/4b8E/3JfkiaNAAAABBj1Sf8oYD96rPLERXO99v2/k6J7k3kYzpo/yQrIy6CAMs8lD9YjA/8677J5kMv+9UdKEbbfu9i/w/nDbEbAcVgAABBblrcpuWWpqsvcK1asij/B3iuhdorndNO1U6E9svi6yLZpjuObFqensdFdz7Y+mKac4x9PHPHbpn+6fy6+ZC0jDoEAAZqyt5ImYeaMENbDb2WO0yaK2uuqrGj29bGaK5yd/TTvmTsZdfvxrEaR62vs525yfJqptVV98uR/DRx9c7o69UhsOepw2WGNjr7i6urJfbMoKdkLfErtpTM0ZLRHl1z7GrcX3WMVVMxhMNTTH+qZmfho9fD6n1llGzSSe+zO002lrWp5GFzGUYb19bBVd0/PZnii3H+2e1YXP1PDL+pjVKG732if0OdNHKieJWJ5TxVk1id0zC5s91POKJ/W2qKo6Jj82K8b+p2Yht0Mk+FsRUl6RqapS10a08i95HIqtVfDoWF3JrlPHbq1+CZ5d3VcHdmKcfYmj10zwo6uKfmjDjLAWIcvbu+14jtNTaK1u9GVDNEenW13Byd9FUwV2zcs1cG5Gktw5fmWDzSzF/BXIrp9XJ0xvj2vglFkwD0+XOYt6ysxZR4hsVUtPWU7u2Yq9pMz20b06Wr/qV7F6vD1xconjYfNsqwuc4SrB4unWmeuJ5Jj1w2r5O5r2nOTA9FiG1uRvOJsVNK5dX00yeyY7yovSiopsDDYinE24uUuLM+yXEZDjq8Hf5OOJ5Ko5Jj8+aXvS5R8ApVH4vL7lfIfJ3PVPlQ0qXb8rV3v8AJ9ZTWVXlS/QKx9lR0R8loeVcAAAABV04gcbSdaAcgAAADjaTrQDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAce+BzovUvxB81hwH0AAAAAAAAAVaT8bh923yn2N6nc8iehuVt35Opfem+RDZtO6H5+3ftKumVyelIAAAAAABrw5ff6a6T4Ih+vIQvOPvEdDqzuX/sSr+pV8qUazBtvgE/PU4PzBxZ8Js+yQl2S/Z19Lmbur/f8N+Cf7kvyRNGgAAAAgx6pP+UMB+9VnliIrne+37fydE9ybyMZ00f5IVkZdBAGWeSh+sRgf+dd9k8yGX/eqOlCNtv3exf4fzhtiNgOKwABh7lQ5urk7lRcLlTSIy81i+srenSkrkXV/wDhaiu8KIY7H4jwazNUb54oTfY7I/H2a0Wbkfq6frVdEcntniaqJppKiaSWV7pJZHK973rqrnKuqqq9ZAZnXjl2lTTFERTTGkQ6Hx6AJ7ckvkjUVkttFjPGtE2qvE7WzUNsqG6spGrva97V4vXiiL7Hw8Jbl+XRREXr0cfJHM5n2325u4m5XlmWV6W44qqo31TyxE8kfPoTDRERERE0RCRtGOwAAAA8hmJlph7NTDk1mxFQMraV6KrHKmkkLuh7HcWqn/Uo3rFvEUcC5GsMxlWb4zJsRGJwVfBqjqmOaY5Yavc/MkLpkXjWS0VjnVVtnRZbfX7OiTxa8F6nN4Knj4KQPF4WrCXODO7kl2LsztFY2jwUYi3xVxxVU809k8jGpYpcAZ+5GmcUmWOadNbKudW2G/vbSVLXL2scqrpFJ4lXZXvO7xl8sxPeL0Uzuq4msdv8hpzfK6r9uP1tnWqPXH8UdXHHrhs9Jy5CAKVR+Ly+5XyHydz1T5UNKl2/K1d7/J9ZTWVXlS/QKx9lR0R8loeVcAAAHiUDP3IetVFec+KamuFHBW062+pcsNTE2RmqImi6ORUMvlVMVYmIqjXilrDujX7tjIqq7NU0zwqeOJ0nl5mwbE2X+F4sN3V7MOWhr20kyo5tDEiouwu/2JL67NvgT9WN3M5iweZ4+cTbib9flR/FVz9LT3r3jXLuwAAZE5O1HBX55YIp6mCOop5LnE18UzEcx6b9you5UL3BRE4iiJ50V2quVWsjxddE6TFE6THFLap2PcLdzNn+QReiTzvNvzY6nGPjTH+kV+9V2tSGa0EdJmhi+GGNsUMd3q2sjjbo1rUmciIiJwQ17iI0vVxHPPzdvZLVNeWYaqqdZmij+2HlvEpQZoAAAAAAAA2Ncm3IDLvFeR+ErveMI22vuVVSufPUzxqr5F5xyarv6kQmmCwdi5h6KqqImZco7WbTZzgs7xOHw2JqpopniiJ4o4oYl5dmU+EcuLFhOfDNgo7LLVVU7J3UrVRZERjVRF39GqmOzbD2rNNE26dNdU47m+dZjmt/E0469NyKYp015NZlD8jjewAAAAAAABODk1ci/D9faLdi3FlwpcRpO1Jqa3UMm3St6ucens1Tpam5OnUlOByyiaYu3Z19XI502v7oGLt3bmXZfRNqaeKaqo0q9kckevfzaPtcqPkc0GIrZUYpwJQx0N6p2K+ptNOxGxVbUTesbU3NeidCbneHjVx+W01xN2zGk83Ox+xu3t3C3KcBm1fCtzxRXPHNM+ueWPl0IDPY6N7mParHtVUc1yaKi9KKhEXTUTExrDgPoAAAAAAAAAAAJJ8gW2U9zzsq2VNPHUxstE7tiViPbrtxprovhM3lFMVYideZqXumXa7OS0zbq0ma6d3FyVNhF1w3Zo7ZVv8AuVQpswvXVKZn7K94mFVFGk8Tl6zi8TN2mO+Vb45ZaZ5v+bJpw2l8prWXfNPkw6Hx6AAAAAAAAKtJ+Nw+7b5T7G9TueRPQ3K278nUvvTfIhs2ndD8/bv2lXTK5PSkAAAAAAA14cvv9NdJ8EQ/XkIXnH3iOh1Z3L/2JV/Uq+VKNZg23wCfnqcH5g4s+E2fZIS7Jfs6+lzN3V/v+G/BP9yX5ImjQAAAAQY9Un/KGA/eqzyxEVzvfb9v5Oie5N5GM6aP8kKyMuggDLPJQ/WIwP8AzrvsnmQy/wC9UdKEbbfu9i/w/nDbEbAcVgADXp6ofjKS55lWXDbHr62tdD64ezXdzsq8f8rW/GQ/ObvCu02+aPm6g7luAizlt3GzHHcq09lP/MyieR9usAzRyRctIczc6rXT1sKTWu2NW5VTHJq16MVNhq95Xq3xamTy6xF/ERE7o42v9uc3qyjJbldqdK7n1I9u+fZGrakiaJom5CeuNHIAAAAAAMG8r7LKHMjJi7vZCj7pZ2LcaN6J2ybCayN8DmbXjRDF5jYi/h55444bB2FzirKc5txM/Uu/Uq9u6fZOnxatkXVCBuygDsyR8L2yRuVkjFRzXJxRU4KNzzMRVExO5uCyaxiuPsq8LX97tqatoY3Sr/8AsRNl/wD6mqbHw1ffrNNfPDhTP8B4szTEYSN1NU6dG+Pg9uXLAqVR+Ly+5XyHydz1T5UNKl2/K1d7/J9ZTWVXlS/QKx9lR0R8loeVcAASN5BlBTXLPKWGqp4amP7k1DubmYj267Ue/RTNZTEVYjSY5Jap7pV2u1kcVW6pieHTunTklsV+9Kxfua3/ACWPzEx73R5sOVvD8V/Nq96e1WpMP2y3Tc9SW2kppkTTnIYGsdp1aoh6iimnjiFO5ib92ng3LkzHrmZfQc1JGq1yI5FTei8FPa3idOOHyfvSsX7mt/yWPzFLvdHmwvPD8V/Nq96e1H7ly4ftluyAuE1LbaSmmSupUSSGBrHabfWiGJzWimnDTMRyw2b3OsTfu5/RTcuTMcGrfMzyPf8AJ+wzZ6nJLBMs1qoZZZLTA5z307HOcuwm9VVN5d4OiicPRMxG6EZ2nxeJozvF003KoiK6uWedkSHDNnppWSw2qiglZva9lMxrmr1oqJuL6KKI44hFq8XiK4mmq5VMT65fXPS1fGkwtZZHukktNC971VXPfTMVVVeKquhS73RPJC7jGYmmIiLtWkeuT70rF+5rf8lj8w73R5sPvh+K/m1e9Pa1V8pynipM/cbQwRMhhZXqjY42o1rU2W8ETgQPHREYmuI53Zux1dVeQYSqudZmnl6ZYxLBMgAAAAANrnJL/V0wP/Ju+1eT/AfdaOhxXtt+8OL/ABR8oYQ9Uk/NzA/83U/UYYvOfIo6ZbE7k/3nF/hp+coJEUdIAAAAAAAAGYeTtyjbzkXiBjduSuwxUvT17bVdqiJ0yR/svT4l4L3slgsbXhKuemd8IHtVsphto8PM6RTepj6tX5Tzx8uRs/wtie24zw/RXu0VTKy21sSSwzMXcqL19SpwVOhUJ1buU3aYronWJcd4zB38BiK8LiaeDXTOkwg3y6OT8zDVz7IFhpkjt1dKjLnBE3tYZ14SonQj+C/xeEi2a4PgT3+iOKd7ozucbTzi7XifF1fXoj6kzy083THJ6uhEMjjegAAAAAAD7UeCcRTRtkjw/dXxvRHNc2ilVFReCouyVu9XPNnqY+cwwVM6Tep1/FHa7feLiXudu3yGX0R3q55s9R4ywX8+j3o7T7xcS9zt2+Qy+iO9XPNnqPGWC/n0e9HafeLiXudu3yGX0R3q55s9R4ywX8+j3o7Un/U/8JXa15qXysuFrraCJlpcxr6qnfGjnOlZuRXImq6IpnMnt1U3qpqjTiac7p+Ow97K7Nuzcpqma+SYndTPMnLi2R1PhS8ysa5zmUczmtamqqqRu0REQlVzioq6HOeBpirFWonlqp+cNPf3jYldvXDt21Xf+Iy+ia571c82ep3b4xwMcXf6PejtPvFxL3O3b5DL6I71c82ep68ZYL+fR70dp94uJe527fIZfRHernmz1HjLBfz6PejtPvFxL3O3b5DL6I71c82eo8ZYL+fR70dr5FVST0NRJT1MMlPPGuy+KVise1epUXehSmJidJXlFdFymK6J1ieWOOFI+KgAAAVaT8bh923yn2N6nc8iehuVt35Opfem+RDZtO6H5+3ftKumVyelIAAAAAABrw5ff6a6T4Ih+vIQvOPvEdDqzuX/ALEq/qVfKlGswbb4BPz1OD8wcWfCbPskJdkv2dfS5m7q/wB/w34J/uS/JE0aAAAACDHqk/5QwH71WeWIiud77ft/J0T3JvIxnTR/khWRl0EAZZ5KH6xGB/5132TzIZf96o6UI22/d7F/h/OG2I2A4rAAGqnlh1z6/lG4vV6qvNSQwt7yNhYhAsynXFV/95HZuwluLezuG05YmeuqWGjGJ8ATS9Tctsa3DHNwVE5xkVLTNXpRFWRy+RPiJPktPHXV0Ofe6xemLeEs8kzVPyj806SUudgAAAAAAFlcqOOvoKqmkRHRzRPjci9KKiovlPNUaxMSqWq5tXKa6d8TE9TSzcaZKO41VOnCKZ8aeJyp/Q1nVGkzD9AbNffLdNfPEStzyrAGzjkNVzqzk7WZr1VeYqqmFuvVzqr/AO4nOVceFp9rkDui24t7Q3Zjlimfh/wkGZdrNSqPxeX3K+Q+TueqfKhpUu35Wrvf5PrKayq8qX6BWPsqOiPktDyrgAD0OBswMQZa3tbvhq5PtdxWJ0Czxsa5dhyoqpo5FToQrWr1dirh250li8xyzB5tZ8Hxtvh0a66ce+OjRlPDXKWzwxhfKOzWbE9bXXGrkSOGCKmhVXKvT7DcicVVdyIX9GOxlyqKKKpmZ6EMxmyOy2AsV4nE4emmimNZmZq7WxPK+wYiw9g2ipsVXyTEF/cm3VVTmta1r19oxGonat4a8V3r0kzsUXKLcRdq1qcqZzicHi8ZXcwFnvVrdTHHu551meOXslTVFTh4C4YZHDO7AOdNsbUXbLvHdXXQJq91mq4oOeanVE9WaO8DtF76mFxVrFx9axc19XE2ps7mezN7g4fOcHFM+fE1af7o14umOL1QhDmRnfmbiygqsM4yvdZNAyZqz2+rpo4nNkYuqaojEVFRSL38ViLkTbu1ex0RlOzuR4K5TjsttREzHFVEzPFPtmH1cA8oDN9fuNhPC2Iat6ojKOhoYKeJyonBrU1Yq6J1qpUs4zFfVtW6vVELLM9mNnI77mGPsRy1VVTNXtne2UZXWS/4fwZb6bFN6kv1+VvOVdW5rWtR6+0YjURNlvBF6ePSTaxRXRbiLtWtTknOMTg8Vja7mAtd7tbqY490cs6zPHL2RcMM8DnBYsVX7A9XHgm+useIYfw1NK1rHMmVNdYnbSKiI7r6F0LXE0Xa7c95q0qSDIsTgMLjqZzOz3yzPFMceseuNJjdzczXfeeVHnXh661VsueKa2hr6WRYp6ealha+NycUVNghtePxlFU01VTEx0OqMPsdsxirVN+xh6aqao1iYmrSY62JMSYkuWL77W3m8VTq251snOz1DmoivdpproiInR0GOrrquVTXXOsym+EwlnA2KMNhqeDRTGkRzR7XzTwvADJvJvy6tWa2btpw3enVDbdVRzOkWmk2H6sjc5NF0XpQvsFZpxF+Lde6UP2szXEZLlFzG4XTh0zTprGsccxCai+p95X/APjXz5a30CT+KMN6+tz9+k7Peaj3Z7Wuy/UUdtvtyo4tVip6mWFm0uq7LXqia+JCG1xwapiHVGGuTesW7lW+YieuFieFy2uckv8AV0wP/Ju+1eT/AAH3WjocV7bfvDi/xR8oYQ9Uk/NzA/8AN1P1GGLznyKOmWxO5P8AecX+Gn5ygkRR0gAAAAAAAAAJS8iDP1+BsVswVeKhfuDd5dKV8jt1NVLw06mv4L39F6zPZXi+9V95rn6s/Npnui7MxmOF8Z4an9bbj63+qntp39GqfWLsL2/GmGrjYrpCk9vuELoJmL1KnFO+nFF60Ql1y3TdomirdLmbBYy9l+Jt4qxOldExMexqHzMwFXZYY6vOGbgi8/QTqxsmmiSxrvY9O85qoprq/ZqsXJt1cjufKMztZxgbWOs7q416J5Y9kvMFBmAAAAAdXewXwAbmcvfzBwz8GUv2TTZNn7KnohwPmv3/ABH46v7pekK7GAAAAAAAAADUtyo/1hMdfCLvqtNfY/7zX0u2djv3fwf4Pzli0sEyAAACrSfjcPu2+U+xvU7nkT0Nytu/J1L703yIbNp3Q/P279pV0yuT0pAAAAAAANeHL7/TXSfBEP15CF5x94jodWdy/wDYlX9Sr5Uo1mDbfAJ+epwfmDiz4TZ9khLsl+zr6XM3dX+/4b8E/wByX5ImjQAAAAQY9Un/AChgP3qs8sRFc732/b+TonuTeRjOmj/JCsjLoIAyzyUP1iMD/wA677J5kMv+9UdKEbbfu9i/w/nDbEbAcVgADVZyx7e638ozFqPRUSZ8M7delHQs/wBSBZlGmKr/AO8jsvYK7F3Z3DacnCjqqlhcxjYABMj1N+/RQYlxlZpHoktTSwVUbVXijHOa7T/OhJclr0rroaF7q+Gqqw2FxMbqZqpn2xEx8pTzJW5uAAAAAAAfKxDdYLFYblcp1RkFHTSVEjlXREa1quXyHiuqKKZqnkXOFs1YnEW7FG+qYiPbOjS/WVK1lZPULxlkdIvjVV/qazmdZ1d/W6O90U0c0aKJ8VADZ3yHbe+h5O1iV6Ki1FRUzpr1LK5E+qTnK40wtPtcfd0S7FzaG9EfwxTH/rHakAZdrVaVdQqRzRsjdI9GKq6aIia69fgPk7nqnyoaW7zG+G81zJE2Xc89dy6oqbSmtKo0ql39hq4rtUdEfJzbqSGaNXyt21V6tRFXdw6j7TEaKd2qeFMarWaLmaiWNE0Rrtyd5d6eU8Vb1xZnWl0PKu9vlVk3ijOO9pbsOW907GKnritl7Wnp0Xpe/wDom9ehC6w+GuYmrg24R3Os/wABkNjv2Nr013Ux5VXRH57mx/IHk24eyKtW1AiXLEFQxEqrrK3Ry9bI09ozvcV6Sa4PA28LTxcdXO5O2m2txm0l3Sv6lqPJoj5zzz8uRUlzxpblyg7flzansqFp6SequczU1RkiNTYiRetNdV8SdY8KirExh6eadXmNnLlrZ+vOsRGmtVMURzxM8dX5R7ZZNxDUPo7Bc6iF2zLFTSvY7qcjFVFL6udKZmERwtEXL9uirdMxHxYa5LvKPpM78Mes698dNiy3sRKynTckzeCTMTqXpToXvKhjcBjYxVGlXlRv7U92y2TubO4nvlmJmxX5M80+bP5c8I98r2vZnZm/bsEYIsMV2vtt1ZW3GmjTnFev/duk4IxnSq8FXToMPmM+FX4s2adZjfP/AHmbQ2EtTs9lFeaZpemi1X5NMzxac8Rz1ckRyJA8mrku2vI+3pcq5Y7pi2pj2ZqzZ1ZTtXjHFrwTrdxXvJuMvgcDThY4VXHV/wB3NYbXbY39ornebWtFimeKOWfXV+Ucj5+c2eLaXO7L/Lm0VGs891gqLs+N3sGa6xwr31XRyp1InWeMTi9MRbw9PPGvYu8g2cmvJMbnWIp4ooqijp5avZuj2pGGZauRp5Nee8d9xzjPL671H/aduu1ZJbHyO3zU/PPVY077OhP2V7xhcDi+HcrsVzxxM6dGra+1uzc4bBYXOMNT9SuiiK/VVwY4+ifn0vQ8obkuWHPCiWth2LPiqJmzDcmM1bKicGTInsk6l4p9BWxmAoxUcKOKrn7WK2W2yxezlfeqvr2J3083rp5p9W6WubMrKzEuUt/dacSW59FMuroZUXainYi6bUbuCp9KdOhC7+HuYerg3I0dW5RnWCzzD+EYKvhRyxyxPNMcjyRbs4AZ35EX6x2Hfear7Fxlsr+9U+35Nbd0P93b/TT/AHQ2hrwJ049aW8W/nZfP56f7RxrO55dXS79wP3Sz+Gn5Q+SU182uckv9XTA/8m77V5P8B91o6HFe237w4v8AFHyhhL1SJjn4cwRstV3/ABdTwTX2jDF5z5FHTLYfcnmIxGL182n5ygnzMn/hv/yqRXSXR/Cp5zmZP/Df/lUaScKnnOZk/wDDf/lUaScKnndVRWroqKi9Snx9iddzgPoAAAAPdZG4Mkx/m5hWxsRysnro3zK32sTF23r/AJWqXeFtd9v0UetG9o8fGWZTiMVO+KZ06Z4o+MtwCJomiGxXDCFnqhmViVFutGPaKLWWnclvr1anFjlVYnr4F1b/AIkIznGH1iL8dEt+9y3OeBcu5Rdniq+tT0x5Ue2OP2SgwRV0cAAAADq72C+ADczl7+YOGfgyl+yabJs/ZU9EOB81+/4j8dX90oj8t/OXGuXOY9loMM4iq7PSTWtJpIadW6Ofzr02l1Rd+iIR/NMTes3aabdWkaN39zrIMszXLrt3G2IrqivSJnXdpCOv9qfNju6ufxs9Ewvh+K8+W1foZs/6JT8e0/tT5sd3Vz+Nnojw/FefJ9DNn/RKfj2p08jPEeJ8Z5QrfsVXapu9XWV8vMSVOmrYmaNRE0RN20jiVZZXcu2OHcnWZlzht/hMDgM38EwFqKKaaY1iOedZ+Wj6PK4zDuWW+TNxr7LWSUF5qKiCkpZ4dNtjnPRXKmv8LXFXMLtVnDzVROkrLYnLbGaZzbs4qjhW4iqZid06RxfGYQIm5T+btOjVkxvcmo7cio5i6L3+1IlONxUfxy6Wp2Q2eqnTwSn49rtScp7NWpmckuOborGsVVRHNTp7zT7TjsTO+uXi7sdkFOmmEp+Pa9dlZyg8x7lm5g63VWLq+e311zpoJ4FVuzI1ZERyL2vBUUubGMxFd6imqudJmGCzjZbJMPlWKvWsLTFVNFUxPHxTETpO9szJq5OaluVH+sJjr4Rd9Vpr7H/ea+l2zsd+7+D/AAfnLFpYJkAAAFWk/G4fdt8p9jep3PInoblbd+TqX3pvkQ2bTuh+ft37SrplcnpSAAAAAAAa8OX3+muk+CIfryELzj7xHQ6s7l/7Eq/qVfKlGswbb4BPz1OD8wcWfCbPskJdkv2dfS5m7q/3/Dfgn+5L8kTRoAAAAIMeqT/lDAfvVZ5YiK53vt+38nRPcm8jGdNH+SFZGXQQBlnkofrEYH/nXfZPMhl/3qjpQjbb93sX+H84bYjYDisAAa9fVEMHvtmZNjxExi+t7nQcw9+m7nYnL/7Xt+Ih+c2+Ddpuc8fJ0/3LMfF7Lb2DmeO3Vr7Ko7YlE4j7dgB73IzM6bKDM6zYkajn00D1iq4m8ZIH7np4UTenfRC7wl+cNei519CM7R5PTn2WXcFPFVMa0zzVRxx2T6pba7HfKHEtnpLrbahlZQVcTZoJ411a9qpqiobCoqprpiqmeKXEOJw13CXqrF+ng10zpMTyTD6Z7UAAAAAAIr8unOinwdgKTBtBOjr3fGbMzWLvhpde2Verb02U720YLNcVFq13qnfV8m4e5xs/Xj8fGZXY/V2t3rq5OrfPsa7FXQhjql2ZFJImrInuTrRu49cGVKbtEOrGulcxsbVe966MYnFyrwQ+acej3VXTTRw5becn8HfeHldhWwVHOPqKOgibJFEqojXqm0/h/Eq8TY2Ho7zZpo5ocKZ9jvGWaYjFxuqqnTo3R8Htmdq1XwOeuz7KF6qvi38F+guWCdah6LsytXVksbm69e7VP6nydz1T5UNNt6Z69uNxjTdUwVEiJr0ptLp8aGuKo1mXeGHqmm3RMc0fJ85sq09tgk0VF57VUXqRV18h5jihWn61UzDtdWbNSx6cHt08af8AU81c6vYnjmFmU14zNyW89Zsk8wYpKuV64buStp7jCm9GJr2syJ1tVfGiqhk8Bi5wt3j8md6AbZbN07Q5fMW4/XUcdE/Onon56Jgcp7lWW7K7D/3Kw1WQ1+KrhDtwuicj2UcTk1SV/fVF1a3xru4yPH5hTYp4Nudap+DROx2xd7OcR4RjaZpsUTx68U1TH8Mernn2b0ZuQzWzV3KMjqqqZ89RPQ1cks0rtXPcqIqqqrxVVMHlUzOK1nmlt7ujW6bezs27caRFVEREckNiuKpGLhq79s38Tm6f4FJjc8iehyvg4nwm1+KPnDTphXFl3wRfKe82Ovlt1zp1Xm6iFdFRFTRUXrRUXgpri3crtVRXROku8MbgcPmVirDYqiKqJ3xL1eSucNzyhzJpMTwySVMb3qy4wudqtTC5dXovW72yL1ohcYXE1Ya7FyPb62F2gyGxnuW1YGqNJjyZ82Y3ezkn1Ng2dXKfw9lvlhSYgtdTDcrjeqfnLPTNXXnNU/5j06Gt6e+mhMMVj7dmzFymdZnc5f2f2PxmbZnVg79M0UWp0uTzackeueT1caB2Q97rsScpTCF1udS+ruFZemTTzyLq573KqqpE8JVNeLoqqnjmXSe0uHtYTZvE4exTwaKbcxERyRDbHqnWhsBxU1A48v8AcMLZ44lu9qqn0dxor9VTQTxrorHJO7T/AKdJrq7XVbxFVdM6TEz83c2W4WzjcksYfEU8Kiq3TEx6uDCe2WXLCwrinKquxJfKqK2Xe0QItxt6L2738GrCi+yR67k6lXResltjMrVyzNyudJjfHY5nzjYPMMHmtGCwtM127k/Vq5Ijl4XNMRv5+RATOHNm75y44rMQ3Z6sR683S0iO1ZTQovasb5VXpVVUiOJv14m5Nyp03kOSYfIMFTg8PG7jmeWqeWZ/Lmh4gtUiAM78iL9Y7DvvNV9i4y2V/eqfb8mtu6H+7t/pp/uhtDXgTpx60t4t/Oy+fz0/2jjWdzy6ul37gfuln8NPyh8kpr5tc5Jf6umB/wCTd9q8n+A+60dDivbb94cX+KPlDKtXRU9W1qTwRTInBJGI7T4zI6RO9C6LldvyJmOhS+4lv/d9L/5DfMeODTzKnhF7z565PuJb/wB30v8A5DfMODTzHhF7z565PuJb/wB30v8A5DfMODTzHhF7z565aweWdBFTcorEscMbImIym0YxqIifgGdCEGzSIjFVaer5OwNgKqqtncPVVOs/W/ulhExbYgAAAAJl+p25cLVXq/43qYtYqWP7nUblTjI7R0ip4G7Kf4lJLk1nWqq9PJxQ0H3VM24FmzldE8dU8OrojijrnWfYmne8V2zDlys1DXVDYKm71K0lI1fbyIxz9PiavjVOsk1Vym3NNNU7+KHPmHwV/FW7t21TrFuOFV6o1iPzWeZGCqXMXAt8w5VonM3GmfCjlT2D9NWO8TkRfEfL1qL1uq3PKucpzC5lWOs423vomJ6Y5Y9scTT3fbLV4bvVfaa+JYa2hnfTzRr7V7XKi+Q1xXTNFU01b4d24bEW8XZoxFqdaaoiY6J41ieFyAAAHV3sF8AG5nL38wcM/BlL9k02TZ+yp6IcD5r9/wAR+Or+6UFfVEtZs2rAkbVkVtoai7Ca6Lz0hFs4iZvU9DovuWV00ZVf1/mf4wikqK1zmuRWubxRegwExo3VTVFUawvKO3+uEjfIjnLK5GRQsTVz3KuiInTxKkUxuhZ3b0xrOukQ225N4JiwBlnhzDrEkpqmiomJKi66OkXtpNy7l7ZymwcPb7zZpt80OH89x/jTM8Ri43VVTp0RxR8Ih4/lRZP3HOrLplFbKxKW6WqpSsjp3r+DqHNarVY5ejtXLovWqalDHYacTa4NM8ccbO7H59ZyDHzexFGtFccGZ5aY1idY5/XDWzf7TVWS9VVlu1NLRVkbljfDK3Zex7eKKnxKQiqmqiqaao0mHW2HxFvFW6b9iqKqKo1iY3TD49LG+n9fI/2TI+PXx3nmI0XddfD0l7vJF3PZq5fyr7KO90aOX/8Ata1S6wvHft9MI7tD9XKMX/Tr+UtupsBxO1LcqP8AWEx18Iu+q019j/vNfS7Z2O/d/B/g/OWLSwTIAAAKtJ+Nw+7b5T7G9TueRPQ3K278nUvvTfIhs2ndD8/bv2lXTK5PSkAAAAAAA14cvv8ATXSfBEP15CF5x94jodWdy/8AYlX9Sr5Uo1mDbfAJ+epwfmDiz4TZ9khLsl+zr6XM3dX+/wCG/BP9yX5ImjQAAAAQY9Un/KGA/eqzyxEVzvfb9v5Oie5N5GM6aP8AJCsjLoIAyzyUP1iMD/zrvsnmQy/71R0oRtt+72L/AA/nDbEbAcVgADCnKyyndm1lFcKWji5282xfX9CiJ2z3NRdpie6aqp4dDGZhh/CLExG+OOE92JzuMkzeiu5Oluv6tXRO6fZPw1asFarVVrkVrkXRUVN6KQJ2bE68cOA+gGeeTfyq7vkjO21XCOS8YTlftPpEd+EplXi+JV+lq7l7ymXwWYV4WeDVx0/Loaz2s2Kw+0NPhFmeBfjl5KvVV+U749bYTl1nBhDNShbV4bvVPXKqavpdrYni7zo17ZPITCzibWIjW3Vq5ezXIsxyW5NvG2pp9e+meidz3JcsCAAPn3C601sgfJUzNibGmr3PciI1OtVXcnjEzERrL1Rbru1RRbiZmeSOOUa87OXBhvAlPPbsKtTEN+cio2ZqotHCqdLnoq7ap1N3d9DB4rNLdqODa+tPwbZ2d7nmOzOum7mETatc0+VPRHJ0z1Nf2K8V3XHGIa293utkr7nWP5yWaRePUiJ0IibkROCEPuXKrtU11zrMuosFgsPl2HowuFp4NFPFEf8AeXnlZ26nbPM58iIrI010XgqimOV6vVcfBcSXOeV20x/NM6EREVdO/qJqfaLMTGssyckPKeTMnNq21NRCr7JZJWV1ZIqdqrkXSOP/ABO6OpqmRy6x3+/Ezup45QDbrOaMmyiq3RP6y59Wn2759kfGYbRmLs1kqLxc1Fb30Tj/AL75O3Hxwrt3TH23x7v6gWk+60yvT/u1e9vgRy/0Pk7nqnyoabcRudTYjqp4/bSP/wAWjl1T4tDW9XFVMu88NTw7NMeqPks7hVxVUcTYl13q5yaaabv9TzVPEuLVM8LjhSlqnzwQxuYic3p22uqru0PM1awqUWqqatVI8LoAy7yXsrrPnLmtHh/EL6taF1FNOrqWXYk2mI3Z7ZUXdvMjgLFGJvcC5u0QXbHOMTkGVTi8HEcLhRHHGsceuvMmTByBstKJ/OQVWIYJNNNuK4I1dPCjCSxlOHjdM9bQtfdLzu5GldNuY9dP/K6XkM4Bciot3xSqLuVFuy7/AP0n3xVY56utS/SLm0f+K17n/Kx/u+8r/wBu/fLm+gefFGF9fWuf0nZ7zW/dntP7vvK/9u/fLm+gPFGF9fWfpOz3mt+7Pa7ScgXLSVkTZKnEEjYm7EbXXBFRjdVXRO03Jqqr4z74ow88s9anHdMzumZmKbca7/q/8kPIDyzppWSw1GIIpWLq2RlwRrmr1oqM3CMow8cca9b7V3TM8riaaqbcx+H/AJfR/sSYH/fuLfnh3onrxXa86rrWv6Qs0/k2v/8AP/l82XkA5YyyOkkmv73OVXOc6vaqqvSqrsHjxRhvX1ruO6bnlMaRFvT8M9qBObeF6LBGZ+KLBbllWgttdLTQLM7afsNXRNpdE1UimJtxavVUU7ol0rkWMu5jlmHxl7ThV0xM6btZ5nki1Z0AAZ35EX6x2Hfear7Fxlsr+9U+35Nbd0P93b/TT/dDaGvAnTj1pbxb+dl8/np/tHGs7nl1dLv3A/dLP4aflD5JTXza5yS/1dMD/wAm77V5P8B91o6HFe237w4v8UfKHjeWTndinJSzYZqcMT00MtwqJo51qIElRUa1qpprw4qW+ZYq5hqaZt8rO7A7O4DaC9iKMdEzFERMaTpvmUWv7eGbX7wtnzewwHjbFc8dTcv6Ntn/ADKvek/t4ZtfvC2fN7B42xXPHUfo22f8yr3pP7eGbX7wtnzeweNsVzx1H6Ntn/Mq96WG8wMe3fM3FdXiK+yRS3SrRiSvhjSNq7LUamjU4bkQxt69Vfrm5XvlPcryzD5PhKcFhImKKddNZ1njnXe88UWVAAAC4t1uqbvcKWho4XVFXUythhiYmqve5dERPGp6ppmqYpjfKjdu0WLdV25OlNMTMzzRDbpknltBlNlnY8Nw7LpqaFHVUjf+8nd20jvjXRO8iGw8LYpw9mm3H/ZcN7Q5tXneZ3sbVuqni9VMcUR1fFDnlyZv1TM58P26z1KsfhVGVW01dyVTlR/0NRieNSN5riZ7/TTRPk/NvrudZFROTXr2Jp4sRrT/ALY1j4zqm3lvjijzHwNZcSUKotPcKZsytRddh/B7F76ORU8RKLF2L1um5Tyuec2y65lOOu4K7vomY6Y5J9scaD3L9ykXDuNaPG9DDpb7zpDVqxNzKpqblX3bU+NqkWzfD8C5F6ndO/pdE9zLPPCsFVld2fr2uOn10z2T8JhE8j7doA13oiIqqvBETVVPumrzVVFPHLvJBNEzbfE5rNdNV08594MqUXaZnRSd7BfAeVduTwMqrgHC0TVVqyW2lRVTiic01V83jNk2fs6eiHA+a/f8R+Or+6UHPVDKx8GatihgRImMtLU1ROnnZOBF83nS9T0OiO5bb4eV35n+Z/jCKErnyq9z3q9zk01VETyGA11bqijgRMQk1yOsnVzCx/b8SV0Crh+wyNm2np2stQqaxNTr0Xevi6zOZbhu/Xe+VeTT82oNvc/pyvATg7M/rb0adFPLPt3R7eZsZq1RvMu4OSRNP6/RqTJyy8xgnH1hzDbcaiw3GKvhpZlpahGLvZI1zmqip1KiIqLwVN6FG1et3omaJ10ZLMMrxeWV028XbmmaoiqPXE/94+aWIuU7yaaLOjDsd0tbY6PGFD2kNT7FKlEXTm5F8KJo7o8Bj8dgYxNPCp4qo+KbbIbW3MhvxYxEzVh6p4482eePzjl6Wuq+09VZJ6613SllobtTuWnnppWK17XJx1QhlUTRrTVGkw6qsXLeJopvWZiqmqNYmN0w9HkVM/svYMpkaipJeaXRyr7HWRqFbCT+vtx64YzaW3M5RjKo/l1/KW35NURNV1XpU2G4gal+VH+sJjr4Rd9Vpr7H/ea+l2zsd+7+D/B+csWlgmQAAAVaT8bh923yn2N6nc8iehuVt35Opfem+RDZtO6H5+3ftKumVyelIAAAAAABrw5ff6a6T4Ih+vIQvOPvEdDqzuX/ALEq/qVfKlGswbb4BPz1OD8wcWfCbPskJdkv2dfS5m7q/wB/w34J/uS/JE0aAAAACDHqk/5QwH71WeWIiud77ft/J0T3JvIxnTR/khWRl0EAZZ5KH6xGB/5132TzIZf96o6UI22/d7F/h/OG2I2A4rAAADXvy0eTPPhO71WPMNUivsVY9ZLjTQt/E5VXfIiJ7Ry/Eq9SkQzPAzbqm9bjinf6nTvc/wBrqcbZpynG1fraeKiZ/ijm6Y+MImEebuAAFWjrp6CqZPSTy01SxdWyQPVsjV7ypvQ9RrTOsKF2m1cpmi7ETE8k8cMoYf5Uea+FYo2U2L7k+FqaNZXtSoaif/2Iq/SX9ONxVviiufmh2J2R2extU8PDUxP+nWn5TD2VBy4M259uJ16oNWoio5bbFqpcxmmJnljqR+93O8girit1R/vl8m58tbN65w80mI4qJy9rrS0UTF14cVaqlOrM8VVPlaeyF7Z2A2ds08PvE1dNVU/mx/jPMrFOKFbHeMQXC6Pdq93rqoc9qd9G66Iq+AtLt+7c8uqZSfL8owGB4sJZpo6IjXr3vHyPklc1XyOfpw1LWZ1Z+m3FM6w4PiqvbVIjZZIne3TVO/pxKlPMsr8cer6GFMDXvGWJKKwWWglr6+qejImxN1TTpc5ehqJvVV4Hu3aqu1xTRGsytMXmeGy3C1YnFVcGmmOOfyjnmeSG0jIjJuhyYwNTYehaySpqG8/W1fB0827aVepE1REToRO+pPMJhqcLbiiN/K412lz+9tFj6sVc4qY4qY5qe2d8slvR2yjJ4nS7PsZI+PnRfAXqLOGMcrVZFGsDXeykeurl8H+oFWaNraOSNE0YjFTTvaHydz1T5UNKt1aiXat4qqTSJqq6r7JTWdU/Wl+gGHppptUaRyR8lqeFyAAGugGQci83pcksdsxNBbo7rI2mkpvW8kqxp2+m/VEXhoXmExM4W53yI1RfaPI6docDOBqucCNYnXTXd1JG/wB5Pcu4ek+cHegZjx1PmfFqr9E9j0ufdjtP7ye5dw9J84O9AeOp8z4n6J7Hpc+7Haf3k9y7h6T5wd6A8dT5nxP0T2PS592O0/vJ7l3D0nzg70B46nzPifonselz7sdp/eT3LuHpPnB3oDx1PmfE/RPY9Ln3Y7T+8nuXcPSfODvQHjqfM+J+iex6XPux2n95Pcu4ek+cHegPHU+Z8T9E9j0ufdjtP7ye5dw9J84O9AeOp8z4n6J7Hpc+7HaijmDjB2P8c33EklO2jfdKt9U6na/aSNXLroi7tTA3rnfrlVzTTVunK8DGWYGzgoq4UW6Yp159HnyiygAAzvyIv1jsO+81X2LjLZX96p9vya27of7u3+mn+6G0NeBOnHrS3i387L5/PT/aONZ3PLq6XfuB+6Wfw0/KHySmvm1zkl/q6YH/AJN32ryf4D7rR0OK9tv3hxf4o+UMIeqSfm5gf+bqfqMMXnPkUdMtidyf7zi/w0/OUEiKOkAAAAAAAACXfILyPdf8QyZgXan/AOz7Y5Yra2RN0tRp20id5iLu7694kWU4Xh1d/qjijd0tGd0raKMNh4yjD1fXr46/VTyR/u+XSm1j/GlFl9gu74iuLmpS26ndMqKum25E7Vqd9ztETwkovXYs25uVcjnnLMvu5pjLWCs+VXMR0c8+yONp+xRiOsxfiS53u4SLJW3CofUyuX9py66eBOHiNc3K5uVzXVvl3Zg8JbwOGt4WzGlNEREexL71PvOKKjmuWX9zqUYyVVrrYsjvbafhY08KaORO84keT4nTWxV0w0T3Ucj4VNvOLMbvq1/4z+XUlZm5gS2ZsZfXfDVcjmsq415mo5py8zMm9j03dC6eLUkOIsU4i1NurlaTyPNruSZhax1r+GeOOeJ3x7Yalb/hquwxiassVzjWlraOZ0E7V36Obu+JeKL1Ka8rt1W6poq3w7ew+NtYzDUYvDzrRXETE9L508PreofHqrkTRUVelNP+p4qjSV3aqmqONd0+lFQeuEajpZOCr0a8POVI4oWlUzcrWks807Va+VyovFNyIU+FK6izTCk72C+A8q7clgZebwHhSVfYst1Ltd5FhamvkNk2fs6eiHA+a/f8R+Or+6UHPVEaSRM2bHIxivY60tXtd6ovOvIvnEa3aeh0V3LLkU5Xfif5n+MMG5R5NYhzixTT2m1U6w06Oa6rrZW/g6aJXaK53f6k4qpi8Pha8TVwKf8A6bEz3aLCZDhpxN+eP+Gnlqnmj855G0vLvLq15VYPosN2Wn2rbTs0VXac5I9fZPcq8VVd5PbFmjD24t0bocaZrmmIznGV43EzrVV1RHJEeqGJ+VznlT5SYDlt1u20xNeY3QUqOd20ES7pJd6qqaIuiadK94x2Y4uMPa4NM/Wn/uqabC7OVZ5j4vXaf1NqYmfXPJT+c+rpQSyWzpvmS2NI75bpHVEErkbX0TnaMqotd6L1OTii9C+MieGxVeGucOndyxzuls+2dwmf4KcLfjSqOOmrlpns545W0vLzGdhzPwtRYkscramjq27Wjl7aJ/tmOb7VyLuVCe2b1F+iLlE8UuNM1yvE5Pi68HiqdKqeqY5Jj1Swryt+TBDmvaJcSYep2x4voo9XRsTT1/GiewX+NPar4urTFZjgIxFPfLflR8WxNh9sKskvRgsZVrh6p9yZ5ejnj2oNZIQSU2eGCYZo3RSx3ylY+N6aOa5JWoqKnQpFsJGmIoieeHRm0VVNeSYuqmdYm3V/bLb8bEcNNS3Kj/WEx18Iu+q019j/ALzX0u2djv3fwf4Pzli0sEyAAACrSfjcPu2+U+xvU7nkT0Nytu/J1L703yIbNp3Q/P279pV0yuT0pAAAAAAANeHL7/TXSfBEP15CF5x94jodWdy/9iVf1KvlSjWYNt8An56nB+YOLPhNn2SEuyX7Ovpczd1f7/hvwT/cl+SJo0AAAAEGPVJ/yhgP3qs8sRFc732/b+TonuTeRjOmj/JCsjLoIAyzyUP1iMD/AM677J5kMv8AvVHShG237vYv8P5w2xGwHFYAAAWFfFSVdM+krEilhnasb4ZURWvaqaKiovFFExExpL7RXVbqiuidJjjiY5EHOUTyHKu31FViHLmBaqicqyTWLX8JF0qsKr7Jv8PFOjUimNyqaZm5h93N2Oj9le6Nbu004POZ0q3Rc5J/FzT693PoiFLap6WaZlax9A+F6skjmYrJGqnFNF3opHuBNM6VN2xiabkRVZmJid0xxwtJObSVWxPdIzRF1cmi6/Eh5mI5Fe3VVOsVL+mlWK0vdEjWyR6ou7qXzFSJ4tVnVGlWjtQzurYJ2Tqj2Ju2tNPD8Qidd77XTFM6RKztkvN1UKr7dNlfH/qh5p4p0V7sa0RVLitYsNXKiJv2kkb5fLqfJ4p1Lf1rc0ryshWuiing7ZdPY68U86HuY1hRt18CeNaNoKiRF7Tm0ROL/MeIp51eq9Gn1VOm5mR6LM9WRq3VNOlRERyvtyqrSJpe+ymyLxdnNdUp8PW6RaNkipLc6lFjp4W68Vf0r/Cmql1h8JdxNWluOLn5EbzraLLsiw/Cx9f1uSmOOqfZ+c8TY5kZyeLNknZFipZ/X96qGolXdJYmpI/+Fn7Le909OpNMJg6MLTxcc8suUto9qMXtDe1ufVtU+TRG6PXPPPr6mWoqdsbtrVXv4bb11X/Qv0OVQAFKo/F5fcr5D5O56p8qGlS7flau9/k+sprKrypfoFY+yo6I+S0PKuAAJDchvC1oxbnDVUV6tdJdqNLVNIkFZC2ViOR8aIuipprvX4zMZVbouX5iuNY0as7ouMxOByem7hbk0VcOI1iZidNJ5k+ewXl53D4f+b4vRJb4Lh/Mjqc1fSTOfS7nvT2nYLy87h8P/N8XojwXD+ZHUfSTOfS7nvT2nYLy87h8P/N8XojwXD+ZHUfSTOfS7nvT2nYLy87h8P8AzfF6I8Fw/mR1H0kzn0u5709p2C8vO4fD/wA3xeiPBcP5kdR9JM59Lue9PadgvLzuHw/83xeiPBcP5kdR9JM59Lue9PadgvLzuHw/83xeiPBcP5kdR9JM59Lue9PadgvLzuHw/wDN8XojwXD+ZHUfSTOfS7nvT2nYLy87h8P/ADfF6I8Fw/mR1H0kzn0u5709p2C8vO4fD/zfF6I8Fw/mR1H0kzn0u5709rWZylrRRWDPXGFvt1LDQ0MFUjYqenYjI405tq6I1NycSEY6mmjE100xpGrrnZG/dxORYW9eqmqqaeOZnWZ455WMyxS8AzvyIv1jsO+81X2LjLZX96p9vya27of7u3+mn+6G0NeBOnHrS3i387L5/PT/AGjjWdzy6ul37gfuln8NPyh8kpr5tc5Jf6umB/5N32ryf4D7rR0OK9tv3hxf4o+UMIeqSfm5gf8Am6n6jDF5z5FHTLYncn+84v8ADT85QSIo6QAAAAAAAZAyRyguWdGN6Wy0mtPQMVJa+udubTw67190vBE6V8ZeYTDVYq5FFO7lRbaPP7Gz2BqxV3jqnipp86eyOX1NruEcM2zBuGrdZLNA2ntlFC2KCNvQ1OletVXVVXpVVNg27dNqiKKI4ocUY3GX8wxNeKxFWtdc6zP/AH4IV8vPOVcQXeny7s9QnragclVdpWru53TtIl9yi7S99U6iMZtieHMWKeTe3/3N8inC2qs4v0/Wq4qOjln27o9XShzUNgj2OandK7XR2qbvEuhHJiORvaiuuauPc+9gDElZg7E9HeLa/mbhQzMqYZNN+rV0VF7ypuXvKVbNyq1VFdO+FhmWDs46zXhr0a0VxMT7W1/KrMajzRwbZ8RUEzXMrWLz1OnGCVu57F8DkVN/WimwbF6m/bi5TyuJc3yu7k+NuYK9vpninnjkn2wjXy4sgXXq3y5h4fptuttujblBGm+WFNFbLp0qxdUX+HwGDzTCcL9fRHHG/tbb7nW00YeqcmxdX1Kp1omeSrlp9vJ6+lCC6tRXwzN4Pbs6/Sn9SLVOi7M6VaO1O1K22rAiokke5Ne9wPUccPE60VrZKGpc7Z5lUXrVU0PHBlcd/p0UJI+akfHI7c1URzmp0DSIkiuqqjWN7cjluu1gewNarpIPuZS6K/r5pNU76cDY1n7Onohwfmn3+/8Ajq/ulGHlKZSz5vcpHDOG6e809ohWyLPI6o7aRWNmftJC1fZO06OrVegwmNseE4um3rpxfm3BsjnNOQ7N4jGzbmue+aREbtZpjThTyR/9JI5a5U2DKzDsFostKscLFR8ksm98z+l716V8nQZuzZow9HAtw1Nm2b4vOsROJxdes8kckRzRHItM5c5bDkrhGa8XiZHzORWUlCxyc7VSabmtTq614IhSxOJowtHDr9kc67yDIMXtDi4w2Gji/iq5KY55/KOVquzKzFvGamMK7EV7n52sqXdrG1e0hjT2MbE6Gonn6SBX71eIuTcr3y7OyjKsNkuDowWFjSmnrmeWZ9cvMFBmWa+S7yhKrI/GLY6yR82Fbi9rK+nTfzS8EmYn7TenrTxGUwGMnC3OPyZ39rXu2Oy9vaLB8K3Gl+jyZ5/9M+qeTmltCoK+mu1DBW0c7KmlnjbLFNGurXsVNUVF6lTQnkTFUaxucc3bVdmuq1cjSqJ0mJ5JhD/lDZc4Xw5ykstsQ2ytp6W+3W90y11pYnbSIkjdKjRPY68F14rvTpI3jLNujF2rlM8czGsfm3rstmuPxezePwd+iZtW7dXBr5uKfq+vnjm3cyZxJGh2pblR/rCY6+EXfVaa+x/3mvpds7Hfu/g/wfnLFpYJkAAAFWk/G4fdt8p9jep3PInoblbd+TqX3pvkQ2bTuh+ft37SrplcnpSAAAAAAAa8OX3+muk+CIfryELzj7xHQ6s7l/7Eq/qVfKlGswbb4BPz1OD8wcWfCbPskJdkv2dfS5m7q/3/AA34J/uS/JE0aAAAACPHKn5Nl0z/AKjDstuvFJaktbJ2vSqje7b21Zpps9WyvxmHx+Bqxk0zTOmjZuxm1tjZem/F61NffODumI0015+lgj+7fxT3Y2j5PKYnxNc8+Gy/0r4H0Wvrg/u38U92No+TyjxNc8+D9K+B9Fr64exyc5Dl/wAsszrBiirxNba2nts6zPhhhka96KxzdEVd3ti6w2VV2L1NyaonRH8/7o2DzfLL2Bt4eqma401mY0jjiUzSSNDur3tjYrnLo1E1VQLd882ztaRwt6OdXevmA7PqVWjbMxE1ciLv4Jr5gKTGxTRzxMfzkqp20nWvR8WgFzBJz0LH8NpqKBi7MnIXBWbVrp1xDaIlqGtTWup05upRdNNEem9d68F1Qs72Es4jy6ePn5UlynaTM8kq1wd6Yp82eOnqn8tEZMeep31EMU1Vg7ErZWx6qtHeGK1yd7baiov+VDB3cm5bVXW3DlndUo4qcxsTrz0Tr8J7WI7jySc1cLVE0U+F5LhE9NpH26Vk6O6F3Iu11dBjasuxVvfRr0J5Z23yDGTrTiYpn/VEx+WnxY/vGXGN7ftw1mErzRxtVWq1bfKiLov7WyWddi9TvonqSTD5rld+OFRiaJ/3U9r4UmGb1CqKtor2Oau0iOpZE4eIpRbr5pZarF4aumYi7T1x2r+bCV9us8S0dhutQqtVF2KGXxe18J7m1XO6mepZ0Y/C2p1uXaY/3R2vR2Hk/wCZ95f/ANnYMvaI7i6WldEz/wD6aIVqMJiat1EsZitpMisTrdxdHsqiflqynhbkG5nYlVi3me32CnXilTPzr9PcxaovjVC/oynE1+VpCG43uj5FhYmMPwrs+qNI650+SQeW/IHwNhOSGqxBPU4srWaLzc/4GmRfe2rqvjcqd4y9nKbNvjufWn4NY5t3S81xsTbwcRZp9XHV1zu9kJI2q1UdjoIaK3UkNFSQpsx09PGjGMTqRE3IZqmmKY0pjSGp7167iLk3b1U1VTvmZ1l9A9KQAAAUqj8Xl9yvkPk7nqnyoaVLt+Vq73+T6ymsqvKl+gVj7Kjoj5LQ8q4AA9dlhmpf8oMRvveG5oIa98DqZXVEKSt2HKiruXp7VC5sYivDV8O3vYLOMlwme4eMLjYmaYnXinTjj/7ZY/t4ZtfvC2fNzC/8bYrnjqQr9G2z/mVe9L1OWvKiz4zaxNHY8Oy2yqrHNWR730DGxQsTi57uhOjwqXFjH43EV8C3pr0MLm+x2yeSYacVjYqind5U6zPNEcr5OKOWLndgy+1VmvbqG33GlfsSwTW5iKnfTrRehU3KU7mZYy1VNFfFMepeYPYPZfMLFOJwvCqoq3TFc/8AfY+Z/bwza/eFs+bmFPxtiueOpffo22f8yr3pSn5G+dmJ86MPYkrMUT0081DVxRQrTwJEiNcxVXVE470M/luKuYqmqbnI0xt7s9gdn8RYt4GJiK6ZmdZ13SyByiscXTLfJ7EOI7JJFFc6JkboXzRpI1FdKxq6tXjuVS9xl2qxYquUb4RjZXLsPm2cWMHiomaKtddJ03RM70GP7eGbX7wtnzcwifjbFc8dTo79G2z/AJlXvS9xllyhOUNm7FdnYYba61ttiSWVXUUbEcqruY1VXRXrvXTvF3YxmPxOve9J09SN5xsvsdkU2ox3Cp75OkfWmfbPq9byV45bGdFguM9vuclHb66B2xLT1Nrax7F76KW9WaYuieDVxT0M7Y7n2zOKtxesRNVM7piuZiVp/bwza/eFs+bmHjxtiueOpX/Rts/5lXvSwpjTGFyx9im44hvD45LlXyc7O6JiMartETc1OG5EMZduVXq5uV75bBy/AWMswtGDw0aUURpGvH8XxCkyIBnfkRfrHYd95qvsXGWyv71T7fk1t3Q/3dv9NP8AdDaGvAnTj1pbxb+dl8/np/tHGs7nl1dLv3A/dLP4aflD5JTXza5yS/1dMD/ybvtXk/wH3WjocV7bfvDi/wAUfKGEPVJPzcwP/N1P1GGLznyKOmWxO5P95xf4afnKCRFHSAAAAAK0FJLUNV7dlkae3evHwHuKdVtXeiJ0h6TLfLK/Zq4ugw9YKZKqqe78JOifgoY+mR69CJ9PBCtZw9d+uKKIYrM86wmT4SrGYurSmN0cszzR62z3IzKGxZLYSpLPb9J62bSSqq3N0fNLpvcvVpwROhPGTrC4ajC2+BT7Z53HG0Gf4naHGTir/FEcVNPJTHN0888r4/KNz4o8jcCVMkT2S4hq1fDbaVd67Spqsjk/Zbr410TpKeOxcYW3r/FO5k9kdm7m0WOiiqNLNHHXPq5o9c/LjaxX1dVfJLlV1dQ+euq5XSzTyLq57naKqqvWqqpBdZq1md7r7vVFiItWo0ppjSIjkiFtDS0lTtRxSSc4iao5eC9/ThoNIniVOHXHHKhRvWGsj2ty7Sxu8nl0PMcU6Ktz69EVJJckjPxcr8cLhm6ztpsNXp7dqZf/AMeoXc2TqRrtzXeJegzWXYzvFzvdc/Vn4S1PtzszOc4OcZhqdb1qPep5Y6Y3x7YbGXUsM1I6FzWywParXNcm0jkVN+vXqTPe5YiaqZiY4phre5WnJ1lyqrn3qy00kmF6mdNlGMVUopNrcxy/sqnsV8XhhmY4KbE98oj6s/B1TsRtZGc26cJiatL9Ee/Ecsevn60cWucxyOY5WOTpapg4nRt6qiK96o6rqHt0dO7TvIieQ9cKVKLNKgqIjHadR4V4iIjSG5nL38wcM/BlL9k02TZ+yp6IcEZr9/xH46v7pQi5fN7r8N534TutsqpKK4UdrZLBPEujmOSaRUVCMZvXVRiKKqZ0mI/N0L3MsPaxeSYmxfp4VFVcxMTyxwYZBovVAbBS5VU1wqaJ9TjbRYJLVG1WxLIif85X8EjXjom/XVO+XsZvRFmKpj6/Mi9zuYYurNarNFemG3xVy6ebpzxz7uX1IW5j5mYgzWxNPe8RVrqqrf2scabooGdDI2+1RPp6SMX79zEV8O5PG6BynKMHkmGjC4OjSmN/PM88zyy8sW7NAACTGRPLIrspcs7rhyupZLvU0zdbG569pErl7Zki8dhvsk076bujOYTMpw9mbdUa8zUO0mwVrO8zt421VwKavtOedN0x653T1sb5bYsu2OuUVhK93ytkr7nV32lfLNIv/wC1uiInQicEROBZWLlV3FUV1zrMzCWZtgcPluzuJwuFo4NFNurSPZPx55bazYLiZqW5Uf6wmOvhF31Wmvsf95r6XbOx37v4P8H5yxaWCZAAABVpPxuH3bfKfY3qdzyJ6G5W3fk6l96b5ENm07ofn7d+0q6ZXJ6UgAAAAAAGvDl9/prpPgiH68hC84+8R0OrO5f+xKv6lXypRrMG2+AT89Tg/MHFnwmz7JCXZL9nX0uZu6v9/wAN+Cf7kvyRNGgAAAAAWy1Tno5Y4u1RVRXyORqbl0XrUC2krmquytSiu/Yp2bS/HvA7o1EjjqNiRjmvTXnVVV0Xd/XXxAX4FCq7Z0DV4LImviRV8qIBbPavrmR0kkUe0ujFemqqmicOreBcRcXU8rWcNU2U0RydO4BIiRVEDkTRqoseifGnkX4wOaXtFlj/AGHrp4F3/wBfoAoyI2Fr4pHKyJXbTJOhq666L4wOu0krJY45Enkl3OexO1ammnkAuZoXOWN0bka5i8XJqmmn/QDmCFYUdq7bVztpV00A7LGi8URfEH3V2RETgmgfHIAAAAAAAAClUfi8vuV8h8nc9U+VDSpdvytXe/yfWU1lV5Uv0CsfZUdEfJaHlXAAAD32T2SeJc6sQNt9ipVbTMcnrq4zIqQUzety9K9TU3qXmGwtzFVcGiPajGfbQ4HZ7D9+xVX1p8mmN9XR6ued0NmuTGSeH8kcLstNnh52ok0fWV8qJztS/Tiq9CJ0NTcn0k3w2FowtHBo9s87kHaDaHGbRYqcRiZ0iPJpjdTHbzzyo/8AqgV3wMzDtDQVtKyqxy5UdRy07kbJTw69ssq9LF3ojV6d6aaKYnOKrPBimY+vyNn9zCxms4iu7bq0wv8AFE7pq5OD645Z5uKUDCJOlk8/U3fzQxl/PwfZqSzJfIudMOau6x98wv4avmy9yx/1ccYe9Q/bxmQzH7rX/wB5UH2D/eLC9M/2y1XEDdmtofJFnwLT5UW+24MukNfNE1JblqmxULUORNpz2LvROhOjRE0UneXTZizEWZ15+fVxxt1Rm1Wa138ytzTE8VHLTwY3aTu9c8ur1WceQWE867SsF7okiuEbVSnulOiNqIV6N/tm/wAK7vAV8Rg7WJp0rjj5+Vhsh2mzDZ67w8LXrRO+mfJnsn1w1xZ48nvE2Rt35u5xevbPO5UpbtTtXmpf4XfsP/hXxakMxWDuYWr63HHO6u2d2pwO0dnhWJ4NyPKonfHRzx6+ti8sEyX9isFyxRdYLZaKGe5XGdVSKlpmK+R+iKq6InHciqe6KKrlXBojWVricVYwdqb+IriiiN8zOkQ9l/Z7zO7gr/8AIX+YufA8R/LnqYH6UZH6Zb96GZOSLlBjfCOe9jud7wpd7VbooqhJKqqpHMjaqxORNVVOldxksuw163iaaq6JiONAduc9yvHZFesYbE0V1zNOkRVEz5UNiq8CZOWmpjE2QWZFViW7zw4Gv0sMlZM9j20L1RzVeqoqbuo19cweImuZiid/M7Xwe02SUYa1TVjLcTFMfxRzQ+b/AGe8zu4K/wDyF/mPHgeI/lz1Lz6UZH6Zb96GyXkz2W4YbyKwjbLrRzW+4U1K5s1LUMVkka849dFReG5UJtgaaqMPRTVGkuStrsRZxee4m/h64qoqq4pjjieKGIuXtgPEePLDhGHDtjrr3LT1U75mUMDpVjRWNRFXThroY3N7Vy7TRFumZ3pz3NMzwWW38TVjL1NuKop04U6a8cobN5PmZz5FY3Ad+2kRFXao3Jonxd4jcYLEfy56m+atqsjp/wD27fvQ7LyfsxIl/DYRvLF/ZjonuXyf0PXgV/8Alz1KM7V5NO7F2/ehcQcnnMGoZI1MBYi9juklonp8Saf0PXgd/wDlz1KM7T5PO/GW/eh8usyOzDt1umr6vBV7pqSCN0s08tE9rI2NTVXKum5EQpThL9MTM0Tp0MnZ2lya/VTbt4uiapnSIiqNZmeR4eRdGOVOKIpawkVXFTMsr5V5B4lzqu0FJaY0o7LT6JV3WoaqQw8NyftO6mp49EMlhsHcxVWlO7nQPPNpcFs7a75fnWufJojfPZHrlsZydybw9kjh2K12OBkqTqi1Fye1OeqJP2nr1dSJuQmWGw9vDUcGjr53Kue5/jNoMTN/F1cUeTTG6mPV+c75XOceathyawbU328SozZdrTUkaoktVNx2GJ5V4Im8+4jEUYajh1//AGp5JkmLz7FRhcLHTPJTHPP5RytX+cOY13zUxrPiK8S7UtQmxFC1fwcEbfYsYnUmvjXVSC4m9XiK5uVuxcgyrD5LhYweGjijfPLM8sz/AN4nj6GqSkmVXa829NHadHUpbUzpxM7eomfrQrQpS0UqytqElREVGRs3qh74o41vrVXEUrJyuernLue5yu8C66lPXj1XkUfU4LvPPJUyI+RW6omiI1NBM6lu3wOPVPnkXcpuPFNBTYDxRVol6pWbNtrJnfjcSJujVV9u1OHWnfTfLMsx3fIixcnjjd63NXdA2QnBXKs2wFP6ury4j+Gefonl5p9SVl8slBiO01VsudLHXW+qYsU1PK3aZI1eKKhn66aa6ZpqjWJaWw+Iu4S7TiLFU010zrExviWuLlMckm6ZR1dRfcPxzXXCD3K7VE2paHX2snW3qf8AH34Zjsuqw88O3x0/J1fsjtvYzyinC4yYoxEdVfrj188dSOhhW1XV3sF8AG5nL38wcM/BlL9k02TZ+yp6IcD5r9/xH46v7pQW9UW/Szh/4Hb9tIRXOPtqeh0d3Kv2Vf8A6n+MIomAbqAAABroA1QD3uQcMk+duBWRMWR/3ZpnbLU1XRJEVV+JFUu8HGuIt9MIztNVFOSYyap/8dXybfjYrhpqW5Uf6wmOvhF31Wmvsf8Aea+l2zsd+7+D/B+csWlgmQAAAVaT8bh923yn2N6nc8iehuVt35Opfem+RDZtO6H5+3ftKumVyelIAAAAAABrw5ff6a6T4Ih+vIQvOPvEdDqzuX/sSr+pV8qUazBtvgE/PU4PzBxZ8Js+yQl2S/Z19Lmbur/f8N+Cf7kvyRNGuNpNrTVNeOgFvPVbEzIY9l0jteK8N2oFFLg9WJtNZEu9u093FUXRdETeBw2ma2BkjNt8iJsuftKxXd9dd/QB2t8qc7NHtN112kRr1cnBEXeBQqadq1r0bTLUKrUdortGtVVXVQOyJMnac7DTf/rgZtOARu24pIo0lnWRm1tyu0TTvdQF9TSrNTxvVNFcm/UDipY58WrE1e1Uc1OtU6P6AUJGrUo6SFGvbIzm3I5dNnj5+AFRi87Ut2V2kiYrXO61XTd9AFSoiWWPRqojkVHIq9aLqBxDC9sr5HvRznIiaNbom7XzgVgAAAAAAAAAAAAAAAFKo/F5fcr5D5O56p8qGlS7flau9/k+sprKrypfoFY+yo6I+S0PKuAAMmcnfBOFcw8z7dYsXXOe20NTuhSHRvriXVNmJXr7Da379N67t2pfYK1avXoouzpCIbVZjmGV5ZcxWXW4rqp368kctWnLp/y2o4TwhZ8D2Oms9it8Frt8CaMggbonfVV4qq9KrvUn1u3Rap4FEaQ4wxuOxOY36sTi65rrnln/ALxR6mHeUlyqLPkrb5bZbnxXXGEzPwVGi6spdeD5tOHebxXvJvMbjcfRhY4NPHV8ulPNk9jMTtBci/eiaMPG+eWr1U/nO6OlrWxNiW6YwvlbeLxWSV1yrJFkmnlXVXL/AEROCIm5EITcrqu1TXXOsy62weDsYCxRhsNTwaKY0iIS/wAvuQphfMjL+wYkosWXOjW50UdQ+J0McrWPVO3anDcjtU8RIrOVWr9qm5FcxrDRWZ90jH5TmF7BXcNTVwKpjXWY1jk5+RJLIHIW2ZB4errbQXCouk1bOk89TUNRmqo3ZaiNTgiJr0rxM3hMHThKJppnXVqXabaa/tNiKL96iKIojSIjj9c8b4XLTuMNDydcTtmejXVC08EaKvsnLMxdE8SKviKWZ1RGFq19XzZTuf2qrm0WHmmPJ4Uz0cGWrkgbsd9jCeL7zga+U94sNxntlxgXVk8DtF8CpwVF6UXcpUt3K7VXDonSVhjcDhsxsVYbF0RXRPJP/eKfW2HcmjldWzN1kFgxAsVpxa1ujW67MNdp0x68HdbPi16JlgcxpxH1LnFV83LG12wt/I5nF4PWvD/Gnp549fWzzinDlqxbYay1XyjhrrZURq2eGdEVqp197Tjr0GWuUU3KZprjWGtsHi8Rgb9OIwtU010zxTG//vqahcy7dYLTj2+UWFqqatsEFU+Oknn0Vz2ounFOKa66L0poprq/Fum7VFqdaXc+UXcZfwFm7j6YpuzETVEc/bzxySyHyOP1jsIe7n+wkLzLfvVHt+SMbefu7iein+6G1MnrjMA4VyN01VE13JqBRq6ptJEr10VehqrpqBRdWyxPex8bNW6Lt7WjURd2/wAYHWOJlVzj3OWR+qOarEVEb3mqu7o+kCnFKkVZHtK1u0itVFlV7t+mmvUBUucLXLC5Y3SqrtnYaum0miroBSayWFE2WU9Ei9fbOA5jk5qZHLJPUSa7GipstRV7wHlM3HO7EGPI3N2VbaaxdEXVN8Ll4+MtMV9jX0T8mf2f/a+E/qUf3Q1C0sjIZ4ZJIW1EbHtc6F6qjZERd7VVN+i8NxruJ0nV3TcpmumaYnSZ5eb1tsmQeL8N46ytslbhSlp7fSU7UjfbYURvreREVHsVE6d+uvTqi9JsTCXbd2zFVqNI5uZw7tLgMdl+aXbOYVTXXrrwp/ijkn/jk3LDPHP/AA7kfh5XXOZtVeqhyvpbRTPRZX79UV37LN29y+LU8YrGW8LTrVv5lzs7sxjtor/AsRwbceVXO6Ojnn1dbWzmvm1iHOPFEt6xBVc4/e2npY9Uhpo9dzGJ5V4r0kGxGIuYmvh1y68yXI8HkOFjC4SnTnnlqnnn/vE8hJPLNFFG/Z2Y9NFRN67tCjNWvEy9Frgzrq6HhcgAABVpaqahqoammlfT1EL0kjljcrXMci6oqKnBUU+xMxOsKddFN2maK41ieKYnlbAuS/yx6PHEFJhfGtSyhxG1EjprhIqNiruhEcvBsn0O6N+4l+AzKLsRbvTpVz8//LmDbHYO5l1VWPyynhWd808tPRz0/GOhKitSnWll9dc2tNsLznO6bGzpv2td2mnWSCdNONpmjh8OOBv5NN+vqaluUDdcHXfNG7y4FtzLfY2v5tFicvNzyIq7cjG+1aq8ETq13a6GvMZVaqvTNmNIdu7L2cysZXapzWvhXd/HviOSJnlmOWWN3ewXwFkljczl7+YOGfgyl+yabJs/ZU9EOB81+/4j8dX90oLeqLfpZw/8Dt+2kIrnH21PQ6O7lX7Kv/1P8YRRMA3UAAAGf+ROlhuGcC2PENpoLtS3WikjiZXQNlRkzNHordpF0VUa5DL5XwKr/AuRExMcrWHdD8LtZR4Xg7lVFVuqJngzMcU8XJ65hPibk+ZaVGu3gWwrr1ULG+RCWTg8PP8A446nNVO1Gd0bsZc96V1hnJTAmC7s26WPCdrttxaio2pp6dEe1F3LovR4j3bwtm1VwqKIiVDGbQZtmFrvGKxNVdHNM8T2FVUw0NNLUzyNhhiar5HvXRGtRNVVV6kQupmIjWWApoqrqiiiNZnihp8zexXFjjNHFV+p11pq+4zTQr1x7So1fiRDXGJuRdvVVxyy7tyLBVZdleHwle+iiInp04/i8iWzOgAABVpPxuH3bfKfY3qdzyJ6G5W3fk6l96b5ENm07ofn7d+0q6ZXJ6UgAAAAAAGvDl9/prpPgiH68hC84+8R0OrO5f8AsSr+pV8qUazBtvm9VRETVVXRE759iNXiqqKY1lPr1OyKenwHilrnRRbVzZptLqv/ACk6NxLsmjS3X0uZO6pXw8fhvwT/AHJZSL26scs9Q5OLWJstTx7vKSFpIi2GrDKyJIu3WN6Jx6t/jRAOahrmVbUjj29vt1TXTRUVN/xLoBRrkSGpjes2yjVVWsjRNvfxXf3wKj380zm5FjYjt+kzlkcviA7xtVKiner3Oa5HNRFbs6Lx4adSKB2rKfbkZLpttai7TEdptIBQpUZAj540VIEbpGipoq69X0IAcyJqPbtuo1emjmu02V8C+ZQK8Ej1nRiSskjazVdhumnV0+EC7ApPpYZHK50bVcvFdOIFRrUY1GtRGtTgiJuA5AAAAAAAAAAAAAAAAAAFKo/F5fcr5D5O56p8qGlS7flau9/k+sprKrypfoFY+yo6I+S0PKuAAO0cj4ZGSRvdHIxUc17V0VqpwVF6xueZiKommqNYlJq4cvHGUuWNBYKOBlNiFkawVV/c7ae9ibmuY3TRHqnFy6796IZ2c2u95iiPK52oLXc1y2nM68ZdnWzM6xb5InliZ5Y5o60aa2tqLlVzVVXPJU1Uz1fLNM5XPe5eKqq71UwczNU6y27bt0WqIt24iKY4oiN0KJ8VEssgOWpbco8s7fhe62Gvuc1FJLzc9NKxrebc5XI3R2/cqqSHB5nTh7MW6qZnRpHafufX88zOvH4e9TRFURrExO+I05GQqj1SHD7YVWDBt0fN0NkqY2p8aIvkLyc6t8lEovT3J8ZM8eKp06JRpz85SuIs+KmnhrIIrVZKR6yU9up3K5NvTTbe5fZO03JuRE1XcYTF465i5iJ4ojkba2Z2QwezVNVVuZru1cU1Tzc0RyQxCY1PACpT1EtJURzwSPhmicj2SRuVrmuTeioqcFPsTMTrDxXRTcpmiuNYnfCR165a+Jb/AJIz4SqmSffJOqUs16Y5EWWl07bVOiRfYqqcUVV4maqzS5Xh+9T5XP6mqMP3PcFhs7jMbc/qY+tFHNXyf7Y3xHP6kbTCNtL6y3244aukFytNdPbrhAqrFU00iskZqmi6OTem5VQ90V1UTwqZ0la4nDWcXamziKIqonfExrE+x7SLOzM2WNH/AH8X2ONU12n3KTh4lLvwnEefPWjc5DknJgrfux2Krs68w4kasmPMRzK7ejYq6Xf8S/1PvhOI8+etSnZ/J5//AFLfux2OFzrx/LHM1uLb9FM1qOa59werl6t+q9KH3wrEefPW8fR3J/RLfux2LNmfOYqyRv8Av1v0qr2uytwk3ovRxPEYvEa+XPWvLmzeS8HWMHb92Oxe1udeYbqJNvG96g7VGu1r5FXdvREXU9+FYjz561n9Hcn9Et+7HY5iz2zDSNJvv2vuw5NEfUXJ6J/lRdB4ViPPnrPo7k/olv3Y7FObO3MJ9FI6PHF9RrNF0ZVyMbuXXr/qJxWI8+et9jZ3JtePCW/djsWcueuY0rURcc3/AHLqn/aEnnKcYvEefPWvqtmcmmNIwdv3Y7F1T5149qZ43w4yv8eyusiLXyabuG/XiVPCsRP8c9aynZzKKeKcJb92Ox37PeOZp1f9+t+he1dGyJXSaOT4z54Xf8+es+jWUaa+B2/djsWV1zgx1V26oppsd3ispqpropYH1r3MlY5NHNVFdvRUPlWJvVRx1zp0q9jIsqtXKarWFoiqJ1iYpjWJjleHLFLWQsqc88T5OR3dmH5oebuUPNvZUs22RPT2MrW8NtE1Tfu370UvcPi7uF173O9E882Zy/aGbU42mdaJ14uKZjlpmeaXi73fLhiS7VNyulZNX3Cpdty1E7lc9y+FfIWtddVyqaq51lIcNhLGBs02MPRFNFO6I4oWJ4XYAAAAAAAi6KipuVOCoBlV/KczAnyzqsD1F4dU2udGx+uJdVqWwpxiSTXVWru46rpu10Mh4dfmzNmZ4vihUbIZRTmdOaUWtK449I8nXztOePV072KjHpq4VNUVAJz4Z9UJw3YsN2q2vwndZZKOkip3PbPEiOVjEaqp8RKqM4t0URTwJ4nOWL7l2NxOJuX4xNERVVM7p5Z1R65TmeNBnxjG23m32yptcVJQpSOiqntc5y7bnaps9HbGHx2KpxdyK6Y00htDY/Zy9szg7mGvXIrmqrhaxrzRHL0MPGNT0AAAPu4GxdW4BxfZ8R25GOrLZUtqI2Sa7L1Ti1dOhU1RfCVbVybNyLlO+GMzLA2s0wd3BXvJriYnt9iTH941jPuWsf8Amm9Iznjm75sNSfopy30iv/17D+8axn3LWP8AzTekPHN3zYP0U5b6RX/69jHOa/K/x9mxaZrRUT01ltE6bM1JbGKxZk/Ze9yq5U7yaIpZYjMr+Ip4M8UepKsk2FyjJLsYiiJuXI3TVx6dERERr62EDFtiAAAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADXhy+/010nwRD9eQhecfeI6HVncv8A2JV/Uq+VKNZg233DtUTVvsk3p4T7DxVHCpmE9PU+aiOTDOKVbG6WRKuGRrGpu7aNdFVfES7J5/V1x63MndSomMXhq+emqOqf+UvXPSKZVdLKr3JuYjVcjfiTykhaSW8DW8zUQRue96dvq9unbf8AVE+MCvWJHU0jHKmu3ojV6trRAOtdsTMaiQtmVzlj1VdFau/pA6TT7NNDI5z2qqbLkjRNVVOO9eHBQOyq5sLEc1WSJI1WNe/acu/f9GoFarp3Sq1ydujeMTl7V3+oHZkLpHtfLomz7GNODe/31ArKmoHDWNZrstRuvUgHYAAAAAAAAAAAAAAAAAAAAAC0uEraehqJnLo1kbnKveRFU+TxQ92qZquU0xyzDStXypPXVMicHyvd8aqaxnjmZfoHajg26Y5ohQPiqAAAAAAAAAAAAAAAAAF5GxlVbWJIjnJDJoqMTVVTq+JUK0ccMbXHBqmF25+rY5JFlgRF3RN36/Emp9U1Jr42XFr1ker5U2Ua5itRE49P+94fXzpokilljXg1y/FxT6NClPFK+tzFVGkvow7DLa1qsbK5sfO7C79ddV85VWM71Okna6jm0RYWxu2kRE2la1d/T4z5E6vtVMxPGq00iSMe96P5hzVRZJpE3+JNyH18fJRFdG3fv8pR3SyGk1URG5dS1rpIUijjSCPTRUb0/wCh7mrmUabM6/WUOBTXbjRNddE1D5pDkPoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKtJ+Nw+7b5T7G9TueRPQ3K278nUvvTfIhs2ndD8/bv2lXTK5PSkAAAAAAA14cvv8ATXSfBEP15CF5x94jodWdy/8AYlX9Sr5Uo1mDbfAJdep8YhSK+4nszpXMdNSx1DEbxXYfov8A6ZfoJJk9X16qeeGgu6nhZnC4fExHk1TE/wC6NfyTxifzjURqVT2puRV0Yn9CWOcXZsMdNVNlWRI9Wqise/VVXxr3gO9KjJqaSLVHsRzm6ou7TinlApsopYkWNrmq1XNk23Lv2t2u7v6fSBW9ZNV6q57nM2lcjN2iKvHyqBVip4od7GNavXpv+MCoAAAAAAAAAAAAAAAAAAAAAAAAAAHh86cRtwnlNi67OfsLT2ydWL/GrFa3/wBSoWuKr73Yrq9Us/s/hJx2bYbDx/FXT1ROs/Bp7Tghrl3Y5AAAAAAAAAAAAAAAAAAF3bV2nzwquiSM1TvLw/qhUp5llfjSdXajkdzSNV1VJJxcjUTTXwr5z2tlaela5GSOcsL2ORUfK/XxcdA+rS4uY6r2mPa7aairsrrvT/aHipc2J3wo08zqWVXonOIrVbsuXRNOJ8ip6rs6zrS6Rq+NjmterUc3ZcidKHzV7m1FWmrhGNTTdrp1nzWVSKKY49HY+PYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq0n43D7tvlPsb1O55E9DcrbvydS+9N8iGzad0Pz9u/aVdMrk9KQAAAAAADX96oLQugzXstUqdrPaWtRfcyya+VCHZzGl+mfU6j7llyKspvW+a5PxphF0wDdABk/kz5g9jXOjD1ze5G0c06UdS5y6NbHImwqr4FVF8RkMDf7zfpqndu60J2vyurNcoxFmiNaojhR008fx3NsbKZZGossr5N29EXZT6P6mwHFSo2mhY3RImIi8e14gVOAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK3qgWPG2DKuiw3DJpV3yrbttRd/MRaOcvjdsIYHN73AsxbjfV+Tcfcxy2cVmteNqj6tqn/wBquKPhq12kNdUAAAAAAAAAAAAAAAAAAA7wyrTzMkRNrZXemumqaHqJ0UblE1xxKktfUTOXt1jb0NZ5z7NXMp02Y/iW6tRV1Xtl63Lqp51lXiimN0CIiJoiaIfHqI03OQ+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXlmpnVt4oadiaumnjjRE6VVyIeqY1qiFviK4t2a655Imfg3JU0XMU8Uf7DEb8SGzY4ofn9XVwqpq51U+vIAAAAAACHHqiOGnS2vCN/Y1VSGWaikcnRtIj2/UcRnOrf1aLnsb+7lGMim7isHM74iqPZxT84QjIq6NAGqouqLoqcFQDapyVc2Y82cpLZUzSpJebc1KC4NVe222J2r1903RfDr1E9y/EeEWImd8cUuLttMknJM2uUUx+rr+tT0Tvj2TxdTM5k0FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRzkjarnKjURN6rwQERrxQ1Vcq3NhM2c3rjV0svOWa2/8AAUOi9q5jFXaenunar4NCA5hiPCL8zG6OKHZ2xWSeJMoot3I0uV/Wq6Z3R7I+OrDhjU9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQuT5hp2Lc6cIW5GK9i3COeRNPaRrzjvoaXuCt98xFFPrRTarGRgckxV7Xj4MxHTVxR822E2G4fAAAAAAAAMWcprALsxcl8Q26GPnK2ni9e0rU4rJF22ieFNpPGY/H2e/wCHqpjfv6k02OzSMpzqxfqnSmZ4NXRVxfCdJ9jVea/drgADL/JgzwlyRzEhqql73YfuGzTXKFu/RmvayonWxV18CqnSZLAYqcLd1nyZ3oHtjs7TtDl026I/W0cdE+vljon56Np1DcKa6UUFZSTMqKWdjZYponate1U1RUXpRUJ9ExVGsbnGVy3XZrm3cjSqJ0mJ5JXweQAAAAAAAAAAAAAAAAAAAAAAAAAAAACL/LVz+bl1hCTCdoqUTEd5iVr1jd21LTLuc5epzt7U8a9Rg8zxneKO9UT9afhDbnc+2ZnNcZGYYmn9Tani/wBVXJHRG+fZDXIQt1eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtvU+8AuuGLL3i6eP8AAW+D1nTuVNyyyb3aeBqaf4yR5NZ1rquzycTRXdTzSLWEs5bRPHXPCnojd1z8k7SWuaQAAAAAAADhURyKipqi8UUDV9ypspX5UZqV8UEKsstzc6toHInao1y9tH/hdqngVCBZhhvB70xG6eOHZuxWexnmVUVVz+st/Vq9m6fbHx1YeMYnwAAllyPuVS3A0kGCcW1Sph+V2zQV8q/iTlX2Dl/8NV6far3uEgy7MO9fqbs/V5J5v+Gktu9i5zKJzPLqf1seVTH8Uc8f6o+PS2BRTMqImSRva+NyI5rmrqiovBUUmG9zDMTTMxMcauAAAAAAAAAAAAAAAAAAAAAAAAAAADD/ACg+UFZ8i8Munncysv8AVMVKC2I7tpHftv6mJ0r08EMfjMZRhKNZ46p3Qm2y+y+J2kxPBp+rap8qrm9Uc8z8N8tXeLcWXTHGI6++3qqfW3KtkWWWV/X0IidCIm5E6EQgdy5VdrmuudZl2PgcFYy7DUYXDU8GimNIj/vLPK+QU18AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK9DQz3Otp6OlidPUzyNiiiYmrnucuiInfVVPsRNU6QpXblFmiq5cnSmI1meaIbW8iMsYspMsbRYERq1jWc/WyN9vO/e/xJuaneahsPCWIw1mLfLy9LiLabOas9zS7jP4d1Pqpjd17+mWQS8RYAAAAAAAAAYu5Q+TFNnVgCotiIyK8UutRbql3tJUT2Kr+y5Ny+JegsMbhYxVrg8sbkz2U2hubO5hTf326uKuOeOfpjfHVytXN5s9bh+61dtuNPJSV1LI6GaCVNHMci6KikAqpmiqaao44doYfEWsVapv2auFTVGsTHLErM8rgAAST5OHLGu2U7aewYk569YVRUbGqLtVFEn8Cr7Jn8K8OhegzeCzKrD/AFLnHT8Yal2r2Dw+dcLF4LS3f5fNq6eafX1tgeC8e2HMOyRXbDtzgulC9PZwu3tXqc3i1e8qEwtXaL1PCtzrDmDMMsxeVX5w+MtzRVHP84ndMdD0pVY0AAAAAAAAAAAAAAAAAAAAAAAdVVGoqquiJvVVAjLn/wAtHD+WsVTaMLvhxFiVEViujdtUtI7re5PZOT9lPGqGDxmZ27GtFrjq+ENt7Mdz/GZtNOJx8Tas/wDtV0RyR659kNfGLcXXjHN/q7zfK+W43KqdtSTyrr4EROCInQibkIfcuV3aprrnWZdQ4HA4bLcPThcJRFNFO6I/7xz63xymvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmLyIMgH1lbHmHfaZW00Kqlphlb/zH8Fn06k3o3v6r0ISbKsHrPhFcdHa0D3R9qIt0TkuEq+tP2kxyR5vt5fVxcqbxKnOQAAAAAAAAAAAI48qnkvxZrUT8R4dijgxXTR6Pj3NbXMTg1V6Hp0L08F6NMJmGAjER3y35UfFtrYnbOrI64wWNnXD1Tv8yefo549sNeVwt1Vaa6eiraeSlq4HrHLBM1WvY5OKKi8FIZVTNM6VRxuq7V23ft03bVUVUzxxMbphbnlWAAHocE5gYiy5u7bnhu71NprE9k6B/ayJ1Pau5yd5UK1q9cs1cK3OksXmOV4PNbPeMbaiun18nRO+PYlnlr6olNBHFSY6sS1C7kW4WnRHL33ROXT4lTwEhsZzMcV6n2x2NI5v3LKapm5lV7T/AE1/lVH5x7UjsH8qLLHGzI/WWLaGmnf/APj3B/raRF6tH6IviVTM28fhrscVce3iaox2x2e5fM99w1Uxz0/Wj4ask0V4obpGklHW01UxU1R0ErXovjRS+iqmrdKJ3MPdszpcomJ9cTC/1TrQ9KJqnWgDVOtAGqdaANU60Aap1oA1TrQBqnWgDVOtAGqdaANU60Aap1oA1TrQBqnWgDVOtAKckrIWq57kY1Oly6INxETVxRDy2Is1sG4SY594xRabcjeLZ6tiP/y66/QW9eItW/LqiPazGFyXMsdOmGw9dXRTOnXuYOx7y+8AYbZJFYIqzFNYm5qwsWCDXvvemvxNUxd7N7FHFR9aWxcs7meb4uYqxcxZp9fHV1RxdcomZtcrbH2bEctHJXJYrK/VFt1sVWI9vU9/sneDVE7xHsRmN/EcWukc0N25JsPlGSTFymjvlyP4quPqjdHz9bCxjGwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJ5L/ACW63NW4wX/EEElJhGB+0iO1a+ucntWfwdbvEnezWAy+rET3y5xU/NqfbPbS1klurB4OeFiJ6qPXPr5o9stidFRU9to4KSlhZT00DEjiijbstY1E0REToREJrERTGkOULlyu9XNy5OtU8czPLKufVMAAAAAAAAAAAADC+fPJgw7nVTPrW7NnxKxukdyhZqkmnBsrfbJ3+KfQYvGYC3io13Vc/a2DsxtljdnaoteXZnfTPJ66Z5J+Etf2aGSuLMork6mxBbHxU6u0hr4UV9PMn8L+vvLoveIdiMLdw06XI9vI6lyXaLLs+tcPB3NZ5aZ4qo6Y/OOJ4UtElAAAAqagVqatqaNdaeomgXrikVvkU+xMxulTrt0XPLpiemF+mLb61ERL1cUROj13J5z33yvzpW3gOF/lU+7HY5++6+/vu5fK5POO+V+dL54DhP5VPux2H33X3993L5XJ5x3yvzpPAcJ/Kp92Ow++6+/vu5fK5POO+V+dJ4DhP5VPux2H33X3993L5XJ5x3yvzpPAcJ/Kp92Ow++6+/vu5fK5POO+V+dJ4DhP5VPux2H33X3993L5XJ5x3yvzpPAcJ/Kp92Ow++6+/vu5fK5POO+V+dJ4DhP5VPux2H33X3993L5XJ5x3yvzpPAcJ/Kp92Ow++6+/vu5fK5POO+V+dJ4DhP5VPux2H33X3993L5XJ5x3yvzpPAcJ/Kp92Ow++6+/vu5fK5POO+V+dJ4DhP5VPux2H33X3993L5XJ5x3yvzpPAcJ/Kp92Ow++6+/vu5fK5POO+V+dJ4DhP5VPux2H33X3993L5XJ5x3yvzpPAcJ/Kp92OxQqMQXWsTSe51s6dUlQ93lU+TXVO+VSnC4ejyLdMdEQsF3rqu9etTwugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL2zWS4YhuMNvtdFPcK2Z2zHT00ave5e8iHumiqueDTGsrbEYizhLc3r9cU0xvmZ0hMfITkNrDLTXzMRGuVqo+KxRu1Tvc85Pqp416CTYPKdNK8R1drQO0/dJ4UVYTJeibk/4x+c+yOVMqlpIaGmip6aFkFPE1GRxRtRrWNTgiInBCTRERGkOfq66rlU11zrM75lVPrwAAAAAAAAAAAAAAAWtztdHeqGWiuFJDW0kqbMkFRGj2OTqVF3KeaqYqjSqNYVrN67h7kXbNU01RumJ0lHTMXkJ4JxU+Wqw/PUYWrHarzcP4WmVfcOXVPEqJ3jC38ps3OO39Wfg2xlPdLzXAxFvGRF6n18VXXG/2wj7ivkJ5jWJ73WxLfiCBOC00/NSL4Wv0+hVMNcyjEUeTpLaeB7peSYmIi/wrU+uNY641+TG1z5POZVncqVOCrxu9tFTLKnxs1QsasFiad9EpfZ2ryO/H1MXR7Z0+ej5D8o8cRu0dg++ovwdN6JS8GvR/BPVK+jPcpndirfv09rjsT417kL782zeiPB73mT1S++PMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379PadifGvchffm2b0R4Pe8yeqTx5lXpVv36e07E+Ne5C+/Ns3ojwe95k9UnjzKvSrfv09p2J8a9yF9+bZvRHg97zJ6pPHmVelW/fp7TsT417kL782zeiPB73mT1SePMq9Kt+/T2nYnxr3IX35tm9EeD3vMnqk8eZV6Vb9+ntOxPjXuQvvzbN6I8HveZPVJ48yr0q379Pau6TJDMGuejIcF3x7l66CRPKh7jCYid1E9ShXtHk1uNasXb96O17TDvI6zUxC9u1h5LXGvGS41DI0TxIqu+guaMsxVf8OnSj2L2/wBn8LHFf4c81MTPx4o+LNuBPU9YYnxz4vxGsyIqK6jtTNlF7yyP3/E0ytnJo33auprnM+6rXVE0Zbh9P9Vc/wCMdqT2AMp8J5YUXrbDdlp7fqmj50btTSe6kXVy/GZ6zh7WHjS3To03mmeZjnNfDx16auaN0R0RHE9cXLBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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 // @iconbak https://pic.616pic.com/ys_bnew_img/00/35/79/Gv93yQh7v6.jpg // @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js // @require https://update.greasyfork.icu/scripts/498124/1396763/video.js // @require https://update.greasyfork.icu/scripts/498149/1395619/%E4%BF%A1%E6%81%AF%E6%9F%A5%E7%9C%8B%E5%99%A8.js // @supportURL https://github.com/ChinaGodMan/UserScripts/issues // @homepageURL https://github.com/ChinaGodMan/UserScripts // @downloadURL https://update.greasyfork.icu/scripts/497682/MissAv%E6%89%B9%E9%87%8F%E5%A4%87%E4%BB%BD%E6%94%B6%E8%97%8F%E8%A7%86%E9%A2%91.user.js // @updateURL https://update.greasyfork.icu/scripts/497682/MissAv%E6%89%B9%E9%87%8F%E5%A4%87%E4%BB%BD%E6%94%B6%E8%97%8F%E8%A7%86%E9%A2%91.meta.js // ==/UserScript== (function () { 'use strict' var controlButton = createButton('备份', '10px', '10px') var buttonA = createButton('备份当前', '70px', '10px') var buttonB = createButton('备份片单', '130px', '10px') var buttonC = createButton('设置选项', '190px', '10px') var webdavbutton = createButton('WebDav', '250px', '10px') // 设置按钮的背景颜色和样式 controlButton.style.backgroundColor = 'blue' // 控制按钮改为蓝色背景 buttonA.style.backgroundColor = 'green' buttonB.style.backgroundColor = 'blue' buttonC.style.backgroundColor = 'red' webdavbutton.style.backgroundColor = 'blue' // 隐藏初始的三个按钮 buttonA.style.display = 'none' buttonB.style.display = 'none' buttonC.style.display = 'none' webdavbutton.style.display = 'none' // 添加按钮到页面 document.body.appendChild(controlButton) document.body.appendChild(buttonA) document.body.appendChild(buttonB) document.body.appendChild(buttonC) document.body.appendChild(webdavbutton) // 控制按钮的点击事件 controlButton.addEventListener('click', function () { if (buttonA.style.display === 'none') { // 显示三个按钮 buttonA.style.display = 'block' buttonB.style.display = 'block' buttonC.style.display = 'block' webdavbutton.style.display = 'block' controlButton.innerHTML = '隐藏' } else { // 隐藏三个按钮 buttonA.style.display = 'none' buttonB.style.display = 'none' buttonC.style.display = 'none' webdavbutton.style.display = 'none' controlButton.innerHTML = '备份' } }) webdavbutton.addEventListener('click', function () { // 点击按钮时执行的操作 WebDAVManager.listFilesAndFolders(webdavfold) }) // 按钮A的点击事件 buttonA.addEventListener('click', function () { resetGlobalVariables() singleFileDownload = true window.showLogContainer() var currentDate = new Date() var currentTime = currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate() + '_' + currentDate.getHours() + '-' + currentDate.getMinutes() + '-' + currentDate.getSeconds() if (useDefaultTitle) { name = document.querySelector('meta[name="twitter:title"]').content } else { const twitterTitleContent = document.querySelector('meta[name="twitter:title"]').content name = prompt('请输入自定义名称:', twitterTitleContent) if (name === null) { name = twitterTitleContent } } inurl = window.location.href const defaultPages = getTotalPagesd() const totalPages = setTotalPage(defaultPages) allpages = totalPages //const delay = settime(); if (totalPages) { start(totalPages) } }) // 按钮B的点击事件 buttonB.addEventListener('click', function () { // 点击按钮时执行的操作 resetGlobalVariables() fetchJsonData() }) // 按钮C的点击事件 buttonC.addEventListener('click', function () { createSettingsUI() // 这里可以添加按钮C点击后的具体操作,比如打开链接或执行其他动作 }) // 创建按钮的辅助函数 function createButton(text, top, left) { var button = document.createElement('button') button.innerHTML = text button.style.position = 'fixed' button.style.bottom = top button.style.right = left button.style.zIndex = '1000' button.style.padding = '10px' button.style.border = 'none' button.style.cursor = 'pointer' button.style.color = '#fff' button.style.fontSize = '14px' button.style.fontWeight = 'bold' button.style.textAlign = 'center' button.style.width = '100px' // 调整按钮宽度 return button } // 全局变量 var allResults = [] // 存储所有的结果数据 var zip = new JSZip() // 创建一个压缩文件实例 var allzip = new JSZip() // 另一个可能的压缩文件实例 var imgFolder = zip.folder('img') // 在 zip 中创建一个名为 "img" 的文件夹,用于存储图片文件 var allimgFolder = allzip.folder('img') // 在 allzip 中创建一个名为 "img" 的文件夹,可能用于另一个压缩文件的图片存储 var ALLfiledown = false // 标识是否所有文件已下载完毕的布尔变量 var videos = [] // 存储视频文件或相关信息的数组 var finalData = [] // 存储最终处理数据的数组 var inurl = '' // 当前下载地址的变量 var pendingRequests = 0 // 当前待处理的请求数量 var delayTime // 延迟时间,以毫秒为单位,用于控制异步操作的时间间隔 var currentPage = 1 // 当前处理的页数,可能用于分页处理或其他进度跟踪 var currentUrlIndex = 0 // 当前处理的 urls 数组中的索引位置 var name = '' // 当前下载的名称 var urls = [] // 存储需要处理的网址数组 var a = -1 // 循环中的计数或索引,初始值为 -1 var allZipContents = [] // 存储所有压缩文件内容的数组 var singleFileDownload = false // 标识是否为单个文件下载模式的布尔变量 var names = [] // 存储下载名称列表的数组 var allpages = 0 // 存储总页数或其他页面处理相关信息的变量 var modalContainer = null // 存储模态窗口容器的全局变量,用于显示下载进度或其他信息 var shouldReplace = false // 控制是否在下载大图时进行替换操作的布尔变量 var temporaryData = [] var saveJson = false var useDefaultTitle = true var pageCount = true var saveVideoInfo = false var saveImage = false var downloadLog = {} var errorLogs = {} var downloadLogFileA = false // 这里设置为 true 时载日志 var webdavfold = 'missavsave' //var webdavfold="1111"; var savetowebdav = false var webdavUrl = '' var webdavUsername = '' var webdavPassword = '' var deleteSelected = false ini()//读取配置 function resetGlobalVariables() { zip = new JSZip() // 重置为一个新的 JSZip 实例,用于创建新的压缩文件 allzip = new JSZip() // 可能是另一个新的 JSZip 实例,用于其他用途的压缩文件 if (saveImage) { imgFolder = zip.folder('img') // 在 zip 中创建一个名为 "img" 的文件夹,用于存储图片文件 allimgFolder = allzip.folder('img') // 在 allzip 中创建一个名为 "img" 的文件夹,可能用于另一个压缩文件的图片存储 } downloadLog = {} errorLogs = {} ALLfiledown = false // 重置为 false,表示所有文件未下载完毕 videos = [] // 清空存储视频文件或相关信息的数组 finalData = [] // 清空存储最终处理数据的数组 inurl = '' // 重置当前下载地址为空字符串 pendingRequests = 0 // 重置待处理的请求数量为 0 currentPage = 1 // 重置当前处理的页数为 1 currentUrlIndex = 0 // 重置当前处理的 urls 数组索引为 0 name = '' // 重置当前下载的名称为空字符串 urls = [] // 清空存储需要处理的网址数组 a = -1 // 重置循环中的计数或索引为 -1 allZipContents = [] // 清空存储所有压缩文件内容的数组 singleFileDownload = false // 重置为 false,表示不是单个文件下载模式 names = [] // 清空存储下载名称列表的数组 allpages = 0 // 重置存储总页数或其他页面处理相关信息的变量为 0 temporaryData = [] } async function processUrls() { //delayTime = 20; let completedTasks = 0 // 计数已完成的任务数量 for (const url of urls) { a = a + 1 // 每次循环递增 a inurl = url console.log('正在处理网址:', url, names[a]) window.addToLog('处理:' + url + names[a], 'info') name = names[a] try { const totalPages = await getTotalPages(url) // 等待 getTotalPages 返回结果 console.log('Total pages for', url, ':', totalPages) // 显示总页数 window.addToLog(name + ' 总页数:' + url + totalPages, 'info') allpages = totalPages start(totalPages) // 启动处理流程 // 等待当前页面的请求完成 while (pendingRequests > 0) { await new Promise(resolve => setTimeout(resolve, 100)) // 每隔 100 毫秒检查一次是否所有请求都已完成 } completedTasks++ // 标记当前任务已完成 } catch (error) { console.error('Error processing URL:', url, error) // 处理错误信息 allpages = 1 start(1) // 启动处理流程 while (pendingRequests > 0) { await new Promise(resolve => setTimeout(resolve, 100)) // 每隔 100 毫秒检查一次是否所有请求都已完成 } completedTasks++ // 标记当前任务已完成 } } // 如果所有任务都已完成且 urls 数组不为空,则调用下载函数 if (completedTasks === urls.length && urls.length !== 0) { downloadAllZips() } } function getAllCookies() { return document.cookie } // 获取指定 JSON 数据的函数 function fetchJsonData() { const cookies = getAllCookies() //alert(cookies); console.log('Current page cookies:', cookies) // 构建 API URL const missAvDomain = window.location.hostname const apiUrl = `https://${missAvDomain}/api/playlists/dfe-057` // 发送带有 cookies 的请求 GM_xmlhttpRequest({ method: 'GET', url: apiUrl, headers: { 'Cookie': cookies }, onload: function (response) { if (response.status === 200) { try { const jsonResponse = JSON.parse(response.responseText) if (jsonResponse && Array.isArray(jsonResponse.data)) { createReportUI(jsonResponse.data, 500) // 假设每页显示 10 个项目 // 调用 processUrls 函数处理 URLs } else { console.error('JSON 格式无效') showModal('JSON 格式无效', 2000) } } catch (error) { console.error('Error parsing JSON:', error) showModal('解析错误' + error, 2000) } } else { console.error('Request failed with status:', response.status) showModal('解析错误', 2000) } }, onerror: function (error) { showModal('解析错误' + error, 2000) } }) } function processUrl(url) { // 检查是否包含 `page=` 参数 var pageIndex = url.indexOf('page=') if (pageIndex !== -1) { // 找到 `page=` 参数并删除它及其后的所有内容 var baseUrl = url.substring(0, pageIndex + 5) // +5 to include `page=` return baseUrl } else { // 检查是否已有其他参数 if (url.includes('?')) { // 有其他参数,添加 `&page=` return url + '&page=' } else { // 没有其他参数,添加 `?page=` return url + '?page=' } } } function settime() { // 让用户输入延时时间 delayTime = prompt('请输入每页请求的延时时间(毫秒):', '1000') // 检查用户是否取消输入 if (delayTime === null) { alert('输入取消') return } delayTime = parseInt(delayTime) // 检查输入的延时时间是否有效 if (isNaN(delayTime) || delayTime <= 0) { alert('请输入有效的延时时间(正整数)!') return } // 返回有效的延时时间 return delayTime } function getTotalPagesd() { // 获取总页数 var totalPagesElement = document.querySelector('#price-currency') var totalPagesText = totalPagesElement ? totalPagesElement.innerText : '' var totalPages = parseInt(totalPagesText.replace('/', '').trim(), 10) // 如果获取总页数失败,则返回 1 if (isNaN(totalPages) || totalPages <= 0) { totalPages = 1 } return totalPages } function getTotalPages(url) { return new Promise((resolve, reject) => { // 如果没有提供 URL,则使用当前页面的 URL if (!url) { url = window.location.href } // 发起 GM_xmlhttpRequest 请求获取页面内容 GM_xmlhttpRequest({ method: 'GET', url: url, headers: { 'Cookie': document.cookie }, onload: function (response) { // 处理响应 if (response.status === 200) { const parser = new DOMParser() const doc = parser.parseFromString(response.responseText, 'text/html') const totalPagesElement = doc.querySelector('#price-currency') // 替换为实际选择器 if (totalPagesElement) { const totalPagesText = totalPagesElement.innerText const totalPages = parseInt(totalPagesText.replace('/', '').trim(), 10) resolve(totalPages) // 成功时返回总页数 } else { window.addToLog('页面中没有找到总页数,默认为1页', 'warning') reject('Total pages element not found') // 页面中没有找到总页数元素 } } else { window.addToLog('请求失败', 'warning') reject(`Request failed with status ${response.status}`) // 请求失败 } }, onerror: function () { window.addToLog('请求出错', 'warning') reject('Request failed') // 请求出错 } }) }) } // 设置总页数 function setTotalPage(defaultPages) { if (!pageCount) { return defaultPages } const inputPages = parseInt(prompt(`当前 ${name} 总页数为 ${defaultPages}。请输入你想要抓取的页数(不输入抓取全部):`, defaultPages), 10) if (isNaN(inputPages) || inputPages <= 0) { return defaultPages } return inputPages } // 开始处理页面抓取 function start(totalPages, callback) { const pages = Array.from({ length: totalPages }, (_, i) => i + 1) pendingRequests = pages.length fetchPage(pages.shift(), pages, callback) } // 点击按钮时执行操作 // 异步获取页面内容 function fetchPage(pageNum, pages, callback) { const pageUrl = `${processUrl(inurl)}${pageNum}` console.log(`正在获取第 ${pageNum} 页的内容...`) //showModal(`正在获取${name} 第 ${pageNum} / ${allpages}页 `); if (a !== -1) { showModal(`${a + 1}/${names.length} 正在获取 ${name} 第 ${pageNum} / ${allpages} 页`) } else { showModal(`正在获取 ${name} 第 ${pageNum} / ${allpages} 页`) } GM_xmlhttpRequest({ method: 'GET', url: pageUrl, headers: { 'Cookie': document.cookie }, onload: function (response) { if (response.status === 200) { processPageContent(response.responseText, pageNum, pages, callback) } else { pendingRequests-- checkIfComplete(callback) if (pages.length > 0) { setTimeout(() => fetchPage(pages.shift(), pages, callback), delayTime) } } } }) } //获取视频信息 function extractInformation(htmlContent) { let data = {} // 创建一个对象来存储提取的数据 let xhr = new XMLHttpRequest() xhr.open('GET', htmlContent, false) // 同步方式打开请求 xhr.send() // 创建一个虚拟的
元素来加载 HTML 内容 let tempDiv = document.createElement('div') tempDiv.innerHTML = xhr.responseText // 获取所有包含信息的父元素列表 let parentElements = tempDiv.querySelectorAll('div.space-y-2 > div') if (parentElements.length > 0) { let allInfo = {} // 初始化一个空对象来存储所有信息 // 遍历每个包含信息的
元素 parentElements.forEach(div => { let span = div.querySelector('span') // 获取第一个 元素 if (span) { let category = span.textContent.trim() // 获取主分类名称 if (!allInfo[category]) { allInfo[category] = [] // 初始化一个空数组来存储该分类下的所有信息 } // 查找所有的 元素和 元素 if (element.tagName === 'A') { info['name'] = element.textContent.trim() // 获取名称 info['link'] = element.href.trim() // 获取链接 } else if (element.tagName === 'TIME') { info = element.textContent.trim() // 如果是 元素,则尝试获取 标签内的文本内容 if (div.querySelectorAll('a').length === 0) { let spanText = div.querySelector('span.font-medium') if (spanText) { let info = spanText.textContent.trim() allInfo[category].push(info) } } } }) // 提取 class="mb-1 text-secondary break-all line-clamp-2" 的内容 let descriptionElement = tempDiv.querySelector('.mb-1.text-secondary.break-all.line-clamp-2') let descriptionContent = descriptionElement ? descriptionElement.textContent.trim() : '' allInfo['简介'] = descriptionContent // 将所有信息存储到 data 对象中 data['videosinfo'] = allInfo // 查找包含 x-cloak 和 x-show="currentTab === 'magnets'" 的第二个元素 let secondElement = tempDiv.querySelector('div[x-cloak][x-show="currentTab === \'magnets\'"]') if (secondElement) { let linksAndInfo = [] // 遍历第二个元素内的 元素 secondElement.querySelectorAll('a[rel="nofollow"]').forEach(a => { let linkInfo = { name: a.textContent.trim(), link: a.href.trim() } // 查找相邻的 元素,获取大小和日期信息 let sizeTd = a.closest('td').nextElementSibling if (sizeTd && sizeTd.classList.contains('font-mono')) { linkInfo['size'] = sizeTd.textContent.trim() // 获取大小信息 } let dateTd = sizeTd ? sizeTd.nextElementSibling : null if (dateTd && dateTd.classList.contains('hidden')) { linkInfo['date'] = dateTd.textContent.trim() // 获取日期信息 } let nextSibling = a.nextElementSibling // 循环处理所有紧邻的元素 while (nextSibling && nextSibling.tagName === 'SPAN') { let spanText = nextSibling.textContent.trim() linkInfo['name'] += ' ' + spanText // 将元素的文本内容追加到name中 nextSibling = nextSibling.nextElementSibling // 继续查找下一个兄弟元素 } linksAndInfo.push(linkInfo) }) // 将第二个元素的链接和信息添加到 data 中 data['secondElementLinksInfo'] = linksAndInfo } else { console.error('未找到包含 x-cloak 和 x-show="currentTab === \'magnets\'" 的第二个元素。') } return data // 返回结构化的数据 } else { console.error('未找到匹配的父元素 div.space-y-2') return null // 如果未找到匹配的父元素,返回 null } } ///大 // 使用XMLHttpRequest获取页面内容 function fetchPageforinfo(url) { let xhr = new XMLHttpRequest() xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { extractInformation(xhr.responseText) // 将获取的页面内容传递给提取信息的函数 } else { console.error('请求失败:' + xhr.status) } } } xhr.open('GET', url, true) xhr.send() } // 处理获取到的页面内容 function processPageContent(htmlContent, pageNum, pages, callback) { const parser = new DOMParser() const doc = parser.parseFromString(htmlContent, 'text/html') const divElements = doc.querySelectorAll('div.relative.aspect-w-16.aspect-h-9.rounded.overflow-hidden.shadow-lg') const logEntry = { url: `${processUrl(inurl)}${pageNum}`, elementsFetched: divElements.length } // 如果当前名称的日志组不存在,则创建一个新数组 if (!downloadLog[name]) { downloadLog[name] = [] } // 将日志条目添加到日志数组中 downloadLog[name].push(logEntry) if (divElements.length === 0) { const logEntry = { url: `${processUrl(inurl)}${pageNum}`, elementsFetched: 0, // 这里可以根据实际需求设置其他信息 errorMessage: `获取第 ${pageNum} 页失败。` } if (!errorLogs[name]) { errorLogs[name] = [] } errorLogs[name].push(logEntry) console.log(`获取第 ${pageNum} 页失败。`) window.addToLog(`${name}${processUrl(inurl)}${pageNum}+获取失败 数量:` + divElements.length, 'error') } divElements.forEach(div => { var imgUrl = div.querySelector('img').getAttribute('data-src') if (shouldReplace) { imgUrl = imgUrl.replace('cover-t.jpg', 'cover-n.jpg') } const video = { fileName: div.querySelector('a').getAttribute('alt'), imgUrl: imgUrl, videoUrl: div.querySelector('video').getAttribute('data-src'), markContent: Array.from(div.querySelectorAll('span')).map(mark => mark.textContent).join(' '), altText: div.querySelector('img').getAttribute('alt'), jumpUrl: div.querySelector('a').getAttribute('href') } if (saveVideoInfo) { video.info = extractInformation(video.jumpUrl) //showBanner(`正在获取 ${video.fileName} 信息`); window.addToLog(`正在获取 ${video.fileName} 信息`, 'info') console.log() } if (video.imgUrl && video.altText) { videos.push(video) if (saveImage) { window.addToLog('保存' + video.imgUrl, 'info') pendingRequests++ GM_xmlhttpRequest({ method: 'GET', url: video.imgUrl, responseType: 'blob', onload: function (response) { if (response.status === 200) { if (saveImage) { if (singleFileDownload) { console.log('这是单个文件下载') imgFolder.file(`${video.fileName}.jpg`, response.response, { binary: true }) } else { console.log('这是批量文件下载') allimgFolder.file(`${video.fileName}.jpg`, response.response, { binary: true }) } } pendingRequests-- checkIfComplete(callback) } else { pendingRequests-- checkIfComplete(callback) } } }) } } else { pendingRequests-- checkIfComplete(callback) } }) showModal(`获取第 ${pageNum} 页的内容完成,等待 ${delayTime} 毫秒加载第 ${pageNum + 1} 页。`) pendingRequests-- checkIfComplete(callback) if (pages.length > 0) { setTimeout(() => fetchPage(pages.shift(), pages, callback), delayTime) } else { } } closeModal() function downloadLogFile() { if (!downloadLogFileA) { console.log('日志下载已被跳过') return } if (Object.keys(errorLogs).length === 0) { // 如果错误日志为空,直接下载正常日志文件 const logBlob = new Blob([JSON.stringify(downloadLog, null, 4)], { type: 'application/json' }) const logUrl = URL.createObjectURL(logBlob) const logLink = document.createElement('a') logLink.href = logUrl logLink.download = 'download_log.json' logLink.click() URL.revokeObjectURL(logUrl) } else { // 创建一个JSZip实例 const zip = new JSZip() // 添加正常日志文件到压缩包 const logBlob = new Blob([JSON.stringify(downloadLog, null, 4)], { type: 'application/json' }) zip.file('download_log.json', logBlob) // 添加错误日志文件到压缩包 const errorLogBlob = new Blob([JSON.stringify(errorLogs, null, 4)], { type: 'application/json' }) zip.file('error_log.json', errorLogBlob) // 生成压缩包并触发下载 zip.generateAsync({ type: 'blob' }).then(function (content) { const zipUrl = URL.createObjectURL(content) const link = document.createElement('a') link.href = zipUrl link.download = 'logs.zip' link.click() URL.revokeObjectURL(zipUrl) }) } } function sanitizeFileName(name) { return name.replace(/[\\/:*?"<>|]/g, '_') } function checkIfComplete(callback) { if (pendingRequests === 0) { const additionalInfo = { timestamp: new Date().toISOString(), inurl: inurl } if (singleFileDownload) { showModal('获取完毕,正在生成单个文件...') finalData = { info: additionalInfo, video: videos } if (saveJson) { zip.file('data.json', JSON.stringify(finalData, null, 4)) } if (savetowebdav) { WebDAVManager.uploadFile(webdavfold, `${sanitizeFileName(name)}.json`, JSON.stringify(finalData, null, 4)) } const jsonIndexContent = generateJsonIndexContent(finalData) const numFiles = Object.keys(zip.files).length // 获取压缩包中文件的数量 if (numFiles === 0) { const htmlContent = jsonIndexContent // 替换为实际的HTML内容 const htmlBlob = new Blob([htmlContent], { type: 'text/html' }) const htmlUrl = URL.createObjectURL(htmlBlob) const a = document.createElement('a') a.href = htmlUrl a.download = `${sanitizeFileName(name)}.html` a.click() closeModal() downloadLogFile() if (callback) callback() } else { zip.file(`${sanitizeFileName(name)}.html`, jsonIndexContent) // 生成并下载单个文件 zip.generateAsync({ type: 'blob' }, function updateCallback(metadata) { const progress = metadata.percent.toFixed(2) showModal(`压缩进度: ${progress}%`) }).then(content => { const zipUrl = URL.createObjectURL(content) const a = document.createElement('a') a.href = zipUrl a.download = `${name}.zip` a.click() URL.revokeObjectURL(zipUrl) closeModal() downloadLogFile() if (callback) callback() }) } } else { finalData = { info: additionalInfo, video: videos } if (saveJson) { allzip.file(`${sanitizeFileName(name)}.json`, JSON.stringify(finalData, null, 4)) } if (savetowebdav) { WebDAVManager.uploadFile(webdavfold, `${sanitizeFileName(name)}.json`, JSON.stringify(finalData, null, 4)) } const jsonIndexContent = generateJsonIndexContent(finalData) allzip.file(`${sanitizeFileName(name)}.html`, jsonIndexContent) finalData = [] videos = [] if (callback) callback() } } } function downloadAllZips() { if (singleFileDownload === false) { showModal('获取完毕,正在生成压缩文件...') const numFiles = Object.keys(allzip.files).length // 获取压缩包中文件的数量 if (numFiles === 1) { // 如果压缩包中只有一个文件,直接处理该文件 const fileName = Object.keys(allzip.files)[0] // 获取唯一的文件名 const file = allzip.files[fileName] // 根据文件类型获取文件内容 file.async('blob').then(content => { // 创建一个Blob对象,并下载 const blob = new Blob([content]) const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = fileName document.body.appendChild(a) // 添加到文档中以确保点击有效 a.click() document.body.removeChild(a) // 下载完成后移除元素 URL.revokeObjectURL(url) closeModal() }).catch(error => { console.error('Error fetching file content:', error) closeModal() }) downloadLogFile() return // 结束函数执行,不生成压缩包 } allzip.generateAsync({ type: 'blob' }, function updateCallback(metadata) { const progress = metadata.percent.toFixed(2) showModal(`压缩进度: ${progress}%`) }).then(content => { const zipUrl = URL.createObjectURL(content) const a = document.createElement('a') a.href = zipUrl a.download = `批量备份${urls.length}个片单.zip` a.click() URL.revokeObjectURL(zipUrl) closeModal() downloadLogFile() if (callback) callback() }) // 如果 singleFileDownload 等于假,则执行这里的代码 } } function showBanner(text) { // 查找现有的横幅元素 var existingBanner = document.querySelector('.banner') if (existingBanner) { // 如果横幅已经存在,直接更新文本内容 existingBanner.textContent = text } else { // 如果横幅不存在,创建一个新的横幅 var banner = document.createElement('div') banner.className = 'banner' // 添加一个类名以便识别 banner.style.position = 'fixed' banner.style.bottom = '20px' // 距离底部的距离 banner.style.left = '20px' // 距离左侧的距离 banner.style.width = 'auto' // 根据文本自动调整宽度 banner.style.backgroundColor = 'rgba(255, 255, 255, 0.9)' banner.style.color = '#000' // 黑色文本 banner.style.textAlign = 'center' banner.style.padding = '20px' banner.style.borderRadius = '8px' banner.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.1)' banner.style.zIndex = '9999' banner.textContent = text // 将传入的文本设置为横幅内容 document.body.appendChild(banner) // 将横幅添加到文档的末尾 // 3秒后移除横幅提示 setTimeout(function () { banner.remove() }, 3000) } } // 创建或更新模态窗口 function showModal(message, autoCloseDelay = 0) { // 如果模态窗口不存在,则创建新的模态窗口 if (!modalContainer) { modalContainer = document.createElement('div') modalContainer.className = 'modal-container' modalContainer.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: rgba(255, 255, 255, 0.9); border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); z-index: 9999; padding: 20px; ` document.body.appendChild(modalContainer) } // 更新模态窗口的内容 modalContainer.textContent = message // 自动关闭模态窗口 if (autoCloseDelay > 0) { setTimeout(closeModal, autoCloseDelay) } } // 关闭模态窗口 function closeModal() { // 如果模态窗口存在,则从 DOM 中移除 if (modalContainer) { document.body.removeChild(modalContainer) modalContainer = null // 将变量重置为 null,以便下次创建新的模态窗口 } } // 创建JSONindex function createReportUI(data, itemsPerPage) { temporaryData = data // 创建全屏遮罩层 const overlay = document.createElement('div') overlay.className = 'overlay' overlay.style.cssText = ` position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 1); /* 全黑不透明背景 */ z-index: 9999; /* 确保遮罩层位于所有内容之上 */ ` // document.body.appendChild(overlay); const modalContainer = document.createElement('div') modalContainer.className = 'modal-container' modalContainer.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: rgba(255, 255, 255, 1); border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); z-index: 10000; /* 确保弹出框位于遮罩层之上 */ padding: 20px; width: 80%; max-width: 800px; ` const title = document.createElement('h2') title.textContent = `当前共有片单数量: ${temporaryData.length}` title.style.textAlign = 'center' modalContainer.appendChild(title) const closeButton = document.createElement('button') closeButton.textContent = '×' closeButton.style.position = 'absolute' closeButton.style.top = '10px' closeButton.style.right = '10px' closeButton.style.backgroundColor = 'transparent' closeButton.style.border = 'none' closeButton.style.fontSize = '24px' closeButton.style.cursor = 'pointer' modalContainer.appendChild(closeButton) closeButton.addEventListener('click', () => { // document.body.removeChild(overlay); // 移除遮罩层 document.body.removeChild(modalContainer) // 移除模态框 }) const tableContainer = document.createElement('div') tableContainer.style.cssText = ` max-height: 60vh; overflow-y: auto; ` modalContainer.appendChild(tableContainer) const table = document.createElement('table') table.style.width = '100%' table.style.borderCollapse = 'collapse' table.style.fontSize = '16px' tableContainer.appendChild(table) const thead = document.createElement('thead') table.appendChild(thead) const headerRow = document.createElement('tr') thead.appendChild(headerRow) const checkboxHeader = document.createElement('th') checkboxHeader.textContent = '选择' checkboxHeader.style.textAlign = 'center' checkboxHeader.style.padding = '10px' headerRow.appendChild(checkboxHeader) const nameHeader = document.createElement('th') nameHeader.textContent = '片单' nameHeader.style.padding = '10px' nameHeader.style.width = '40%' headerRow.appendChild(nameHeader) const urlHeader = document.createElement('th') urlHeader.textContent = '地址' urlHeader.style.padding = '10px' urlHeader.style.width = '40%' headerRow.appendChild(urlHeader) const tbody = document.createElement('tbody') table.appendChild(tbody) let currentPage = 1 const totalItems = data.length const totalPages = Math.ceil(totalItems / itemsPerPage) function generateTableData(page) { tbody.innerHTML = '' const startIndex = (page - 1) * itemsPerPage const endIndex = startIndex + itemsPerPage for (let i = startIndex; i < endIndex && i < data.length; i++) { const row = document.createElement('tr') tbody.appendChild(row) // 序号列 const indexCell = document.createElement('td') indexCell.textContent = i + 1 // 显示序号,从1开始 indexCell.style.textAlign = 'center' indexCell.style.padding = '5px' row.appendChild(indexCell) const checkboxCell = document.createElement('td') checkboxCell.style.textAlign = 'center' checkboxCell.style.padding = '5px' const checkbox = document.createElement('input') checkbox.type = 'checkbox' checkbox.id = `checkbox_${i}` checkbox.value = i checkboxCell.appendChild(checkbox) row.appendChild(checkboxCell) const nameCell = document.createElement('td') nameCell.textContent = data[i].name nameCell.style.padding = '10px' nameCell.style.borderBottom = '1px solid #ddd' row.appendChild(nameCell) const urlCell = document.createElement('td') const fullUrl = 'https://missav.com/playlists/' + data[i].key const link = document.createElement('a') link.textContent = fullUrl link.href = fullUrl link.target = '_blank' // 在新标签页中打开链接 urlCell.appendChild(link) urlCell.style.padding = '10px' urlCell.style.borderBottom = '1px solid #ddd' row.appendChild(urlCell) } } generateTableData(currentPage) const paginationContainer = document.createElement('div') paginationContainer.style.marginTop = '20px' paginationContainer.style.textAlign = 'center' modalContainer.appendChild(paginationContainer) const prevButton = document.createElement('button') prevButton.textContent = '上一页' prevButton.style.marginRight = '10px' prevButton.disabled = true const pageIndicator = document.createElement('span') pageIndicator.style.marginRight = '10px' updatePageIndicator() paginationContainer.appendChild(pageIndicator) const nextButton = document.createElement('button') nextButton.textContent = '下一页' nextButton.style.marginLeft = '10px' if (totalPages <= 1) { nextButton.disabled = true } prevButton.addEventListener('click', () => { currentPage-- generateTableData(currentPage) updatePaginationButtons() updatePageIndicator() }) nextButton.addEventListener('click', () => { currentPage++ generateTableData(currentPage) updatePaginationButtons() updatePageIndicator() }) function updatePaginationButtons() { prevButton.disabled = currentPage === 1 nextButton.disabled = currentPage === totalPages } function updatePageIndicator() { pageIndicator.textContent = `第 ${currentPage}/${totalPages} 页` } const selectAllButton = document.createElement('button') selectAllButton.textContent = '全部选择' selectAllButton.style.marginRight = '10px' selectAllButton.style.marginTop = '20px' selectAllButton.style.padding = '10px 20px' selectAllButton.style.fontSize = '16px' selectAllButton.style.backgroundColor = '#007bff' selectAllButton.style.color = '#fff' selectAllButton.style.border = 'none' selectAllButton.style.borderRadius = '5px' selectAllButton.style.cursor = 'pointer' selectAllButton.style.float = 'left' modalContainer.appendChild(selectAllButton) let selectAll = true selectAllButton.addEventListener('click', () => { const checkboxes = document.querySelectorAll('input[type="checkbox"]') checkboxes.forEach(checkbox => { checkbox.checked = selectAll }) if (selectAll) { selectAllButton.textContent = '取消选择' } else { selectAllButton.textContent = '全部选择' } selectAll = !selectAll }) // const confirmButton = document.createElement('button') confirmButton.textContent = '确认选择' confirmButton.style.marginTop = '20px' confirmButton.style.padding = '10px 20px' confirmButton.style.fontSize = '16px' confirmButton.style.backgroundColor = '#007bff' confirmButton.style.color = '#fff' confirmButton.style.border = 'none' confirmButton.style.borderRadius = '5px' confirmButton.style.cursor = 'pointer' confirmButton.style.float = 'right' modalContainer.appendChild(confirmButton) document.body.appendChild(modalContainer) confirmButton.addEventListener('click', () => { const checkboxes = document.querySelectorAll('input[type="checkbox"]') let anyCheckboxChecked = false checkboxes.forEach(checkbox => { if (checkbox.checked) { const index = parseInt(checkbox.value, 10) if (index >= 0 && index < temporaryData.length) { // 检查 temporaryData[index] 是否为 undefined 或 null if (temporaryData[index]) { // 将选中的名称和URL推送到全局变量 names.push(temporaryData[index].name) urls.push('https://missav.com/playlists/' + temporaryData[index].key) anyCheckboxChecked = true } else { console.error(`temporaryData[${index}] is undefined or null.`) } } else { console.error(`Index ${index} is out of bounds for temporaryData.`) } } }) document.body.removeChild(modalContainer) // document.body.removeChild(overlay); if (anyCheckboxChecked) { processUrls() window.showLogContainer() } }) } function ini() { delayTime = GM_getValue('delayTime', 1000) // 从GM存储中读取延迟时间 shouldReplace = GM_getValue('shouldReplace', false) // 从GM存储中读取状态 saveJson = GM_getValue('saveJson', false) // 从GM存储中读取状态 useDefaultTitle = GM_getValue('useDefaultTitle', true) pageCount = GM_getValue('pageCount', true) saveVideoInfo = GM_getValue('saveVideoInfo', false) saveImage = GM_getValue('saveImage', true) downloadLogFileA = GM_getValue('downloadLogFileA', false) savetowebdav = GM_getValue('savetowebdav', false) webdavUrl = GM_getValue('webdavUrl', '') webdavUsername = GM_getValue('webdavUsername', '') webdavPassword = GM_getValue('webdavPassword', '') } // 创建设置界面 function createControl(tagName, attributes = {}, styles = {}, parent = document.body) { const element = document.createElement(tagName) // 设置属性 for (const key in attributes) { element[key] = attributes[key] } // 设置样式 Object.assign(element.style, styles) // 添加到父元素 if (parent) { parent.appendChild(element) } return element } function createSettingsUI() { const modalContainer = createControl('div', { className: 'settings-modal' }, { position: 'fixed', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', backgroundColor: 'rgba(255, 255, 255, 1)', borderRadius: '8px', boxShadow: '0 4px 8px rgba(0, 0, 0, 0.2)', zIndex: '9999', padding: '20px', width: '400px', maxWidth: '80%' }) const title = createControl('h2', { textContent: '设置' }, { textAlign: 'center' }) modalContainer.appendChild(title) // 创建控件并添加到模态框 const controls = [ { type: 'checkbox', id: 'saveImageCheckbox', label: '下载图片', checked: GM_getValue('saveImage', true), onchange: function () { GM_setValue('saveImage', this.checked) } }, { type: 'checkbox', id: 'saveJsonCheckbox', label: '下载JSON', checked: GM_getValue('saveJson', false), onchange: function () { GM_setValue('saveJson', this.checked) } }, { type: 'checkbox', id: 'hdImageCheckbox', label: '下载高清大图', checked: GM_getValue('shouldReplace', false), onchange: function () { GM_setValue('shouldReplace', this.checked) } }, { type: 'checkbox', id: 'defaultTitleCheckbox', label: '使用网页标题名保存', checked: GM_getValue('useDefaultTitle', true), onchange: function () { GM_setValue('useDefaultTitle', this.checked) } }, { type: 'checkbox', id: 'saveVideoInfoCheckbox', label: '下载视频信息', checked: GM_getValue('saveVideoInfo', false), onchange: function () { GM_setValue('saveVideoInfo', this.checked) } }, { type: 'checkbox', id: 'pageCountCheckbox', label: '自定义抓取页数', checked: GM_getValue('pageCount', true), onchange: function () { GM_setValue('pageCount', this.checked) } }, { type: 'checkbox', id: 'downloadLogFileA', label: '保存下载日志', checked: GM_getValue('downloadLogFileA', false), onchange: function () { GM_setValue('downloadLogFileA', this.checked) } }, { type: 'checkbox', id: 'savetowebdav', label: '上传JSON到WebDav', checked: GM_getValue('savetowebdav', false), onchange: function () { GM_setValue('savetowebdav', this.checked) } }, { type: 'number', id: 'delayInput', label: '设置延迟(毫秒)', value: GM_getValue('delayTime', 1000), placeholder: '设置延迟(毫秒)', onchange: function () { GM_setValue('delayTime', this.value) }, style: { width: '1px' // 设置输入框宽度为100% } }, { type: 'text', id: 'webdavUrlInput', label: 'WebDAV 网址', value: GM_getValue('webdavUrl', ''), placeholder: '输入WebDAV网址', onchange: function () { GM_setValue('webdavUrl', this.value) } }, { type: 'text', id: 'webdavUsernameInput', label: 'WebDAV 账号', value: GM_getValue('webdavUsername', ''), placeholder: '输入WebDAV账号', onchange: function () { GM_setValue('webdavUsername', this.value) } }, { type: 'text', id: 'webdavPasswordInput', label: 'WebDAV 密码', value: GM_getValue('webdavPassword', ''), placeholder: '输入WebDAV密码', onchange: function () { GM_setValue('webdavPassword', this.value) } } ] controls.forEach(control => { const input = createControl('input', { type: control.type, id: control.id, checked: control.checked, value: control.value, placeholder: control.placeholder, onchange: control.onchange }, { marginRight: '10px' }) const label = createControl('label', { textContent: control.label, htmlFor: control.id }, { fontSize: '14px', marginLeft: '5px' }) modalContainer.appendChild(input) modalContainer.appendChild(label) modalContainer.appendChild(createControl('br')) }) // 关闭按钮 const closeButton = createControl('button', { textContent: '关闭', onclick: () => { ini() WebDAVManager.updateConfig(webdavUrl, webdavUsername, webdavPassword) document.body.removeChild(modalContainer) } }, { marginTop: '10px', padding: '10px 20px', fontSize: '16px', backgroundColor: '#007bff', color: '#fff', border: 'none', borderRadius: '5px', cursor: 'pointer', float: 'right' }) modalContainer.appendChild(closeButton) // 将模态框添加到页面 document.body.appendChild(modalContainer) // 添加移动端样式 const mediaQuery = window.matchMedia('(max-width: 600px)') if (mediaQuery.matches) { modalContainer.style.width = '90%' modalContainer.style.maxWidth = '90%' modalContainer.style.padding = '10px' } } // 在页面加载时调用设置界面创建函数 // 调用示例 const WebDAVManager = (function () { // WebDAV 配置 let url = webdavUrl let username = webdavUsername let password = webdavPassword // 通用 GM_xmlhttpRequest 封装函数 function GM_xhr({ path = '/', method, success, fail, headers = {}, data, ...config }) { return new Promise(resolve => { GM_xmlhttpRequest({ url: url + path, method, ...config, headers: { 'Connection': 'Keep-Alive', // 保持连接 'User-Agent': 'Mozilla/5.0', // 用户代理 'Authorization': 'Basic ' + btoa(username + ':' + password), // 基本认证 ...headers }, data, onload: xhr => { if (xhr.status >= 200 && xhr.status < 300) { if (success) success(xhr) } else { if (fail) fail(xhr) } resolve(xhr) }, onerror: xhr => { if (fail) fail(xhr) resolve(xhr) } }) }) } //登录 async function login() { let retryCount = 2 // 设置重试次数为2次 while (retryCount > 0) { // 构建登录请求 const LOGIN = { method: 'PROPFIND', // 使用 PROPFIND 方法检查根目录 path: retryCount === 2 ? '/' : '', // 根据重试次数设置 path headers: { 'Depth': '1', 'Authorization': 'Basic ' + btoa(username + ':' + password), 'Connection': 'Keep-Alive', // 保持连接 'User-Agent': 'Mozilla/5.0' // 用户代理 } } // 发起登录请求 const loginResponse = await GM_xhr(LOGIN) // 判断登录结果 if (loginResponse.status === 207) { console.log('登录成功') // 登录成功后,可以执行其他操作 showModal('Webdav登录成功!', 1000) return true // 返回登录成功标志 } else { console.error('登录失败:', loginResponse.status) if (retryCount === 1) { showModal('Webdav登录失败!' + loginResponse.status, 1000) return false // 返回登录失败标志 } else { retryCount-- // 减少重试次数 } } } // 如果重试次数用尽仍未登录成功,执行其他操作(可根据实际情况添加代码) console.error('重试次数用尽,登录失败') showModal('Webdav登录失败!重试次数用尽', 1000) return false } //刷新 function updateConfig(newUrl, newUsername, newPassword) { if (newUrl && newUsername && newPassword) { url = newUrl username = newUsername password = newPassword // 在这里调用登录函数 login() } else { console.error('WebDAV 配置信息不完整') } } // 获取 WebDAV 中指定路径下的所有文件和文件夹 async function listFilesAndFolders(folderName) { const path = folderName.endsWith('/') ? folderName : folderName + '/' const PROPFIND = { method: 'PROPFIND', headers: { 'Depth': '1' }, success: (xhr) => { const parser = new DOMParser() const xmlDoc = parser.parseFromString(xhr.responseText, 'text/xml') const responses = xmlDoc.getElementsByTagNameNS('DAV:', 'response') let fileCount = 0 //let fileList = `
`; let fileList = '' for (let i = 0; i < responses.length; i++) { const href = decodeURIComponent(responses[i].getElementsByTagNameNS('DAV:', 'href')[0].textContent.trim()) const displayName = href.substring(href.lastIndexOf('/') + 1) const isCollection = responses[i].getElementsByTagNameNS('DAV:', 'collection').length > 0 if (!isCollection) { fileList += `
  • ${fileCount + 1}. ${displayName}
  • ` fileCount++ } } /*fileList += `

    文件数量: ${fileCount}

    `;*/ fileList += '' showDialog(` 文件夹 ${folderName}
    文件数量: ${fileCount}
    `, fileList) }, fail: (xhr) => { alert('获取文件列表失败:' + xhr.status) } } await GM_xhr({ ...PROPFIND, path }) } // 下载文件函数 // 在 WebDAV 中创建新文件夹 async function createFolder(folderName) { const MKCOL = { method: 'MKCOL', path: folderName.endsWith('/') ? folderName : folderName + '/', success: () => { alert('文件夹创建成功') }, fail: (xhr) => { if (xhr.status === 409) { // alert('冲突:文件夹可能已经存在或路径不正确'); } else { //alert('创建文件夹失败:' + xhr.status); } } } await GM_xhr({ ...MKCOL }) } // 上传文件到 WebDAV async function uploadFile(folderName, fileName, fileContent) { // 检查文件是否已存在 const HEAD = { method: 'HEAD', path: folderName + '/' + fileName, success: () => { //alert('文件已存在,无需重复上传'); window.addToLog(fileName + '文件存在', 'info') // 可以在这里执行文件已存在时的逻辑,比如显示提示信息或执行其他操作 }, fail: async (xhr) => { if (xhr.status === 404) { // 文件不存在,执行上传操作 const PUT = { method: 'PUT', path: folderName + '/' + fileName, data: fileContent, success: () => { window.addToLog(fileName + '文件上传成功', 'info') }, fail: (xhr) => { window.addToLog(fileName + '文件上传失败', 'error') } } await GM_xhr({ ...PUT }) } else { window.addToLog(fileName + '文件检查上传失败', 'error') } } } await GM_xhr({ ...HEAD }) } // 重命名文件 async function renameFile(folderName, oldFileName) { // 弹出对话框让用户输入新文件名 const newFileName = prompt(`请输入 ${oldFileName} 的新文件名:`) if (!newFileName) { alert('未输入新文件名,操作已取消。') return } const encodedOldFileName = encodeURIComponent(oldFileName) // 对旧文件名进行编码 const encodedNewFileName = encodeURIComponent(newFileName + '.json') // 对新文件名进行编码 const sourcePath = folderName + '/' + encodedOldFileName const destinationPath = folderName + '/' + encodedNewFileName const MOVE = { method: 'MOVE', path: sourcePath, headers: { 'Destination': url + destinationPath, 'Overwrite': 'T' // 允许覆盖目标文件 }, success: () => { alert(`文件 ${oldFileName} 已成功重命名为 ${newFileName}`) listFilesAndFolders(folderName) // 刷新文件列表 }, fail: (xhr) => { if (xhr.status === 409) { alert('冲突:文件名可能已存在或路径不正确') } else { alert('重命名文件失败:' + xhr.status) } } } await GM_xhr({ ...MOVE }) } // 删除文件 async function deleteFile(folderName, fileName) { let confirmdelete = false if (deleteSelected) { confirmdelete = true } else { confirmdelete = confirm(`确定要删除文件 ${fileName} 吗?`) } if (confirmdelete) { try { await deleteFileFromServer(folderName, fileName) const fileItem = document.querySelector(`a[onclick*="${fileName}"]`).closest('li') const checkbox = fileItem.querySelector('input[type="checkbox"]') if (checkbox && checkbox.checked) { checkbox.checked = false // 清除选中状态 checkbox.disabled = true // 禁止操作 } markItemDeleted(fileItem) } catch (error) { alert('删除文件失败:' + error.message) } } } function markItemDeleted(fileItem) { // 将文件名链接标记为已删除 const fileNameLink = fileItem.querySelector('a') fileNameLink.style.textDecoration = 'line-through' fileNameLink.removeAttribute('onclick') fileNameLink.style.pointerEvents = 'none' // 不可点击 fileNameLink.style.color = 'gray' // 设置为灰色 // 将后续按钮标记为已删除 const actionButtons = fileItem.querySelectorAll('div > a') actionButtons.forEach(button => { button.style.textDecoration = 'line-through' button.removeAttribute('onclick') button.style.pointerEvents = 'none' // 不可点击 button.style.color = 'gray' // 设置为灰色 }) } // 实际删除文件的函数 async function deleteFileFromServer(folderName, fileName) { const DELETE = { method: 'DELETE', path: folderName + '/' + fileName } return new Promise((resolve, reject) => { GM_xhr({ ...DELETE, success: resolve, fail: reject }) }) } // 检查文件夹是否存在 async function checkFolderExists(folderName) { const HEAD = { method: 'HEAD', path: folderName.endsWith('/') ? folderName : folderName + '/', success: (xhr) => { if (xhr.status === 200) { // alert('文件夹存在'); } else if (xhr.status === 404) { alert('文件夹不存在') } else { alert('检查文件夹状态失败:' + xhr.status) } }, fail: (xhr) => { alert('检查文件夹失败:' + xhr.status) } } await GM_xhr({ ...HEAD }) } // 下载并展示文件 async function downloadFile(folderName, fileName, zip = null) { return new Promise((resolve, reject) => { // 发起 GET 请求下载文件内容 const GET = { method: 'GET', path: folderName + '/' + fileName, success: (xhr) => { const fileContent = xhr.responseText const jsonData = JSON.parse(fileContent) const content = generateJsonIndexContent(jsonData) if (zip) { // 如果传入了压缩包实例,则将文件内容添加到压缩包中 const sanitizedFileName = sanitizeFileName(fileName.replace('.json', '')) + '.html' zip.file(sanitizedFileName, content) resolve() } else { // 否则直接下载文件 const blob = new Blob([content], { type: 'text/html' }) const htmlUrl = URL.createObjectURL(blob) const a = document.createElement('a') a.href = htmlUrl a.download = sanitizeFileName(fileName.replace('.json', '')) + '.html' a.click() resolve() } }, fail: (xhr) => { reject(new Error('下载文件失败:' + xhr.status)) } } GM_xhr({ ...GET }) }) } async function downloadAndDisplayFile(folderName, fileName) { const GET = { method: 'GET', path: folderName + '/' + fileName, success: (xhr) => { try { const fileContent = xhr.responseText const jsonData = JSON.parse(fileContent) const content = generateJsonIndexContent(jsonData) // 打开一个新的浏览器标签页显示内容 const dataUrl = 'data:text/html;charset=utf-8,' + encodeURIComponent(content) GM_openInTab(dataUrl) } catch (e) { alert('解析 JSON 文件失败:' + e.message) } }, fail: (xhr) => { alert('下载文件失败:' + xhr.status) } } await GM_xhr({ ...GET }) } //我是你爹啊 // 显示对话框 function showDialog(title, fileList, folderName) { // 添加CSS样式 const style = document.createElement('style') style.textContent = ` .overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 9998; } .dialog { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: #fff; padding: 20px; border-radius: 10px; width: 80%; max-height: 80%; overflow-y: auto; box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); z-index: 9999; } .dialog-title { margin-bottom: 20px; } .dialog-button { padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; margin-bottom: 20px; } .select-button { background-color: #007BFF; color: #fff; } .delete-button { background-color: #dc3545; color: #fff; margin-left: 10px; } .select-all-button { background-color: #28a745; color: #fff; margin-left: 10px; } .download-button { background-color: #007BFF; color: #fff; margin-left: 10px; } .search-button { background-color: #6c757d; color: #fff; margin-left: 10px; border: none; border-radius: 5px; cursor: pointer; } .close-x-button { background-color: #6c757d; color: red; margin-left: 10px; border: none; border-radius: 5px; cursor: pointer; } .search-button:hover { background-color: #495057; } .close-button { background-color: #007BFF; color: #fff; margin-top: 20px; } .file-list { list-style-type: none; padding: 0; } .file-action { margin-right: 10px; float: left; color: blue; cursor: pointer; } .file-actions-container { float: right; } .clear-float { clear: both; } .file-item { border-bottom: 1px solid #ddd; padding: 10px 0; display: flex; align-items: center; } .file-checkbox { margin-right: 10px; } .file-link { margin-right: 10px; color: blue; flex-grow: 1; } .file-actions { display: flex; gap: 10px; } .file-action { color: #007BFF; cursor: pointer; } .custom-hr { height: 1px; background-color: #007BFF; margin: 20px 0; } .file-action:hover { text-decoration: underline; } @media (max-width: 600px) { .dialog-button { padding: 5px 10px; font-size: 12px; margin-bottom: 10px; } .delete-button, .download-button, .select-all-button, .close-x-button, .search-button { margin-left: 0; } .button-container { right: 5px; } } ` document.head.appendChild(style) // 创建对话框 const dialog = document.createElement('div') dialog.className = 'dialog' // 创建遮罩 function close() { document.body.removeChild(dialog) } // 标题 const titleElement = document.createElement('h1') titleElement.innerHTML = title titleElement.className = 'dialog-title' dialog.appendChild(titleElement) const buttonContainer = document.createElement('div') const buttonConfigs = [ { text: '选择列表', className: 'dialog-button select-button', onclick: toggleSelection }, { text: '搜索列表', className: 'dialog-button search-button', onclick: toggleSearch }, { text: '关闭窗口', className: 'dialog-button close-x-button', onclick: close }, { text: '全部选中', className: 'dialog-button select-all-button', onclick: toggleSelectAll }, { text: '删除选中', className: 'dialog-button delete-button', onclick: deleteSelectedFiles }, { text: '下载选中', className: 'dialog-button download-button', onclick: downloadSelectedFiles } // 可以添加更多按钮配置 ] let count = 0 // 计数器,用于控制显示状态 buttonConfigs.forEach(config => { const button = document.createElement('button') button.textContent = config.text button.className = config.className button.onclick = config.onclick if (count < 3) { button.style.display = 'inline-block' // 前两个按钮初始可见 } else { button.style.display = 'none' // 后面的按钮初始隐藏 } buttonContainer.appendChild(button) count++ // 每创建一个按钮,计数器加一 }) // 将按钮容器添加到对话框中 dialog.appendChild(buttonContainer) // 文件列表 const fileListContainer = document.createElement('ul') fileListContainer.className = 'file-list' fileListContainer.innerHTML = fileList dialog.appendChild(fileListContainer) // 添加到body document.body.appendChild(dialog) let selectButtonInitialTop = 0 let selectAllButton = document.querySelector('.select-all-button') let searchButton = document.querySelector('.search-button') let downloadSelectedButton = document.querySelector('.download-button') let deleteSelectedButton = document.querySelector('.delete-button') let selectButton = document.querySelector('.select-button') let closeXButton = document.querySelector('.close-x-button') let scrollTimeout = 0 // 定义全局变量存储定时器 // 记录选择按钮的初始位置 if (selectButton) { selectButtonInitialTop = selectButton.offsetTop } // 监听对话框的滚动事件 dialog.addEventListener('scroll', function () { clearTimeout(scrollTimeout) const buttons = [ { button: selectButton, offsetHeight: true }, { button: selectAllButton, offsetHeight: true }, { button: deleteSelectedButton, offsetHeight: true }, { button: downloadSelectedButton, offsetHeight: true }, { button: searchButton, offsetHeight: true }, { button: closeXButton, offsetHeight: true } // 添加更多按钮对象,如果有的话 ] scrollTimeout = setTimeout(() => { if (buttons.every(buttonObj => buttonObj.button)) { const dialogRect = dialog.getBoundingClientRect() const fileListRect = fileListContainer.getBoundingClientRect() const newButtonTopBase = Math.max(fileListRect.top, dialog.scrollTop) let newButtonTop = newButtonTopBase for (const { button, offsetHeight } of buttons) { if (button) { button.style.position = dialog.scrollTop === 0 ? 'static' : 'absolute' button.style.top = `${newButtonTop}px` button.style.right = '10px' if (offsetHeight) { newButtonTop += button.offsetHeight } } } } }, 300) // 设置 300 毫秒的超时 }) // 获取所有复选框 const checkboxes = fileListContainer.querySelectorAll('input[type="checkbox"]') // 初始隐藏复选框 checkboxes.forEach(checkbox => { checkbox.style.display = 'none' }) //选中全部 function toggleSelectAll() { const checkboxes = document.querySelectorAll('input[name="fileCheckbox"]') const allChecked = Array.from(checkboxes).every(checkbox => checkbox.checked) checkboxes.forEach(checkbox => { checkbox.checked = !allChecked }) // 切换按钮文本和背景颜色 if (allChecked) { selectAllButton.textContent = '全部选中' selectAllButton.style.backgroundColor = '' // 恢复默认背景颜色 } else { selectAllButton.textContent = '全部取消选中' selectAllButton.style.backgroundColor = 'red' // 改为红色背景 } } //搜索 //--------------- function toggleSearch() { if (searchButton.textContent === '搜索列表') { // 如果当前是搜索状态,则进行搜索 const searchTerm = prompt('请输入搜索内容:') // 弹出输入框等待用户输入搜索内容 if (searchTerm !== null) { // 用户点击了确定按钮 filterFiles(searchTerm) // 调用过滤文件函数,传入搜索关键词 searchButton.textContent = '回到列表' // 将搜索按钮文本改为"Back" } } else { // 如果当前是Back状态,则恢复初始文件列表 resetFileList() } } function filterFiles(searchTerm) { const files = Array.from(fileListContainer.children) // 获取文件列表的所有子元素(文件项) let matchCount = 0 // 初始化匹配数量为 0 // 遍历文件列表,根据搜索关键词过滤显示符合条件的文件项 files.forEach(file => { const fileName = file.querySelector('.file-link').textContent.toLowerCase() // 获取文件名并转换为小写 if (fileName.includes(searchTerm.toLowerCase())) { file.style.display = '' // 匹配到的文件项显示 matchCount++ // 匹配数量加一 } else { file.style.display = 'none' // 不匹配的文件项隐藏 } }) // 更新文件数量标签内容 const fileCountLabel = document.getElementById('fileCountLabel') if (fileCountLabel) { fileCountLabel.textContent = '搜索数量: ' } // 更新包裹文件数量的元素内容 const fileCountElement = document.querySelector('.file-count') if (fileCountElement) { fileCountElement.textContent = matchCount } } // 恢复初始文件列表函数 function resetFileList() { const files = Array.from(fileListContainer.children) // 获取文件列表的所有子元素(文件项) files.forEach(file => { file.style.display = '' // 显示所有文件项 }) searchButton.textContent = '搜索列表' // 恢复搜索按钮文本为"搜索" // 更新文件数量标签内容为 "文件数量:" const fileCountLabel = document.getElementById('fileCountLabel') if (fileCountLabel) { fileCountLabel.textContent = '文件数量:' } // 更新包裹文件数量的元素内容为当前文件数量 const fileCountElement = document.querySelector('.file-count') if (fileCountElement) { const currentFileCount = files.length // 获取当前文件数量 fileCountElement.textContent = currentFileCount } } //搜索结束 //--------------- // 选择列表 function toggleSelection() { checkboxes.forEach(checkbox => { checkbox.style.display = checkbox.style.display === 'none' ? 'inline-block' : 'none' checkbox.checked = false // 取消复选框的选中状态 }) // 切换显示“删除选中”和“下载选中”按钮 deleteSelectedButton.style.display = deleteSelectedButton.style.display === 'none' ? 'inline-block' : 'none' downloadSelectedButton.style.display = downloadSelectedButton.style.display === 'none' ? 'inline-block' : 'none' selectAllButton.style.display = selectAllButton.style.display === 'none' ? 'inline-block' : 'none' selectButton.textContent = downloadSelectedButton.style.display === 'none' ? '选择列表' : '取消选择' } } //选中下载 async function downloadSelectedFiles() { // 获取所有选中的复选框 const checkboxes = document.querySelectorAll('input[name="fileCheckbox"]:checked') if (checkboxes.length === 0) { showModal('没有选中的文件', 2000) return } // 创建一个 JSZip 实例 const zip = new JSZip() try { // 遍历所有选中的复选框 for (const checkbox of checkboxes) { // 获取文件项信息 const fileItem = checkbox.closest('li') const fileName = fileItem.querySelector('a[data-display-name]').dataset.displayName // 调用 downloadFile 函数,将文件添加到压缩包中 await downloadFile(webdavfold, fileName, zip) } // 生成 ZIP 文件 const zipBlob = await zip.generateAsync({ type: 'blob' }) // 创建下载链接并触发下载 const zipUrl = URL.createObjectURL(zipBlob) const a = document.createElement('a') a.href = zipUrl a.download = 'selected_files.zip' a.click() console.log('压缩包下载完成') showModal('下载选中完成:', 2000) } catch (error) { console.error('下载选中文件失败:', error) showModal('下载选中文件失败: ' + error.message, 2000) } } //选中删除 function deleteSelectedFiles() { // 获取所有选中的复选框 const selectedCheckboxes = document.querySelectorAll('input[name="fileCheckbox"]:checked') if (selectedCheckboxes.length === 0) { alert('没有选中文件') return } // 弹出确认删除的提示框 const confirmDelete = confirm('确定要删除选中的文件吗?') if (confirmDelete) { deleteSelected = true selectedCheckboxes.forEach(checkbox => { const fileItem = checkbox.closest('li') const deleteButton = fileItem.querySelector('a[onclick*="deleteFile"]') // 调试日志 console.log('fileItem:', fileItem) console.log('deleteButton:', deleteButton) // 获取文件名 const fileName = fileItem.querySelector('a[data-display-name]').dataset.displayName // 添加调试日志 console.log('Deleting file:', fileName) // 触发删除按钮的点击事件 deleteButton.click() //deleteFile(webdavfold,fileName); // 将文件项标记为已删除 // markItemDeleted(fileItem); }) deleteSelected = false console.log('删除选中文件') } } // 将 API 方法公开 return { listFilesAndFolders, updateConfig, createFolder, uploadFile, renameFile, deleteFile, downloadFile, downloadAndDisplayFile, checkFolderExists } })() // 将库暴露到全局作用域 unsafeWindow.WebDAVManager = WebDAVManager // 示例用法:列出文件和文件夹,创建新文件夹,上传文件,删除文件 if (!url || !username || !password) { console.error('WebDAV 配置更新失败:缺少 URL、用户名或密码') return } WebDAVManager.updateConfig(webdavUrl, webdavUsername, webdavPassword) WebDAVManager.createFolder(webdavfold) WebDAVManager.checkFolderExists(webdavfold) //WebDAVManager.uploadFile(webdavfold, 'nidie.txt', '这是 example.txt 的内容'); // WebDAVManager.deleteFile('Missav保存', 'example.txt'); })()