release/1.2.0 #4

Merged
Ray merged 3 commits from release/1.2.0 into master 2026-07-05 19:17:09 +00:00
24 changed files with 3272 additions and 944 deletions
Showing only changes of commit e1087a31db - Show all commits

BIN
icon/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

75
icon/icon.svg Normal file
View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-settings-icon lucide-settings"
version="1.1"
id="svg6"
sodipodi:docname="icon.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
inkscape:export-filename="L:\gitea-hiimray\random-file-runner\icon\icon_24.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="6.1282588"
inkscape:cx="39.244426"
inkscape:cy="100.43636"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<g
id="g4122"
transform="matrix(5.3364034,0,0,5.3364034,-3.6586835e-6,-1.6104161e-5)"
inkscape:export-filename="L:\gitea-hiimray\random-file-runner\icon\icon_128.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<circle
cx="11.942307"
cy="11.942308"
r="6.590909"
id="circle2"
style="fill:#ffffff;fill-opacity:1;stroke:#1f9fde;stroke-width:1.31818;stroke-opacity:1" />
<path
d="m 12.000001,0.7058837 c -0.77341,0 -1.52898,0.08109 -2.2588201,0.229412 v 1.747058 c -0.98114,0.236858 -1.89736,0.616834 -2.73529,1.129412 l -1.2353,-1.235294 c -0.63322,0.41961 -1.21193,0.911932 -1.74706,1.447059 -0.53513,0.535123 -1.02745,1.113842 -1.44706,1.747058 l 1.2353,1.235294 c -0.51259,0.837936 -0.89256,1.75416 -1.12941,2.7352936 H 0.93529083 c -0.14832,0.7298387 -0.22941,1.4854097 -0.22941,2.2588227 0,0.773412 0.0811,1.528983 0.22941,2.258823 H 2.6823609 c 0.23685,0.981134 0.61682,1.897354 1.12941,2.735293 l -1.2353,1.235294 c 0.41961,0.633216 0.91193,1.211934 1.44706,1.747059 0.53513,0.535127 1.11384,1.027452 1.74706,1.447061 l 1.2353,-1.235297 c 0.83793,0.512577 1.75415,0.892555 2.73529,1.129414 v 1.747059 c 0.7298401,0.148319 1.4854001,0.229411 2.2588201,0.229411 0.77341,0 1.52898,-0.08109 2.25882,-0.229411 v -1.747059 c 0.98113,-0.236859 1.89736,-0.616837 2.7353,-1.129414 l 1.23529,1.235297 c 0.63322,-0.419614 1.21193,-0.911934 1.74706,-1.447061 0.535128,-0.535125 1.027451,-1.113843 1.44706,-1.747059 l -1.23529,-1.235294 c 0.512571,-0.837939 0.89254,-1.754159 1.129408,-2.735293 h 1.747058 c 0.14832,-0.72984 0.229412,-1.485411 0.229412,-2.258823 0,-0.773413 -0.08109,-1.528984 -0.229412,-2.2588227 H 21.317649 C 21.080781,8.7600427 20.700812,7.8438187 20.188241,7.0058827 l 1.23529,-1.235294 c -0.419609,-0.633216 -0.911932,-1.211935 -1.44706,-1.747058 -0.53513,-0.535127 -1.11384,-1.027449 -1.74706,-1.447059 l -1.23529,1.235294 c -0.83794,-0.512578 -1.75417,-0.892554 -2.7353,-1.129412 v -1.747058 c -0.72984,-0.148323 -1.48541,-0.229412 -2.25882,-0.229412 z m 0,5.647058 c 3.11717,0 5.64706,2.5298806 5.64706,5.6470573 0,3.117176 -2.52989,5.647057 -5.64706,5.647057 -3.1171801,0 -5.6470601,-2.529881 -5.6470601,-5.647057 0,-3.1171767 2.52988,-5.6470573 5.6470601,-5.6470573 z"
id="path58241"
stroke-dashoffset="162"
stroke-miterlimit="4"
stroke-linejoin="round"
stroke-linecap="round"
stroke-width="1.41176"
stroke="#bf4d3c"
fill="#ffffff"
style="fill:#1f9fde;fill-opacity:1;stroke:#282828;stroke-opacity:1" />
<path
d="m 14.7,9.6 v 4.8"
id="path2"
style="stroke:#000000;stroke-width:0.6;stroke-opacity:1" />
<path
d="M 10.2087,9.6855 A 0.6,0.6 0 0 0 9.3,10.2 v 3.6 a 0.6,0.6 0 0 0 0.9087,0.5145 l 2.9991,-1.7994 a 0.6,0.6 0 0 0 9e-4,-1.0296 z"
id="path4"
style="fill:#00abff;fill-opacity:1;stroke:#000000;stroke-width:0.6;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
icon/icon_128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

BIN
icon/icon_16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
icon/icon_24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
icon/icon_32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
icon/icon_48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
icon/icon_64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

1
icon/raw/circle.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-icon lucide-circle"><circle cx="12" cy="12" r="10"/></svg>

After

Width:  |  Height:  |  Size: 267 B

2590
icon/raw/red-gear.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-skip-forward-icon lucide-skip-forward"><path d="M21 4v16"/><path d="M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z"/></svg>

After

Width:  |  Height:  |  Size: 364 B

View File

@ -137,7 +137,7 @@
<value>Resources\help-circle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>Resources\help-circle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="icon_64" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="icon_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\icon-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="save" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="save" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>Resources\save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>

View File

@ -19,7 +19,11 @@ namespace RandomFileRunner
public string SearchFilePattern { get; set; } = "*"; public string SearchFilePattern { get; set; } = "*";
public List<string> SearchItems { get; set; } = new List<string>(); public List<string> SearchItems
{
get => field ?? new List<string>();
set => field = value;
}
public bool SearchTopDirectoryOnly { get; set; } = false; public bool SearchTopDirectoryOnly { get; set; } = false;
@ -27,7 +31,12 @@ namespace RandomFileRunner
public int RetryOnError { get; set; } = 8; public int RetryOnError { get; set; } = 8;
public HotKeyOptions NextHotKey { get; set; } = new HotKeyOptions(); public HotKeyOptions NextHotKey
{
get => field ?? new HotKeyOptions();
set => field = value;
}
} }
} }

View File

