From e480ef704d39b489b315a70ba36e6d0add3886d5 Mon Sep 17 00:00:00 2001 From: Alexandru Constantin Date: Thu, 26 Sep 2019 15:58:06 +0300 Subject: [PATCH 1/4] Delete MSClient.cs Will upload version which allows for recursive=1 --- MSClient.cs | 353 ---------------------------------------------------- 1 file changed, 353 deletions(-) delete mode 100644 MSClient.cs diff --git a/MSClient.cs b/MSClient.cs deleted file mode 100644 index 618b98d..0000000 --- a/MSClient.cs +++ /dev/null @@ -1,353 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.IO; -using System.Net; -using System.Text; - -namespace MalShare.NET -{ - public class MSClient - { - private string key; - - public MSClient(string apiKey) - { - key = apiKey; - } - - private static string GetResponse(string url) - { - string html = String.Empty; - - HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); - request.AutomaticDecompression = DecompressionMethods.GZip; - request.Timeout = 5000; - - try - { - using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) - using (Stream stream = response.GetResponseStream()) - using (StreamReader reader = new StreamReader(stream)) - { - html = reader.ReadToEnd(); - } - } - catch { } - - return html; - } - public List Search(string searchQuery) - { - List searchResults = new List(); - - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=search&query={searchQuery}"; - - - html = GetResponse(url); - - if (!String.IsNullOrEmpty(html)) - { - dynamic dynObj = JsonConvert.DeserializeObject(html); - - searchResults.Add("MD5: " + dynObj.md5); - searchResults.Add("SHA1: " + dynObj.sha1); - searchResults.Add("SHA256: " + dynObj.sha256); - searchResults.Add("Type: " + dynObj.type); - searchResults.Add("Added: " + dynObj.added); - searchResults.Add("Source: " + dynObj.source); - - foreach (var item in dynObj.yarahits.yara) - { - searchResults.Add("Yara: " + item); - } - - if (!String.IsNullOrWhiteSpace(dynObj.yarahits.parentfiles)) - { - searchResults.Add("Parent Files: " + dynObj.yarahits.parentfiles); - } - if (!String.IsNullOrWhiteSpace(dynObj.yarahits.subfiles)) - { - searchResults.Add("Sub Files: " + dynObj.yarahits.subfiles); - } - } - else - { - searchResults.Add($"Results for {searchQuery}: Not found."); - } - - - return searchResults; - } - - public List SearchByType(string type) - { - List searchResults = new List(); - - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=type&type={type}"; - - - html = GetResponse(url); - - - if (html != "[]" && !String.IsNullOrWhiteSpace(html)) - { - dynamic dynObj = JsonConvert.DeserializeObject(html); - foreach (var item in dynObj) - { - searchResults.Add("MD5: " + item.md5 + "/SHA1: " + item.sha1 + "/SHA256: " + item.sha256); - } - } - else - { - searchResults.Add($"Results for {type}: Not found."); - } - - return searchResults; - } - - public List GetDetails(string hash) - { - List searchResults = new List(); - - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=details&hash={hash}"; - - html = GetResponse(url); - - if (!String.IsNullOrEmpty(html)) - { - dynamic dynObj = JsonConvert.DeserializeObject(html); - - searchResults.Add("MD5: " + dynObj.MD5); - searchResults.Add("SHA1: " + dynObj.SHA1); - searchResults.Add("SHA256: " + dynObj.SHA256); - searchResults.Add("SSDEEP: " + dynObj.SSDEEP); - searchResults.Add("Type: " + dynObj.F_TYPE); - foreach (var item in dynObj.SOURCES) - { - searchResults.Add("Source: " + Convert.ToString(item)); - } - } - else - { - searchResults.Add($"Results for {hash}: Not found."); - } - - return searchResults; - } - - public List GetTypeList() - { - List types = new List(); - - - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=gettypes"; - - - html = GetResponse(url); - - if (!String.IsNullOrWhiteSpace(html)) - { - dynamic dynObj = JsonConvert.DeserializeObject(html); - - - foreach (var item in dynObj) - { - types.Add(Convert.ToString(item).Replace("\"", String.Empty)); - } - types.RemoveAll(String.IsNullOrWhiteSpace); - } - else - { - types.Add("Failed to retreive list."); - } - return types; - } - - public List GetSources() - { - List sources = new List(); - - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=getsources"; - - html = GetResponse(url); - - if (!String.IsNullOrWhiteSpace(html)) - { - dynamic dynObj = JsonConvert.DeserializeObject(html); - - foreach (var item in dynObj) - { - sources.Add(Convert.ToString(item)); - } - sources.RemoveAll(String.IsNullOrWhiteSpace); - } - else - { - sources.Add("Failed to retrieve sources."); - } - - return sources; - } - - public List GetHashList() - { - List hashList = new List(); - - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=getlist"; - - - html = GetResponse(url); - - if (!String.IsNullOrWhiteSpace(html)) - { - dynamic dynObj = JsonConvert.DeserializeObject(html); - - foreach (var item in dynObj) - { - hashList.Add("MD5: " + item.md5 + "/SHA1: " + item.sha1 + "/SHA256: " + item.sha256); - } - } - else - { - hashList.Add("Failed to retrive hash list."); - } - return hashList; - } - - public List GetRequestLimit() - { - List limitList = new List(); - - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=getlimit"; - - - html = GetResponse(url); - - if (!String.IsNullOrWhiteSpace(html)) - { - dynamic dynObj = JsonConvert.DeserializeObject(html); - - limitList.Add("Limit: " + dynObj.LIMIT); - limitList.Add("Remaining: " + dynObj.REMAINING); - - } - else - { - limitList.Add("Failed to retrieve request limit."); - } - return limitList; - } - - public string Upload(string filePath) - { - WebClient wc = new WebClient(); - - string url = $@"https://malshare.com/api.php?api_key={key}&action=upload"; - - try - { - wc.UploadFile(url, filePath); - - wc.Dispose(); - - } - catch - { - return $"{filePath} - Failed to upload file."; - } - - return $"File {filePath} uploaded successfully."; - } - - public string DownloadFile(string hash) - { - string url = $@"https://malshare.com/api.php?api_key={key}&action=getfile&hash={hash}"; - - Directory.CreateDirectory("DownloadedFiles"); - - WebClient client = new WebClient(); - try - { - client.DownloadFile(new Uri(url), @"DownloadedFiles\" + hash); - } - catch - { - return $"File with hash {hash} not found."; - } - - return $@"File with hash {hash} downloaded to DownloadedFiles\{hash}"; - - } - - public string UrlToCollection(string urlToUpload) - { - string url = $@"https://malshare.com/api.php?api_key={key}&action=download_url"; - - string responseStr = String.Empty; - - using (WebClient wb = new WebClient()) - { - try - { - NameValueCollection data = new NameValueCollection(); - data["url"] = urlToUpload; - - - var response = wb.UploadValues(url, "POST", data); - string responseInString = Encoding.UTF8.GetString(response); - - - dynamic dynObj = JsonConvert.DeserializeObject(responseInString); - - responseStr = $"GUID for {urlToUpload}: {dynObj.guid}"; - - } - catch (WebException ex) - { - if (ex.Response != null) - { - var response = ex.Response; - var dataStream = response.GetResponseStream(); - var reader = new StreamReader(dataStream); - var details = reader.ReadToEnd(); - - return details; - } - } - catch - { - return $"Failed to add {urlToUpload} to the sample collection."; - } - - return responseStr; - } - - } - - public string CheckGUID(string guid) - { - string html = String.Empty; - string url = $@"https://malshare.com/api.php?api_key={key}&action=download_url_check&guid={guid}"; - - html = GetResponse(url); - if (String.IsNullOrWhiteSpace(html)) - { - return $"Failed to retrieve status for {guid}"; - } - - dynamic dynObj = JsonConvert.DeserializeObject(html); - - return $"Status for {guid}: {dynObj.status}"; - } - } - -} From 69d5d98ce1dbd3d45631c6a62c6e63c8a87bc715 Mon Sep 17 00:00:00 2001 From: Alexandru Constantin Date: Thu, 26 Sep 2019 15:58:16 +0300 Subject: [PATCH 2/4] Delete MalShare.NET.2.1.0.nupkg Will upload version which allows for recursive=1 --- MalShare.NET.2.1.0.nupkg | Bin 21027 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 MalShare.NET.2.1.0.nupkg diff --git a/MalShare.NET.2.1.0.nupkg b/MalShare.NET.2.1.0.nupkg deleted file mode 100644 index 941a72ba7950805ceedf07f64229a3bdd9999712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21027 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 From 99c00cf001ee5b86fe2df936b24738ca23c1878e Mon Sep 17 00:00:00 2001 From: Alexandru Constantin Date: Thu, 26 Sep 2019 15:58:23 +0300 Subject: [PATCH 3/4] Delete MalShare.NET.dll Will upload version which allows for recursive=1 --- MalShare.NET.dll | Bin 19968 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 MalShare.NET.dll diff --git a/MalShare.NET.dll b/MalShare.NET.dll deleted file mode 100644 index a5c8c5e2a2f6db2770042def34f184baaa808b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 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 From aa03465520801ee21dcce702e9e915698622c3bf Mon Sep 17 00:00:00 2001 From: Alexandru Constantin Date: Thu, 26 Sep 2019 15:59:51 +0300 Subject: [PATCH 4/4] Version 2.2 New: Allows for recursive=1 when adding sample to collection. --- MSClient.cs | 363 +++++++++++++++++++++++++++++++++++++++ MalShare.NET.2.2.0.nupkg | Bin 0 -> 21164 bytes MalShare.NET.dll | Bin 0 -> 20480 bytes 3 files changed, 363 insertions(+) create mode 100644 MSClient.cs create mode 100644 MalShare.NET.2.2.0.nupkg create mode 100644 MalShare.NET.dll diff --git a/MSClient.cs b/MSClient.cs new file mode 100644 index 0000000..1069175 --- /dev/null +++ b/MSClient.cs @@ -0,0 +1,363 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.IO; +using System.Net; +using System.Text; + +namespace MalShare.NET +{ + public class MSClient + { + private string key; + + public MSClient(string apiKey) + { + key = apiKey; + } + + private static string GetResponse(string url) + { + string html = String.Empty; + + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + request.AutomaticDecompression = DecompressionMethods.GZip; + request.Timeout = 5000; + + try + { + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + using (Stream stream = response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream)) + { + html = reader.ReadToEnd(); + } + } + catch { } + + return html; + } + public List Search(string searchQuery) + { + List searchResults = new List(); + + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=search&query={searchQuery}"; + + + html = GetResponse(url); + + if (!String.IsNullOrEmpty(html)) + { + dynamic dynObj = JsonConvert.DeserializeObject(html); + + searchResults.Add("MD5: " + dynObj.md5); + searchResults.Add("SHA1: " + dynObj.sha1); + searchResults.Add("SHA256: " + dynObj.sha256); + searchResults.Add("Type: " + dynObj.type); + searchResults.Add("Added: " + dynObj.added); + searchResults.Add("Source: " + dynObj.source); + + foreach (var item in dynObj.yarahits.yara) + { + searchResults.Add("Yara: " + item); + } + + if (!String.IsNullOrWhiteSpace(dynObj.yarahits.parentfiles)) + { + searchResults.Add("Parent Files: " + dynObj.yarahits.parentfiles); + } + if (!String.IsNullOrWhiteSpace(dynObj.yarahits.subfiles)) + { + searchResults.Add("Sub Files: " + dynObj.yarahits.subfiles); + } + } + else + { + searchResults.Add($"Results for {searchQuery}: Not found."); + } + + + return searchResults; + } + + public List SearchByType(string type) + { + List searchResults = new List(); + + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=type&type={type}"; + + + html = GetResponse(url); + + + if (html != "[]" && !String.IsNullOrWhiteSpace(html)) + { + dynamic dynObj = JsonConvert.DeserializeObject(html); + foreach (var item in dynObj) + { + searchResults.Add("MD5: " + item.md5 + "/SHA1: " + item.sha1 + "/SHA256: " + item.sha256); + } + } + else + { + searchResults.Add($"Results for {type}: Not found."); + } + + return searchResults; + } + + public List GetDetails(string hash) + { + List searchResults = new List(); + + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=details&hash={hash}"; + + html = GetResponse(url); + + if (!String.IsNullOrEmpty(html)) + { + dynamic dynObj = JsonConvert.DeserializeObject(html); + + searchResults.Add("MD5: " + dynObj.MD5); + searchResults.Add("SHA1: " + dynObj.SHA1); + searchResults.Add("SHA256: " + dynObj.SHA256); + searchResults.Add("SSDEEP: " + dynObj.SSDEEP); + searchResults.Add("Type: " + dynObj.F_TYPE); + foreach (var item in dynObj.SOURCES) + { + searchResults.Add("Source: " + Convert.ToString(item)); + } + } + else + { + searchResults.Add($"Results for {hash}: Not found."); + } + + return searchResults; + } + + public List GetTypeList() + { + List types = new List(); + + + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=gettypes"; + + + html = GetResponse(url); + + if (!String.IsNullOrWhiteSpace(html)) + { + dynamic dynObj = JsonConvert.DeserializeObject(html); + + + foreach (var item in dynObj) + { + types.Add(Convert.ToString(item).Replace("\"", String.Empty)); + } + types.RemoveAll(String.IsNullOrWhiteSpace); + } + else + { + types.Add("Failed to retreive list."); + } + return types; + } + + public List GetSources() + { + List sources = new List(); + + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=getsources"; + + html = GetResponse(url); + + if (!String.IsNullOrWhiteSpace(html)) + { + dynamic dynObj = JsonConvert.DeserializeObject(html); + + foreach (var item in dynObj) + { + sources.Add(Convert.ToString(item)); + } + sources.RemoveAll(String.IsNullOrWhiteSpace); + } + else + { + sources.Add("Failed to retrieve sources."); + } + + return sources; + } + + public List GetHashList() + { + List hashList = new List(); + + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=getlist"; + + + html = GetResponse(url); + + if (!String.IsNullOrWhiteSpace(html)) + { + dynamic dynObj = JsonConvert.DeserializeObject(html); + + foreach (var item in dynObj) + { + hashList.Add("MD5: " + item.md5 + "/SHA1: " + item.sha1 + "/SHA256: " + item.sha256); + } + } + else + { + hashList.Add("Failed to retrive hash list."); + } + return hashList; + } + + public List GetRequestLimit() + { + List limitList = new List(); + + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=getlimit"; + + + html = GetResponse(url); + + if (!String.IsNullOrWhiteSpace(html)) + { + dynamic dynObj = JsonConvert.DeserializeObject(html); + + limitList.Add("Limit: " + dynObj.LIMIT); + limitList.Add("Remaining: " + dynObj.REMAINING); + + } + else + { + limitList.Add("Failed to retrieve request limit."); + } + return limitList; + } + + public string Upload(string filePath) + { + WebClient wc = new WebClient(); + + string url = $@"https://malshare.com/api.php?api_key={key}&action=upload"; + + try + { + wc.UploadFile(url, filePath); + + wc.Dispose(); + + } + catch + { + return $"{filePath} - Failed to upload file."; + } + + return $"File {filePath} uploaded successfully."; + } + + public string DownloadFile(string hash) + { + string url = $@"https://malshare.com/api.php?api_key={key}&action=getfile&hash={hash}"; + + Directory.CreateDirectory("DownloadedFiles"); + + WebClient client = new WebClient(); + try + { + client.DownloadFile(new Uri(url), @"DownloadedFiles\" + hash); + } + catch + { + return $"File with hash {hash} not found."; + } + + return $@"File with hash {hash} downloaded to DownloadedFiles\{hash}"; + + } + + public string UrlToCollection(string urlToUpload, bool enableCrawling = false) + { + string url = $@"https://malshare.com/api.php?api_key={key}&action=download_url"; + + string responseStr = String.Empty; + + using (WebClient wb = new WebClient()) + { + try + { + NameValueCollection data = new NameValueCollection(); + data["url"] = urlToUpload; + if(enableCrawling == true) + { + data["recursive"] = "1"; + } + + var response = wb.UploadValues(url, "POST", data); + string responseInString = Encoding.UTF8.GetString(response); + + + dynamic dynObj = JsonConvert.DeserializeObject(responseInString); + + responseStr = $"GUID for {urlToUpload}: {dynObj.guid}"; + + } + catch (WebException ex) + { + if (ex.Response != null) + { + WebResponse response = ex.Response; + Stream dataStream = response.GetResponseStream(); + StreamReader reader = new StreamReader(dataStream); + string details = reader.ReadToEnd(); + + if (details.Contains("error")) + { + dynamic dynObj = JsonConvert.DeserializeObject(details); + + return $"Error for API key {key}: {dynObj.error}"; + } + + return details; + } + } + catch + { + return $"Failed to add {urlToUpload} to the sample collection."; + } + + return responseStr; + } + + } + + public string CheckGUID(string guid) + { + string html = String.Empty; + string url = $@"https://malshare.com/api.php?api_key={key}&action=download_url_check&guid={guid}"; + + html = GetResponse(url); + if (String.IsNullOrWhiteSpace(html)) + { + return $"Failed to retrieve status for {guid}"; + } + + dynamic dynObj = JsonConvert.DeserializeObject(html); + + return $"Status for {guid}: {dynObj.status}"; + } + } + +} diff --git a/MalShare.NET.2.2.0.nupkg b/MalShare.NET.2.2.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..2025f4250f8ab713146cf0653daa1c9a3fe6e49f GIT binary patch literal 21164 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 I&m$rEAB8nXK>z>% literal 0 HcmV?d00001 diff --git a/MalShare.NET.dll b/MalShare.NET.dll new file mode 100644 index 0000000000000000000000000000000000000000..b9d176c5e9ad0ff19512be563d8e3947bf8332b1 GIT binary patch literal 20480 zcmeHPdvqLUb-y#aJ1ec^wI$hdoXB_`Kcd98ELpaRO%hv{{7_=~B{_+~slAfM){@nZ zGP`oDI+-Y?JaQmyQUZn29vU7gDTMOMX~Ls4ZK0e(4uO_Jc^FO$w5OB<6gad!horyX z{bsbQhwZi1{?jt{+`0GrzI*4szUQpn_sT~kCL(d%FTEu444%ApD!e$DM0I+_$J6q$ z+UHk3W9@%_<-ka;m>KiE(|&d|Gn6e9yi#V+&G_SmOs%b%AOe(8JJmjF*+ksQ&C?7n&w1TTgg3J0#UOE zAcLEgq29ps%7~n7^NaovDAjEe2o1dzcg3|6;cD~UyoZL=RsIk+WgWm>aqSe@RY5BH zUD(gdygnf{d*PGiB9Y`EQST_BROWA{Ts{06zE-4@yjsv$_DCS|uS#G?eT5idrWVu|7vs?sZ-{$KfTYgXH^kQ`K{bQ==J{0ZdZ#wR zYt}n8As${{*dA6)& zvt?x{Yb9loO?l5Nlm;DoR>SNn}v2b89GxWR15L zsCOL!>`Dbm3Y~}LBAdGANg^oa8LaF@nv@a`FcR#&Tj#fC2DIEGL`t z8p}!g-=pOiZq@RiS8F*Ll*?F7a+c*7p66vb`2zxDIWZ@|_`u-3xTPbr`FpD#kb$|(n~L$UtBv5Gp(jXLjtRXgjp2? zm|o)>);F){F9&SaWY-QEtsMZ9Y^^NkHi1+uz=W+5uDz55oi5p0S&ZYA#0nt3;T6sP zZP0#>MZt=dvuAQ$6?9T1G6w|bHd7^HFJOu{Sr}mDp^0%%wTVFn|mzX~y#MbZhd-no*@BAfD>%p&PO1P2ByC=b&` z)!rn7av4V`i6P?hyh(CLHR572clBbV7)Sxhb~xh9lQT`seAKwuP85=nmL zxlHDOz~nNqid@E;Qyuq5)#fr80s^C-l34Cup7+TR5EvoED!o4=mya`-G1kv3m&va} zOfHjj0?Z;;lFMXMUX#lt{b!lWSeRd)H_4z}#t}*)_b$(yWC#e15Mq_y1Z}nq>zW<^ zOHecB{{XP{h*GV{ z77!S%l*B^hlA`9&ifjRa(Mm}K<^rN30W*DtnIttywt&F&B4TE{jCGuLfQPGHMw1~R zFdcvx7A(5xV)FYP$VzVqy@(~3ihg&sqRF6KMl{Jt^iGQIni7q*jEeqrwW7%o5E#+K zDn;uqKU`}q`X$y{H_Wxxx?qp)!YT;8L>|HY3m~sYC)AD&`kMBI5=&mZZy%l6x6Rqh zGfw&J1p~;uIv)800@Lw`IRRELSCUL*Q(luyBuz45F43?&2zxHFm|TTmnzI)&1Oz55 z#KO^ZY9I|Ttj)`E@~aSIIY}qLuz4kxlTCSzt7;E@L^#S(bNG=q;HmK4T?+KwvB<<^;Pa^zzT! z$fmr;a+2oMsf+Tkjd-qF%gGQB7|V&xvV0$fUh)KjtpWnGT2ZoxoKWYB)v7~=fWW9j zEK~;*V{~q?%&J)T?By%w5f<_X1STxRoL~=yUVd1}ro1LBB+bFlZpy%#|3MD^A42x$>JYUh!P{frJQ7d*rK_PT(dQNOQKbu(Pg07CI*0z5QY`4Do+71BaGScgembkro@~_RnFoU9R{n2{+9BPV5zn1>Ky+%hzhqx(K_k@5!nI%{~7Lb zZq&;gL0>F4jzQGy+}IDUC^rt$GndQ_wh9PLZV;Q68-E4;rj8U3P~<#vgZu%3$qiyo z&_|(H8bLCv1QS7$vm#iz;_bNL>EZ=K_CPsg;a>Iu`TL`mhKhUH-;G^7PJcRQoGQ1j z$7ug0ppib-j}!=Mg9J2LvWg#GK#`3Y~KZkG6(0w_{lEq$bIxyk?WA z20nj~95U^a zp$tVAoP!(UbB(jVtQcpH)5>{tHu47qrn3=qf>%-KoSp5W2}CyKH3>x0?}P=xD=7~N z)D5Dl?J60R%Y=gDtYz#83Y~}LiojB zG5=ev#lj<1f4;$QNbnSOIiND!P;-OMIU+66ut63sz#8?M_PFGbyI4{-RKBH;tooal zls`cMSS+R1sy1~=r-)@(%744I;mbU%0aND}uk}B{BL5p?z&Qz&Xbg*fs%@`A8MQFy zxFW5xtVFW)MYX;Q(w_j( zq8i7)A9$^YMF>7%wqnpqq5ESLOzE$3niBr&$se2yL;8MDRV6bSl*@#aBt9yxrCUW!oSF;#vys3o8oQw)V#K7_K@;!d$4uBP^sJcefyZqb$SwEVse zs#N@%D&^?u{Q7$TVXa`g-QZ{d>-^8NC>RVK^ixn(Ifx9(WgJ8@Sq|R~yZUe4Wf`;d zhhk?ox3#x*ws&@HqxK2O13p$GvMK;lE7C)}zvSl%r;BXS(*S`iJK8V%mYLreuG)LF z7mIhf6ZDze+sf2^y5)%GY;iC#asIXmY zvx*-}u0fkWO`c3T@}f<+B=LRA5!)fm%P#@un zgr5_(xn4_NRQ!ty@3Sf4pH;#-i*25c6MjOaopUJ1ju9@zdsFiM@cxO~a#Y{=mgHC9hn5;z@ddT$OZvviI5G*>->M^- z2^M}f`Wwj~TU!)=4L(A#hi}1-DlMdbtkk-YS`NM~_+#pBRjN0n#+2#{sdp-MD5O54 z)GI@ZskB8-hScvVH3-TQr)DKmWTkx6ZkC<$9N?Sf1;FRD z`GS^M+NM>x&MDWswB&1AlF&ArlmvEg3gU+{ zNGo~WRfEnV}-)zFa#Mo-d=M)_h(I+ip5 zIRd`t8F@;%$&jC7EGZEHWH=!>!Sl7l@%RRC_u@3n8B;;G^ z*d|$Nr4l#FLuh%kTyO2SyXA4Y8kW|FygQS}Az^dPuyj}lk~#TLdBQG87o?p*4*wuA ziP8Pq*arabPCkQ@+Y_I}%8ey0Vab0azJuQ?vt+fFte0^+Wo-srZrud9#X4;LNpgqP zqiuS$&3u;Pf`$_Aq)&$^3;t$xh z*52f6?PoEnY=VUPe&;GiW#UL$?JAoUsDOM0R{$+xVm4l7dg$?hhxSMVn zJ8`0;UG%vre0GM<&EYeAbaaHx!e?jr?2z8wh4E3>&kp9@lO1x%cZYLB*%I;YY(C$g zQ*?i>SVGB7w|IEtCL=0(ZVKtn@W}_8b%xEt=ce%4$tUU~Qud4&hE8@$*H9_v6@VDC zHk;?B@Y%^HxI%KX;R>maEn(yE*~upwhvXL1IHWqZhK<8#C!c5>lHsG{N@j@v#>JChdx%(glC41cxsXe|o8kY2U_ZFz!o*b%; zo{H{1JLbE^B9ed%((h*dp^;q^N|aba*B){4u0qk3eWlXa9q!;1jrUC9Mj=y+b& zo6nwAtXQs(%sJ#E$%aa^D<~jam?&3-(bV!%ZZMb6l`3j?7lyoHY^KC5&~M#-_TD_n zFf~Kww$Mh_AVy~Y6$V#Evc(ZO1$Q0FmPX{LpNp9JO0VD+O6U-79_cyiopHPJ`DvY? zZ5Rc}cFK)n5BY9(REkKIUi6z#p3+_8C6A6D>T!o4-Z!}>M+;eh;@}uYK)O?Q<)+h- zHSVdfqsajT{`PEs+%0!LsE$5YK_fGFpB-{FLUO>pw}hPaPLNC9a@o@buL%DY(OW7!*yol;yy0ThE{Z!t$j;X9`e$-OZc(G} zjr&ARZ$nBjyv1-3P@fj(@Xnrm7CUz13Zt_rfwDbrDVxiq(klQdOewKHSGcFGJfKXK zmqVmHnCN7Wc1NgG#OSGG;=#dJBN&lA2i%gFE^qSeo^iKW+MgTEm87q~JD)=c1>p{{ zsl?UMs(ak`Se5xQl!kYF|4QC07r1|2iVPy`{(VF!9mF=N^qL80Ov8%g|)tx)*4+pa0+G0H=)f| zQ@6m>nG#tr0NG=Bhv6%Qlq@vwav@!7>azN7(v;~zFX|ZbL1wu`YA4i!ELuj`2<$7t zHd$~itW&9LdQo-&vhw(I5EAcz)oh8W3|i4ME)L>|(XR#6oI-sbIAkq9R8gLhJySI* zyP*iVgO%-<_G`(kmdlQ)JZeE5GvM*?K6rN-B^>}&3QNbK!!Y70Yi7nR^4waqH6BHD z6R(oHL>6v@H5Jimis*`{%*umd=!Aq-n~KN;<`yFdsYw%msg0yY(GO#a`1B(~cH_^X zFy@sdvS5##z;5UmYIj4set7<<9FcBN{fOBB?Cr<9eZ0FMr$tuIv=!4A>LWW5iG}pw z82lGTEOxC($DUAo=1c~yJwQg0l3mC?1DF9%4tAC1^r?AIWp3eJFTa@F9Ap}~)433_ z6?0n=yKA$P=1bpJdE=h*Z zCdLr^5|kF9DYH*v7|&}Dp||!kZ&vL^ukA%YFOOH}q+RaU9)Auq!To4`8WM7hYaM41 zA2#?ndfh#RmwCG|8uUVznVB*&OV;waa>C3Ci2Ihv7xXFnbrJbAs+mBF^C4qSo1(c6 z(eJ9(FDJl9xkJ!zEyg5c6~@Aw=hBM4Gvim(BiIkJxW}Pa*=D(pS+-+-E4LF| z?>O{>$tUVg?*F8dxNi5^-y4>A#yn9d||8@n2J+fLdMt8wz7 zw8I9I4<|CxIQeKCu!}5>U0_b9lg^UHUMrn$Y3yrhJe*J>De*L~I6gZOw4{@ebbrI- zAK+}Gaq{to$@iwOmPF&^Qw@_JPA_Skd>XZl_ZwvL@kL7-U293>c&u?$#kJH4NY`q@ z`=5$AP57o2H@pp#&z9L17`A)jjic$7mZqppy4<4Pw8%klOH0j?#t_NaO?HzsS+z?V zL*`T_))Zq=lMSA-BDI+qw9sOS85O8__+}N?H~}#sMql;8OD(u5h*oKp4Wmi$b&dD8 zw4};tq!vEc#OOo1x`}5*b~;^QVM|L(C6#Uom2W9yEiDVpTP7b&z+i-^4jzv1`b@kj zZft3aA%>IBS$LOiwOp0TSWp6Vlhh_-VRZ3%yYXlmsbDWpKq-MXX_Tc=s9ExSItk{+ z$uFfBB~xh>Hy&G_XlcAF-J(*{>6%Q8oQ=m4f-rssW~G5vLT))12AU_}kWU@WX? zPoGbdW=D-F4L+PkwzMn?d8fRGq^3y-A#*>O5k+7J0|wvNHCFh)jJ%8=tOo4nJN)d} z0k1H%UmO_my?cum+S%-$velAhJoD)fk7d?}JL;RyY-($Vg!JO6vj`r14gLTQ}lAAF(8f(*ie(BNb`0N`ZsFs4gA-dc~vKy+C^ns8r-`ytdlR8hw^iwG*NBmF)7|Iq3D^c~;*_`&yW zzU2?PpBwpY%IMjC9LF5|KW#>_%RD}`>UgC}7a_dCS04}kalGOv3`S04Y8x9Kl>U8P zo3?C~@ck!R!}r6+`menAQ+MBWU*8jZS00Oh4R%D=zZ1_y)bwZc|GJpc6WyNQlh5~I zS1Y5%AWp z3E_1%wi(#%SdpCo+>KpSKUPr(v06W&YxX_Bd3`GWqZj%0F8byXJ$GoW`J!P)uCM@) z9^4kBa_<|hTYIrSN$ir`{uq)(A#wb=)+g4Z0R!+T(yZr)o2M6$^OkOijTu$S?l*%1`yg@Da9`2=F z*@klujM=z$;g=@XlqY*oSHyafyWBCzD*J7wmXWQL(T;hjEaP^_Fza)k-SFB3ZFslq z&387SJ)_1m4L{VZY}tk0)rK`Y*UP+Gku{d=2mficixC-vf2jFs^^CyB{O_{(E}o*W zoYvC|QM^eRZ&vfp?dq#TkmW%W?%qn%;&CAv)OS7d(n4G-d1rdc_(|kO^=B6%!E>)s kM3ei%46=T@XJ`7A@42k&B<4&o#J64+*RLA?AMwC{14UboA^-pY literal 0 HcmV?d00001