using System; using System.Collections.Generic; using System.Text; using System.Threading; using AllBase; using Work.Api; namespace Work { /// /// 获取上家 /// public class JumpUpProductNew { public static Dictionary> ShouZhangXinTb = new Dictionary>(); public static Dictionary> ShouZhangXinPdd = new Dictionary>(); public UpShopIdBase UpId = new UpShopIdBase(); public ShopChatBase Shop = null; public string Good_Sn=""; public string Html=""; public string OutGoodId = ""; public JumpUpProductNew(ShopChatBase shop) { Shop = shop; } public static string GetUrl(string url, out string pid, ShopChatBase shop) { JumpUpProductNew ju = new JumpUpProductNew(); ju.Shop = shop; ju.GetUrl(url); pid = ju.UpId.ProductIdFrom.ToString(); return ju.UpId.Url; } public JumpUpProductNew() { } public void GetUrl(string url) { string pidCode="",idx=""; UpId.SiteId = 2; string cookies = BaseClass.ChromeCookies; int maillId = BaseClass.MallId; if (Shop != null) { cookies = Shop.Cookies; maillId = Shop.MallId; } long proId = 0; if (!string.IsNullOrEmpty(OutGoodId) && (OutGoodId.Contains("PBB") || OutGoodId.Contains("TJM") || OutGoodId.Contains("TJH"))) { pidCode = OutGoodId; goto End; } if (!string.IsNullOrEmpty(url)) { string id = BaseRegex.GetMatchRegexString(url, @"([\d]{5,15})"); string pid = "0"; if (string.IsNullOrEmpty(id)) { UpId.Message = "没有找到拼多多ID"; return; } proId = long.Parse(id); if (UpShopIdFromServer.UpIds.ContainsKey(proId)) { UpId = UpShopIdFromServer.UpIds[proId]; UpId.GetOk = true; return; } if (PinduoduoApiGetProduct.OutId.ContainsKey(proId)) { pidCode = PinduoduoApiGetProduct.OutId[proId]; if(!string.IsNullOrEmpty(pidCode)) goto End; } //if (string.IsNullOrEmpty(pidCode)) //没有上家,优先走api //{ // if(string.IsNullOrEmpty(Html)) //Html = new PinduoduoApiGetProduct(Shop).GetProductInfor(proId); // pidCode = BaseRegex.GetMatchRegexString(ref Html, @"""out_sku_sn"":""(PBB[^""]+?)"""); // if (!string.IsNullOrEmpty(pidCode) && !pidCode.Contains("wait:")) // goto End; // var m = BaseRegex.GetMatchRegex(ref Html, @"""outer_goods_id"":""([^""]+?)"""); // if (m != null && m.Count > 0) // pidCode = m[m.Count - 1].Groups[1].Value; // if (!string.IsNullOrEmpty(pidCode) && !pidCode.Contains("wait:")) // goto End; // if (Html.Contains("outer_goods_id")) // { // if (GetServerId(proId, out idx)) // { // DeCode(idx); // return; // } // } //} if (string.IsNullOrEmpty(pidCode)) { string urlx = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/on_shop/detail"; string data = "{\"goods_id\":\"" + id + "\"}"; string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(urlx, "https://mms.pinduoduo.com/", true, data, cookies); pidCode = BaseRegex.GetStringJson(ref htmlx, "out_goods_sn"); if (!string.IsNullOrEmpty(pidCode) && !pidCode.Contains("wait:")) goto End; } if (UpIdsList.Count == 0) { UpdataUpIds(); } foreach (string key in UpIdsList.Keys) { if (key == proId.ToString()) { idx = UpIdsList[key].upProIdOne; if (string.IsNullOrEmpty(idx)) idx = UpIdsList[key].upProIdTwo; break; } } if (!string.IsNullOrEmpty(idx) && idx.Contains("-")) { DeCode(idx); return; } if (GetServerId(proId, out idx)) { DeCode(idx); return; } if (string.IsNullOrEmpty(pidCode)) { string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string data = "{\"order_by\":\"id:desc\",\"goods_id\":\"" + id + "\",\"size\":15,\"page\":1,\"mall_id\":" + maillId + "}"; string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(urlx, "https://mms.pinduoduo.com/Pdd.html", true, data, cookies); pidCode = BaseRegex.GetStringJson(ref htmlx, "out_goods_sn"); if (!string.IsNullOrEmpty(pidCode) && !pidCode.Contains("wait:")) goto End; } url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string date = "{\"sort_by\":\"id\",\"sort_type\":\"DESC\",\"goods_id\":\"" + id + "\",\"size\":15,\"page\":1,\"mall_id\":" + maillId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, "https://mms.pinduoduo.com/Pdd.html", true, date, cookies); //url = "https://mms.pinduoduo.com/malls/" + maillId + "/goodsList?sort_by=id&sort_type=DESC&goods_id=" + id + "&size=15&page=1"; // html = GetPostTaobaoHtml.UploadTaobao(url, "https://mms.pinduoduo.com/Pdd.html", true, cookies); Good_Sn = BaseRegex.GetStringJson(ref html, "goods_sn"); if (string.IsNullOrEmpty(Good_Sn)) //没有上家 { Thread.Sleep(5*1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, "https://mms.pinduoduo.com/Pdd.html", true, date, cookies); Good_Sn = BaseRegex.GetStringJson(ref html, "goods_sn"); } if (string.IsNullOrEmpty(Good_Sn)) //没有上家 { Thread.Sleep(20*1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, "https://mms.pinduoduo.com/Pdd.html", true, date, cookies); Good_Sn = BaseRegex.GetStringJson(ref html, "goods_sn"); } if (string.IsNullOrEmpty(Good_Sn)) //没有上家 { //message = "查询无数据"; UpId.Message = "未查询到产品id,请点选正确的店铺"; //AddToTemp(proId); return; } } //李尹添加 if (string.IsNullOrEmpty(pidCode)) { //获取包含✅的上传记录 long idUp = proId; string urlUp = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/list"; string referex = "https://mms.pinduoduo.com/goods/goods_record"; string datax = "{\"check_status\":2,\"start\":0,\"length\":10,\"goods_id\":" + idUp + "}"; //第一页匹配结果 string htmlUp = GetPostTaobaoHtml.UploadTaobaoPost(urlUp, referex, true, datax, cookies); int allCount = BaseRegex.GetIntJson(ref htmlUp, "total"); int page = allCount / 10 + (allCount % 10 > 0 ? 1 : 0); long editId = 0; for (int j = 1; j <= page; j++) { if (editId > 0) { break; } if (j != 1) { datax = "{\"check_status\":2,\"start\":" + (j - 1) * 10 + ",\"length\":10,\"goods_id\":" + idUp + "}"; htmlUp = GetPostTaobaoHtml.GetJsonPost(urlUp, referex, true, datax, cookies); } var m = BaseRegex.GetMatchRegex(ref htmlUp, @"\{([\w\W]+?)\}"); for (int k = 0; m != null && k < m.Count; k++) { string list = m[k].Groups[0].Value; string goods_name = BaseRegex.GetStringJson(ref list, "goods_name"); if (string.IsNullOrEmpty(goods_name) || goods_name.Contains("✅")) { editId = BaseRegex.GetLongJson(ref list, "id"); break; } } } string urlx = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/detail/" + editId; string htmlx = GetPostTaobaoHtml.UploadTaobao(urlx, "https://mms.pinduoduo.com/goods/goods_add/index?id=" + editId + "&type=edit", true, cookies); pidCode = BaseRegex.GetStringJson(ref htmlx, "out_goods_sn"); if (!string.IsNullOrEmpty(pidCode) && !pidCode.Contains("wait:")) goto End; } url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/on_shop/detail"; Html = GetPostTaobaoHtml.UploadTaobaoPost(url, "https://mms.pinduoduo.com/Pdd.html", true, "{\"goods_sn\":\"" + Good_Sn + "\"}", cookies); if (!string.IsNullOrEmpty(Html) && Html.Contains("过于频繁")) { Thread.Sleep(30*1000); Html = GetPostTaobaoHtml.UploadTaobaoPost(url, "https://mms.pinduoduo.com/Pdd.html", true, "{\"goods_sn\":\"" + Good_Sn + "\"}", cookies); } if (!string.IsNullOrEmpty(Html) && Html.Contains("过于频繁")) { Thread.Sleep(90*1000); Html = GetPostTaobaoHtml.UploadTaobaoPost(url, "https://mms.pinduoduo.com/Pdd.html", true, "{\"goods_sn\":\"" + Good_Sn + "\"}", cookies); } pidCode = BaseRegex.GetStringJson(ref Html, @"out_goods_sn"); //if (string.IsNullOrEmpty(pidCode) || pidCode.Contains("wait:")) //没有上家 //{ // Html = new PinduoduoApiGetProduct(Shop).GetProduct(proId); // var m = BaseRegex.GetMatchRegex(ref Html, @"""outer_goods_id"":""([^""]+?)"""); // if (m != null && m.Count > 0) // pidCode = m[m.Count - 1].Groups[1].Value; // if (!string.IsNullOrEmpty(pidCode) && !pidCode.Contains("wait:")) // goto End; //} //if (string.IsNullOrEmpty(pidCode) || pidCode.Contains("wait:")) //没有上家 //{ // Html = new PinduoduoApiGetProduct(Shop).GetProductInfor(proId); // var m = BaseRegex.GetMatchRegex(ref Html, @"""outer_goods_id"":""([^""]+?)"""); // if (m != null && m.Count > 0) // pidCode = m[m.Count - 1].Groups[1].Value; // if (!string.IsNullOrEmpty(pidCode)) // goto End; //} End: if (string.IsNullOrEmpty(pidCode)) pidCode = BaseRegex.GetMatchRegexString(ref Html, @"(TJM_[a-z0-9=+/]+?)"","""); if (string.IsNullOrEmpty(pidCode)) pidCode = BaseRegex.GetMatchRegexString(ref Html, @"(JM_[a-z0-9]+?)"","""); if (string.IsNullOrEmpty(pidCode)) pidCode = BaseRegex.GetMatchRegexString(ref Html, @"[\D]([a-z0-9=+/]+?=)"","""); if (!string.IsNullOrEmpty(pidCode)) { string pidCodex = BaseRegex.GetMatchRegexString(ref pidCode, @"([\d]{6,15})"); //未加密 if (!string.IsNullOrEmpty(pidCodex)) { long upid = long.Parse(pidCodex); if (upid < 999999999l) UpId.SiteIdFrom = 2; else UpId.SiteIdFrom = 1; if (pidCode.Contains("tb-")) UpId.SiteIdFrom = 1; if (pidCode.Contains("pdd-") || pidCode.Contains("pd-")) UpId.SiteIdFrom = 2; if (pidCode.Contains("al-") || pidCode.Contains("albb-") || pidCode.Contains("1688-")) UpId.SiteIdFrom = 3; UpId.GetOk = true; UpId.ProductIdFrom = upid; AddToTemp(proId); return; } } if (string.IsNullOrEmpty(pidCode)) { UpId.Message = "未找到加密密钥"; AddToTemp(proId); return; } if (pidCode.Contains("TJM_")) { if (!string.IsNullOrEmpty(pidCode) && pidCode.Contains("|")) pidCode = pidCode.Substring(0, pidCode.IndexOf("|")); try { byte[] inArray = Convert.FromBase64String(pidCode.Replace("TJM_", "")); idx = Encoding.UTF8.GetString(inArray); DeCode(idx); return; } catch { UpId.Message = "解密异常,请联系管理员"; } AddToTemp(proId); return; } if (pidCode.Length > 3 && (pidCode.Substring(0, 3) == "PBB" || pidCode.Substring(0, 3) == "TJH")) { int mid = Shop == null ? BaseClass.MallId : Shop.MallId; if (pidCode.Contains("?")) { string data = UserLogin.GetSignaturex(Shop.ShopId, Shop.ShopName); data += "&mall_id=" + mid + "&encode=" + GetHtml.UrlEncodeUtf8(pidCode); string urlx = BaseClass.BuildObjString("decode&act=get"); idx = GetHtml.PostUtf8(urlx, data); } else if (pidCode.Contains("#")) { string data = UserLogin.GetSignaturex(Shop.ShopId, Shop.ShopName); data += "&mall_id=" + mid + "&encode=" + GetHtml.UrlEncodeUtf8(pidCode); string urlx = BaseClass.BuildObjString("decode&act=getx"); idx = GetHtml.PostUtf8(urlx, data); } else { idx = GetUpId(pidCode, mid); } DeCode(idx); return; } if (pidCode.Contains("JM_")) { string pid = Decode(pidCode); if (string.IsNullOrEmpty(pid)) UpId.Message = "解密失败,字典不足"; AddToTemp(proId); return; } if (UpIdsList.Count==0) { UpdataUpIds(); } foreach (string key in UpIdsList.Keys) { if (key == proId.ToString()) { idx = UpIdsList[key].upProIdOne; if (string.IsNullOrEmpty(idx)) idx = UpIdsList[key].upProIdTwo; break; } } if (!string.IsNullOrEmpty(idx) && idx.Contains("-")) { DeCode(idx); return; } url = BaseClass.LoginApiUrl + "?obj=upshopid/upid&act=get"; string datay = "&pdd_id=" + proId + "&table=" + (proId % 1024); string htmly = GetHtml.PostUtf8(url, UserLogin.GetSignaturex(Shop.ShopId, Shop.ShopName) + datay); if (!string.IsNullOrEmpty(htmly) && htmly.Contains("-")) { DeCode(htmly); return; } UpId.Message = "未找到解密方法,请联系管理员"; } public static Dictionary UpIdsList = new Dictionary(); public static void UpdataUpIds() { UpIdsList.Clear(); bool had = true; int page = 1; while (had) { string data = UserLogin.GetSignaturex() + ""; string url = BaseClass.BuildObjString("upid&act=getx&page=" + page); string html = GetHtml.PostUtf8(url, data); var m = BaseRegex.GetMatchRegex(ref html, @"({[\s\S]+?})"); for (int i = 0; i < m.Count; i++) { var item = m[i].Groups[0].Value; string pid = BaseRegex.GetStringJson(ref item, "product_id");//商品ID string upids = BaseRegex.GetStringJson(ref item, "up_ids");//上家Id string upidsTwo = BaseRegex.GetStringJson(ref item, "up_ids2");//上家Id2 if ((string.IsNullOrEmpty(upids)&& string.IsNullOrEmpty(upidsTwo)) || string.IsNullOrEmpty(pid)) continue; if (UpIdsList.ContainsKey(pid))//如果dictionary 存在相同的key,remove后再添加。 { UpIdsList.Remove(pid); } UpProId upProId = new UpProId(); upProId.upProIdOne = upids; upProId.upProIdTwo = upidsTwo; UpIdsList.Add(pid, upProId); } had = m.Count > 2; page++; } } public void DeCode(string idx) { string rid = BaseRegex.GetMatchRegexString(idx, @"([\d]+)"); if (string.IsNullOrEmpty(rid)) { UpId.Message = "解密遇到空数据"; return; } UpId.ProductIdFrom = long.Parse(rid); if (idx.Contains("tb-")) UpId.SiteIdFrom = 1; if (idx.Contains("pd-")) { if (idx.Length>13) { UpId.SiteIdFrom = 1; } UpId.SiteIdFrom = 2; } if (idx.Contains("al-")) UpId.SiteIdFrom = 3; if (idx.Contains("jx-")) UpId.SiteIdFrom = 4; if (idx.Contains("wd-")) UpId.SiteIdFrom = 6; UpId.GetOk = true; } public bool GetServerId(long pid,out string idx) { idx = ""; string url = BaseClass.LoginApiUrl + "?obj=upshopid/upid&act=get"; string data = "&pdd_id=" + pid + "&table=" + (pid % 1024); string html = GetHtml.PostUtf8(url, UserLogin.GetSignaturex(Shop.ShopId, Shop.ShopName) + data); if (html == "none") return false; idx = html; return true; } /// /// 新版加密解密 /// /// /// /// public string GetUpId(string code, int mid) { if (string.IsNullOrEmpty(code) || !code.Contains("PBB") && !code.Contains("TJH")) return ""; if (!code.Contains("|")) return ""; int ridMain = int.Parse(code.Substring(code.IndexOf("|") + 1)); int ridClient = (mid % ridMain) % 26; List k = new List(); char[] ke = mid.ToString().ToCharArray(); for (int i = 0; i < ke.Length; i++) { int j = int.Parse(ke[i].ToString()); k.Add(j); } string codeNew = code.Substring(3, code.IndexOf("|") - 3); byte[] b = Convert.FromBase64String(codeNew); int y = 0; for (int i = 0; i < b.Length; i++) { int z = b[i] - k[y] * ridClient; if (z < 0) z += 256; b[i] = (byte)(z % 256); y++; if (y >= ke.Length) y = 0; } string decode = Encoding.UTF8.GetString(b); return decode; } private void AddToTemp(long proId) { if(proId==0 || UpId.ProductIdFrom==0) return; try { UpId.Url = GetJumpUrl(UpId.SiteIdFrom, UpId.ProductIdFrom); if (!UpShopIdFromServer.UpIds.ContainsKey(proId)) { UpShopIdFromServer.UpIds.Add(proId,UpId); } } catch { } } /// /// 解密密文 /// /// /// public string Decode(string code) { string temp = ""; if (code.Contains("JM_DD8E5ED")) { UpId.SiteIdFrom = 1; code = code.Replace("JM_DD8E5ED", ""); int b = 0; char[] h = code.ToCharArray(); temp = ""; for (int i = 0; i < h.Length + 1; i += 2) { char a = h[i]; if (ShouZhangXinTb[b].ContainsKey(a)) temp += ShouZhangXinTb[b][a]; else return ""; b++; } } if (code.Contains("JM_D98817C43")) { UpId.SiteIdFrom = 2; code = code.Replace("JM_D98817C43", ""); int b = 1; char[] h = code.ToCharArray(); temp = ""; for (int i = 0; i < h.Length + 1; i += 2) { char a = h[i]; if (ShouZhangXinTb[b].ContainsKey(a)) temp += ShouZhangXinTb[b][a]; else return ""; b++; } } long.TryParse(temp,out UpId.ProductIdFrom); UpId.SiteId = 2; UpId.GetOk = true; UpId.Url = GetJumpUrl(UpId.SiteIdFrom, UpId.ProductIdFrom); return temp; } public static string GetJumpUrl(int siteId, long pid) { string url = ""; if (pid>9900000000) { if (siteId != 3) { url = "http://taoke.qixiaoke.com/first.php?pid=mm_15630535_36114777_129010993&product_id=" + pid; if (!string.IsNullOrEmpty(BaseClass.AlimamaPid) && !string.IsNullOrEmpty(BaseClass.AlimamaDomain)) url = "http://" + BaseClass.AlimamaDomain + "/first.php?pid=" + BaseClass.AlimamaPid + "&product_id=" + pid; } else { url = "https://detail.1688.com/offer/"+ pid + ".html"; } } if ( pid < 9900000000) { url = BaseClass.LoginApiUrl + "?obj=upshopid/pinduoduo_click&act=jump&id=" + pid; } return url; } public void Ini() { ShouZhangXinTb.Clear(); ShouZhangXinPdd.Clear(); string[] l = DeCodeString.Split('\n'); for (int i = 0; i < l.Length; i++) { if (string.IsNullOrEmpty(l[i]) || !l[i].Contains("\t")) continue; string[] li = l[i].Split('\t'); string c = li[0]; string id = li[1]; if (c.Contains("JM_DD8E5ED")) { int b = 0; c = c.Replace("JM_DD8E5ED", ""); char[] h = c.ToCharArray(); char[] s = id.Trim().ToCharArray(); for (int j = 0; b < 12 && b < s.Length; j += 2) { if (!ShouZhangXinTb.ContainsKey(b)) ShouZhangXinTb.Add(b, new Dictionary()); char a = h[j]; char d = s[b]; if (!ShouZhangXinTb[b].ContainsKey(a)) ShouZhangXinTb[b].Add(a, d); if (!ShouZhangXinTb[b].ContainsKey(d)) ShouZhangXinTb[b].Add(d, a); b++; } } if (c.Contains("JM_D98817C43")) { int b = 0; c = c.Replace("JM_D98817C43", ""); char[] h = c.ToCharArray(); char[] s = id.Trim().ToCharArray(); for (int j = 0; b < 12 && b < s.Length; j += 2) { if (!ShouZhangXinPdd.ContainsKey(b)) ShouZhangXinPdd.Add(b, new Dictionary()); char a = h[j]; char d = s[b]; if (!ShouZhangXinPdd[b].ContainsKey(a)) ShouZhangXinPdd[b].Add(a, d); if (!ShouZhangXinPdd[b].ContainsKey(d)) ShouZhangXinPdd[b].Add(d, a); b++; } } } string allMun = "0123456789"; foreach (KeyValuePair> key in ShouZhangXinTb) { string noHad = allMun; string noReplace = allMun + "ABCDEF"; string temp = ""; foreach (KeyValuePair ke in key.Value) { noHad = noHad.Replace(ke.Value.ToString(), ""); noReplace = noReplace.Replace(ke.Key.ToString(), ""); temp += ke.Key + " = " + ke.Value + "\r\n"; } if (noHad.Length == 1) { char[] no = noReplace.ToCharArray(); foreach (char c in no) { key.Value.Add(c, char.Parse(noHad)); } } } foreach (KeyValuePair> key in ShouZhangXinPdd) { string noHad = allMun; string noReplace = allMun + "ABCDEF"; string temp = ""; foreach (KeyValuePair ke in key.Value) { noHad = noHad.Replace(ke.Value.ToString(), ""); noReplace = noReplace.Replace(ke.Key.ToString(), ""); temp += ke.Key + " = " + ke.Value + "\r\n"; } if (noHad.Length == 1) { char[] no = noReplace.ToCharArray(); foreach (char c in no) { key.Value.Add(c, char.Parse(noHad)); } } } ShouZhangXinPdd[9] = ShouZhangXinTb[10]; //string t = Decode("JM_DD8E5EDC3643D01817BAEC21C67352"); } public string DeCodeString = @"JM_DD8E5EDC3542D11713B9EB21C07752 564961026602 JM_DD8E5EDC3642D01710B8EF21C47754 554862166204 JM_DD8E5EDC3641D0191BB8E82FC67658 557889118018 JM_DD8E5EDC3542DC1411B0EE21C57756 564453976306 JM_DD8E5EDC3545DF191BB9ED25C07558 563789042628 JM_DD8E5EDC3542D0171AB0ED21C57555 564868946325 JM_DD8E5EDC364FD81713BBEC21C47151 559061256261 JM_DD8E5EDC3542DB1913BEED21C07353 564381746643 JM_DD8E5EDC3641DE111ABDED24C47F57 557608443287 JM_DD8E5EDC3542DC1411B0EE21C57756 564453976306 JM_DD8E5EDC364ED81514BEE82FC77250 558046718150 JM_DD8E5EDC3642D01710B8EF21C47754 554862166204 JM_DD8E5EDC3641DB1512BEEF26C27251 557340761451 JM_DD8E5EDC3543DF1016B1EF27C57050 565714860370 JM_DD8E5EDC374FDD1715B8E923C07152 549567104662 JM_DD8E5EDC3146DC1716BBE82EC37356 520464219546 JM_DD8E5EDC3746DE1511BFE820C37751 540643617501 JM_DD8E5EDC3643DA191ABDEB20C77E56 555288427196 JM_DD8E5EDC3545DA1214B9EA25CF7056 563236032976 JM_DD8E5EDC3543DF1812BDE020C17257 565790497757 JM_DD8E5EDC3545DB131ABCE021C17E50 56332859690 JM_DD8E5EDC3542D01914B0EB2FC77F58 564886928188 JM_DD8E5EDC3543DE1115BEEB22C07259 565607725659 JM_DD8E5EDC3540D91611BBED26C47659 566173241219 JM_DD8E5EDC3544D0111BBCED27CF7351 562809540941 JM_DD8E5EDC3740DA1211BFED2FC67F56 546233648086 JM_DD8E5EDC374FDD1914BAEB21C07354 549586326644 JM_DD8E5EDC3543D81313BFEC24C47E50 565021653290 JM_DD8E5EDC3141D01316BBE923C57755 527824204305 JM_D98817C43B40DC1415B9E022CE 864570958 JM_D98817C43A44DE1212BCE827 92630510 JM_D98817C43142DD1814BDED23C0 245964446 JM_D98817C43B40DC1415B9E022CE 864570958 JM_D98817C43445DC1310BCE927CF 734225009 JM_D98817C43446DD1014BAEF23C4 705163642 JM_D98817C43440D81116BBEA21C0 760042366 JM_D98817C43A45D0121BBDEC22CF 938394559 JM_D98817C4354FDD1017BAE124C0 695153836 JM_D98817C4354FDA191BB9EC21C7 692890561 JM_D98817C43547DD1215BFEA2E 61537639 JM_D98817C43445DF1313B8E82F 73721118 JM_D98817C43045DD1413BAE120C2 335513874 JM_D98817C43546DA1615BBED23C6 602772440 JM_D98817C43140DF141ABFE12FC4 267586882 JM_D98817C43541D11910BDE827C4 679824102 JM_D98817C43446D91316BEE02F 70124798 JM_D98817C43440D11110B1EA25C4 769028322 JM_D98817C43246DB1316BBEE25C27E 1032427249 JM_D98817C43643DC121ABFED21C7 554386461 JM_D98817C43A46DF131ABAEF23 90728364 JM_DD8E5EDC3741DF1011B8E120CE7F59 547713187889 JM_DD8E5EDC3141DF1210B9E923CE7057 527732004877 JM_DD8E5EDC374EDB1213B1E922CF7553 548331805923 JM_DD8E5EDD374FDD1013B8EF22C47E 44951116529 JM_DD8E5EDC3742D81111BBEA20C27355 544003237445 JM_DD8E5EDC3745D91217B9E12FC27354 543135088444 JM_DD8E5EDC3547DF1013B1E120C17F57 561711887787 JM_DD8E5EDC3747D81214BDEA2ECF7051 541036439971 JM_DD8E5EDC3041D1151AB1E122C37254 537948885554 JM_DD8E5EDC3640DB131AB9EC2FC37E52 556328058592 JM_DD8E5EDC3646DE1112B8EF25CF7256 550600162956 JM_DD8E5EDC3641DA151ABFEC2FC57751 557248658301 JM_DD8E5EDC3640DC1415B1ED2ECE7352 556457849842 JM_DD8E5EDC3045DF1511BDEA21C17F51 533743436781 JM_DD8E5EDC3147DB1311BBE923C77457 521323204137 JM_DD8E5EDC364EDC1811B1E821C67253 558493816053 JM_DD8E5EDD3743D01117BDEE26C073 44580547164 JM_DD8E5EDD3144DC1014B1E12EC673 42241688904 JM_DD8E5EDD374ED01114BCEB20C174 44880652773 JM_DD8E5EDC304EDB1712B9E926C27E54 538360001494 JM_DD8E5ED83B43D91217B9EA2FC276 18513503841 JM_DD8E5EDC3142DC1814BDEA21C37652 524496436512 JM_D98817C43645DD1512B0EC20 53540957 JM_D98817C43142D81917BFE826C2 240856114 JM_D98817C43543D0171AB0EF23C0 658689646 JM_D98817C4314ED8131BB8EB 2802912 JM_D98817C4364FDA1212B0E821CF 592309169 JM_D98817C43247D01612B1EC2E 11870859 JM_D98817C43546DB1316BDE8 6032441 JM_D98817C4314ED8131BB8EB 2802912 JM_D98817C4364FDA1212B0E821CF 592309169 JM_D98817C43247D01612B1EC2E 11870859 JM_D98817C43546DB1316BDE8 6032441 JM_D98817C4324EDB1110B9E027 18302090 JM_D98817C43743DB1113B8E92FCF 453011089 JM_DD8E5EDB3345DB1215BDEE2FC076 20333747861 JM_DD8E5EDB3340DA1414B8E82EC474 20625611923 JM_DD8E5EDD3347D91714BAE024C27E 40116639349 JM_DD8E5ED83346D91911B0EC2FC676 10018395801 JM_DD8E5EDA3545DB1016B0EF2FC571 36331496836 JM_D98817C43245D81312BFEE22C4 130206752 JM_D98817C43041D91617BCEA25C7 371755321 JM_D98817C43546DB181AB0E0 6039899 JM_D98817C43140DA1412B9EE 2625007 JM_D98817C43543D0171AB0EF23C0 658689646 JM_D98817C43142D81917BFE826C2 240856114 JM_D98817C43245DD1417BFEF24 13555663 JM_D98817C43246DB1211B9EF20C375 1033306752 JM_D98817C43A41D11315BCE920C6 979275070 JM_D98817C4324FDF1816B9EC23C2 197940544 JM_D98817C43446DB1610BCEC 7037255 JM_D98817C43544D0171ABAEB27C0 628683206 JM_D98817C43745DF1916BBE126C3 437842815 JM_D98817C4304EDC1913B0EA26C4 384819312 JM_D98817C43A42D11713B1E120C3 949618875 JM_D98817C43246DC1416BEEB24C1 104547237 JM_D98817C43A4FDF1815BDEC21C2 997974564 JM_D98817C43544D91115BCEE2FC5 621075783 JM_D98817C43A42DA111BBEE9 9420970 JM_D98817C43B40DA131BBFEA26C7 862296311 JM_D98817C4324FDE1712B9E820 19660017 JM_D98817C43140DF191BB8EF 2678916 JM_D98817C43045DA1111BCEE26 33203571 JM_D98817C43544DF1711BAE0 6276339 JM_D98817C43447DE1011B9E925CF 716130029 JM_D98817C4304FD01310BDE820C1 398224177 JM_D98817C43246D81811B8ED27CE73 1009314084 JM_D98817C4364FD01017BEE127CF 598157809 JM_D98817C43247D01217BEE122 11835785 JM_D98817C43544D01017B8E92FC0 628151086 JM_D98817C43545DA121ABAE020C5 632383973 JM_D98817C4304FD11116B8EB27C6 399041200 JM_D98817C43A43D1101ABEE020C6 959187970 JM_D98817C43241DC1313BEED27 17421740"; } }