一个没问题的版本

This commit is contained in:
ww-rm
2025-04-20 12:49:29 +08:00
parent 46b3937236
commit 5d819114d0
8 changed files with 545 additions and 339 deletions

View File

@@ -32,7 +32,6 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpinePreviewPanel));
panel_Render = new Panel();
tableLayoutPanel1 = new TableLayoutPanel();
panel_Container = new Panel();
flowLayoutPanel1 = new FlowLayoutPanel();
button_Stop = new Button();
imageList = new ImageList(components);
@@ -40,11 +39,16 @@
button_Start = new Button();
button_ForwardStep = new Button();
button_ForwardFast = new Button();
button_FullScreen = new Button();
panel_ViewContainer = new Panel();
panel_RenderContainer = new Panel();
toolTip = new ToolTip(components);
spinePreviewFullScreenForm = new SpineViewer.Forms.SpinePreviewFullScreenForm();
wallpaperForm = new WallpaperForm();
tableLayoutPanel1.SuspendLayout();
panel_Container.SuspendLayout();
flowLayoutPanel1.SuspendLayout();
panel_ViewContainer.SuspendLayout();
panel_RenderContainer.SuspendLayout();
SuspendLayout();
//
// panel_Render
@@ -64,8 +68,8 @@
//
tableLayoutPanel1.ColumnCount = 1;
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
tableLayoutPanel1.Controls.Add(panel_Container, 0, 0);
tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 1);
tableLayoutPanel1.Controls.Add(panel_ViewContainer, 0, 0);
tableLayoutPanel1.Dock = DockStyle.Fill;
tableLayoutPanel1.Location = new Point(0, 0);
tableLayoutPanel1.Margin = new Padding(0);
@@ -76,17 +80,6 @@
tableLayoutPanel1.Size = new Size(641, 636);
tableLayoutPanel1.TabIndex = 2;
//
// panel_Container
//
panel_Container.BackColor = SystemColors.ControlDark;
panel_Container.Controls.Add(panel_Render);
panel_Container.Dock = DockStyle.Fill;
panel_Container.Location = new Point(0, 0);
panel_Container.Margin = new Padding(0);
panel_Container.Name = "panel_Container";
panel_Container.Size = new Size(641, 594);
panel_Container.TabIndex = 0;
//
// flowLayoutPanel1
//
flowLayoutPanel1.Anchor = AnchorStyles.None;
@@ -97,10 +90,11 @@
flowLayoutPanel1.Controls.Add(button_Start);
flowLayoutPanel1.Controls.Add(button_ForwardStep);
flowLayoutPanel1.Controls.Add(button_ForwardFast);
flowLayoutPanel1.Location = new Point(138, 594);
flowLayoutPanel1.Controls.Add(button_FullScreen);
flowLayoutPanel1.Location = new Point(101, 594);
flowLayoutPanel1.Margin = new Padding(0);
flowLayoutPanel1.Name = "flowLayoutPanel1";
flowLayoutPanel1.Size = new Size(365, 42);
flowLayoutPanel1.Size = new Size(438, 42);
flowLayoutPanel1.TabIndex = 1;
//
// button_Stop
@@ -123,18 +117,19 @@
imageList.ColorDepth = ColorDepth.Depth32Bit;
imageList.ImageStream = (ImageListStreamer)resources.GetObject("imageList.ImageStream");
imageList.TransparentColor = Color.Transparent;
imageList.Images.SetKeyName(0, "stop");
imageList.Images.SetKeyName(1, "restart");
imageList.Images.SetKeyName(2, "start");
imageList.Images.SetKeyName(0, "arrows-maximize");
imageList.Images.SetKeyName(1, "forward-fast");
imageList.Images.SetKeyName(2, "forward-step");
imageList.Images.SetKeyName(3, "pause");
imageList.Images.SetKeyName(4, "forward-step");
imageList.Images.SetKeyName(5, "forward-fast");
imageList.Images.SetKeyName(4, "rotate-left");
imageList.Images.SetKeyName(5, "start");
imageList.Images.SetKeyName(6, "stop");
//
// button_Restart
//
button_Restart.AutoSize = true;
button_Restart.AutoSizeMode = AutoSizeMode.GrowAndShrink;
button_Restart.ImageKey = "restart";
button_Restart.ImageKey = "rotate-left";
button_Restart.ImageList = imageList;
button_Restart.Location = new Point(76, 3);
button_Restart.Name = "button_Restart";
@@ -191,17 +186,69 @@
button_ForwardFast.UseVisualStyleBackColor = true;
button_ForwardFast.Click += button_ForwardFast_Click;
//
// button_FullScreen
//
button_FullScreen.AutoSize = true;
button_FullScreen.AutoSizeMode = AutoSizeMode.GrowAndShrink;
button_FullScreen.ImageKey = "arrows-maximize";
button_FullScreen.ImageList = imageList;
button_FullScreen.Location = new Point(368, 3);
button_FullScreen.Name = "button_FullScreen";
button_FullScreen.Padding = new Padding(15, 3, 15, 3);
button_FullScreen.Size = new Size(67, 36);
button_FullScreen.TabIndex = 5;
toolTip.SetToolTip(button_FullScreen, "全屏预览");
button_FullScreen.UseVisualStyleBackColor = true;
button_FullScreen.Click += button_FullScreen_Click;
//
// panel_ViewContainer
//
panel_ViewContainer.Controls.Add(panel_RenderContainer);
panel_ViewContainer.Dock = DockStyle.Fill;
panel_ViewContainer.Location = new Point(0, 0);
panel_ViewContainer.Margin = new Padding(0);
panel_ViewContainer.Name = "panel_ViewContainer";
panel_ViewContainer.Size = new Size(641, 594);
panel_ViewContainer.TabIndex = 6;
//
// panel_RenderContainer
//
panel_RenderContainer.BackColor = SystemColors.ControlDark;
panel_RenderContainer.Controls.Add(panel_Render);
panel_RenderContainer.Dock = DockStyle.Fill;
panel_RenderContainer.Location = new Point(0, 0);
panel_RenderContainer.Margin = new Padding(0);
panel_RenderContainer.Name = "panel_RenderContainer";
panel_RenderContainer.Size = new Size(641, 594);
panel_RenderContainer.TabIndex = 0;
panel_RenderContainer.SizeChanged += panel_RenderContainer_SizeChanged;
//
// spinePreviewFullScreenForm
//
spinePreviewFullScreenForm.ClientSize = new Size(2560, 1440);
spinePreviewFullScreenForm.ControlBox = false;
spinePreviewFullScreenForm.FormBorderStyle = FormBorderStyle.None;
spinePreviewFullScreenForm.MaximizeBox = false;
spinePreviewFullScreenForm.MinimizeBox = false;
spinePreviewFullScreenForm.Name = "SpinePreviewFullScreenForm";
spinePreviewFullScreenForm.ShowIcon = false;
spinePreviewFullScreenForm.ShowInTaskbar = false;
spinePreviewFullScreenForm.StartPosition = FormStartPosition.Manual;
spinePreviewFullScreenForm.TopMost = true;
spinePreviewFullScreenForm.Visible = false;
spinePreviewFullScreenForm.KeyDown += spinePreviewFullScreenForm_KeyDown;
//
// wallpaperForm
//
wallpaperForm.ClientSize = new Size(490, 456);
wallpaperForm.ClientSize = new Size(512, 512);
wallpaperForm.ControlBox = false;
wallpaperForm.FormBorderStyle = FormBorderStyle.None;
wallpaperForm.MaximizeBox = false;
wallpaperForm.MinimizeBox = false;
wallpaperForm.Name = "WallpaperForm";
wallpaperForm.ShowIcon = false;
wallpaperForm.ShowInTaskbar = false;
wallpaperForm.StartPosition = FormStartPosition.Manual;
wallpaperForm.Text = "SpineViewerWallpaperForm";
wallpaperForm.Visible = false;
//
// SpinePreviewPanel
@@ -211,12 +258,12 @@
Controls.Add(tableLayoutPanel1);
Name = "SpinePreviewPanel";
Size = new Size(641, 636);
SizeChanged += SpinePreviewPanel_SizeChanged;
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
panel_Container.ResumeLayout(false);
flowLayoutPanel1.ResumeLayout(false);
flowLayoutPanel1.PerformLayout();
panel_ViewContainer.ResumeLayout(false);
panel_RenderContainer.ResumeLayout(false);
ResumeLayout(false);
}
@@ -224,7 +271,7 @@
private Panel panel_Render;
private TableLayoutPanel tableLayoutPanel1;
private Panel panel_Container;
private Panel panel_RenderContainer;
private FlowLayoutPanel flowLayoutPanel1;
private Button button_Stop;
private Button button_Start;
@@ -233,6 +280,9 @@
private Button button_ForwardStep;
private Button button_ForwardFast;
private Button button_Restart;
private Button button_FullScreen;
private Panel panel_ViewContainer;
private Forms.SpinePreviewFullScreenForm spinePreviewFullScreenForm;
private WallpaperForm wallpaperForm;
}
}

View File