@ -33,7 +33,7 @@ namespace RandomFileRunner
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
pictureBox1 = new System.Windows.Forms.PictureBox(); pictureBox1 = new System.Windows.Forms.PictureBox();
toolTip1 = new System.Windows.Forms.ToolTip(components); toolTip1 = new System.Windows.Forms.ToolTip(components);
button2 = new RyzStudio.Windows.ThemedForms.T3Button(); button1 = new RyzStudio.Windows.ThemedForms.T3Button();
label9 = new System.Windows.Forms.Label(); label9 = new System.Windows.Forms.Label();
menuStrip1 = new System.Windows.Forms.MenuStrip(); menuStrip1 = new System.Windows.Forms.MenuStrip();
fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -54,22 +54,22 @@ namespace RandomFileRunner
label1 = new System.Windows.Forms.Label(); label1 = new System.Windows.Forms.Label();
textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox(); textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox();
tHorizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator(); tHorizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
button5 = new RyzStudio.Windows.ThemedForms.T3Button();
openFileDialog2 = new System.Windows.Forms.OpenFileDialog(); openFileDialog2 = new System.Windows.Forms.OpenFileDialog();
saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
progressBar2 = new RyzStudio.Windows.Forms.TProgressBar(); progressBar2 = new RyzStudio.Windows.Forms.TProgressBar();
progressBar1 = new RyzStudio.Windows.Forms.TProgressBar(); progressBar1 = new RyzStudio.Windows.Forms.TProgressBar();
label3 = new System.Windows.Forms.Label(); label3 = new System.Windows.Forms.Label();
label4 = new System.Windows.Forms.Label(); label4 = new System.Windows.Forms.Label();
tHorizontalSeparator3 = new RyzStudio.Windows.Forms.THorizontalSeparator();
textBox2 = new RyzStudio.Windows.ThemedForms.T4TextBox();
dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter(); dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter();
t3UserControl1 = new RyzStudio.Windows.ThemedForms.T3UserControl(); t3UserControl1 = new RyzStudio.Windows.ThemedForms.T3UserControl();
t3UserControl2 = new RyzStudio.Windows.ThemedForms.T3UserControl(); t3UserControl2 = new RyzStudio.Windows.ThemedForms.T3UserControl();
memoBox1 = new RyzStudio.Windows.Forms.TMemoBox();
t3UserControl3 = new RyzStudio.Windows.ThemedForms.T3UserControl();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
menuStrip1.SuspendLayout(); menuStrip1.SuspendLayout();
t3UserControl1.SuspendLayout(); t3UserControl1.SuspendLayout();
t3UserControl2.SuspendLayout(); t3UserControl2.SuspendLayout();
t3UserControl3.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// pictureBox1 // pictureBox1
@ -77,55 +77,55 @@ namespace RandomFileRunner
pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
pictureBox1.ErrorImage = null; pictureBox1.ErrorImage = null;
pictureBox1.InitialImage = null; pictureBox1.InitialImage = null;
pictureBox1.Location = new System.Drawing.Point(270, 121); pictureBox1.Location = new System.Drawing.Point(270, 281);
pictureBox1.Name = "pictureBox1"; pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new System.Drawing.Size(37, 37); pictureBox1.Size = new System.Drawing.Size(37, 37);
pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
pictureBox1.TabIndex = 15; pictureBox1.TabIndex = 15;
pictureBox1.TabStop = false; pictureBox1.TabStop = false;
// //
// button2 // button1
// //
button2.ActiveImage = null; button1.ActiveImage = null;
button2.Align = RyzStudio.Enums.ContentAlignment.None; button1.Align = RyzStudio.Enums.ContentAlignment.None;
button2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; button1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
button2.BackColor = System.Drawing.Color.Transparent; button1.BackColor = System.Drawing.Color.Transparent;
button2.EnableMenuOnClick = false; button1.EnableMenuOnClick = false;
button2.EnableMovable = false; button1.EnableMovable = false;
button2.EnableStepWidth = true; button1.EnableStepWidth = true;
button2.HoverImage = null; button1.HoverImage = null;
button2.IdleImage = null; button1.IdleImage = null;
// //
// //
// //
button2.Label.BackColor = System.Drawing.Color.White; button1.Label.BackColor = System.Drawing.Color.White;
button2.Label.Dock = System.Windows.Forms.DockStyle.Fill; button1.Label.Dock = System.Windows.Forms.DockStyle.Fill;
button2.Label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold); button1.Label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
button2.Label.ForeColor = System.Drawing.Color.FromArgb(126, 54, 244); button1.Label.ForeColor = System.Drawing.Color.FromArgb(126, 54, 244);
button2.Label.Location = new System.Drawing.Point(4, 4); button1.Label.Location = new System.Drawing.Point(4, 4);
button2.Label.Margin = new System.Windows.Forms.Padding(0); button1.Label.Margin = new System.Windows.Forms.Padding(0);
button2.Label.Name = "label1"; button1.Label.Name = "label1";
button2.Label.Size = new System.Drawing.Size(133, 30); button1.Label.Size = new System.Drawing.Size(133, 30);
button2.Label.TabIndex = 0; button1.Label.TabIndex = 0;
button2.Label.Text = "&Search"; button1.Label.Text = "&Search";
button2.Label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; button1.Label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
button2.LabelText = "&Search"; button1.LabelText = "&Search";
button2.Location = new System.Drawing.Point(314, 121); button1.Location = new System.Drawing.Point(314, 281);
button2.Name = "button2"; button1.Name = "button1";
button2.Size = new System.Drawing.Size(140, 37); button1.Size = new System.Drawing.Size(140, 37);
button2.TabIndex = 1; button1.TabIndex = 1;
button2.TabStop = false; button1.TabStop = false;
button2.MouseClick += button2_MouseClick; button1.MouseClick += button2_MouseClick;
// //
// label9 // label9
// //
label9.AutoSize = true; label9.AutoSize = true;
label9.Location = new System.Drawing.Point(10, 78); label9.Location = new System.Drawing.Point(10, 36);
label9.Name = "label9"; label9.Name = "label9";
label9.Padding = new System.Windows.Forms.Padding(0, 8, 0, 0); label9.Padding = new System.Windows.Forms.Padding(0, 8, 0, 0);
label9.Size = new System.Drawing.Size(83, 23); label9.Size = new System.Drawing.Size(104, 23);
label9.TabIndex = 27; label9.TabIndex = 27;
label9.Text = "Search Pattern"; label9.Text = "File Search Pattern";
label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// menuStrip1 // menuStrip1
@ -148,7 +148,7 @@ namespace RandomFileRunner
// //
newToolStripMenuItem.Name = "newToolStripMenuItem"; newToolStripMenuItem.Name = "newToolStripMenuItem";
newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N; newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N;
newToolStripMenuItem.Size = new System.Drawing.Size(180, 22); newToolStripMenuItem.Size = new System.Drawing.Size(159, 22);
newToolStripMenuItem.Text = "&New"; newToolStripMenuItem.Text = "&New";
newToolStripMenuItem.Click += newToolStripMenuItem_Click; newToolStripMenuItem.Click += newToolStripMenuItem_Click;
// //
@ -157,44 +157,44 @@ namespace RandomFileRunner
openToolStripMenuItem.Image = AppResource.folder_minus; openToolStripMenuItem.Image = AppResource.folder_minus;
openToolStripMenuItem.Name = "openToolStripMenuItem"; openToolStripMenuItem.Name = "openToolStripMenuItem";
openToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O; openToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O;
openToolStripMenuItem.Size = new System.Drawing.Size(180, 22); openToolStripMenuItem.Size = new System.Drawing.Size(159, 22);
openToolStripMenuItem.Text = "&Open"; openToolStripMenuItem.Text = "&Open";
openToolStripMenuItem.Click += openToolStripMenuItem_Click; openToolStripMenuItem.Click += openToolStripMenuItem_Click;
// //
// toolStripMenuItem13 // toolStripMenuItem13
// //
toolStripMenuItem13.Name = "toolStripMenuItem13"; toolStripMenuItem13.Name = "toolStripMenuItem13";
toolStripMenuItem13.Size = new System.Drawing.Size(177, 6); toolStripMenuItem13.Size = new System.Drawing.Size(156, 6);
// //
// saveAsToolStripMenuItem // saveAsToolStripMenuItem
// //
saveAsToolStripMenuItem.Image = AppResource.save; saveAsToolStripMenuItem.Image = AppResource.save;
saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
saveAsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); saveAsToolStripMenuItem.Size = new System.Drawing.Size(159, 22);
saveAsToolStripMenuItem.Text = "Save &As..."; saveAsToolStripMenuItem.Text = "Save &As...";
saveAsToolStripMenuItem.Click += saveAsToolStripMenuItem_Click; saveAsToolStripMenuItem.Click += saveAsToolStripMenuItem_Click;
// //
// toolStripMenuItem15 // toolStripMenuItem15
// //
toolStripMenuItem15.Name = "toolStripMenuItem15"; toolStripMenuItem15.Name = "toolStripMenuItem15";
toolStripMenuItem15.Size = new System.Drawing.Size(177, 6); toolStripMenuItem15.Size = new System.Drawing.Size(156, 6);
// //
// toolStripMenuItem2 // toolStripMenuItem2
// //
toolStripMenuItem2.Name = "toolStripMenuItem2"; toolStripMenuItem2.Name = "toolStripMenuItem2";
toolStripMenuItem2.Size = new System.Drawing.Size(180, 22); toolStripMenuItem2.Size = new System.Drawing.Size(159, 22);
toolStripMenuItem2.Text = "&Export File List..."; toolStripMenuItem2.Text = "&Export File List...";
toolStripMenuItem2.Click += toolStripMenuItem2_Click; toolStripMenuItem2.Click += toolStripMenuItem2_Click;
// //
// toolStripSeparator2 // toolStripSeparator2
// //
toolStripSeparator2.Name = "toolStripSeparator2"; toolStripSeparator2.Name = "toolStripSeparator2";
toolStripSeparator2.Size = new System.Drawing.Size(177, 6); toolStripSeparator2.Size = new System.Drawing.Size(156, 6);
// //
// exitToolStripMenuItem2 // exitToolStripMenuItem2
// //
exitToolStripMenuItem2.Name = "exitToolStripMenuItem2"; exitToolStripMenuItem2.Name = "exitToolStripMenuItem2";
exitToolStripMenuItem2.Size = new System.Drawing.Size(180, 22); exitToolStripMenuItem2.Size = new System.Drawing.Size(159, 22);
exitToolStripMenuItem2.Text = "E&xit"; exitToolStripMenuItem2.Text = "E&xit";
exitToolStripMenuItem2.Click += exitToolStripMenuItem2_Click; exitToolStripMenuItem2.Click += exitToolStripMenuItem2_Click;
// //
@ -210,7 +210,7 @@ namespace RandomFileRunner
optionsToolStripMenuItem.Image = AppResource.settings; optionsToolStripMenuItem.Image = AppResource.settings;
optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
optionsToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F12; optionsToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F12;
optionsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); optionsToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
optionsToolStripMenuItem.Text = "&Options..."; optionsToolStripMenuItem.Text = "&Options...";
optionsToolStripMenuItem.Click += optionsToolStripMenuItem_Click; optionsToolStripMenuItem.Click += optionsToolStripMenuItem_Click;
// //
@ -226,31 +226,31 @@ namespace RandomFileRunner
viewHelpToolStripMenuItem1.Image = AppResource.help_circle; viewHelpToolStripMenuItem1.Image = AppResource.help_circle;
viewHelpToolStripMenuItem1.Name = "viewHelpToolStripMenuItem1"; viewHelpToolStripMenuItem1.Name = "viewHelpToolStripMenuItem1";
viewHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1; viewHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1;
viewHelpToolStripMenuItem1.Size = new System.Drawing.Size(180, 22); viewHelpToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
viewHelpToolStripMenuItem1.Text = "&View Help"; viewHelpToolStripMenuItem1.Text = "&View Help";
viewHelpToolStripMenuItem1.Click += viewHelpToolStripMenuItem1_Click; viewHelpToolStripMenuItem1.Click += viewHelpToolStripMenuItem1_Click;
// //
// toolStripMenuItem16 // toolStripMenuItem16
// //
toolStripMenuItem16.Name = "toolStripMenuItem16"; toolStripMenuItem16.Name = "toolStripMenuItem16";
toolStripMenuItem16.Size = new System.Drawing.Size(177, 6); toolStripMenuItem16.Size = new System.Drawing.Size(143, 6);
// //
// aboutToolStripMenuItem1 // aboutToolStripMenuItem1
// //
aboutToolStripMenuItem1.Name = "aboutToolStripMenuItem1"; aboutToolStripMenuItem1.Name = "aboutToolStripMenuItem1";
aboutToolStripMenuItem1.Size = new System.Drawing.Size(180, 22); aboutToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
aboutToolStripMenuItem1.Text = "&About"; aboutToolStripMenuItem1.Text = "&About";
aboutToolStripMenuItem1.Click += aboutToolStripMenuItem1_Click; aboutToolStripMenuItem1.Click += aboutToolStripMenuItem1_Click;
// //
// label1 // label1
// //
label1.AutoSize = true; label1.AutoSize = true;
label1.Location = new System.Drawing.Point(10, 36); label1.Location = new System.Drawing.Point(10, 78);
label1.Name = "label1"; label1.Name = "label1";
label1.Padding = new System.Windows.Forms.Padding(0, 8, 0, 0); label1.Padding = new System.Windows.Forms.Padding(0, 8, 0, 0);
label1.Size = new System.Drawing.Size(69, 23); label1.Size = new System.Drawing.Size(82, 23);
label1.TabIndex = 40; label1.TabIndex = 40;
label1.Text = "Search Path"; label1.Text = "Search In Path";
label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// textBox1 // textBox1
@ -263,9 +263,9 @@ namespace RandomFileRunner
textBox1.EnableStepWidth = true; textBox1.EnableStepWidth = true;
textBox1.Icon = "O"; textBox1.Icon = "O";
textBox1.IconSize = 13F; textBox1.IconSize = 13F;
textBox1.Location = new System.Drawing.Point(154, 78); textBox1.Location = new System.Drawing.Point(194, 36);
textBox1.Name = "textBox1"; textBox1.Name = "textBox1";
textBox1.Size = new System.Drawing.Size(300, 32); textBox1.Size = new System.Drawing.Size(260, 32);
textBox1.TabIndex = 0; textBox1.TabIndex = 0;
textBox1.TabStop = false; textBox1.TabStop = false;
textBox1.UseSystemPasswordChar = false; textBox1.UseSystemPasswordChar = false;
@ -274,42 +274,10 @@ namespace RandomFileRunner
// //
tHorizontalSeparator1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; tHorizontalSeparator1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
tHorizontalSeparator1.AutoPosition = true; tHorizontalSeparator1.AutoPosition = true;
tHorizontalSeparator1.Location = new System.Drawing.Point(5, 166); tHorizontalSeparator1.Location = new System.Drawing.Point(5, 326);
tHorizontalSeparator1.Name = "tHorizontalSeparator1"; tHorizontalSeparator1.Name = "tHorizontalSeparator1";
tHorizontalSeparator1.Size = new System.Drawing.Size(454, 10); tHorizontalSeparator1.Size = new System.Drawing.Size(454, 10);
// //
// button5
//
button5.ActiveImage = null;
button5.Align = RyzStudio.Enums.ContentAlignment.None;
button5.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
button5.BackColor = System.Drawing.Color.Transparent;
button5.EnableMenuOnClick = false;
button5.EnableMovable = false;
button5.EnableStepWidth = true;
button5.HoverImage = null;
button5.IdleImage = null;
//
//
//
button5.Label.BackColor = System.Drawing.Color.White;
button5.Label.Dock = System.Windows.Forms.DockStyle.Fill;
button5.Label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
button5.Label.ForeColor = System.Drawing.Color.FromArgb(126, 54, 244);
button5.Label.Location = new System.Drawing.Point(4, 4);
button5.Label.Margin = new System.Windows.Forms.Padding(0);
button5.Label.Name = "label1";
button5.Label.Size = new System.Drawing.Size(133, 30);
button5.Label.TabIndex = 0;
button5.Label.Text = "&Run Next";
button5.Label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
button5.LabelText = "&Run Next";
button5.Location = new System.Drawing.Point(314, 299);
button5.Name = "button5";
button5.Size = new System.Drawing.Size(140, 37);
button5.TabIndex = 5;
button5.MouseClick += button5_MouseClick;
//
// openFileDialog2 // openFileDialog2
// //
openFileDialog2.DefaultExt = "jsonfig"; openFileDialog2.DefaultExt = "jsonfig";
@ -362,7 +330,7 @@ namespace RandomFileRunner
// //
label3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
label3.AutoEllipsis = true; label3.AutoEllipsis = true;
label3.Location = new System.Drawing.Point(10, 261); label3.Location = new System.Drawing.Point(10, 411);
label3.Margin = new System.Windows.Forms.Padding(0); label3.Margin = new System.Windows.Forms.Padding(0);
label3.Name = "label3"; label3.Name = "label3";
label3.Size = new System.Drawing.Size(446, 15); label3.Size = new System.Drawing.Size(446, 15);
@ -372,45 +340,20 @@ namespace RandomFileRunner
// label4 // label4
// //
label4.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label4.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
label4.Location = new System.Drawing.Point(10, 246); label4.Location = new System.Drawing.Point(10, 396);
label4.Margin = new System.Windows.Forms.Padding(0); label4.Margin = new System.Windows.Forms.Padding(0);
label4.Name = "label4"; label4.Name = "label4";
label4.Size = new System.Drawing.Size(446, 15); label4.Size = new System.Drawing.Size(446, 15);
label4.TabIndex = 48; label4.TabIndex = 48;
label4.Text = "label4"; label4.Text = "label4";
// //
// tHorizontalSeparator3
//
tHorizontalSeparator3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
tHorizontalSeparator3.AutoPosition = true;
tHorizontalSeparator3.Location = new System.Drawing.Point(5, 281);
tHorizontalSeparator3.Name = "tHorizontalSeparator3";
tHorizontalSeparator3.Size = new System.Drawing.Size(454, 10);
//
// textBox2
//
textBox2.Align = RyzStudio.Enums.ContentAlignment.Right;
textBox2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
textBox2.BackColor = System.Drawing.Color.Transparent;
textBox2.EnableMovable = false;
textBox2.EnableStepWidth = true;
textBox2.Icon = "M";
textBox2.IconSize = 13F;
textBox2.Location = new System.Drawing.Point(134, 36);
textBox2.Name = "textBox2";
textBox2.Size = new System.Drawing.Size(320, 32);
textBox2.TabIndex = 52;
textBox2.TabStop = false;
textBox2.UseSystemPasswordChar = false;
textBox2.OnButtonClick += textBox2_OnButtonClick;
//
// dialogFooter1 // dialogFooter1
// //
dialogFooter1.Align = RyzStudio.Enums.ContentAlignment.None; dialogFooter1.Align = RyzStudio.Enums.ContentAlignment.None;
dialogFooter1.BackColor = System.Drawing.Color.FromArgb(240, 240, 240); dialogFooter1.BackColor = System.Drawing.Color.FromArgb(240, 240, 240);
dialogFooter1.Button1Result = System.Windows.Forms.DialogResult.OK; dialogFooter1.Button1Result = System.Windows.Forms.DialogResult.OK;
dialogFooter1.Button1Text = ""; dialogFooter1.Button1Text = "&Run Next";
dialogFooter1.Button1Visible = false; dialogFooter1.Button1Visible = true;
dialogFooter1.Button2Result = System.Windows.Forms.DialogResult.Cancel; dialogFooter1.Button2Result = System.Windows.Forms.DialogResult.Cancel;
dialogFooter1.Button2Text = "&Close"; dialogFooter1.Button2Text = "&Close";
dialogFooter1.Button2Visible = true; dialogFooter1.Button2Visible = true;
@ -422,6 +365,7 @@ namespace RandomFileRunner
dialogFooter1.Size = new System.Drawing.Size(464, 70); dialogFooter1.Size = new System.Drawing.Size(464, 70);
dialogFooter1.TabIndex = 0; dialogFooter1.TabIndex = 0;
dialogFooter1.TabStop = false; dialogFooter1.TabStop = false;
dialogFooter1.OnButton1Click += dialogFooter1_OnButton1Click;
dialogFooter1.OnButton2Click += dialogFooter1_OnButton2Click; dialogFooter1.OnButton2Click += dialogFooter1_OnButton2Click;
// //
// t3UserControl1 // t3UserControl1
@ -432,7 +376,7 @@ namespace RandomFileRunner
t3UserControl1.Controls.Add(progressBar1); t3UserControl1.Controls.Add(progressBar1);
t3UserControl1.EnableMovable = false; t3UserControl1.EnableMovable = false;
t3UserControl1.EnableStepWidth = false; t3UserControl1.EnableStepWidth = false;
t3UserControl1.Location = new System.Drawing.Point(10, 186); t3UserControl1.Location = new System.Drawing.Point(10, 346);
t3UserControl1.Name = "t3UserControl1"; t3UserControl1.Name = "t3UserControl1";
t3UserControl1.Size = new System.Drawing.Size(444, 20); t3UserControl1.Size = new System.Drawing.Size(444, 20);
t3UserControl1.TabIndex = 56; t3UserControl1.TabIndex = 56;
@ -445,11 +389,35 @@ namespace RandomFileRunner
t3UserControl2.Controls.Add(progressBar2); t3UserControl2.Controls.Add(progressBar2);
t3UserControl2.EnableMovable = false; t3UserControl2.EnableMovable = false;
t3UserControl2.EnableStepWidth = false; t3UserControl2.EnableStepWidth = false;
t3UserControl2.Location = new System.Drawing.Point(10, 211); t3UserControl2.Location = new System.Drawing.Point(10, 371);
t3UserControl2.Name = "t3UserControl2"; t3UserControl2.Name = "t3UserControl2";
t3UserControl2.Size = new System.Drawing.Size(444, 20); t3UserControl2.Size = new System.Drawing.Size(444, 20);
t3UserControl2.TabIndex = 57; t3UserControl2.TabIndex = 57;
// //
// memoBox1
//
memoBox1.Dock = System.Windows.Forms.DockStyle.Fill;
memoBox1.Location = new System.Drawing.Point(3, 3);
memoBox1.MemoFileDropType = RyzStudio.Windows.Forms.TMemoBox.MemoFileDrop.All;
memoBox1.MonitorClipboard = false;
memoBox1.Name = "memoBox1";
memoBox1.Size = new System.Drawing.Size(288, 184);
memoBox1.TabIndex = 64;
memoBox1.TextChanged += memoBox1_TextChanged;
//
// t3UserControl3
//
t3UserControl3.Align = RyzStudio.Enums.ContentAlignment.Right;
t3UserControl3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
t3UserControl3.BackColor = System.Drawing.Color.Transparent;
t3UserControl3.Controls.Add(memoBox1);
t3UserControl3.EnableMovable = false;
t3UserControl3.EnableStepWidth = false;
t3UserControl3.Location = new System.Drawing.Point(160, 78);
t3UserControl3.Name = "t3UserControl3";
t3UserControl3.Size = new System.Drawing.Size(294, 190);
t3UserControl3.TabIndex = 65;
//
// MainForm // MainForm
// //
AllowDrop = true; AllowDrop = true;
@ -457,17 +425,15 @@ namespace RandomFileRunner
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
BackColor = System.Drawing.Color.FromArgb(250, 250, 250); BackColor = System.Drawing.Color.FromArgb(250, 250, 250);
ClientSize = new System.Drawing.Size(464, 601); ClientSize = new System.Drawing.Size(464, 601);
Controls.Add(t3UserControl3);
Controls.Add(t3UserControl2); Controls.Add(t3UserControl2);
Controls.Add(t3UserControl1); Controls.Add(t3UserControl1);
Controls.Add(dialogFooter1); Controls.Add(dialogFooter1);
Controls.Add(textBox2);
Controls.Add(tHorizontalSeparator3);
Controls.Add(label3); Controls.Add(label3);
Controls.Add(label4); Controls.Add(label4);
Controls.Add(button5);
Controls.Add(tHorizontalSeparator1); Controls.Add(tHorizontalSeparator1);
Controls.Add(textBox1); Controls.Add(textBox1);
Controls.Add(button2); Controls.Add(button1);
Controls.Add(label1); Controls.Add(label1);
Controls.Add(menuStrip1); Controls.Add(menuStrip1);
Controls.Add(label9); Controls.Add(label9);
@ -481,13 +447,15 @@ namespace RandomFileRunner
menuStrip1.PerformLayout(); menuStrip1.PerformLayout();
t3UserControl1.ResumeLayout(false); t3UserControl1.ResumeLayout(false);
t3UserControl2.ResumeLayout(false); t3UserControl2.ResumeLayout(false);
t3UserControl3.ResumeLayout(false);
t3UserControl3.PerformLayout();
ResumeLayout(false); ResumeLayout(false);
PerformLayout(); PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.PictureBox pictureBox1;
private RyzStudio.Windows.ThemedForms.T3Button button2; private RyzStudio.Windows.ThemedForms.T3Button button1;
private System.Windows.Forms.ToolTip toolTip1; private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.Label label9; private System.Windows.Forms.Label label9;
private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.MenuStrip menuStrip1;
@ -507,20 +475,19 @@ namespace RandomFileRunner
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator1; private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator1;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox textBox1; private RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox textBox1;
private RyzStudio.Windows.ThemedForms.T3Button button5;
private System.Windows.Forms.OpenFileDialog openFileDialog2; private System.Windows.Forms.OpenFileDialog openFileDialog2;
private System.Windows.Forms.SaveFileDialog saveFileDialog1; private System.Windows.Forms.SaveFileDialog saveFileDialog1;
private RyzStudio.Windows.Forms.TProgressBar progressBar2; private RyzStudio.Windows.Forms.TProgressBar progressBar2;
private RyzStudio.Windows.Forms.TProgressBar progressBar1; private RyzStudio.Windows.Forms.TProgressBar progressBar1;
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator3;
private RyzStudio.Windows.ThemedForms.T4TextBox textBox2;
private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1; private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1;
private RyzStudio.Windows.ThemedForms.T3UserControl t3UserControl1; private RyzStudio.Windows.ThemedForms.T3UserControl t3UserControl1;
private RyzStudio.Windows.ThemedForms.T3UserControl t3UserControl2; private RyzStudio.Windows.ThemedForms.T3UserControl t3UserControl2;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private RyzStudio.Windows.Forms.TMemoBox memoBox1;
private RyzStudio.Windows.ThemedForms.T3UserControl t3UserControl3;
} }
} }

