Bring ping to left tab, Korean for global

This commit is contained in:
kshman 2021-06-03 20:54:27 +09:00
parent 8e281b8f4b
commit c32b82512f
11 changed files with 1183 additions and 842 deletions

98
Data/DcLang-Korean.txt Normal file
View file

@ -0,0 +1,98 @@
# 한국말 메시지
LANG=한국어
0=FFXIV dc
1=준비됐습니다
2=FFXIV 플러그인이 없어요!
3=FFXIV 플러그인을 찾았어요!
4=FFXIV 듀티 콘텐츠 시작합니다!
5=ACT 정보: {0} ({1})
6=FFXIV 플러그인 정보: {0} ({1})
7=잘못된 데이터: {0}
8=분석할 수 없어요
9=알수없는 듀티: {0}
10=알수없는 인스턴스: {0}
11=알수없는 지역: {0}
12=알수없는 페이트: {0}
13=데이터를 읽을 수가 없어요!
14=데이터 파일이 없어요! {0}
20=듀티 콘텐츠 정보: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6})
21=루렛
22=인스턴스
23=페이트
24=스커미시
25=크리티컬 인게이지먼트
26=기본
27=없음
99=듀티 콘텐츠 플러그인 {0}
101=소리 파일을 선택하세요
102=소리 파일 (*.wav)|*.wav|모든 파일 (*.*)|*.*
103=알림 테스트입니다!!
104=마우스 눌림 방지
200=설정
201=표시 언어
202=FFXIV를 보고 있지 않을때 오버레이를 감춥니다
300=듀티
301=콘텐츠
302=설정
303=패킷
304=데이터셋
305=로그 글꼴
306=오버레이 보기
307=투명도
308=소리 듣기
309=인스턴스
310=페이트
311=라인 알림
312=라인 토큰
313=텔레그램 알림
314=텔레그램 ID
315=텔레그램 토큰
316=패킷 찾기
317=설명
318=세이브더퀸 찾기
319=기능
320=현재값
321=상태
322=찾은값
323=CE 이름
324=상태
325=사람수
326=진행도
327=핑
328=핑 사용
329=속도별 색깔
330=매우 좋음
331=좋음
332=보통
333=나쁨
334=그래프 보기
335=클라이언트의 접속이 없을때 사용할 DC 선택
10001="{0}" 발생했어요!
10002=찾습니다: {0}
10003=매칭됐어요: {0}
10004=들어가요: {0}
10005={0} 발생했어요!
10006=대기 갯수: {0}
10007=시작
10008=취소
10009=적용 및 저장
10010=중부 라노시아로 가시면 값이 채워집니다. 또는 남부 보즈야 전선의 스커미시로도 알 수 있습니다.
10011=토벌전 "성도 이슈가르드 방어전"에 해제로 입장해보세요.
10012=매치
10013=인스턴스
10014=남부 보즈야 전선으로 가서 크리티컬 인게이지먼트를 기다리세요. 오른쪽 보즈야 찾기에 후보 데이터가 뜨면 맞는 데이터를 선택하세요.
10015=설명을 볼 항목을 선택하세요
10016=확인됨
10017=끝남
10018=등록중
10019=입장하는중
10020=진행중
10021=알수없어요
10022=패킷 데이터를 적용하고 덮어쓰실거예요?
10023=선택함

12
DcControl.Designer.cs generated
View file

@ -35,6 +35,7 @@ namespace DutyContent
this.tabPageConfig = new System.Windows.Forms.TabPage(); this.tabPageConfig = new System.Windows.Forms.TabPage();
this.txtMesg = new System.Windows.Forms.RichTextBox(); this.txtMesg = new System.Windows.Forms.RichTextBox();
this.btnClearMesg = new System.Windows.Forms.Button(); this.btnClearMesg = new System.Windows.Forms.Button();
this.tabPagePing = new System.Windows.Forms.TabPage();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout();
@ -65,6 +66,7 @@ namespace DutyContent
// //
this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left; this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left;
this.tabMain.Controls.Add(this.tabPageDuty); this.tabMain.Controls.Add(this.tabPageDuty);
this.tabMain.Controls.Add(this.tabPagePing);
this.tabMain.Controls.Add(this.tabPageConfig); this.tabMain.Controls.Add(this.tabPageConfig);
this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill; this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabMain.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed; this.tabMain.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
@ -120,6 +122,15 @@ namespace DutyContent
this.btnClearMesg.Text = "Clear Mesg"; this.btnClearMesg.Text = "Clear Mesg";
this.btnClearMesg.UseVisualStyleBackColor = true; this.btnClearMesg.UseVisualStyleBackColor = true;
// //
// tabPagePing
//
this.tabPagePing.Location = new System.Drawing.Point(104, 4);
this.tabPagePing.Name = "tabPagePing";
this.tabPagePing.Size = new System.Drawing.Size(684, 489);
this.tabPagePing.TabIndex = 2;
this.tabPagePing.Text = "Ping";
this.tabPagePing.UseVisualStyleBackColor = true;
//
// DcControl // DcControl
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -144,5 +155,6 @@ namespace DutyContent
private System.Windows.Forms.TabPage tabPageDuty; private System.Windows.Forms.TabPage tabPageDuty;
private System.Windows.Forms.TabPage tabPageConfig; private System.Windows.Forms.TabPage tabPageConfig;
private System.Windows.Forms.RichTextBox txtMesg; private System.Windows.Forms.RichTextBox txtMesg;
private System.Windows.Forms.TabPage tabPagePing;
} }
} }

View file

@ -55,6 +55,9 @@ namespace DutyContent
Tab.DutyForm dutyform = new Tab.DutyForm(); Tab.DutyForm dutyform = new Tab.DutyForm();
tabPageDuty.Controls.Add(dutyform.Controls[0]); tabPageDuty.Controls.Add(dutyform.Controls[0]);
Tab.PingForm pingform = new Tab.PingForm();
tabPagePing.Controls.Add(pingform.Controls[0]);
Tab.ConfigForm configform = new Tab.ConfigForm(); Tab.ConfigForm configform = new Tab.ConfigForm();
tabPageConfig.Controls.Add(configform.Controls[0]); tabPageConfig.Controls.Add(configform.Controls[0]);
} }
@ -130,6 +133,7 @@ namespace DutyContent
DcConfig.PluginEnable = false; DcConfig.PluginEnable = false;
Tab.PingForm.Self?.PluginDeinitialize();
Tab.DutyForm.Self?.PluginDeinitialize(); Tab.DutyForm.Self?.PluginDeinitialize();
Tab.ConfigForm.Self?.PluginDeinitialize(); Tab.ConfigForm.Self?.PluginDeinitialize();
DcConfig.SaveConfig(); DcConfig.SaveConfig();
@ -184,6 +188,7 @@ namespace DutyContent
// //
Tab.ConfigForm.Self?.PluginInitialize(); Tab.ConfigForm.Self?.PluginInitialize();
Tab.DutyForm.Self?.PluginInitialize(); Tab.DutyForm.Self?.PluginInitialize();
Tab.PingForm.Self?.PluginInitialize();
// //
DcConfig.PluginEnable = true; DcConfig.PluginEnable = true;
@ -314,6 +319,9 @@ namespace DutyContent
tabPageDuty.Text = MesgLog.Text(300); tabPageDuty.Text = MesgLog.Text(300);
Tab.DutyForm.Self?.UpdateUiLocale(); Tab.DutyForm.Self?.UpdateUiLocale();
tabPagePing.Text = MesgLog.Text(327);
Tab.PingForm.Self?.UpdateUiLocale();
tabPageConfig.Text = MesgLog.Text(200); tabPageConfig.Text = MesgLog.Text(200);
Tab.ConfigForm.Self?.UpdateUiLocale(); Tab.ConfigForm.Self?.UpdateUiLocale();
} }

View file

@ -95,6 +95,12 @@
<Compile Include="Overlay\DutyOvForm.Designer.cs"> <Compile Include="Overlay\DutyOvForm.Designer.cs">
<DependentUpon>DutyOvForm.cs</DependentUpon> <DependentUpon>DutyOvForm.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Tab\PingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Tab\PingForm.Designer.cs">
<DependentUpon>PingForm.cs</DependentUpon>
</Compile>
<Compile Include="ThirdParty\Converter.cs" /> <Compile Include="ThirdParty\Converter.cs" />
<Compile Include="ThirdParty\LineDb.cs" /> <Compile Include="ThirdParty\LineDb.cs" />
<Compile Include="ThirdParty\NativeMethods.cs" /> <Compile Include="ThirdParty\NativeMethods.cs" />
@ -132,6 +138,9 @@
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Tab\PingForm.resx">
<DependentUpon>PingForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="Data\DcDuty-English.json" /> <None Include="Data\DcDuty-English.json" />
<None Include="Data\DcDuty-Japanese.json" /> <None Include="Data\DcDuty-Japanese.json" />
<None Include="Data\DcDuty-Korean.json" /> <None Include="Data\DcDuty-Korean.json" />
@ -175,6 +184,9 @@
<ItemGroup> <ItemGroup>
<Resource Include="Data\ServerList.txt" /> <Resource Include="Data\ServerList.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Resource Include="Data\DcLang-Korean.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>if exist "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" copy $(TargetPath) "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" /y <PostBuildEvent>if exist "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" copy $(TargetPath) "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" /y

View file

@ -6,6 +6,9 @@ namespace DutyContent.Overlay
{ {
public partial class DutyOvForm : Form public partial class DutyOvForm : Form
{ {
private static DutyOvForm _self;
public static DutyOvForm Self => _self;
private const int BlinkTime = 300; private const int BlinkTime = 300;
private const int BlinkCount = 20; private const int BlinkCount = 20;
@ -21,6 +24,8 @@ namespace DutyContent.Overlay
// //
public DutyOvForm() public DutyOvForm()
{ {
_self = this;
InitializeComponent(); InitializeComponent();
Location = DcConfig.Duty.OverlayLocation; Location = DcConfig.Duty.OverlayLocation;

271
Tab/DutyForm.Designer.cs generated
View file

@ -59,6 +59,7 @@ namespace DutyContent.Tab
this.tabContent = new System.Windows.Forms.TabControl(); this.tabContent = new System.Windows.Forms.TabControl();
this.tabPageContent = new System.Windows.Forms.TabPage(); this.tabPageContent = new System.Windows.Forms.TabPage();
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.chkShowDebug = new System.Windows.Forms.CheckBox();
this.rdoFatePreset4 = new System.Windows.Forms.RadioButton(); this.rdoFatePreset4 = new System.Windows.Forms.RadioButton();
this.rdoFatePreset3 = new System.Windows.Forms.RadioButton(); this.rdoFatePreset3 = new System.Windows.Forms.RadioButton();
this.rdoFatePreset2 = new System.Windows.Forms.RadioButton(); this.rdoFatePreset2 = new System.Windows.Forms.RadioButton();
@ -99,23 +100,6 @@ namespace DutyContent.Tab
this.btnOverlayDimming = new System.Windows.Forms.Button(); this.btnOverlayDimming = new System.Windows.Forms.Button();
this.lblOverlayTransparent = new System.Windows.Forms.Label(); this.lblOverlayTransparent = new System.Windows.Forms.Label();
this.chkEnableOverlay = new System.Windows.Forms.CheckBox(); this.chkEnableOverlay = new System.Windows.Forms.CheckBox();
this.tabPagePing = new System.Windows.Forms.TabPage();
this.panel6 = new System.Windows.Forms.Panel();
this.cboPingDefAddr = new System.Windows.Forms.ComboBox();
this.lblPingDefAddr = new System.Windows.Forms.Label();
this.pbxPingGraph = new System.Windows.Forms.PictureBox();
this.chkPingGraph = new System.Windows.Forms.CheckBox();
this.tlpnPingColors = new System.Windows.Forms.TableLayoutPanel();
this.lblPingStat1 = new System.Windows.Forms.Label();
this.btnPingColor4 = new System.Windows.Forms.Button();
this.btnPingColor2 = new System.Windows.Forms.Button();
this.btnPingColor3 = new System.Windows.Forms.Button();
this.lblPingStat2 = new System.Windows.Forms.Label();
this.lblPingStat4 = new System.Windows.Forms.Label();
this.btnPingColor1 = new System.Windows.Forms.Button();
this.lblPingStat3 = new System.Windows.Forms.Label();
this.lblPingColors = new System.Windows.Forms.Label();
this.chkUsePing = new System.Windows.Forms.CheckBox();
this.tabPagePacket = new System.Windows.Forms.TabPage(); this.tabPagePacket = new System.Windows.Forms.TabPage();
this.panel5 = new System.Windows.Forms.Panel(); this.panel5 = new System.Windows.Forms.Panel();
this.txtPacketDescription = new System.Windows.Forms.TextBox(); this.txtPacketDescription = new System.Windows.Forms.TextBox();
@ -136,7 +120,6 @@ namespace DutyContent.Tab
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.lblPacketFinder = new System.Windows.Forms.Label(); this.lblPacketFinder = new System.Windows.Forms.Label();
this.ilTabContent = new System.Windows.Forms.ImageList(this.components); this.ilTabContent = new System.Windows.Forms.ImageList(this.components);
this.chkShowDebug = new System.Windows.Forms.CheckBox();
this.tabContent.SuspendLayout(); this.tabContent.SuspendLayout();
this.tabPageContent.SuspendLayout(); this.tabPageContent.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
@ -148,10 +131,6 @@ namespace DutyContent.Tab
this.panel3.SuspendLayout(); this.panel3.SuspendLayout();
this.panel2.SuspendLayout(); this.panel2.SuspendLayout();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
this.tabPagePing.SuspendLayout();
this.panel6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).BeginInit();
this.tlpnPingColors.SuspendLayout();
this.tabPagePacket.SuspendLayout(); this.tabPagePacket.SuspendLayout();
this.panel5.SuspendLayout(); this.panel5.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
@ -160,7 +139,6 @@ namespace DutyContent.Tab
// //
this.tabContent.Controls.Add(this.tabPageContent); this.tabContent.Controls.Add(this.tabPageContent);
this.tabContent.Controls.Add(this.tabPageSetting); this.tabContent.Controls.Add(this.tabPageSetting);
this.tabContent.Controls.Add(this.tabPagePing);
this.tabContent.Controls.Add(this.tabPagePacket); this.tabContent.Controls.Add(this.tabPagePacket);
this.tabContent.Dock = System.Windows.Forms.DockStyle.Fill; this.tabContent.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabContent.ImageList = this.ilTabContent; this.tabContent.ImageList = this.ilTabContent;
@ -204,6 +182,17 @@ namespace DutyContent.Tab
this.splitContainer1.SplitterDistance = 262; this.splitContainer1.SplitterDistance = 262;
this.splitContainer1.TabIndex = 0; this.splitContainer1.TabIndex = 0;
// //
// chkShowDebug
//
this.chkShowDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.chkShowDebug.AutoSize = true;
this.chkShowDebug.Location = new System.Drawing.Point(201, 7);
this.chkShowDebug.Name = "chkShowDebug";
this.chkShowDebug.Size = new System.Drawing.Size(58, 17);
this.chkShowDebug.TabIndex = 5;
this.chkShowDebug.Text = "Debug";
this.chkShowDebug.UseVisualStyleBackColor = true;
//
// rdoFatePreset4 // rdoFatePreset4
// //
this.rdoFatePreset4.AutoSize = true; this.rdoFatePreset4.AutoSize = true;
@ -670,208 +659,6 @@ namespace DutyContent.Tab
this.chkEnableOverlay.UseVisualStyleBackColor = true; this.chkEnableOverlay.UseVisualStyleBackColor = true;
this.chkEnableOverlay.CheckedChanged += new System.EventHandler(this.ChkEnableOverlay_CheckedChanged); this.chkEnableOverlay.CheckedChanged += new System.EventHandler(this.ChkEnableOverlay_CheckedChanged);
// //
// tabPagePing
//
this.tabPagePing.Controls.Add(this.panel6);
this.tabPagePing.ImageIndex = 3;
this.tabPagePing.Location = new System.Drawing.Point(4, 39);
this.tabPagePing.Name = "tabPagePing";
this.tabPagePing.Size = new System.Drawing.Size(792, 459);
this.tabPagePing.TabIndex = 3;
this.tabPagePing.Text = "327";
this.tabPagePing.UseVisualStyleBackColor = true;
//
// panel6
//
this.panel6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel6.Controls.Add(this.cboPingDefAddr);
this.panel6.Controls.Add(this.lblPingDefAddr);
this.panel6.Controls.Add(this.pbxPingGraph);
this.panel6.Controls.Add(this.chkPingGraph);
this.panel6.Controls.Add(this.tlpnPingColors);
this.panel6.Controls.Add(this.lblPingColors);
this.panel6.Controls.Add(this.chkUsePing);
this.panel6.Location = new System.Drawing.Point(6, 8);
this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(778, 353);
this.panel6.TabIndex = 1;
//
// cboPingDefAddr
//
this.cboPingDefAddr.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboPingDefAddr.FormattingEnabled = true;
this.cboPingDefAddr.Location = new System.Drawing.Point(535, 51);
this.cboPingDefAddr.Name = "cboPingDefAddr";
this.cboPingDefAddr.Size = new System.Drawing.Size(238, 21);
this.cboPingDefAddr.TabIndex = 15;
this.cboPingDefAddr.SelectedIndexChanged += new System.EventHandler(this.CboPingDefAddr_SelectedIndexChanged);
//
// lblPingDefAddr
//
this.lblPingDefAddr.AutoSize = true;
this.lblPingDefAddr.Location = new System.Drawing.Point(515, 35);
this.lblPingDefAddr.Name = "lblPingDefAddr";
this.lblPingDefAddr.Size = new System.Drawing.Size(25, 13);
this.lblPingDefAddr.TabIndex = 14;
this.lblPingDefAddr.Text = "335";
//
// pbxPingGraph
//
this.pbxPingGraph.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pbxPingGraph.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pbxPingGraph.Location = new System.Drawing.Point(129, 108);
this.pbxPingGraph.Name = "pbxPingGraph";
this.pbxPingGraph.Size = new System.Drawing.Size(644, 114);
this.pbxPingGraph.TabIndex = 13;
this.pbxPingGraph.TabStop = false;
//
// chkPingGraph
//
this.chkPingGraph.AutoSize = true;
this.chkPingGraph.Location = new System.Drawing.Point(26, 108);
this.chkPingGraph.Name = "chkPingGraph";
this.chkPingGraph.Size = new System.Drawing.Size(44, 17);
this.chkPingGraph.TabIndex = 12;
this.chkPingGraph.Text = "334";
this.chkPingGraph.UseVisualStyleBackColor = true;
this.chkPingGraph.CheckedChanged += new System.EventHandler(this.ChkPingGraph_CheckedChanged);
//
// tlpnPingColors
//
this.tlpnPingColors.ColumnCount = 4;
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.Controls.Add(this.lblPingStat1, 0, 0);
this.tlpnPingColors.Controls.Add(this.btnPingColor4, 3, 1);
this.tlpnPingColors.Controls.Add(this.btnPingColor2, 1, 1);
this.tlpnPingColors.Controls.Add(this.btnPingColor3, 2, 1);
this.tlpnPingColors.Controls.Add(this.lblPingStat2, 1, 0);
this.tlpnPingColors.Controls.Add(this.lblPingStat4, 3, 0);
this.tlpnPingColors.Controls.Add(this.btnPingColor1, 0, 1);
this.tlpnPingColors.Controls.Add(this.lblPingStat3, 2, 0);
this.tlpnPingColors.Location = new System.Drawing.Point(129, 35);
this.tlpnPingColors.Name = "tlpnPingColors";
this.tlpnPingColors.Padding = new System.Windows.Forms.Padding(3);
this.tlpnPingColors.RowCount = 2;
this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F));
this.tlpnPingColors.Size = new System.Drawing.Size(318, 62);
this.tlpnPingColors.TabIndex = 11;
//
// lblPingStat1
//
this.lblPingStat1.AutoSize = true;
this.lblPingStat1.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat1.Location = new System.Drawing.Point(6, 3);
this.lblPingStat1.Name = "lblPingStat1";
this.lblPingStat1.Size = new System.Drawing.Size(72, 22);
this.lblPingStat1.TabIndex = 6;
this.lblPingStat1.Text = "330";
this.lblPingStat1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnPingColor4
//
this.btnPingColor4.BackColor = System.Drawing.Color.Plum;
this.btnPingColor4.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor4.Location = new System.Drawing.Point(240, 28);
this.btnPingColor4.Name = "btnPingColor4";
this.btnPingColor4.Size = new System.Drawing.Size(72, 28);
this.btnPingColor4.TabIndex = 8;
this.btnPingColor4.UseVisualStyleBackColor = false;
this.btnPingColor4.Click += new System.EventHandler(this.BtnPingColor4_Click);
//
// btnPingColor2
//
this.btnPingColor2.BackColor = System.Drawing.Color.Aqua;
this.btnPingColor2.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor2.Location = new System.Drawing.Point(84, 28);
this.btnPingColor2.Name = "btnPingColor2";
this.btnPingColor2.Size = new System.Drawing.Size(72, 28);
this.btnPingColor2.TabIndex = 10;
this.btnPingColor2.UseVisualStyleBackColor = false;
this.btnPingColor2.Click += new System.EventHandler(this.BtnPingColor2_Click);
//
// btnPingColor3
//
this.btnPingColor3.BackColor = System.Drawing.Color.LawnGreen;
this.btnPingColor3.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor3.Location = new System.Drawing.Point(162, 28);
this.btnPingColor3.Name = "btnPingColor3";
this.btnPingColor3.Size = new System.Drawing.Size(72, 28);
this.btnPingColor3.TabIndex = 9;
this.btnPingColor3.UseVisualStyleBackColor = false;
this.btnPingColor3.Click += new System.EventHandler(this.BtnPingColor3_Click);
//
// lblPingStat2
//
this.lblPingStat2.AutoSize = true;
this.lblPingStat2.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat2.Location = new System.Drawing.Point(84, 3);
this.lblPingStat2.Name = "lblPingStat2";
this.lblPingStat2.Size = new System.Drawing.Size(72, 22);
this.lblPingStat2.TabIndex = 5;
this.lblPingStat2.Text = "331";
this.lblPingStat2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblPingStat4
//
this.lblPingStat4.AutoSize = true;
this.lblPingStat4.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat4.Location = new System.Drawing.Point(240, 3);
this.lblPingStat4.Name = "lblPingStat4";
this.lblPingStat4.Size = new System.Drawing.Size(72, 22);
this.lblPingStat4.TabIndex = 3;
this.lblPingStat4.Text = "333";
this.lblPingStat4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnPingColor1
//
this.btnPingColor1.BackColor = System.Drawing.Color.RoyalBlue;
this.btnPingColor1.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor1.Location = new System.Drawing.Point(6, 28);
this.btnPingColor1.Name = "btnPingColor1";
this.btnPingColor1.Size = new System.Drawing.Size(72, 28);
this.btnPingColor1.TabIndex = 7;
this.btnPingColor1.UseVisualStyleBackColor = false;
this.btnPingColor1.Click += new System.EventHandler(this.BtnPingColor1_Click);
//
// lblPingStat3
//
this.lblPingStat3.AutoSize = true;
this.lblPingStat3.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat3.Location = new System.Drawing.Point(162, 3);
this.lblPingStat3.Name = "lblPingStat3";
this.lblPingStat3.Size = new System.Drawing.Size(72, 22);
this.lblPingStat3.TabIndex = 4;
this.lblPingStat3.Text = "332";
this.lblPingStat3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblPingColors
//
this.lblPingColors.AutoSize = true;
this.lblPingColors.Location = new System.Drawing.Point(23, 35);
this.lblPingColors.Name = "lblPingColors";
this.lblPingColors.Size = new System.Drawing.Size(25, 13);
this.lblPingColors.TabIndex = 2;
this.lblPingColors.Text = "329";
//
// chkUsePing
//
this.chkUsePing.AutoSize = true;
this.chkUsePing.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkUsePing.Location = new System.Drawing.Point(3, 3);
this.chkUsePing.Name = "chkUsePing";
this.chkUsePing.Size = new System.Drawing.Size(58, 24);
this.chkUsePing.TabIndex = 0;
this.chkUsePing.Text = "328";
this.chkUsePing.UseVisualStyleBackColor = true;
this.chkUsePing.CheckedChanged += new System.EventHandler(this.ChkUsePing_CheckedChanged);
//
// tabPagePacket // tabPagePacket
// //
this.tabPagePacket.Controls.Add(this.panel5); this.tabPagePacket.Controls.Add(this.panel5);
@ -1075,17 +862,6 @@ namespace DutyContent.Tab
this.ilTabContent.Images.SetKeyName(2, "pix_tab_tool.png"); this.ilTabContent.Images.SetKeyName(2, "pix_tab_tool.png");
this.ilTabContent.Images.SetKeyName(3, "pix_tab_ping.png"); this.ilTabContent.Images.SetKeyName(3, "pix_tab_ping.png");
// //
// chkShowDebug
//
this.chkShowDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.chkShowDebug.AutoSize = true;
this.chkShowDebug.Location = new System.Drawing.Point(201, 7);
this.chkShowDebug.Name = "chkShowDebug";
this.chkShowDebug.Size = new System.Drawing.Size(58, 17);
this.chkShowDebug.TabIndex = 5;
this.chkShowDebug.Text = "Debug";
this.chkShowDebug.UseVisualStyleBackColor = true;
//
// DutyForm // DutyForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -1112,12 +888,6 @@ namespace DutyContent.Tab
this.panel2.PerformLayout(); this.panel2.PerformLayout();
this.panel1.ResumeLayout(false); this.panel1.ResumeLayout(false);
this.panel1.PerformLayout(); this.panel1.PerformLayout();
this.tabPagePing.ResumeLayout(false);
this.panel6.ResumeLayout(false);
this.panel6.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).EndInit();
this.tlpnPingColors.ResumeLayout(false);
this.tlpnPingColors.PerformLayout();
this.tabPagePacket.ResumeLayout(false); this.tabPagePacket.ResumeLayout(false);
this.panel5.ResumeLayout(false); this.panel5.ResumeLayout(false);
this.panel5.PerformLayout(); this.panel5.PerformLayout();
@ -1190,23 +960,6 @@ namespace DutyContent.Tab
private System.Windows.Forms.Label lblPacketDesc; private System.Windows.Forms.Label lblPacketDesc;
private System.Windows.Forms.ColumnHeader columnHeader8; private System.Windows.Forms.ColumnHeader columnHeader8;
private System.Windows.Forms.CheckBox chkOverlayClickThru; private System.Windows.Forms.CheckBox chkOverlayClickThru;
private System.Windows.Forms.TabPage tabPagePing;
private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.Label lblPingColors;
private System.Windows.Forms.CheckBox chkUsePing;
private System.Windows.Forms.Button btnPingColor2;
private System.Windows.Forms.Label lblPingStat4;
private System.Windows.Forms.Label lblPingStat2;
private System.Windows.Forms.Label lblPingStat3;
private System.Windows.Forms.Button btnPingColor4;
private System.Windows.Forms.Button btnPingColor1;
private System.Windows.Forms.Button btnPingColor3;
private System.Windows.Forms.Label lblPingStat1;
private System.Windows.Forms.TableLayoutPanel tlpnPingColors;
private System.Windows.Forms.PictureBox pbxPingGraph;
private System.Windows.Forms.CheckBox chkPingGraph;
private System.Windows.Forms.Label lblPingDefAddr;
private System.Windows.Forms.ComboBox cboPingDefAddr;
private System.Windows.Forms.CheckBox chkShowDebug; private System.Windows.Forms.CheckBox chkShowDebug;
} }
} }

