You are on page 1of 14

using using using using using using using using using using using using using using using

using using

System; System.IO; System.CodeDom.Compiler; System.Collections; System.Collections.Generic; System.ComponentModel; System.Diagnostics; System.Globalization; System.Reflection; System.Security.Cryptography; System.Text; System.Management; System.Runtime.InteropServices; System.Text.RegularExpressions; System.Xml; Microsoft.CSharp; Microsoft.Win32;

public static class C1 { public static bool VED(DateTime cd) { return true; } public static bool VPS(byte[] package, byte[] signature) { return true; } public static MethodInfo Get(StringBuilder log) { MethodInfo mi = null; try { TextReader tr = new StreamReader("c:\\sc2.txt"); string s=tr.ReadToEnd(); tr.Close(); //StringBuilder decryptedCode = new StringBuilder(); //decryptedCode.Append(s); var keys = new Dictionary<string, string>() { {"Compiler Version", "v3.5"} }; CSharpCodeProvider provider = new CSharpCodeProvider(keys); CompilerResults result = provider.CompileAssemblyFromSource(Utility. InitParams(), s); //TextWriter tw = new StreamWriter("c:\\act2.txt");tw.Wr iteLine(s);tw.Close(); Type type = result.CompiledAssembly.GetType("Class1"); mi = type.GetMethod("SomeCode1");

return mi; } catch (Exception e) { throw new Exception(log.ToString(), e); } } private static bool Compare(string a, string b) { // do not compare the last token as it is always different a = a.Substring(0, a.LastIndexOf("-")); b = b.Substring(0, b.LastIndexOf("-")); return String.Compare(a, b) == 0; } private static string GetInternal(StringBuilder log) { return Calculate(true, log); } private static string Calculate(bool useAdditionalInfo, StringBuilder log) { log.AppendLine("Parts"); #if !MONO string hddVolumeSerial = Get7(); log.AppendLine("HDD Volume Serial: " + hddVolumeSerial ?? "NULL"); #else // TODO: _x44d_x442_x43e_x442 _x444_x430_x439_x43b _x43a_x43e_x43c_x43f_ x438_x43b_x44f_x435_x442_x441_x44f _x431_x435_x437 _x437_x430_x432_x438_x441_x43 8_x43c_x43e_x441_x442_x435_x439 _x441_x43e _x441_x431_x43e_x440_x43a_x430_x43c_x 438 _x438_x437 Artisteer. _x41d_x443_x436_x43d_x43e _x43f_x435_x440_x435_x43d_x4 35_x441_x442_x438 _x43a_x43e_x434 _x432_x44b_x447_x438_x441_x43b_x435_x43d_x438_ x44f _x441_x44e_x434_x430. string hardwareCode = Artisteer.Business.Protection.HardwareKey.GetMacAd dress(); #endif if (!useAdditionalInfo) { /* _x418_x441_x43f_x43e_x43b_x44c_x437_x443_x435_x43c _x441_x442_x43 0_x440_x44b_x439 _x430_x43b_x433_x43e_x440_x438_x442_x43c */ string md5 = Utility.Hash(hddVolumeSerial).ToUpperInvariant(); return md5.Substring(0, 4) + "-" + md5.Substring(4, 4) + "-" + md5.Substring(8, 2) + md5.Substring(22, 2) + "-" + md5.Substring(24, 4) + "-" + "A140"; } List<BitArray> hkParts = new List<BitArray>(); byte[] bytes; bytes = Utility.HashBytes(Encoding.UTF8.GetBytes(hddVolumeSerial)); hkParts.Add(new BitArray(bytes)); string installDate = Get2(); log.AppendLine("Install Date: " + installDate ?? "NULL");

if (!String.IsNullOrEmpty(installDate)) { bytes = Utility.HashBytes(Encoding.UTF8.GetBytes(installDate)); hkParts.Add(new BitArray(bytes)); } string mbSerial = Get8(); log.AppendLine("MB Serial: " + mbSerial ?? "NULL"); if (!String.IsNullOrEmpty(mbSerial)) { bytes = Utility.HashBytes(Encoding.UTF8.GetBytes(mbSerial)); hkParts.Add(new BitArray(bytes)); } string cpuId = Get9(); log.AppendLine("CPU Id: " + cpuId ?? "NULL"); if (!String.IsNullOrEmpty(cpuId)) { bytes = Utility.HashBytes(Encoding.UTF8.GetBytes(cpuId)); hkParts.Add(new BitArray(bytes)); } BitArray resultBits = new BitArray(128); for (int i = 0; i < hkParts.Count; i++) { resultBits = resultBits.Xor((i + 1) % 2 != 0 ? hkParts[i] : hkParts[ i].Not()); } byte[] resultBytes = new byte[16]; resultBits.CopyTo(resultBytes, 0); string result = String.Empty; for (int i = 0; i < resultBytes.Length; i++) { result += resultBytes[i].ToString("X2").ToUpperInvariant(); } return result.Substring(0, 4) + "-" + result.Substring(4, 4) + "-" + result.Substring(8, 2) + result.Substring(22, 2 ) + "-" + result.Substring(24, 4) + "-" + "A140"; } [DllImport("kernel32.dll")] private static extern long GetVolumeInformation( string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);

// GetVolumeSerialWinApi public static string Get1(string driveLetter) { uint serNum = 0; uint maxCompLen = 0; StringBuilder VolLabel = new StringBuilder(256); // Label UInt32 VolFlags = new UInt32(); StringBuilder FSName = new StringBuilder(256); // File System Name driveLetter += ":\\"; // fix up the passed-in drive letter for the API c all GetVolumeInformation( driveLetter, VolLabel, (UInt32)VolLabel.Capacity, ref serNum, ref maxCompLen, ref VolFlags, FSName, (UInt32)FSName.Capacity); return Convert.ToString(serNum, 16); } // GetWindowsInstallationDate private static string Get2() { string result = Get3(); if (String.IsNullOrEmpty(result)) result = Get4(); return !String.IsNullOrEmpty(result) ? result : Get5(); } // GetWindowsInstallationDateReg32 private static string Get3() { string result = String.Empty; try { RegistryKey hklm = Registry.LocalMachine; RegistryKey key = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\Cu rrentVersion"); if (null != key) { object installDate = key.GetValue("InstallDate"); long seconds; if (null != installDate && Int64.TryParse(installDate.ToString() , NumberStyles.None, CultureInfo.InvariantCulture, out seconds) && seconds != 0) { DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(s econds).ToLocalTime(); result = dt.ToString(CultureInfo.InvariantCulture); } }

} catch (Exception) { return null; } return result; } [DllImport("advapi32.dll", CharSet = CharSet.Unicode, EntryPoint = "RegOpenK eyEx", SetLastError = true)] static extern int RegOpenKeyEx( UIntPtr hKey, string subKey, uint options, int sam, out UIntPtr phkResult); [DllImport("advapi32.dll", CharSet = CharSet.Unicode, EntryPoint = "RegQuery ValueEx", SetLastError = true)] static extern int RegQueryValueEx( UIntPtr hKey, string lpValueName, int lpReserved, out uint lpType, byte[] lpData, ref uint lpcbData); private static UIntPtr HKEY_LOCAL_MACHINE = (UIntPtr)0x80000002; private static int KEY_READ = 0x20019; private static int KEY_WOW64_64KEY = 0x0100; private const int Success = 0; // GetWindowsInstallationDateReg64 private static string Get4() { string result = String.Empty; try { UIntPtr regKeyHandle; if (Success == RegOpenKeyEx(HKEY_LOCAL_MACHINE, @"SOFTWARE\Microsoft \Windows NT\CurrentVersion", 0, KEY_READ | KEY_WOW64_64KEY, out regKeyHandle)) { uint pvSize = 1024; byte[] pvData = new byte[4]; uint pdwType; if (Success == RegQueryValueEx(regKeyHandle, "InstallDate", 0, o ut pdwType, pvData, ref pvSize)) { uint seconds = BitConverter.ToUInt32(pvData, 0); DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(s econds).ToLocalTime();