View File

@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
@ -24,24 +25,20 @@ namespace RandomFileRunner
{ {
InitializeComponent(); InitializeComponent();
textBox2.TextBox.ReadOnly = true;
_fileSearcher = new FileSearcher(); _fileSearcher = new FileSearcher();
_fileSearcher.OnDirectoryFound += fileSearcher_OnDirectoryFound; _fileSearcher.OnDirectoryFound += fileSearcher_OnDirectoryFound;
_fileSearcher.OnFileFound += fileSearcher_OnFileFound; _fileSearcher.OnFileFound += fileSearcher_OnFileFound;
_fileSearcher.OnSearchCompleted += fileSearcher_OnSearchCompleted; _fileSearcher.OnSearchCompleted += fileSearcher_OnSearchCompleted;
memoBox1.WordWrap = false;
memoBox1.ScrollBars = ScrollBars.Vertical;
} }
protected override void OnLoad(EventArgs e) protected async override void OnLoad(EventArgs e)
{ {
base.OnLoad(e); base.OnLoad(e);
this.ClearSession(); this.ClearSession();
}
protected async override void OnShown(EventArgs e)
{
base.OnShown(e);
var args = this.GetCommandLine(); var args = this.GetCommandLine();
@ -63,9 +60,16 @@ namespace RandomFileRunner
if (System.IO.File.Exists(jsonfigFilename)) if (System.IO.File.Exists(jsonfigFilename))
{ {
await LoadSessionFile(jsonfigFilename); await LoadSessionFile(jsonfigFilename);
}
textBox2.Focus(); UIControl.Invoke(button1, (x) => button1.Enabled = (this.CurrentSession.SearchItems.Count > 0));
}
}
protected async override void OnShown(EventArgs e)
{
base.OnShown(e);
memoBox1.Focus();
} }
protected override void OnFormClosing(FormClosingEventArgs e) protected override void OnFormClosing(FormClosingEventArgs e)
@ -101,7 +105,7 @@ namespace RandomFileRunner
case User32.WM_HOTKEY: case User32.WM_HOTKEY:
if (m.WParam.ToInt32() == 1) if (m.WParam.ToInt32() == 1)
{ {
button5_MouseClick(null, null); dialogFooter1_OnButton1Click(null, null);
} }
break; break;
@ -128,8 +132,8 @@ namespace RandomFileRunner
UIControl.Invoke(pictureBox1, (x) => pictureBox1.Image = (value ? RyzStudio.Resources.T3Resource.loading_block : null)); UIControl.Invoke(pictureBox1, (x) => pictureBox1.Image = (value ? RyzStudio.Resources.T3Resource.loading_block : null));
UIControl.Invoke(textBox1, (x) => textBox1.Enabled = !value); UIControl.Invoke(textBox1, (x) => textBox1.Enabled = !value);
UIControl.Invoke(button2, (x) => button2.LabelText = (value ? "&Cancel" : "&Search")); UIControl.Invoke(button1, (x) => button1.LabelText = (value ? "&Cancel" : "&Search"));
UIControl.Invoke(button5, (x) => button5.Enabled = !value); UIControl.Invoke(dialogFooter1, (x) => dialogFooter1.Button1Visible = !value);
} }
} }
@ -144,27 +148,17 @@ namespace RandomFileRunner
private set => field = value; private set => field = value;
} = new AppSession(); } = new AppSession();
public List<string> SearchPaths private List<string> SearchPathList
{ {
get get
{ {
if (field == null) field = new List<string>(); return (memoBox1.Lines?.ToList() ?? new List<string>()).Where(x => !string.IsNullOrWhiteSpace(x)).ToList();
return field;
}
private set
{
field = value;
textBox2.Text = string.Join(", ", field.ToArray());
} }
} }
private void menuStrip1_MenuActivate(object sender, EventArgs e) private void menuStrip1_MenuActivate(object sender, EventArgs e)
{ {
saveAsToolStripMenuItem.Enabled = (!this.IsBusy && (SearchPaths.Count > 0)); saveAsToolStripMenuItem.Enabled = (!this.IsBusy && (this.SearchPathList.Count > 0));
toolStripMenuItem2.Enabled = (!this.IsBusy && (_foundFiles.Count > 0)); toolStripMenuItem2.Enabled = (!this.IsBusy && (_foundFiles.Count > 0));
} }
@ -279,7 +273,7 @@ namespace RandomFileRunner
/// <summary> /// <summary>
/// Export file list /// Export File List
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
@ -368,31 +362,31 @@ namespace RandomFileRunner
{ {
await Task.Run(() => await Task.Run(() =>
{ {
UIControl.Invoke(label4, (x) => label4.Text = $"Done in {Math.Floor(elapsedTime.TotalMinutes)}m {elapsedTime.Seconds}s"); if (!_cancellationToken.IsCancellationRequested)
{
UIControl.Invoke(label4, (x) => label4.Text = $"Done ({Math.Floor(elapsedTime.TotalMinutes)}m {elapsedTime.Seconds}s)");
}
else
{
UIControl.Invoke(label4, (x) => label4.Text = $"Cancelled ({Math.Floor(elapsedTime.TotalMinutes)}m {elapsedTime.Seconds}s)");
_cancellationToken = new CancellationTokenSource();
}
UIControl.Invoke(label3, (x) => label3.Text = ((_foundFiles.Count <= 0) ? "0" : _foundFiles.Count.ToString("#,#", System.Globalization.CultureInfo.CurrentCulture)) + " File" + ((_foundFiles.Count == 1) ? "" : "s") + " Found"); UIControl.Invoke(label3, (x) => label3.Text = ((_foundFiles.Count <= 0) ? "0" : _foundFiles.Count.ToString("#,#", System.Globalization.CultureInfo.CurrentCulture)) + " File" + ((_foundFiles.Count == 1) ? "" : "s") + " Found");
progressBar1.Value = sender.BufferLevel; progressBar1.Value = sender.BufferLevel;
progressBar2.Value = sender.FileCount; progressBar2.Value = sender.FileCount;
UIControl.Invoke(dialogFooter1, (x) => dialogFooter1.Button1Visible = (_foundFiles.Count > 0));
this.IsBusy = false;
}); });
} }
#endregion #endregion
private void textBox2_OnButtonClick(object sender, EventArgs e)
{
if (this.IsBusy)
{
return;
}
var form = new MemoBoxForm(this.SearchPaths);
if (form.ShowDialog() == DialogResult.OK)
{
this.SearchPaths = form.Result;
}
}
/// <summary> /// <summary>
/// Search /// Search
/// </summary> /// </summary>
@ -402,7 +396,7 @@ namespace RandomFileRunner
{ {
if (this.IsBusy) if (this.IsBusy)
{ {
button2.LabelText = "&Cancelling..."; button1.LabelText = "&Cancelling...";
_cancellationToken.Cancel(); _cancellationToken.Cancel();
return; return;
@ -417,12 +411,17 @@ namespace RandomFileRunner
_cancellationToken = new CancellationTokenSource(); _cancellationToken = new CancellationTokenSource();
_currentProcess = null; _currentProcess = null;
var paths = this.SearchPathList;
_fileSearcher.FileSearchPattern = textBox1.Text; _fileSearcher.FileSearchPattern = textBox1.Text;
_fileSearcher.SearchPath = new List<string>(); _fileSearcher.SearchPath = new List<string>();
UIControl.Invoke(label4, (x) => label4.Text = $"Peeking...");
UIControl.Invoke(label3, (x) => label3.Text = "");
await Task.Run(() => await Task.Run(() =>
{ {
foreach (var item in SearchPaths) foreach (var item in paths)
{ {
if (_cancellationToken.IsCancellationRequested) if (_cancellationToken.IsCancellationRequested)
{ {
@ -433,6 +432,7 @@ namespace RandomFileRunner
{ {
_foundFiles.Add(item); _foundFiles.Add(item);
UIControl.Invoke(label3, (x) => label3.Text = item);
continue; continue;
} }
@ -440,70 +440,28 @@ namespace RandomFileRunner
{ {
_fileSearcher.SearchPath.Add(item); _fileSearcher.SearchPath.Add(item);
UIControl.Invoke(label3, (x) => label3.Text = item);
continue; continue;
} }
} }
UIControl.Invoke(label4, (x) => label4.Text = $"Peeking... {paths.Count}");
UIControl.Invoke(label3, (x) => label3.Text = ((_foundFiles.Count <= 0) ? "0" : _foundFiles.Count.ToString("#,#", System.Globalization.CultureInfo.CurrentCulture)) + " File" + ((_foundFiles.Count == 1) ? "" : "s") + " Found"); UIControl.Invoke(label3, (x) => label3.Text = ((_foundFiles.Count <= 0) ? "0" : _foundFiles.Count.ToString("#,#", System.Globalization.CultureInfo.CurrentCulture)) + " File" + ((_foundFiles.Count == 1) ? "" : "s") + " Found");
}); });
if (_fileSearcher.SearchPath.Count > 0) if (_fileSearcher.SearchPath.Count <= 0)
{ {
UIControl.Invoke(label4, (x) => label4.Text = $"Done");
UIControl.Invoke(label3, (x) => label3.Text = ((_foundFiles.Count <= 0) ? "0" : _foundFiles.Count.ToString("#,#", System.Globalization.CultureInfo.CurrentCulture)) + " File" + ((_foundFiles.Count == 1) ? "" : "s") + " Found");
}
else
{
UIControl.Invoke(label4, (x) => label4.Text = $"Searching...");
await _fileSearcher.Search(_cancellationToken.Token); await _fileSearcher.Search(_cancellationToken.Token);
} }
this.IsBusy = false; //this.IsBusy = false;
_cancellationToken = new CancellationTokenSource();
}
/// <summary>
/// Run next
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void button5_MouseClick(object sender, MouseEventArgs e)
{
if (this.IsBusy)
{
return;
}
if (_foundFiles.Count <= 0)
{
return;
}
await Task.Run(() =>
{
this.IsBusy = true;
if (this.CurrentSession.ClosePrevOnNext)
{
CloseCurrentProcess(_currentProcess);
}
string filename = null;
// retry 8 times
for (int i = 0; i < this.CurrentSession.RetryOnError; i++)
{
filename = _foundFiles[Random.Shared.Next(0, (_foundFiles.Count - 1))];
if (System.IO.File.Exists(filename))
{
continue;
}
filename = null;
}
if (!string.IsNullOrWhiteSpace(filename))
{
_currentProcess = RyzStudio.Diagnostics.Process.Execute(filename);
}
this.IsBusy = false;
});
} }
/// <summary> /// <summary>
@ -562,13 +520,16 @@ namespace RandomFileRunner
_foundFiles = new List<string>(); _foundFiles = new List<string>();
_currentProcess = null; _currentProcess = null;
textBox1.Text = "*.*"; UIControl.Invoke(textBox1, (_) => textBox1.Text = "*.*");
UIControl.Invoke(memoBox1, (_) => memoBox1.Clear());
progressBar1.Clear(0); progressBar1.Clear(0);
progressBar2.Clear(0); progressBar2.Clear(0);
UIControl.Invoke(label4, (x) => label4.Text = ""); UIControl.Invoke(label4, (x) => label4.Text = "");
UIControl.Invoke(label3, (x) => label3.Text = ""); UIControl.Invoke(label3, (x) => label3.Text = "");
UIControl.Invoke(button1, (x) => button1.Enabled = false);
UIControl.Invoke(dialogFooter1, (x) => dialogFooter1.Button1Visible = false);
} }
protected async Task LoadSessionFile(string filename) protected async Task LoadSessionFile(string filename)
@ -581,7 +542,18 @@ namespace RandomFileRunner
textBox1.Text = (string.IsNullOrWhiteSpace(this.CurrentSession.SearchFilePattern) ? "*" : this.CurrentSession.SearchFilePattern?.Trim()); textBox1.Text = (string.IsNullOrWhiteSpace(this.CurrentSession.SearchFilePattern) ? "*" : this.CurrentSession.SearchFilePattern?.Trim());
SearchPaths = this.CurrentSession?.SearchItems ?? new List<string>(); foreach (var item in this.CurrentSession?.SearchItems)
{
if (string.IsNullOrWhiteSpace(item))
{
continue;
}
UIControl.Invoke(memoBox1, (_) => memoBox1.AddLine(item));
}
UIControl.Invoke(label4, (x) => label4.Text = "Ready");
UIControl.Invoke(button1, (x) => button1.Enabled = (this.CurrentSession?.SearchItems.Count > 0));
// hotkey // hotkey
InvalidateHotKey(); InvalidateHotKey();
@ -603,17 +575,7 @@ namespace RandomFileRunner
await Task.Run(() => await Task.Run(() =>
{ {
this.CurrentSession.SearchFilePattern = textBox1.Text; this.CurrentSession.SearchFilePattern = textBox1.Text;
this.CurrentSession.SearchItems = new List<string>(); this.CurrentSession.SearchItems = this.SearchPathList;
foreach (var item in SearchPaths)
{
if (string.IsNullOrWhiteSpace(item))
{
continue;
}
this.CurrentSession.SearchItems.Add(item.Trim());
}
var result = RyzStudio.Text.Json.JsonSerialiser.SerialiseFile(filename, this.CurrentSession); var result = RyzStudio.Text.Json.JsonSerialiser.SerialiseFile(filename, this.CurrentSession);
if (result.Success) if (result.Success)
@ -627,10 +589,70 @@ namespace RandomFileRunner
}); });
} }
/// <summary>
/// Run Next
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void dialogFooter1_OnButton1Click(object sender, MouseEventArgs e)
{
if (this.IsBusy)
{
return;
}
if (_foundFiles.Count <= 0)
{
return;
}
await Task.Run(() =>
{
this.IsBusy = true;
if (this.CurrentSession.ClosePrevOnNext)
{
CloseCurrentProcess(_currentProcess);
}
string filename = null;
// retry 8 times
for (int i = 0; i < this.CurrentSession.RetryOnError; i++)
{
filename = _foundFiles[Random.Shared.Next(0, (_foundFiles.Count - 1))];
if (System.IO.File.Exists(filename))
{
continue;
}
filename = null;
}
if (!string.IsNullOrWhiteSpace(filename))
{
_currentProcess = RyzStudio.Diagnostics.Process.Execute(filename);
}
this.IsBusy = false;
});
}
/// <summary>
/// Close
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dialogFooter1_OnButton2Click(object sender, MouseEventArgs e) private void dialogFooter1_OnButton2Click(object sender, MouseEventArgs e)
{ {
this.Close(); this.Close();
} }
private void memoBox1_TextChanged(object sender, EventArgs e)
{
UIControl.Invoke(button1, (x) => button1.Enabled = !string.IsNullOrWhiteSpace(memoBox1.Text));
}
} }
} }