View file

@ -1,5 +1,4 @@
using DutyContent.Interface; using System;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
@ -10,8 +9,6 @@ using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Text; using System.Text;
using System.IO; using System.IO;
using System.Threading;
using System.Net.NetworkInformation;
namespace DutyContent.Tab namespace DutyContent.Tab
{ {
@ -28,12 +25,6 @@ namespace DutyContent.Tab
private Overlay.DutyOvForm _overlay; private Overlay.DutyOvForm _overlay;
private System.Timers.Timer _ping_timer;
private long _ping_last;
private Color _ping_color = Color.Transparent;
private Libre.PingGrapher _ping_grpr;
private List<int> _ping_keeps = new List<int>() { 0, 0, };
public DutyForm() public DutyForm()
{ {
_self = this; _self = this;
@ -41,7 +32,6 @@ namespace DutyContent.Tab
InitializeComponent(); InitializeComponent();
_overlay = new Overlay.DutyOvForm(); _overlay = new Overlay.DutyOvForm();
_ping_grpr = new Libre.PingGrapher(pbxPingGraph);
} }
private void DutyTabForm_FormClosing(object sender, FormClosingEventArgs e) private void DutyTabForm_FormClosing(object sender, FormClosingEventArgs e)
@ -112,14 +102,6 @@ namespace DutyContent.Tab
btnTestNotify.Enabled = DcConfig.Duty.EnableNotify; btnTestNotify.Enabled = DcConfig.Duty.EnableNotify;
//
chkUsePing.Checked = DcConfig.Duty.UsePing;
btnPingColor1.BackColor = DcConfig.Duty.PingColors[0];
btnPingColor2.BackColor = DcConfig.Duty.PingColors[1];
btnPingColor3.BackColor = DcConfig.Duty.PingColors[2];
btnPingColor4.BackColor = DcConfig.Duty.PingColors[3];
chkPingGraph.Checked = DcConfig.Duty.PingGraph;
// //
switch (DcConfig.Duty.ActiveFate) switch (DcConfig.Duty.ActiveFate)
{ {
@ -129,52 +111,10 @@ namespace DutyContent.Tab
case 3: rdoFatePreset4.Checked = true; break; case 3: rdoFatePreset4.Checked = true; break;
} }
UpdateFates(); UpdateFates();
//
try
{
var svl = File.ReadAllLines(Path.Combine(DcConfig.DataPath, "ServerList.txt"));
int ssv = -1;
for (var i = 0; i < svl.Length; i++)
{
cboPingDefAddr.Items.Add(svl[i]);
if (svl[i].StartsWith(DcConfig.Duty.PingDefAddr))
ssv = i;
}
if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
ssv = -1;
cboPingDefAddr.SelectedIndex = ssv > 0 ? ssv : 0;
}
catch
{
cboPingDefAddr.Items.Clear();
cboPingDefAddr.Items.Add(MesgLog.Text(27));
cboPingDefAddr.SelectedIndex = 0;
}
//
_ping_timer = new System.Timers.Timer() { Interval = 5000 };
_ping_timer.Elapsed += (sender, e) => PingOnce();
if (DcConfig.Duty.UsePing)
{
PingOnce(false);
_ping_timer.Start();
}
} }
public void PluginDeinitialize() public void PluginDeinitialize()
{ {
if (_ping_timer != null)
{
_ping_timer.Stop();
_ping_timer = null;
}
_overlay.Hide(); _overlay.Hide();
_overlay = null; _overlay = null;
} }
@ -209,7 +149,6 @@ namespace DutyContent.Tab
tabPageContent.Text = MesgLog.Text(301); tabPageContent.Text = MesgLog.Text(301);
tabPageSetting.Text = MesgLog.Text(302); tabPageSetting.Text = MesgLog.Text(302);
tabPagePacket.Text = MesgLog.Text(303); tabPagePacket.Text = MesgLog.Text(303);
tabPagePing.Text = MesgLog.Text(327);
lblDataSet.Text = MesgLog.Text(304); lblDataSet.Text = MesgLog.Text(304);
lblLogFont.Text = MesgLog.Text(305); lblLogFont.Text = MesgLog.Text(305);
@ -245,15 +184,6 @@ namespace DutyContent.Tab
btnPacketStart.Text = MesgLog.Text(10007); btnPacketStart.Text = MesgLog.Text(10007);
btnPacketApply.Text = MesgLog.Text(10009); btnPacketApply.Text = MesgLog.Text(10009);
chkUsePing.Text = MesgLog.Text(328);
lblPingColors.Text = MesgLog.Text(329);
lblPingStat1.Text = MesgLog.Text(330);
lblPingStat2.Text = MesgLog.Text(331);
lblPingStat3.Text = MesgLog.Text(332);
lblPingStat4.Text = MesgLog.Text(333);
chkPingGraph.Text = MesgLog.Text(334);
lblPingDefAddr.Text = MesgLog.Text(335);
} }
public void PacketHandler(string pid, byte[] message) public void PacketHandler(string pid, byte[] message)
@ -406,7 +336,7 @@ namespace DutyContent.Tab
var stq = var stq =
_stq_type == DcContent.SaveTheQueenType.Bozja ? 30000 : _stq_type == DcContent.SaveTheQueenType.Bozja ? 30000 :
_stq_type == DcContent.SaveTheQueenType.Zadnor ? 30100 : _stq_type == DcContent.SaveTheQueenType.Zadnor ? 30100 :
30100; // temporary 30100; // temporary
var ce = stq + data[8]; var ce = stq + data[8];
var stat = data[10]; var stat = data[10];
@ -1209,7 +1139,12 @@ namespace DutyContent.Tab
1597, 1598, 1599, 1597, 1598, 1599,
1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619,
1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
// zadnor
1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724,
1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732,
1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742,
}; };
// //
@ -1303,7 +1238,7 @@ namespace DutyContent.Tab
} }
// critical engagement // critical engagement
if (data.Length >= 12) if (data.Length >= 12 && _stq_type != DcContent.SaveTheQueenType.No)
{ {
// 0[4] timestamp // 0[4] timestamp
// 4[2] mmss // 4[2] mmss
@ -1354,7 +1289,11 @@ namespace DutyContent.Tab
if (ok) if (ok)
{ {
var ce = DcContent.GetFate(code + 30000); var stq =
_stq_type == DcContent.SaveTheQueenType.Bozja ? 30000 :
_stq_type == DcContent.SaveTheQueenType.Zadnor ? 30100 :
30100; // temporary
var ce = DcContent.GetFate(code + stq);
var li = new ListViewItem(new string[] var li = new ListViewItem(new string[]
{ {
@ -1375,216 +1314,5 @@ namespace DutyContent.Tab
} }
} }
} }
private void ChkUsePing_CheckedChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
DcConfig.Duty.UsePing = chkUsePing.Checked;
SaveConfig();
if (chkUsePing.Checked)
{
PingOnce();
_ping_timer.Start();
}
else
{
_ping_timer.Stop();
_overlay.ResetStat();
}
}
private void PingColorWorker(int index, Button button)
{
Color color = (Color)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() =>
{
var dg = new ColorDialog()
{
AnyColor = true,
Color = DcConfig.Duty.PingColors[index],
};
return dg.ShowDialog() == DialogResult.OK ? dg.Color : DcConfig.Duty.PingColors[index];
}));
if (DcConfig.Duty.PingColors[index] != color)
{
button.BackColor = color;
DcConfig.Duty.PingColors[index] = color;
SaveConfig();
}
}
private void BtnPingColor1_Click(object sender, EventArgs e)
{
PingColorWorker(0, btnPingColor1);
}
private void BtnPingColor2_Click(object sender, EventArgs e)
{
PingColorWorker(1, btnPingColor2);
}
private void BtnPingColor3_Click(object sender, EventArgs e)
{
PingColorWorker(2, btnPingColor3);
}
private void BtnPingColor4_Click(object sender, EventArgs e)
{
PingColorWorker(3, btnPingColor4);
}
private void ChkPingGraph_CheckedChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
DcConfig.Duty.PingGraph = chkPingGraph.Checked;
SaveConfig();
}
private void CboPingDefAddr_SelectedIndexChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
var val = cboPingDefAddr.SelectedItem as string;
if (!string.IsNullOrEmpty(val))
{
var ss = val.Split(' ');
if (ss.Length > 0)
{
DcConfig.Duty.PingDefAddr = ss[0].Trim();
SaveConfig();
return;
}
}
DcConfig.Duty.PingDefAddr = string.Empty;
SaveConfig();
}
//
private void PingOnce(bool check_plugin_enable = true)
{
if (!DcConfig.Duty.UsePing)
return;
if (check_plugin_enable && !DcConfig.PluginEnable)
return;
var conns = DcConfig.Connections.CopyConnection();
long rtt = 0;
double loss = 0;
if (conns.Length > 0)
{
foreach (var row in conns)
{
var (r, l) = CalcPing(row.RemoteAddress);
if (rtt < r)
rtt = r;
if (loss < l)
loss = l;
}
}
else
{
if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
{
_overlay.ResetStat();
return;
}
var defip = ThirdParty.Converter.ToIPAddressFromIPV4(DcConfig.Duty.PingDefAddr);
if (defip == IPAddress.None || defip == IPAddress.IPv6None)
{
_overlay.ResetStat();
return;
}
var (r, l) = CalcPing(defip);
if (rtt < r)
rtt = r;
if (loss < l)
loss = l;
}
//MesgLog.L("Ping: {0}, {1}%", rtt, loss);
Color color;
if (loss > 0.0 || rtt > 150)
color = DcConfig.Duty.PingColors[3];
else if (rtt > 100)
color = DcConfig.Duty.PingColors[2];
else if (rtt > 50)
color = DcConfig.Duty.PingColors[1];
else
color = DcConfig.Duty.PingColors[0];
if (_ping_last != rtt || loss > 0.0 || _ping_color != color)
{
_ping_last = rtt;
_ping_color = color;
_overlay.SetStatPing(color, rtt, loss);
}
//
if (DcConfig.Duty.PingGraph)
{
_ping_keeps.Add((int)rtt);
if (_ping_keeps.Count > 120)
_ping_keeps.RemoveAt(0);
_ping_grpr.Enter();
_ping_grpr.DrawValues(_ping_keeps);
WorkerAct.Invoker(() => _ping_grpr.Leave());
}
}
// http://forum.codecall.net/topic/37643-c-packet-lossping-program/
private static readonly PingOptions _ping_options = new PingOptions { DontFragment = true };
private static readonly byte[] _ping_buffers = Encoding.ASCII.GetBytes("01234567890123456789012345678901");
private static readonly int _ping_timerout = 120;
//
private (long Rtt, double Loss) CalcPing(IPAddress host, int amount = 6)
{
var ps = new Ping();
int failed = 0;
long rtt = 0;
for (var i = 0; i < amount; i++)
{
PingReply pr = ps.Send(host, _ping_timerout, _ping_buffers, _ping_options);
if (pr.Status != IPStatus.Success)
failed++;
if (rtt < pr.RoundtripTime)
rtt = pr.RoundtripTime;
}
double loss = (failed / amount) * 100;
return (rtt, loss);
}
} }
} }

View file