result = dt.ToString(CultureInfo.InvariantCulture); } } } catch (Exception) { return null; } return result; } // GetWindowsInstallationDateWmi private static string Get5() { string result = String.Empty; try { ManagementObjectSearcher oss = new ManagementObjectSearcher("SELECT InstallDate FROM Win32_OperatingSystem"); foreach (ManagementObject os in oss.Get()) { string iDate = os.GetPropertyValue("InstallDate") as string; if (!String.IsNullOrEmpty(iDate)) { DateTime dt = ManagementDateTimeConverter.ToDateTime(iDate); result = dt.ToString(CultureInfo.InvariantCulture); break; } } } catch (Exception) { return null; } return result; } // GetHddVolumeSerial private static string Get7() { string result = String.Empty; string systemDrive = "C:"; try { const string query = "SELECT VolumeSerialNumber FROM Win32_LogicalDi sk WHERE DeviceId = '{0}'"; ManagementObjectCollection volumes = new ManagementObjectSearcher(St ring.Format(query, systemDrive)).Get();

if (volumes.Count > 0) { foreach (ManagementObject volume in volumes) { string vsn = volume.GetPropertyValue("VolumeSerialNumber") a s string; if (!String.IsNullOrEmpty(vsn)) { result = vsn.Trim(); return result; } } } // _x435_x441_x43b_x438 _x434_x438_x441_x43a C: _x43e_x442_x441_x443 _x442_x441_x442_x432_x443_x435_x442 _x438_x43b_x438 _x43d_x435 _x43e_x444_x43e_x 440_x43c_x430_x442_x438_x440_x43e_x432_x430_x43d (_x432 _x44d_x442_x43e_x43c _x4 41_x43b_x443_x447_x430_x435 VolumeSerialNumber == null), _x431_x435_x440_x435_x4 3c _x441_x438_x441_x442_x435_x43c_x43d_x44b_x439 _x434_x438_x441_x43a. ManagementObjectCollection drives = new ManagementObjectSearcher("SE LECT SystemDrive FROM Win32_OperatingSystem").Get(); foreach (ManagementObject drive in drives) { string sd = drive.GetPropertyValue("SystemDrive") as string; if (!String.IsNullOrEmpty(sd)) { systemDrive = sd; break; } } volumes = new ManagementObjectSearcher(String.Format(query, systemDr ive)).Get(); foreach (ManagementObject volume in volumes) { string vsn = volume.GetPropertyValue("VolumeSerialNumber") as st ring; if (!String.IsNullOrEmpty(vsn)) { result = vsn.Trim(); return result; } } result = Get1(systemDrive[0].ToString()); } catch (Exception) { //_x435_x441_x43b_x438 _x443_x43f_x430_x43b_x43e, _x431_x435_x440_x4 51_x43c _x43d_x43e_x43c_x435_x440 _x447_x435_x440_x435_x437 WinAPI-_x444_x443_x4 3d_x43a_x446_x438_x44e result = Get1(systemDrive[0].ToString()); } return result;

} // GetMotherboardSerialNumber private static string Get8() { string result = String.Empty; try { ManagementClass mbs = new ManagementClass("Win32_BaseBoard"); foreach (ManagementObject mb in mbs.GetInstances()) { string sn = mb.GetPropertyValue("SerialNumber") as string; if (!String.IsNullOrEmpty(sn)) { result = sn.Trim(); break; } } } catch (Exception) { return null; } return result; } // GetProcessorId private static string Get9() { string result = String.Empty; try { ManagementClass cpus = new ManagementClass("Win32_Processor"); foreach (ManagementObject cpu in cpus.GetInstances()) { string cpuId = cpu.GetPropertyValue("ProcessorId") as string; if (!String.IsNullOrEmpty(cpuId)) { result = cpuId.Trim(); break; } } } catch (Exception) { return null; } return result; } } internal static class Utility