@@ -22,11 +22,13 @@ namespace SpineViewer.Controls
InitializeComponent();
renderWindow = new(panel_Render.Handle);
renderWindow.SetActive(false);
wallpaperTexture = new(1, 1);
_wallpaperFormHandle = wallpaperForm.Handle;
wallpaperWindow = new(wallpaperForm.Handle);
wallpaperWindow.SetVisible(false);
wallpaperWindow.SetActive(false);
// 设置默认参数
Resolution = new(2048, 2048);
Zoom = 1;
Center = new(0, 0);
FlipY = true;
MaxFps = 30;
@@ -71,49 +73,36 @@ namespace SpineViewer.Controls
get => resolution;
set
{
if (value == resolution) return;
if (value.Width <= 0) value.Width = 100;
if (value.Height <= 0) value.Height = 100;
float parentX = panel_Render.Parent.Width;
float parentY = panel_Render.Parent.Height;
float sizeX = value.Width;
float sizeY = value.Height;
var previousZoom = Zoom;
if ((sizeY / sizeX) < (parentY / parentX))
{
// 相同的 X, 子窗口 Y 更小
sizeY = parentX * sizeY / sizeX;
sizeX = parentX;
}
else
{
// 相同的 Y, 子窗口 X 更小
sizeX = parentY * sizeX / sizeY;
sizeY = parentY;
}
float parentW = panel_Render.Parent.Width;
float parentH = panel_Render.Parent.Height;
float renderW = value.Width;
float renderH = value.Height;
float scale = Math.Min(parentW / renderW, parentH / renderH); // 两方向取较小值, 保证 parent 覆盖 render
renderW *= scale;
renderH *= scale;
// 必须通过 SFML 的方法调整窗口
renderWindow.Position = new((int)(parentX - sizeX) / 2, (int)(parentY - sizeY) / 2);
renderWindow.Size = new((uint)sizeX, (uint)sizeY);
// 将 view 的大小设置成于 resolution 相同的大小, 其余属性都不变
using var view = renderWindow.GetView();
var signX = Math.Sign(view.Size.X);
var signY = Math.Sign(view.Size.Y);
view.Size = new(value.Width * signX, value.Height * signY);
renderWindow.SetView(view);
renderWindow.Position = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5));
renderWindow.Size = new((uint)(renderW + 0.5), (uint)(renderH + 0.5));
resolution = value;
// 设置完 resolution 后还原缩放比例
Zoom = previousZoom;
// 设置壁纸窗口分辨率
wallpaperForm.Size = value;
_memDCsize = new() { cx = value.Width, cy = value.Height };
wallpaperTexture.Dispose();
wallpaperTexture = new((uint)value.Width, (uint)value.Height);
wallpaperTexture.SetView(view);
wallpaperWindow.Size = new((uint)value.Width, (uint)value.Height);
using var view = renderWindow.GetView();
wallpaperWindow.SetView(view);
}
}
private Size resolution = new(0, 0);
private Size resolution = new(100, 100);
/// <summary>
/// 画面中心点
@@ -133,7 +122,7 @@ namespace SpineViewer.Controls
using var view = renderWindow.GetView();
view.Center = new(value.X, value.Y);
renderWindow.SetView(view);
wallpaperTexture.SetView(view);
wallpaperWindow.SetView(view);
}
}
@@ -157,7 +146,7 @@ namespace SpineViewer.Controls
var signY = Math.Sign(view.Size.Y);
view.Size = new(resolution.Width / value * signX, resolution.Height / value * signY);
renderWindow.SetView(view);
wallpaperTexture.SetView(view);
wallpaperWindow.SetView(view);
}
}
@@ -178,7 +167,7 @@ namespace SpineViewer.Controls
using var view = renderWindow.GetView();
view.Rotation = value;
renderWindow.SetView(view);
wallpaperTexture.SetView(view);
wallpaperWindow.SetView(view);
}
}
@@ -202,7 +191,7 @@ namespace SpineViewer.Controls
size.X *= -1;
view.Size = size;
renderWindow.SetView(view);
wallpaperTexture.SetView(view);
wallpaperWindow.SetView(view);
}
}
@@ -226,7 +215,7 @@ namespace SpineViewer.Controls
size.Y *= -1;
view.Size = size;
renderWindow.SetView(view);
wallpaperTexture.SetView(view);
wallpaperWindow.SetView(view);
}
}
@@ -270,17 +259,16 @@ namespace SpineViewer.Controls
if (enableDesktopProjection == value) return;
if (value)
{
screenDC = Win32.GetDC(IntPtr.Zero);
memDC = Win32.CreateCompatibleDC(screenDC);
var screenBounds = Screen.FromControl(this).Bounds;
Resolution = screenBounds.Size;
wallpaperWindow.Position = new(screenBounds.X, screenBounds.Y);
wallpaperWindow.Size = new((uint)screenBounds.Size.Width, (uint)screenBounds.Size.Height);
//wallpaperForm.SetWallpaper(); // 窗口被创建和此处都需要设置一遍嵌入桌面, 否则无法正常显示, 原因未知
wallpaperForm.Show();
}
else
{
wallpaperForm.Hide();
Win32.DeleteDC(memDC);
Win32.ReleaseDC(IntPtr.Zero, screenDC);
memDC = 0;
screenDC = 0;
}
enableDesktopProjection = value;
}
@@ -311,24 +299,10 @@ namespace SpineViewer.Controls
/// </summary>
private readonly SFML.Graphics.RenderWindow renderWindow;
/// <summary>
/// 屏幕 DC
/// </summary>
private IntPtr screenDC;
/// <summary>
/// 用于壁纸窗口的内存 DC
/// </summary>
private IntPtr memDC;
private readonly IntPtr _wallpaperFormHandle;
private Win32.SIZE _memDCsize = new();
private Win32.POINT _memDCptSrc = new() { x = 0, y = 0 };
private Win32.BLENDFUNCTION _memDCblend = new() { BlendOp = 0, BlendFlags = 0, SourceConstantAlpha = 255, AlphaFormat = Win32.AC_SRC_ALPHA };
/// <summary>
/// 壁纸窗口
/// </summary>
private SFML.Graphics.RenderTexture wallpaperTexture;
private SFML.Graphics.RenderWindow wallpaperWindow;
/// <summary>
/// 帧间隔计时器
@@ -406,7 +380,7 @@ namespace SpineViewer.Controls
try
{
renderWindow.SetActive(true);
wallpaperTexture.SetActive(true);
wallpaperWindow.SetActive(true);
float delta;
while (cancelToken is not null && !cancelToken.IsCancellationRequested)
@@ -425,7 +399,7 @@ namespace SpineViewer.Controls
}
renderWindow.Clear(BackgroundColor);
if (enableDesktopProjection) wallpaperTexture.Clear(SFML.Graphics.Color.Transparent);
if(enableDesktopProjection) wallpaperWindow.Clear(BackgroundColor);
if (ShowAxis)
{
@@ -460,30 +434,14 @@ namespace SpineViewer.Controls
renderWindow.Draw(spine);
spine.EnableDebug = false;
if (enableDesktopProjection) wallpaperTexture.Draw(spine);
if (enableDesktopProjection) wallpaperWindow.Draw(spine);
}
}
}
renderWindow.Display();
// 桌面投影
if (enableDesktopProjection)
{
wallpaperTexture.Display();
using var img = wallpaperTexture.Texture.CopyToImage();
img.SaveToMemory(out var imgBuffer, "bmp");
using var stream = new MemoryStream(imgBuffer);
using var bitmap = new Bitmap(stream);
var newBitmap = bitmap.GetHbitmap(Color.FromArgb(0));
var oldBitmap = Win32.SelectObject(memDC, newBitmap);
Win32.UpdateLayeredWindow(_wallpaperFormHandle, screenDC, IntPtr.Zero, ref _memDCsize, memDC, ref _memDCptSrc, 0, ref _memDCblend, Win32.ULW_ALPHA);
Win32.SelectObject(memDC, oldBitmap);
Win32.DeleteObject(newBitmap);
}
if (enableDesktopProjection) wallpaperWindow.Display();
}
}
catch (Exception ex)
@@ -495,7 +453,7 @@ namespace SpineViewer.Controls
finally
{
renderWindow.SetActive(false);
wallpaperTexture.SetActive(false);
wallpaperWindow.SetActive(false);
}
}
@@ -506,7 +464,7 @@ namespace SpineViewer.Controls
/// </summary>
private SFML.System.Vector2f? draggingSrc = null;
private void SpinePreviewPanel_SizeChanged(object sender, EventArgs e)
private void panel_RenderContainer_SizeChanged(object sender, EventArgs e)
{
if (renderWindow is null)
return;
@@ -516,12 +474,12 @@ namespace SpineViewer.Controls
float renderW = panel_Render.Width;
float renderH = panel_Render.Height;
float scale = Math.Min(parentW / renderW, parentH / renderH); // 两方向取较小值, 保证 parent 覆盖 render
renderH *= scale;
renderW *= scale;
renderH *= scale;
// 必须通过 SFML 的方法调整窗口
renderWindow.Position = new((int)(parentW - renderW) / 2, (int)(parentH - renderH) / 2);
renderWindow.Size = new((uint)renderW, (uint)renderH);
// 必须通过 SFML 的方法调整窗口, 此处必须四舍五入, 否则在全屏和小窗多次切换之后会有明显的舍入误差
renderWindow.Position = new((int)((parentW - renderW) / 2 + 0.5), (int)((parentH - renderH) / 2 + 0.5));
renderWindow.Size = new((uint)(renderW + 0.5), (uint)(renderH + 0.5));
}
private void panel_Render_MouseDown(object sender, MouseEventArgs e)
@@ -733,6 +691,25 @@ namespace SpineViewer.Controls
}
}
private void button_FullScreen_Click(object sender, EventArgs e)
{
var screenBounds = Screen.FromControl(this).Bounds;
Resolution = screenBounds.Size;
spinePreviewFullScreenForm.Controls.Add(panel_RenderContainer);
spinePreviewFullScreenForm.Bounds = screenBounds;
spinePreviewFullScreenForm.Show();
PropertyGrid?.Refresh();
}
private void spinePreviewFullScreenForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
spinePreviewFullScreenForm.Hide();
panel_ViewContainer.Controls.Add(panel_RenderContainer);
}
}
//public void ClickStopButton() => button_Stop_Click(button_Stop, EventArgs.Empty);
//public void ClickRestartButton() => button_Restart_Click(button_Restart, EventArgs.Empty);
//public void ClickStartButton() => button_Start_Click(button_Start, EventArgs.Empty);

View File