@ -124,306 +124,306 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAG ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD+
RgAAAk1TRnQBSQFMAgEBBAEAASgBAQEoAQEBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA RQAAAk1TRnQBSQFMAgEBBAEAATABAQEwAQEBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
AwABQAMAAQEBAAEgBgABgP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A AwABQAMAAQEBAAEgBgABgP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgRZAcQDVQHqAxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/ /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgRZAcQDVQHqAxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/
AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/ AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/
AxIB/wNdAeIDVAGuAykBPwgAAwcBCgNIAYUCEgGqAf8CDQGqAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGk AxEB/wNdAeIDVAGuAykBPwgAAwcBCgNIAYUCEQGqAf8CDAGqAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGk
Af8CDAGkAf8CDAGkAf8CDAGjAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGiAf8CDAGi Af8CCwGkAf8CCwGkAf8CCwGjAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGiAf8CCwGi
Af8CDAGiAf8CDAGiAf8CDAGiAf8CDAGjAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGkAf8CDAGk Af8CCwGiAf8CCwGiAf8CCwGiAf8CCwGjAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGkAf8CCwGk
Af8CDQGqAf8CEgGqAf8DSAGFAwcBCv8ABQADTgGXAzMB/wOyAf8DzQH/A90B/wPdAf8D3QH/A90B/wPd Af8CDAGqAf8CEQGqAf8DSAGFAwcBCv8ABQADTgGXAzIB/wOyAf8DzQH/A90B/wPdAf8D3QH/A90B/wPd
Af8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPd Af8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPd
Af8D3QH/A90B/wPIAf8DogH/AyQB/wNGAYEEAANIAYUCDAGkAf8CDAGiAf8CDAGhAf8CDAGhAf8CDAGh Af8D3QH/A90B/wPIAf8DogH/AyMB/wNGAYEEAANIAYUCCwGkAf8CCwGiAf8CCwGhAf8CCwGhAf8CCwGh
Af8CDAGhAf8CDAGhAf8CCQGgAf8CCQGeAf8CCQGbAf8CCQGZAf8CCQGZAf8CCQGXAf8CCQGVAf8CCQGV Af8CCwGhAf8CCwGhAf8CCAGgAf8CCAGeAf8CCAGbAf8CCAGZAf8CCAGZAf8CCAGXAf8CCAGVAf8CCAGV
Af8CCQGVAf8CCQGVAf8CCQGXAf8CCQGZAf8CCQGZAf8CCQGbAf8CCQGeAf8CCQGgAf8CDAGhAf8CDAGh Af8CCAGVAf8CCAGVAf8CCAGXAf8CCAGZAf8CCAGZAf8CCAGbAf8CCAGeAf8CCAGgAf8CCwGhAf8CCwGh
Af8CDAGhAf8CDAGhAf8CDAGhAf8CDAGiAf8CDAGkAf8DSAGFVwABAQMCBAMEBAEGAwQBBgMDAQQDAQEC Af8CCwGhAf8CCwGhAf8CCwGhAf8CCwGiAf8CCwGkAf8DSAGFVwABAQMCBAMEBAEGAwQBBgMDAQQDAQEC
AwABAYwAAzcBWgM/Af8D2wH/A4sB/wMpAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMS AwABAYwAAzcBWgM+Af8D2wH/A4sB/wMoAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMR
Af8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AykB/wOH Af8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AygB/wOH
Af8DzQH/AysB/wMrAUICDAGkAf8CDAGiAf8CCQGdAf8CBwGYAf8CBwGXAf8CBwGXAf8CBwGXAf8CBwGX Af8DzQH/AyoB/wMrAUICCwGkAf8CCwGiAf8CCAGdAf8CBgGYAf8CBgGXAf8CBgGXAf8CBgGXAf8CBgGX
Af8CBAGRAf8CBAGPAf8CBAGMAf8CBAGKAf8CBAGKAf8CAgGIAf8CAAGGAf8CAAGGAf8CAAGGAf8CAQGG Af8CAwGRAf8CAwGPAf8CAwGMAf8CAwGKAf8CAwGKAf8CAQGIAf8CAAGGAf8CAAGGAf8CAAGGAf8CAAGG
Af8CBAGIAf8CBAGKAf8CBAGKAf8CBAGMAf8CBAGPAf8CBAGVAf8CBwGXAf8CBwGXAf8CBwGXAf8CBwGX Af8CAwGIAf8CAwGKAf8CAwGKAf8CAwGMAf8CAwGPAf8CAwGVAf8CBgGXAf8CBgGXAf8CBgGXAf8CBgGX
Af8CBwGYAf8CCQGdAf8CDAGiAf8CDAGkAf9QAAMCAQMDBgEIAw0BEgMaASQDIwEzAyEBMAMWAR4DCgEO Af8CBgGYAf8CCAGdAf8CCwGiAf8CCwGkAf9QAAMCAQMDBgEIAw0BEgMaASQDIwEzAyEBMAMWAR4DCgEO
AwQBBgMAAQGIAANZAcMDsgH/A4oB/wFPAT0BIwH/AbkBkwE1Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7 AwQBBgMAAQGIAANZAcMDsgH/A4oB/wFOATwBIgH/AbkBkwE0Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6
Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wG9 Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wG9
AZUBMwH/AaMBgAEnAf8BvQGVATMB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7 AZUBMgH/AaMBgAEmAf8BvQGVATIB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6
Af8BzgGiATsB/wHOAaIBOwH/Ac4BogE7Af8BzgGiATsB/wG5AZMBNQH/AVoBRQEmAf8DhQH/A6MB/wNU Af8BzgGiAToB/wHOAaIBOgH/Ac4BogE6Af8BzgGiAToB/wG5AZMBNAH/AVkBRAElAf8DhQH/A6MB/wNU
AasCDAGjAf8CCQGaAf8CBQGRAf8CAAGNAf8CAAGNAf8CAAGKAf8CAAGGAf8CAAGBAf8CAAFZAf8CAAFX AasCCwGjAf8CCAGaAf8CBAGRAf8CAAGNAf8CAAGNAf8CAAGKAf8CAAGGAf8CAAGBAf8CAAFYAf8CAAFW
Af8CAAFSAf8CAAFRAf8CAAFRAf8CAAFRAf8CAAFNAf8CAAFKAf8CAAFKAf8CAAFNAf8CAAFRAf8CAAFR Af8CAAFRAf8CAAFQAf8CAAFQAf8CAAFQAf8CAAFMAf8CAAFJAf8CAAFJAf8CAAFMAf8CAAFQAf8CAAFQ
Af8CAAFRAf8CAAFSAf8CAAFXAf8CAAGAAf8CAAGGAf8CAAGGAf8CAAGKAf8CAAGNAf8CAAGNAf8CBQGR Af8CAAFQAf8CAAFRAf8CAAFWAf8CAAGAAf8CAAGGAf8CAAGGAf8CAAGKAf8CAAGNAf8CAAGNAf8CBAGR
Af8CCQGaAf8CDAGjAf9MAAMCAQMDBwEKAxcBIAMwAUwBRQJGAX4BTwJRAZwBTQJOAZYDQQFyAyoBQQMS Af8CCAGaAf8CCwGjAf9MAAMCAQMDBwEKAxcBIAMwAUwBRQJGAX4BTwJRAZwBTQJOAZYDQQFyAyoBQQMS
ARkDBQEHAwABAS8AAf8DAAH/AwAB/wMAAf8DAAH/RAADQQH5A8oB/wMnAf8BuQGPATQB/wHVAaIBPAH/ ARkDBQEHAwABAS8AAf8DAAH/AwAB/wMAAf8DAAH/RAADQQH5A8oB/wMmAf8BuQGPATMB/wHVAaIBOwH/
AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGi AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGi
ATwB/wHVAaIBPAH/AcQBlQE0Af8BiQFGASAB/wEbASoBMAH/AZQBSwEfAf8B0wGhATsB/wHVAaIBPAH/ ATsB/wHVAaIBOwH/AcQBlQEzAf8BiQFFAR8B/wEaASkBLwH/AZQBSgEeAf8B0wGhAToB/wHVAaIBOwH/
AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGiATwB/wHVAaIBPAH/AdUBogE8Af8B1QGi AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGiATsB/wHVAaIBOwH/AdUBogE7Af8B1QGi
ATwB/wHAAZMBNgH/AyAB/wPFAf8DTgHwAgoBmQH/AgABiwH/AgABVwH/AgABUwH/AgABSwH/AgABSwH/ ATsB/wHAAZMBNQH/Ax8B/wPFAf8DTgHwAgkBmQH/AgABiwH/AgABVgH/AgABUgH/AgABSgH/AgABSgH/
AgABRgH/AgABQwH/AgABQgH/AgABPwH/AgABOwH/AgABOwH/AgABOgH/AgABNwH/AgABMwH/AgABMwH/ AgABRQH/AgABQgH/AgABQQH/AgABPgH/AgABOgH/AgABOgH/AgABOQH/AgABNgH/AgABMgH/AgABMgH/
AgABMwH/AgABMwH/AgABNwH/AgABOgH/AgABOwH/AgABOwH/AgABPwH/AgABQgH/AgABRQH/AgABSwH/ AgABMgH/AgABMgH/AgABNgH/AgABOQH/AgABOgH/AgABOgH/AgABPgH/AgABQQH/AgABRAH/AgABSgH/
AgABSwH/AgABSwH/AgABUwH/AgABVwH/AgABiwH/AgoBmQH/SAADAQECAwcBCQMYASIDOAFeAVMCVQGt AgABSgH/AgABSgH/AgABUgH/AgABVgH/AgABiwH/AgkBmQH/SAADAQECAwcBCQMYASIDOAFeAVMCVQGt
AV0CYQHiA20B9wNlAfQBXgJhAdoDUAGaAy0BRgMOARMDAwEELwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMS AV0CYQHiA20B9wNlAfQBXgJhAdoDUAGaAy0BRgMOARMDAwEELwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMR
Af8DwgH/AxQB/wHMAZUBOQH/AdUBmwE7Af8B1QGbATsB/wHVAZsBOwH/AdUBmwE7Af8B1QGbATsB/wHV Af8DwgH/AxMB/wHMAZUBOAH/AdUBmwE6Af8B1QGbAToB/wHVAZsBOgH/AdUBmwE6Af8B1QGbAToB/wHV
AZsBOwH/AdUBmwE7Af8B1QGbATsB/wHVAZsBOwH/Ab8BiwExAf8BkwFGAR4B/wEaASgBMQH/AQABMAGO AZsBOgH/AdUBmwE6Af8B1QGbAToB/wHVAZsBOgH/Ab8BiwEwAf8BkwFFAR0B/wEZAScBMAH/AQABLwGO
Af8BSQE2ASIB/wGVAUcBHgH/Ac8BlwE4Af8B1QGbATsB/wHVAZsBOwH/AdUBmwE7Af8B1QGbATsB/wHV Af8BSAE1ASEB/wGVAUYBHQH/Ac8BlwE3Af8B1QGbAToB/wHVAZsBOgH/AdUBmwE6Af8B1QGbAToB/wHV
AZsBOwH/AdUBmwE7Af8B1QGbATsB/wHVAZsBOwH/AcUBkAE3Af8DGgH/A8IB/wMSAf8CCAGRAf8BAgEH AZsBOgH/AdUBmwE6Af8B1QGbAToB/wHVAZsBOgH/AcUBkAE2Af8DGQH/A8IB/wMRAf8CBwGRAf8BAQEG
AYIB/wECAR4BhAH/AQgBJwGFAf8BCAEnAYAB/wEIASkBgwH/AQgBKQGDAf8BCAEpAYMB/wEIASkBWQH/ AYIB/wEBAR0BhAH/AQcBJgGFAf8BBwEmAYAB/wEHASgBgwH/AQcBKAGDAf8BBwEoAYMB/wEHASgBWAH/
AQgBKQFZAf8BCAEpAVkB/wEIASkBWQH/AQgBKQFUAf8BCAEmAVEB/wEIASYBUQH/AQgBJgFRAf8BCAEm AQcBKAFYAf8BBwEoAVgB/wEHASgBWAH/AQcBKAFTAf8BBwElAVAB/wEHASUBUAH/AQcBJQFQAf8BBwEl
AVEB/wEIASYBUQH/AQgBJgFRAf8BCAEmAVEB/wEIASYBVgH/AQgBJgFWAf8BCAEmAVYB/wEIASYBVgH/ AVAB/wEHASUBUAH/AQcBJQFQAf8BBwElAVAB/wEHASUBVQH/AQcBJQFVAf8BBwElAVUB/wEHASUBVQH/
AQgBJwGDAf8BCAEpAYMB/wEIASkBgwH/AQgBKQGDAf8BCAEpAYgB/wEEAR4BhwH/AQIBBwGDAf8CCAGR AQcBJgGDAf8BBwEoAYMB/wEHASgBgwH/AQcBKAGDAf8BBwEoAYgB/wEDAR0BhwH/AQEBBgGDAf8CBwGR
Af9HAAEBAwYBCAMWAR4DOAFdA1UBtQNkAfEB8wH4AfwB/wHtA/8B8wP/AZIBogGsAf4DXwHgA0gBhQMf Af9HAAEBAwYBCAMWAR4DOAFdA1UBtQNkAfEB8wH4AfwB/wHtA/8B8wP/AZABoAGqAf4DXwHgA0gBhQMf
ASwDBQEHLwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMSAf8DtAH/AxIB/wHOAZABOAH/AdUBlAE6Af8B1QGU ASwDBQEHLwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMRAf8DtAH/AxEB/wHOAZABNwH/AdUBlAE5Af8B1QGU
AToB/wHVAZQBOgH/AdUBlAE6Af8B1QGUAToB/wHVAZQBOgH/AdQBkwE6Af8B0AGRATgB/wG0AVgBKwH/ ATkB/wHVAZQBOQH/AdUBlAE5Af8B1QGUATkB/wHVAZQBOQH/AdQBkwE5Af8B0AGRATcB/wG0AVcBKgH/
AYoBPgEeAf8BEAEmATYB/wEAARQBUwH/AQABFAFOAf8BAAEbAVQB/wEzASwBJgH/AZIBQQEdAf8BuQGA AYoBPQEdAf8BDwElATUB/wEAARMBUgH/AQABEwFNAf8BAAEaAVMB/wEyASsBJQH/AZIBQAEcAf8BuQGA
AS0B/wHSAZIBOQH/AdUBlAE6Af8B1QGUAToB/wHVAZQBOgH/AdUBlAE6Af8B1QGUAToB/wHVAZQBOgH/ ASwB/wHSAZIBOAH/AdUBlAE5Af8B1QGUATkB/wHVAZQBOQH/AdUBlAE5Af8B1QGUATkB/wHVAZQBOQH/
AcUBiwE2Af8DGQH/A7QB/wMSAf8CAwGKAf8BBwEgAYcB/wEZAYUBqQH/ATABqwHUAf8BSQHRAd4B/wFO AcUBiwE1Af8DGAH/A7QB/wMRAf8CAgGKAf8BBgEfAYcB/wEYAYUBqQH/AS8BqwHUAf8BSAHRAd4B/wFN
AdQB4QH/AVEB1AHhAf8BUwHUAeEB/wFTAdQB4QH/AVEB1AHhAf8BTgHUAeEB/wFOAdQB4QH/AU4B0wHg AdQB4QH/AVAB1AHhAf8BUgHUAeEB/wFSAdQB4QH/AVAB1AHhAf8BTQHUAeEB/wFNAdQB4QH/AU0B0wHg
Af8BTgHRAd4B/wFOAdEB3gH/AU4B0QHeAf8BTgHRAd4B/wFOAdEB3gH/AU4B0QHeAf8BTgHRAd4B/wFO Af8BTQHRAd4B/wFNAdEB3gH/AU0B0QHeAf8BTQHRAd4B/wFNAdEB3gH/AU0B0QHeAf8BTQHRAd4B/wFN
AdEB3gH/AU4B0QHeAf8BTgHRAd4B/wFOAdEB3gH/AU4B0QHhAf8BTgHUAeEB/wFOAdQB4QH/AUkB1AHh AdEB3gH/AU0B0QHeAf8BTQHRAd4B/wFNAdEB3gH/AU0B0QHhAf8BTQHUAeEB/wFNAdQB4QH/AUgB1AHh
Af8BMQGyAdgB/wEbAYUBrwH/AQcBIAGLAf8CAwGKAf9DAAEBAwUBBwMUARsDNQFWA1QBrwFaAl0B8AHz Af8BMAGyAdgB/wEaAYUBrwH/AQYBHwGLAf8CAgGKAf9DAAEBAwUBBwMUARsDNQFWA1QBrwFaAl0B8AHz
AfgB/AH/AdQD/wHEAfwC/wHGAf4C/wHoA/8BdgGEAYgB+wFVAlYBsQMtAUUDBwEKLwAB/wMAAf8DAAH/ AfgB/AH/AdQD/wHEAfwC/wHGAf4C/wHoA/8BcwGDAYcB+wFVAlYBsQMtAUUDBwEKLwAB/wMAAf8DAAH/
AwAB/wMAAf9EAAMSAf8DpwH/AxIB/wHOAYcBNwH/AdUBiwE5Af8B1QGLATkB/wHLAYQBNQH/Ab0BVgEu AwAB/wMAAf9EAAMRAf8DpwH/AxEB/wHOAYcBNgH/AdUBiwE4Af8B1QGLATgB/wHLAYQBNAH/Ab0BVQEt
Af8BxAGAATIB/wHAAVgBMAH/AZUBPAEdAf8BjQE5AR4B/wE3ASoBJgH/AQABHgFLAf8BAAEDAUEB/wEZ Af8BxAGAATEB/wHAAVcBLwH/AZUBOwEcAf8BjQE4AR0B/wE2ASkBJQH/AQABHQFKAf8BAAECAUAB/wEY
AZEBsgH/AU4B1QHmAf8BAAE3AYkB/wEAAQkBRwH/AQABIgFCAf8BTQEwASEB/wGSATsBHQH/AbEBTwEp AZEBsgH/AU0B1QHmAf8BAAE2AYkB/wEAAQgBRgH/AQABIQFBAf8BTAEvASAB/wGSAToBHAH/AbEBTgEo
Af8BwwGAATEB/wHDAYABMQH/AboBVQEtAf8B0wGKATgB/wHVAYsBOQH/AcUBggE1Af8DGQH/A6cB/wMS Af8BwwGAATAB/wHDAYABMAH/AboBVAEsAf8B0wGKATcB/wHVAYsBOAH/AcUBggE0Af8DGAH/A6cB/wMR
Af8CAgGBAf8BCwEsAZAB/wEsAaEBwgH/AR0BVgGkAf8BEQEoAVcB/wESASgBhAH/ARMBKAGIAf8BFAEo Af8CAQGBAf8BCgErAZAB/wErAaEBwgH/ARwBVQGkAf8BEAEnAVYB/wERAScBhAH/ARIBJwGIAf8BEwEn
AYgB/wEUASgBgQH/ARMBKAGBAf8BEgEoAYEB/wESASgBVwH/ARIBKAFWAf8BEgEoAVYB/wESASgBVgH/ AYgB/wETAScBgQH/ARIBJwGBAf8BEQEnAYEB/wERAScBVgH/AREBJwFVAf8BEQEnAVUB/wERAScBVQH/
ARIBKAFWAf8BEgEoAVYB/wESASgBVgH/ARIBKAFWAf8BEgEoAVYB/wESASgBgQH/ARIBKAGBAf8BEgEo AREBJwFVAf8BEQEnAVUB/wERAScBVQH/AREBJwFVAf8BEQEnAVUB/wERAScBgQH/AREBJwGBAf8BEQEn
AYEB/wESASgBgQH/ARQBKQGIAf8BFwEsAYgB/wESASgBhAH/AREBKAFXAf8BHQFYAaQB/wEsAaEBwwH/ AYEB/wERAScBgQH/ARMBKAGIAf8BFgErAYgB/wERAScBhAH/ARABJwFWAf8BHAFXAaQB/wErAaEBwwH/
AQsBLAGRAf8CAgGBAf8/AAEBAwQBBgMSARgDMgFQA1IBqQFZAmQB7AGSAaIBrAH+AdkD/wHEAfwC/wHD AQoBKwGRAf8CAQGBAf8/AAEBAwQBBgMSARgDMgFQA1IBqQFZAmQB7AGQAaABqgH+AdkD/wHEAfwC/wHD
AfsC/wHDAfsC/wHXA/8CqAGrAf0BVwJZAb8DMgFQAwgBCy8AAf8DAAH/AwAB/wMAAf8DAAH/RAADEgH/ AfsC/wHDAfsC/wHXA/8CqAGqAf0BVwJZAb8DMgFQAwgBCy8AAf8DAAH/AwAB/wMAAf8DAAH/RAADEQH/
A5sB/wMSAf8BzgFaATUB/wHVAYMBNwH/AcsBWAEzAf8BgwExAR4B/wFDASkBIQH/AVEBLAEfAf8BSQEq A5sB/wMRAf8BzgFZATQB/wHVAYMBNgH/AcsBVwEyAf8BgwEwAR0B/wFCASgBIAH/AVABKwEeAf8BSAEp
ASAB/wEaAScBMgH/AQABIQFPAf8BAAEJAUsB/wEAASYBVQH/AUgB0AHnAf8BUwHdAfEB/wE4AacBsQH/ AR8B/wEZASYBMQH/AQABIAFOAf8BAAEIAUoB/wEAASUBVAH/AUcB0AHnAf8BUgHdAfEB/wE3AacBsQH/
AVkB4QH3Af8BLwGpAcUB/wEAAQoBQQH/AQABFQFSAf8BAAEkAUcB/wErAScBKQH/AU8BKwEfAf8BUAEr AVgB4QH3Af8BLgGpAcUB/wEAAQkBQAH/AQABFAFRAf8BAAEjAUYB/wEqASYBKAH/AU4BKgEeAf8BTwEq
AR8B/wE+ASkBJQH/AZQBNgEbAf8B0wGCATYB/wHFAVYBMwH/AxgB/wObAf8DEgH/AgIBWQH/AQwBLQGL AR4B/wE9ASgBJAH/AZQBNQEaAf8B0wGCATUB/wHFAVUBMgH/AxcB/wObAf8DEQH/AgEBWAH/AQsBLAGL
Af8BJQGcAb0B/wEDARQBRAH/AQABBwFQAf8BCAEuAZgB/wEHATEBnQH/AQcBLwGdAf8BBwEuAZwB/wEH Af8BJAGcAb0B/wECARMBQwH/AQABBgFPAf8BBwEtAZgB/wEGATABnQH/AQYBLgGdAf8BBgEtAZwB/wEG
AS4BlgH/AQYBLQGVAf8BCQErAZEB/wEAAQUBUAH/AgABRwH/AgABRwH/AgABRwH/AgABRwH/AgABRwH/ AS0BlgH/AQUBLAGVAf8BCAEqAZEB/wEAAQQBTwH/AgABRgH/AgABRgH/AgABRgH/AgABRgH/AgABRgH/
AQABAwFOAf8BCAEnAZIB/wEHASkBlAH/AQEBHwGNAf8BCwE1AZgB/wEAARgBjgH/AQsBNQGfAf8BBwEl AQABAgFNAf8BBwEmAZIB/wEGASgBlAH/AQABHgGNAf8BCgE0AZgB/wEAARcBjgH/AQoBNAGfAf8BBgEk
AZMB/wEDAQgBUAH/AgABQQH/AQMBEgFCAf8BJQGXAbQB/wEMASwBiAH/AgIBWQH/OwABAQMEAQYDEAEV AZMB/wECAQcBTwH/AgABQAH/AQIBEQFBAf8BJAGXAbQB/wELASsBiAH/AgEBWAH/OwABAQMEAQYDEAEV
AywBQwFPAlABmwFYAmIB6QGSAaIBrAH+Ad4D/wHGAf4C/wHDAfsC/wHDAfsC/wHIA/8B7AP/AXYBhQGI AywBQwFPAlABmwFYAmIB6QGQAaABqgH+Ad4D/wHGAf4C/wHDAfsC/wHDAfsC/wHIA/8B7AP/AXMBhAGH
AfsBVQJWAbEDLQFFAwcBCi8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMS AfsBVQJWAbEDLQFFAwcBCi8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMR
Af8DkwH/AxIB/wHMAVIBMwH/AdMBVQE1Af8BzgFSATMB/wGKAS4BGwH/AQABNgGEAf8BAAEuAY0B/wEA Af8DkwH/AxEB/wHMAVEBMgH/AdMBVAE0Af8BzgFRATIB/wGKAS0BGgH/AQABNQGEAf8BAAEtAY0B/wEA
ASYBiAH/AQABHAGBAf8BCgFRAZ8B/wFMAdUB5gH/AZAB7wH+Af8BLwGbAbwB/wE7AREBKAH/AZEBDQEm ASUBiAH/AQABGwGBAf8BCQFQAZ8B/wFLAdUB5gH/AZAB7wH+Af8BLgGbAbwB/wE6ARABJwH/AZEBDAEl
Af8BKgEnAT8B/wFGAcoB5gH/AZAB7QH6Af8BNgG0AcoB/wEAATcBkgH/AQABHgGBAf8BAAEnAYcB/wEA Af8BKQEmAT4B/wFFAcoB5gH/AZAB7QH6Af8BNQG0AcoB/wEAATYBkgH/AQABHQGBAf8BAAEmAYcB/wEA
ATgBlgH/ARgBKAE7Af8BkwEwARoB/wHSAVUBNQH/AcMBTgExAf8DFwH/A5MB/wMSAf8CAgFZAf8BDAEu ATcBlgH/ARcBJwE6Af8BkwEvARkB/wHSAVQBNAH/AcMBTQEwAf8DFgH/A5MB/wMRAf8CAQFYAf8BCwEt
AYsB/wElAZ0BvQH/AQMBFAFLAf8BBgEtAZUB/wFCAdYB6QH/AUMB1wHwAf8BQgHSAfAB/wFCAdEB8AH/ AYsB/wEkAZ0BvQH/AQIBEwFKAf8BBQEsAZUB/wFBAdYB6QH/AUIB1wHwAf8BQQHSAfAB/wFBAdEB8AH/
AUIB0QHuAf8BPwHNAesB/wE8AcUB5wH/AQABEQGKAf8CBAFRAf8CBAFRAf8CBAFRAf8CBAFRAf8BAwEF AUEB0QHuAf8BPgHNAesB/wE7AcUB5wH/AQABEAGKAf8CAwFQAf8CAwFQAf8CAwFQAf8CAwFQAf8BAgEE
AVIB/wEAARMBjAH/AT0BwQHiAf8BNwHEAegB/wEVAYoBzwH/AUsB4QH1Af8BAgFLAcMB/wFNAeEB9QH/ AVEB/wEAARIBjAH/ATwBwQHiAf8BNgHEAegB/wEUAYoBzwH/AUoB4QH1Af8BAQFKAcMB/wFMAeEB9QH/
ASgBogHVAf8BAAESAZIB/wEAAQEBTQH/AQMBEgFKAf8BIwGUAbQB/wEMASkBiAH/AgIBWQH/OAADBAEF AScBogHVAf8BAAERAZIB/wIAAUwB/wECAREBSQH/ASIBlAG0Af8BCwEoAYgB/wIBAVgB/zgAAwQBBQMN
Aw0BEgMoATwDSgGKAV4CYQHaAqgBqgH9AeID/wHGAf4C/wHDAfsC/wHDAfsC/wHJA/8B6QP/AqgBqgH9 ARIDKAE8A0oBigFeAmEB2gKoAakB/QHiA/8BxgH+Av8BwwH7Av8BwwH7Av8ByQP/AekD/wKoAakB/QFc
AVwCYQHcA0cBggMdASoDBQEHLwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQA AmEB3ANHAYIDHQEqAwUBBy8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMR
AxIB/wOPAf8DEgH/AckBTwEyAf8B0AFSATQB/wHQAVIBNAH/AaYBOgEiAf8BIAEkATIB/wEGAVABowH/ Af8DjwH/AxEB/wHJAU4BMQH/AdABUQEzAf8B0AFRATMB/wGmATkBIQH/AR8BIwExAf8BBQFPAaMB/wE3
ATgBqwHSAf8BkgHrAfgB/wGJAeoB9wH/ATcBogG8Af8BNwEkAT0B/wGaARgBPgH/Ab8BKwGLAf8BwQEw AasB0gH/AZIB6wH4Af8BiQHqAfcB/wE2AaIBvAH/ATYBIwE8Af8BmgEXAT0B/wG/ASoBiwH/AcEBLwGT
AZMB/wG7ASkBggH/AYIBEQEwAf8BLwFAAVoB/wFGAcMB2wH/AZMB8AH8Af8BhgHhAfMB/wElAZEBuQH/ Af8BuwEoAYIB/wGCARABLwH/AS4BPwFZAf8BRQHDAdsB/wGTAfAB/AH/AYYB4QHzAf8BJAGRAbkB/wEA
AQABSwGfAf8BTQElAR0B/wG8AUcBLAH/AdABUgE0Af8BwAFLATAB/wMXAf8DjwH/AxIB/wICAVkB/wEM AUoBnwH/AUwBJAEcAf8BvAFGASsB/wHQAVEBMwH/AcABSgEvAf8DFgH/A48B/wMRAf8CAQFYAf8BCwEt
AS4BiwH/ASUBnQG9Af8BAwEUAU8B/wEDAS8BnwH/AUkB4gH1Af8BUAHsAv8BVQHuAv8BVgHuAv8BVgHu AYsB/wEkAZ0BvQH/AQIBEwFOAf8BAgEuAZ8B/wFIAeIB9QH/AU8B7AL/AVQB7gL/AVUB7gL/AVUB7gL/
Av8BVgHuAv8BNQHAAesB/wEAAREBjwH/AgQBVgH/AgQBUwH/AgQBUQH/AgQBUgH/AQABCQGCAf8BFwFV AVUB7gL/ATQBwAHrAf8BAAEQAY8B/wIDAVUB/wIDAVIB/wIDAVAB/wIDAVEB/wEAAQgBggH/ARYBVAG+
Ab4B/wFHAdoB+AH/ARcBmAHfAf8BNgHEAfEB/wEqAbYB6gH/ASIBrAHlAf8BQgHWAfkB/wEcAZ8B4QH/ Af8BRgHaAfgB/wEWAZgB3wH/ATUBxAHxAf8BKQG2AeoB/wEhAawB5QH/AUEB1gH5Af8BGwGfAeEB/wEk
ASUBnwHTAf8BAwEeAYwB/wECARIBTQH/ASABlAG0Af8BDAEpAYgB/wICAVkB/yQAAwEBAgMDBAQEBgQI AZ8B0wH/AQIBHQGMAf8BAQERAUwB/wEfAZQBtAH/AQsBKAGIAf8CAQFYAf8kAAMBAQIDAwQEBAYECAEL
AQsDDwEUAyQBNgFGAkcBgAFYAlwB0QF2AYUBiQH7AekD/wHIA/8BwwH7Av8BwwH7Av8BzAP/AfAD/wF2 Aw8BFAMkATYBRgJHAYABWAJcAdEBcwGEAYgB+wHpA/8ByAP/AcMB+wL/AcMB+wL/AcwD/wHwA/8BcwGE
AYUBiQH7AVkCXQHXA0wBkgMrAUIDDQESAwMBBC8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/ AYgB+wFZAl0B1wNMAZIDKwFCAw0BEgMDAQQvAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIA
AgAC/wIAAv8kAAMSAf8DjwH/AxIB/wHHAU0BMgH/Ac4BUAE0Af8BzgFQATQB/wGmAToBIwH/AiABLgH/ Av8CAAL/JAADEQH/A48B/wMRAf8BxwFMATEB/wHOAU8BMwH/Ac4BTwEzAf8BpgE5ASIB/wIfAS0B/wEA
AQABQAGQAf8BHwGHAakB/wESAScBPwH/AUYBCgEhAf8BpQEZAUEB/wHCASwBjAH/AcsBOwGkAf8B0gFD AT8BkAH/AR4BhwGpAf8BEQEmAT4B/wFFAQkBIAH/AaUBGAFAAf8BwgErAYwB/wHLAToBpAH/AdIBQgGx
AbEB/wHUAUQBtAH/AdEBQQGwAf8BygE6AaIB/wG+ASoBhAH/AZIBEwE3Af8BOAEPASEB/wEKAToBWAH/ Af8B1AFDAbQB/wHRAUABsAH/AcoBOQGiAf8BvgEpAYQB/wGSARIBNgH/ATcBDgEgAf8BCQE5AVcB/wEj
ASQBigGsAf8BAAE1AYgB/wFMASUBHQH/Ab0BRgEtAf8BzgFQATQB/wG/AUoBMAH/AxcB/wOPAf8DEgH/ AYoBrAH/AQABNAGIAf8BSwEkARwB/wG9AUUBLAH/Ac4BTwEzAf8BvwFJAS8B/wMWAf8DjwH/AxEB/wIB
AgIBWQH/AQwBLQGLAf8BJQGcAbkB/wEDARQBSQH/AQMBLwGfAf8BSQHhAfUB/wFOAecC/wFPAegC/wFQ AVgB/wELASwBiwH/ASQBnAG5Af8BAgETAUgB/wECAS4BnwH/AUgB4QH1Af8BTQHnAv8BTgHoAv8BTwHo
AegC/wFSAeoC/wFWAe4C/wE1AcAB6wH/AQABEQGOAf8CBAFQAf8CBAFPAf8CBAFOAf8CBAFOAf8BAAEK Av8BUQHqAv8BVQHuAv8BNAHAAesB/wEAARABjgH/AgMBTwH/AgMBTgH/AgMBTQH/AgMBTQH/AQABCQGB
AYEB/wEtAaEB1AH/AU4B5gL/AQQBRwHBAf8BTgHmAv8BFgGPAdQB/wE7AckB8QH/ATsByQHxAf8BFgGP Af8BLAGhAdQB/wFNAeYC/wEDAUYBwQH/AU0B5gL/ARUBjwHUAf8BOgHJAfEB/wE6AckB8QH/ARUBjwHV
AdUB/wFEAdwB9QH/AQgBLQGYAf8BAwESAUgB/wEkAZQBtAH/AQwBKQGIAf8CAgFZAf8cAAMCAQMDBgEI Af8BQwHcAfUB/wEHASwBmAH/AQIBEQFHAf8BIwGUAbQB/wELASgBiAH/AgEBWAH/HAADAgEDAwYBCAMN
Aw0BEQMXASADIgEyAyoBQAMsAUMDMQFOA0cBggFZAlwBzAFrAXQBeAH6Ae0D/wHJA/8BwwH7Av8BwwH7 AREDFwEgAyIBMgMqAUADLAFDAzEBTgNHAYIBWQJcAcwBagFzAXcB+gHtA/8ByQP/AcMB+wL/AcMB+wL/
Av8BzQP/AfgD/wFcAW8BcwH4AVwCXgHOAUgCSQGHAysBQgMRARcDBAEGAwABAS8AAf8DAAH/AwAB/wMA Ac0D/wH4A/8BXAFuAXIB+AFcAl4BzgFIAkkBhwMrAUIDEQEXAwQBBgMAAQEvAAH/AwAB/wMAAf8DAAH/
Af8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMSAf8DkAH/AxIB/wHFAUsBMQH/AcwBTgEzAf8BzAFO AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JAADEQH/A5AB/wMRAf8BxQFKATAB/wHMAU0BMgH/AcwBTQEy
ATMB/wGkATcBIgH/AR0BIAEwAf8BAAE6AYkB/wEAAT8BjQH/ASkBGQEzAf8BvAEiAVcB/wHEATIBnAH/ Af8BpAE2ASEB/wEcAR8BLwH/AQABOQGJAf8BAAE+AY0B/wEoARgBMgH/AbwBIQFWAf8BxAExAZwB/wHR
AdEBQgGvAf8B3AFOAcEB/wHmAVcBzQH/AekBWgHSAf8B5gFYAc0B/wHdAU8BwQH/AdABQgGvAf8BxQEz AUEBrwH/AdwBTQHBAf8B5gFWAc0B/wHpAVkB0gH/AeYBVwHNAf8B3QFOAcEB/wHQAUEBrwH/AcUBMgGb
AZsB/wGzAR4BRgH/AQABJwFIAf8BCwFGAZAB/wEAAS8BgwH/AUsBJAEdAf8BuwFFASwB/wHMAU4BMwH/ Af8BswEdAUUB/wEAASYBRwH/AQoBRQGQAf8BAAEuAYMB/wFKASMBHAH/AbsBRAErAf8BzAFNATIB/wG9
Ab0BSAEvAf8DFwH/A5AB/wMSAf8CAgFZAf8BDAEtAYsB/wElAZsBuAH/AQMBEwFHAf8BBgEnAZIB/wEy AUcBLgH/AxYB/wOQAf8DEQH/AgEBWAH/AQsBLAGLAf8BJAGbAbgB/wECARIBRgH/AQUBJgGSAf8BMQG7
AbsB4AH/ATYBvAHmAf8BNgG/AeYB/wE9Ab8B5AH/AT0BwQHnAf8BPQHFAesB/wE4Ab8B5AH/AQABDgGE AeAB/wE1AbwB5gH/ATUBvwHmAf8BPAG/AeQB/wE8AcEB5wH/ATwBxQHrAf8BNwG/AeQB/wEAAQ0BhAH/
Af8CAwFOAf8CAgFOAf8CAAFOAf8CAAFOAf8BAAECAVEB/wEAAQsBhQH/AQABEQGNAf8BAAEMAYgB/wEA AgIBTQH/AgEBTQH/AgABTQH/AgABTQH/AQABAQFQAf8BAAEKAYUB/wEAARABjQH/AQABCwGIAf8BAAEQ
AREBjwH/AQABDQGLAf8BAAEQAZQB/wEAAREBlgH/AQEBEQGTAf8BAAERAZIB/wEAAQUBUgH/AQMBEgFH AY8B/wEAAQwBiwH/AQABDwGUAf8BAAEQAZYB/wEAARABkwH/AQABEAGSAf8BAAEEAVEB/wECAREBRgH/
Af8BJQGUAbQB/wEMASkBiAH/AgIBWQH/FwABAQMEAQUDCgEOAxoBJQMxAU0DRAF5AU8CUAGbAVMCVAGs ASQBlAG0Af8BCwEoAYgB/wIBAVgB/xcAAQEDBAEFAwoBDgMaASUDMQFNA0QBeQFPAlABmwFTAlQBrANU
A1QBrgNVAbUBWgJeAdgDbQH3AfQD/wHKA/8BwwH7Av8BxAH8Av8B0Qf/A20B9wFYAlsBxgNDAXgDJgE4 Aa4DVQG1AVoCXgHYA20B9wH0A/8BygP/AcMB+wL/AcQB/AL/AdEH/wNtAfcBWAJbAcYDQwF4AyYBOAMQ
AxABFQMEAQYDAAEBMwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wOS ARUDBAEGAwABATMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMRAf8DkgH/
Af8DEgH/AcMBSAEwAf8BygFLATIB/wHIAUoBMQH/AYwBKQEYAf8BBgEfATwB/wEBAT8BjAH/AQEBSwGd AxEB/wHDAUcBLwH/AcoBSgExAf8ByAFJATAB/wGMASgBFwH/AQUBHgE7Af8BAAE+AYwB/wEAAUoBnQH/
Af8BRgEXATMB/wHCASwBkAH/Ac0BPQGrAf8B3gFRAcQB/wHvAYcB2gH/AfsBkwHsAf8B/QGYAfQB/wH7 AUUBFgEyAf8BwgErAZAB/wHNATwBqwH/Ad4BUAHEAf8B7wGHAdoB/wH7AZMB7AH/Af0BmAH0Af8B+wGT
AZMB7AH/Ae8BhwHaAf8B3gFRAcQB/wHOAT0BrAH/Ab0BKQGEAf8BFQEpAUkB/wETAVIBnQH/AQABLgGE AewB/wHvAYcB2gH/Ad4BUAHEAf8BzgE8AawB/wG9ASgBhAH/ARQBKAFIAf8BEgFRAZ0B/wEAAS0BhAH/
Af8BOQEgASIB/wGwAT0BJwH/AcoBSwEyAf8BuwFFAS4B/wMXAf8DkgH/AxIB/wICAVkB/wEMAS0BigH/ ATgBHwEhAf8BsAE8ASYB/wHKAUoBMQH/AbsBRAEtAf8DFgH/A5IB/wMRAf8CAQFYAf8BCwEsAYoB/wEk
ASUBlwG2Af8BAwESAUcB/wEAAQMBUAH/AQABEAGPAf8BAAESAZcB/wEAARIBlwH/AQABEgGPAf8BAAES AZcBtgH/AQIBEQFGAf8BAAECAU8B/wEAAQ8BjwH/AQABEQGXAf8BAAERAZcB/wEAAREBjwH/AQABEQGP
AY8B/wEAARIBjwH/AQABDwGIAf8BAAEDAVIB/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIA Af8BAAERAY8B/wEAAQ4BiAH/AQABAgFRAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFN
AU4B/wIDAU4B/wIEAVAB/wIEAVYB/wIEAVYB/wIEAVoB/wIEAYMB/wIEAYMB/wIEAVkB/wIAAUgB/wED Af8CAgFNAf8CAwFPAf8CAwFVAf8CAwFVAf8CAwFZAf8CAwGDAf8CAwGDAf8CAwFYAf8CAAFHAf8BAgER
ARIBRwH/ASUBlAG0Af8BDAEpAYgB/wICAVkB/xMAAQEDBAEGAw8BFAMkATUBPwJAAW8DVgGzAVsCYQHh AUYB/wEkAZQBtAH/AQsBKAGIAf8CAQFYAf8TAAEBAwQBBgMPARQDJAE1AT8CQAFvA1YBswFbAmEB4QNl
A2UB9AFmAXIBdwH6AVwBbwFzAfgCWQFaAfUBVAFvAXYC+gP/Ac0D/wHDAfsC/wHEAfwC/wHUA/8B8wH4 AfQBZAFxAXYB+gFcAW4BcgH4A1kB9QFTAW4BdQL6A/8BzQP/AcMB+wL/AcQB/AL/AdQD/wHzAfgB/AH/
AfwB/wJZAVwB9QFWAlgBwQNAAXADIAEuAwsBDwMEAQUDAAEBGwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AlkBWgH1AVYCWAHBA0ABcAMgAS4DCwEPAwQBBQMAAQEbAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/ AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
AgAC/wIAAv8MAAMSAf8DlgH/AxIB/wHBAUUBMAH/AcgBSAExAf8BxAFGAS8B/wGHASYBGAH/AQABJQFP AgAC/wwAAxEB/wOWAf8DEQH/AcEBRAEvAf8ByAFHATAB/wHEAUUBLgH/AYcBJQEXAf8BAAEkAU4B/wES
Af8BEwFNAZcB/wEFAUgBlwH/AYABFgE3Af8BxgEyAZoB/wHVAUYBtwH/AeoBgAHSAf8B/AGWAfEC/wGo AUwBlwH/AQQBRwGXAf8BgAEVATYB/wHGATEBmgH/AdUBRQG3Af8B6gGAAdIB/wH8AZYB8QL/AagB/gL/
Af4C/wGvA/8BqAH+Af8B/AGWAfEB/wHqAYAB0gH/AdYBRgG3Af8BxQEwAZMB/wEsASIBPgH/AREBVAGg Aa8D/wGoAf4B/wH8AZYB8QH/AeoBgAHSAf8B1gFFAbcB/wHFAS8BkwH/ASsBIQE9Af8BEAFTAaAB/wEA
Af8BAAE6AY0B/wEXAR8BMwH/AYwBJwEXAf8BxwFIATEB/wG5AUIBLgH/AxgB/wOWAf8DEgH/AgIBWAH/ ATkBjQH/ARYBHgEyAf8BjAEmARYB/wHHAUcBMAH/AbkBQQEtAf8DFwH/A5YB/wMRAf8CAQFXAf8BCwEq
AQwBKwGFAf8BIgGVAbQB/wECARIBRwH/AgABSAH/AgQBWQH/AgQBgwH/AgQBgwH/AgQBVgH/AgQBVgH/ AYUB/wEhAZUBtAH/AQEBEQFGAf8CAAFHAf8CAwFYAf8CAwGDAf8CAwGDAf8CAwFVAf8CAwFVAf8CAwFS
AgQBUwH/AgQBTwH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgIBTgH/ Af8CAwFOAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAQFNAf8CAwFP
AgQBUAH/AgQBVgH/AgQBVgH/AgQBVgH/AgQBgwH/AgQBgwH/AgQBWQH/AgABSAH/AQMBEgFHAf8BJQGU Af8CAwFVAf8CAwFVAf8CAwFVAf8CAwGDAf8CAwGDAf8CAwFYAf8CAAFHAf8BAgERAUYB/wEkAZQBtAH/
AbQB/wEMASkBiAH/AgIBWQH/EAADAgEDAwsBDwMjATQBRAJFAXwBVwJaAcUDbQH3AfMB+AH8Af8B8QP/ AQsBKAGIAf8CAQFYAf8QAAMCAQMDCwEPAyMBNAFEAkUBfAFXAloBxQNtAfcB8wH4AfwB/wHxA/8B5wP/
AecD/wHqA/8B7wP/AeQD/wHNA/8BwwH7Av8BxgH+Av8B2gP/AfMB+AH8Af8BZAJlAfQBVgJYAbwDPQFp AeoD/wHvA/8B5AP/Ac0D/wHDAfsC/wHGAf4C/wHaA/8B8wH4AfwB/wFkAmUB9AFWAlgBvAM9AWkDHQEq
Ax0BKgMKAQ0DAwEEIwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AwoBDQMDAQQjAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/
DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8MAAMSAf8DmgH/AxIB/wG+ AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxEB/wOaAf8DEQH/Ab4BQwEu
AUQBLwH/AcUBRgEwAf8BrwE6AScB/wFGASABGwH/AQABLwGLAf8BKgGJAasB/wEDATcBWgH/AakBHgFI Af8BxQFFAS8B/wGvATkBJgH/AUUBHwEaAf8BAAEuAYsB/wEpAYkBqwH/AQIBNgFZAf8BqQEdAUcB/wHI
Af8ByAE2AaEB/wHaAUsBvAH/AfABiAHcAf8B/gGfAfoC/wG0A/8BwgP/AbQC/wH+AZ8B+gH/AfABiAHc ATUBoQH/AdoBSgG8Af8B8AGIAdwB/wH+AZ8B+gL/AbQD/wHCA/8BtAL/Af4BnwH6Af8B8AGIAdwB/wHb
Af8B2wFLAb0B/wHJATUBnQH/AVIBFwE2Af8BDQFRAZ0B/wEZAVYBogH/AQABJAFPAf8BhgElARcB/wHD AUoBvQH/AckBNAGdAf8BUQEWATUB/wEMAVABnQH/ARgBVQGiAf8BAAEjAU4B/wGGASQBFgH/AcMBRAEu
AUUBLwH/AbYBQQEtAf8DGAH/A5oB/wMSAf8CAgFXAf8BDAEpAYMB/wEkAZQBtAH/AQMBEgFHAf8CAAFI Af8BtgFAASwB/wMXAf8DmgH/AxEB/wIBAVYB/wELASgBgwH/ASMBlAG0Af8BAgERAUYB/wIAAUcB/wID
Af8CBAFZAf8CBAGDAf8CBAGDAf8CBAFWAf8CBAFWAf8CBAFRAf8CBAFOAf8CAAFOAf8CAAFOAf8CAAFO AVgB/wIDAYMB/wIDAYMB/wIDAVUB/wIDAVUB/wIDAVAB/wIDAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIA
Af8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CBAFOAf8CBAFSAf8CBAFWAf8CBAFWAf8CBAGD AU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIDAU0B/wIDAVEB/wIDAVUB/wIDAVUB/wIDAYMB/wID
Af8CBAGDAf8CBAFZAf8CAAFIAf8BAwESAUcB/wElAZQBtAH/AQwBKQGIAf8CAgFZAf8QAAMDAQQDGAEh AYMB/wIDAVgB/wIAAUcB/wECAREBRgH/ASQBlAG0Af8BCwEoAYgB/wIBAVgB/xAAAwMBBAMYASEDPQFp
Az0BaQFXAlkBvwFuAXQBeAH6AfED/wHOA/8BxAH8Av8BwwH7Av8BwwH7Av8BwwH7Av8BwwH7Av8BwwH7 AVcCWQG/AW0BcwF3AfoB8QP/Ac4D/wHEAfwC/wHDAfsC/wHDAfsC/wHDAfsC/wHDAfsC/wHDAfsC/wHG
Av8BxgH+Av8B3gP/AZIBogGsAf4BTgJdAfABVQJXAbcDOwFjAxoBJQMJAQwDAwEEJwAB/wMAAf8DAAH/ Af4C/wHeA/8BkAGgAaoB/gFOAl0B8AFVAlcBtwM7AWMDGgElAwkBDAMDAQQnAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/ AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/
AgAC/wIAAv8CAAL/AgAC/wIAAv8MAAMSAf8DnwH/AxIB/wG7AUEBLgH/AcABQgEuAf8BhgEkARYB/wEJ AgAC/wIAAv8CAAL/AgAC/wwAAxEB/wOfAf8DEQH/AbsBQAEtAf8BwAFBAS0B/wGGASMBFQH/AQgBHQE2
AR4BNwH/AQABPQGUAf8BMQGVAbkB/wEhASgBQwH/AbgBIQFVAf8BxwE2AaAB/wHZAUoBuwH/Ae8BhQHa Af8BAAE8AZQB/wEwAZUBuQH/ASABJwFCAf8BuAEgAVQB/wHHATUBoAH/AdkBSQG7Af8B7wGFAdoB/wH+
Af8B/gGdAfoC/wGxA/8BvAP/AbEC/wH+AZ0B+gH/Ae8BhQHaAf8B2QFKAbwB/wHHATUBnwH/AaQBGwFE AZ0B+gL/AbED/wG8A/8BsQL/Af4BnQH6Af8B7wGFAdoB/wHZAUkBvAH/AccBNAGfAf8BpAEaAUMB/wEL
Af8BDAFBAYkB/wE3AZcBuAH/AQABLQGKAf8BRQEfARwB/wGtATgBJgH/AbMBPgEsAf8DGAH/A58B/wMS AUABiQH/ATYBlwG4Af8BAAEsAYoB/wFEAR4BGwH/Aa0BNwElAf8BswE9ASsB/wMXAf8DnwH/AxEB/wIB
Af8CAgFXAf8BDAEpAYMB/wElAZQBtAH/AQMBEgFHAf8BAAEPAVkB/wELATkBrAH/AQwBPgG2Af8BCgE8 AVYB/wELASgBgwH/ASQBlAG0Af8BAgERAUYB/wEAAQ4BWAH/AQoBOAGsAf8BCwE9AbYB/wEJATsBsAH/
AbAB/wEEASsBogH/AQABFQGOAf8BAQEIAVkB/wIEAVAB/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIA AQMBKgGiAf8BAAEUAY4B/wEAAQcBWAH/AgMBTwH/AgABTQH/AgABTQH/AgABTQH/AgABTQH/AgABTQH/
AU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIEAU4B/wIEAVEB/wIEAVYB/wIEAVYB/wIEAYMB/wIEAYMB/wIE AgABTQH/AgABTQH/AgABTQH/AgMBTQH/AgMBUAH/AgMBVQH/AgMBVQH/AgMBgwH/AgMBgwH/AgMBWAH/
AVkB/wIAAUgB/wEDARIBRwH/ASQBlAG0Af8BDAEpAYgB/wICAVkB/xAAAwQBBgMjATMBTQJOAZUDZQH0 AgABRwH/AQIBEQFGAf8BIwGUAbQB/wELASgBiAH/AgEBWAH/EAADBAEGAyMBMwFNAk4BlQNlAfQE/wHa
BP8B2gP/AdkD/wHgA/8B3QP/Ac8D/wHFAf0C/wHDAfsC/wHDAfsC/wHTA/8BkgGiAawB/gFOAl0B8AFV A/8B2QP/AeAD/wHdA/8BzwP/AcUB/QL/AcMB+wL/AcMB+wL/AdMD/wGQAaABqgH+AU4CXQHwAVUCVwG3
AlcBtwM6AWADGAEiAwgBCwMCAQMrAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AzoBYAMYASIDCAELAwIBAysAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxIB/wOk AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/DAADEQH/A6QB/wMR
Af8DEgH/AbkBPgEsAf8BoAEwASAB/wFAARwBGgH/AQABHgFWAf8BIAFVAaIB/wEIAUYBkgH/AU4BDgEf Af8BuQE9ASsB/wGgAS8BHwH/AT8BGwEZAf8BAAEdAVUB/wEfAVQBogH/AQcBRQGSAf8BTQENAR4B/wG3
Af8BtwEhAVgB/wHCATIBmwH/AdMBRAGzAf8B5gFZAc8B/wH6AZEB6wL/AaAB/AL/AagB/gL/AaAB/AH/ ASABVwH/AcIBMQGbAf8B0wFDAbMB/wHmAVgBzwH/AfoBkQHrAv8BoAH8Av8BqAH+Av8BoAH8Af8B+gGR
AfoBkQHrAf8B5gFZAc8B/wHTAUQBtAH/AcMBMQGaAf8BtgEfAUwB/wEiARoBLgH/ARwBVwGkAf8BAAE7 AesB/wHmAVgBzwH/AdMBQwG0Af8BwwEwAZoB/wG2AR4BSwH/ASEBGQEtAf8BGwFWAaQB/wEAAToBkQH/
AZEB/wEEARYBMgH/AYQBIgEUAf8BqQE3AScB/wMYAf8DpAH/AxIB/wICAVgB/wEMASkBhQH/ASUBlAG0 AQMBFQExAf8BhAEhARMB/wGpATYBJgH/AxcB/wOkAf8DEQH/AgEBVwH/AQsBKAGFAf8BJAGUAbQB/wEC
Af8BAwESAUcB/wEKAS8BkgH/AUkB5AH1Af8BTgHpAv8BRwHgAfgB/wEqAbEB3wH/ARIBRwG1Af8BBAEW AREBRgH/AQkBLgGSAf8BSAHkAfUB/wFNAekC/wFGAeAB+AH/ASkBsQHfAf8BEQFGAbUB/wEDARUBigH/
AYoB/wEEAQYBUAH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgABTgH/AgIBTgH/ AQMBBQFPAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAQFNAf8CAwFO
AgQBTwH/AgQBUwH/AgQBWAH/AQEBCQGEAf8BAAEOAY0B/wEAAQwBjAH/AQMBBwGDAf8CAAFJAf8BAgES Af8CAwFSAf8CAwFXAf8BAAEIAYQB/wEAAQ0BjQH/AQABCwGMAf8BAgEGAYMB/wIAAUgB/wEBAREBRgH/
AUcB/wEiAZUBtAH/AQwBKwGIAf8CAgFZAf8QAAMEAQYDIgEyAUwCTQGRA2QB8QKoAakB/QGGAZsBqQH+ ASEBlQG0Af8BCwEqAYgB/wIBAVgB/xAAAwQBBgMiATIBTAJNAZEDZAHxA6gB/QGEAZkBpwH+AqgBqQH9
AqgBqgH9AWQBggGIAfsBZQF3AX0B/AHnAfEB+AH/AdUD/wHDAfsC/wHDAfsC/wHgA/8BXwF5AYYB+wFa AWIBgQGHAfsBZAF2AXwB/AHnAfEB+AH/AdUD/wHDAfsC/wHDAfsC/wHgA/8BXwF2AYUB+wFaAl0B0wNC
Al0B0wNCAXQDGgElAwYBCAMBAQIvAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AXQDGgElAwYBCAMBAQIvAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxIB/wOq Af8OAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wwAAxEB/wOqAf8DEQH/
Af8DEgH/AakBNAElAf8BSAEdARoB/wE5AZYBtQH/AVIBwQHkAf8BlAHYAesB/wEAASwBiAH/AQABHwFA AakBMwEkAf8BRwEcARkB/wE4AZYBtQH/AVEBwQHkAf8BlAHYAesB/wEAASsBiAH/AQABHgE/Af8BoQEW
Af8BoQEXAT8B/wG/ASoBjgH/AcoBOgGmAf8B2gFLAbwB/wHoAYEB0gH/AfQBigHhAf8B+QGQAegB/wH0 AT4B/wG/ASkBjgH/AcoBOQGmAf8B2gFKAbwB/wHoAYEB0gH/AfQBigHhAf8B+QGQAegB/wH0AYoB4QH/
AYoB4QH/AegBgQHSAf8B2gFLAb0B/wHLAToBpQH/AcABKQGKAf8BWAEWATMB/wEAAR0BTQH/ARkBVwGp AegBgQHSAf8B2gFKAb0B/wHLATkBpQH/AcABKAGKAf8BVwEVATIB/wEAARwBTAH/ARgBVgGpAf8BnAHh
Af8BnAHhAe8B/wFEAbAB1gH/ASwBJQEtAf8BkAEpARwB/wMZAf8DqgH/AxIB/wICAVkB/wEMASkBiAH/ Ae8B/wFDAbAB1gH/ASsBJAEsAf8BkAEoARsB/wMYAf8DqgH/AxEB/wIBAVgB/wELASgBiAH/ASQBlAG0
ASUBlAG0Af8BAwESAUcB/wEAARkBigH/ARMBjAHPAf8BEwGTAdwB/wEUAY8B1QH/AQoBUQHDAf8BBAEr Af8BAgERAUYB/wEAARgBigH/ARIBjAHPAf8BEgGTAdwB/wETAY8B1QH/AQkBUAHDAf8BAwEqAaUB/wEA
AaUB/wEAAQ8BiQH/AQABBQFVAf8CAwFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFOAf8CAAFO AQ4BiQH/AQABBAFUAf8CAgFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAAFNAf8CAgFN
Af8CAwFOAf8CBAFQAf8CBAFYAf8BBAETAY4B/wERAUkBuAH/AScBmgHSAf8BHgGNAcsB/wEIATABpQH/ Af8CAwFPAf8CAwFXAf8BAwESAY4B/wEQAUgBuAH/ASYBmgHSAf8BHQGNAcsB/wEHAS8BpQH/AQABBAFQ
AQABBQFRAf8BAwESAUcB/wElAZcBtgH/AQwBLQGKAf8CAgFZAf8QAAMDAQQDFgEeAzYBWQFPAlEBnAFX Af8BAgERAUYB/wEkAZcBtgH/AQsBLAGKAf8CAQFYAf8QAAMDAQQDFgEeAzYBWQFPAlEBnAFXAlkBvwFZ
AlkBvwFZAlwByQFaAl0BygFcAl4BzgFYAl8B4wFXAmIB9gHwA/8BwwH7Av8BwwH7Av8B3QP/AW8BewF/ AlwByQFaAl0BygFcAl4BzgFYAl8B4wFXAmIB9gHwA/8BwwH7Av8BwwH7Av8B3QP/AW4BegF+AfwDWQHH
AfwDWQHHAzcBWwMPARQDAAEBTwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQA AzcBWwMPARQDAAEBTwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wOw
AxIB/wOwAf8DEgH/Aa8BNQEoAf8BVwEcARQB/wE6ARcBGQH/ATUBUQGFAf8BsAHuAfcB/wGbAeMB7wH/ Af8DEQH/Aa8BNAEnAf8BVgEbARMB/wE5ARYBGAH/ATQBUAGFAf8BsAHuAfcB/wGbAeMB7wH/AQABLgGR
AQABLwGRAf8BBAErAUQB/wGlARsBRwH/AcABLgGVAf8BywE8AakB/wHWAUcBtwH/Ad4BUQHCAf8B4QFT Af8BAwEqAUMB/wGlARoBRgH/AcABLQGVAf8BywE7AakB/wHWAUYBtwH/Ad4BUAHCAf8B4QFSAcYB/wHe
AcYB/wHeAVEBwgH/AdYBRwG3Af8BywE8AagB/wHDAS0BkQH/AYEBFwE5Af8BAAE1AYAB/wEMAU8BpQH/ AVABwgH/AdYBRgG3Af8BywE7AagB/wHDASwBkQH/AYEBFgE4Af8BAAE0AYAB/wELAU4BpQH/AbcB8wH6
AbcB8wH6Af8BlgHaAeQB/wEtASIBKgH/AU0BGwEWAf8BowEwASUB/wMZAf8DsAH/AxIB/wICAVkB/wEM Af8BlgHaAeQB/wEsASEBKQH/AUwBGgEVAf8BowEvASQB/wMYAf8DsAH/AxEB/wIBAVgB/wELASgBiAH/
ASkBiAH/ASUBlAG0Af8BAwESAUcB/wEAAScBjwH/ATMBxwHoAf8BOgHQAfMB/wE7AcsB8gH/ATEBuwHm ASQBlAG0Af8BAgERAUYB/wEAASYBjwH/ATIBxwHoAf8BOQHQAfMB/wE6AcsB8gH/ATABuwHmAf8BGgGN
Af8BGwGNAcwB/wEHATIBpQH/AQIBDgGBAf8BAAEDAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIAAU4B/wIA AcwB/wEGATEBpQH/AQEBDQGBAf8BAAECAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIAAU0B/wIA
AU4B/wIAAU4B/wIAAU4B/wIEAU4B/wEBAQcBWAH/AQ0BRwG1Af8BPAHQAfEB/wFMAekB/QH/AUkB5QH7 AU0B/wIAAU0B/wIDAU0B/wEAAQYBVwH/AQwBRgG1Af8BOwHQAfEB/wFLAekB/QH/AUgB5QH7Af8BJAGp
Af8BJQGpAdwB/wEAARYBhAH/AQMBEwFHAf8BJQGbAbgB/wEMAS0BiwH/AgIBWQH/EAADAgEDAwoBDQMc AdwB/wEAARUBhAH/AQIBEgFGAf8BJAGbAbgB/wELASwBiwH/AgEBWAH/EAADAgEDAwoBDQMcAScDLwFJ
AScDLwFJAzwBZgNEAXoDSAGEAU4CTwGXAVkCXAHMAVMCZAHxBP8BwwH7Av8BwwH7Av8B1wP/AqgBqwH9 AzwBZgNEAXoDSAGEAU4CTwGXAVkCXAHMAVMCZAHxBP8BwwH7Av8BwwH7Av8B1wP/AqgBqgH9A1sByAM3
A1sByAM3AVoDCwEPUwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wO2 AVoDCwEPUwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wO2Af8DEQH/
Af8DEgH/AbABNAEoAf8BsgE0AScB/wGfASsBHwH/AVgBGwESAf8BHwEXASYB/wGTAdQB6AH/AZYB3gHv AbABMwEnAf8BsgEzASYB/wGfASoBHgH/AVcBGgERAf8BHgEWASUB/wGTAdQB6AH/AZYB3gHvAf8BAAE9
Af8BAAE+AZYB/wEXASIBOQH/AbgBHwFSAf8BvwEsAZMB/wHGATUBoAH/AcsBOwGmAf8BzQE9AaoB/wHL AZYB/wEWASEBOAH/AbgBHgFRAf8BvwErAZMB/wHGATQBoAH/AcsBOgGmAf8BzQE8AaoB/wHLAToBpgH/
ATsBpgH/AcYBNQGgAf8BwAEsAZEB/wGdARoBQwH/AQABNwFRAf8BDAFOAagB/wGvAesB+AH/AUsBoAHD AcYBNAGgAf8BwAErAZEB/wGdARkBQgH/AQABNgFQAf8BCwFNAagB/wGvAesB+AH/AUoBoAHDAf8BPAIV
Af8BPQIWAf8BWgEbAREB/wGtATIBJQH/AakBMgEnAf8DGQH/A7YB/wMSAf8CAgFZAf8BDAEpAYgB/wEk Af8BWQEaARAB/wGtATEBJAH/AakBMQEmAf8DGAH/A7YB/wMRAf8CAQFYAf8BCwEoAYgB/wEjAZQBtAH/
AZQBtAH/AQMBEgFHAf8BAAEiAY4B/wEsAcMB5wH/ATMBzgHyAf8BMwHIAfIB/wEpAbQB5gH/ARYBigHK AQIBEQFGAf8BAAEhAY4B/wErAcMB5wH/ATIBzgHyAf8BMgHIAfIB/wEoAbQB5gH/ARUBigHKAf8BBQEv
Af8BBgEwAZ8B/wEAAQoBVAH/AgABRQH/AgABQwH/AgABQwH/AgABQwH/AgABQwH/AgABQwH/AgABQwH/ AZ8B/wEAAQkBUwH/AgABRAH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/AgABQgH/
AgABQwH/AgABRAH/AQABBAFSAf8BHQGVAcsB/wFBAekB/QH/AUMB7gL/AUMB7gL/ATUB1QHwAf8BAAEj AgABQwH/AQABAwFRAf8BHAGVAcsB/wFAAekB/QH/AUIB7gL/AUIB7gL/ATQB1QHwAf8BAAEiAZAB/wEC
AZAB/wEDARQBRwH/ASUBnAG5Af8BDAEtAYsB/wICAVkB/xMAAQEDBwEJAxYBHwMvAUkBQQJCAXMBTAJN ARMBRgH/ASQBnAG5Af8BCwEsAYsB/wIBAVgB/xMAAQEDBwEJAxYBHwMvAUkBQQJCAXMBTAJNAZEBUAJS
AZEBUAJSAaMBVQJXAboDXwHgAUkCYgH2AfMD/wHDAfsC/wHDAfsC/wHdA/8BbwF7AX8B/AFXAloBvQMx AaMBVQJXAboDXwHgAUkCYgH2AfMD/wHDAfsC/wHDAfsC/wHdA/8BbgF6AX4B/AFXAloBvQMxAU8DCQEM
AU8DCQEMUwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wO7Af8DEgH/ UwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wO7Af8DEQH/Aa0BMAEm
Aa0BMQEnAf8BswEzASgB/wGzATMBKAH/AagBLgEjAf8BVwEYAREB/wEfARcBJgH/AZEB0QHqAf8BVgG6 Af8BswEyAScB/wGzATIBJwH/AagBLQEiAf8BVgEXARAB/wEeARYBJQH/AZEB0QHqAf8BVQG6Ad0B/wEA
Ad0B/wEAAUcBkwH/AUABFAEvAf8BuAEdAVUB/wG8ASUBhwH/AcABJwGKAf8BvwEoAYwB/wHAAScBigH/ AUYBkwH/AT8BEwEuAf8BuAEcAVQB/wG8ASQBhwH/AcABJgGKAf8BvwEnAYwB/wHAASYBigH/AbwBIwGG
AbwBJAGGAf8BtAEcAU0B/wETASUBOgH/AQEBTQGiAf8BnQHeAfEB/wFLAaABxgH/AT8BFQEWAf8BlgEl Af8BtAEbAUwB/wESASQBOQH/AQABTAGiAf8BnQHeAfEB/wFKAaABxgH/AT4BFAEVAf8BlgEkARsB/wGy
ARwB/wGyATMBKAH/AbMBMwEoAf8BpgEvASYB/wMaAf8DuwH/AxIB/wICAVkB/wEMASkBiAH/ASABlAG0 ATIBJwH/AbMBMgEnAf8BpgEuASUB/wMZAf8DuwH/AxEB/wIBAVgB/wELASgBiAH/AR8BlAG0Af8BAQER
Af8BAgESAUcB/wEAARQBhQH/AQoBggHKAf8BCQGOAdcB/wEJAYoB1wH/AQkBhgHPAf8BCQFRAcAB/wED AUYB/wEAARMBhQH/AQkBggHKAf8BCAGOAdcB/wEIAYoB1wH/AQgBhgHPAf8BCAFQAcAB/wECATcBqgH/
ATgBqgH/AQABGQGMAf8CAAFAAf8CAAE6Af8CAAE6Af8CAAE6Af8CAAE6Af8CAAE6Af8CAAE6Af8CAAE8 AQABGAGMAf8CAAE/Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE5Af8CAAE7Af8CAAE9
Af8CAAE+Af8BAAEBAU4B/wETAYABwQH/ATYB4wH7Af8BOgHuAv8BOgHuAv8BJwHGAeoB/wEAARsBjAH/ Af8CAAFNAf8BEgGAAcEB/wE1AeMB+wH/ATkB7gL/ATkB7gL/ASYBxgHqAf8BAAEaAYwB/wECARMBSAH/
AQMBFAFJAf8BJQGdAb0B/wEMAS4BiwH/AgIBWQH/EwABAQMKAQ0DKgFAAU4CTwGXAVgCXAHRA1wB6gNn ASQBnQG9Af8BCwEtAYsB/wIBAVgB/xMAAQEDCgENAyoBQAFOAk8BlwFYAlwB0QNcAeoDZwHyAlkBWgH1
AfICWQFcAfUBZAGCAYgB+wHaAeoB9QH/AdgD/wHDAfsC/wHFAf0C/wHvA/8DYgH2AVACUgGjAycBOgMH AWIBgQGHAfsB2gHqAfUB/wHYA/8BwwH7Av8BxQH9Av8B7wP/A2IB9gFQAlIBowMnAToDBwEJUwAB/wMA
AQlTAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JAADEgH/A8AB/wMSAf8BqQEv Af8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxEB/wPAAf8DEQH/AakBLgEkAf8BrwEv
ASUB/wGvATABJgH/Aa8BMAEmAf8BrwEwASYB/wGlASsBIgH/AVMBFgEPAf8BIAEpAT4B/wGYAdoB8QH/ ASUB/wGvAS8BJQH/Aa8BLwElAf8BpQEqASEB/wFSARUBDgH/AR8BKAE9Af8BmAHaAfEB/wErAY8BvAH/
ASwBjwG8Af8BAAEyAU4B/wFPAQoBIAH/AUMBFgExAf8BMgEcATcB/wEyARwBNwH/ATYBGwE2Af8BSwES AQABMQFNAf8BTgEJAR8B/wFCARUBMAH/ATEBGwE2Af8BMQEbATYB/wE1ARoBNQH/AUoBEQEsAf8BOAEM
AS0B/wE5AQ0BHgH/AQABQgGQAf8BWgG8AeAB/wGEAbsB4QH/ATEBEwEZAf8BkQEiARkB/wGvATABJgH/ AR0B/wEAAUEBkAH/AVkBvAHgAf8BhAG7AeEB/wEwARIBGAH/AZEBIQEYAf8BrwEvASUB/wGvAS8BJQH/
Aa8BMAEmAf8BrwEwASYB/wGiAS0BJAH/AxoB/wPAAf8DEgH/AgIBWgH/AQwBKQGLAf8BIwGUAbQB/wEA Aa8BLwElAf8BogEsASMB/wMZAf8DwAH/AxEB/wIBAVkB/wELASgBiwH/ASIBlAG0Af8BAAENAUIB/wEA
AQ4BQwH/AQABIgGMAf8BKwHaAesB/wEwAeQB9QH/ATAB4gH1Af8BKwHZAfMB/wElAcIB6QH/ARYBkwHR ASEBjAH/ASoB2gHrAf8BLwHkAfUB/wEvAeIB9QH/ASoB2QHzAf8BJAHCAekB/wEVAZMB0QH/AQUBMQGj
Af8BBgEyAaMB/wIAATcB/wIAATAB/wIAATAB/wIAATAB/wIAATAB/wIAATAB/wIAATAB/wIAATMB/wIA Af8CAAE2Af8CAAEvAf8CAAEvAf8CAAEvAf8CAAEvAf8CAAEvAf8CAAEvAf8CAAEyAf8CAAEyAf8CAAE6
ATMB/wIAATsB/wEAASEBkAH/ARcBngHWAf8BKwHRAfAB/wElAcMB6gH/AQwBUgG9Af8BAAEFAVAB/wEA Af8BAAEgAZAB/wEWAZ4B1gH/ASoB0QHwAf8BJAHDAeoB/wELAVEBvQH/AQABBAFPAf8BAAEPAUgB/wEk
ARABSQH/ASUBnQG9Af8BDAEuAY4B/wICAVoB/xMAAQEDDwEUAzsBYwNeAdgE/wH7A/8B8wP/Ae4D/wHi AZ0BvQH/AQsBLQGOAf8CAQFZAf8TAAEBAw8BFAM7AWMDXgHYBP8B+wP/AfMD/wHuA/8B4gP/AdED/wHG
A/8B0QP/AcYB/gL/AcQB/AL/AdYD/wHnAfEB+AH/AVcCXAHfA0QBeQMYASIDBAEGUwAB/wMAAf8DAAH/ Af4C/wHEAfwC/wHWA/8B5wHxAfgB/wFXAlwB3wNEAXkDGAEiAwQBBlMAAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/yQAAxIB/wPHAf8DEgH/AaYBKwEkAf8BrAEsASUB/wGs DgAC/wIAAv8CAAL/AgAC/wIAAv8kAAMRAf8DxwH/AxEB/wGmASoBIwH/AawBKwEkAf8BrAErASQB/wGs
ASwBJQH/AawBLAElAf8BrAEsASUB/wGaASQBHQH/AUoBFAESAf8BPQGQAbIB/wGWAdIB8QH/AQIBRQGi ASsBJAH/AawBKwEkAf8BmgEjARwB/wFJARMBEQH/ATwBkAGyAf8BlgHSAfEB/wEBAUQBogH/AQABPQGL
Af8BAAE+AYsB/wEAAUYBkwH/AQABTAGaAf8BAgFOAZwB/wEAAUsBlwH/AQABRgGTAf8BAAE5AYsB/wEn Af8BAAFFAZMB/wEAAUsBmgH/AQEBTQGcAf8BAAFKAZcB/wEAAUUBkwH/AQABOAGLAf8BJgGJAbsB/wGY
AYkBuwH/AZgB2AHzAf8BIQEvAUUB/wFSARQBDwH/AasBKwEkAf8BrAEsASUB/wGsASwBJQH/AawBLAEl AdgB8wH/ASABLgFEAf8BUQETAQ4B/wGrASoBIwH/AawBKwEkAf8BrAErASQB/wGsASsBJAH/AZ8BKQEi
Af8BnwEqASMB/wMaAf8DxwH/AxIB/wIEAYUB/wEQATABjQH/ASUBlwG0Af8BAAEMAUEB/wEAAQMBQgH/ Af8DGQH/A8cB/wMRAf8CAwGFAf8BDwEvAY0B/wEkAZcBtAH/AQABCwFAAf8BAAECAUEB/wEAASUBjAH/
AQABJgGMAf8BAAEoAZIB/wEAASgBkgH/AQABJgGQAf8BAAEhAYYB/wEAARQBVAH/AQABBQFEAf8CAAEt AQABJwGSAf8BAAEnAZIB/wEAASUBkAH/AQABIAGGAf8BAAETAVMB/wEAAQQBQwH/AgABLAH/AgABJgH/
Af8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEnAf8CAAEtAf8CAAEuAf8CAAE5 AgABJgH/AgABJgH/AgABJgH/AgABJgH/AgABJgH/AgABJgH/AgABLAH/AgABLQH/AgABOAH/AQABCwFT
Af8BAAEMAVQB/wEAASIBigH/AQABGgGFAf8BAAEFAU0B/wIAAToB/wEAAQ0BQgH/ASUBnAG5Af8BEAEx Af8BAAEhAYoB/wEAARkBhQH/AQABBAFMAf8CAAE5Af8BAAEMAUEB/wEkAZwBuQH/AQ8BMAGRAf8CAwGF
AZEB/wIEAYUB/xMAAQEDDQESAzgBXAFYAlsBywGSAZ8BqAH+AeoD/wHNA/8BxAH8Av8BwwH7Av8BwwH7 Af8TAAEBAw0BEgM4AVwBWAJbAcsBkAGdAaYB/gHqA/8BzQP/AcQB/AL/AcMB+wL/AcMB+wL/AcYB/gL/
Av8BxgH+Av8B2AP/AfMB+AH8Af8DXQHwA1IBqQMuAUcDDAEQAwIBA1MAAf8DAAH/AwAB/wMAAf8DAAH/ AdgD/wHzAfgB/AH/A10B8ANSAakDLgFHAwwBEAMCAQNTAAH/AwAB/wMAAf8DAAH/AwAB/0QAAxEB/wPP
RAADEgH/A88B/wMSAf8BowEoASIB/wGoASkBIwH/AagBKQEjAf8BqAEpASMB/wGoASkBIwH/AagBKQEj Af8DEQH/AaMBJwEhAf8BqAEoASIB/wGoASgBIgH/AagBKAEiAf8BqAEoASIB/wGoASgBIgH/AY0BGwEW
Af8BjQEcARcB/wElARcBIgH/AYwB0gHzAf8BwwHwAfgB/wHVAe4B9wH/AeAB9wH8Af8B5wP/AegD/wHm Af8BJAEWASEB/wGMAdIB8wH/AcMB8AH4Af8B1QHuAfcB/wHgAfcB/AH/AecD/wHoA/8B5gH+Av8B3QHy
Af4C/wHdAfIB+gH/Ac0B7QH3Af8BtQHvAfsB/wFLAasBzwH/AUABEAESAf8BlgEhARsB/wGoASkBIwH/ AfoB/wHNAe0B9wH/AbUB7wH7Af8BSgGrAc8B/wE/AQ8BEQH/AZYBIAEaAf8BqAEoASIB/wGoASgBIgH/
AagBKQEjAf8BqAEpASMB/wGoASkBIwH/AZ0BJwEhAf8DGwH/A88B/wMSAf8CCgGKAf8BEQEzAZgB/wEm AagBKAEiAf8BqAEoASIB/wGdASYBIAH/AxoB/wPPAf8DEQH/AgkBigH/ARABMgGYAf8BJQGVAbYB/wEP
AZUBtgH/ARABNwGIAf8BAgEQAUAB/wECARABRQH/AQIBEAFFAf8BAgEQAUUB/wECARABPwH/AQIBEAE/ ATYBiAH/AQEBDwE/Af8BAQEPAUQB/wEBAQ8BRAH/AQEBDwFEAf8BAQEPAT4B/wEBAQ8BPgH/AQEBDwE+
Af8BAgEQAT8B/wECARABOgH/AQABCgE5Af8BAAEKATkB/wEAAQoBOQH/AQABCgE5Af8BAAEKATkB/wEA Af8BAQEPATkB/wEAAQkBOAH/AQABCQE4Af8BAAEJATgB/wEAAQkBOAH/AQABCQE4Af8BAAEJATgB/wEA
AQoBOQH/AQABCgE5Af8BAAEKATkB/wECARABOgH/AQIBEQFAAf8BAgESAUEB/wECARIBQQH/AQIBEgFH AQkBOAH/AQABCQE4Af8BAQEPATkB/wEBARABPwH/AQEBEQFAAf8BAQERAUAB/wEBAREBRgH/AQEBEQFG
Af8BAgESAUcB/wECAREBRgH/AQIBEAFAAf8BDgE3AYcB/wElAZQBtQH/AREBMwGYAf8CCgGKAf8TAAEB Af8BAQEQAUUB/wEBAQ8BPwH/AQ0BNgGHAf8BJAGUAbUB/wEQATIBmAH/AgkBigH/EwABAQMHAQoDJgE4
AwcBCgMmATgDSgGLAVkCXAHPAWEBbwFzAfgB8wH4AfwB/wHyA/8B5gP/AegD/wH6A/8BkgGiAawB/gNh A0oBiwFZAlwBzwFfAW4BcgH4AfMB+AH8Af8B8gP/AeYD/wHoA/8B+gP/AZABoAGqAf4DYQHuA1UBsgM4
Ae4DVQGyAzgBXAMVAR0DBQEHAwABAVMAAf8DAAH/AwAB/wMAAf8DAAH/RAADEgH/A9cB/wMSAf8BnwEl AVwDFQEdAwUBBwMAAQFTAAH/AwAB/wMAAf8DAAH/AwAB/0QAAxEB/wPXAf8DEQH/AZ8BJAEgAf8BpAEl
ASEB/wGkASYBIgH/AaQBJgEiAf8BpAEmASIB/wGkASYBIgH/AaQBJgEiAf8BmQEhAR0B/wE6AQ4BEgH/ ASEB/wGkASUBIQH/AaQBJQEhAf8BpAElASEB/wGkASUBIQH/AZkBIAEcAf8BOQENAREB/wGvAdwB5AH/
Aa8B3AHkAf8B4gHwAfIB/wGNAaQBrwH/AT4BRAFQAf8BLAEoATYB/wEtASkBNwH/AS8BLAE5Af8BSQFV AeIB8AHyAf8BjQGkAa8B/wE9AUMBTwH/ASsBJwE1Af8BLAEoATYB/wEuASsBOAH/AUgBVAGGAf8BpQHA
AYYB/wGlAcABxQH/Ae8C+wH/ATUBggGXAf8BSwEPAQ4B/wGjASUBIQH/AaQBJgEiAf8BpAEmASIB/wGk AcUB/wHvAvsB/wE0AYIBlwH/AUoBDgENAf8BowEkASAB/wGkASUBIQH/AaQBJQEhAf8BpAElASEB/wGk
ASYBIgH/AaQBJgEiAf8BmQEkASAB/wMbAf8D1wH/AxIB/wILAZQB/wEQAS4BmwH/ATEBogHDAf8BRAG3 ASUBIQH/AZkBIwEfAf8DGgH/A9cB/wMRAf8CCgGUAf8BDwEtAZsB/wEwAaIBwwH/AUMBtwHNAf8BPwG5
Ac0B/wFAAbkBzQH/AUABuQHNAf8BPgG5Ac0B/wE9AbkBzQH/AT0BuQHNAf8BPQG5Ac0B/wE9AbkBzQH/ Ac0B/wE/AbkBzQH/AT0BuQHNAf8BPAG5Ac0B/wE8AbkBzQH/ATwBuQHNAf8BPAG5Ac0B/wE8AbkBzQH/
AT0BuQHNAf8BPQG5Ac0B/wE9AbkBzQH/AT0BuQHNAf8BPQG5Ac0B/wE9AbkBzQH/AT0BuQHNAf8BPQG5 ATwBuQHNAf8BPAG5Ac0B/wE8AbkBzQH/ATwBuQHNAf8BPAG5Ac0B/wE8AbkBzQH/ATwBuQHNAf8BPAG5
Ac0B/wE9AbkBzQH/AUABuQHNAf8BQAG8Ac8B/wFAAb8B0gH/AUABvwHSAf8BQAG/AdIB/wFAAb8B0gH/ Ac0B/wE/AbkBzQH/AT8BvAHPAf8BPwG/AdIB/wE/Ab8B0gH/AT8BvwHSAf8BPwG/AdIB/wE9AbwBzwH/
AT4BvAHPAf8BPQG5Ac0B/wE8AbYByAH/ASwBngHAAf8BEAEtAZsB/wILAZQB/xQAAwQBBQMRARcDKQE/ ATwBuQHNAf8BOwG2AcgB/wErAZ4BwAH/AQ8BLAGbAf8CCgGUAf8UAAMEAQUDEQEXAykBPwNEAXkBVQJW
A0QBeQFVAlYBtAFcAmEB3ANfAfMBZgFyAXcB+gFmAXIBdwH6A10B7QFbAl4B0AFQAlEBnwM2AVkDGAEh AbQBXAJhAdwDXwHzAWQBcQF2AfoBZAFxAXYB+gNdAe0BWwJeAdABUAJRAZ8DNgFZAxgBIQMHAQoDAQEC
AwcBCgMBAQJXAAH/AwAB/wMAAf8DAAH/AwAB/0QAAxIB/wPfAf8DEgH/AZwBIgEgAf8BoQEjASEB/wGh VwAB/wMAAf8DAAH/AwAB/wMAAf9EAAMRAf8D3wH/AxEB/wGcASEBHwH/AaEBIgEgAf8BoQEiASAB/wGh
ASMBIQH/AaEBIwEhAf8BoQEjASEB/wGhASMBIQH/AZsBIAEeAf8BQAENARAB/wGPAZYBoQH/AS4BCwET ASIBIAH/AaEBIgEgAf8BoQEiASAB/wGbAR8BHQH/AT8BDAEPAf8BjwGWAaEB/wEtAQoBEgH/AUcCDAH/
Af8BSAINAf8BSwENAQwB/wGBARUBEwH/AYEBFQETAf8BgQEVARMB/wFKAQ0BDAH/AUUBDQEOAf8BIgEW AUoBDAELAf8BgQEUARIB/wGBARQBEgH/AYEBFAESAf8BSQEMAQsB/wFEAQwBDQH/ASEBFQEkAf8BUQFV
ASUB/wFSAVYBiAH/AUoBDQEMAf8BoAEiASAB/wGhASMBIQH/AaEBIwEhAf8BoQEjASEB/wGhASMBIQH/ AYgB/wFJAQwBCwH/AaABIQEfAf8BoQEiASAB/wGhASIBIAH/AaEBIgEgAf8BoQEiASAB/wGWASABHgH/
AZYBIQEfAf8DHAH/A98B/wMSAf8CDAGeAf8BDQEUAZQB/wEcATYBnwH/AS8BVgGuAf8BMgFaAasB/wEy AxsB/wPfAf8DEQH/AgsBngH/AQwBEwGUAf8BGwE1AZ8B/wEuAVUBrgH/ATEBWQGrAf8BMQFZAasB/wEv
AVoBqwH/ATABWgGrAf8BLwFaAacB/wEvAVoBpgH/AS0BVwGmAf8BKQFUAaYB/wEpAVQBogH/ASkBVAGh AVkBqwH/AS4BWQGnAf8BLgFZAaYB/wEsAVYBpgH/ASgBUwGmAf8BKAFTAaIB/wEoAVMBoQH/ASgBUwGh
Af8BKQFUAaEB/wEpAVQBoQH/ASkBVAGhAf8BKQFUAaEB/wEpAVQBoQH/ASkBVAGhAf8BKQFUAaEB/wEt Af8BKAFTAaEB/wEoAVMBoQH/ASgBUwGhAf8BKAFTAaEB/wEoAVMBoQH/ASgBUwGhAf8BLAFTAaIB/wEs
AVQBogH/AS0BVAGmAf8BMAFXAaYB/wEyAVoBpgH/ATIBWgGnAf8BMgFaAasB/wEwAVoBqwH/AS8BWgGr AVMBpgH/AS8BVgGmAf8BMQFZAaYB/wExAVkBpwH/ATEBWQGrAf8BLwFZAasB/wEuAVkBqwH/ASsBVQGu
Af8BLAFWAa4B/wEaATYBnwH/AQ0BFAGUAf8CDAGeAf8XAAEBAwQBBgMMARADHAEoAzEBTQNCAXUDTgGZ Af8BGQE1AZ8B/wEMARMBlAH/AgsBngH/FwABAQMEAQYDDAEQAxwBKAMxAU0DQgF1A04BmQFTAlUBrQNS
AVMCVQGtA1IBqQNLAY4BPAI9AWcDKQE+AxQBGwMHAQkDAgEDWwAB/wMAAf8DAAH/AwAB/wMAAf9EAANM AakDSwGOATwCPQFnAykBPgMUARsDBwEJAwIBA1sAAf8DAAH/AwAB/wMAAf8DAAH/RAADTAHzA98B/wMo
AfMD3wH/AykB/wGKAhwB/wGbAR4BHwH/AZsBHgEfAf8BmwEeAR8B/wGbAR4BHwH/AZsBHgEfAf8BmgEd Af8BigIbAf8BmwEdAR4B/wGbAR0BHgH/AZsBHQEeAf8BmwEdAR4B/wGbAR0BHgH/AZoBHAEdAf8BRAEJ
AR4B/wFFAQoBCwH/AT8BCgENAf8BRwIKAf8BmQEdAR4B/wGaAR4BHwH/AZsBHgEfAf8BmwEeAR8B/wGb AQoB/wE+AQkBDAH/AUYCCQH/AZkBHAEdAf8BmgEdAR4B/wGbAR0BHgH/AZsBHQEeAf8BmwEdAR4B/wGa
AR4BHwH/AZoBHQEeAf8BkgEaARsB/wFGAgoB/wE8AQoBDgH/AUcCCgH/AZoBHgEfAf8BmwEeAR8B/wGb ARwBHQH/AZIBGQEaAf8BRQIJAf8BOwEJAQ0B/wFGAgkB/wGaAR0BHgH/AZsBHQEeAf8BmwEdAR4B/wGb
AR4BHwH/AZsBHgEfAf8BmwEeAR8B/wFXARoBGwH/AzEB/wPdAf8DTgHwAhEBpAH/AgwBngH/AgsBlAH/ AR0BHgH/AZsBHQEeAf8BVgEZARoB/wMwAf8D3QH/A04B8AIQAaQB/wILAZ4B/wIKAZQB/wIJAY8B/wIJ
AgoBjwH/AgoBjAH/AgoBhgH/AgoBggH/AgUBWQH/AgQBWQH/AgMBVgH/AgIBUwH/AgIBUQH/AgIBUQH/ AYwB/wIJAYYB/wIJAYIB/wIEAVgB/wIDAVgB/wICAVUB/wIBAVIB/wIBAVAB/wIBAVAB/wIBAVAB/wIB
AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUQH/AgIBUwH/AgMBVgH/ AVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVAB/wIBAVIB/wICAVUB/wIDAVgB/wIE
AgQBWQH/AgUBWQH/AgoBggH/AgoBhgH/AgoBjAH/AgoBjwH/AgsBlAH/AgwBngH/AhEBpAH/GwABAQMC AVgB/wIJAYIB/wIJAYYB/wIJAYwB/wIJAY8B/wIKAZQB/wILAZ4B/wIQAaQB/xsAAQEDAgEDAwYBCAMM
AQMDBgEIAwwBEAMWAR4DIgEyAyoBQAMpAT4DHwEsAxIBGQMKAQ0DBAEGAwEBAl8AAf8DAAH/AwAB/wMA ARADFgEeAyIBMgMqAUADKQE+Ax8BLAMSARkDCgENAwQBBgMBAQJfAAH/AwAB/wMAAf8DAAH/AwAB/0QA
Af8DAAH/RAADVwG9A78B/wOUAf8BPQEbAR0B/wGKARoBIAH/AZMBGAEfAf8BkwEYAR8B/wGTARgBHwH/ A1cBvQO/Af8DlAH/ATwBGgEcAf8BigEZAR8B/wGTARcBHgH/AZMBFwEeAf8BkwEXAR4B/wGTARcBHgH/
AZMBGAEfAf8BkwEYAR8B/wGSARgBHgH/AY4BFgEdAf8BkgEYAR8B/wGTARgBHwH/AZMBGAEfAf8BkwEY AZMBFwEeAf8BkgEXAR0B/wGOARUBHAH/AZIBFwEeAf8BkwEXAR4B/wGTARcBHgH/AZMBFwEeAf8BkwEX
AR8B/wGTARgBHwH/AZMBGAEfAf8BkwEYAR8B/wGTARgBHwH/AZIBGAEeAf8BjQEWARwB/wGSARgBHwH/ AR4B/wGTARcBHgH/AZMBFwEeAf8BkwEXAR4B/wGSARcBHQH/AY0BFQEbAf8BkgEXAR4B/wGTARcBHgH/
AZMBGAEfAf8BkwEYAR8B/wGTARgBHwH/AZMBGAEfAf8BgAEbASAB/wEyARoBHAH/A7QB/wO0Af8DVAGu AZMBFwEeAf8BkwEXAR4B/wGTARcBHgH/AYABGgEfAf8BMQEZARsB/wO0Af8DtAH/A1QBrgITAawB/wIT
AhQBrAH/AhQBqQH/AhQBpgH/Ag8BpgH/Ag4BpgH/Ag4BowH/Ag4BnwH/AgwBngH/AgwBlwH/AgwBlwH/ AakB/wITAaYB/wIOAaYB/wINAaYB/wINAaMB/wINAZ8B/wILAZ4B/wILAZcB/wILAZcB/wILAZYB/wIL
AgwBlgH/AgwBlgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/AgwBjgH/ AZYB/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAY4B/wILAZYB/wIL
AgwBlgH/AgwBlgH/AgwBlwH/AgwBlwH/AgwBngH/Ag4BnwH/Ag4BowH/Ag4BpgH/Ag8BpgH/AhQBpgH/ AZYB/wILAZcB/wILAZcB/wILAZ4B/wINAZ8B/wINAaMB/wINAaYB/wIOAaYB/wITAaYB/wITAakB/wIT
AhQBqQH/AhQBrAH/JAADAQECAwMEBAQGAQgDBgEIAwQBBgMDAQQDAAEBZwAB/wMAAf8DAAH/AwAB/wMA AawB/yQAAwEBAgMDBAQEBgEIAwYBCAMEAQYDAwEEAwABAWcAAf8DAAH/AwAB/wMAAf8DAAH/RAADNAFU
Af9EAAM0AVQDQQH/A+4B/wOTAf8DKAH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/ A0AB/wPuAf8DkwH/AycB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/
AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMxAf8DsgH/ AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DMAH/A7IB/wPqAf8DMAH/
A+oB/wMxAf8DLQFFAhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH/AhABqAH/ Ay0BRQITAawB/wITAawB/wITAawB/wITAawB/wITAawB/wITAawB/wITAawB/wIPAagB/wIOAaQB/wIL
Ag8BpAH/AgwBogH/AgwBnwH/AgwBnwH/AgwBnAH/AgwBnAH/AgwBnAH/AgwBnAH/AgwBnAH/AgwBnAH/ AaIB/wILAZ8B/wILAZ8B/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wILAZwB/wIL
AgwBnAH/AgwBnAH/AgwBnwH/AgwBnwH/AgwBogH/Ag8BpwH/AhABqAH/AhQBrAH/AhQBrAH/AhQBrAH/ AZwB/wILAZ8B/wILAZ8B/wILAaIB/wIOAacB/wIPAagB/wITAawB/wITAawB/wITAawB/wITAawB/wIT
AhQBrAH/AhQBrAH/AhQBrAH/AhQBrAH//wAFAANKAY0DQAH/A80B/wP5Af8D+wH/A/sB/wP7Af8D+wH/ AawB/wITAawB/wITAawB//8ABQADSgGNAz8B/wPNAf8D+QH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/
A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/ A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/
A/sB/wP7Af8D+wH/A+sB/wO9Af8DKwH/A0gBhwQAA0gBhQIUAawB/wIUAawB/wIUAawB/wIUAawB/wIU A/sB/wPrAf8DvQH/AyoB/wNIAYcEAANIAYUCEwGsAf8CEwGsAf8CEwGsAf8CEwGsAf8CEwGsAf8CEwGs
AawB/wIUAawB/wIUAawB/wITAakB/wIRAakB/wIRAaYB/wINAaQB/wIMAaEB/wIMAaEB/wIMAaEB/wIM Af8CEwGsAf8CEgGpAf8CEAGpAf8CEAGmAf8CDAGkAf8CCwGhAf8CCwGhAf8CCwGhAf8CCwGhAf8CCwGh
AaEB/wIMAaEB/wIMAaEB/wIMAaEB/wIMAaEB/wINAaQB/wIRAaYB/wIRAakB/wITAasB/wIUAawB/wIU Af8CCwGhAf8CCwGhAf8CCwGhAf8CDAGkAf8CEAGmAf8CEAGpAf8CEgGrAf8CEwGsAf8CEwGsAf8CEwGs
AawB/wIUAawB/wIUAawB/wIUAawB/wIUAawB/wIUAawB/wNIAYX/AAkAAzcBWgNZAcMDKwH8AxIB/wMS Af8CEwGsAf8CEwGsAf8CEwGsAf8CEwGsAf8DSAGF/wAJAAM3AVoDWQHDAysB/AMRAf8DEQH/AxEB/wMR
Af8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMSAf8DEgH/AxIB/wMS Af8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMRAf8DEQH/AxEB/wMR
Af8DEgH/AxIB/wMSAf8DEgH/AxIB/wNVAeoDVAGuAy0BRQgAAwcBCgNIAYUCFAGsAf8CFAGsAf8CFAGs Af8DEQH/AxEB/wMRAf8DVQHqA1QBrgMtAUUIAAMHAQoDSAGFAhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/
Af8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8CFAGrAf8CEwGqAf8CEgGqAf8CEgGoAf8CEgGk AhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/AhMBqwH/AhIBqgH/AhEBqgH/AhEBqAH/AhEBpAH/AhEBpAH/
Af8CEgGkAf8CEgGkAf8CEgGkAf8CEgGoAf8CEgGqAf8CEwGqAf8CFAGrAf8CFAGsAf8CFAGsAf8CFAGs AhEBpAH/AhEBpAH/AhEBqAH/AhEBqgH/AhIBqgH/AhMBqwH/AhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/
Af8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8CFAGsAf8DSAGFAwcBCv8AAQABQgFNAT4HAAE+AwABKAMA AhMBrAH/AhMBrAH/AhMBrAH/AhMBrAH/A0gBhQMHAQr/AAEAAUIBTQE+BwABPgMAASgDAAGAAwABQAMA
AYADAAFAAwABAQEAAQEGAAEEFgAD//8A/wADAAHAAgABAwQACP8BgAIAAQEEAAL/AfgBBwT/CAAC/wHw AQEBAAEBBgABBBYAA///AP8AAwABwAIAAQMEAAj/AYACAAEBBAAC/wH4AQcE/wgAAv8B8AEDBP8IAAL/
AQME/wgAAv8B4AEBAf8BwQL/CAAC/wHAAQEB/wHBAv8IAAL/AYABAQH/AcEC/wgAAv8BAAEBAf8BwQL/ AeABAQH/AcEC/wgAAv8BwAEBAf8BwQL/CAAC/wGAAQEB/wHBAv8IAAL/AQABAQH/AcEC/wgAAf8B/gEA
CAAB/wH+AQABAQH/AcEC/wgAAf8B/AEAAQEB/wLBAf8IAAH/AfwBAAEBAf8CwQH/CAAB/wGAAQABAQH/ AQEB/wHBAv8IAAH/AfwBAAEBAf8CwQH/CAAB/wH8AQABAQH/AsEB/wgAAf8BgAEAAQEB/wLBAf8IAAH+
AsEB/wgAAf4CAAEBAf8CwQH/CAAB+AIAAQMB/wLBAf8IAAHwAgABBwHgAQEBwAEHCAAB8AIAAR8B4AEB AgABAQH/AsEB/wgAAfgCAAEDAf8CwQH/CAAB8AIAAQcB4AEBAcABBwgAAfACAAEfAeABAQHAAQcIAAHw
AcABBwgAAfACAAE/AeABAQHAAQcIAAHwAgABfwHgAQEBwAEHCAAB8AIAAf8B4AEBAcABBwgAAfABAAEB AgABPwHgAQEBwAEHCAAB8AIAAX8B4AEBAcABBwgAAfACAAH/AeABAQHAAQcIAAHwAQABAQL/AsEB/wgA
Av8CwQH/CAAB8AEAAQMC/wLBAf8IAAHwAQABAwL/AsEB/wgAAfABAAEDAv8CwQH/CAAB8AEAAQMC/wLB AfABAAEDAv8CwQH/CAAB8AEAAQMC/wLBAf8IAAHwAQABAwL/AsEB/wgAAfABAAEDAv8CwQH/CAAB8AEA
Af8IAAHwAQABAwL/AcEC/wgAAfABAAEDAv8BwQL/CAAB+AEAAQcC/wHBAv8IAAH4AQABDwL/AcEC/wgA AQMC/wHBAv8IAAHwAQABAwL/AcEC/wgAAfgBAAEHAv8BwQL/CAAB+AEAAQ8C/wHBAv8IAAH8AQABHwL/
AfwBAAEfAv8BwQL/CAAB/wGAAX8C/wHBAv8IAAj/AYACAAEBBAAI/wHAAgABAwQACP8L AcEC/wgAAf8BgAF/Av8BwQL/CAAI/wGAAgABAQQACP8BwAIAAQMEAAj/Cw==
</value> </value>
</data> </data>
</root> </root>