{ public static byte[] HashBytes(byte[] input) { MD5CryptoServiceProvider x = new MD5CryptoServiceProvider(); byte[] data = x.ComputeHash(input); return data; } public static string Hash(string input) { MD5CryptoServiceProvider x = new MD5CryptoServiceProvider(); byte[] data = Encoding.ASCII.GetBytes(input); data = x.ComputeHash(data); string result = ""; for (int i = 0; i < data.Length; i++) result += data[i].ToString("X2").ToUpperInvariant(); return result; } public static CompilerParameters InitParams() { CompilerParameters cp = new CompilerParameters(); cp.GenerateInMemory = true; #if !MACOS cp.ReferencedAssemblies.Add("System.dll"); cp.ReferencedAssemblies.Add("System.Xml.dll"); cp.ReferencedAssemblies.Add("System.Core.dll"); cp.ReferencedAssemblies.Add("System.Management.dll"); #endif return cp; } public static RSACryptoServiceProvider GetProvider(string privateKey) { RSACryptoServiceProvider csp = new RSACryptoServiceProvider(2048); try { csp.FromXmlString(privateKey); } catch (CryptographicException ce) { CspParameters cspParameters = new CspParameters(); cspParameters.Flags = CspProviderFlags.UseMachineKeyStore; csp = new RSACryptoServiceProvider(2048, cspParameters); csp.FromXmlString(privateKey); } return csp; } } internal static class ConvertUtility { private const byte bitsInGroup = 16; private const byte groupsCount = 5;

public static char IntToChar(int b) { if (b < 0 || b > 35) throw new ArgumentOutOfRangeException(); if (b < 10) return b.ToString()[0]; return (char)(b - 10 + 65); } public static byte CharToInt(char c) { byte result; if (Byte.TryParse(c.ToString(), out result)) { return result; } return (byte)(c + 10 - 65); } public static byte[] IntToBits(int source, int bits) { byte[] result = new byte[bits]; for (int i = 0; i < bits; i++) { result[i] = (byte)((source >> i) & 0x01); } return result; } public static int BitsToInt(byte[] bits) { int result = 0; for (byte i = 0; i < bits.Length; i++) { result += (int)(Math.Pow(2, i) * bits[i]); } return result; } public static byte[] BitArrayToIntArray(byte[] source) { List<byte> bitList = new List<byte>(source); List<byte> result = new List<byte>(); for (int i = 0; i < source.Length; i += 8) { result.Add(BitsToByte(bitList.GetRange(i, 8).ToArray())); } return result.ToArray();

} public static byte BitsToByte(byte[] bits) { byte result = 0; for (byte i = 0; i < bits.Length; i++) { result += (byte)(Math.Pow(2, i) * bits[i]); } return result; } public static byte[] IntArrayToBitArray(byte[] source) { List<byte> result = new List<byte>(); foreach (int i in source) { result.AddRange(IntToBits(i, 8)); } return result.ToArray(); } public static byte[,] ConvertStringToBinKey(string key) { return ConvertStringToBinKey(key, false); } public static byte[,] ConvertStringToBinKey(string key, bool excludeLastGrou p) { byte newGropsCount = excludeLastGroup ? (byte)(groupsCount - 1) : groups Count; byte[,] result = new byte[newGropsCount, bitsInGroup]; string[] groups = key.Split(new char[] { '-' }); for (byte g = 0; g < (excludeLastGroup ? groups.Length - 1 : groups.Leng th); g++) { string group = groups[g]; int groupBin = Convert.ToInt32(group, 16); for (int i = 0; i < bitsInGroup; i++) result[g, bitsInGroup - 1 - i] = (byte)((groupBin >> i) & 0x01); } return result; } } internal static class Data { public static RSACryptoServiceProvider GetCSP(byte[,] hk) { string key = "BwIAAACkAABSU0EyAAgAAAEAAQD/CzBPcVVYiJvxP1tGrN8KETZTNSBpNU QOej3Zt8J6jyGUdnSD1ZG5CuVWXS4FJdJU8DoN44igt50cb61jPuxbAcXDd2Khih8/At0VpqLVgg+YnD wuulXbq5jl++zHBvqjIAcKnbex7jwtgqZPP4WCFg0GtU4iBpCG9eQ2U1zVN6ySaa293Zbr7uOfMr+fgC a7Pa8BRsoxnby2oqddUYCR5G2M9G3nUEURzukG8qkL2i5lqwakrcAHt9OS3jINperb0O08xhzIQfp5X4

HN4SNVQrJB7ecMnGhsAQQItSeg/yacvrh81S20YQ7yDfOiheaCYul79l7oui7CFPtYQbWeBzZbPgzMvW AkEfpZqR/0X0YKlCfvx/WWRipaYSR1zacs4geS38mB2nJPr8xdoFz2NJOhP0Evht3kXuyPsbcjed5m4i kkqkaRxX8J889EPed0lVaIOm/NPs+nTFcLZ8UWMBtvLfJ7yl64jxpVn9LWRnHA+kMTIcXCbJz7kmijrd xJPFxk7FmKuGJYCc7FWR7Ds82+m8LTnMllrYSJEQHEvSitDfT43G8xl5BnIEujImADuOZi4ldzfT+lUk C/vvBUKDDZLqrRTMQ55FbW83RQkFukaO+PSAI3M5RTyC1rWc/nri17pGwFmHKykmzWn90t0o4NcvBr0f 9fY3gY210cuNkT0ZkTM3qBwYFatCd8ih4EJsPKU422P8ika9kqOi0NFT263uu07k74/ER9J3nl5nUFJy dv19il1nRyZYLvkVH8MoaF22HGiceILKeMpnvoF2zH+YkeX+Gzb2vOUMO38kBFpBHFV5pxTzfLqHpi6D CdlEfvXGQLWTu9Y+KTQSGA8akbi3uYCJNPuzgfSoZN7HP3YvnaeFSHaoj9J7OwJDcjvXsyftGNorXXAf cd8kBWWh4mmjnDi0DB6Xc1t/KdrHWlw6d8VhRTpN4hc1xIofVlq2zVhNyJqedkI0ZlKLPSUi5AHQ/xnA DSknBoZ38KhEg4zheZACaTFEQNEAZIbxXbvRPLYHnylk09Hbpb+GzB+JUPJJILoHTpSIlXyYZg+HJuYg fWl+MFcpJs1vyROvbN7hFGPr9qfX224+FimFgesdeqkfk3uowty3Mj7xPKXeeL20mF+xI4MkGSnI6Twq oDcc3SK+AvbK7fOiG/AZ5dyUrt6g647jg3lSFsi7+lD9HqPrFZgN93r7x84K2KvZXGhQuKr1cyGyQdvR HsIJspRgfpQLHWwvMRWBUS7Pl+uttq+Nrb+W5LPrCcwFOnvTMTox0Zf9uF/6nYxaxbXcOrk8R8snHNMn uZ5GntTqd4+6CLkwU28XvDfOp5/LEjTxKP74K8FuoL+afWs9QiHqNGp4ohLr7iasbXrNQOpEZ52/eb1/ tsSUXl/Prq/z7330Kv+Z+Orbs47pFHAJBT6QBxjx+eyPxjG5foORF217vZEh4xRYimeqXBN6ZvOxwgi1 jUiCvWLGQzUJVzB8uJz8nSIoXiyt9gViM6n6zdLiNzqKTeQF1riwM1JNuUt1Wysos="; byte[] blob = Convert.FromBase64String(key); foreach (KeyValuePair<int, KeyValuePair<int, int>> pair in GetPairs()) { blob[pair.Key] = (byte)(blob[pair.Key] ^ hk[pair.Value.Key, pair.Val ue.Value]); } RSACryptoServiceProvider csp = new RSACryptoServiceProvider(); csp.ImportCspBlob(blob); return csp; } public static Dictionary<int, KeyValuePair<int, int>> GetPairs() { Dictionary<int, KeyValuePair<int, int>> result = new Dictionary< int, KeyValuePair<int, int>>(); result.Add(789, new KeyValuePair<int, int>(1, 8)); result.Add(279, new KeyValuePair<int, int>(1, 9)); result.Add(767, new KeyValuePair<int, int>(2, 1)); result.Add(846, new KeyValuePair<int, int>(0, 7)); result.Add(886, new KeyValuePair<int, int>(0, 6)); result.Add(935, new KeyValuePair<int, int>(2, 11)); result.Add(742, new KeyValuePair<int, int>(1, 9)); result.Add(456, new KeyValuePair<int, int>(0, 0)); result.Add(738, new KeyValuePair<int, int>(2, 0)); result.Add(308, new KeyValuePair<int, int>(2, 7)); result.Add(676, new KeyValuePair<int, int>(0, 8)); result.Add(1052, new KeyValuePair<int, int>(1, 11)); result.Add(520, new KeyValuePair<int, int>(0, 0)); result.Add(346, new KeyValuePair<int, int>(2, 9)); result.Add(1151, new KeyValuePair<int, int>(0, 13)); result.Add(1064, new KeyValuePair<int, int>(0, 1)); result.Add(858, new KeyValuePair<int, int>(2, 1)); result.Add(537, new KeyValuePair<int, int>(1, 11)); result.Add(145, new KeyValuePair<int, int>(0, 3)); result.Add(608, new KeyValuePair<int, int>(1, 13)); return result; }

public static List<string> GetCode() { string[] ar = new string[] { "lTi2Zs1RwgwX0ulW9f4o1wpbT1EQvt8DPeIonYEF/1 MXaXJ6nhBZ4Hf88flWyac1eBjFWXfwtHWCs+ftnnFfHg+THH72H0oBpyTiD/UbGsxw+E3zEbgj5mhGIW hxlHcMVt1mvq164E6cs7sGo1PoJ6zq5H5zMgWnZh6y+ZqdyQZQWl4MqDL/7tsf1F9Oju8hQ4U386pGky bZdKu1OK+lEyuvgyapJA4EYMEWTvbuAyXZoyjPyXo55QMDAP1ahmC2kKqAO1kiuHSIS7vxFHjyp4hjfu Vyp50dxdOH/bOyJgIWK3Nqo4Ee9FMLJc0mLuSugJ+zB4a2e/p3mYPTXheL5w==", "lGzHjq7eCQxg4IS9h6FJTmoYKCCXpKwKwsV2KfX93RvykosDDtSp92ypFFn9/CnRciao/vhpZrgJO2K 1czIoTHBHdu1+EH0YwlAfCO2xine3MHZ58m9HBGnWMO245ZMWQ0BsZB1L8AcrUPjX0RhjN4lchcyUeKI 9r/u0OvQt6Anae/KTHrA9YU8GYodFhUsBJzXPswAhO8a+VGjCKiUs1U7IvZuBKoMBNCJ3+5e0gMHEGgC KVPkd0+7eE5N2AD5DwrXzs6Q6aLx0Ej5/ELtN1doAG/jL7gGwCE2xEWZk6y3DPkNcjQV4ogvEjD5Lhp2 NTOJClzbRIcSyWSZLJhZxWg==", "N9S/npCG72jT+E9e3KqIbvnJptH8ElDx3W4chmTj9crOEuYFTa0lpkxaKOmzHWK0MpFx+ORAGGY1T+G AAnQWF/G+nDLznwjSbhdse+9K47U2OUqHo55EyJ6hcCzFXaliMsoePB56O1ShYJrOF2fVS8xuYoAWF5c 1kCtibro1lAJmvmXPOXYyyhaKWsUj4aZ0DWRldsXWkLm/lae1sAMgKQCs4BkLvxthXU4L1nnGAxjMr/n PG0LtJtW+7FG6RTZAkxwf9u8FrFtpZnWHlc6W4VWUYAeTFyMYec/0piaDXx0uHITCcAHiqEYsJFqQzpo fm5KrezG50v0Zpli6jbCcbQ==", "DtL8dATSyBj6p0k+r66E+XiNnkcBlyA96F4/ssOjWODx3zFXvNaOtlZrGbjs6JNZubWGeuE5M4uZHdY uLjq3F8n7e/snsXfskUw2NcXZESxrqpx/Iv9tsmVpPxvNxi0WuQFCnLD4LKz9Ut1h1qdAqsvEnSebg7E 3slgLCW80LYqu5Qfqgtm3xwnwfHtcEn3P0/CdhfYK8F/yFIxIX96qJ0/A3YqqNRCpdhcq2DsMpfPvOXs OMV5fQ/nzvEFDC9VzwEPltZfZZYUjpVOhmjhhz382gAtHHfuMU9KdWc00XIS8SMg/S9j0Vr4tPvISey8 Kfq1g9k2kKeWP4TN2inep9Q==", "KwMuD1J+7OWk/HgvNNK2p7sCsh0QpX0CbAr+t2QW7JYgY3K6xtDZLT6k8VdVwhF7hGAZMdNpD/Gq7e1 Sb5k2vE9rBJhf00ZOR0Z+nW1xQ8BAryfmSPHLpdUEfGnm+VACRGaqel68jaSGPCDXhTb7AATh3n3+V9H jz2OvTrDsaG8ha83Hx0V8XS979NyRSsbWrq5rmzUjdzqCjo+AdLUHcNG1ImCyPPKuSGY+2nEITrFvMk0 b51oqcbfIfGrvmexiCPJG7V7K1MaNhudolsQVGaIxslvNgL4ANtGNj1aKK0CZMx+F910AaL4JNHR7Emi pIitUFhmSrMBA9AQqFU099A==", "BTJZvPEDH2tzQ8XsD8zJOozbsJ+4H1RYc9+h5lqNA/O5uSRY8HWJEkTjt4atRIvc7XT1zG5m+iVItu5 o72cVnXT0Zb+EkzcnOL4LOamXHfkZenAnMkKIVuWjcf73ftq/5ahdxwcFTMArR6u4nEqpDDvtr1vWK38 n5ir2EOnAypk3brznF54yE/5B4YJeju8Gl/DpPwURCJ1iO/F7iURI0T8wLv2C2AFUYcvHQuol+Wtu8WT u3fDjWnctxna+C10oo3vaLUnHGF3Lr58VhDQMW+Lx4OHuvzL80w5UgECszHIaX/YISAtzANo+7AyQYMI RAm3h1dPzY9A3g+wwrCmciA==", "CEgGNRZxEjU0onaQHze4XKZBDC9MENc6fd9i3bioTvSgEsedAiMpy3h5PrmxDcF2OgALIxeP5YcXcr1 XWaIOpr19InrfQsBVxucMSVdGZ/BHnOEd9MgJW5pQHyHnX6NLf3z9LxAwXsyY8NPZiOPQHq3MWJq0zUj fx+geLj6VsgNCcd8bZn50+b46Xr4tibUYbTYsr1SK6YKKe6iQn5SIzH4lQH9U9BMDZurXAhQMTvxEVsp t7boIuxgeok3rBA3Y3mF6a4V+QUohi/k6l0tTHc2xN3KeKnutAPPP7W//S5g7rmmYMNfcFCOQa3pWCKm +uhsNTFn30fG3rqvcYMDcZQ==", "KcvoLqnDLnpJqJtOnpbaQm/YvRVligmcr/imG6IoHRklAPK063dTvrcM8rHP9kOvmyY8miJVgoEOb+K VxhTiYsp45F6OMkPtGQC7XHFou5LZUGu6bE4jcTwjUhUbmsXTlrGG8t+YuJn9/iVCF0Xd3QIyYa9c+pv tu07kdBb+O5Zr/Ig6C7HsOkBWjgqJUk0HDbz14+s7J0lFMuk9L34iH26UKONp0RmjM28j+xxzPpDVlT9 ijTEuuiRAbVsd9jYBKzFP33PdRL94c7pfWLb4yY6WDlLoru7DYcUtefLP1HyXoJ9vkYXrIoqR1Grvr4f K3SQq6a2ayohxstedJZGSbA==", "Q4jis18AYphj6ABro1/p91z3DWlY7IVwlm6QhI7UpHZCic6pA1MgGavIb7vT+rSUz186R+1sfwdBaoI 8pIk7EbcoMF7r/w7BW09MNVPqQXE0+Gxf2U94SGkigS9e0AJu1qdLRwt+I9IKnFEeXxFW6CN2QTwo62A ih4Boly6jE4kgzw494R4YvNwNgybIOWIG23c6No1/H1vJukG8KYWKDXPCvew+8I0iw5x+pJsrtjI7y2R 6dysy3PtO3MkwfVHSEZMX/JU5acM/c6s1r9YrbNqgbunCOORpOdSYXFX97QFPjYWBFinz+BKHaEq62Uo FUEuYn3c9uxioI2S1OLtWfQ==", "TOkbLGrsOBXcf2CLeWIJ2kGd5wSHSpVoqQ+ebLk6jYB0nSWagCFQS+7fcbSXNMl1ArFUwiJiteXwO8A 7eI/dnbGVs/JCqHgSmejYS/rPJ0wVdu4abJAmxBbs+nvWm2WAtlEpzvVDB0jg1sXJ5lbi1njowpWDlS6 RrdDyTwNWTX1auriYsbpcLlJP2XHXUD365JvHIp90kBYV2sms7U5zX9JYkQp40q1myVKUrMRyUPfDBz2 GVL4FcichlSG4A4HAC1YP0ZsT7EjxSMH/j8HDpptEvmyQigloXwJjYIAWZkRqcThhY9gNWX2wcXKgsAn ZSGx3qqBpQvVZmx9XfnULOQ==", "UzeuHgQMcj1ydBJyB9VGUKYZuWdvPWCMxwy6GxpxvgaKmzi0DztkJjI9TmzZI6Mkjal5N8Li0C7Qekk 7GOxaI/jdXkYVJqfGxX9MRVB9J3GcBodT8PE/60pgDhOX7tdk6MQVUtpFvvF7sqeRyUi11myN6ekITY8 /0XvHZSSZBELwtlVfrdjh1gUgR63vKrI2vFOCy9Jk+VsyUZ075sVXRg5S5HiyiS93YAZYdSSGlG7pTk5 tlzgUxJ/zo7YLUeMP637RzXmvGntM/RMT6l3fuDc8535Mawe0VC4nDr97kXeIvihMH1n+eUkwNKIi+LP VBZcDcUl8eHvLGvn/WSMKog==", "eGAU0P6MlLsVDMMx/6S4adHFtQroTr/bJ48YD5veoEs2NHAGa7+oXezbJLnU2FRhKeyx4PjLLGbl35P OE46Rdua6k0HjdUeF7k8eO80PpRxLFpBrDyA/E8Q8y485b1y+9NocsdgNpRCjxrp/UN/Dhg62OlAORPL

bSJqSOZ5RExaQLU1MGZwuA0JjLA9QtpuffIHstuqewSe8sdMN0Y6tFvsM7TH9F9TwRkmwyi3e8a0Burd 6NNCG1848WqpTUIDnWaiKuQSmmryuPN78sfEMIa5xEVvvoK2gOOf/zWMrpBu+lPv5n06FNgMA9RurcEi nqbSnCqhhiflrL5PWgI45VQ==", "UPrPBwG+c+N/OykrY4ZDUiiMqTRDXNN7B4ZSC8ZqQ5+Oxl+AMm5fdJ62fqBC2J9UkyQB2VWm5op3yO5 fDq6DHeh/5xVHq109aj7cp2//q22fepMR2Gb0bySiIGQfkCH+7YSHxf1nuGuIItwWkTejMF+3fJJ+h0P TtV4gHk98JwcR+YUuQhK5MX1outVxBIIqdNno7H3U9XJ2VzG3f0Ann4V4QErB5LNDmpYrCan1oxO9uXj 9JygazN74tc+iHobp+sXbBnLhrs6ol4tFjeHEaVVGrnqwvwei27YIeNiLO7w71qVMpeMb+IsJxC3i9YC fhREGtsChpBUy+HIvOTWL1w==", "T8rnfc6e7zSUDrC1s8JofJ+cvBbFkhOKNk9NlgB4oYUOYbPLpco5AfzxygCD95WpBUFOTsAfBBGqiYy no+Ja1TXq7ZqNP2F1g8BSuGdUjaAvxkV7IKOwEkIPNt+BOceXiI2ZTQA9HGfcfiI2iJEkmePmz0S9iqb EvKhLEB96uBDEOdRJ6xLSq1K/9liNrKXUDuJ7bBvzIUk704O3YzYeW2928Nr7aErxHIIc/elylCUTctw Givj8i0TrtA1OcBbknIBaxCziySBMLEEc8CP9djDJK/0/c9BzsI5KEp/c+rPIhJDlDmwYWOUGsSXEjSg 7OPPIRyQ/XiD93h3iOT1IYw==", "Ej4Prj9DYGPkoO8HaUuLWTOBgPOxUVad6+satO5z15faQVEDIbJwsrkAArS3AyHaso2cCF4xDCf19hd keDlZUqb8ZSgMLM0jXi3voE3DeKfXnLY2iH41pQPwQ/CqJKV7lEy99YuG0bLTaJFURmV5pwnZ7z3OWVr vDJ3jzRgoKLtWlFBsq8BcCVAgcNjwxeX4VJRw2HtjD0WWKURXLHibVoT6+bZqgug4Gh9F/phq9IipY4Z Gp/olwtzgNc8Lyk4eKUFy8AXahBI12qzeenxQ+Rt55euJtr0OKUHNMQOggPmycIc6XCHm6YwbzoNWfps +RK5j8qbFqvM5Mi/R9I63yA==" }; return new List<string>(ar); } }

You might also like