@@ -124,206 +124,170 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAHi0AAAJNU0Z0AUkBTAIBAQYB
AAGIAQABiAEAAR8BAAEYAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABfAMAATADAAEBAQABIAYAAV0q
AAQCAy0BRQNbAc0DYAHoA1kBxgMyAU8DDwEUBAIYAAMOARIDQwF3A10BzwNbAc0DLQFFBAIYAANWAbID
YAHoA1wB1gNDAXcDFgEeBAIYAAMKAQ0DSQGFA2AB4wNfAeUDUQGeAyQBNAMJAQsEARgAAwsBDgM7AWQD
XgHSA1YBsv8AEQAEAgMxAUwDYgHhAwAB/wM3AfkDYAHbA0QBewMeASoDBgEIFAADGAEhA1cBwgMhAfsD
YgHhAzEBTAQCGAADWQHDAwAB/wMnAfwDYQHrA0gBhAMWAR4YAAMLAQ4DTQGSAzQB+QMSAf4DVwHyA1gB
ugM3AVoDEQEWAwIBAxQAAxcBHwNJAYYDYQHrA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wMAAf8DJAH9A2AB
4ANQAZoDLgFGAxEBFgMGAQcEAQgAAxoBJANbAc0DAAH/A2IB4QMxAUwEAhgAA1kBwwMAAf8DAAH/AwAB
/wNbAdADPgFrAw8BEwMCAQMQAAMLAQ4DTQGSAzQB+QMAAf8DAAH/A0IB9gNcAcsDRAF5Ax4BKgMGAQcM
AAQBAxgBIQNKAYsDXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wM3AfkDXAHnA0YB9QNZAe4DWQG7A0MB
dwMoATsDDwEUBAEEAAMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMDJgH8A1MB8ANGAfUDNwH5A10B
zgNDAXcDGgEjAwIBAwwAAwsBDgNNAZIDNAH5AwEB/wMnAfoDPQH4AzcB+QNgAeMDTgGYAyQBNQMGAQgE
AQQABAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeEDAAH/A1wB2QM7AWMDWQG7A0QB9wM8AfgD
XAHnA1sBxQNBAXMDEwEZAwIBAwMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMDYQHrA1ABmgNVAbED
UAHzAyEB+wNbAeQDSwGPAxsBJQMDAQQIAAMLAQ4DTQGSAzQB+QMlAf0DXAHZA1oBxwNGAfUDEgH+A2EB
6wNSAaMDJQE3AwMBBAQABAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQD
FgEdA1UBrwMAAf8DAAH/AwAB/wMAAf8DVQGvAxYBHQMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMD
WwHkAzsBZQMHAQkDSQGGAyEB+wMAAf8DAAH/A1kBwQMdASkIAAMLAQ4DTQGSAzQB+QM0AfkDTQGSAzkE
XgHiAwAB/wMAAf8DYAHjAzYBWAMFAQYEAAQBAxgBIQNKAYsDXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB
/wNbAc0DGgEkAwIBAwMTARoDRgF/A1sB3gMhAfsDEgH+AzwB+ANZAbsDOwFjA1wB2QMAAf8DYgHhAzEB
TAQCGAADWQHDA1sB5AM7AWUDBwQJAQwDOgFhA18B1QNFAfUDNwH5A1sBygMyAU8DDwEUAw0BEQNNAZID
NAH5AzQB+QNNAZIDEQEWAy0BRANaAb8DWAHvAyEB+wNdAdwDPwFuAxYBHgMEAQUDGAEhA0oBiwNdAewD
WQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQEAAQCAxMBGgM9AWcDWQHAA1gB7wMSAf4DRAH3A1wB
5wM3AfkDAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcBCQQAAwsBDgMxAU0DWAG9A0IB9gM3AfkD
YAHbA0QBeAMhAS8DTgGVAzQB+QM0AfkDTQGSAwsBDgMGAQgDIAEuA00BkgNdAdwDRgH1A1oB6QNOAZYD
KAE8AyABLQNLAY0DXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wNbAc0DGgEkCAAEAgMMARADLwFJA1IB
owNbAeQDRAH3AxIB/gMAAf8DAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcBCQgAAxABFQM/AW0D
XAHWAycB+gMkAf0DXAHWA0QBeQNUAasDIQH7AzQB+QNNAZIDCwEOBAADAwEEAxsBJgNBAXMDWgHEA00B
9ANZAe4DVQG0A0QBegNRAaIDWQHuA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wNbAc0DGgEkEAADCAEKAyMB
MwNEAXkDVwG8A18B5QMnAfoDAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcBCQgAAwMBBAMaASQD
QgF0A14B0gMhAfsDQgH2A10B0QNgAeADJAH9AzQB+QNNAZIDCwEOCAADAgEDAxIBFwM1AVUDWAG6A1gB
8QNCAfYDWwHeA2AB2wM8AfgDWQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQUAAMCAQMDDgESAyMB
MgM9AWgDXgHdAwAB/wNiAeEDMQFMBAIYAANZAcMDWwHkAzsBZQMHAQkMAAMCAQMDDwETAzQBUwNdAdED
PAH4AyUB/AMlAf0DAAH/AzQB+QNNAZIDCwEODAAEAQMJAQwDIwEzA1UBrgMmAf0DJAH9AyUB/AMSAf4D
WQHD/wARAAQCAzEBTANiAeEDAAH/A1sBzQMaASQgAAMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMD
WwHkAzsBZQMHAQkYAAMPARQDVwG5AwAB/wMAAf8DAAH/AzQB+QNNAZIDCwEOGAADRwGAA14B7QMAAf8D
AAH/AwAB/wNZAcP/ABEABAIDMQFMA2IB4QMAAf8DWwHNAxoBJBQABAIDBwEJAxYBHQM1AVUDXAHZAwAB
/wNiAeEDMQFMBAIYAANZAcMDWwHkAzsBZQMHAQkMAAQBAw0BEQM0AVMDXQHRAzcB+QMTAf4DEgH+AwAB
/wM0AfkDTQGSAwsBDgwABAEDCQELAx4BKwNTAakDJgH9AyQB/QMlAfwDEgH+A1kBw/8AEQAEAgMxAUwD
YgHhAwAB/wNbAc0DGgEkEAADBwEJAxsBJgM0AVMDTQGSA14B3QM3AfkDAAH/A2IB4QMxAUwEAhgAA1kB
wwNbAeQDOwFlAwcBCQgABAIDEAEVAzkBXgNbAc0DIQH7AyEB+wNcAecDWQHuAxIB/gM0AfkDTQGSAwsB
DggAAwIBAwMSARcDNQFVA1gBuANYAfEDQgH2A1sB3gNgAdsDPAH4A1kBw/8AEQAEAgMxAUwDYgHhAwAB
/wNbAc0DGgEkCAAEAgMMARADLgFGA00BkgNcAcgDYQHrAyQB/QMAAf8DAAH/A2IB4QMxAUwEAhgAA1kB
wwNbAeQDOwFlAwcBCQgAAwkBDAMxAU4DWAG3A1AB8wMkAf0DXgHdA04BlgNZAb4DJQH8AzQB+QNNAZID
CwEOBAADAwEEAxsBJgNBAXMDWgHEA00B9ANZAe4DVQG0A0QBegNRAaIDWQHuA1kBw/8AEQAEAgMxAUwD
YgHhAwAB/wNbAc0DGgEkBAAEAgMTARoDPQFnA1oBvwNhAesDJwH6A0MB9gNcAecDNwH5AwAB/wNiAeED
MQFMBAIYAANZAcMDWwHkAzsBZQMHAQkEAAMLAQ4DLgFHA1UBrQNYAe8DPQH4A2AB2wNEAXoDJAE1A04B
mAMmAfoDNAH5A00BkgMLAQ4DBgEIAyABLgNNAZIDXQHcA0YB9QNaAekDTgGWAygBPAMgAS0DSwGNA10B
7ANZAcP/ABEABAIDMQFMA2IB4QMAAf8DWwHNAxoBJAMCAQMDEwEaA0YBfwNbAd4DIQH7AxIB/gM8AfgD
WQG7AzsBYwNcAdkDAAH/A2IB4QMxAUwEAhgAA1kBwwNbAeQDOwFlAwcECQEMAzoBYQNdAdQDTQH0AzcB
+QNbAcoDMgFPAw8BFAMNAREDTQGSAzQB+QM0AfkDTQGSAxEBFgMtAUQDWgG/A1gB7wMmAfwDYAHgA0AB
cQMXAR8DBAEFAxgBIQNKAYsDXQHsA1kBw/8AEQAEAgMxAUwDYgHhAwAB/wNbAc0DGgEkAxYBHQNVAa8D
AAH/AwAB/wMAAf8DAAH/A1UBrwMWAR0DGgEkA1sBzQMAAf8DYgHhAzEBTAQCGAADWQHDA1sB5AM7AWUD
BwEJA0kBhgMhAfsDAAH/AwAB/wNZAcEDHQEpCAADCwEOA00BkgM0AfkDNAH5A00BkgM5BF4B4gMAAf8D
AAH/A14B7QNKAYsDGAEgCAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeEDAAH/A1wB2QM7AWMD
WQG7A0QB9wMmAfwDTQH0A1wB2QNGAX4DEwEaAwIBAwMaASQDWwHNAwAB/wNiAeEDMQFMBAIYAANZAcMD
YQHrA1ABmgNVAbEDUAHzAyEB+wNfAeUDSwGPAxsBJQMDAQQIAAMLAQ4DTQGSAzQB+QMhAfsDVgGzA0wB
jgNhAesDEgH+A1MB8ANXAbkDLgFHAwYBCAQABAEDGAEhA0oBiwNdAewDWQHD/wARAAQCAzEBTANiAeED
AAH/AzcB+QNcAecDRgH1A1cB8QNbAdMDUQGkAzgBWwMTARkEAgQAAxoBJANbAc0DAAH/A2IB4QMxAUwE
AhgAA1kBwwMmAfwDUwHwA0YB9QMlAf0DXgHXA0YBfgMaASQDAgEDDAADCwEOA00BkgM0AfkDEgH+A1AB
8wNZAe4DRAH3A2AB4wNOAZgDJwE5AwgBCgQBBAAEAQMYASEDSgGLA10B7ANZAcP/ABEABAIDMQFMA2IB
4QMAAf8DAAH/AyQB/QNiAeEDUgGjAzsBYwMhAS8DCgENBAIIAAMaASQDWwHNAwAB/wNiAeEDMQFMBAIY
AANZAcMDAAH/AwAB/wMAAf8DYAHoA0oBiwMWAR0DBAEFEAADCwEOA00BkgM0AfkDAAH/AwAB/wNCAfYD
XAHLA0QBeQMeASoDBgEHDAAEAQMYASEDSgGLA10B7ANZAcP/ABEABAIDMQFMA2IB4QMAAf8DNwH5A2AB
2wNFAXwDIQEwAwwBEAMDAQQQAAMaASMDXAHIAyUB/QNiAeEDMQFMBAIYAANZAcMDAAH/AycB/ANhAesD
TgGXAyMBMwQCFAADCwEOA00BkgM0AfkDEgH+A1cB8gNYAboDNwFaAxEBFgMCAQMUAAMXAR8DSQGGA2EB
6wNZAcP/ABEABAIDLQFFA14B0gNXAfIDXQHJAzIBTwMQARUDAgEDGAADEwEaA1ABnwNbAeQDWwHQAy0B
RQQCGAADVQG0A1oB7gNfAdoDRAF4AxgBIAMDAQQYAAMKAQ0DSQGGA2AB6ANaAekDUAGfAyQBNAMJAQsE
ARgAAwsBDgM7AWUDWwHTA1YBsv8AFQADAwEEAycBOgM/AW0DFAEbKAADDwETAzEBTgMdASkDAgEDHAAD
DgESAzEBTQMjATMDBAEFJAADBgEHAygBPAMoATwDBgEHJAAEAQMHAQkDCwEOAwIBA/8ABQADAgEDAw8B
FANJAYgDXwHlA2AB6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB
6ANgAegDYAHoA2AB6ANgAegDYAHoA1sB5ANGAX4DBQEGBAEoAAMCAQMDDQERAx8BLAMtAUYDVwG5A2AB
6ANgAegDYAHoA2AB6ANgAegDYAHoA2AB4wNZAb4DMgFPAw8BEwMCAQMwAAMTARkDRgF+A2AB6ANgAegD
WQHBAzkBXgMmATgDDwEUBAJcAAM5AV8DXgHiA1wB5wNgAegDYAHoA2AB6ANgAegDXQHcAzwBZgMGAQgD
BgEIAzwBZgNdAdwDYAHoA2AB6ANgAegDYAHoA10B3ANQAZ0DJQE2IAADDAEQAzwBZgNdAc8DJAH9AycB
+gNYAe8DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B
7QNYAe8DJwH6AyYB/ANWAbUDKwFCAwgBCiQABAIDGAEhA0ABcANaAb8DXQHfA14B7QNYAe8DXQHsA2EB
5gNfAeUDXQHqA14B7QNTAfADQwH2A10B0QNDAXcDHgErAwYBBywAAz0BaQNbAd4DAQH/AzcB+QNdAewD
WwHkA14B1wNEAXsDHgEqAwYBCFgAAz8BbAMlAf0DPAH4A1gB7wNeAe0DWQHuAycB+gNCAfYDTwGbAx4B
KwMgAS0DUAGdA0IB9gMnAfoDWQHuA14B7QNYAe8DRAH3A1cB8gM7AWUgAAMTARkDUAGcA0QB9wNDAfYD
XQHMA0sBjQNGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYAD
RgGAA0sBjwNcAdkDJAH9A1cB8QNOAZQDEgEYJAADBQEGAzEBTgNbAdADVwHyA14B4gNVAa4DSgGKA0YB
fwNDAXcDQwF2A0UBfANGAYADTwGbA14B3QNgAegDXwHaA04BlgMoATwDCQEMKAADRwGDAzwB+AMmAfwD
WwHTA1MBpgNcAdkDNwH5A2AB4ANQAZoDLQFEAwsBDlQAAz8BbAMmAfwDWwHTA0wBjgNGAYADSgGKA10B
3AMlAf0DXgHdAzoBYAM6AWIDXQHfAyQB/QNdAdwDSgGKA0YBgANMAY4DWwHTAyYB/AM/AWwgAAMUARsD
UgGlAyMB/QNbAdADPwFsAxgBIQMOARIDDgESAw4BEgMOARIDDgESAw4BEgMOARIDDgESAw4BEgMOARID
DgESAw4BEgMOARIDDgESAyABLgNXAbkDJAH9AyMB/QNSAaUDFAEbJAADBQEGAzEBTQNaAccDXAHIA0AB
bwMlATcDEwEaAw4BEgMNAREDDAEQAw4BEgMOARIDHQEoAzoBYANLAY8DWwHYA2EB5gNWAbYDMQFNAwYB
CCQAA0kBhgMhAfsDNwH5A1UBrgMqAUADPwFtA10B0QNGAfUDWQHuA1gBtwM2AVcDFgEdAwwBEAQCSAAD
PwFsAzcB+QNVAa4DIAEtAw4BEgMbASUDWQG+AwAB/wNeAe0DPwFtAz8BbQNeAe0DAAH/A1kBvgMbASUD
DgESAyABLQNVAa4DNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1YBtgMoATwDCAEKOAADFgEeA1YBswMkAf0D
IwH9A1IBpQMUARskAAQBAw8BFAMjATMDIQEwAwsBDgMDAQQEARQABAIDBwEJAx4BKgNLAYwDXQHfA0QB
9wNTAakDKAE7JAADSQGGAyEB+wM3AfkDUwGnAxYBHgMMARADKgFAA1gBugNRAfMDTgH0A2AB2wNXAbwD
QgF0AxMBGQMCAQNEAAM/AWwDNwH5A1MBpwMVARwEAAMPARQDVwG5AwAB/wNeAe0DPwFtAz8BbQNeAe0D
AAH/A1cBuQMPARQEAAMVARwDUwGnAzcB+QM/AWwgAAMUARsDUgGlAyMB/QNVAbQDJgE4AwcBCTgAAxYB
HgNWAbMDJAH9AyMB/QNSAaUDFAEbYAADFQEcA1MBpwM3AfkDIQH7A0kBhiQAA0kBhgMhAfsDNwH5A1MB
pwMVARwIAAMPARMDQwF2A1wB2QMlAf0DAAH/AwAB/wNVAa8DFgEdRAADPwFsAzcB+QNTAacDFQEcBAAD
DwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAAD
FAEbA1IBpQMjAf0DVQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB/QMjAf0DUgGlAxQBG2AAAwIBAwMeASoD
VQG0A0QB9wNSAaADGwElAwUBBhwAA0kBhgMhAfsDNwH5A1MBpwMVARwIAAQCAwkBCwMYASADRAF6A2AB
2wNBAfcDRAH3A1kBuwMqAUADDgESAwUBBgQCNAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8D
XgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0D
VQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB/QMjAf0DUgGlAxQBG2QAAw8BEwNAAW8DXQHUA1kB7wNMAZED
EgEYHAADSQGGAyEB+wM3AfkDUwGnAxUBHBAABAIDDQERAzYBVwNYAbcDXQHsA1gB8QNdAdEDRAF5AzMB
UAMbASYDBgEHMAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB
/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0DVQG0AyYBOAMHAQk4AAMWAR4D
VgGzAyQB/QMjAf0DUgGlAxQBG2QAAwIBAwMPARMDUQGeAyMB/QNSAaUDFAEbHAADSQGGAyEB+wM3AfkD
UwGnAxUBHBgAAwsBDgMtAUQDSwGPA1sBxQNiAeEDYgHhA1sBzQNMAZADKAE7AwkBDCwAAz8BbAM3AfkD
UwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacD
NwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IBpQMUARts
AANNAZMDIwH9A1IBpQMUARscAANJAYYDIQH7AzcB+QNTAacDFQEcHAADBgEIAxkBIgMvAUkDQAFxA10B
zANQAfMDWgHpA1YBtgMtAUQsAAM/AWwDNwH5A1MBpwMVARwEAAMPARQDVwG5AwAB/wNeAe0DPwFtAz8B
bQNeAe0DAAH/A1cBuQMPARQEAAMVARwDUwGnAzcB+QM/AWwgAAMUARsDUgGlAyMB/QNVAbQDJgE4AwcB
CTgAAxYBHgNWAbMDJAH9AyMB/QNSAaUDFAEbbAADTQGTAyMB/QNSAaUDFAEbHAADSQGGAyEB+wM3AfkD
UwGnAxUBHCAABAIDBAEFAwsBDgMwAUwDWQHBA0MB9gM1AfkDQQFyAwYBCCgAAz8BbAM3AfkDUwGnAxUB
HAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacDNwH5Az8B
bCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IBpQMUARtsAANNAZMD
IwH9A1IBpQMUARscAANJAYYDIQH7AzcB+QNTAacDFQEcMAADFQEcA1MBpwM3AfkDWwHTAzoBYSgAAz8B
bAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUB
HANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IB
pQMUARsQAAQBAwQBBQMLAQ4DDwETAw8BEwMPARMDDwETAw8BEwMNAREDCQEMAwMBBAQBLAADTQGTAyMB
/QNSAaUDFAEbHAADSQGGAyEB+wM3AfkDUwGnAxUBHCAABAEDAgEDAwsBDgMwAUwDWQHBA0MB9gM1AfkD
QQFyAwYBCCgAAz8BbAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8D
VwG5Aw8BFAQAAxUBHANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YB
swMkAf0DIwH9A1IBpQMUARsQAAMGAQgDJAE1Az4BawNGAX0DRgF+A0YBfgNGAX4DRgF+A0QBewM9AWkD
JAE0AwkBDCwAA00BkwMjAf0DUgGlAxQBGxwAA0kBhgMhAfsDNwH5A1MBpwMVARwcAAMGAQgDEgEXAyMB
MwM/AW4DWwHNA0MB9gNdAeoDVgG2Ay0BRCwAAz8BbAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B
7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UB
tAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IBpQMUARsQAAMQARUDRgF/A1wB2QNdAeoDYQHmA2IB
4QNgAeADXgHiA1wB5wNiAeEDUAGdAyEBMCQAAwIBAwMPARMDUQGeAyMB/QNSAaUDFAEbHAADSQGGAyEB
+wM3AfkDUwGnAxUBHBgAAwsBDgMtAUQDRgGBA1MBqQNdAd8DYAHoA18B2gNOAZYDKAE8AwkBDCwAAz8B
bAM3AfkDUwGnAxUBHAQAAw8BFANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUB
HANTAacDNwH5Az8BbCAAAxQBGwNSAaUDIwH9A1UBtAMmATgDBwEJOAADFgEeA1YBswMkAf0DIwH9A1IB
pQMUARsQAAMTARoDTgGYA0UB9QMAAf8DYAHgA1YBtgNZAb4DXgHXA0QB9wMmAfwDWgHHAysBQiQAAw8B
EwNAAW8DXQHUA1kB7wNNAZIDEgEYHAADSQGGAyEB+wM3AfkDUwGnAxUBHBAABAIDDQERAzYBVwNYAbcD
XQHqA10B7ANfAdUDSwGPAzoBYAMeASsDBgEHMAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8D
XgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0D
VQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB/QMjAf0DUgGlAxQBGxAAAxQBGwNQAZoDQgH2AwAB/wNRAaQD
JAE0A0QBeANeAd0DRAH3A1sB3gM7AWMDDgESIAADAgEDAx4BKgNVAbQDRAH3A1EBoQMbASYDBQEGHAAD
SQGGAyEB+wM3AfkDUwGnAxUBHAwABAEDEwEZA0QBegNgAdsDQQH3A0QB9wNZAbsDKwFCAxMBGQMIAQoD
AgEDNAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB/wNXAbkD
DwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0DVQG0AyYBOAMHAQk4AAMWAR4DVgGzAyQB
/QMjAf0DUgGlAxQBGxAAAxQBGwNQAZoDQgH2AwAB/wNOAZUDMQFMA2IB4QMAAf8DWwHNAxoBJCgAAxUB
HANTAacDNwH5AyEB+wNJAYYkAANJAYYDIQH7AzcB+QNTAacDFQEcDAADCwEOA00BkgM0AfkDAAH/AwAB
/wNVAa8DFgEdRAADPwFsAzcB+QNTAacDFQEcBAADDwEUA1cBuQMAAf8DXgHtAz8BbQM/AW0DXgHtAwAB
/wNXAbkDDwEUBAADFQEcA1MBpwM3AfkDPwFsIAADFAEbA1IBpQMjAf0DVgG2AygBPAMIAQo4AAMWAR4D
VgGzAyQB/QMjAf0DUgGlAxQBGxAAAxQBGwNQAZoDQgH2AwAB/wNGAfUDWQHvAycB/AMUAf4DXQHMAx0B
KQQCGAAEAgMGAQcDDwETAzIBTwNZAcADRQH1A10B0QM6AWAkAANJAYYDIQH7AzcB+QNTAacDFgEeAwwB
EAMqAUADVwG5A1oB6QNZAe8DYAHoA10BzwNGAX0DEwEaAwIBA0QAAz8BbAM3AfkDUwGnAxUBHAQAAw8B
FANXAbkDAAH/A14B7QM/AW0DPwFtA14B7QMAAf8DVwG5Aw8BFAQAAxUBHANTAacDNwH5Az8BbCAAAxQB
GwNSAaUDIwH9A1sB0AM/AWwDGAEhAw4BEgMOARIDDgESAw4BEgMOARIDDgESAw4BEgMOARIDDgESAw4B
EgMOARIDDgESAw4BEgMOARIDIAEuA1cBuQMkAf0DIwH9A1IBpQMUARsQAAMUARsDUAGaA0IB9gMAAf8D
AAH/AyYB+gNFAfUDJAH9A2AB4ANAAXEDHQEoAw4BEgMNAREDCQEMAwgBCgMLBA4BEgMcAScDOAFbA0QB
eQNaAccDYgHhA1YBtgM0AVQDDAEPJAADSQGGAyEB+wM3AfkDVQGuAyoBQAM/AW0DXQHRA0YB9QNZAe4D
WQG7A0QBeQMqAUADEQEWBAJIAAM/AWwDNwH5A1UBrgMgAS0DDgESAxsBJQNZAb4DAAH/A14B7QM/AW0D
PwFtA14B7QMAAf8DWQG+AxsBJQMOARIDIAEtA1UBrgM3AfkDPwFsIAADEwEaA1EBpAMlAfwDQgH2A10B
zANLAY0DRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YBgANGAYADRgGAA0YB
gANLAY8DXAHZAyQB/QNNAfQDTgGYAxMBGRAAAxIBGANLAYwDXgHtAwAB/wMmAf0DXAHZA1UBsQNdAd8D
RgH1A2AB4ANPAZsDRgGAA0QBegM5AV4DMwFQAz0BaANGAX4DUAGaA18B2gNbAeQDXwHaA08BmwMpAT4D
CgENKAADSQGGAyEB+wMmAfwDWwHTA1MBpgNcAdkDNwH5A2AB4ANQAZoDLQFFAxABFQMGAQcEAUwAAz8B
bAMmAfwDWwHTA0wBjgNGAYADSgGKA10B3AMkAf0DXQHfAzoBYgM6AWIDXQHfAyQB/QNdAdwDSgGKA0YB
gANMAY4DWwHTAyYB/AM/AWwgAAMSARcDSgGLA10B6gMSAf4DJwH6A1gB7wNeAe0DXgHtA14B7QNeAe0D
XgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA14B7QNeAe0DXgHtA1gB7wMnAfoDJAH9A1cBwgM0AVQD
CwEOEAADCAEKAy4BSANVAbEDXgHiA2AB2wNPAZsDLQFEA0MBdwNdAcwDYgHhA10B6gNeAe0DWgHpA1sB
0wNcAcgDXwHaA2EB6wNVAfIDNwH5A14B0gNEAXgDIQEvAwcBCSwAA0IBdQNdAeoDAQH/AzcB+QNTAfAD
XQHsA1wB2QNEAXsDHgEqAwYBCFgAAz8BbAMBAf8DNwH5A1gB7wNeAe0DWQHuAycB+gNCAfYDUAGdAyAB
LQMgAS0DUAGdA0IB9gMnAfoDWQHuA14B7QNYAe8DNwH5AxIB/gM/AWwgAAMFAQYDGgEjA00BkwNhAeYD
XgHtA0QB9gNEAfcDRAH3A0QB9wNEAfcDRAH3A0QB9wNEAfcDRAH3A0QB9wNEAfcDRAH3A0QB9wNEAfcD
RAH3A0QB9gNeAe0DXwHlA0cBgwMKAQ0EAhAABAEDCAEKAx8BLAMuAUgDLQFEAxsBJQMHAQkDDwETAyMB
MgMuAUcDVwG5A2AB6ANaAekDWgHuA1gB8QNdAewDWgHpA2AB6ANbAdADNAFTAw8BEwMCAQMwAAMWAR4D
RwGDA14B7QNYAfEDXwHVA0wBjgMrAUIDDwEUBAJcAAM6AWIDWgHpA14B7QNEAfYDRAH3A0QB9gNdAewD
XQHcAzwBZgMGAQgDBgEIAzwBZgNdAdwDXgHtA0QB9gNEAfcDRAH2A14B7QNhAeYDOgFiLAAEAQMjATMD
TgGXA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasD
TgGXAyMBMwQBTAADCQELAzkBXQNHAYIDJwE6AwQBBUgABAIDIgExAzoBYQMPARRwAAMDAQQDKAE7A04B
mANUAasDUQGeAyEBLxQAAwMBBAMlATcDUAGfA1QBqwNOAZgDKAE7AwMBBBgAAUIBTQE+BwABPgMAASgD
AAF8AwABMAMAAQEBAAEBBgABAxYAA/8BAAH8AQMB8AE/AQMB8AEPAcAIAAH8AQEB8AE/AQMB8AEHAcAI
AAH8AQABMAE/AQAB8AEDAYAIAAH8AQABEAE/AQABcAEAAYAIAAH8AgABPwEAATABAAGACAAB/AIAAT8B
AAEwAQABgAgAAfwCAAE/DAAB/AEIAQABPwEICwAB/AEMAQABPwEMAQABIAkAAfwBDwEAAT8BDAEAATAJ
AAH8AQ8BgAE/AQ4BAAE4CQAB/AEPAfABPwEPAcABPwkAAfwBDwGAAT8BDgEAATgJAAH8AQ8BAAE/AQwB
AAEwCQAB/AEMAQABPwEMAQABIAkAAfwBCAEAAT8BCAsAAfwCAAE/DAAB/AIAAT8BAAEwCgAB/AIAAT8B
AAEwAQABgAgAAfwBAAEQAT8BAAFwAQABgAgAAfwBAAEwAT8BAAHwAQMBgAgAAfwBAAHwAT8BAQHwAQcB
wAgAAfwBAwHwAT8BAwHwAQ8BwAgAAf4BHwH4AX8BDwH4AX8BwAgAAeACAAEHAf4BAAEBAf8B4AEPAv8B
4AEAAQEB8AHgAgABBwH8AgAB/wHgAQcC/wHgAQABAQHwAeACAAEHAfwCAAF/AeABAwL/AeABAAEBAfAB
4AIAAQcB/AIAAT8B4AEAAX8B/wHgAQABAQHwAeABfwH+AQcB/AEHAcABPwHgAQABPwH/AeEBAAEhAfAB
4AF/Af4BBwL/AfgBPwHgAcABPwH/AeEBAAEhAfAB4AF/Af4BBwL/AfgBDwHgAcABAwH/AeEBAAEhAfAB
4AF/Af4BBwL/AfwBDwHgAfABAQH/AeEBAAEhAfAB4AF/Af4BBwL/AfwBDwHgAfwBAAH/AeEBAAEhAfAB
4AF/Af4BBwP/AQ8B4AH+AQAB/wHhAQABIQHwAeABfwH+AQcD/wEPAeAB/wEAAX8B4QEAASEB8AHgAX8B
/gEHA/8BDwHgAf8B8AF/AeEBAAEhAfAB4AF/Af4BBwGAAQcB/wEPAeAB/wEAAX8B4QEAASEB8AHgAX8B
/gEHAYABBwH/AQ8B4AH+AQAB/wHhAQABIQHwAeABfwH+AQcBgAEHAfwBDwHgAfwBAAH/AeEBAAEhAfAB
4AF/Af4BBwGAAQcB/AEPAeAB8AEBAf8B4QEAASEB8AHgAX8B/gEHAYABBwH4AQ8C4AEDAf8B4QEAASEB
8AHgAX8B/gEHAYABHwH4AT8C4AE/Af8B4QEAASEB8AHgAX8B/gEHAYABDwHAAT8B4AEAAT8B/wHhAQAB
IQHwAeACAAEHAYACAAE/AeABAAF/Af8B4AEAAQEB8AHgAgABBwGAAgABfwHgAQAC/wHgAQABAQHwAeAC
AAEHAYACAAH/AeABBwL/AeABAAEBAfAB4AIAAQcBgAEAAQEB/wHgAQ8C/wHgAQABAQHwAfwCAAE/Af8B
+AE/Af8B8AP/AfABPgEDAfAL
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA8iMAAAJNU0Z0AUkBTAIBAQcB
AAFgAQABYAEAAR8BAAEYAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABfAMAATADAAEBAQABIAYAAV0+
AAMEAQUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/A1UB
sWQAA0wB7wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/Ay0BRbcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9cAANEAXgDAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/swAB/wMAAf8DAAH/AwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/AwAB
/zcAAf8DAAH/BwAB/wMAAf8DAAH/AwAB/wMAAf9XAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf+vAAH/AwAB/wNRAaQnAAH/AwAB/wMAAf8DAAH/MwAB/wMAAf8IAANOAZcDAAH/AwAB/wMAAf8D
AAH/Ay4BSE8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB/+AAAxUBHQMAAf8DAAH/AwAB/y8AAf8DAAH/EwAB
/wMAAf8DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf/kAAMmATgDAAH/AwAB/wMAAf8r
AAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8DAAH/QwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/6wAB/wMAAf8D
AAH/KwAB/wMAAf8cAAMzAfYDAAH/AwAB/wMAAf8DAAH/AwQBBTsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/+8AAf8DAAH/AwAB/ycAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf9LAAH/AwAB
/wMAAf/vAAH/AwAB/wMAAf8nAAH/AwAB/ygAAwcBCQMAAf8DAAH/AwAB/wMAAf8DWwHjLwAB/wMAAf8D
AAH/SwAB/wMAAf8DAAH/7AADIAEtAwAB/wMAAf8nAAH/AwAB/zMAAf8DAAH/AwAB/wMAAf8DAAH/KwAB
/wMAAf8DAAH/SwAB/wMAAf8DAAH/8wAB/wMAAf8nAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8nAAH/AwAB
/wMAAf9LAAH/AwAB/wMAAf/zAAH/AwAB/ycAAf8DAAH/PAADPwFsAwAB/wMAAf8nAAH/AwAB/wMAAf9L
AAH/AwAB/wMAAf/zAAH/AwAB/ycAAf8DAAH/OwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB/0sAAf8D
AAH/AwAB/5sAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/NAADCAEKAwAB/wMAAf8nAAH/AwAB
/zAAA10BzgMAAf8DAAH/AwAB/wMAAf8EAScAAf8DAAH/AwAB/0sAAf8DAAH/AwAB/5QAAwUBBgMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/zMAAf8DAAH/AwAB/ycAAf8DAAH/LwAB/wMAAf8D
AAH/AwAB/wMAAf8vAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8nAAH/AwAB/ycAAf8DAAH/AwAB/wMAAf8DAAH/NwAB
/wMAAf8DAAH/SwAB/wMAAf8DAAH/lAADBQEGAwAB/wMAAf8PAAH/AwAB/wMAAf8DFQEcLwAB/wMAAf8D
AAH/KwAB/wMAAf8cAAM9AWkDAAH/AwAB/wMAAf8DAAH/A0MBdjsAAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/5QAAwUBBgMAAf8DAAH/CwAB/wMAAf8DAAH/AxMBGjMAAf8DAAH/AwAB/ysAAf8DAAH/GwAB/wMAAf8D
AAH/AwAB/wMAAf9DAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf+UAAMFAQYDAAH/AwAB/wcAAf8DAAH/AwAB
/wMbASYzAAH/AwAB/wMAAf8vAAH/AwAB/xMAAf8DAAH/AwAB/wMAAf8DAAH/SwAB/wMAAf8DAAH/SwAB
/wMAAf8DAAH/lAADBQEGAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMdASgkAANQAe4DAAH/AwAB
/wMAAf8EAS8AAf8DAAH/CAADGAEhAwAB/wMAAf8DAAH/AwAB/wNcActPAAH/AwAB/wMAAf9LAAH/AwAB
/wMAAf+UAAMFAQYDAAH/AwAB/wMAAf8DAAH/A1sB4wMAAf8DAAH/AwAB/wMAAf8DUAGfFwAB/wMAAf8D
AAH/AwAB/wMAAf83AAH/AwAB/wcAAf8DAAH/AwAB/wMAAf8DAAH/VwAB/wMAAf8DAAH/AwAB/wMqAUAD
KgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUAD
AAH/AwAB/wMAAf8DAAH/mwAB/wMAAf8DAAH/Ax0BKQQAAwIBAwMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DBwEJWAAD
WQHDAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/5wAAxIBFwMAAf8UAANKAYkDAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf9DAAH/AwAB/wMAAf8DAAH/AyEB+2cAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wNbAcXIAANGAYADWgG/Ay4BSFQAA1oBv3QAA0YBgANaAb8DWgG/A1oBvwNaAb8DWgG/A1oB
vwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DLgFIpwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADPQFpAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/EwAB/wMAAf8DAAH/LwAB/wMAAf8DAAH/KAADGQEiAwAB/wMAAf8jAAH/AwAB/wMAAf8oAAM/AW0D
AAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D
AAH/KwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADAwEEAwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DAAH/AwAB/yQAA1YBtgMAAf8DAAH/AwAB
/wMAAf8kAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AwAB/wMAAf8DMgH4IwAB/wMAAf8DAAH/NwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/JwAB/wMAAf8DAAH/AwAB/wMAAf87AAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8D
AAH/AwAB/wMAAf8DAAH/IAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8gAAMmAfkDAAH/AwAB/xwAA0oB
8QMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/x8AAf8DAAH/AwAB/zcAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/ycAAf8DAAH/AwAB
/wMAAf8DAAH/AwwB/jMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wNZAbsYAANWAbUDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DUQGeGAADJgH5AwAB/wMAAf8c
AANKAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1ABnRcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB
/wMAAf8rAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8D
AAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAyYB+QMAAf8D
AAH/HAADSgHxAwAB/wMAAf8DEQEWBAEDAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/zcAAf8D
AAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswcAAf8D
AAH/AwAB/wMAAf8jAAH/AwAB/wMAAf8DAAH/BwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoBwAB
/wMAAf8DAAH/AwAB/wMAAf8QAANWAbUDAAH/AwAB/wMzAVAHAAH/AwAB/wMAAf8DAAH/AwAB/xAAAyYB
+QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DEQEWCwAB/wMAAf8DAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf83
AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wNWAbML
AAH/AwAB/wMAAf8DDAH+GwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wwAA1QBqwMAAf8DAAH/Az0B
aAgAA14B2wMAAf8DAAH/AwAB/wMAAf8MAANWAbUDAAH/AwAB/wMzAVAIAANbAeMDAAH/AwAB/wMAAf8D
AAH/DAADJgH5AwAB/wMAAf8cAANKAfEDAAH/AwAB/wMRARYMAAMzAVIDAAH/AwAB/wMAAf8DAAH/AwAB
/wcAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
/ycAAf8DAAH/A1YBsw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/DAAD
VAGrAwAB/wMAAf8DPQFoDAADJQE3AwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAzIB
TwMAAf8DAAH/AwAB/wMAAf8IAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB
/wMAAf8DAAH/AwwB/gMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB
/wMAAf8DAAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xAAAwwBDwMAAf8D
MwH2DAADVAGrAwAB/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8D
AAH/AwAB/wMAAf8EAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhgAA1UB6QMAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB
/0cAAf8DAAH/AwAB/wMMAf4DAAH/AwAB/wMAAf8DAAH/LAADVAGrAwAB/wMAAf8DPQFoGwAB/wMAAf8D
AAH/AwAB/wNdAc4DAAH/AwAB/wMzAVAbAAH/AwAB/wMAAf8DAAH/AyAB+gMAAf8DAAH/HAADSgHxAwAB
/wMAAf8DEQEWIwAB/wMAAf8DAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
/wMAAf8PAAH/AwAB/wMAAf9LAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8wAANUAasDAAH/AwAB/wM9AWgf
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DMwFQHwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/HAADSgHxAwAB
/wMAAf8DEQEWJwAB/wMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/08AAf8DAAH/AwAB/wMAAf80AANUAasDAAH/AwAB/wM9AWgjAAH/AwAB/wMAAf8D
AAH/AwAB/wMzAVAjAAH/AwAB/wMAAf8DAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFisAAf8DAAH/AwAB
/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/0sAAf8DAAH/AwAB
/wMAAf8DAAH/AwwB/jAAA1QBqwMAAf8DAAH/Az0BaB8AAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMzAVAf
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8cAANKAfEDAAH/AwAB/wMRARYkAANcAdkDAAH/AwAB/wMAAf83
AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB/wMAAf9HAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/ywAA1QBqwMAAf8DAAH/Az0BaBsAAf8DAAH/AwAB/wMAAf8DSgHxAwAB
/wMAAf8DMwFQGwAB/wMAAf8DAAH/AwAB/wMMAf4DAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFiMAAf8D
AAH/AwAB/wMAAf8DAAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8D
AAH/JwAB/wMAAf8XAAH/AwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/xcAAf8DWAG4DAADVAGrAwAB
/wMAAf8DPQFoFwAB/wMAAf8DAAH/AwAB/wQAA1YBtQMAAf8DAAH/AzMBUBcAAf8DAAH/AwAB/wMAAf8E
AAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhgAAzABSgMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YB
sw8AAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf8DDAH+DwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
PQFoEwAB/wMAAf8DAAH/AwAB/wgAA1YBtQMAAf8DAAH/AzMBUAwAAwkBDAMAAf8DAAH/AwAB/wMAAf8I
AAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFhcAAf8DAAH/AwAB/wMAAf8DAAH/AxgB/QMAAf8D
AAH/NwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/DwAB/wMAAf8DAAH/JwAB/wMAAf8D
VgGzCwAB/wMAAf8DAAH/AwAB/xsAAf8DAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8MAANUAasDAAH/AwAB
/wM9AWgIAAM6AWADAAH/AwAB/wMAAf8DAAH/DAADVgG1AwAB/wMAAf8DMwFQCAADSwGMAwAB/wMAAf8D
AAH/AwAB/wwAAyYB+QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DEQEWDAADBwEJAwAB/wMAAf8DAAH/AwAB
/wMAAf8HAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
/wMAAf8nAAH/AwAB/wNWAbMHAAH/AwAB/wMAAf8DAAH/IwAB/wMAAf8DAAH/AwAB/wcAAf8DAAH/AwAB
/wwAA1QBqwMAAf8DAAH/Az0BaAcAAf8DAAH/AwAB/wMAAf8DAAH/EAADVgG1AwAB/wMAAf8DMwFQBwAB
/wMAAf8DAAH/AwAB/wMAAf8QAAMmAfkDAAH/AwAB/xwAA0oB8QMAAf8DAAH/AxEBFgsAAf8DAAH/AwAB
/wMAAf8DAAH/A08BmQsAAf8DAAH/AwAB/zcAAf8DAAH/AwAB/w8AAf8DAAH/AwAB/wsAAf8DAAH/AwAB
/w8AAf8DAAH/AwAB/ycAAf8DAAH/A1YBswMAAf8DAAH/AwAB/wMAAf8rAAH/AwAB/wMAAf8DDAH+AwAB
/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8DPQFoAwAB/wMAAf8DAAH/AwAB/wMAAf8UAANWAbUDAAH/AwAB
/wMzAVADAAH/AwAB/wMAAf8DAAH/AwAB/xQAAyYB+QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DEQEWBwAB
/wMAAf8DAAH/AwAB/wMAAf8TAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB
/wMAAf8PAAH/AwAB/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8zAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DPwH0GAADVgG1AwAB/wMAAf8DAAH/AwAB
/wMAAf8DAAH/A1QB7BgAAyYB+QMAAf8DAAH/HAADSgHxAwAB/wMAAf8DWAHrAwAB/wMAAf8DAAH/AwAB
/wM/AfQXAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8PAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8PAAH/AwAB
/wMAAf8nAAH/AwAB/wMAAf8DAAH/AwAB/zsAAf8DAAH/AwAB/wMAAf8DAAH/DAADVAGrAwAB/wMAAf8D
AAH/AwAB/wMAAf8DQwF3HAADVgG1AwAB/wMAAf8DAAH/AwAB/wMAAf8DMAFMHAADJgH5AwAB/wMAAf8c
AANKAfEDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8fAAH/AwAB/wMAAf83AAH/AwAB/wMAAf8DKgFAAyoB
QAMqAUADAAH/AwAB/wMAAf8LAAH/AwAB/wMAAf8DKgFAAyoBQAMqAUADAAH/AwAB/wMAAf8nAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8bAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/wMAAf8MAANUAasDAAH/AwAB/wMAAf8DAAH/AwYBCCAAA1YBtgMAAf8DAAH/AwAB/wMAAf8DAgEDIAAD
JgH5AwAB/wMAAf8cAANKAfEDAAH/AwAB/wMAAf8DAAH/AwAB/yMAAf8DAAH/AwAB/zcAAf8DAAH/AwAB
/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB
/ycAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQAA0wBkAMAAf8DAAH/AwAB/wMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8DAAH/AwAB/y8AAf8DAAH/AwAB/ygAAzYBWAMAAf8DAAH/IwAB
/wMAAf8DAAH/Aw0BESQAA1UBrQMAAf8DAAH/OwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xMAAf8D
AAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8sAANaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvwNaAb8DFQEcGAAD
TwGZA1oBvwNaAb8DWgG/A1oBvwNaAb8DWgG/A1oBvxgAA04BlzQAA0sBjTAAAwwBDygAA1ABmjAAAygB
PEAAAzgBWwNaAb8DWgG/A1oBvwMwAUwYAANEAXoDWgG/A1oBvwNaAb8DIAEtHAABQgFNAT4HAAE+AwAB
KAMAAXwDAAEwAwABAQEAAQEGAAEDFgAD/wEAAf8B4AEHAf8B+AE/Av8B4AIAAXgEAAH/AcABAQH/AfgB
HwL/AcACAAF4BAAB/wGDAeAB/wH5AQcC/wHAAgABOAQAAf8BjwH4AX8B+QGBAv8BxwH/Af4BOAQAAv8B
/AE/AfkB4AL/AccB/wH+ATgEAAL/Af4BHwH5AfgBPwH/AccB/wH+ATgEAAP/AR8B+QH8AQ8B/wHHAf8B
/gE4BAAD/wGPAfkB/wEHAf8BxwH/Af4BOAQAA/8BjwH5Af8BgQH/AccB/wH+ATgEAAP/AY8B+QH/AeAB
/wHHAf8B/gE4BAAD/wHPAfkB/wH4AX8BxwH/Af4BOAQAA/8BzwH5Af8B/AF/AccB/wH+ATgEAAP/Ac8B
+QH/AfgBfwHHAf8B/gE4BAAB8AEPAf8BjwH5Af8B4AF/AccB/wH+ATgEAAHgAQcB/wGPAfkB/wHBAf8B
xwH/Af4BOAQAAeABBwH/AY8B+QH/AQcB/wHHAf8B/gE4BAAB4wGHAf8BHwH5AfwBDwH/AccB/wH+ATgE
AAHjAQ8B/wEfAfkB+AE/Af8BxwH/Af4BOAQAAeIBHwH+AT8B+QHgAv8BxwH/Af4BOAQAAeABDwH4AT8B
+QGBAv8BxwH/Af4BOAQAAeABAwHgAf8B+QEHAv8BwAIAATgEAAHwAYABAQH/AfgBDwL/AcACAAF4BAAB
8wHgAQcB/wH4AT8C/wHgAgABeAQAAf8B/gE/Af8B/gP/AfgBAAEBAfgEAAHwAQcBwAEPAR8B/AF/AeMB
/AF/AeMB/wHwAR4BAwLwAQcBwAEOAQ8B+AE/AeMB+AEfAeMB/wHgAQwBAQLwAX8B/gEOAQcB+AEfAeMB
+AEPAeMB/wHgAQwBAQLwAT8B/AEOAQEB+AEHAeMB+AEDAeMB/wHjAYwBcQLwAR8B+AEOAQAB+AEDAeMB
+AEBAeMB/wHjAYwBcQHwAfEBDwHwAY4BEAF4AUEB4wH4AWAB4wH/AeMBjAFxAfAB8QGHAeEBjgEYATgB
YAHjAfgBcAEjAf8B4wGMAXEB8AHxAsMBjgEcARgBcAFjAfgBfAEDAf8B4wGMAXEB8AHzAeEBhwGOAR8B
CAF8ASMB+AF+AQMB/wHjAYwBcQHwAf8B8AEPAf4BHwGAAX4BAwH4AX8BgwH/AeMBjAFxAfAB/wH4AR8B
/gEfAcABfwEDAfgBfwHDAf8B4wGMAXEB8AH/AfwBPwH+AR8B4AF/AYMB+AF/AeMB/wHjAYwBcQHwAf8B
+AEfAf4BHwHAAX8BAwH4AX8BwwH/AeMBjAFxAfAB/wHwAQ8B/gEfAYABfgEDAfgBfwGDAf8B4wGMAXEB
8AHzAeEBhwHOAR8BCAF8ASMB+AF+AQMB/wHjAYwBcQHwAfECwwGOAR4BGAFwAWMB+AF8AQMB/wHjAYwB
cQHwAfEBhwHhAY4BGAE4AWAB4wH4AXABIwH/AeMBjAFxAfAB8QEPAfABjgEQAXgBQQHjAfgBYAFjAf8B
4wGMAXEC8AEfAfgBDgEAAfgBAwHjAfgBQQHjAf8B4wGMAXEC8AE/AfwBDgEBAfgBBwHjAfgBAwHjAf8B
4wGMAXEC8AF/Af4BDgEDAfgBDwHjAfgBDwHjAf8B4AEMAQEC8AEHAeABDgEHAfgBHwHjAfgBHwHjAf8B
4AEMAQEC8AEHAcABDwEfAfwBfwHjAfwBPwHjAf8B8AEeAQMB8AH4AQcB4AEfAb8B/gH/AfcB/gH/AfcB
/wH4AT8BBwHwCw==
</value>
</data>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>165, 17</value>
</metadata>
<metadata name="spinePreviewFullScreenForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>307, 18</value>
</metadata>
<metadata name="wallpaperForm.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>291, 17</value>
<value>630, 18</value>
</metadata>
</root>