281
Tab/PingForm.Designer.cs generated Normal file
View file

@ -0,0 +1,281 @@

namespace DutyContent.Tab
{
partial class PingForm
{
/// <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()
{
this.panel6 = new System.Windows.Forms.Panel();
this.cboPingDefAddr = new System.Windows.Forms.ComboBox();
this.lblPingDefAddr = new System.Windows.Forms.Label();
this.pbxPingGraph = new System.Windows.Forms.PictureBox();
this.chkPingGraph = new System.Windows.Forms.CheckBox();
this.tlpnPingColors = new System.Windows.Forms.TableLayoutPanel();
this.lblPingStat1 = new System.Windows.Forms.Label();
this.btnPingColor4 = new System.Windows.Forms.Button();
this.btnPingColor2 = new System.Windows.Forms.Button();
this.btnPingColor3 = new System.Windows.Forms.Button();
this.lblPingStat2 = new System.Windows.Forms.Label();
this.lblPingStat4 = new System.Windows.Forms.Label();
this.btnPingColor1 = new System.Windows.Forms.Button();
this.lblPingStat3 = new System.Windows.Forms.Label();
this.lblPingColors = new System.Windows.Forms.Label();
this.chkUsePing = new System.Windows.Forms.CheckBox();
this.panel6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).BeginInit();
this.tlpnPingColors.SuspendLayout();
this.SuspendLayout();
//
// panel6
//
this.panel6.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel6.Controls.Add(this.cboPingDefAddr);
this.panel6.Controls.Add(this.lblPingDefAddr);
this.panel6.Controls.Add(this.pbxPingGraph);
this.panel6.Controls.Add(this.chkPingGraph);
this.panel6.Controls.Add(this.tlpnPingColors);
this.panel6.Controls.Add(this.lblPingColors);
this.panel6.Controls.Add(this.chkUsePing);
this.panel6.Location = new System.Drawing.Point(10, 12);
this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(778, 426);
this.panel6.TabIndex = 2;
//
// cboPingDefAddr
//
this.cboPingDefAddr.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboPingDefAddr.FormattingEnabled = true;
this.cboPingDefAddr.Location = new System.Drawing.Point(535, 51);
this.cboPingDefAddr.Name = "cboPingDefAddr";
this.cboPingDefAddr.Size = new System.Drawing.Size(238, 21);
this.cboPingDefAddr.TabIndex = 15;
this.cboPingDefAddr.SelectedIndexChanged += new System.EventHandler(this.CboPingDefAddr_SelectedIndexChanged);
//
// lblPingDefAddr
//
this.lblPingDefAddr.AutoSize = true;
this.lblPingDefAddr.Location = new System.Drawing.Point(515, 35);
this.lblPingDefAddr.Name = "lblPingDefAddr";
this.lblPingDefAddr.Size = new System.Drawing.Size(25, 13);
this.lblPingDefAddr.TabIndex = 14;
this.lblPingDefAddr.Text = "335";
//
// pbxPingGraph
//
this.pbxPingGraph.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pbxPingGraph.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pbxPingGraph.Location = new System.Drawing.Point(129, 108);
this.pbxPingGraph.Name = "pbxPingGraph";
this.pbxPingGraph.Size = new System.Drawing.Size(644, 186);
this.pbxPingGraph.TabIndex = 13;
this.pbxPingGraph.TabStop = false;
//
// chkPingGraph
//
this.chkPingGraph.AutoSize = true;
this.chkPingGraph.Location = new System.Drawing.Point(26, 108);
this.chkPingGraph.Name = "chkPingGraph";
this.chkPingGraph.Size = new System.Drawing.Size(44, 17);
this.chkPingGraph.TabIndex = 12;
this.chkPingGraph.Text = "334";
this.chkPingGraph.UseVisualStyleBackColor = true;
this.chkPingGraph.CheckedChanged += new System.EventHandler(this.ChkPingGraph_CheckedChanged);
//
// tlpnPingColors
//
this.tlpnPingColors.ColumnCount = 4;
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tlpnPingColors.Controls.Add(this.lblPingStat1, 0, 0);
this.tlpnPingColors.Controls.Add(this.btnPingColor4, 3, 1);
this.tlpnPingColors.Controls.Add(this.btnPingColor2, 1, 1);
this.tlpnPingColors.Controls.Add(this.btnPingColor3, 2, 1);
this.tlpnPingColors.Controls.Add(this.lblPingStat2, 1, 0);
this.tlpnPingColors.Controls.Add(this.lblPingStat4, 3, 0);
this.tlpnPingColors.Controls.Add(this.btnPingColor1, 0, 1);
this.tlpnPingColors.Controls.Add(this.lblPingStat3, 2, 0);
this.tlpnPingColors.Location = new System.Drawing.Point(129, 35);
this.tlpnPingColors.Name = "tlpnPingColors";
this.tlpnPingColors.Padding = new System.Windows.Forms.Padding(3);
this.tlpnPingColors.RowCount = 2;
this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
this.tlpnPingColors.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F));
this.tlpnPingColors.Size = new System.Drawing.Size(318, 62);
this.tlpnPingColors.TabIndex = 11;
//
// lblPingStat1
//
this.lblPingStat1.AutoSize = true;
this.lblPingStat1.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat1.Location = new System.Drawing.Point(6, 3);
this.lblPingStat1.Name = "lblPingStat1";
this.lblPingStat1.Size = new System.Drawing.Size(72, 22);
this.lblPingStat1.TabIndex = 6;
this.lblPingStat1.Text = "330";
this.lblPingStat1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnPingColor4
//
this.btnPingColor4.BackColor = System.Drawing.Color.Plum;
this.btnPingColor4.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor4.Location = new System.Drawing.Point(240, 28);
this.btnPingColor4.Name = "btnPingColor4";
this.btnPingColor4.Size = new System.Drawing.Size(72, 28);
this.btnPingColor4.TabIndex = 8;
this.btnPingColor4.UseVisualStyleBackColor = false;
this.btnPingColor4.Click += new System.EventHandler(this.BtnPingColor4_Click);
//
// btnPingColor2
//
this.btnPingColor2.BackColor = System.Drawing.Color.Aqua;
this.btnPingColor2.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor2.Location = new System.Drawing.Point(84, 28);
this.btnPingColor2.Name = "btnPingColor2";
this.btnPingColor2.Size = new System.Drawing.Size(72, 28);
this.btnPingColor2.TabIndex = 10;
this.btnPingColor2.UseVisualStyleBackColor = false;
this.btnPingColor2.Click += new System.EventHandler(this.BtnPingColor2_Click);
//
// btnPingColor3
//
this.btnPingColor3.BackColor = System.Drawing.Color.LawnGreen;
this.btnPingColor3.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor3.Location = new System.Drawing.Point(162, 28);
this.btnPingColor3.Name = "btnPingColor3";
this.btnPingColor3.Size = new System.Drawing.Size(72, 28);
this.btnPingColor3.TabIndex = 9;
this.btnPingColor3.UseVisualStyleBackColor = false;
this.btnPingColor3.Click += new System.EventHandler(this.BtnPingColor3_Click);
//
// lblPingStat2
//
this.lblPingStat2.AutoSize = true;
this.lblPingStat2.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat2.Location = new System.Drawing.Point(84, 3);
this.lblPingStat2.Name = "lblPingStat2";
this.lblPingStat2.Size = new System.Drawing.Size(72, 22);
this.lblPingStat2.TabIndex = 5;
this.lblPingStat2.Text = "331";
this.lblPingStat2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblPingStat4
//
this.lblPingStat4.AutoSize = true;
this.lblPingStat4.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat4.Location = new System.Drawing.Point(240, 3);
this.lblPingStat4.Name = "lblPingStat4";
this.lblPingStat4.Size = new System.Drawing.Size(72, 22);
this.lblPingStat4.TabIndex = 3;
this.lblPingStat4.Text = "333";
this.lblPingStat4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnPingColor1
//
this.btnPingColor1.BackColor = System.Drawing.Color.RoyalBlue;
this.btnPingColor1.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPingColor1.Location = new System.Drawing.Point(6, 28);
this.btnPingColor1.Name = "btnPingColor1";
this.btnPingColor1.Size = new System.Drawing.Size(72, 28);
this.btnPingColor1.TabIndex = 7;
this.btnPingColor1.UseVisualStyleBackColor = false;
this.btnPingColor1.Click += new System.EventHandler(this.BtnPingColor1_Click);
//
// lblPingStat3
//
this.lblPingStat3.AutoSize = true;
this.lblPingStat3.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPingStat3.Location = new System.Drawing.Point(162, 3);
this.lblPingStat3.Name = "lblPingStat3";
this.lblPingStat3.Size = new System.Drawing.Size(72, 22);
this.lblPingStat3.TabIndex = 4;
this.lblPingStat3.Text = "332";
this.lblPingStat3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblPingColors
//
this.lblPingColors.AutoSize = true;
this.lblPingColors.Location = new System.Drawing.Point(23, 35);
this.lblPingColors.Name = "lblPingColors";
this.lblPingColors.Size = new System.Drawing.Size(25, 13);
this.lblPingColors.TabIndex = 2;
this.lblPingColors.Text = "329";
//
// chkUsePing
//
this.chkUsePing.AutoSize = true;
this.chkUsePing.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkUsePing.Location = new System.Drawing.Point(3, 3);
this.chkUsePing.Name = "chkUsePing";
this.chkUsePing.Size = new System.Drawing.Size(58, 24);
this.chkUsePing.TabIndex = 0;
this.chkUsePing.Text = "328";
this.chkUsePing.UseVisualStyleBackColor = true;
this.chkUsePing.CheckedChanged += new System.EventHandler(this.ChkUsePing_CheckedChanged);
//
// PingForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.panel6);
this.Name = "PingForm";
this.Text = "Ping";
this.panel6.ResumeLayout(false);
this.panel6.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pbxPingGraph)).EndInit();
this.tlpnPingColors.ResumeLayout(false);
this.tlpnPingColors.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.ComboBox cboPingDefAddr;
private System.Windows.Forms.Label lblPingDefAddr;
private System.Windows.Forms.PictureBox pbxPingGraph;
private System.Windows.Forms.CheckBox chkPingGraph;
private System.Windows.Forms.TableLayoutPanel tlpnPingColors;
private System.Windows.Forms.Label lblPingStat1;
private System.Windows.Forms.Button btnPingColor4;
private System.Windows.Forms.Button btnPingColor2;
private System.Windows.Forms.Button btnPingColor3;
private System.Windows.Forms.Label lblPingStat2;
private System.Windows.Forms.Label lblPingStat4;
private System.Windows.Forms.Button btnPingColor1;
private System.Windows.Forms.Label lblPingStat3;
private System.Windows.Forms.Label lblPingColors;
private System.Windows.Forms.CheckBox chkUsePing;
}
}

