代理版本调试

This commit is contained in:
wule_5900x committed 2026-07-05 22:53:54 +08:00
1 parent 0b325e7cd8
commit 8ff2508632
36 files changed
+1049 -342

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ namespace AllBase
/// <summary>
/// 版本ID
/// </summary>
public static int VersionCount = 1203;
public static int VersionCount = 1207;
public static string MainPath = "29wx";
//public static string MainPath = "29wx";
//public static string MainPath = "29pdd";
@@ -1,4 +1,5 @@
using KJD_Web.Model;
using KJD_Web.Model.ErpModel;
using KJD_Web.Model.ShopModel;
using KJD_Web.Model.WxModel;
using KJD_Web.Utils;
@@ -187,7 +188,7 @@ namespace KJD_Web.BLL.WXXD
{
conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
mySql = new MysqlUtils(conn);
sql = " SELECT app_key,id " +
sql = " SELECT app_key,id,corporate_account_user_id,manage_user_id " +
" FROM erp.o_shop" +
" WHERE app_key in ('" + string.Join ("','", shopList.Select(s=>s.shop_id)) + "');";
dt = mySql.ExecuteDataTable(sql);
@@ -202,10 +203,16 @@ namespace KJD_Web.BLL.WXXD
foreach (DataRow row in dt.Rows)
{
var erpDbId = row["id"].ParseToNullableLong();
var erpCorporateUserId = row["corporate_account_user_id"].ParseToNullableLong();
var erpManageUserId = row["manage_user_id"].ParseToNullableLong();
var appKey = row["app_key"].ParseToString();
var shop = shopList.FirstOrDefault(s => s.shop_id == appKey && !s.shop_id.IsNullOrEmpty());
if (shop != null)
{
shop.erp_corporate_account_user_id = erpCorporateUserId;
shop.erp_manage_user_id = erpManageUserId;
shop.erp_shop_id = erpDbId;
}
}
}
}
@@ -219,6 +226,108 @@ namespace KJD_Web.BLL.WXXD
return "{\"code\":19999,\"msg\":\"未知错误\"}";
}
/// <summary>
/// 获取erp店铺对应账户的余额
/// </summary>
/// <param name="inputData"></param>
/// <param name="isAdmin"></param>
/// <returns></returns>
public string GetShopErpMerchant(string inputData, bool isAdmin = false)
{
if (!string.IsNullOrEmpty(inputData))
{
var timeCalc = DateTime.Now;
if (!WXUserManage.GetSign(inputData))
return "{\"code\":999,\"msg\":\"校验失败\"}";
var corporate_account_user_id = RegexUtils.GetStringQuery(ref inputData, "corporate_account_user_id")?.Replace("'", "\\'");
var manage_user_id = RegexUtils.GetStringQuery(ref inputData, "manage_user_id")?.Replace("'", "\\'");
var shop_id = RegexUtils.GetStringQuery(ref inputData, "shop_id")?.Replace("'", "\\'");
if (corporate_account_user_id.IsNullOrEmpty() && manage_user_id.IsNullOrEmpty())
return "{\"code\":500,\"msg\":\"未指定商户\"}";
var page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
var page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt();
if (page_size == 0)
page_size = 200;
var manage_user_ids = new List<string>();
if (!manage_user_id.IsNullOrEmpty())
manage_user_ids.Add(manage_user_id);
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
MysqlUtils mySql = new MysqlUtils(conn);
string sql;
if (!string.IsNullOrEmpty(corporate_account_user_id))
{
sql = "SELECT manage_user_id FROM erp.o_shop_group WHERE corporate_account_user_id = '" + corporate_account_user_id + "';";
var manage_user_id_tb = mySql.ExecuteDataTable(sql);
if (!string.IsNullOrEmpty(mySql.Message))
{
mySql.Close();
return "{\"code\":501,\"msg\":\"" + mySql.Message + "\",\"data\":null}";
}
if (manage_user_id_tb == null)
{
mySql.Close();
var seconds = (DateTime.Now - timeCalc).TotalSeconds.ToString("0.000");
return "{\"code\":200,\"msg\":\"success\",\"data\":[],\"count\":-2,\"seconds\":" + seconds + "}";
}
manage_user_ids.AddRange(manage_user_id_tb.Rows.Cast<DataRow>().Select(t => t["manage_user_id"].ToString()));
if (manage_user_ids.Count == 0)
{
mySql.Close();
var seconds = (DateTime.Now - timeCalc).TotalSeconds.ToString("0.000");
return "{\"code\":200,\"msg\":\"success\",\"data\":[],\"count\":-2,\"seconds\":" + seconds + "}";
}
}
sql = "select * FROM erp.o_user_account u where u.user_id in ('" + string.Join("','", manage_user_ids) + "')";
sql += " LIMIT " + Math.Max(page - 1, 0) * page_size + "," + page_size;
var dt = mySql.ExecuteDataTable(sql);
mySql.Close();
if (!string.IsNullOrEmpty(mySql.Message))
{
return "{\"code\":501,\"msg\":\"" + mySql.Message + "\",\"data\":null}";
}
if (dt != null)
{
List<ErpMerchantInfo> erpAccountInfo = new List<ErpMerchantInfo>();
foreach (DataRow row in dt.Rows)
{
ErpMerchantInfo shop = new ErpMerchantInfo
{
id = Convert.ToInt32(row["id"]),
account_name = row["account_name"].ToString(),
account_status = row["account_status"].ParseToInt(),
account_type = row["account_type"].ParseToInt(),
balance = row["balance"].ParseToDecimal(),
create_by = row["create_by"].ParseToNullableLong(),
create_time = row["create_time"].ParseToString().ParseToDateTime(),
frozen_amount = row["frozen_amount"].ParseToDecimal(),
recharge_amount_total = row["recharge_amount_total"].ParseToDecimal(),
update_by = row["update_by"].ParseToNullableLong(),
update_time = row["update_time"].ParseToString().ParseToDateTime(),
user_id = row["user_id"].ParseToLong(),
withdrawn_amount = row["withdrawn_amount"].ParseToDecimal(),
withdraw_account_image_url = row["withdraw_account_image_url"].ParseToString(),
};
erpAccountInfo.Add(shop);
}
erpAccountInfo = erpAccountInfo.OrderByDescending(s => s.balance).ToList();
var count = -1;
var data = JsonUtils.SerializeObjectToString(erpAccountInfo);
var seconds = (DateTime.Now - timeCalc).TotalSeconds.ToString("0.000");
return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + ",\"count\":" + count + ",\"seconds\":" + seconds + "}";
}
}
return "{\"code\":19999,\"msg\":\"未知错误\"}";
}
public string SubSaGetSelectProdShop(string inputData)
{
if (!string.IsNullOrEmpty(inputData))
@@ -120,6 +120,7 @@
<Compile Include="BLL\WXXD\WXProductManage.cs" />
<Compile Include="BLL\WXXD\WXShopManage.cs" />
<Compile Include="BLL\WXXD\WXUserManage.cs" />
<Compile Include="Model\ErpModel\ErpMerchantInfo.cs" />
<Compile Include="Model\JSTDownProdSkuInfo.cs" />
<Compile Include="Model\PddModel\BuyerLoginInfo.cs" />
<Compile Include="Model\PddModel\PDDMaterialInfo.cs" />
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<UseIISExpress>true</UseIISExpress>
@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace KJD_Web.Model.ErpModel
{
public class ErpMerchantInfo
{
public long id { get; set; }
/// <summary>
/// 唯一用户标识
/// </summary>
public long user_id { get; set; }
/// <summary>
/// 账户类型,1:分销商账户,2:供应商账户
/// </summary>
public int? account_type { get; set; }
/// <summary>
/// 账户名称
/// </summary>
public string account_name { get; set; }
/// <summary>
/// 账户状态(1-正常 2-冻结 3-注销)
/// </summary>
public int account_status { get; set; }
/// <summary>
/// 账户累计充值金额
/// </summary>
public decimal recharge_amount_total { get; set; }
/// <summary>
/// 可用余额
/// </summary>
public decimal balance { get; set; }
/// <summary>
/// 冻结金额
/// </summary>
public decimal frozen_amount { get; set; }
/// <summary>
/// 提现账户收款图片
/// </summary>
public string withdraw_account_image_url { get; set; }
/// <summary>
/// 已提现金额
/// </summary>
public decimal? withdrawn_amount { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime create_time { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime update_time { get; set; }
/// <summary>
/// 创建人
/// </summary>
public long? create_by { get; set; }
/// <summary>
/// 修改人
/// </summary>
public long? update_by { get; set; }
}
}
@@ -72,6 +72,8 @@ namespace KJD_Web.Model.ShopModel
//public DateTime mdy_time { get; set; }
public bool? is_point_shop_expire { get; set; } = false;
public long? erp_shop_id { get; internal set; }
public long? erp_corporate_account_user_id { get; internal set; }
public long? erp_manage_user_id { get; internal set; }
}
public class AuthInfo
@@ -61,6 +61,21 @@ namespace KJD_Web
Context.Response.End();
}
/// <summary>
/// 获取店铺erp端账户
/// </summary>
[WebMethod]
public void get_shop_erp_merchant()
{
string jsontext = GetRequestJsonString();
var result = jsontext;
result = new WXShopManage().GetShopErpMerchant(jsontext);
Context.Response.Write(result);
Context.Response.End();
}
[WebMethod]
public void get_one_login_name_shop()
{
File renamed without changes.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

+38
View File
@@ -471,6 +471,44 @@ namespace TemuKJD.BLL
prodInfo.detail.extend_warranty_dto = new extend_warranty_dto_item() { extend_warranty = 0 };
//prodInfo.detail.fabric = null;
//prodInfo.detail.fabric_content = null;
if (!frontProdInfo.goods.gallery.Any(g => g.type == 1))
{
var jsonStr = BaseRegex.GetJsonObjStrJson(ref outProdJson, "carousel_section").OrderByDescending(s => s.Length).FirstOrDefault();
if (jsonStr != null)
{
var jArrStr = BaseRegex.GetJsonArrStrJson(ref jsonStr, "picture_list").OrderByDescending(s => s.Length).FirstOrDefault();
if (jArrStr != null)
{
foreach (var jObj in JArray.Parse(jArrStr))
{
var jStr = JsonHelper.SerializeObject(jObj);
var type = BaseRegex.GetIntJson(ref jStr, "type");
var img_url = BaseRegex.GetStringJson(ref jStr, "url");
var id = BaseRegex.GetLongJson(ref jStr, "id");
var goods_id = BaseRegex.GetLongJson(ref jStr, "goods_id");
var width = BaseRegex.GetIntJson(ref jStr, "width");
var height = BaseRegex.GetIntJson(ref jStr, "height");
var enable_share = BaseRegex.GetIntJson(ref jStr, "enable_share");
var gallery_pic = BaseRegex.GetIntJson(ref jStr, "gallery_pic");
if (!img_url.IsNullOrEmpty() && !type.IsNullOrZero())
{
frontProdInfo.goods.gallery.Add(new PDDFrontProductInfo2_gallery()
{
enable_share = enable_share,
goods_id = goods_id,
width = width,
height = height,
id = id,
type = type,
url = img_url,
priority = frontProdInfo.goods.gallery.Count,
});
}
}
}
}
}
if (!frontProdInfo.goods.gallery.Any(g => g.type == 1) && frontProdInfo.goods.gallery.Any(g => g.type == 13))
{
foreach (var g in frontProdInfo.goods.gallery)
+4 -1
View File
@@ -62,8 +62,11 @@ namespace TemuKJD.Helper
{
if (popWindowType == PopWindowType.NewWindow)
{
PopData p = new PopData() { Url = targetUrl };
if (OnPop != null)
OnPop(this, p);
newBrowser = null;
return false;
return true;
}
else if (popWindowType == PopWindowType.NewTitleWindow && popupFeatures.IsPopup)
{
+15 -14
View File
@@ -57,8 +57,8 @@
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(1, 33);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(278, 190);
this.panel2.TabIndex = 39;
this.panel2.Size = new System.Drawing.Size(278, 196);
this.panel2.TabIndex = 40;
//
// panel4
//
@@ -125,6 +125,7 @@
this.rbTemu.TabStop = true;
this.rbTemu.Text = "Temu";
this.rbTemu.UseVisualStyleBackColor = true;
this.rbTemu.CheckedChanged += new System.EventHandler(this.rbTemu_CheckedChanged);
//
// rbPdd
//
@@ -138,6 +139,7 @@
this.rbPdd.Text = "拼多多";
this.rbPdd.UseVisualStyleBackColor = true;
this.rbPdd.Visible = false;
this.rbPdd.CheckedChanged += new System.EventHandler(this.rbTemu_CheckedChanged);
//
// rbWX
//
@@ -151,6 +153,7 @@
this.rbWX.Text = "视频号";
this.rbWX.UseVisualStyleBackColor = true;
this.rbWX.Visible = false;
this.rbWX.CheckedChanged += new System.EventHandler(this.rbTemu_CheckedChanged);
//
// chkRemember
//
@@ -218,15 +221,13 @@
// InitForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(280, 224);
this.ClientSize = new System.Drawing.Size(280, 230);
this.Controls.Add(this.panel2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "InitForm";
this.ShowIcon = false;
this.Text = "软件初始化";
this.TitleText = "软件初始化";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.InitForm_FormClosed);
this.Controls.SetChildIndex(this.panel2, 0);
this.panel2.ResumeLayout(false);
this.panel4.ResumeLayout(false);
@@ -242,16 +243,16 @@
#endregion
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.PictureBox pbShopLoading;
private System.Windows.Forms.Panel panel4;
private DevComponents.DotNetBar.PanelEx btnOK;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.RadioButton rbTemu;
private System.Windows.Forms.RadioButton rbPdd;
private System.Windows.Forms.RadioButton rbWX;
private UserComponent.UcCheckBox chkRemember;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Label label1;
private DevComponents.DotNetBar.Controls.ProgressBarX progressBarX1;
private System.Windows.Forms.Panel panel3;
private UserComponent.UcCheckBox chkRemember;
private System.Windows.Forms.RadioButton rbPdd;
private System.Windows.Forms.RadioButton rbTemu;
private DevComponents.DotNetBar.PanelEx btnOK;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.RadioButton rbWX;
private System.Windows.Forms.PictureBox pbShopLoading;
}
}
+83 -81
View File
@@ -1,4 +1,5 @@
using TemuKJD.BaseForms;
using AllBase;
using NaiBa.Util.Helper;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -10,25 +11,26 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using AllBase.Helper;
using NaiBa.Util.Helper;
using System.IO;
using AllBase;
using TemuKJD.BaseForms;
namespace TemuKJD
{
public partial class InitForm : BaseGeneralForm
public partial class InitForm : BaseForms.BaseGeneralForm
{
InitFormSettings initFormSettings = new InitFormSettings();
public InitForm()
{
InitializeComponent();
Load += InitForm_Load;
this.Load += NewInitForm_Load;
}
private void InitForm_Load(object sender, EventArgs e)
private void NewInitForm_Load(object sender, EventArgs e)
{
this.Icon = BaseClass.Ico;
//if (!BaseClass.AgentCode.IsNullOrEmpty())
// this.Hide();
Task.Run(() =>
{
while (!Work.Initialization.IsCheckFilesFinish || !Program.IsInit || this.progressBarX1.Value < 50)
@@ -51,84 +53,84 @@ namespace TemuKJD
});
return;
// if (File.Exists(System.Environment.CurrentDirectory + "\\YkdChoice.dll"))
// {
// this.panel3.Location = new Point(4, 4);
// this.panel4.Visible = true;
// this.rbPdd.Visible = true;
// }
// if (File.Exists(System.Environment.CurrentDirectory + "\\WxChoice.dll"))
// {
// this.panel3.Location = new Point(4, 4);
// this.panel4.Visible = true;
// this.rbWX.Visible = true;
// }
//#if DEBUG
// this.panel3.Location = new Point(4, 4);
// this.panel4.Visible = true;
// this.rbPdd.Visible = true;
// this.rbWX.Visible = true;
//#endif
// initFormSettings = ConfigHelper.LoadConfig<InitFormSettings>("initFormSettings");
// if (initFormSettings == null)
// initFormSettings = new InitFormSettings();
// this.chkRemember.Checked = initFormSettings.Remember;
// this.rbTemu.Checked = initFormSettings.LoginType.ToLower() == "temu";
// this.rbPdd.Checked = initFormSettings.LoginType.ToLower() == "pdd";
// this.rbWX.Checked = initFormSettings.LoginType.ToLower() == "wx";
// if (File.Exists(System.Environment.CurrentDirectory + "\\YkdChoice.dll"))
// {
// this.panel3.Location = new Point(4, 4);
// this.panel4.Visible = true;
// this.rbPdd.Visible = true;
// }
// if (File.Exists(System.Environment.CurrentDirectory + "\\WxChoice.dll"))
// {
// this.panel3.Location = new Point(4, 4);
// this.panel4.Visible = true;
// this.rbWX.Visible = true;
// }
//#if DEBUG
// this.panel3.Location = new Point(4, 4);
// this.panel4.Visible = true;
// this.rbPdd.Visible = true;
// this.rbWX.Visible = true;
//#endif
// initFormSettings = ConfigHelper.LoadConfig<InitFormSettings>("initFormSettings");
// if (initFormSettings == null)
// initFormSettings = new InitFormSettings();
// this.chkRemember.Checked = initFormSettings.Remember;
// this.rbTemu.Checked = initFormSettings.LoginType.ToLower() == "temu";
// this.rbPdd.Checked = initFormSettings.LoginType.ToLower() == "pdd";
// this.rbWX.Checked = initFormSettings.LoginType.ToLower() == "wx";
// if (initFormSettings.LoginType.ToLower() == "temu")
// BaseClass.MainPath = "kuajingda";
// else if (initFormSettings.LoginType.ToLower() == "pdd")
// BaseClass.MainPath = "29pdd";
// else if (initFormSettings.LoginType.ToLower() == "wx")
// BaseClass.MainPath = "29wx";
// else if (initFormSettings.LoginType.ToLower() == "dy")
// BaseClass.MainPath = "29dy";
// if (initFormSettings.LoginType.ToLower() == "temu")
// BaseClass.MainPath = "kuajingda";
// else if (initFormSettings.LoginType.ToLower() == "pdd")
// BaseClass.MainPath = "29pdd";
// else if (initFormSettings.LoginType.ToLower() == "wx")
// BaseClass.MainPath = "29wx";
// else if (initFormSettings.LoginType.ToLower() == "dy")
// BaseClass.MainPath = "29dy";
// this.rbTemu.CheckedChanged += rbTemu_CheckedChanged;
// this.rbPdd.CheckedChanged += rbTemu_CheckedChanged;
// this.rbWX.CheckedChanged += rbTemu_CheckedChanged;
// if (rbWX.Visible == false || rbPdd.Visible == false)
// flowLayoutPanel1.Location = new Point(38, flowLayoutPanel1.Location.Y);
// this.rbTemu.CheckedChanged += rbTemu_CheckedChanged;
// this.rbPdd.CheckedChanged += rbTemu_CheckedChanged;
// this.rbWX.CheckedChanged += rbTemu_CheckedChanged;
// if (rbWX.Visible == false || rbPdd.Visible == false)
// flowLayoutPanel1.Location = new Point(38, flowLayoutPanel1.Location.Y);
// Task.Run(() =>
// {
// while (!Work.Initialization.IsCheckFilesFinish || !Program.IsInit || this.progressBarX1.Value < 50)
// {
// Thread.Sleep(new Random().Next(10, 50));
// Task.Run(() =>
// {
// while (!Work.Initialization.IsCheckFilesFinish || !Program.IsInit || this.progressBarX1.Value < 50)
// {
// Thread.Sleep(new Random().Next(10, 50));
// Invoke(new Action(() =>
// {
// this.progressBarX1.Value = Work.Initialization.InitPercent++;
// this.progressBarX1.Maximum = 50;
// }));
// if (this.progressBarX1.Value >= 50)
// Thread.Sleep(300);
// }
// Invoke(new Action(() =>
// {
// btnOK.Visible = true;
// }));
// Invoke(new Action(() =>
// {
// this.progressBarX1.Value = Work.Initialization.InitPercent++;
// this.progressBarX1.Maximum = 50;
// }));
// if (this.progressBarX1.Value >= 50)
// Thread.Sleep(300);
// }
// Invoke(new Action(() =>
// {
// btnOK.Visible = true;
// }));
//#if DEBUG
// Thread.Sleep(2500);
//#else
// if (File.Exists(System.Environment.CurrentDirectory + "\\YkdChoice.dll"))
// {
// Thread.Sleep(2500);
// }
//#endif
// if (initFormSettings.Remember)
// Thread.Sleep(500);
// Invoke(new Action(() =>
// {
// if(initFormSettings.Remember && isChangeType == false)
// {
// OpenNewMainForm();
// }
// }));
// });
//#if DEBUG
// Thread.Sleep(2500);
//#else
// if (File.Exists(System.Environment.CurrentDirectory + "\\YkdChoice.dll"))
// {
// Thread.Sleep(2500);
// }
//#endif
// if (initFormSettings.Remember)
// Thread.Sleep(500);
// Invoke(new Action(() =>
// {
// if(initFormSettings.Remember && isChangeType == false)
// {
// OpenNewMainForm();
// }
// }));
// });
}
bool isOpen = false;
+277 -167
View File
@@ -120,179 +120,289 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQcgAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMd3d3d3d3d3
d3d3fMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMd3d3iIiIiI
iIiIiIiIiIh3d3d8zMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMx3eIiIiI
iIiIiIiIiIiIiIiIiIiIiHd8zMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMd4iI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiHfMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzH
eIiIiIiIiIiHZmZmZmZmZmZmZ3eIiIiIiIiIiHzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzHiIiIiIiHZmZmZmZmZmZmZmZmZmZmZmZmeIiIiIiIfMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzHiIiIiIdmZmZmZgAAAAAAAAAAAAZmZmZmZmZmeIiIiIh8zMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzHiIiIiHZmZgAAAAAAAAAAAAEAAAAAAAAAAGZmZmZniIiIiHzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMeIiIiGZmAAAAAAERERmZmZmZmZmZkRERERAAAGZmZmZ4iIiIfMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMeIiIiGZgAAAAERmZmZmZmZmZmZmZmZmZmZmZkREAAGZmZniIiIfMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzIiIiHYAAAARGZmZiIiIj///////+IiIiIeZmZmZkREAZmZmiIiIfMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzO6IiIYAAAARmYiI/////////////////////4iHmZmZEQBmZmeI
iIh8zMzMzMzMzMzGAAAABMzMzMzMzMzMzMeIiIdgAAAZmI////////////////////////////iJmZmR
EGZmZ4iIh8zMzMzMzMzMzEAAAAbMzMzMzMzMzMzoiIhwAAAZeP//////////////////////////////
/4iZmZEAZmZ4iIh8zMzMzMzMzMxgAABMzMzMzMzMzMzOiIiGAAABiP//////////////////////////
////////+JmZkQZmZ4iIh8zMzMzMzMzMxAAAbMzMzMzMzMzM7oiIYAABeP//////////////////////
///////////////4mZkQZmZ4iIjMzMzMzMzMzMYAAMzMzMzMzMzMzu6IhwAAGP//////////////////
/////////////////////4iZmRZmZ4iIfMzMzMzMzMzMAAbMzMzMzMzMzM7oiHAAB4//////////////
////////////////////////////iZmRBmZ4iIfMzMzMzMzMzGAGzMzMzMzMzMzuiIcAAHj/////////
//////////////////////////////////iZmRZmZ4iIzMzMzMzMzMxgDMzMzMzMzMzM7ohwAAf/////
////////////////////////////////////////95mRZmaIiHzMzMzMzMzMwEzMzMzMzMzMzuiIEABo
//////////////////////////////////////////////95mRZmaIiMzMzMzMzMzMRszMzMzMzMzM7o
hwAGj///////////////////////////////////////////////95kQZmeIh8zMzMzMzMzGbMzMzMzM
zMzu6HEAB/////////////////////////////////////////////////+ZkQZmiIjMzMzMzMzMxmzM
zMzMzMzM7ohwAGj/////////////////////////////////////////////////iZkWZniIfMzMzMzM
zMZszMzMzMzMxu6HEAbv/4iI/////////////////////////////////////////4iP//iZEGZoiHzM
zMzMzMzGbMzMzMzMzM7uhxAGj/iIiIj//////////////////////////////////////4iIiI//mZFm
aIiMzMzMzMzMxszMzMzMzMzO6IEAbv+IiIiIj/////////////////////////////////////iIiIiP
/4mRBmeIh8zMzMzMzMbMzMzMzMzMbuhxAG7/iIiIiI////////////////iIj///j//////////////4
iIiIiP/5mQZmiIfMzMzMzMzMzMzMzMzMzO7ocQDo+IiIiIiP///////////////u7u7u7u7o////////
////iIiIiIj/+JkWZoiHzMzMzMzMzMzMzMzMzMzu6BEG7/iIiIiIj/////////////+Hd3ju5maO7v//
/////////4iIiIiI//iZEGaIh8zMzMzMzMzMzMzMzMzM7ugRBu//iIiIiI//////////////kZmZdmAZ
mP/////////////4iIiIiP//mRBmeIjMzMzMzMzMzMzMzMzMzO7nEAbv/4iIiIiP////////////+HiI
mZEBd5n/////////////+IiIiIj//4mQZniIzMzMzMzMzMzMzMzMzMzu5xAO7//4iIiI//ju7o//////
//j//4mZeP/4//////////////iIiIiP//+JkGZ4iHzMzMzMzMzMzMzMzMzG7ocQDu///4iI//ju7u7u
j//////////4mP//////////////7u7uiIiI////iZBmaIh8zMzMzMzMzMzMzMzMzu6HEG7v//////+G
ZmZ47u7//////////4//////////////7u7u7u6P/////4mQBmiIfMzMzMzMzMzMzMzMzM7uhRBu7///
///3AAAAF37u7///////////////////////h2AABm7u7v/////5kAZ4iHzMzMzMzMzMzMzMzMzO7oUQ
bu//////gQAAZgEG7u//////////////////////+BAAAAAFfu6P////+ZAGeIjMzMzMzMzMzMzMzMzM
zu6FEG7v////+JEAAXhwAG7o/////////////////////4gAABEGARbu7/////kQBoiIzMzMzMzMzMzM
zMzMzM7uhRBu7/////iZABmZkQBm6P////////////////////+JABGZF2AAbo////+JEGaIiMzMzMzM
zMzMzMzMzMzO7ucRbu/////4mRZ4iZkQBu//////////////////////mQB5mZdgAG7/////iRBmiIfM
zMzMzMzMzMzMzMzMxu7nEQ7v////+Bl+j/iZEAaP/////////////////////5l2/4mRAABu/////4kQ
ZoiHzMzMzMzMzMzMzMzMzMzu5xEO6P//+Phgbu/4kQAI//////////////////////+Zfo/4kQAAeIiP
//+JEGaIh8zMzMzMzMzMzMzMzMzM7ucRBu7///iOYHiI+HAAf///////////////////////mYjv+BAA
BuiIj///iQBniIfMzMzMzMzMzMzMzMzMzO7nEQbu///3EAAG6IcRF4iP/////////////////////4GP
/4cQAAZnbv///5EAaIiMzMzMzMzMzMzMzMzMzMzu5xEW7v//iRF3dmZgAXjmj///////////////////
///3ePiBEQAHdm7///iRAGiIfMzMzMzMzMzMzMzMzMzM7u5xFu6P/5EZmXZmZmbmaP//////////////
///////4/4d2cRAAFwbuj//4kQZoiHzMzMzMzMzMzMzMzMzMzG7ucRDu7/iXiZkQAAZmAH//////////
////////////+IiIdmYABmAX//j/+BAGeIh8zMzMzMzMzMzMzMzMzMzO7nEQbu/4iP+BERkREZf/////
//////////////////+JmXdxEBEAB3////kQBoiIzMzMzMzMzMzMzMzMzMzMzu5xEW7o+P//gZmZmZmP
////////////////////////+JmZmZmZl453//+JAGaIh8zMzMzMzMzMzMzMzMzMzM7u5xEO7vj/+IeP
iIj////////////////////////////4iZmZmZiPiP//cQBoiIfMzMzMzMzMzMzMzMzMzMzM7ucRFu6P
//iP//////////////////////////////////////+Jn/j/+JAAaIiMzMzMzMzMzMzMzMzMzMzMzO7n
ERbu7//4/////////////////////////////////////////4j///gQBoiIfMzMzMzMzMzMzMzMzMzM
zMzu7nERbuj////////////////////////////////////////////4//+BAAaIiMzMzMzMzMzMzMzM
zMzMzMzMzu5xEW7u////////////////////////////////////////////////cQBoiIfMzMzMzMzM
zMzMzMzMzMzMzM7u5xEW7u//////////////////////////////////////////////+BAAaIiMzMzM
zMzMzMzMzMzMzMzMzMzO7uYREO7o//7v//////////////////////////////////////////cABoiI
fMzMzMzMzMzMzMzMzMzMzMzMzO7ucRFu7oj/7o////////////////////////////////////////9x
AAeIiMzMzMzMzMzMzMzMzMzMzMzMzMzO7ucRFu7nePju7u7v////////////////////////////////
6P/4EAB4iIfMzMzMzMzMzMzMzMzMzMzMzMzMzu7nERBu7nmIiO7oj///////////////////////////
ju7u7o//hwAGiIh8zMzMzMzMzMzMzMzMzMzMzMzMzMzu7nERbu7nmZl5eP//////////////////////
///4iPiO5nj/+HAAaIiIzMzMzMzMzMzMzMzMzMzMzMzMzMzM7u7nERbu7oiZeI//////////////////
////////+ImXd5mP/4cAAHiIh8zMzMzMzMzMzMzMzMzMzMzMzMzMzM7u53ERbu7v////////////////
///////////////4iZl4//hgAAeIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM7u53ERBu7v//////////
//////////////////////////+GAAB4iI7MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzO7uiHEADujv////
///////////////////////////////3AAAGiIh8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzO7ohwABmP
////////////////////////////////////iREAZniIjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzuiI
EAB4f///////////////////////////////////+JmZkWZoiIfMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zO6IhwBo//////////////////////////////////////iImZl2ZoiIzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzuiHAA7////////////////////////////////////////4iZFmZ4iHzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzO6IgQBo/////4j///////////////////////////////////mZFmaIiMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzuiHAA7/////iIiP//////7o//////////////////iI/////4mRZmeIh8zMzMzM
zMzMzMzMzMzMzMzMzMzMzO6IcQBo////+IiIiI/////+7u7u7uiIiI7u7v////iIiI/////5mRZmiIjM
zMzMzMzMzMzMzMzMzMzMzMzMzMzuiHAA7////4iIiIiIj//3d2bu7u7u7u7u7u7//4iIiIiP////+JkW
ZniIfMzMzMzMzMzMzMzMzMzMzMzMzMzO6IcQBo////+IiIiIiI//+ZkAAGZmZmZmZmbv//iIiIiIiP//
//+ZkWZoiIzMzMzMzMzMzMzMzMzMzMzMzMzMzuiFAG7////4iIiIiIj///iZABEREREREBAG7//4iIiI
iIj/////iZFmaIiMzMzMzMzMzMzMzMzMzMzMzMzMzO6IcQBo////+IiIiIiI///4kQARERERERERDo//
+IiIiIiIj/////mZBmeIh8zMzMzMzMzMzMzMzMzMzMzMzMzuiHAG7////4iIiIiIiP//+JFmeHd3d3dx
EW6P//iIiIiIiI/////4mRZmiIfMzMzMzMzMzMzMzMzMzMzMzMzO7ocQBo////+IiIiIiIj///iQZoiO
7u7u5xFu7//4iIiIiIiI////+JkWZniIzMzMzMzMzMzMzMzMzMzMzMzMzuiHEA7////4iIiIiIiP///5
kGaIju7u7ucRbu///4iIiIiIiP////95kGZ4iHzMzMzMzMzMzMzMzMzMzMzMzM7ogQBu////+IiIiIiI
j///+RBmiI7u7u7nEW7v//+IiIiIiIiP////iZFmaIh8zMzMzMzMzMzMzMzMzMzMzMzu6HEAaP////iI
iIiIiI////kQZoiHzMzu5xEO6P//iIiIiIiIj////4mRZmiIjMzMzMzMzMzMzMzMzMzMzMzM7ugRBu//
///4iIiIiIj///+JEGaIh8zM7ucRBu7//4iIiIiIiI/////5kQZniIzMzMzMzMzMzMzMzMzMzMzMzO6I
EAbv////iIiIiIiI////iQBniIzMzO7oERbu///4iIiIiIiP////+JkGZ4iHzMzMzMzMzMzMzMzMzMzM
zMbuhxAGj////4iIiIiIj////3kAaIiMzMzu7nEW7v//+IiIiIiIiP////iZFmaIh8zMzMzMzMzMzMzM
zMzMzMzO7oUQbv////+IiIiIiI////+RBmiIfMzMzu5xFu6P//+IiIiIiIj////4mRZmiIfMzMzMzMzM
zMzMzMzMzMzMzu6BAG7////4iIiIiIj////4kQZoiHzMzM7ucRDu7///iIiIiIiIj////5kQZoiHzMzM
zMzMzMzMzMzMzMzMzM7ocQBu////+IiIiIiI////+JAGeIh8zMzO7nERbu///4iIiIiIiI////95EGaI
h8zMzMzMzMzMzMzMzMzMzMxu6HEA7v////iIiIiIiP////cQBoiIzMzMzu7lEW7v///4iIiIiIiP////
iRBmeIjMzMzMzMzMzMzMzMzMzMzM7uhxBuj////4iIiIiI/////5EAaIiMzMzMbu5xEO7v//+IiIiIiI
j////4kQZniIzMzMzMzMzMzMzMzMzMzMzO7oEQbv////+IiIiIj/////iQBmiIfMzMzM7ucRBu7///iI
iIiIiIj///+JkGZ4iMzMzMzMzMzMzMzMzMzMzMzu6BEG7/////iIiIiI/////4EAaIiHzMzMzO7nERbu
j///iIiIiIiI////iZBmaIh8zMzMzMzMzMzMzMzMzMzM7ucRBu/////4iIiIj/////+RAGiIjMzMzMzu
7nEQ7u////iIiIiIiP///4mQBmiIfMzMzMzMzMzMzMzMzMzMzO7nEAbv////+IiIiP/////4EAZ4iHzM
zMzMzu5xEG7v///4iIiIiIj///+JkAZoiHzMzMzMzMzMxmzMzMzMzMzu5xAO7/////+IiI//////+RAG
iIjMzMzMzM7ucRFu7v///4iIiIiI////+ZAGaIh8zMzMzMzMzMZszMzMzMzG7ocQDu//////+I//////
/4EAZoiIzMzMzMzO7ucRBu7////4iIiIiP////mQBmiIfMzMzMzMzMzGbMzMzMzMzu6HEA7v////////
//////9xAGiIh8zMzMzMzO7nERbu7///+IiIiI/////5kAZoiHzMzMzMzMzMxmzMzMzMzM7uhxAO7///
///////////4EABoiIzMzMzMzMzu7nEQbu////+IiIiP////+ZAGaIh8zMzMzMzMzMZszMzMzMzO7oUQ
Du//////////////9xAGiIh8zMzMzMzM7u5xEW7u/////4iI//////mQBmiIfMzMzMzMzMzGTMzMzMzM
zu6HEA7v/////////////4EABoiIzMzMzMzMzM7u5xEG7v/////////////5kAZoiHzMzMzMzMzMxAzM
zMzMzM7uhxEO7/////////////9wAGiIh8zMzMzMzMzO7ucRFu7v////////////+RAGeIh8zMzMzMzM
zMAGzMzMzMzO7ucRDuj////////////4EAB4iIzMzMzMzMzMzO7ucRBu6P///////////4kQBoiIzMzM
zMzMzMxgBszMzMzMxu7nEQbo////////////gQAGiIh8zMzMzMzMzMzu7nERDu7///////////+JEAaI
iMzMzMzMzMzMYADMzMzMzMzu5xEG7v///////////3EAZ4iIzMzMzMzMzMzMzu7nERbu7///////////
gQBmiIfMzMzMzMzMzAAAbMzMzMzM7ucRBu7///////////gQAGiIh8zMzMzMzMzMzM7u5xEQbu7/////
/////5EAZ4iHzMzMzMzMzMYAAEzMzMzMzO7nERDu7/////////+HAAaIiIzMzMzMzMzMzMzM7u5xEQ7u
7/////////gQAGiIjMzMzMzMzMzEAAAGzMzMzMzu7nEQbuj////////4cAAHiIh8zMzMzMzMzMzMzO7u
dxEW7uj////////3AAZoiHzMzMzMzMzMYAAABMzMzMzM7u5xEG7u////////hgAAeIiHzMzMzMzMzMzM
zMzO7ucREW7u7///////gQAGiIh8zMzMzMzMzEAAAABszMzMzM7ucREG7uj/////hmAAB4iI7MzMzMzM
zMzMzMzMzu7ucREG7u6P////+AAAB4iIzMzMzMzMzMYAAAAATMzMzMzO7ucREG7u7oiO7mAAAHiIiMzM
zMzMzMzMzMzMzMzu7ucREG7u7o//+HYAAHiIh8zMzMzMzMzEAAAAAAbMzMzMzu7nEREG7u7u5mAAAAeI
iIfMzMzMzMzMzMzMzMzMzu7ucREQbu7u7uYAAAeIiHzMzMzMzMzMYAAAAAAAbMzMzMzu7nEREAZmZgAA
AAF4iI58zMzMzMzMzMzMzMzMzMzu7ncREQZm7mZgAAB4iI7MzMzMzMzMxgAAAAAAAEzMzMzM7u7nEREQ
AAAAABF4iI7uzMzMzMzMzMzMzMzMzMzM7u7ucRERAAAAAAAHiIiMzMzMzMzMzMQAAAAAAAAGzMzMzM7u
7nERERERERF3iIju7MzMzMzMzMzMzMzMzMzMzM7u7udREREQAAAReIiIfMzMzMzMzMxgAAAAAAAAAGzM
zMzM7u7udRERERV4iI7u7MzMzMzMzMzMzMzMzMzMzMzM7u7u5xEREREReIiO7MzMzMzMzMzGAAAAAAAA
AAAGzMzMzM7u7u53d3eIiO7u7szMzMzMzMzMzMzMzMzMzMzMzM7u7u7nd1F3eIiO7uzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzM7u7u7u7u7u7u7szMzMzMzMzMzMzMzMzMzMzMzMzMzu7u7u6IiI7u7uzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzu7u7u7u7u5szMzMzMzMzMzMzMzMzMzMzMzMzMzMzO7u7u7u7u7u7MzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzG7u7u7ubMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM7u7u7u7uzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzG7u
7szMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEIAAMQOAADEDgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+WNVf/ljWe/5Y10f+WNfD/ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y18P+WNdH/ljWe/5Y1VwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5Y1XP+WNd7/ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljXe/5Y1XAAAAAAAAAAAAAAAAAAAAAAAAAAA/5Y1f/+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljV/AAAAAAAAAAAAAAAA/5Y1XP+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
NVwAAAAAAAAAAP+WNd7/ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljXeAAAAAP+WNVf/ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNVf/ljWe/5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljWe/5Y10f+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y10f+WNfD/ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNfD/ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//nkX//7p8//+8fv//qlv//5g4//+WNf//ok3//8mY//+2dP//p1X//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//55E//7Zt//+9e7//ujV//+gSf//ljX//6VS//738v/+8OP//tWw//+d
Qv//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//r2b//u7g//7+///+6NT//5k7//+X
N///vH///v7///7+///+0af//5g5//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+u
Zf/+8uf//v7///7fw///ljX//5g4///Bif/+/v///v7////Ilv//mDn//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//55F//+hSv//oEn//6BJ//+gSf//oEn//6BI//+gSP//oEj//6BI//+f
R///n0f//59H//+fR///n0f//59H//+fRv//n0b//59H//+fR///oEj//6BI//+fR///n0f//6BI//+f
R///lzf//5Y1//+WNf//ljX//7d0//738v/+/v///tWw//+WNf//mjz//s+k//7+///+/v///7x///+X
N///ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//7hxv/+9Ov//vDk//7y6P/+8uj//vLn//7y
5//+8eb//vHl//7w4//+8OP//vDj//7w4//+8OP//u/i//7v4v/+7+H//u/h//7v4v/+7+L//vDk//7x
5f/+8OP//u/i//7x5f/+69r//6lZ//+WNf//ljX//5Y1//+WNf//v4X//vz7//78/P//yZj//5Y1//+d
Qv/+2Lb//v7///7+////sWr//5Y2//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf/+7d///v7///7+
///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+
///+/v///v7///7+///+/v///v7///7+///+/v///vfx//+ya///ljX//5Y1//+WNf//ljX//5Y1//7L
nP/+/v///vj0//+8fv//ljX//55F//7hxv/+/v///vz6//+pWv//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//ubQ//7+///+6NT//8KL//++g///voP//76C//+/hP//voP//7+E//+/hf//v4X//8CG///A
h///wIf//8CH///Ah///wIf//8CG///Ahv//wIb//8CH///Ah///wIf//8GI//++g///nUL//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//tq4//7+///+9Ov//7Nt//+WNf//oUv//uzd//7+///+8+r//6JN//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//7m0P/+/v///s+j//+ZO///ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+YOv/+38T//v7///7v4v//rGD//5Y1//+m
VP/+9Ov//v7///7s2///mj3//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf/+7+L//v7///7bu///nkT//5Y1//+a
Pf/+3sH//tay//7Nof/+zqL//tGn//7Sqf/+0qr//tKp//7Sqf/+0qn//tKp//7Qpf/+0KX//s6i//7N
of/+zaD//sye//7Mnv/+zqL//sye//+dQv//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//55F//7m
0P/+/v///ujU//+lUv//ljX//6xh//77+f/+/v7//uHG//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//tm3//7+
///+/v///sqa//+aPP//ljb//tOs//7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+
///+/v///v7///7+///+/v///v7///7+///+/v///v7///727///rWL//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//pFH//uvb//7+///+38L//59H//+WNf//t3b//v7///79/f/+17T//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+dQv/+1K3//v7///7+///+0aj//5g5//+XN///uXr//vn1//7+///+/v///uvb//7W
sf/+3L3//t3A//7ewP/+3sD//t7B//7ewf/+38P//t/D//7fxP/+4MT//uDE//7hxv/+2rn//6NP//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+tYf/+7+L//v7///7Urv//mz///5Y1///E
j//+/v///vz8//7NoP//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5c3//7Kmv/++vf//v7///7Wsv//ljX//5Y1//+u
Zf/+8+r//v7///7r2v//q13//5Y1//+aPP//mj7//5o+//+aPv//mj7//5o+//+aPv//mj7//5o+//+b
P///mz///5o+//+WNv//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//7Z0//71
7v/+/v///sqa//+YOP//mDj//s+k//7+///+/Pr//8KL//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//8CH//75
9f/+/v///t/E//+ZO///ljX//6td//7u4P/+/v///vLn//+sX///ljb//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//vH///vfy//7+////voP//5Y1//+cQf/+27r//v7///769///uHj//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//t3b//vXu//7+/v/+5tH//6NP//+WNf//qVn//ubQ//7+///+/Pr//72B//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+2c//+9Ov//v7///+ya///ljX//6FK//7j
zP/+/v///vXt//+tYf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+wZ//+8uj//v7///7y6P//rmT//5Y1//+g
SP/+27z//vz8//7+////yJb//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5k7//+lU///nED//uHH//7+
/v/++/n//6VT//+WNf//qlv//u3f//7+///+7Nz//6NO//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//6hY//7s
3f/+/v///vPq//+1cP//ljX//5Y1//7Urf/+/f3//v39//7Sqf//lzf//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+XN///p1X//8OM//7d
v//+8uj//vz7//7+///+/v///v7///717f//qFj//5Y1//+zbP/+8+r//v7///7p1v//mTv//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//oUr//uXP//7+///+9vD//7x///+XN///ljX//8eU//7+///+/Pv//tm3//+e
RP//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+g
SP/+0KX//vPq//7+///+/v///v7///759f/+7+L//uzb//7t3v/++vj//vLn//+tYf//ljX//7x+//73
8v/+/v///uLJ//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+eRf/+27v//v7///77+f//xI///5k7//+W
Nf//vYH//v7///7+///+4sn//6VT//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+vZv/+7Nz//v7///7+///+8+r//s+k//+3df//qVn//6FL//+fR///oUr//6pc///H
k///xpL//5k7//+WNf//xpL//vr3//7+///+1K3//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5o8//7Q
pf/+/v///v7///7Urf//mDn//5c3//+1cf/++PT//v7///7t3///qVr//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+zbv/+9e7//v7///769//+zqL//6FK//+WNv//ljX//5Y1//+Z
O///oEj//55E//+WNf//ljX//5c3//+XN///ljX//5Y1//7Sqv/+/f3//vz7///Ci///ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljb//8eU//759f/+/v///t/D//+ZO///ljX//69m//7v4v/+/v///vLo//+u
ZP//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+oV//+8uf//v7///78+v//tnP//5Y1//+W
Nf//plT//s2h//7m0f/+8uj//vXt//707P/+8OT//t/D///Civ//n0b//5Y1//+WNf//ljX//ubQ//7+
///+9u///61h//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//vH7//vfy//7+///+6NP//6FK//+W
Nf//qFn//ujV//7+///++PP//7Fp//+WNv//ljX//5Y1//+WNf//ljX//5Y1//+WNf/+48z//v7///7+
////smz//5Y1//+bP///yZj//vfy//7+///+/v///v7///79/f/+/v7//v7///7+///+/v///uzd//+x
av//ljX//5Y1//+dQ//++vf//v7///7m0P//ljb//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+x
aP/+8+r//v7///7v4f//p1b//5Y1//+jT//+5M3//v7///78+v//qFf//5Y1//+WNf//ljX//5Y1//+W
Nf//xI///vv5//7+////wor//5Y1//+cQP/+2Lb//v7///7+///+7t///sub//+waP//plX//6dW//+2
dP/+1a///vjz//7+///++/n//7l4//+XN///ljX//7h4//7+///++/n//8SO//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//6hY//7x5v/+/v///vHl//+qXf//ljX//6JM//7r2//+/v///vLn//+X
N///ljX//5Y1//+WNf//mz///uLI//7+///+69r//5k7//+YOP/+y5z//v7///7+/v/+2LX//59G//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+rXf/+6tn//v7///7+////qlv//5Y1//+ZO//+7t///v7///7g
xf//mDr//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//oUv//u7f//7+///+7d7//6pc//+W
Nf//rWH//vXu//7+///+1K3//5Y1//+WNf//ljX//7Vx//717v/+/v///7Vw//+WNv//o07//v7///7+
///+2bj//5c3//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//6hZ//7s3P/+/v///uva//+Z
O///lzf//7t8//7+///+8+n//7Fp//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+f
R//+7Nz//v7///7gxf//n0f//5Y1//7Vr//+/f3//vr3//+ZO///ljX//5Y1///Ej//+/v///v7///+j
Tv//ljX//tOr//7+///+7d7//6JM//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//xI7//vv5//7+////rmX//5Y1//+jT//+/v///v7////Ah///ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//6pd//78+v/+/v///8KL//+WNf//mDj//vr3//78/P//xpL//5Y1//+W
Nf/+0af//v7///7m0f//n0b//5Y1//7z6v/+/v///tu6//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5k7//7p1v/+/v///tKp//+WNf//oEn//vHl//7+///+ypr//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//x5X//v7///7kzf//okz//5Y1//7m
0P/+/v///uHI//+WNf//ljb//tSt//7+///+3Lz//5xB//+WNf/+/v///vr4///Ej///ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf/+4sj//v7///7fw///ljX//59G//7o
1P/+/v///s+j//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//7Vx//7+
///+/Pr//6td//+WNf/+zZ///v7///7u3///ljX//5Y1//7Rp//+/v///t7B//+dQv//ljX//vv5//77
+f//yZf//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//uLI//7+
///+4sj//5Y1//+fRv/+69r//v7///7Mnv//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//7t8//7buv//t3b//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+xaP/++PT//v7///+sYf//ljX//8aS//7+///+8uf//5g4//+WNf//xZH//v7///7s
3P//oEj//5Y1//7q2f/+/v///uDE//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//7n0v/+/v///ti1//+WNf//okz//vn1//7+////w43//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5g4//+bP///lzf//5Y1//7z6v/+/v///urX//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//t3T//v7///79/f//q17//5Y1//7Po//+/v///u/h//+W
Nf//ljX//7p7//76+P/+/v///6RQ//+WNf/+y5v//v7///7z6f//r2X//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+3dP/+9e7//v7///+5ef//ljX//6pb//7+///++fX//7l4//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//51C///Gkv/+8+r//7Rv//+WNf//tXH//v7///77
+f/+y5v//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//nEH//ti1//7+///+6tf//6RQ//+W
Nf/+4sj//v7///7kzf//ljX//5Y1//+jTv/+6NP//v7////Fkf//lzf//6BJ//7+/v/+/v///uHH//+b
P///ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+fRv/+5M3//v7///728P//mjz//5g4//7Q
pf/+/v///urY//+mVP//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+cQP/+27v//v7///7n
0v//n0b//5Y1//7Sqv/+/v///vfy///Ej///mTv//5Y1//+WNf//ljX//5Y1//+WNf//mj7//8mY//7+
///+/v///8WR//+WNf//ljX//vn1//79/f/+zaH//5Y1//+WNf//ljX//tSt//7+///++/n//59G//+X
N///uXr//v7///7+///+4sj//6lZ//+XN///ljX//5Y1//+WNf//ljX//5Y2//+oWP/+48v//v7///7+
////tnT//5c3//+aPv/+/v///v7///7Ytv//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//7Bn//7x5v/+/v///8SP//+XN///mDr//tq4//7+///+/v///uXP///Ahv//rmP//6pc//+r
Xf//uXn//t3A//7+///+/v///t2+//+fRv//ljX//sye//78/P/++/n//6VS//+WNf//ljX//5Y1//+j
Tv/+7d7//v7///7fxP//ljX//5k7///Gkv/+/f3//v7///7y6P/+z6P//7Fq//+oWf//qVr//7Fp//7M
nv/+8OP//v7///7+////yZj//5o8//+WNf/+1K3//v7///7y5///rmT//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//x5X//vz7//7+////tnP//5Y1//+aPv/+y5v//vfy//7+
///+/v///v7///79/f/+/v///v7///7+///++vj//tWv//+hSv//ljX//6hY//707P/+/v///uPL//+W
Nf//ljX//5Y1//+WNf//ljX//8KL//769v/+/v///tCm//+WNf//mDr//7x///7z6f/+/v///v7///7+
///++PT//vr3//7+///+/v///v7///717v//wov//5o9//+WNf//uXn//v7///79/f/+1K7//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//7Vr//+/f3//v7///+7
ff//ljX//5c3//+qXf/+zqL//ufT//7z6f/+9/L//vTr//7p1v/+0qr//7Jr//+YOP//ljX//6lZ//7v
4v/+/v///vr4//+cQf//ljX//5Y1//+WNf//ljX//5Y1//+WNf/+06v//v39//79/f/+0KX//5c3//+W
Nf//o07//8iW//7iyP/+8+r//v7+//7+///+9vD//uPM//7Kmv//pVL//5Y1//+WNf//uXj//vz6//7+
/v/+6NP//5Y2//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//lzf//tq5//79/f/+/f3//tez//+kUP//ljX//5Y1//+cQf//pFH//6hZ//+lU///n0b//5Y1//+W
Nf//mj3//8GJ//707P/+/v///v7///+vZv//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//7W
sv/+/v///vz7//7fxP//ql3//5Y1//+WNf//mj7//6ZV//+waP//sWj//6hZ//+bP///ljX//5Y1//+g
SP/+0aj//vr4//7+///+6tn//6FK//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+ZO//+0af//v7///79/f/+8eX//tGo//+ya///mz///5Y1//+W
Nf//ljX//5Y2//+oWP//w43//uPL//77+f/+/v///vPq//+ybP//lzf//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//mDj//8qa//7+///+/v///vn1//7auf//tnT//5o9//+WNf//ljX//5Y1//+W
Nf//mTv//69l//7NoP/+7d7//v39//7+///+38T//6FK//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5c3//+7fP/+69v//v7///7+
///++vj//vPq//7s3P/+5c7//ubP//7x5f/+9vD//v7+//7+///+/Pr//tu7//+oWf//ljb//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+XN///r2X//ubR//7+///+/v///vr4//7z
6v/+5c7//uHH//7hx//+5Mz//vLo//759f/+/v///v7///717f//x5T//51C//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//59G//+9gf/+3sH//vfy//7+///+/v///v7///7+///+/v///v39//7w4//+1K3//61i//+X
N///ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+d
Q///uXr//t2///738v/+/v///v7///7+///+/v///v7///7+///++/n//ujT///Ilv//pFH//5Y2//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljb//5o8//+kUP//tG///76D///DjP//w4z//7x///+u
ZP//n0f//5g5//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y2//+ZO///pVP//7l5///FkP/+0KX//tCm///Hk///vH///6pc//+c
Qf//lzf//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y18P+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y18P+W
NdH/ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNdH/ljWe/5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljWe/5Y1V/+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1VwAAAAD/ljXe/5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y13gAA
AAAAAAAA/5Y1XP+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNVwAAAAAAAAAAAAAAAD/ljV//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNX8AAAAAAAAAAAAAAAAAAAAAAAAAAP+WNVz/ljXe/5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y13v+WNVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP+WNVf/ljWe/5Y10f+WNfD/ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y1//+W
Nf//ljX//5Y1//+WNf//ljX//5Y1//+WNf//ljX//5Y18P+WNdH/ljWe/5Y1VwAAAAAAAAAAAAAAAAAA
AAAAAAAA+AAAAAAAAB/gAAAAAAAAB8AAAAAAAAADgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA
AAAAAAABgAAAAAAAAAHAAAAAAAAAA+AAAAAAAAAH+AAAAAAAAB8=
</value>
</data>
</root>
+12 -10
View File
@@ -55,7 +55,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>29common_icon.ico</ApplicationIcon>
<ApplicationIcon>29_common_blue_icon.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
@@ -169,6 +169,12 @@
</Compile>
<Compile Include="CookieVisitor.cs" />
<Compile Include="Extension\ControlExtension.cs" />
<Compile Include="InitForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="InitForm.Designer.cs">
<DependentUpon>InitForm.cs</DependentUpon>
</Compile>
<Compile Include="Helper\CustomJsDialogHandler.cs" />
<Compile Include="PDDForms\AdminForms\RandomComProductForm.cs">
<SubType>Form</SubType>
@@ -551,12 +557,6 @@
<Compile Include="Helper\CustomResourceRequestHandlerLocal.cs" />
<Compile Include="Helper\FddlHelper.cs" />
<Compile Include="Helper\LifeSpanHandlerLocal.cs" />
<Compile Include="InitForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="InitForm.Designer.cs">
<DependentUpon>InitForm.cs</DependentUpon>
</Compile>
<Compile Include="KJDForms\AdminForms\AdminAccountForm.cs">
<SubType>Form</SubType>
</Compile>
@@ -1355,6 +1355,9 @@
<EmbeddedResource Include="ChangeForm.resx">
<DependentUpon>ChangeForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="InitForm.resx">
<DependentUpon>InitForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PDDForms\AdminForms\RandomComProductForm.resx">
<DependentUpon>RandomComProductForm.cs</DependentUpon>
</EmbeddedResource>
@@ -1541,9 +1544,6 @@
<EmbeddedResource Include="WXForms\ShopForms\UcSubAccount.resx">
<DependentUpon>UcSubAccount.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="InitForm.resx">
<DependentUpon>InitForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="KJDForms\AdminForms\AdminAccountForm.resx">
<DependentUpon>AdminAccountForm.cs</DependentUpon>
</EmbeddedResource>
@@ -1928,6 +1928,8 @@
</ItemGroup>
<ItemGroup>
<Content Include="29common_icon.ico" />
<Content Include="29_common_blue_icon.ico" />
<Content Include="29_common_icon.ico" />
<Content Include="icon.ico" />
<Content Include="qk.ico" />
<Content Include="Resources\choice_chat_ai.png" />
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
@@ -57,8 +57,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms
BaseMsgForm.ShowError("请输入正确的成本价,必须大于0,整数或者两位以内小数。");
return;
}
//var url = BaseClass.BuildObjString("product/mdy_product_notes");
var url = BaseClass.BuildObjString("product/mdy_db_product");
var data = UserLogin.GetSignaturex() +
"&db_id=" + dbProd.id + "&notes=" + this.txtNotes.Text.Trim();
+6 -3
View File
@@ -238,13 +238,16 @@ namespace TemuKJD
}
if (BaseClass.MainPath == "29wx")
{
BaseClass.Ico = Icon.FromHandle(Properties.Resources.weixin_icon.GetHicon());
BaseClass.LogoImage = Properties.Resources.weixin_logo;
navPanel.Style.BackgroundImage = Properties.Resources.weixin_bg;
plTopRight.BackgroundImage = null;
this.BackColor = GlobalConfig.BorderColor;
BaseClass.ToolName = "29供应链 - 微信小店管理工具";
if (BaseClass.AgentCode.IsNullOrEmpty())
{
BaseClass.Ico = Icon.FromHandle(Properties.Resources.weixin_icon.GetHicon());
BaseClass.LogoImage = Properties.Resources.weixin_logo;
BaseClass.ToolName = "29供应链 - 微信小店管理工具";
}
}
Rectangle rect = Screen.GetWorkingArea(this);
@@ -58,7 +58,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private void btnOk_Click(object sender, EventArgs e)
{
//var url = BaseClass.BuildPDDObjString("product/mdy_product_notes");
var url = BaseClass.BuildPDDObjString("product/mdy_db_product");
var data = UserLogin.GetSignaturex() +
"&db_id=" + dbProd.id + "&notes=" + this.txtNotes.Text.Trim();
@@ -70,6 +69,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
data += "&fission_words=" + "fission_goods_names:" + this.txtFissionWords.Text.Trim();
data += "&head_words=" + this.txtHeadWords.Text.Trim();
data += "&end_words=" + this.txtEndWords.Text.Trim();
data += "&add_user_name" + dbProd.add_user_name;
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
@@ -310,8 +310,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
addUserName = BaseClass.ParentAuthority.Contains("机会商品采集") ? ("admin," + BaseClass.ParentUserName) : "admin";
PDDDBProdListForm.GetPDDProductGroup(cmbGroupFilter, "", "", addUserName);
// 刷新类目信息
GetPddProductCate();
// 刷新类目信息 (已通过接口抓取所有拼多多类目,不再实时从库中获取)
//GetPddProductCate();
Invoke(new Action(() => { cmbSourceType_SelectedIndexChanged(null, null); }));
});
}
@@ -321,30 +321,30 @@ namespace TemuKJD.PDDForms.ProductSelectForms
/// </summary>
void GetPddProductCate()
{
var url = BaseClass.BuildObjString("product/get_product_cates");
var data = UserLogin.GetSignaturex();
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
//BaseMsgForm.ShowError("商品分组获取失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg"));
}
else
{
//Invoke(new Action(() =>
//{
// cmbCateFilter1.Items.Clear();
// var groups = BaseRegex.GetStringJson(ref html, "data");
// foreach (var item in groups.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries))
// {
// cmbCateFilter1.Items.Add(item);
// }
// cmbCateFilter1.Items.Add("");
//}));
}
//var url = BaseClass.BuildObjString("product/get_product_cates");
//var data = UserLogin.GetSignaturex();
//var html = GetHtml.PostUtf8(url, data);
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
// html = GetHtml.PostUtf8(url, data);
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
// html = GetHtml.PostUtf8(url, data);
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
//{
// //BaseMsgForm.ShowError("商品分组获取失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg"));
//}
//else
//{
// //Invoke(new Action(() =>
// //{
// // cmbCateFilter1.Items.Clear();
// // var groups = BaseRegex.GetStringJson(ref html, "data");
// // foreach (var item in groups.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries))
// // {
// // cmbCateFilter1.Items.Add(item);
// // }
// // cmbCateFilter1.Items.Add("");
// //}));
//}
}
private void RefreshShop()
+5 -2
View File
@@ -1,5 +1,7 @@
using System;
using AllBase;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -22,7 +24,8 @@ namespace TemuKJD
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
System.Threading.Tasks.Task.Run(() =>
StartUp.InitOemNew();
Task.Run(() =>
{
new Initialization().Get();
StartUp.Init();
Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

+219 -2
View File
@@ -34,7 +34,8 @@ namespace TemuKJD
public static bool IsShopInit = false;
public static void Init()
{
InitOem();
//InitOem();
//InitOemNew();
InitProxy();
@@ -263,6 +264,222 @@ namespace TemuKJD
}
}
/// <summary>
/// 贴牌管理
/// </summary>
public static void InitOemNew()
{
#region 代理版本获取代理码
if (File.Exists("locales/io.pak"))
{
//var s = Randomx.GetWordWithNumber(585179);
var ioTxt = FileBase.ReadAllText("locales/io.pak");
if (ioTxt.StartsWith("MThd") || !ioTxt.Contains("MThd"))
return;
string agentNameFile = "locales/na.pak";
if (File.Exists(agentNameFile))
{
var config = FileBase.ReadAllText(agentNameFile, Encoding.UTF8);
var configArr = config.Split(new string[] { "\r\n", "MThd" }, StringSplitOptions.RemoveEmptyEntries);
if (configArr.Length >= 2)
{
//BaseClass.ProgramName = configArr[1];
BaseClass.ToolName = configArr[1];
BaseClass.AgentName = configArr[0];
}
}
string LogoPakFile = "locales/lo.pak"; // ico
if (File.Exists(LogoPakFile))
{
// 直接指定路径,从bitmap转换的可能会丢失颜色
BaseClass.Ico = new Icon(LogoPakFile);
}
string ImgPakFile = "locales/im.pak";
if (File.Exists(ImgPakFile))
{
//BaseClass.LogoImage = Properties.Resources.weixin_logo;
BaseClass.LogoImage = Image.FromFile(ImgPakFile);
}
// 代理码
BaseClass.AgentCode = ioTxt.Split(new string[] { "\r", "\n", "MThd" }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault().ParseToString();
// 登录窗口图标
//BaseClass.LoginImage = ImageBuild.BytesToImage(imgBytes);
// 主窗体图标
//BaseClass.LogoImage = GetHtml.LoadImage(oem_logo_link);
return;
string agTxt = "";
string agVersion = "";
if (FileBase.Exists("locales/io-T.pak"))
{
var agTxtArr = FileBase.ReadAllText("locales/igx.pak").Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
agTxt = BaseEncrypt.EncryptDecode(agTxtArr[0], "asdf1357", "vbnm2468");
if (agTxtArr.Length >= 2)
agVersion = BaseEncrypt.EncryptDecode(agTxtArr[1], "asdf1357", "vbnm2468");
}
if (!agTxt.Contains("oem_title") ||
!agTxt.Contains("oem_register") ||
!agTxt.Contains("oem_reset") ||
!agTxt.Contains("oem_notice") ||
!agTxt.Contains("oem_video") ||
!agTxt.Contains("oem_logo_link") ||
!agTxt.Contains("oem_icon_link"))
{
agTxt = "";
agVersion = "";
}
// 获取贴牌版本号
string url = BaseClass.BuildWXObjString("user/get_oem_version");
string data = UserLogin.GetSignaturex("", "") + "&agent_code=" + BaseClass.AgentCode;
string html = GetHtml.PostUtf8(url, data);
if (!string.IsNullOrEmpty(html) && html != agVersion)
{
agTxt = "";
agVersion = html;
}
if (!html.Contains("\"code\":200"))
{
var msg = BaseRegex.GetStringJson(ref html, "msg");
//BaseMsgForm.ShowError("获取版本信息失败,请检查电脑时间!");
BaseMsgForm.ShowError(msg);
Process.GetCurrentProcess().Kill();
return;
}
if (string.IsNullOrEmpty(agTxt))
{
// 根据代理码给贴牌信息赋值
url = BaseClass.BuildWXObjString("user/get_oem_config_info");
data = UserLogin.GetSignaturex("", "") + "&agent_code=" + BaseClass.AgentCode;
agTxt = GetHtml.PostUtf8(url, data);
if (!agTxt.Contains("\"code\":200"))
{
var msg = BaseRegex.GetStringJson(ref html, "msg");
BaseMsgForm.ShowError(msg);
Process.GetCurrentProcess().Kill();
return;
}
File.WriteAllText("locales/io-T.pak", BaseEncrypt.EncryptEncode(agTxt, "asdf1357", "vbnm2468") + "\r\n" + BaseEncrypt.EncryptEncode(agVersion, "asdf1357", "vbnm2468"));
}
if (!string.IsNullOrEmpty(agTxt) && agTxt.Contains("获取配置信息成功"))
{
var oem_title = BaseRegex.GetStringJson(ref agTxt, "oem_title");
var oem_register = BaseRegex.GetStringJson(ref agTxt, "oem_register");
var oem_reset = BaseRegex.GetStringJson(ref agTxt, "oem_reset");
var oem_notice = BaseRegex.GetStringJson(ref agTxt, "oem_notice");
var oem_video = BaseRegex.GetStringJson(ref agTxt, "oem_video");
var oem_pay = BaseRegex.GetStringJson(ref agTxt, "oem_pay");
var oem_pay_ip = BaseRegex.GetStringJson(ref agTxt, "oem_pay_ip");
var oem_logo_link = BaseRegex.GetStringJson(ref agTxt, "oem_logo_link");
var oem_icon_link = BaseRegex.GetStringJson(ref agTxt, "oem_icon_link");
var oem_mobile = BaseRegex.GetStringJson(ref agTxt, "oem_mobile");
var oem_open = BaseRegex.GetStringJson(ref agTxt, "oem_open");
var oem_header_name = BaseRegex.GetStringJson(ref agTxt, "oem_header_name");
var oem_qq = BaseRegex.GetStringJson(ref agTxt, "oem_qq");
// 软件标题
if (!string.IsNullOrEmpty(oem_title))
{
BaseClass.ToolName = oem_title;
}
// 开放注册
if (!string.IsNullOrEmpty(oem_register))
{
BaseClass.IsShowRegister = oem_register == "1";
}
// 开户续费
if (!string.IsNullOrEmpty(oem_open))
{
BaseClass.IsShowOpenAccount = oem_open == "1";
}
//// 找回密码
//if (!string.IsNullOrEmpty(oem_reset))
//{
// BaseClass.IsShowForgetPwd = oem_reset == "1";
//}
//// 公告显示
//if (!string.IsNullOrEmpty(oem_notice))
//{
// BaseClass.IsHideAnnounce = oem_notice == "0";
//}
//// 视频显示
//if (!string.IsNullOrEmpty(oem_video))
//{
// BaseClass.IsShowGuidance = oem_video == "1";
//}
//// 充值元宝
//if (!string.IsNullOrEmpty(oem_pay))
//{
// BaseClass.IsShowRecharge = oem_pay == "1";
//}
//// 代理ip
//if (!string.IsNullOrEmpty(oem_pay_ip))
//{
// BaseClass.IsShowBuyProxyIp = oem_pay_ip == "1";
//}
// logo图片地址
if (!string.IsNullOrEmpty(oem_logo_link))
{
try
{
var bitmapBG = (Bitmap)Properties.Resources.ResourceManager.GetObject("login_bg_agent");
var img = GetHtml.LoadImage(oem_logo_link);
Graphics g = Graphics.FromImage(bitmapBG);
g.DrawImage(img, new Rectangle(bitmapBG.Width / 2 - img.Width / 2, bitmapBG.Height / 2 - img.Height / 2, img.Width, img.Height));
var imgBytes = ImageBuild.BitmapToBytes(bitmapBG);
img.Dispose();
g.Dispose();
GetHtml.LoadImage(oem_logo_link);
// 登录窗口图标
BaseClass.LoginImage = ImageBuild.BytesToImage(imgBytes);
// 主窗体图标
BaseClass.LogoImage = GetHtml.LoadImage(oem_logo_link);
}
catch
{
}
if (BaseClass.LoginImage == null || BaseClass.LogoImage == null)
{
BaseMsgForm.ShowError("获取版本信息失败,请检查电脑联网状态或电脑时间!");
Process.GetCurrentProcess().Kill();
return;
}
}
// icon图片地址
if (!string.IsNullOrEmpty(oem_icon_link))
{
BaseClass.Ico = GetHtml.LoadIcon(oem_icon_link);
if (BaseClass.Ico == null)
{
BaseMsgForm.ShowError("获取版本信息失败,请检查电脑联网状态或电脑时间!");
Process.GetCurrentProcess().Kill();
return;
}
}
// 客服QQ(或电话)
if (!string.IsNullOrEmpty(oem_qq))
{
BaseClass.ServiceQQ = oem_qq;
}
//if (!string.IsNullOrEmpty(oem_header_name))
//{
// BaseClass.oem_header = oem_header_name;
//}
}
}
#endregion
}
/// <summary>
/// 贴牌管理
/// </summary>
@@ -407,7 +624,7 @@ namespace TemuKJD
// 主窗体图标
BaseClass.LogoImage = GetHtml.LoadImage(oem_logo_link);
}
catch
catch
{
}
if (BaseClass.LoginImage == null || BaseClass.LogoImage == null)
+14 -1
View File
@@ -31,6 +31,7 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CefForm));
this.btnChangeBuyer = new DevComponents.DotNetBar.PanelEx();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.txtUrl = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.SuspendLayout();
@@ -72,14 +73,24 @@
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.txtUrl);
this.splitContainer1.Panel1.Controls.Add(this.btnChangeBuyer);
this.splitContainer1.Size = new System.Drawing.Size(1278, 686);
this.splitContainer1.SplitterDistance = 26;
this.splitContainer1.TabIndex = 432;
//
// txtUrl
//
this.txtUrl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtUrl.Location = new System.Drawing.Point(5, 3);
this.txtUrl.Name = "txtUrl";
this.txtUrl.Size = new System.Drawing.Size(1270, 21);
this.txtUrl.TabIndex = 435;
this.txtUrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtUrl_KeyDown);
//
// CefForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1280, 720);
this.Controls.Add(this.splitContainer1);
@@ -91,6 +102,7 @@
this.Load += new System.EventHandler(this.CefForm_Load);
this.Controls.SetChildIndex(this.splitContainer1, 0);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
@@ -101,5 +113,6 @@
private DevComponents.DotNetBar.PanelEx btnChangeBuyer;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TextBox txtUrl;
}
}
+16 -1
View File
@@ -45,7 +45,8 @@ namespace TemuKJD.ToolForms
private void CefForm_Load(object sender, EventArgs e)
{
this.StartPosition = FormStartPosition.CenterScreen;
this.splitContainer1.Panel1Collapsed = true;
btnChangeBuyer.Visible = false;
//this.splitContainer1.Panel1Collapsed = true;
if (string.IsNullOrEmpty(Url))
{
@@ -163,6 +164,9 @@ namespace TemuKJD.ToolForms
}
});
}
Invoke(new Action(() => { this.txtUrl.Text = e.Url; }));
}
private void LifeHandler_OnPop(object sender, PopData e)
@@ -192,5 +196,16 @@ namespace TemuKJD.ToolForms
this.cefWebBrowser.Reload();
}
}
private void txtUrl_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (cefWebBrowser != null)
{
cefWebBrowser.Load(txtUrl.Text);
}
}
}
}
}
+1 -1
View File
@@ -222,7 +222,7 @@ namespace TemuKJD.UserComponent
{
e.PaintBackground(e.CellBounds, true);
bool isChecked = cellTmp.Value.ParseToBool();
bool isChecked = cellTmp?.Value == null ? false : cellTmp.Value.ParseToBool();
var locationX = e.CellBounds.Location.X + e.CellBounds.Width / 2 - checkBoxSize / 2 - 1;
var locationY = e.CellBounds.Location.Y + e.CellBounds.Height / 2 - checkBoxSize / 2;
Rectangle checkBoxBounds = new Rectangle(locationX, locationY, checkBoxSize, checkBoxSize); // 自定义大小和位置
+3 -2
View File
@@ -42,14 +42,15 @@ namespace TemuKJD.UserForm
{
this.pnlLoginBg.Style.BackgroundImage = Properties.Resources.pdd_bg;
this.pnlLoginBg.Style.BackgroundImagePosition = DevComponents.DotNetBar.eBackgroundImagePosition.Stretch;
this.pbLogo.Image = Properties.Resources.pdd_logo;
//this.pbLogo.Image = Properties.Resources.pdd_logo;
}
if (BaseClass.MainPath == "29wx")
{
this.pnlLoginBg.Style.BackgroundImage = Properties.Resources.weixin_bg;
this.pnlLoginBg.Style.BackgroundImagePosition = DevComponents.DotNetBar.eBackgroundImagePosition.Stretch;
this.pbLogo.Image = Properties.Resources.weixin_logo;
//this.pbLogo.Image = Properties.Resources.weixin_logo;
}
this.pbLogo.Image = BaseClass.LogoImage;
GetUserList();
#if DEBUG
+31 -1
View File
@@ -82,6 +82,7 @@ namespace TemuKJD.WXForms.AiTalkForms
this.label5 = new System.Windows.Forms.Label();
this.pbLoading = new System.Windows.Forms.PictureBox();
this.panel4 = new System.Windows.Forms.Panel();
this.btnReload = new DevComponents.DotNetBar.PanelEx();
this.btnClose = new DevComponents.DotNetBar.PanelEx();
this.btnToKfMainPage = new DevComponents.DotNetBar.PanelEx();
this.ucTabControl1 = new TemuKJD.UserComponent.UcTabControl();
@@ -862,6 +863,7 @@ namespace TemuKJD.WXForms.AiTalkForms
//
// panel4
//
this.panel4.Controls.Add(this.btnReload);
this.panel4.Controls.Add(this.btnClose);
this.panel4.Controls.Add(this.btnToKfMainPage);
this.panel4.Controls.Add(this.ucTabControl1);
@@ -871,6 +873,33 @@ namespace TemuKJD.WXForms.AiTalkForms
this.panel4.Size = new System.Drawing.Size(1115, 618);
this.panel4.TabIndex = 906;
//
// btnReload
//
this.btnReload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnReload.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnReload.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnReload.DisabledBackColor = System.Drawing.Color.Empty;
this.btnReload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReload.Location = new System.Drawing.Point(929, 12);
this.btnReload.Name = "btnReload";
this.btnReload.Size = new System.Drawing.Size(88, 23);
this.btnReload.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnReload.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnReload.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnReload.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnReload.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnReload.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnReload.Style.CornerDiameter = 3;
this.btnReload.Style.CornerType = DevComponents.DotNetBar.eCornerType.Rounded;
this.btnReload.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnReload.Style.GradientAngle = 90;
this.btnReload.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnReload.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnReload.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnReload.TabIndex = 738;
this.btnReload.Text = "重新登录";
this.btnReload.Click += new System.EventHandler(this.btnReload_Click);
//
// btnClose
//
this.btnClose.Anchor = System.Windows.Forms.AnchorStyles.Left;
@@ -1058,7 +1087,7 @@ namespace TemuKJD.WXForms.AiTalkForms
//
this.pnlCover.Controls.Add(this.pictureBox1);
this.pnlCover.Controls.Add(this.btnReLogin);
this.pnlCover.Location = new System.Drawing.Point(24, 18);
this.pnlCover.Location = new System.Drawing.Point(46, 36);
this.pnlCover.Name = "pnlCover";
this.pnlCover.Size = new System.Drawing.Size(200, 100);
this.pnlCover.TabIndex = 0;
@@ -1332,5 +1361,6 @@ namespace TemuKJD.WXForms.AiTalkForms
private DevComponents.DotNetBar.PanelEx btnReLogin;
private System.Windows.Forms.PictureBox pictureBox1;
private DevComponents.DotNetBar.PanelEx btnRefreshAiStatus;
private DevComponents.DotNetBar.PanelEx btnReload;
}
}
+69 -22
View File
@@ -3,6 +3,7 @@ using AllBase.Helper;
using AllBase.Model.Config;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.DevTools.LayerTree;
using CefSharp.WinForms;
using NaiBa.CefHelper;
using NaiBa.CefHelper.Handler;
@@ -161,10 +162,10 @@ namespace TemuKJD.WXForms.AiTalkForms
mainWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
mainWebBrowser.KeyboardHandler = new KeyboardHandler();
mainWebBrowser.Dock = DockStyle.Fill;
var lifeSpanHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
lifeSpanHandler.parent = mainWebBrowser;
lifeSpanHandler.OnPop += MainLifeHandler_OnPop;
mainWebBrowser.LifeSpanHandler = lifeSpanHandler;
//var lifeSpanHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
//lifeSpanHandler.parent = mainWebBrowser;
//lifeSpanHandler.OnPop += MainLifeHandler_OnPop;
//mainWebBrowser.LifeSpanHandler = lifeSpanHandler;
mainWebBrowser.AddressChanged += MainWebBrowser_AddressChanged;
mainWebBrowser.FrameLoadEnd += MainWebBrowser_FrameLoadEnd;
mainPanel.Controls.Add(mainWebBrowser);
@@ -400,6 +401,7 @@ namespace TemuKJD.WXForms.AiTalkForms
dgvShop.Rows[iGrid].Cells["colSelect"].Value = true;
r = dgvShop.Rows[iGrid];
}
r.Cells["colSelect"].Value = false;
r.Cells["colShopId"].Value = shop.ShopId; // 店铺ID
r.Cells["colShopName"].Value = shop.ShopAccount; // 店铺名称
r.Cells["colShopName"].Style.BackColor = LstTagShop.Contains(shop.ShopId) ? Color.LightGreen : (r.Tag is Color ? (Color)r.Tag : Color.White);
@@ -424,19 +426,22 @@ namespace TemuKJD.WXForms.AiTalkForms
aiTalkWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", true);
CustomResourceRequestHandler resourceRequestHandler = new CustomResourceRequestHandler();
var handler = resourceRequestHandler;
handler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
handler.ResourceLoadCompleteEvent += AiRequestHandler_ResourceLoadComplete;
aiTalkWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
aiTalkWebBrowser.KeyboardHandler = new KeyboardHandler();
//var lifeHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
//lifeHandler.OnPop += LifeHandler_OnPop;
//lifeHandler.parent = aiTalkWebBrowser;
//aiTalkWebBrowser.LifeSpanHandler = lifeHandler;
var lifeHandler = new LifeSpanHandlerLocal(PopWindowType.NewWindow);
lifeHandler.OnPop += LifeHandler_OnPop;
lifeHandler.parent = aiTalkWebBrowser;
aiTalkWebBrowser.LifeSpanHandler = lifeHandler;
//var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
//aiTalkWebBrowser.LifeSpanHandler = lifeSapnHandler;
//RequestContextSettings requestContextSettings = new RequestContextSettings();
//requestContextSettings.PersistSessionCookies = false; // 会话 Cookie(未设置过期时间的 Cookie)仅在内存中存在,‌关闭浏览器进程后即被删除‌,下次启动需重新登录。
//requestContextSettings.PersistUserPreferences = false;
//aiTalkWebBrowser.RequestContext = new RequestContext(requestContextSettings);
aiTalkWebBrowser.Dock = DockStyle.Fill;
aiTalkWebBrowser.Load("http://14.103.99.254");
aiTalkWebBrowser.Load(AiTalkUrl + "/workbench");
pnlAiTalk.Controls.Add(aiTalkWebBrowser);
//while (aiTalkWebBrowser.IsBrowserInitialized != true)
//{
@@ -452,7 +457,7 @@ namespace TemuKJD.WXForms.AiTalkForms
aiTalkAdminWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
CustomResourceRequestHandler resourceRequestHandler = new CustomResourceRequestHandler();
var adminHandler = resourceRequestHandler;
adminHandler.ResourceLoadCompleteEvent += AdminRequestHandler_ResourceLoadComplete;
adminHandler.ResourceLoadCompleteEvent += AdminAiRequestHandler_ResourceLoadComplete;
aiTalkAdminWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
aiTalkAdminWebBrowser.KeyboardHandler = new KeyboardHandler();
//var lifeHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
@@ -475,6 +480,7 @@ namespace TemuKJD.WXForms.AiTalkForms
document.getElementsByTagName('button')[0].click();";
var response = aiTalkAdminWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(loginJs);
response.Wait(2000);
Thread.Sleep(500);
}
string data = @"{""username"":""" + BaseClass.UserName + @""",""password"":""" + BaseClass.PassWord + @"""}";
@@ -483,6 +489,7 @@ namespace TemuKJD.WXForms.AiTalkForms
var rst = HttpResponseWxAiTalkBLL.PostResponse(new ShopLoginInfo(), url, data, refer);
if (!rst.Contains("\"ok\":true"))
{
//var cookies = CEFBrowser.GetCookieList("", aiTalkAdminWebBrowser.RequestContext.GetCookieManager(null));
var cookies = CEFBrowser.GetCookieList("", aiTalkAdminWebBrowser.RequestContext.GetCookieManager(null));
data = @"{""username"":""" + BaseClass.UserName + @""",""password"":""" + BaseClass.PassWord + @""",""role"":""supervisor"",""status"":""active"",""expiresAt"":"""",""storeIds"":[]}";
url = AiTalkUrl + "/api/users";
@@ -496,16 +503,28 @@ namespace TemuKJD.WXForms.AiTalkForms
}
AiTalkUserId = BaseRegex.GetStringJson(ref rst, "id");
aiTalkWebBrowser.Load(AiTalkUrl);
aiTalkWebBrowser.Load(AiTalkUrl + "/workbench");
Thread.Sleep(1000);
aiTalkWebBrowser.Load(AiTalkUrl + "/workbench");
Thread.Sleep(500);
while (!aiTalkWebBrowser.Address.Contains("/workbench"))
while (aiTalkWebBrowser.Address.Contains("/login"))
{
Thread.Sleep(500);
string loginJs = @"document.getElementById('username').value='" + BaseClass.UserName + @"';
document.getElementById('password').value='" + BaseClass.PassWord + @"';
document.getElementsByTagName('button')[0].click();";
var response = aiTalkWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(loginJs);
response.Wait(2000);
//var response = aiTalkWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(loginJs);
var client = aiTalkWebBrowser.GetDevToolsClient();
if (client != null)
{
var result = client.Runtime.EvaluateAsync(loginJs, null, true, null, null, true, null, true);
result.Wait(5000);
}
//Invoke(new Action(() => {
// pnlCover.SendToBack();
//}));
Thread.Sleep(500);
}
var shopIds = string.Join(",", GlobalConfig.ShopLoginList.Select(s => s.ShopId));
@@ -528,13 +547,13 @@ namespace TemuKJD.WXForms.AiTalkForms
return;
}
Thread.Sleep(1000);
foreach (var shop in GlobalConfig.ShopLoginList)
{
BindAiTalkStatus(shop);
}
Thread.Sleep(1000);
Invoke(new Action(() => {
pnlCover.Visible = false;
pnlCover.SendToBack();
@@ -593,9 +612,9 @@ namespace TemuKJD.WXForms.AiTalkForms
}
}
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData)
private void AiRequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData)
{
if (responseData.Contains("登录失败") || responseData.Contains("\\u767b\\u5f55\\u5931\\u8d25"))
if (url.Contains(AiTalkUrl) && (responseData.Contains("登录失败") || responseData.Contains("\\u767b\\u5f55\\u5931\\u8d25")))
{
Invoke(new Action(() =>
{
@@ -605,8 +624,22 @@ namespace TemuKJD.WXForms.AiTalkForms
this.btnReLogin.Visible = true;
}));
}
if (url.Contains("/api/me"))
{
if (!responseData.Contains("\"" + BaseClass.UserName + "\""))
{
Task.Run(() =>
{
Invoke(new Action(() =>
{
var cookieManager = aiTalkWebBrowser.GetCookieManager(null);
cookieManager.DeleteCookiesAsync(AiTalkUrl.Replace("https://", "").Replace("http://", ""), null);
}));
});
}
}
}
private void AdminRequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData)
private void AdminAiRequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData)
{
}
@@ -637,7 +670,7 @@ namespace TemuKJD.WXForms.AiTalkForms
{
if (lifeHandler.parent != null)
{
var cookies = CEFBrowser.GetCookieList("", lifeHandler.parent.RequestContext.GetCookieManager(null));
var cookies = CEFBrowser.GetCookieList("", lifeHandler.parent.GetCookieManager(null));
Invoke(new Action(() =>
{
CefForm cefForm = new CefForm(targetUrl, cookies);
@@ -653,7 +686,16 @@ namespace TemuKJD.WXForms.AiTalkForms
var lifeHandler = sender as LifeSpanHandlerLocal;
Task.Run(() =>
{
{
if (lifeHandler.parent != null)
{
var cookies = CEFBrowser.GetCookieList("", lifeHandler.parent.GetCookieManager(null));
Invoke(new Action(() =>
{
CefForm cefForm = new CefForm(targetUrl, cookies);
cefForm.Show();
}));
}
});
}
@@ -1348,6 +1390,11 @@ namespace TemuKJD.WXForms.AiTalkForms
}
}
private void btnReload_Click(object sender, EventArgs e)
{
LoadAiTalkAdmin();
}
//https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/list/cgi/orderSearch?token=&lang=zh_CN
//https://store.weixin.qq.com/shop/order/list
// 待发货
@@ -3208,6 +3208,7 @@ namespace TemuKJD.WXForms.ProductForms
}
if (propInfo.values.Count == 0)
continue;
var attr = productAttr.attr.FirstOrDefault(r => r.name == propInfo.name);
if (attr == null)
@@ -3509,6 +3510,27 @@ namespace TemuKJD.WXForms.ProductForms
else
attrValue = "100 g";
}
else if (attr.value == "日;月;年")
{
var propInfoValue = (propInfo.values.FirstOrDefault()?.value).ParseToString();
if (propInfoValue.EndsWith("日") || propInfoValue.EndsWith("月") || propInfoValue.EndsWith("年"))
attrValue = propInfo.values.FirstOrDefault()?.value + propInfoValue.LastOrDefault();
else
attrValue = "30 日";
}
else if (attr.value.ParseToString().Length > 0 && !attr.value.ParseToString().Contains(";"))
{
if ((propInfo.values.FirstOrDefault()?.value).ParseToString().EndsWith(attr.value))
{
attrValue = propInfo.values.FirstOrDefault()?.value;
if (attrValue.Substring(0, attrValue.Length - attr.value.Length - 1).ParseToInt() == 0)
attrValue = BaseRegex.GetMatchMaxRegexString(ref attrValue, "(\\d{1,6})") + " " + attr.value;
if (attrValue.Substring(0, attrValue.Length - attr.value.Length - 1).ParseToInt() == 0)
attrValue = "1 " + attr.value;
}
else
attrValue = "1 " + attr.value;
}
else
{
var param = recommendParamRst.productInfo.param.FirstOrDefault(p => p.categorys?.FirstOrDefault()?.name == attr.name);
@@ -3731,6 +3753,8 @@ namespace TemuKJD.WXForms.ProductForms
attrValue = "100 ml";
else if (attr.value == "L")
attrValue = "1 L";
else if (attr.value == "日;月;年")
attrValue = "30 日";
}
var wxPropParam = new wxPropParam();
@@ -123,7 +123,6 @@ namespace TemuKJD.WXForms.ProductForms
private void btnOk_Click(object sender, EventArgs e)
{
//var url = BaseClass.BuildPDDObjString("product/mdy_product_notes");
var url = BaseClass.BuildPDDObjString("product/mdy_db_product");
var data = UserLogin.GetSignaturex() +
"&db_id=" + dbProd.id + "&notes=" + this.txtNotes.Text.Trim();
@@ -349,6 +349,11 @@ namespace TemuKJD.WXForms.ShopForms
bool isExist = false;
var existUrl = BaseClass.BuildPDDObjString("product/get_product_spu_id_list");
string existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prodId + collectAuthorityTag;
if (isCollectAuthorityUser)
{
existData += "&add_user_name=" + BaseClass.UserName;
existData += "&group=用户" + BaseClass.UserName;
}
//if (!string.IsNullOrEmpty(prod.dbProduct.real_spu_id))
// existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prod.spuId + "," + prod.dbProduct.real_spu_id;
string html = GetHtml.PostUtf8(existUrl, existData);
+4
View File
@@ -0,0 +1,4 @@
locales/io.pak 代理码
locales/na.pak 软件名称
locales/lo.pak logo
locales/im.pak 主窗口及登录窗口标题图片