View File

@@ -0,0 +1,51 @@
namespace SpineViewer.Forms
{
partial class SpinePreviewFullScreenForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
SuspendLayout();
//
// SpinePreviewFullScreenForm
//
AutoScaleMode = AutoScaleMode.None;
ClientSize = new Size(512, 512);
ControlBox = false;
FormBorderStyle = FormBorderStyle.None;
MaximizeBox = false;
MinimizeBox = false;
Name = "SpinePreviewFullScreenForm";
ShowIcon = false;
ShowInTaskbar = false;
StartPosition = FormStartPosition.Manual;
TopMost = true;
ResumeLayout(false);
}
#endregion
}
}

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SpineViewer.Forms
{
[ToolboxItem(true)]
[Designer(typeof(ComponentDesigner), typeof(IDesigner))]
[DesignTimeVisible(true)]
public partial class SpinePreviewFullScreenForm: Form
{
public SpinePreviewFullScreenForm()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -61,7 +61,6 @@
toolStripMenuItem_About = new ToolStripMenuItem();
toolStripMenuItem_Experiment = new ToolStripMenuItem();
toolStripMenuItem_DesktopProjection = new ToolStripMenuItem();
toolStripMenuItem_Debug = new ToolStripMenuItem();
rtbLog = new RichTextBox();
splitContainer_MainForm = new SplitContainer();
splitContainer_Functional = new SplitContainer();
@@ -77,6 +76,7 @@
spinePreviewPanel = new SpineViewer.Controls.SpinePreviewPanel();
panel_MainForm = new Panel();
toolTip = new ToolTip(components);
toolStripMenuItem_Debug = new ToolStripMenuItem();
menuStrip.SuspendLayout();
((System.ComponentModel.ISupportInitialize)splitContainer_MainForm).BeginInit();
splitContainer_MainForm.Panel1.SuspendLayout();
@@ -274,7 +274,7 @@
//
// toolStripMenuItem_Help
//
toolStripMenuItem_Help.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_Diagnostics, toolStripSeparator3, toolStripMenuItem_About });
toolStripMenuItem_Help.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_Diagnostics, toolStripSeparator3, toolStripMenuItem_About, toolStripMenuItem_Debug });
toolStripMenuItem_Help.Name = "toolStripMenuItem_Help";
toolStripMenuItem_Help.Size = new Size(88, 28);
toolStripMenuItem_Help.Text = "帮助(&H)";
@@ -282,25 +282,25 @@
// toolStripMenuItem_Diagnostics
//
toolStripMenuItem_Diagnostics.Name = "toolStripMenuItem_Diagnostics";
toolStripMenuItem_Diagnostics.Size = new Size(208, 34);
toolStripMenuItem_Diagnostics.Size = new Size(270, 34);
toolStripMenuItem_Diagnostics.Text = "诊断信息(&D)";
toolStripMenuItem_Diagnostics.Click += toolStripMenuItem_Diagnostics_Click;
//
// toolStripSeparator3
//
toolStripSeparator3.Name = "toolStripSeparator3";
toolStripSeparator3.Size = new Size(205, 6);
toolStripSeparator3.Size = new Size(267, 6);
//
// toolStripMenuItem_About
//
toolStripMenuItem_About.Name = "toolStripMenuItem_About";
toolStripMenuItem_About.Size = new Size(208, 34);
toolStripMenuItem_About.Size = new Size(270, 34);
toolStripMenuItem_About.Text = "关于(&A)";
toolStripMenuItem_About.Click += toolStripMenuItem_About_Click;
//
// toolStripMenuItem_Experiment
//
toolStripMenuItem_Experiment.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_DesktopProjection, toolStripMenuItem_Debug });
toolStripMenuItem_Experiment.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem_DesktopProjection });
toolStripMenuItem_Experiment.Name = "toolStripMenuItem_Experiment";
toolStripMenuItem_Experiment.Size = new Size(138, 28);
toolStripMenuItem_Experiment.Text = "实验性功能(&E)";
@@ -308,18 +308,10 @@
// toolStripMenuItem_DesktopProjection
//
toolStripMenuItem_DesktopProjection.Name = "toolStripMenuItem_DesktopProjection";
toolStripMenuItem_DesktopProjection.Size = new Size(270, 34);
toolStripMenuItem_DesktopProjection.Size = new Size(182, 34);
toolStripMenuItem_DesktopProjection.Text = "桌面投影";
toolStripMenuItem_DesktopProjection.Click += toolStripMenuItem_DesktopProjection_Click;
//
// toolStripMenuItem_Debug
//
toolStripMenuItem_Debug.Name = "toolStripMenuItem_Debug";
toolStripMenuItem_Debug.Size = new Size(270, 34);
toolStripMenuItem_Debug.Text = "调试";
toolStripMenuItem_Debug.Visible = false;
toolStripMenuItem_Debug.Click += toolStripMenuItem_Debug_Click;
//
// rtbLog
//
rtbLog.BackColor = SystemColors.Window;
@@ -330,7 +322,7 @@
rtbLog.Margin = new Padding(3, 2, 3, 2);
rtbLog.Name = "rtbLog";
rtbLog.ReadOnly = true;
rtbLog.Size = new Size(1758, 150);
rtbLog.Size = new Size(1758, 154);
rtbLog.TabIndex = 0;
rtbLog.Text = "";
rtbLog.WordWrap = false;
@@ -354,7 +346,7 @@
splitContainer_MainForm.Panel2.Controls.Add(rtbLog);
splitContainer_MainForm.Panel2.Cursor = Cursors.Default;
splitContainer_MainForm.Size = new Size(1758, 1097);
splitContainer_MainForm.SplitterDistance = 939;
splitContainer_MainForm.SplitterDistance = 935;
splitContainer_MainForm.SplitterWidth = 8;
splitContainer_MainForm.TabIndex = 3;
splitContainer_MainForm.TabStop = false;
@@ -378,7 +370,7 @@
//
splitContainer_Functional.Panel2.Controls.Add(groupBox_Preview);
splitContainer_Functional.Panel2.Cursor = Cursors.Default;
splitContainer_Functional.Size = new Size(1758, 939);
splitContainer_Functional.Size = new Size(1758, 935);
splitContainer_Functional.SplitterDistance = 788;
splitContainer_Functional.SplitterWidth = 8;
splitContainer_Functional.TabIndex = 2;
@@ -402,7 +394,7 @@
//
splitContainer_Information.Panel2.Controls.Add(splitContainer_Config);
splitContainer_Information.Panel2.Cursor = Cursors.Default;
splitContainer_Information.Size = new Size(788, 939);
splitContainer_Information.Size = new Size(788, 935);
splitContainer_Information.SplitterDistance = 351;
splitContainer_Information.SplitterWidth = 8;
splitContainer_Information.TabIndex = 1;
@@ -416,7 +408,7 @@
groupBox_SkelList.Dock = DockStyle.Fill;
groupBox_SkelList.Location = new Point(0, 0);
groupBox_SkelList.Name = "groupBox_SkelList";
groupBox_SkelList.Size = new Size(351, 939);
groupBox_SkelList.Size = new Size(351, 935);
groupBox_SkelList.TabIndex = 0;
groupBox_SkelList.TabStop = false;
groupBox_SkelList.Text = "模型列表";
@@ -426,7 +418,7 @@
spineListView.Dock = DockStyle.Fill;
spineListView.Location = new Point(3, 26);
spineListView.Name = "spineListView";
spineListView.Size = new Size(345, 910);
spineListView.Size = new Size(345, 906);
spineListView.SpinePropertyGrid = spineViewPropertyGrid;
spineListView.TabIndex = 0;
//
@@ -435,7 +427,7 @@
spineViewPropertyGrid.Dock = DockStyle.Fill;
spineViewPropertyGrid.Location = new Point(3, 26);
spineViewPropertyGrid.Name = "spineViewPropertyGrid";
spineViewPropertyGrid.Size = new Size(423, 582);
spineViewPropertyGrid.Size = new Size(423, 580);
spineViewPropertyGrid.TabIndex = 0;
//
// splitContainer_Config
@@ -452,8 +444,8 @@
// splitContainer_Config.Panel2
//
splitContainer_Config.Panel2.Controls.Add(groupBox_SkelConfig);
splitContainer_Config.Size = new Size(429, 939);
splitContainer_Config.SplitterDistance = 320;
splitContainer_Config.Size = new Size(429, 935);
splitContainer_Config.SplitterDistance = 318;
splitContainer_Config.SplitterWidth = 8;
splitContainer_Config.TabIndex = 0;
//
@@ -464,7 +456,7 @@
groupBox_PreviewConfig.Location = new Point(0, 0);
groupBox_PreviewConfig.Margin = new Padding(0);
groupBox_PreviewConfig.Name = "groupBox_PreviewConfig";
groupBox_PreviewConfig.Size = new Size(429, 320);
groupBox_PreviewConfig.Size = new Size(429, 318);
groupBox_PreviewConfig.TabIndex = 1;
groupBox_PreviewConfig.TabStop = false;
groupBox_PreviewConfig.Text = "画面参数";
@@ -475,7 +467,7 @@
propertyGrid_Previewer.HelpVisible = false;
propertyGrid_Previewer.Location = new Point(3, 26);
propertyGrid_Previewer.Name = "propertyGrid_Previewer";
propertyGrid_Previewer.Size = new Size(423, 291);
propertyGrid_Previewer.Size = new Size(423, 289);
propertyGrid_Previewer.TabIndex = 1;
propertyGrid_Previewer.ToolbarVisible = false;
//
@@ -486,7 +478,7 @@
groupBox_SkelConfig.Location = new Point(0, 0);
groupBox_SkelConfig.Margin = new Padding(0);
groupBox_SkelConfig.Name = "groupBox_SkelConfig";
groupBox_SkelConfig.Size = new Size(429, 611);
groupBox_SkelConfig.Size = new Size(429, 609);
groupBox_SkelConfig.TabIndex = 0;
groupBox_SkelConfig.TabStop = false;
groupBox_SkelConfig.Text = "模型参数";
@@ -497,7 +489,7 @@
groupBox_Preview.Dock = DockStyle.Fill;
groupBox_Preview.Location = new Point(0, 0);
groupBox_Preview.Name = "groupBox_Preview";
groupBox_Preview.Size = new Size(962, 939);
groupBox_Preview.Size = new Size(962, 935);
groupBox_Preview.TabIndex = 1;
groupBox_Preview.TabStop = false;
groupBox_Preview.Text = "预览画面";
@@ -508,7 +500,7 @@
spinePreviewPanel.Location = new Point(3, 26);
spinePreviewPanel.Name = "spinePreviewPanel";
spinePreviewPanel.PropertyGrid = propertyGrid_Previewer;
spinePreviewPanel.Size = new Size(956, 910);
spinePreviewPanel.Size = new Size(956, 906);
spinePreviewPanel.SpineListView = spineListView;
spinePreviewPanel.TabIndex = 0;
//
@@ -526,6 +518,13 @@
//
toolTip.ShowAlways = true;
//
// toolStripMenuItem_Debug
//
toolStripMenuItem_Debug.Name = "toolStripMenuItem_Debug";
toolStripMenuItem_Debug.Size = new Size(270, 34);
toolStripMenuItem_Debug.Text = "调试";
toolStripMenuItem_Debug.Visible = false;
//
// SpineViewerForm
//
AutoScaleDimensions = new SizeF(144F, 144F);

View File

@@ -28,11 +28,32 @@ namespace SpineViewer
get
{
var cp = base.CreateParams;
cp.X = cp.Y = 0;
cp.ExStyle = Win32.WS_EX_LAYERED | Win32.WS_EX_TOOLWINDOW;
cp.Style = Win32.WS_POPUP;
cp.ExStyle = Win32.WS_EX_LAYERED;
return cp;
}
}
//protected override void OnHandleCreated(EventArgs e)
//{
// base.OnHandleCreated(e);
// Win32.SetLayeredWindowAttributes(Handle, 0, 255, Win32.LWA_ALPHA);
// SetWallpaper();
//}
//public void SetWallpaper()
//{
// // 设置成嵌入桌面
// var progman = Win32.FindWindow("Progman", null);
// if (progman != IntPtr.Zero)
// {
// // 确保 WorkerW 被创建
// Win32.SendMessageTimeout(progman, Win32.WM_SPAWN_WORKER, IntPtr.Zero, IntPtr.Zero, Win32.SMTO_NORMAL, 1000, out _);
// var workerW = Win32.GetWorkerW();
// if (workerW != IntPtr.Zero)
// {
// Win32.SetParent(Handle, workerW);
// }
// }
//}
}
}