324
Tab/PingForm.cs Normal file
View file

@ -0,0 +1,324 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Net.NetworkInformation;
using DutyContent.Interface;
using System.Net;
namespace DutyContent.Tab
{
public partial class PingForm : Form, Interface.ISuppLocale, Interface.ISuppActPlugin
{
private static PingForm _self;
public static PingForm Self => _self;
//
private System.Timers.Timer _timer;
private long _last_ping;
private Color _color = Color.Transparent;
private Libre.PingGrapher _grpr;
private List<int> _kepts = new List<int> { 0, 0 };
public PingForm()
{
_self = this;
InitializeComponent();
_grpr = new Libre.PingGrapher(pbxPingGraph);
}
public void PluginInitialize()
{
chkUsePing.Checked = DcConfig.Duty.UsePing;
btnPingColor1.BackColor = DcConfig.Duty.PingColors[0];
btnPingColor2.BackColor = DcConfig.Duty.PingColors[1];
btnPingColor3.BackColor = DcConfig.Duty.PingColors[2];
btnPingColor4.BackColor = DcConfig.Duty.PingColors[3];
chkPingGraph.Checked = DcConfig.Duty.PingGraph;
//
try
{
var svl = File.ReadAllLines(Path.Combine(DcConfig.DataPath, "ServerList.txt"));
int ssv = -1;
for (var i = 0; i < svl.Length; i++)
{
cboPingDefAddr.Items.Add(svl[i]);
if (svl[i].StartsWith(DcConfig.Duty.PingDefAddr))
ssv = i;
}
if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
ssv = -1;
cboPingDefAddr.SelectedIndex = ssv > 0 ? ssv : 0;
}
catch
{
cboPingDefAddr.Items.Clear();
cboPingDefAddr.Items.Add(MesgLog.Text(27));
cboPingDefAddr.SelectedIndex = 0;
}
//
_timer = new System.Timers.Timer() { Interval = 5000 };
_timer.Elapsed += (sender, e) => PingOnce();
if (DcConfig.Duty.UsePing)
{
PingOnce(false);
_timer.Start();
}
}
public void PluginDeinitialize()
{
_timer?.Stop();
}
public void RefreshLocale()
{
}
public void UpdateUiLocale()
{
chkUsePing.Text = MesgLog.Text(328);
lblPingColors.Text = MesgLog.Text(329);
lblPingStat1.Text = MesgLog.Text(330);
lblPingStat2.Text = MesgLog.Text(331);
lblPingStat3.Text = MesgLog.Text(332);
lblPingStat4.Text = MesgLog.Text(333);
chkPingGraph.Text = MesgLog.Text(334);
lblPingDefAddr.Text = MesgLog.Text(335);
}
private void SaveConfig(int interval = 5000)
{
DcControl.Self.RefreshSaveConfig(interval);
}
private void ChkUsePing_CheckedChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
DcConfig.Duty.UsePing = chkUsePing.Checked;
SaveConfig();
if (chkUsePing.Checked)
{
PingOnce();
_timer.Start();
}
else
{
_timer.Stop();
Overlay.DutyOvForm.Self?.ResetStat();
}
}
private void PingColorWorker(int index, Button button)
{
Color color = (Color)WorkerAct.Invoker(new WorkerAct.ObjectReturnerDelegate(() =>
{
var dg = new ColorDialog()
{
AnyColor = true,
Color = DcConfig.Duty.PingColors[index],
};
return dg.ShowDialog() == DialogResult.OK ? dg.Color : DcConfig.Duty.PingColors[index];
}));
if (DcConfig.Duty.PingColors[index] != color)
{
button.BackColor = color;
DcConfig.Duty.PingColors[index] = color;
SaveConfig();
}
}
private void BtnPingColor1_Click(object sender, EventArgs e)
{
PingColorWorker(0, btnPingColor1);
}
private void BtnPingColor2_Click(object sender, EventArgs e)
{
PingColorWorker(1, btnPingColor2);
}
private void BtnPingColor3_Click(object sender, EventArgs e)
{
PingColorWorker(2, btnPingColor3);
}
private void BtnPingColor4_Click(object sender, EventArgs e)
{
PingColorWorker(3, btnPingColor4);
}
private void ChkPingGraph_CheckedChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
DcConfig.Duty.PingGraph = chkPingGraph.Checked;
SaveConfig();
}
private void CboPingDefAddr_SelectedIndexChanged(object sender, EventArgs e)
{
if (!DcConfig.PluginEnable)
return;
var val = cboPingDefAddr.SelectedItem as string;
if (!string.IsNullOrEmpty(val))
{
var ss = val.Split(' ');
if (ss.Length > 0)
{
DcConfig.Duty.PingDefAddr = ss[0].Trim();
SaveConfig();
return;
}
}
DcConfig.Duty.PingDefAddr = string.Empty;
SaveConfig();
}
//
private void PingOnce(bool check_plugin_enable = true)
{
if (!DcConfig.Duty.UsePing)
return;
if (check_plugin_enable && !DcConfig.PluginEnable)
return;
var conns = DcConfig.Connections.CopyConnection();
long rtt = 0;
double loss = 0;
if (conns.Length > 0)
{
foreach (var row in conns)
{
var (r, l) = CalcPing(row.RemoteAddress);
if (rtt < r)
rtt = r;
if (loss < l)
loss = l;
}
}
else
{
if (string.IsNullOrEmpty(DcConfig.Duty.PingDefAddr))
{
Overlay.DutyOvForm.Self?.ResetStat();
return;
}
var defip = ThirdParty.Converter.ToIPAddressFromIPV4(DcConfig.Duty.PingDefAddr);
if (defip == IPAddress.None || defip == IPAddress.IPv6None)
{
Overlay.DutyOvForm.Self?.ResetStat();
return;
}
var (r, l) = CalcPing(defip);
if (rtt < r)
rtt = r;
if (loss < l)
loss = l;
}
//MesgLog.L("Ping: {0}, {1}%", rtt, loss);
Color color;
if (loss > 0.0 || rtt > 150)
color = DcConfig.Duty.PingColors[3];
else if (rtt > 100)
color = DcConfig.Duty.PingColors[2];
else if (rtt > 50)
color = DcConfig.Duty.PingColors[1];
else
color = DcConfig.Duty.PingColors[0];
if (_last_ping != rtt || loss > 0.0 || _color != color)
{
_last_ping = rtt;
_color = color;
Overlay.DutyOvForm.Self?.SetStatPing(color, rtt, loss);
}
//
if (DcConfig.Duty.PingGraph)
{
_kepts.Add((int)rtt);
if (_kepts.Count > 120)
_kepts.RemoveAt(0);
_grpr.Enter();
_grpr.DrawValues(_kepts);
WorkerAct.Invoker(() => _grpr.Leave());
}
}
// http://forum.codecall.net/topic/37643-c-packet-lossping-program/
private static readonly PingOptions _ping_options = new PingOptions { DontFragment = true };
private static readonly byte[] _ping_buffers = Encoding.ASCII.GetBytes("01234567890123456789012345678901");
private static readonly int _ping_timerout = 120;
//
private (long Rtt, double Loss) CalcPing(IPAddress host, int amount = 6)
{
var ps = new Ping();
int failed = 0;
long rtt = 0;
for (var i = 0; i < amount; i++)
{
PingReply pr = ps.Send(host, _ping_timerout, _ping_buffers, _ping_options);
if (pr.Status != IPStatus.Success)
failed++;
if (rtt < pr.RoundtripTime)
rtt = pr.RoundtripTime;
}
double loss = (failed / amount) * 100;
return (rtt, loss);
}
}
}

120
Tab/PingForm.resx Normal file
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>