View File

@ -138,296 +138,296 @@
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAoAAABbAAAAzQAAAPsAAAD7AAAAzQAAAFoAAAAJAAAAAAAAAAAAAAAAAAAAAAAA AAAlJSUpKCgojCkpKbYoKCjYKCgo7CgoKPkoKCj5KCgo7CgoKNgpKSm2KCgojCUlJSkAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAMAAAAewAAAO4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADuAAAAewAA AAAAAAAAAAAAAAAAAAAoKCjVKCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygo
AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA KNUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAHIAAADqAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCjtKCgo/ygoKP8sKyj/OzQn/0M6J/9DOif/OzQn/ywr
AP8AAAD/AAAA/wAAAOoAAAByAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA KP8oKCj/KCgo/ygoKO0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAABmAAAA5AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA AAAAAAAAMzMzBSgoKDogICAIAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCjtKCgo/zs0J//bnR//3p8f/96f
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA6QAAAHcAAAAHAAAAAAAAAAAAAAAAAAAAAAAA H//enx//3p8f/9udH/87NCf/KCgo/ygoKO0AAAAAAAAAAAAAAAAAAAAAAAAAACAgIAgoKCg6MzMzBQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAXwAAAN4AAAD/AAAA/wAAAP8AAAD/AAAA/wAA AAAAAAAAAAAAAAAAAAAkJCQjKCgozCgoKP8oKCjNKCgoEwAAAAAAAAAAKSkpJSgoKHgoKCj5KCgo/zw1
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADeAAAAXwAA J//enx//3p8f/96fH//enx//3p8f/96fH/88NSf/KCgo/ygoKPkoKCh4KSkpJQAAAAAAAAAAKCgoEygo
AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA KM0oKCj/KCgozCQkJCMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAE0AAADRAAAA/wAAAP8AAAD/AAAA/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpKUsoKCjxKCgo/ygoKP8oKCj/JycnzykpKUQnJye1KCgo/ygo
AP8AAAD/AAAA/woLC/8+RET/AAAA/wAAAP8AAAD/AAAA/0ZNTv8ODw//AAAA/wAAAP8AAAD/AAAA/wAA KP8oKCj/KCgo/0M6J//enx//3p8f/96fH//enx//3p8f/96fH/9DOif/KCgo/ygoKP8oKCj/KCgo/ygo
AP8AAAD/AAAA/wAAANcAAABeAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA KLQpKSlEJycnzygoKP8oKCj/KCgo/ygoKPApKSlLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAzQAAAP8AAAD/AAAA/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoXygoKPsoKCj/KCgo/ygoKP8oKCj/KCgo/ygo
AP8AAAD/AAAA/wAAAP8JCgr/Z3Fx/83i4/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/R5uf/dYGC/wwN KP8oKCj/KCgo/ygoKP8oKCj/Rjsm/6h8Iv/enx//3p8f/96fH//enx//3p8f/96fH/+ofCL/Rjsm/ygo
Df8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA1AAAAFUAAAABAAAAAAAAAAAAAAAAAAAAAAAA KP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj7KSkpXgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAMEAAAD/AAAA/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKChfKCgo/igoKP8oKCj/XEol/7CB
AP8AAAD/AAAA/wAAAP8AAAD/BQYG/1hhYf/G2tv/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SR If82MSf/KCgo/ygoKP8oKCj/OjQn/4VlJP/AiyD/3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
kv/c8vP/3PLz/8vf4P9ncXH/CAkJ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADJAAAATQAA H//enx//3p8f/8CMIf+EZCT/OjQn/ygoKP8oKCj/KCgo/zYxJ/+vgCH/XEol/ygoKP8oKCj/KCgo/ikp
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAC8AAAA/wAA KV4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpKUsoKCj7KCgo/ygo
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wQFBf9QWFn/wNPU/9zy8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAA KP9sVCX/3J4g/96fH/+8iSD/PDUn/zo0J/+NaiP/15of/96fH//enx//3p8f/96fH//enx//3p8f/96f
AP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8//c8vP/xNfY/19oaf8GBwf/AAAA/wAAAP8AAAD/AAAA/wAA H//enx//3p8f/96fH//enx//3p8f/96fH//enx//15of/41qI/86NCf/PDUn/7yJIP/enx//3J4g/2xU
AP8AAAD/AAAA/wAAAMQAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAtgAA Jf8oKCj/KCgo/ygoKPspKSlLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkIygo
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwP/UVla/7/S0//c8vP/3PLz/9zy8//c8vP/3PLz/9zy KPAoKCj/KCgo/2xUJf/dnh//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8/+/0tP/UVla/wMD H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
A/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAtgAAAC8AAAAAAAAAAAAAAAAAAAAAAAAAAQAA H//enx//3p8f/92eH/9sVCX/KCgo/ygoKP8oKCjwJCQkIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AHoAAAD6AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/0lRUf+5y8z/3PLz/9zy8//c8vP/3PLz/9zy AABAQEAEKCgozCgoKP8oKCj/XEol/9yeIP/enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8//D0tP/xdTV/9zy H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
8//c8vP/3PLz/7nLzP9JUVH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPoAAAB6AAAAAQAA H//enx//3p8f/96fH//enx//3p8f/96fH//cniD/XEol/ygoKP8oKCj/KCgozEBAQAQAAAAAAAAAAAAA
AAAAAAAAAAAAfwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9CSEj/s8TF/9zy8//c8vP/3PLz/9zy AAAAAAAAAAAAAAAAAAAqKio3KCgo/ygoKP8oKCj/sIEh/96fH//enx//3p8f/96fH//enx//3p8f/96f
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy H//enx//3p8f/96fH//enx//3p8f/8ONIP+QbCP/eFwk/2hSJf9oUiX/eV0k/5BsI//DjSD/3p8f/96f
8/+vubn/kJCQ/73Jyv/c8vP/3PLz/9zy8//c8vP/s8TF/0JISP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//sIEh/ygoKP8oKCj/KCgo/yoq
AP8AAAD/AAAAfQAAAAAAAAA0AAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/OkBA/6u8vf/c8vP/3PLz/9zy KjcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAIKCgozigoKP8oKCj/NjEn/7yJIP/enx//3p8f/96f
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SR H//enx//3p8f/96fH//enx//3p8f/9yeIP+UbyL/RTsn/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygo
kv/c8vP/3PLz/9zy8/+vubn/oaGh/5ucnP+2wMH/3PLz/9zy8//c8vP/3PLz/9zy8/+rvL3/OkBA/wAA KP8oKCj/Rjwn/5VvI//cniD/3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH/+8iSD/NjEn/ygo
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/gAAADMAAAClAAAA/wAAAP8AAAD/AAAA/yQoKP+ktLX/3PLz/9zy KP8oKCj/KCgoziAgIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoEycnJ88oKCj/KCgo/z42
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/1urr/9Dj5P/X7O3/3PLz/9zy8/+EkZL/AAAA/wAA J//dnh//3p8f/96fH//enx//3p8f/96fH//enx//tIMh/0U7J/8oKCj/KCgo/ygoKP8oKCj/KCgo/ygo
AP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8/+vubn/rq+v//T09P+ioqL/sbm5/9vx8v/c8vP/3PLz/9zy KP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP9GPCf/tYQh/96fH//enx//3p8f/96fH//enx//3p8f/92e
8//c8vP/3PLz/6S0tf8jJyf/AAAA/wAAAP8AAAD/AAAA/wAAAKQAAADeAAAA/wAAAP8AAAD/CQkK/8fb H/8+Nif/KCgo/ygoKP8nJyfPKCgoEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkp
3P/c8vP/3PLz/8vc3f+zvb3/rbW1/6eurv+hpqb/nJ+f/5aXl/+QkJD/j4+P/4+Pj//H2Nj/3PLz/9zy KUQoKCj/KCgo/zkzJ//dnh//3p8f/96fH//enx//3p8f/96fH/+YcSL/LCso/ygoKP8oKCj/KCgo/1VV
8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8/+vubn/rq+v///////4+Pj/qKmp/6iu Vf+YmJj/xMTE/9vb2//b29v/xMTE/5eXl/9UVFT/KCgo/ygoKP8oKCj/LSso/5lyIv/enx//3p8f/96f
r//Z7u//3PLz/9zy8//c8vP/3PLz/9zy8//G2tv/CAkJ/wAAAP8AAAD/AAAA/wAAAN0AAAD8AAAA/wAA H//enx//3p8f/92eH/85Myf/KCgo/ygoKP8pKSlEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AP8AAAD/Ki4v/9zy8//c8vP/3PLz/5WWlv+Zmpr/paam/6+vr/+3t7f/wMDA/8jIyP/R0dH/pKWl/7K7 AAAAAAAAAAAAACcnJ7UoKCj/KCgo/41qI//enx//3p8f/96fH//enx//3p8f/5hxIv8oKCj/KCgo/ygo
u//c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8/+vubn/rq+v//// KP9TU1P/ycnJ////////////////////////////////////////////x8fH/1FRUf8oKCj/KCgo/ygo
////////+/v7/6+vr/+kqan/2O3u/9zy8//c8vP/3PLz/9zy8//c8vP/Ki4v/wAAAP8AAAD/AAAA/wAA KP+ZciL/3p8f/96fH//enx//3p8f/96fH/+NaiP/KCgo/ygoKP8nJye1AAAAAAAAAAAAAAAAAAAAAAAA
APwAAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/4+Pj//d3d3///////////////////////// AAAAAAAAAAAAAAAAAAAAAAAAKCgoJigoKP8oKCj/OjQn/9eaH//enx//3p8f/96fH//enx//tIMh/ywr
///V1tb/o6en/9vw8f/c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy KP8oKCj/KCgo/3t7e//6+vr///////////////////////////////////////////////////////n5
8/+vubn/rq+v//////////////////7+/v+5urr/oKOj/9Xp6v/c8vP/3PLz/9zy8//c8vP/LTEy/wAA +f95eXn/KCgo/ygoKP8tKyj/tYQh/96fH//enx//3p8f/96fH//XmyD/OTMn/ygoKP8oKCj/KSkpJQAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/4+Pj//d3d3///////// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoeCgoKP8oKCj/hWUk/96fH//enx//3p8f/96f
/////////////+np6f+eoKD/1urr/9zy8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SR H//cniD/RDon/ygoKP8oKCj/e3t7////////////////////////////////////////////////////
kv/c8vP/3PLz/9zy8/+vubn/rq+v////////////////////////////wsPD/5udnf/R5OX/3PLz/9zy ////////////////////////eXl5/ygoKP8oKCj/Rjwn/9yeIP/enx//3p8f/96fH//enx//hGQk/ygo
8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/4+P KP8oKCj/KCgoeAAAAAAAAAAAAAAAAAAAAAAlJSUpKSkp1igoKO4oKCjuKCgo+SgoKP8oKCj/wIsg/96f
j//d3d3/////////////////9fX1/52env/N39//3PLz/9zy8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAA H//enx//3p8f/96fH/+TbiL/KCgo/ygoKP9TU1P/+vr6///////39/f/sLCw/87Ozv//////////////
AP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8/+vubn/rq+v/////////////////////////////////8jJ ////////////////////////+vr6/7W1tf//////+fn5/1BQUP8oKCj/KCgo/5VvI//enx//3p8f/96f
yf+YmZn/zuDh/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy H//enx//wIwh/ygoKP8oKCj/KCgo+SgoKO4oKCjuKSkp1iUlJSkoKCiOKCgo/ygoKP8oKCj/KCgo/ygo
8//c8vP/3PLz/4+Pj//d3d3////////////9/f3/qaqq/8LQ0P/c8vP/3PLz/9zy8//c8vP/3PLz/9zy KP9GPCb/3p8f/96fH//enx//3p8f/96fH/9EOif/KCgo/ygoKP/Kysr///////////9VU07/FhEH/wYF
8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8/+vubn/rq+v/////////////v7+/+jo A/9RT0z/4ODg////////////////////////////zc3N/wEBAf///////////8fHx/8oKCj/KCgo/0Y8
6P/MzMz/r6+v/5WVlf+Pj4//pKmq/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA J//enx//3p8f/96fH//enx//3p8f/0Y7Jv8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKI4nJye1KCgo/ygo
AP8AAAD/LTEy/9zy8//c8vP/3PLz/4+Pj//d3d3///////////+7vb3/tL2+/9zy8//c8vP/3PLz/9zy KP8/Nyf/QTgn/0Y8J/+pfCL/3p8f/96fH//enx//3p8f/8GMIP8oKCj/KCgo/1ZWVv//////////////
8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy8/+vubn/paWl/83N //8GBQT/xYQA/9mSAP9HMgb/CgkG/4SEg//4+Pj/////////////////y8vL/wAAAP//////////////
zf+wsLD/lpaW/4+Pj/+UlZX/p62t/7rHx//N3+D/2/Hy/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAA //9UVFT/KCgo/ygoKP/DjSD/3p8f/96fH//enx//3p8f/6l8Iv9GPCf/QTgn/z42J/8oKCj/KCgo/ycn
AP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/4+Pj//d3d3//////9TV1f+lqqr/2/Hy/9zy J7UoKCjaKCgo/y0rKP/bnR//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/45rI/8oKCj/KCgo/5mZ
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8/+EkZL/AAAA/wAAAP8AAAD/AAAA/4SRkv/c8vP/3PLz/9zy mf////////////////8AAAD/y4gA//+rAP//qwD/sncA/yAYB/8kIRz/tbW1////////////y8vL/wAA
8/+0v7//j4+P/5SUlf+mrKz/ucXF/83f3//b8fL/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/LTEy/wAA AP////////////////+Xl5f/KCgo/ygoKP+QbCP/3p8f/96fH//enx//3p8f/96fH//enx//3p8f/9ud
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/4+Pj//d3d3/5ubm/52f H/8sKyj/KCgo/ygoKNkoKCjsKCgo/zs0J//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/3ld
n//W6uv/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8/9we3z/AAAA/wAAAP8AAAD/AAAA/3B7 JP8oKCj/KCgo/8bGxv////////////////8AAAD/y4gA//+rAP//qwD//6sA//WkAP96UgH/BwYD/1ZU
fP/c8vP/3PLz/9zy8//a7/D/z+Hi/9vx8v/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy T//39/f/y8vL/wAAAP/////////////////Dw8P/KCgo/ygoKP97XiT/3p8f/96fH//enx//3p8f/96f
8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/4+P H//enx//3p8f/96fH/86NCf/KCgo/ygoKOooKCj5KCgo/0Q6J//enx//3p8f/96fH//enx//3p8f/96f
j//S0tL/np+f/8/h4v/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/w9bX/1hhYf8CAgL/AAAA/wAA H//enx//3p8f/2dRJf8oKCj/KCgo/9vb2/////////////////8AAAD/y4gA//+rAP//qwD//6sA//+r
AP8AAAD/AAAA/wEBAf9JUVH/v9LT/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy AP//qwD/2ZIA/ygdCP+IiIj/y8vL/wAAAP/////////////////a2tr/KCgo/ygoKP9oUiX/3p8f/96f
8//c8vP/3PLz/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy H//enx//3p8f/96fH//enx//3p8f/96fH/9EOif/KCgo/ygoKPgoKCj5KCgo/0Q6J//enx//3p8f/96f
8//c8vP/3PLz/4+Pj/+VlZX/xNLT/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/8nd3v9gaWr/BgcH/wAA H//enx//3p8f/96fH//enx//3p8f/2ZQJf8oKCj/KCgo/9zc3P////////////////8AAAD/y4gA//+r
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BgcH/2Bpav/J3d7/3PLz/9zy8//c8vP/3PLz/9zy AP//qwD//6sA//+rAP//qwD/2ZIA/ygdCP+IiIj/y8vL/wAAAP/////////////////b29v/KCgo/ygo
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA KP9nUSX/3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH/9EOif/KCgo/ygoKPgoKCjsKCgo/zs0
AP8AAAD/LTEy/9zy8//c8vP/3PLz/4+Pj/+2wMH/3PLz/9zy8//c8vP/3PLz/9zy8//O4+T/anV1/woL J//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/3hcJP8oKCj/KCgo/8fHx///////////////
C/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCwv/anV1/87j //8AAAD/y4gA//+rAP//qwD//6sA//WkAP96UgH/BwYD/1ZUT//39/f/y8vL/wAAAP//////////////
5P/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAA ///ExMT/KCgo/ygoKP96XiT/3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH/86NCf/KCgo/ygo
AP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/7nFxf/b8fL/3PLz/9zy8//c8vP/0+np/3WB KOooKCjaKCgo/y0rKP/bnR//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/45rI/8oKCj/KCgo/5qa
gv8QERH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/x4hIf8eISH/AAAA/wAAAP8AAAD/AAAA/wAA mv////////////////8AAAD/y4gA//+rAP//qwD/sncA/yAYB/8kIRz/tbW1////////////y8vL/wAA
AP8AAAD/AAAA/xAREf91gYL/0+np/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/LTEy/wAA AP////////////////+Xl5f/KCgo/ygoKP+QbCP/3p8f/96fH//enx//3p8f/96fH//enx//3p8f/9ud
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9jt H/8sKyj/KCgo/ygoKNknJye1KCgo/ygoKP8/Nyf/QTgn/0Y8J/+pfCL/3p8f/96fH//enx//3p8f/8CL
7v+EkZL/FhkZ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8aHB3/hJGS/9nv8P/a8PH/k6Gi/x8i IP8oKCj/KCgo/1ZWVv////////////////8GBQT/xYQA/9mSAP9HMgb/CgkG/4WFhP/4+Pj/////////
Iv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/EhQU/3WBgv/V6uv/3PLz/9zy8//c8vP/3PLz/9zy ////////y8vL/wAAAP////////////////9VVVX/KCgo/ygoKP/CjSD/3p8f/96fH//enx//3p8f/6l8
8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy8//c8vP/3PLz/9zy Iv9GPCf/QTgn/z42J/8oKCj/KCgo/ycnJ7UoKCiOKCgo/ygoKP8oKCj/KCgo/ygoKP9GPCb/3p8f/96f
8//a8PH/k6Gi/x4hIf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/EhQU/3WBgv/W6+z/3PLz/9zy H//enx//3p8f/96fH/9DOif/KCgo/ygoKP/Ly8v///////////9UUk3/GBIH/wYFA/9SUE3/4ODg////
8//c8vP/3PLz/9jt7v+EkZL/FhkZ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8aHB3/hJGS/9nu ////////////////////////zc3N/wEBAf///////////8nJyf8oKCj/KCgo/0U7J//enx//3p8f/96f
7//c8vP/3PLz/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LTEy/9zy H//enx//3p8f/0Y8Jv8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKI4lJSUpKSkp1igoKO4oKCjuKCgo+Sgo
8//c8vP/3PLz/6Gxsv8pLS3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xAREf91gYL/0+np/9zy KP8oKCj/wIsg/96fH//enx//3p8f/96fH/+TbiL/KCgo/ygoKP9VVVX/+/v7///////39/f/rq6u/83N
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/1uvs/4SRkv8TFRX/AAAA/wAAAP8AAAD/AAAA/wAA zf//////////////////////////////////////+vr6/7W1tf//////+vr6/1JSUv8oKCj/KCgo/5Rv
AP8AAAD/AAAA/yMmJv+ToaL/2/Hy/9zy8//c8vP/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA Iv/enx//3p8f/96fH//enx//wIsg/ygoKP8oKCj/KCgo+SgoKO4oKCjuKSkp1iUlJSkAAAAAAAAAAAAA
AP8AAAD/LTEy/9zy8/+hsbL/LTEy/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCgr/Z3Fx/87j AAAAAAAAKCgoeSgoKP8oKCj/hWUj/96fH//enx//3p8f/96fH//bnR//Qzon/ygoKP8oKCj/fX19////
5P/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//S5+j/dYGC/w0O ////////////////////////////////////////////////////////////////////////e3t7/ygo
Dv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Jysr/5Ohov/c8vP/LTEy/wAAAP8AAAD/AAAA/wAA KP8oKCj/RDon/9yeIP/enx//3p8f/96fH//enx//hWUk/ygoKP8oKCj/KCgoeAAAAAAAAAAAAAAAAAAA
AP8AAAD/AAAA/wAAAP8AAAD/IyYn/zk/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BQYG/1hh AAAAAAAAAAAAAAAAAAAAAAAAKCgoJigoKP8oKCj/OzQn/9eaH//enx//3p8f/96fH//enx//s4Mi/ywr
Yf/H29z/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9nu7//S5eb/3PLz/9zy KP8oKCj/KCgo/319ff/6+vr///////////////////////////////////////////////////////r6
8//c8vP/3PLz/8zg4f9ncXH/CAkJ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8yNzf/IiUm/wAA +v97e3v/KCgo/ygoKP8sKyj/tIMh/96fH//enx//3p8f/96fH//Xmh//OjQn/ygoKP8oKCj/KSkpJQAA
AP8AAAD/AAAA/wAAAP8AAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpKbYoKCj/KCgo/45rI//enx//3p8f/96f
Av9JUVH/wNPU/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/2O3u/8bW1v+1v7//o6en/5KS H//enx//3p8f/5dxI/8oKCj/KCgo/ygoKP9UVFT/y8vL////////////////////////////////////
kv+RkZH/2e7v/9zy8//c8vP/3PLz/9zy8//c8vP/xNfY/1hhYf8DBAT/AAAA/wAAAP8AAAD/AAAA/wAA ////////ycnJ/1NTU/8oKCj/KCgo/ygoKP+YcSL/3p8f/96fH//enx//3p8f/96fH/+NaiP/KCgo/ygo
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAADlAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA KP8nJye1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpKUQoKCj/KCgo/zkz
AP8CAgL/TFRU/7zP0P/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//V6er/w9LT/7K7u/+go6P/lJWV/6qr J//dnh//3p8f/96fH//enx//3p8f/96fH/+XcSP/LCso/ygoKP8oKCj/KCgo/1ZWVv+ampr/xsbG/9vb
q//Gx8f/4uLi/6SkpP+ip6f/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8/+8z9D/TFRU/wIC 2//b29v/xsbG/5mZmf9WVlb/KCgo/ygoKP8oKCj/LCso/5hxIv/enx//3p8f/96fH//enx//3p8f/92e
Av8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOQAAADHAAAA/wAAAP8AAAD/AAAA/wAA H/85Myf/KCgo/ygoKP8pKSlEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoEycn
AP8AAAD/AAAA/0JISP+zxcb/3PLz/9zy8//c8vP/3PLz/9Tn6P/Azs7/rra3/52goP+Wl5f/r7Cw/8zM J88oKCj/KCgo/z42J//dnh//3p8f/96fH//enx//3p8f/96fH//enx//s4Mi/0I5Jv8oKCj/KCgo/ygo
zP/n5+f//f39////////////9/f3/5CQkP+3wsP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy KP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP9EOif/tIMh/96fH//enx//3p8f/96f
8//c8vP/3PLz/7PFxv9CSEj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAMYAAAB6AAAA/wAA H//enx//3p8f/92eH/8+Nif/KCgo/ygoKP8nJyfPKCgoEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AP8AAAD/AAAA/wAAAP8FBgb/S1NT/8jb3P/c8vP/3PLz/9zy8//c8vP/3PLz/6Knp/+Pj4//oKCg/+bm AAAgICAIKCgozigoKP8oKCj/NjEn/7yJIP/enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/9ud
5v//////////////////////////////////////2NjY/4+Pj//N3t//3PLz/9zy8//c8vP/3PLz/9zy H/+TbiL/Qzon/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/RDon/5NuIv/cniD/3p8f/96f
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//M4OH/Vl1d/wYGBv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA H//enx//3p8f/96fH//enx//3p8f/96fH/+8iSD/NjEn/ygoKP8oKCj/KCgoziAgIAgAAAAAAAAAAAAA
AHkAAAADAAAA4AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woLC/9oc3P/zeLj/9zy8//c8vP/3PLz/9zy AAAAAAAAAAAAAAAAAAAqKio3KCgo/ygoKP8oKCj/sIEh/96fH//enx//3p8f/96fH//enx//3p8f/96f
8//D0dL/nJ6f/5aXl//Ly8v/+/v7////////////////////////////uLi4/5eZmf/c8vP/3PLz/9zy H//enx//3p8f/96fH//enx//3p8f/8GMIP+PayP/eFwk/2hSJf9oUiX/eFwk/49rI//BjCD/3p8f/96f
8//c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/zeLj/2hzc/8KCwv/AAAA/wAAAP8AAAD/AAAA/wAA H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//sIEh/ygoKP8oKCj/KCgo/yoq
AP8AAAD/AAAA4AAAAAMAAAAAAAAACAAAALUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Dg8P/3B7 KjcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAEKCgozCgoKP8oKCj/XUsl/9yeIP/enx//3p8f/96f
fP/R5uf/3PLz/9zy8//c8vP/2/Dx/8DOzv+anJz/mpub/87Ozv/8/Pz/////////////////mZmZ/6y0 H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
tP/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//c8vP/3PLz/9Hm5/9we3z/Dg8P/wAAAP8AAAD/AAAA/wAA H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//cniD/XEol/ygo
AP8AAAD/AAAA/wAAAP8AAAC0AAAACAAAAAAAAAAAAAAAAAAAAAAAAABYAAAA3gAAAP8AAAD/AAAA/wAA KP8oKCj/KCgozEBAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkIygoKPEoKCj/KCgo/2xU
AP8AAAD/AAAA/wAAAP8RExP/eYWF/9Tp6v/c8vP/3PLz/9zy8//a7/D/vcrL/5iZmf+cnZ3/0tLS//7+ Jf/dnh//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
/v/p6en/j4+P/8LQ0f/c8vP/3PLz/9zy8//c8vP/3PLz/9zy8//U6er/eYWF/xETE/8AAAD/AAAA/wAA H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/92e
AP8AAAD/AAAA/wAAAP8AAAD/AAAA3gAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAA H/9sVCX/KCgo/ygoKP8oKCjwJCQkIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgo
AGYAAADkAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xIUFP91gYL/1err/9zy8//c8vP/3PLz/9nu KEwoKCj7KCgo/ygoKP9sVCX/3J4g/96fH/+8iSD/PDUn/zo0J/+OayP/15of/96fH//enx//3p8f/96f
7/+3wsP/lZWW/6Kjo/+zs7P/kJCQ/9br7P/c8vP/3PLz/9zy8//c8vP/2O3u/4SRkv8XGhr/AAAA/wAA H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//15of/41qI/86NCf/PDUn/7yJ
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOkAAAB3AAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IP/enx//3J4g/2xUJf8oKCj/KCgo/ygoKPspKSlLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAGAAAAZgAAAOcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Ghwd/4SR AAAAAAAAAAAAAAAAAAAoKChfKCgo/igoKP8oKCj/XUsl/7CBIf82MSf/KCgo/ygoKP8oKCj/OzQn/4Vl
kv/Z7u//3PLz/9zy8//c8vP/1uvs/7O9vf+Sk5P/o6mp/9zy8//c8vP/3PLz/9rw8f+ToaL/HiEh/wAA I//AiyD/3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/8CLIP+FZST/OjQn/ygo
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAAdwAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA KP8oKCj/KCgo/zYxJ/+wgSH/XEol/ygoKP8oKCj/KCgo/igoKF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAB3AAAA7gAAAP8AAAD/AAAA/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoXygoKPsoKCj/KCgo/ygoKP8oKCj/KCgo/ygo
AP8AAAD/AAAA/wAAAP8cHx//hJGS/9nv8P/c8vP/3PLz/9zy8//Y7e7/2u/w/9zy8//b8fL/k6Gi/yIl KP8oKCj/KCgo/ygoKP8oKCj/Rjsm/6h8Iv/enx//3p8f/96fH//enx//3p8f/96fH/+ofCL/Rjsm/ygo
Jf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAIgAAAAPAAAAAAAAAAAAAAAAAAAAAAAA KP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj7KCgoXwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKEwoKCjxKCgo/ygo
AHcAAADxAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yUpKf+ToaL/2/Hy/9zy8//c8vP/3PLz/6Gx KP8oKCj/JycnzykpKUQpKSm2KCgo/ygoKP8oKCj/KCgo/0M6J//enx//3p8f/96fH//enx//3p8f/96f
sv8rLzD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPQAAACIAAAAEQAAAAAAAAAAAAAAAAAA H/9DOif/KCgo/ygoKP8oKCj/KCgo/ycnJ7UpKSlEJycnzygoKP8oKCj/KCgo/ygoKPEpKSlLAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAVAAAAjgAAAPYAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/LjIz/3+M AAAkJCQjKCgozCgoKP8oKCjNKCgoEwAAAAAAAAAAKCgoJigoKHkoKCj5KCgo/zw1J//enx//3p8f/96f
jP9/jIz/LjIz/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD2AAAAjgAAABUAAAAAAAAAAAAA H//enx//3p8f/96fH/88NSf/KCgo/ygoKPkoKCh4KCgoJgAAAAAAAAAAKCgoEygoKM0oKCj/KCgozCQk
JCMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAMzMzBSgoKDogICAIAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCjtKCgo/zs0
J//bnR//3p8f/96fH//enx//3p8f/9udH/87NCf/KCgo/ygoKO0AAAAAAAAAAAAAAAAAAAAAAAAAACAg
IAgoKCg6MzMzBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAACIAAAA+AAAAP8AAAD/AAAA/wAA AAAoKCjtKCgo/ygoKP8tKyj/PDUn/0M6J/9DOif/PDUn/y0rKP8oKCj/KCgo/ygoKO0AAAAAAAAAAAAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+gAAAJkAAAAbAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAA
AKAAAAD8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPwAAACgAAAAIQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAoAAAAogAAAPwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAAswAA AAAAAAAAAAAAAAAAAAAoKCjVKCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygoKP8oKCj/KCgo/ygo
AC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA KNUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAACKAAAA0gAAAPEAAADxAAAA0gAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJSUpKCgojSkpKbYoKCjYKCgo7SgoKPkoKCj5KCgo7Sgo
AIoAAAApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA KNgpKSm2KCgojSUlJSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///AP///xBP//wAP///EE//8AAP//8QT//AAAP//xBP/w AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//8AD///xBP//wAP///EE///AA///8QT/x8AD4//xBP+D
AAAP//EE/8AAAAP/8QT/gAAAAP/xBP4AAAAAf/EE+AAAAAAf8QTgAAAAAAfxBIAAAAAAAfEEgAAAAAAB AADB//EE/wAAAAD/8QT+AAAAAH/xBPwAAAAAP/EE+AAAAAAf8QTwAAAAAA/xBOAAAAAAB/EE4AAAAAAH
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA 8QTgAAAAAAfxBPAAAAAAD/EE+AAAAAAf8QT4AAAAAB/xBPAAAAAAD/EE8AAAAAAP8QQAAAAAAADxBAAA
AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA AAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA
8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QQAAAAAAADxBAAA 8QQAAAAAAADxBAAAAAAAAPEEAAAAAAAA8QTwAAAAAA/xBPAAAAAAD/EE+AAAAAAf8QT4AAAAAB/xBPAA
AAAAAPEEAAAAAAAA8QQAAAAAAADxBIAAAAAAAfEE4AAAAAAH8QTwAAAAAA/xBPwAAAAAP/EE/wAAAAD/ AAAAD/EE4AAAAAAH8QTgAAAAAAfxBOAAAAAAB/EE8AAAAAAP8QT4AAAAAB/xBPwAAAAAP/EE/gAAAAB/
8QT/wAAAA//xBP/wAAAP//EE//wAAD//8QT//wAA///xBP//wAP///EE///wD///8QQoAAAAIAAAAEAA 8QT/AAAAAP/xBP+DAADB//EE/8fAA+P/8QT//8AD///xBP//wAP///EE///AA///8QQoAAAAIAAAAEAA
AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAACzAAAA+gAAAPoAAACyAAAAPAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAJycndSgoKMgoKCjpKCgo+SgoKPkoKCjpKCgoyCcnJ3UAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEwAAADPAAAA/wAAAP8AAAD/AAAA/wcICP8HCAj/AAAA/wAAAP8AAAD/AAAA/wAAAM8AAABMAAAAAAAA AAAAAAAAAAAAACAgIAgpKSlqJycnJwAAAAAAAAAAAAAAAygoKPQ0MCf/3Z4f/96fH//enx//3Z4f/zQw
J/8oKCj0AAAAAwAAAAAAAAAAJycnJykpKWogICAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAmJiYiJycnzygoKP8pKCjrJycnQigoKIwoKCjpKCgo/zgyJ//enx//3p8f/96f
H//enx//ODIn/ygoKP8oKCjpKCgojCcnJ0IpKCjrKCgo/ycnJ88nJychAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAKCgoLSkoKOcoKCj/Pzcn/ygoKP8oKCj/KCgo/ysqKP9bSSb/qXwi/96f
H//enx//3p8f/96fH/+pfCL/Wkkm/ysqKP8oKCj/KCgo/ygoKP8+Nif/KCgo/ykoKOcoKCgtAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAACcnJyEpKCjnKCgo/3JYJf/bnR//el4k/zAtJ/96XiT/zpQf/96f
H//enx//3p8f/96fH//enx//3p8f/96fH//enx//zpQf/3peJP8wLSf/el4k/9yeIP9xWCT/KCgo/ygo
KOcnJychAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAIKCgozigoKP9xWCT/3p8f/96fH//enx//3p8f/96f
H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
H/91WiT/KCgo/ygoKNIcHBwJAAAAAAAAAAAAAAAAAAAAACgoKGwoKCj/PjYn/9udH//enx//3p8f/96f
H//enx//3p8f/96fH//enx//0pcg/6Z6Iv+QbCP/kGwj/6Z6Iv/SlyD/3p8f/96fH//enx//3p8f/96f
H//enx//3p8f/9yeIP8+Nif/KCgo/ygoKGwAAAAAAAAAAAAAAAAAAAAAKCgoJikoKOsoKCj/eFwk/96f
H//enx//3p8f/96fH//enx//wIwh/2FNJf8qKij/KCgo/ygoKP8oKCj/KCgo/yoqKP9iTiX/wIsg/96f
H//enx//3p8f/96fH//enx//eFwk/ygoKP8pKCjrKCgoJgAAAAAAAAAAAAAAAAAAAAAAAAAAKioqQygo
KP8yLyj/3Z4f/96fH//enx//3p8f/5dxI/8sKyj/KCgo/zw8PP97e3v/nJyc/5ycnP97e3v/Ozs7/ygo
KP8sKyj/mHEj/96fH//enx//3p8f/92eH/8yLyj/KCgo/ycnJ0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAoKCiOKCgo/3teJP/enx//3p8f/96fH/+XcSP/KCgo/y0tLP+dnZ3/+vr6////////////////////
///5+fn/nJyc/y0tLP8oKCj/mHEj/96fH//enx//3p8f/3peJP8oKCj/KCgojAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAygoKOksKij/z5Uf/96fH//enx//wIsh/ywrKP8tLSz/yMjI////////////////////
////////////////////////x8fH/y0tLP8sKyj/wIsg/96fH//enx//zpQf/ysqKP8oKCjoAAAAAwAA
AAAAAAAAKCgodCgoKO4oKCjwKCgo/1tJJv/enx//3p8f/96fH/9hTSX/KCgo/56env//////s7Ku/397
cv/p6en//////////////////////5mZmf//////nJyc/ygoKP9iTiX/3p8f/96fH//enx//W0km/ygo
KP8oKCjwKCgo7igoKHQoKCjIKCgo/zMvJ/83Mij/qXwh/96fH//enx//0Zcg/ysqKP88PDz/+vr6////
//8tJRX/pnED/zAnFf+TkIv//Pz8////////////NDQ0///////5+fn/PDw8/ysqKP/SlyD/3p8f/96f
H/+pfCH/NzIo/zMvJ/8oKCj/KCgoxygoKOouLCj/3J4f/96fH//enx//3p8f/96fH/+leiL/KCgo/319
ff///////////zQqFf//qwD/9qUA/39ZDP84MSP/xMTD//////80NDT///////////97e3v/KCgo/6Z6
Iv/enx//3p8f/96fH//enx//3J4f/y0rKP8oKCjpKCgo+TgyJ//enx//3p8f/96fH//enx//3p8f/5Ft
I/8oKCj/nJyc////////////NCoV//+rAP//qwD//6sA/9qSAP8+MBL/yMjI/zQ0NP///////////5ub
m/8oKCj/k24j/96fH//enx//3p8f/96fH//enx//ODMo/ygoKPgoKCj5ODIn/96fH//enx//3p8f/96f
H//enx//kGwj/ygoKP+dnZ3///////////80KhX//6sA//+rAP//qwD/25MA/z4wEv/Hx8f/NDQ0////
////////nJyc/ygoKP+RbSP/3p8f/96fH//enx//3p8f/96fH/84Mif/KCgo+CgoKOouLCj/3J4f/96f
H//enx//3p8f/96fH/+keSL/KCgo/319ff///////////zQqFf//qwD/9qUA/39ZDP83MCP/xMTD////
//80NDT///////////97e3v/KCgo/6V6If/enx//3p8f/96fH//enx//3J4f/y0rKP8oKCjpKCgoyCgo
KP8zLyf/NzIo/6l8If/enx//3p8f/9CWIP8rKij/PT09//r6+v//////LSUV/6ZxA/8wJxX/k5CL//z8
/P///////////zQ0NP//////+vr6/zw8PP8qKij/0Zcg/96fH//enx//qXwh/zcyKP8zLyf/KCgo/ygo
KMcoKCh0KCgo7igoKPAoKCj/W0km/96fH//enx//3p8f/2FNJv8oKCj/oKCg//////+ysKz/f3ty/+np
6f//////////////////////mZmZ//////+enp7/KCgo/2FNJf/enx//3p8f/96fH/9bSSb/KCgo/ygo
KPAoKCjuKCgodAAAAAAAAAAAAAAAAygoKOosKij/z5Uf/96fH//enx//v4sh/ysqKP8uLi3/yMjI////
////////////////////////////////////////yMjI/y0tLP8sKyj/wIsg/96fH//enx//zpQf/ysq
KP8oKCjpAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAKCgojigoKP97XiT/3p8f/96fH//enx//lnAj/ygo
KP8uLi3/oKCg//r6+v//////////////////////+vr6/5+fn/8uLi3/KCgo/5dxI//enx//3p8f/96f
H/97XiT/KCgo/ygoKI0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKipDKCgo/zIvKP/dnh//3p8f/96f
H//enx//lnAj/ysqKP8oKCj/PT09/3x8fP+dnZ3/nZ2d/3x8fP88PDz/KCgo/ywrKP+XcSP/3p8f/96f
H//enx//3Z4f/zIvKP8oKCj/JycnQgAAAAAAAAAAAAAAAAAAAAAAAAAAKCgoJikoKOsoKCj/eFwk/96f
H//enx//3p8f/96fH//enx//wIsh/2FNJv8rKij/KCgo/ygoKP8oKCj/KCgo/ysqKP9hTSX/wIwh/96f
H//enx//3p8f/96fH//enx//eFwk/ygoKP8pKCjrKCgoJgAAAAAAAAAAAAAAAAAAAAAoKChtKCgo/z83
J//bnR//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/9CWIP+leiL/kGwj/5BsI/+leiL/0Zcg/96f
H//enx//3p8f/96fH//enx//3p8f/96fH//cniD/PjYn/ygoKP8oKChtAAAAAAAAAAAAAAAAAAAAACAg
IAgoKCjOKCgo/3JYJf/enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/96f
H//enx//3p8f/96fH//enx//3p8f/96fH//enx//3p8f/3dcJP8oKCj/KCgo0hwcHAkAAAAAAAAAAAAA
AAAAAAAAAAAAACYmJiIpKCjnKCgo/3JYJf/bnR//el4k/zAtJ/97XiT/z5Uf/96fH//enx//3p8f/96f
H//enx//3p8f/96fH//enx//z5Uf/3teJP8wLSf/el4k/9yeIP9xWCT/KCgo/ykoKOcmJiYiAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKC0pKCjoKCgo/z83J/8oKCj/KCgo/ygoKP8sKij/W0km/6l8
Iv/enx//3p8f/96fH//enx//qXwi/1tJJv8sKij/KCgo/ygoKP8oKCj/PjYn/ygoKP8pKCjnKCgoLQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJiIoKCjQKCgo/ykoKOsqKipDKCgojigo
KOooKCj/ODIn/96fH//enx//3p8f/96fH/84Mif/KCgo/ygoKOooKCiOKioqQykoKOsoKCj/KCgo0CYm
JiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAgpKSlqJycnJwAA
AAAAAAAAAAAAAygoKPQ0MCf/3Z4f/96fH//enx//3Z4f/zQwJ/8oKCj0AAAAAwAAAAAAAAAAJycnJykp
KWogICAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAKCgo8SgoKP8uLCj/ODIn/zgyJ/8uLCj/KCgo/ygoKPEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAEAAABVAAAA1gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANYAAABVAAAAAQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJyd1KCgoyCgoKOooKCj5KCgo+SgoKOkoKCjIJycndQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wD///8A///GAGP/gA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAWwAAAMAAAADxAAAA8QAAAL8AAABbAAAAAwAA AB/wAAAP4AAAB8AAAAPAAAADwAAAA+AAAAfgAAAHwAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4H///4Af//4AB//4A AAAAAAAAwAAAA+AAAAfgAAAHwAAAA8AAAAPAAAAD4AAAB/AAAA/4AAAf/GAGP//wD///8A//KAAAABgA
AH/4AAAf4AAAB4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAB4AAAB/gAAB/+AAB//4AB///AA///8A//KAAAABgA
AAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACEAAACaAAAA+QAAAPkAAACaAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAACkpKKEtLCjdKSkn9ykpJ/ctLCjdKSkooQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAlwAAAPoAAAD/AAAA/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJycnDQAAAAIAAAAAAAAAACopKPhXRyb/imgk/4po
AP8AAAD/AAAA+gAAAJcAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA JP9XRyb/Kiko+AAAAAAAAAAAAAAAAicnJw0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAFgAAAI8AAAD3AAAA/wAAAP8ZGxv/AAAA/wAAAP8ZGxv/AAAA/wAAAP8AAAD3AAAAjwAA AAApKSlLKioo8ykpKK4pKSk+KSgopykoKP6OayP/3p8f/96fH/+OayP/KSgo/ikoKKcqKio9KSkorioq
ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAB3AAAA8QAAAP8AAAD/GRwc/3yJ KPMpKSlLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkpKWopKSj9UEMm/SopJ/0oKCj/QTgn+4Nj
if+rvL3/AAAA/wAAAP+tvr7/i5mZ/x0gIP8AAAD/AAAA/wAAAPQAAACIAAAAEQAAAAAAAAAAAAAAAAAA I//RlyD/3p8f/96fH//RlyD/g2Mj/0E4J/soKCj/Kikn/VBDJv0pKSj9KSkpagAAAAAAAAAAAAAAAAAA
AAAAAAAMAAAAfQAAAO8AAAD/AAAA/xUXF/99ior/1uvs/9zy8/+wwsL/AAAA/wAAAP+wwsL/3PLz/9br AAAAAAAAKSkpSykpKP1zWST/250f/7CBIf+gdiL/3J4f/96fH//enx//3p8f/96fH//enx//3p8f/9ye
7P99ior/FRcX/wAAAP8AAAD/AAAA7wAAAH0AAAAMAAAAAAAAACAAAADcAAAA/wAAAP8QEhL/doKD/9Pp H/+gdiL/sIEh/9udH/9zWST/KSko/SkpKUsAAAAAAAAAAAAAAAAnJycNKioo9FBDJv3bnR//3p8f/96f
6f/c8vP/3PLz/9zy8/+wwsL/AAAA/wAAAP+wwsL/3PLz/7S9vf/V6On/0+np/3aCg/8QEhL/AAAA/wAA H//enx//3p8f/96fH//EjiD/p3si/6d7Iv/EjiD/3p8f/96fH//enx//3p8f/96fH//bnR//UEMm/Soq
AP8AAADcAAAAHwAAALYAAAD/CQkJ/255ev/Q5eb/3PLz/9zy8//c8vP/2O3u/9vx8v+wwsL/AAAA/wAA KPQnJycNAAAAAAAAAAAAAAACKSkoriopJ/2vgCH/3p8f/96fH//enx//rH4h/0o+J/8oKCj/KCgo/ygo
AP+wwsL/3PLz/62xsf+5vLz/0ePk/9zy8//Q5eb/bnl6/wkJCf8AAAD/AAAAtQAAAPYAAAD/dYGC/9zy KP8oKCj/Sj4n/61/Iv/enx//3p8f/96fH/+vgCH/Kikn/SkpKK4AAAACAAAAAAAAAAAAAAAAKCgoPygo
8/+utLT/q66u/6yvr/+tr7D/nqCg/9fs7f+wwsL/AAAA/wAAAP+wwsL/3PLz/7C1tf/+/v7/vcDA/8zd KP+hdyL/3p8f/96fH/+OayP/KSko/1taWP+7u7v/6Ojo/+fn5/+6urr/W1pY/yopKf+OayP/3p8f/96f
3f/c8vP/3PLz/3WBgv8AAAD/AAAA9gAAAP8AAAD/hJGS/9zy8/+ztrb////////////W2Nj/zd7e/9zy H/+gdiL/KCgo/yoqKj0AAAAAAAAAAAAAAAAAAAAAKScnqUE5J/vcnh//3p8f/6x+If8pKSj/h4eH//7+
8/+wwsL/AAAA/wAAAP+wwsL/3PLz/7C1tf///////////8TGxv/J19j/3PLz/4SRkv8AAAD/AAAA/wAA /v///////////////////////f39/4aGhv8qKSn/rX8i/96fH//bnR//QDgn+ykoKKcAAAAAAAAAACsp
AP8AAAD/hJGS/9zy8/+ztrb//////+Tl5f/E0NH/3PLz/9zy8/+wwsL/AAAA/wAAAP+wwsL/3PLz/7C1 KKArKijzKSko/YNjI//enx//3p8f/0o/KP9bWlj//v7+/4R8av+JgnT/9/f3////////////oqKi//39
tf//////+fn5/97e3v+goaH/y9zd/4SRkv8AAAD/AAAA/wAAAP8AAAD/hJGS/9zy8/+ztrb/9PT0/77H /f9bWlj/Sj4n/96fH//enx//gmMj/ykpKP0rKijzKykooC0rKN5VRSb/jWoj/9GXIP/enx//w40g/ygo
yP/c8vP/3PLz/9zy8/+wwsL/AAAA/wAAAP+wwsL/3PLz/6isrP+sr6//r7S0/73Kyv/P4uP/3PLz/4SR KP+8vLz//////2VOH//IiAT/Vkcn/7WyrP//////ZmZm//////+7u7v/KCgo/8WPIf/enx//0Zcg/41q
kv8AAAD/AAAA/wAAAP8AAAD/hJGS/9zy8/+ws7P/u8HB/9rv8P/c8vP/3PLz/9br7P9jbm7/AAAA/wAA I/9VRSb/LSso3isqKPWJaCT/3p8f/96fH//enx//pnoi/ygoKP/o6Oj//////2ZOH///qwD//KkA/5Zq
AP9jbm7/1uvs/9nu7//c8vP/3PLz/9zy8//c8vP/3PLz/4SRkv8AAAD/AAAA/wAAAP8AAAD/hJGS/9zy EP9/dmT/ZmZm///////n5+f/KCgo/6h8Iv/enx//3p8f/96fH/+JZyP/Kyoo9CspJ/aKaCT/3p8f/96f
8/+bnZ3/1urr/9zy8//Z7u//h5SV/xocHf8AAAD/AAAA/wAAAP8AAAD/Ghwd/4eUlf/Z7u//3PLz/9zy H//enx//pXoh/ygoKP/p6en//////2ZOH///qwD//KkA/5ZqEP9/dmP/ZmZm///////n5+f/KCgo/6d7
8//c8vP/3PLz/4SRkv8AAAD/AAAA/wAAAP8AAAD/hJGS/9zy8//U5+j/2/Hy/5GfoP8iJSX/AAAA/wAA Iv/enx//3p8f/96fH/+JaCT/Kykn9i0rKN5VRSb/jWoj/9GXIP/enx//w40g/ygoKP+8vLz//////2ZP
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
rEEAAKxBAACsQYABrEHgB6xB+B+sQQ== rEGAAaxBgAGsQYABrEHAA6xB/D+sQQ==
</value> </value>
</data> </data>
</root> </root>

View File

@ -1,207 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using RyzStudio.Windows.Forms;
using RyzStudio.Windows.ThemedForms;
namespace RandomFileRunner
{
public class MemoBoxForm : Form
{
private RyzStudio.Windows.ThemedForms.T3MemoBox memoBox1;
private RyzStudio.Windows.ThemedForms.T3Button button3;
private RyzStudio.Windows.ThemedForms.T3Button button4;
private ContextMenuStrip contextMenuStrip1;
private System.ComponentModel.IContainer components;
private ToolStripMenuItem addDirectoryToolStripMenuItem;
private ToolStripMenuItem addFileToolStripMenuItem;
private FolderBrowserDialog folderBrowserDialog1;
private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1;
private OpenFileDialog openFileDialog1;
public MemoBoxForm(List<string> lines)
{
InitializeComponent();
this.SetupDialog();
if (lines != null)
{
memoBox1.TextBox.Lines = lines.ToArray();
}
memoBox1.TextBox.WordWrap = false;
}
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
memoBox1 = new T3MemoBox();
button3 = new T3Button();
contextMenuStrip1 = new ContextMenuStrip(components);
addDirectoryToolStripMenuItem = new ToolStripMenuItem();
addFileToolStripMenuItem = new ToolStripMenuItem();
button4 = new T3Button();
folderBrowserDialog1 = new FolderBrowserDialog();
openFileDialog1 = new OpenFileDialog();
dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter();
contextMenuStrip1.SuspendLayout();
SuspendLayout();
//
// memoBox1
//
memoBox1.AllowDrop = true;
memoBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
memoBox1.BackColor = System.Drawing.Color.Transparent;
memoBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
memoBox1.Location = new System.Drawing.Point(10, 70);
memoBox1.Name = "memoBox1";
memoBox1.ReadOnly = false;
memoBox1.ScrollBars = ScrollBars.Vertical;
memoBox1.Size = new System.Drawing.Size(364, 357);
memoBox1.TabIndex = 191;
memoBox1.TabStop = false;
memoBox1.WordWrap = false;
//
// button3
//
button3.ActiveImage = null;
button3.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
button3.BackColor = System.Drawing.Color.Transparent;
button3.ContextMenuStrip = contextMenuStrip1;
button3.EnableMenuOnClick = true;
button3.HoverImage = null;
button3.IdleImage = null;
button3.LabelText = "&Add";
button3.Location = new System.Drawing.Point(10, 21);
button3.Name = "button3";
button3.Size = new System.Drawing.Size(177, 33);
button3.TabIndex = 189;
button3.TabStop = false;
//
// contextMenuStrip1
//
contextMenuStrip1.Items.AddRange(new ToolStripItem[] { addDirectoryToolStripMenuItem, addFileToolStripMenuItem });
contextMenuStrip1.Name = "contextMenuStrip1";
contextMenuStrip1.Size = new System.Drawing.Size(148, 48);
//
// addDirectoryToolStripMenuItem
//
addDirectoryToolStripMenuItem.Name = "addDirectoryToolStripMenuItem";
addDirectoryToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
addDirectoryToolStripMenuItem.Text = "&Add Directory";
addDirectoryToolStripMenuItem.Click += addDirectoryToolStripMenuItem_Click;
//
// addFileToolStripMenuItem
//
addFileToolStripMenuItem.Name = "addFileToolStripMenuItem";
addFileToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
addFileToolStripMenuItem.Text = "Add &File";
addFileToolStripMenuItem.Click += addFileToolStripMenuItem_Click;
//
// button4
//
button4.ActiveImage = null;
button4.Anchor = AnchorStyles.Top | AnchorStyles.Right;
button4.BackColor = System.Drawing.Color.Transparent;
button4.EnableMenuOnClick = false;
button4.HoverImage = null;
button4.IdleImage = null;
button4.LabelText = "&Clear";
button4.Location = new System.Drawing.Point(197, 21);
button4.Name = "button4";
button4.Size = new System.Drawing.Size(177, 33);
button4.TabIndex = 190;
button4.TabStop = false;
button4.MouseClick += button4_MouseClick;
//
// folderBrowserDialog1
//
folderBrowserDialog1.ShowNewFolderButton = false;
//
// openFileDialog1
//
openFileDialog1.Filter = "All files (*.*)|*.*";
//
// dialogFooter1
//
dialogFooter1.BackColor = System.Drawing.Color.FromArgb(240, 240, 240);
dialogFooter1.Button1Text = "&OK";
dialogFooter1.Dock = DockStyle.Bottom;
dialogFooter1.Location = new System.Drawing.Point(0, 437);
dialogFooter1.Name = "dialogFooter1";
dialogFooter1.Size = new System.Drawing.Size(384, 84);
//
// MemoBoxForm
//
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
BackColor = System.Drawing.Color.White;
ClientSize = new System.Drawing.Size(384, 521);
Controls.Add(dialogFooter1);
Controls.Add(memoBox1);
Controls.Add(button3);
Controls.Add(button4);
MinimumSize = new System.Drawing.Size(400, 560);
Name = "MemoBoxForm";
ShowIcon = false;
ShowInTaskbar = false;
Text = "Manage Search Paths";
contextMenuStrip1.ResumeLayout(false);
ResumeLayout(false);
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
memoBox1.Focus();
}
public List<string> Result
{
get => memoBox1.Lines?.ToList() ?? new List<string>();
}
/// <summary>
/// Add Directory.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void addDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
memoBox1.TextBox.AddLine(folderBrowserDialog1.SelectedPath);
}
}
/// <summary>
/// Add File.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void addFileToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
memoBox1.TextBox.AddLine(openFileDialog1.FileName);
}
}
/// <summary>
/// Clear.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_MouseClick(object sender, MouseEventArgs e)
{
memoBox1.Text = string.Empty;
}
}
}

View File

@ -1,129 +0,0 @@
<?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>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>831, 17</value>
</metadata>
<metadata name="folderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>986, 17</value>
</metadata>
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1155, 17</value>
</metadata>
</root>

View File

@ -13,12 +13,10 @@ namespace RandomFileRunner
private RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox textBox1; private RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox textBox1;
private RyzStudio.Windows.ThemedForms.T3YnPickerBox pickerBox3; private RyzStudio.Windows.ThemedForms.T3YnPickerBox pickerBox3;
private Label label1; private Label label1;
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator3;
private Label label2; private Label label2;
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator2;
private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1; private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1;
private THorizontalSeparator tHorizontalSeparator1;
private THorizontalSeparator tHorizontalSeparator2;
private AppSession _session = null; private AppSession _session = null;
@ -45,188 +43,192 @@ namespace RandomFileRunner
private void InitializeComponent() private void InitializeComponent()
{ {
RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results results1 = new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results(); RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results results2 = new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results();
pickerBox1 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); pickerBox1 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox();
label6 = new Label(); label6 = new Label();
label8 = new Label(); label8 = new Label();
tHorizontalSeparator2 = new THorizontalSeparator();
pickerBox2 = new RyzStudio.Windows.ThemedForms.T4NumericBox(); pickerBox2 = new RyzStudio.Windows.ThemedForms.T4NumericBox();
textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox(); textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox();
pickerBox3 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); pickerBox3 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox();
label1 = new Label(); label1 = new Label();
tHorizontalSeparator3 = new THorizontalSeparator();
label2 = new Label(); label2 = new Label();
dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter(); dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter();
tHorizontalSeparator1 = new THorizontalSeparator();
tHorizontalSeparator2 = new THorizontalSeparator();
SuspendLayout(); SuspendLayout();
// //
// pickerBox1 // pickerBox1
// //
pickerBox1.Align = RyzStudio.Enums.ContentAlignment.Right;
pickerBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right; pickerBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
pickerBox1.BackColor = System.Drawing.Color.Transparent; pickerBox1.BackColor = System.Drawing.Color.Transparent;
pickerBox1.Font = new System.Drawing.Font("Segoe UI", 9F); pickerBox1.EnableMovable = false;
pickerBox1.Location = new System.Drawing.Point(285, 20); pickerBox1.EnableStepWidth = true;
pickerBox1.Location = new System.Drawing.Point(274, 19);
pickerBox1.Name = "pickerBox1"; pickerBox1.Name = "pickerBox1";
pickerBox1.SelectedIndex = 1; pickerBox1.SelectedIndex = 1;
pickerBox1.Size = new System.Drawing.Size(84, 35); pickerBox1.Size = new System.Drawing.Size(100, 32);
pickerBox1.TabIndex = 0; pickerBox1.TabIndex = 0;
pickerBox1.TabStop = false; pickerBox1.TabStop = false;
pickerBox1.Value = true; pickerBox1.Value = true;
// //
// label6 // label6
// //
label6.AutoSize = true; label6.AutoSize = true;
label6.BackColor = System.Drawing.Color.Transparent; label6.BackColor = System.Drawing.Color.Transparent;
label6.ForeColor = System.Drawing.SystemColors.ControlText; label6.ForeColor = System.Drawing.SystemColors.ControlText;
label6.Location = new System.Drawing.Point(10, 95); label6.Location = new System.Drawing.Point(10, 76);
label6.Margin = new Padding(0); label6.Margin = new Padding(0);
label6.Name = "label6"; label6.Name = "label6";
label6.Padding = new Padding(0, 9, 0, 10); label6.Padding = new Padding(0, 8, 0, 0);
label6.Size = new System.Drawing.Size(81, 34); label6.Size = new System.Drawing.Size(81, 23);
label6.TabIndex = 182; label6.TabIndex = 182;
label6.Text = "Retry On Error"; label6.Text = "Retry On Error";
label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// label8 // label8
// //
label8.AutoSize = true; label8.AutoSize = true;
label8.BackColor = System.Drawing.Color.Transparent; label8.BackColor = System.Drawing.Color.Transparent;
label8.ForeColor = System.Drawing.SystemColors.ControlText; label8.ForeColor = System.Drawing.SystemColors.ControlText;
label8.Location = new System.Drawing.Point(10, 20); label8.Location = new System.Drawing.Point(10, 19);
label8.Margin = new Padding(0); label8.Margin = new Padding(0);
label8.Name = "label8"; label8.Name = "label8";
label8.Padding = new Padding(0, 9, 0, 10); label8.Padding = new Padding(0, 8, 0, 0);
label8.Size = new System.Drawing.Size(143, 34); label8.Size = new System.Drawing.Size(143, 23);
label8.TabIndex = 186; label8.TabIndex = 186;
label8.Text = "Search Top Directory Only"; label8.Text = "Search Top Directory Only";
label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// tHorizontalSeparator2
//
tHorizontalSeparator2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
tHorizontalSeparator2.AutoScrollMargin = new System.Drawing.Size(0, 0);
tHorizontalSeparator2.AutoScrollMinSize = new System.Drawing.Size(0, 0);
tHorizontalSeparator2.BackColor = System.Drawing.Color.Transparent;
tHorizontalSeparator2.Location = new System.Drawing.Point(10, 64);
tHorizontalSeparator2.Margin = new Padding(0, 10, 0, 0);
tHorizontalSeparator2.MaximumSize = new System.Drawing.Size(4920, 2);
tHorizontalSeparator2.MinimumSize = new System.Drawing.Size(0, 22);
tHorizontalSeparator2.Name = "tHorizontalSeparator2";
tHorizontalSeparator2.Size = new System.Drawing.Size(364, 22);
tHorizontalSeparator2.TabIndex = 190;
tHorizontalSeparator2.TabStop = false;
//
// pickerBox2 // pickerBox2
// //
pickerBox2.Align = RyzStudio.Enums.ContentAlignment.Right;
pickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right; pickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right;
pickerBox2.BackColor = System.Drawing.Color.Transparent; pickerBox2.BackColor = System.Drawing.Color.Transparent;
pickerBox2.Font = new System.Drawing.Font("Segoe UI", 9F); pickerBox2.EnableMovable = false;
pickerBox2.Location = new System.Drawing.Point(285, 95); pickerBox2.EnableStepWidth = true;
pickerBox2.Location = new System.Drawing.Point(274, 76);
pickerBox2.Maximum = 50; pickerBox2.Maximum = 50;
pickerBox2.Minimum = 0; pickerBox2.Minimum = 0;
pickerBox2.Name = "pickerBox2"; pickerBox2.Name = "pickerBox2";
pickerBox2.Size = new System.Drawing.Size(84, 35); pickerBox2.Size = new System.Drawing.Size(100, 32);
pickerBox2.TabIndex = 1; pickerBox2.TabIndex = 1;
pickerBox2.TabStop = false; pickerBox2.TabStop = false;
pickerBox2.Value = 0; pickerBox2.Value = 0;
// //
// textBox1 // textBox1
// //
textBox1.Align = RyzStudio.Enums.ContentAlignment.Right;
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right; textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
textBox1.BackColor = System.Drawing.Color.Transparent; textBox1.BackColor = System.Drawing.Color.Transparent;
textBox1.Font = new System.Drawing.Font("Segoe UI", 9F); textBox1.EnableMovable = false;
textBox1.EnableStepWidth = true;
textBox1.Icon = "O"; textBox1.Icon = "O";
textBox1.IconSize = 13F; textBox1.IconSize = 13F;
results1.IsAlt = false; results2.IsAlt = false;
results1.IsCtrl = false; results2.IsCtrl = false;
results1.IsShift = false; results2.IsShift = false;
results1.Key = Keys.None; results2.Key = Keys.None;
textBox1.KeyCodeResults = results1; textBox1.KeyCodeResults = results2;
textBox1.Location = new System.Drawing.Point(241, 216); textBox1.Location = new System.Drawing.Point(220, 175);
textBox1.Name = "textBox1"; textBox1.Name = "textBox1";
textBox1.Size = new System.Drawing.Size(128, 32); textBox1.Size = new System.Drawing.Size(160, 32);
textBox1.TabIndex = 3; textBox1.TabIndex = 3;
textBox1.TabStop = false; textBox1.TabStop = false;
textBox1.UseSystemPasswordChar = false; textBox1.UseSystemPasswordChar = false;
// //
// pickerBox3 // pickerBox3
// //
pickerBox3.Align = RyzStudio.Enums.ContentAlignment.Right;
pickerBox3.Anchor = AnchorStyles.Top | AnchorStyles.Right; pickerBox3.Anchor = AnchorStyles.Top | AnchorStyles.Right;
pickerBox3.BackColor = System.Drawing.Color.Transparent; pickerBox3.BackColor = System.Drawing.Color.Transparent;
pickerBox3.Font = new System.Drawing.Font("Segoe UI", 9F); pickerBox3.EnableMovable = false;
pickerBox3.Location = new System.Drawing.Point(285, 140); pickerBox3.EnableStepWidth = true;
pickerBox3.Location = new System.Drawing.Point(274, 118);
pickerBox3.Name = "pickerBox3"; pickerBox3.Name = "pickerBox3";
pickerBox3.SelectedIndex = 1; pickerBox3.SelectedIndex = 1;
pickerBox3.Size = new System.Drawing.Size(84, 35); pickerBox3.Size = new System.Drawing.Size(100, 32);
pickerBox3.TabIndex = 2; pickerBox3.TabIndex = 2;
pickerBox3.TabStop = false; pickerBox3.TabStop = false;
pickerBox3.Value = true; pickerBox3.Value = true;
// //
// label1 // label1
// //
label1.AutoSize = true; label1.AutoSize = true;
label1.BackColor = System.Drawing.Color.Transparent; label1.BackColor = System.Drawing.Color.Transparent;
label1.ForeColor = System.Drawing.SystemColors.ControlText; label1.ForeColor = System.Drawing.SystemColors.ControlText;
label1.Location = new System.Drawing.Point(10, 140); label1.Location = new System.Drawing.Point(10, 118);
label1.Margin = new Padding(0); label1.Margin = new Padding(0);
label1.Name = "label1"; label1.Name = "label1";
label1.Padding = new Padding(0, 9, 0, 10); label1.Padding = new Padding(0, 8, 0, 0);
label1.Size = new System.Drawing.Size(169, 34); label1.Size = new System.Drawing.Size(169, 23);
label1.TabIndex = 196; label1.TabIndex = 196;
label1.Text = "Close Current Process On Next"; label1.Text = "Close Current Process On Next";
label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// tHorizontalSeparator3
//
tHorizontalSeparator3.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
tHorizontalSeparator3.AutoScrollMargin = new System.Drawing.Size(0, 0);
tHorizontalSeparator3.AutoScrollMinSize = new System.Drawing.Size(0, 0);
tHorizontalSeparator3.BackColor = System.Drawing.Color.Transparent;
tHorizontalSeparator3.Location = new System.Drawing.Point(10, 184);
tHorizontalSeparator3.Margin = new Padding(0, 10, 0, 0);
tHorizontalSeparator3.MaximumSize = new System.Drawing.Size(4920, 2);
tHorizontalSeparator3.MinimumSize = new System.Drawing.Size(0, 22);
tHorizontalSeparator3.Name = "tHorizontalSeparator3";
tHorizontalSeparator3.Size = new System.Drawing.Size(364, 22);
tHorizontalSeparator3.TabIndex = 197;
tHorizontalSeparator3.TabStop = false;
//
// label2 // label2
// //
label2.AutoSize = true; label2.AutoSize = true;
label2.BackColor = System.Drawing.Color.Transparent; label2.BackColor = System.Drawing.Color.Transparent;
label2.ForeColor = System.Drawing.SystemColors.ControlText; label2.ForeColor = System.Drawing.SystemColors.ControlText;
label2.Location = new System.Drawing.Point(10, 216); label2.Location = new System.Drawing.Point(10, 175);
label2.Margin = new Padding(0); label2.Margin = new Padding(0);
label2.Name = "label2"; label2.Name = "label2";
label2.Padding = new Padding(0, 9, 0, 10); label2.Padding = new Padding(0, 8, 0, 0);
label2.Size = new System.Drawing.Size(123, 34); label2.Size = new System.Drawing.Size(147, 23);
label2.TabIndex = 198; label2.TabIndex = 198;
label2.Text = "Next File Shortcut Key"; label2.Text = "Run Next File Shortcut Key";
label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// dialogFooter1 // dialogFooter1
// //
dialogFooter1.Align = RyzStudio.Enums.ContentAlignment.None;
dialogFooter1.BackColor = System.Drawing.Color.FromArgb(240, 240, 240); dialogFooter1.BackColor = System.Drawing.Color.FromArgb(240, 240, 240);
dialogFooter1.Button1Result = DialogResult.OK;
dialogFooter1.Button1Text = "&Save"; dialogFooter1.Button1Text = "&Save";
dialogFooter1.Button1Visible = true;
dialogFooter1.Button2Result = DialogResult.Cancel;
dialogFooter1.Button2Text = "&Cancel";
dialogFooter1.Button2Visible = true;
dialogFooter1.Dock = DockStyle.Bottom; dialogFooter1.Dock = DockStyle.Bottom;
dialogFooter1.Location = new System.Drawing.Point(0, 437); dialogFooter1.EnableMovable = false;
dialogFooter1.EnableStepWidth = false;
dialogFooter1.Location = new System.Drawing.Point(0, 451);
dialogFooter1.Name = "dialogFooter1"; dialogFooter1.Name = "dialogFooter1";
dialogFooter1.Size = new System.Drawing.Size(384, 84); dialogFooter1.Size = new System.Drawing.Size(384, 70);
// dialogFooter1.TabIndex = 0;
dialogFooter1.TabStop = false;
//
// tHorizontalSeparator1
//
tHorizontalSeparator1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
tHorizontalSeparator1.AutoPosition = true;
tHorizontalSeparator1.Location = new System.Drawing.Point(5, 56);
tHorizontalSeparator1.Name = "tHorizontalSeparator1";
tHorizontalSeparator1.Size = new System.Drawing.Size(374, 10);
//
// tHorizontalSeparator2
//
tHorizontalSeparator2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
tHorizontalSeparator2.AutoPosition = true;
tHorizontalSeparator2.Location = new System.Drawing.Point(5, 155);
tHorizontalSeparator2.Name = "tHorizontalSeparator2";
tHorizontalSeparator2.Size = new System.Drawing.Size(374, 10);
//
// OptionsForm // OptionsForm
// //
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
BackColor = System.Drawing.Color.White; BackColor = System.Drawing.Color.White;
ClientSize = new System.Drawing.Size(384, 521); ClientSize = new System.Drawing.Size(384, 521);
Controls.Add(tHorizontalSeparator2);
Controls.Add(tHorizontalSeparator1);
Controls.Add(dialogFooter1); Controls.Add(dialogFooter1);
Controls.Add(label2); Controls.Add(label2);
Controls.Add(tHorizontalSeparator3);
Controls.Add(label1); Controls.Add(label1);
Controls.Add(pickerBox3); Controls.Add(pickerBox3);
Controls.Add(textBox1); Controls.Add(textBox1);
Controls.Add(pickerBox2); Controls.Add(pickerBox2);
Controls.Add(tHorizontalSeparator2);
Controls.Add(label8); Controls.Add(label8);
Controls.Add(pickerBox1); Controls.Add(pickerBox1);
Controls.Add(label6); Controls.Add(label6);

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
@ -48,7 +48,7 @@
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter

View File

@ -51,9 +51,6 @@
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DependentUpon>AppResource.resx</DependentUpon> <DependentUpon>AppResource.resx</DependentUpon>
</Compile> </Compile>
<Compile Update="MemoBoxForm.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB