1
0
mirror of https://bitbucket.org/FuketsuBaka/clearcache1c.git synced 2024-12-22 10:33:13 +00:00

Initial commit

This commit is contained in:
FuketsuBaka 2018-11-18 05:30:51 +07:00
parent bc87a4e31b
commit 5af012a4ce
23 changed files with 2426 additions and 0 deletions

27
ClearCache1C.sln Normal file
View File

@ -0,0 +1,27 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28306.52
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClearCache1C", "ClearCache1C\ClearCache1C.csproj", "{CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{083C60B7-90FE-4420-ACC6-6FCD7AF073A6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB1D2E8F-9657-45EA-B581-2CE59F7A8F53}
EndGlobalSection
EndGlobal

6
ClearCache1C/App.config Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>

View File

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{CA37FAA9-7C77-4C16-81A4-3BBD93F235A1}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>ClearCache1C</RootNamespace>
<AssemblyName>ClearCache1C</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Form2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form2.Designer.cs">
<DependentUpon>Form2.cs</DependentUpon>
</Compile>
<Compile Include="Form3.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form3.Designer.cs">
<DependentUpon>Form3.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form2.resx">
<DependentUpon>Form2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form3.resx">
<DependentUpon>Form3.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon_deselect_16.PNG" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon_select_16.PNG" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon_smart_select_16.PNG" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\ai-full logo - clean.PNG" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

191
ClearCache1C/Form1.Designer.cs generated Normal file
View File

@ -0,0 +1,191 @@
namespace ClearCache1C
{
partial class FormMain
{
/// <summary>
/// Обязательная переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Требуемый метод для поддержки конструктора — не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
this.ListBases = new System.Windows.Forms.CheckedListBox();
this.btnClearCache = new System.Windows.Forms.Button();
this.btnPurgeAll = new System.Windows.Forms.Button();
this.InfoBox = new System.Windows.Forms.TextBox();
this.btnExpand = new System.Windows.Forms.Button();
this.btnSmartSelect = new System.Windows.Forms.Button();
this.btnRemoveSelection = new System.Windows.Forms.Button();
this.btnSelectAll = new System.Windows.Forms.Button();
this.btnAbout = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// ListBases
//
this.ListBases.BackColor = System.Drawing.SystemColors.Window;
this.ListBases.Cursor = System.Windows.Forms.Cursors.Arrow;
this.ListBases.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.ListBases.FormattingEnabled = true;
this.ListBases.Location = new System.Drawing.Point(12, 42);
this.ListBases.Name = "ListBases";
this.ListBases.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.ListBases.Size = new System.Drawing.Size(400, 364);
this.ListBases.TabIndex = 0;
this.ListBases.SelectedIndexChanged += new System.EventHandler(this.ListBases_SelectedIndexChanged);
//
// btnClearCache
//
this.btnClearCache.Location = new System.Drawing.Point(12, 412);
this.btnClearCache.Name = "btnClearCache";
this.btnClearCache.Size = new System.Drawing.Size(198, 37);
this.btnClearCache.TabIndex = 1;
this.btnClearCache.Text = "Очистить кэш";
this.btnClearCache.UseVisualStyleBackColor = true;
this.btnClearCache.Click += new System.EventHandler(this.ButtonClearCache_Click);
//
// btnPurgeAll
//
this.btnPurgeAll.Location = new System.Drawing.Point(214, 412);
this.btnPurgeAll.Name = "btnPurgeAll";
this.btnPurgeAll.Size = new System.Drawing.Size(198, 37);
this.btnPurgeAll.TabIndex = 4;
this.btnPurgeAll.Text = "Удалить все";
this.btnPurgeAll.UseVisualStyleBackColor = true;
this.btnPurgeAll.Click += new System.EventHandler(this.ButtonPurgeAll_Click);
//
// InfoBox
//
this.InfoBox.BackColor = System.Drawing.SystemColors.Info;
this.InfoBox.Cursor = System.Windows.Forms.Cursors.IBeam;
this.InfoBox.Location = new System.Drawing.Point(445, 12);
this.InfoBox.Multiline = true;
this.InfoBox.Name = "InfoBox";
this.InfoBox.ReadOnly = true;
this.InfoBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.InfoBox.Size = new System.Drawing.Size(400, 437);
this.InfoBox.TabIndex = 6;
this.InfoBox.WordWrap = false;
//
// btnExpand
//
this.btnExpand.FlatAppearance.BorderSize = 0;
this.btnExpand.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnExpand.Location = new System.Drawing.Point(418, 42);
this.btnExpand.Name = "btnExpand";
this.btnExpand.Size = new System.Drawing.Size(21, 364);
this.btnExpand.TabIndex = 7;
this.btnExpand.Text = ">\r\n>\r\n>";
this.btnExpand.UseVisualStyleBackColor = true;
this.btnExpand.Click += new System.EventHandler(this.ButtonExpand_Click);
//
// btnSmartSelect
//
this.btnSmartSelect.Image = global::ClearCache1C.Properties.Resources.icon_smart_select_16;
this.btnSmartSelect.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btnSmartSelect.Location = new System.Drawing.Point(12, 12);
this.btnSmartSelect.Name = "btnSmartSelect";
this.btnSmartSelect.Size = new System.Drawing.Size(130, 27);
this.btnSmartSelect.TabIndex = 8;
this.btnSmartSelect.Text = "Выделить с кэшем";
this.btnSmartSelect.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btnSmartSelect.UseVisualStyleBackColor = true;
this.btnSmartSelect.Click += new System.EventHandler(this.ButtonSmartSelect_Click);
//
// btnRemoveSelection
//
this.btnRemoveSelection.Image = ((System.Drawing.Image)(resources.GetObject("btnRemoveSelection.Image")));
this.btnRemoveSelection.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btnRemoveSelection.Location = new System.Drawing.Point(282, 12);
this.btnRemoveSelection.Name = "btnRemoveSelection";
this.btnRemoveSelection.Size = new System.Drawing.Size(130, 27);
this.btnRemoveSelection.TabIndex = 3;
this.btnRemoveSelection.Text = "Снять выделение";
this.btnRemoveSelection.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btnRemoveSelection.UseVisualStyleBackColor = true;
this.btnRemoveSelection.Click += new System.EventHandler(this.ButtonRemoveSelection_Click);
//
// btnSelectAll
//
this.btnSelectAll.Image = ((System.Drawing.Image)(resources.GetObject("btnSelectAll.Image")));
this.btnSelectAll.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btnSelectAll.Location = new System.Drawing.Point(146, 12);
this.btnSelectAll.Name = "btnSelectAll";
this.btnSelectAll.Size = new System.Drawing.Size(130, 27);
this.btnSelectAll.TabIndex = 2;
this.btnSelectAll.Text = "Выделить все";
this.btnSelectAll.UseVisualStyleBackColor = true;
this.btnSelectAll.Click += new System.EventHandler(this.ButtonSelectAll_Click);
//
// btnAbout
//
this.btnAbout.Cursor = System.Windows.Forms.Cursors.Help;
this.btnAbout.FlatAppearance.BorderSize = 0;
this.btnAbout.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAbout.Location = new System.Drawing.Point(418, 13);
this.btnAbout.Name = "btnAbout";
this.btnAbout.Size = new System.Drawing.Size(21, 26);
this.btnAbout.TabIndex = 9;
this.btnAbout.Text = "?";
this.btnAbout.UseVisualStyleBackColor = true;
this.btnAbout.Click += new System.EventHandler(this.ButtonAbout_Click);
//
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(854, 461);
this.Controls.Add(this.btnAbout);
this.Controls.Add(this.btnSmartSelect);
this.Controls.Add(this.btnExpand);
this.Controls.Add(this.InfoBox);
this.Controls.Add(this.btnPurgeAll);
this.Controls.Add(this.btnRemoveSelection);
this.Controls.Add(this.btnSelectAll);
this.Controls.Add(this.btnClearCache);
this.Controls.Add(this.ListBases);
this.Cursor = System.Windows.Forms.Cursors.Arrow;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormMain";
this.Text = "Чистка кэша 1С";
this.Load += new System.EventHandler(this.FormMain_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btnClearCache;
private System.Windows.Forms.Button btnSelectAll;
private System.Windows.Forms.Button btnRemoveSelection;
private System.Windows.Forms.Button btnPurgeAll;
private System.Windows.Forms.TextBox InfoBox;
private System.Windows.Forms.Button btnExpand;
private System.Windows.Forms.CheckedListBox ListBases;
private System.Windows.Forms.Button btnSmartSelect;
private System.Windows.Forms.Button btnAbout;
}
}

422
ClearCache1C/Form1.cs Normal file
View File

@ -0,0 +1,422 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// Using
using System.IO;
namespace ClearCache1C
{
public partial class FormMain : Form
{
public FormMain()
{
StartPosition = FormStartPosition.CenterScreen;
InitializeComponent();
}
// ******************* Classes *******************
public class BasesListItem
{
public string Name { get; set; }
public string Path { get; set; }
public string Id { get; set; }
public bool FolderExists { get; set; }
public float FolderSize { get; set; }
public float CacheSize { get; set; }
public List<string> FolderPaths { get; set; }
public List<string> CachePaths { get; set; }
public BasesListItem(string s_name, string s_path, string s_id,
bool s_folder_exists,
float s_folder_size, float s_cache_size,
List<string> s_folder_paths, List<string> s_cache_paths)
{
Name = s_name;
Path = s_path;
Id = s_id;
FolderExists = s_folder_exists;
FolderSize = s_folder_size;
CacheSize = s_cache_size;
FolderPaths = s_folder_paths;
CachePaths = s_cache_paths;
}
public override string ToString() {
string f_size = String.Format("{0,3}", CacheSize.ToString("0"));
return (CacheSize > 0 ? "[" + f_size + " Mb] ": "[------] ")
+ Name;
}
}
// ******************* Events *******************
private void FormMain_Load(object sender, EventArgs e)
{
RefreshListBases();
ToggleInfoView();
//MaximizeBox = false;
//MinimizeBox = false;
}
// ****** LIST CONTROL BUTTONS
private void ButtonSmartSelect_Click(object sender, EventArgs e)
{
ModListBases(true, true);
}
private void ButtonSelectAll_Click(object sender, EventArgs e)
{
ModListBases(true, false);
}
private void ButtonRemoveSelection_Click(object sender, EventArgs e)
{
ModListBases(false, false);
}
private void ButtonExpand_Click(object sender, EventArgs e)
{
ToggleInfoView();
}
private void ToggleInfoView()
{
if (Size.Width != 870) // is collapsed
{
Size = new Size(870, Size.Height);
btnExpand.Text = "<\r\n<\r\n<";
InfoBox.Visible = true;
ShowSelectedInfo();
}
else
{
int calc_width = btnExpand.Location.X + btnExpand.Size.Width + 22;
Size = new Size(calc_width, Size.Height);
btnExpand.Text = ">\r\n>\r\n>";
InfoBox.Visible = false;
}
}
// ****** MAIN BUTTONS
private void ButtonClearCache_Click(object sender, EventArgs e)
{
if (ListBases.CheckedItems.Count == 0)
{
MessageBox.Show("Ничего не выбрано.", "Meh...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
ClearFolders(false);
RefreshListBases();
ShowSelectedInfo();
}
private void ButtonPurgeAll_Click(object sender, EventArgs e)
{
if (ListBases.CheckedItems.Count == 0)
{
MessageBox.Show("Ничего не выбрано.", "Meh...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
DialogResult dialogResult = MessageBox.Show("Это удалит все локальные настройки пользователя в выбранных базах. \r\nВы уверены, что хотите этого?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Yes)
{
ClearFolders(true);
RefreshListBases();
ShowSelectedInfo();
}
}
// ****** FOR DEBUG
private void ListBases_SelectedIndexChanged(object sender, EventArgs e)
{
ShowSelectedInfo();
}
// ******************* MAIN *******************
private void ClearFolders(bool purge)
{
CheckedListBox.CheckedItemCollection items = ListBases.CheckedItems;
int successfully_deleted = 0;
int errors_on_delete = 0;
float total_size_deleted = 0.0f;
List<string> list_success = new List<string>();
List<string> list_error = new List<string>();
List<string> list_exceptions = new List<string>();
for (int i = 0; i < items.Count; i++)
{
BasesListItem base_item = items[i] as BasesListItem;
(bool is_error, float deleted_size, List<string> exceptions) = DeleteFoldersContent(purge ? base_item.FolderPaths : base_item.CachePaths);
if (!is_error)
{
successfully_deleted++;
list_success.Add(base_item.Name);
}
else
{
errors_on_delete++;
list_error.Add(base_item.Name);
list_exceptions.AddRange(exceptions);
}
total_size_deleted += deleted_size;
}
ShowResults(successfully_deleted, errors_on_delete, total_size_deleted, list_success, list_error, list_exceptions);
}
private void ShowResults(int successfully_deleted, int errors_on_delete, float total_size_deleted,
List<string> list_success, List<string> list_error, List<string> list_exceptions)
{
FormResult resultForm = new FormResult();
resultForm.SetInfoResult(successfully_deleted, errors_on_delete, total_size_deleted,
list_success, list_error, list_exceptions);
resultForm.ShowDialog();
}
private (bool is_error, float deleted_size, List<string> exceptions) DeleteFoldersContent(List<string> ListPaths)
{
bool is_error = false;
float deleted_size = 0.0f;
List<string> exceptions = new List<string>();
foreach (string folder_path in ListPaths)
{
long folder_size = DirSize(new DirectoryInfo(folder_path));
try
{
Directory.Delete(folder_path, true);
deleted_size += folder_size;
}
catch (Exception e)
{
is_error = true;
exceptions.Add(e.ToString());
}
}
deleted_size = deleted_size / 1024 / 1024;
return (is_error, deleted_size, exceptions);
}
// ******************* Added functions *******************
private void ShowSelectedInfo()
{
if (!InfoBox.Visible) { return; }
InfoBox.ResetText();
BasesListItem curItem = ListBases.SelectedItem as BasesListItem;
if (curItem is null) { return; }
/*
Console.WriteLine("Name: " + curItem.Name);
Console.WriteLine("ID: " + curItem.Id);
Console.WriteLine("Connect string: " + curItem.Path);
Console.WriteLine("Cache exists: " + curItem.FolderExists);
Console.WriteLine("Size total: " + curItem.FolderSize.ToString("0.00"));
Console.WriteLine("Size cache: " + curItem.CacheSize.ToString("0.00"));
Console.WriteLine("Root Folders: " + curItem.FolderPaths.Count);
Console.WriteLine("Cache Folders: " + curItem.CachePaths.Count);
*/
InfoBox.AppendText("--- Информация о базе ---");
InfoBox.AppendText("\r\nИмя: " + curItem.Name);
InfoBox.AppendText("\r\nID: " + curItem.Id);
InfoBox.AppendText("\r\nСтрока подключения: " + curItem.Path);
InfoBox.AppendText("\r\n");
InfoBox.AppendText("\r\nКэш существует: " + ((curItem.FolderExists) ? "Да" : "Нет"));
InfoBox.AppendText("\r\nРазмер кэша: " + curItem.CacheSize.ToString("0.00") + " Mb");
InfoBox.AppendText("\r\nРазмер всего: " + curItem.FolderSize.ToString("0.00") + " Mb");
InfoBox.AppendText("\r\n");
InfoBox.AppendText("\r\nКорневые каталоги: ");
foreach (string s in curItem.FolderPaths)
{
InfoBox.AppendText("\r\n > " + s);
}
InfoBox.AppendText("\r\n");
InfoBox.AppendText("\r\nКаталоги кэша: ");
foreach (string s in curItem.CachePaths)
{
InfoBox.AppendText("\r\n > " + s);
}
InfoBox.AppendText("\r\n");
}
private void ModListBases(bool isChecked, bool onlyWithCache)
{
for (int i = 0; i < ListBases.Items.Count; i++)
{
if (onlyWithCache)
{
if ((ListBases.Items[i] as BasesListItem).CacheSize > 0)
{
ListBases.SetItemChecked(i, true);
}
else
{
ListBases.SetItemChecked(i, false);
}
}
else
{
ListBases.SetItemChecked(i, isChecked);
}
}
}
private void RefreshListBases()
{
this.ListBases.Items.Clear();
string base_path = @"%appdata%\1C\1CEStart\ibases.v8i";
string[] lines = ReadFileContent(base_path);
if (lines == null)
{
MessageBox.Show("Can't find ibases.v8i file in provided location: " + base_path, "Error reading file!",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
var bases_dict = GetBasesDictionary(lines);
foreach (string key in bases_dict.Keys)
{
var value = bases_dict[key];
(bool s_folder_exists,
float s_folder_size, float s_cache_size,
List<string> s_folder_paths, List<string> s_cache_paths) = GetLocalFolderInfo(key);
ListBases.Items.Add(new BasesListItem(value.Name, value.Path, key,
s_folder_exists,
s_folder_size, s_cache_size,
s_folder_paths, s_cache_paths), false);
}
}
private (bool s_folder_exists,
float s_folder_size, float s_cache_size,
List<string> s_folder_paths, List<string> s_cache_paths) GetLocalFolderInfo(string key)
{
// Local path of cache is:
// %APPDATA%\1C\1cv8\$Id
// %LOCALAPPDATA%\1C\1cv8\$Id
// var cache_folders = ("Config", "ConfigSave", "SICache", "vrs-cache");
string base_path_local = @"%LOCALAPPDATA%\1C\1cv8\" + key;
string base_path_roaming = @"%APPDATA%\1C\1cv8\" + key;
base_path_local = Environment.ExpandEnvironmentVariables(base_path_local);
base_path_roaming = Environment.ExpandEnvironmentVariables(base_path_roaming);
float s_folder_size = 0.0f;
float s_cache_size = 0.0f;
List<string> s_folder_paths = new List<string>();
List<string> s_cache_paths = new List<string>();
bool s_folder_exists = (Directory.Exists(base_path_local) || Directory.Exists(base_path_roaming)) ? true : false;
if (s_folder_exists)
{
s_cache_paths = GetFoldersById(base_path_local, base_path_roaming);
if (s_cache_paths.Count > 0)
{
foreach (string s in s_cache_paths)
{
s_cache_size += DirSize(new DirectoryInfo(s));
}
}
if (Directory.Exists(base_path_local))
{
s_folder_size += DirSize(new DirectoryInfo(base_path_local));
s_folder_paths.Add(base_path_local);
}
if (Directory.Exists(base_path_roaming))
{
s_folder_size += DirSize(new DirectoryInfo(base_path_roaming));
s_folder_paths.Add(base_path_roaming);
}
}
s_folder_size = s_folder_size / 1024 / 1024; // Mb
s_cache_size = s_cache_size / 1024 / 1024; // Mb
return (s_folder_exists,
s_folder_size, s_cache_size,
s_folder_paths, s_cache_paths);
}
private List<string> GetFoldersById(string base_path_local, string base_path_roaming)
{
var found_folders = new List<string>();
if (Directory.Exists(base_path_local))
{
found_folders.AddRange(Directory.GetDirectories(base_path_local, "Config", SearchOption.AllDirectories).ToList());
found_folders.AddRange(Directory.GetDirectories(base_path_local, "ConfigSave", SearchOption.AllDirectories).ToList());
found_folders.AddRange(Directory.GetDirectories(base_path_local, "SICache", SearchOption.AllDirectories).ToList());
}
if (Directory.Exists(base_path_roaming))
{
found_folders.AddRange(Directory.GetDirectories(base_path_roaming, "vrs-cache", SearchOption.AllDirectories).ToList());
}
return found_folders;
}
private Dictionary<string, (string Name, string Path)> GetBasesDictionary(string[] lines)
{
var bases_dict = new Dictionary<string, (string Name, string Path)>();
var (name, id, path) = ("", "", "");
foreach (string line in lines)
{
/* ---------- EXAMPLE
[Торговля(Рабочая)]
Connect=Srvr="winserv";Ref="ut2014_work";
ID=f8370086-654e-4807-b79b-3f51653c3699
OrderInList = 0
Folder=/Рабочие
OrderInTree = 0
External=1
ClientConnectionSpeed=Normal
App = Auto
WA=1
Version=8.2
DefaultApp=ThickClient
-------------------- */
if (line.StartsWith("[")) // Start
{
name = line.Substring(1, line.Length - 2);
id = "";
path = "";
}
else if (line.StartsWith("Connect=")) // Connect string
{
path = line.Substring(8);
}
else if (line.StartsWith("ID=")) // ID string
{
id = line.Substring(3);
}
if (name != "" && path != "" && id != "")
{
bases_dict.Add(id, (name, path));
name = "";
id = "";
path = "";
}
}
return bases_dict;
}
private string[] ReadFileContent(string path_to_file)
{
string full_path_to_file = Environment.ExpandEnvironmentVariables(path_to_file);
if (!File.Exists(full_path_to_file))
{
return null;
}
return System.IO.File.ReadAllLines(full_path_to_file);
}
private static long DirSize(DirectoryInfo d)
{
long size = 0;
// Add file sizes.
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
{
size += fi.Length;
}
// Add subdirectory sizes.
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
{
size += DirSize(di);
}
return size;
}
private void ButtonAbout_Click(object sender, EventArgs e)
{
FormAbout aboutForm = new FormAbout();
aboutForm.ShowDialog();
}
}
}

441
ClearCache1C/Form1.resx Normal file
View File

@ -0,0 +1,441 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnRemoveSelection.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGeYUxB9wAAAO1pQ0NQUGhv
dG9zaG9wIElDQyBwcm9maWxlAAAoz2NgYJzh6OLkyiTAwJCbV1LkHuQYGREZpcB+noGNgZkBDBKTiwsc
AwJ8QOy8/LxUBlTAyMDw7RqIZGC4rAsyi4E0wJpcUFQCpA8AsVFKanEykP4CxJnlJQVAccYEIFskKRvM
BqkTyQ4JcgayO4BsvpLUCpAYg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoK
UC3UDhDgdy9KrFRwT8zNTVQw0jNioDoAhSWE9TkEHEaMYucRYgiQXFpUBgtPJmMGBgBLGzgw6GaaaQAA
AAlwSFlzAAALEwAACxMBAJqcGAAAACBJREFUOE9jAIL/FGKG/+SCUQNGDQCBUQOoaQD5mOE/ALwPSOI5
CblOAAAAAElFTkSuQmCC
</value>
</data>
<data name="btnSelectAll.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGeYUxB9wAAAO1pQ0NQUGhv
dG9zaG9wIElDQyBwcm9maWxlAAAoz2NgYJzh6OLkyiTAwJCbV1LkHuQYGREZpcB+noGNgZkBDBKTiwsc
AwJ8QOy8/LxUBlTAyMDw7RqIZGC4rAsyi4E0wJpcUFQCpA8AsVFKanEykP4CxJnlJQVAccYEIFskKRvM
BqkTyQ4JcgayO4BsvpLUCpAYg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoK
UC3UDhDgdy9KrFRwT8zNTVQw0jNioDoAhSWE9TkEHEaMYucRYgiQXFpUBgtPJmMGBgBLGzgw6GaaaQAA
AAlwSFlzAAALEwAACxMBAJqcGAAAAFxJREFUOE/VjEsOgDAIBVlx/xujTYYqWPzUjU7yFjxgZMVeRmyW
Hwp4YHoo8GfPrjsYmTa8z3vmYOtxqr5BVx/nZOiH1hBVZRthX5p7KtiPD66eG6eCO3xIMB+xBcMg0V0g
dEfYAAAAAElFTkSuQmCC
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMW
IRATFiFAFBciIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSoyMCosNDAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW
If8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiGAAAAAAAAA
AAAAAAAAExYhEBMWIc8UFyH/Fhkj7xgbJTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKjKfKiwz/ywu
Nf8uMDePAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW
If8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW
If8TFiFgAAAAAAAAAAATFiEQExYhzxQXIf8WGSP/GBsl/xodJ+8cHygwAAAAAAAAAAAAAAAAAAAAACgq
Mp8qLDP/LC41/y4wN/8wMjj/MjQ6gAAAAAAAAAAAAAAAAAAAAAAAAAAAFBci/xQXIv8UFyL/FBci/xQX
Iv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQX
Iv8UFyL/FBci/xQXIWAAAAAAAAAAAAAAAAATFiFAFBch/xYZI/8YGyX/Gh0n/xwfKP8fISrvISMsMAAA
AAAAAAAAKCoynyosM/8sLjX/LjA3/zAyOP8zNDr/NTY87wAAAAAAAAAAAAAAAAAAAAAAAAAAFRgj/xUY
I/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUY
I/8VGCP/FRgj/xUYI/8VGCP/FRgjvwAAAAAAAAAAAAAAAAAAAAAUFyIgFhkj7xgbJf8aHSf/HB8o/x8h
Kv8hIyz/IyUu7yUnMDAoKjKfKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg9rwAAAAAAAAAAAAAAAAAA
AAAAAAAAFxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZ
JP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJJ8AAAAAAAAAAAAAAAAAAAAAGBslMBod
J+8cHyj/HyEq/yEjLP8jJS7/JScw/ycpMf8qLDP/LC41/y4wN/8wMjj/MzQ6/zU2PP83OD3PODk+EAAA
AAAAAAAAAAAAAAAAAAAAAAAAGBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgb
Jf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyWfAAAAAAAA
AAAAAAAAAAAAABwfKDAfISrvISMs/yMlLv8lJzD/Jykx/yosM/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4
Pc84OT4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkc
Jv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkc
Jv8ZHCb/GRwmnwAAAAAAAAAAAAAAAAAAAAAhIywwIyUu7yUnMP8nKTH/Kiwz/ywuNf8uMDf/MDI4/zM0
Ov81Njz/Nzg9zzg5PhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx0n/xsdJ/8bHSf/Gx0n/xsd
J/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsd
J/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ58AAAAAAAAAAAAAAAAAAAAAJScwMCcpMf8qLDP/LC41/y4w
N/8wMjj/MzQ6/zU2PP83OD3PODk+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyiPAAAAAAAAAAAAAAAAKCoynyos
M/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4Pv85Oj/vOzxBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHSAp/x0gKf8dICn/HSAp/x0gKf8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/x0gKf8dICn/HSAp/x0gKf8dICn/HSAp/x0fKe8dHykwAAAAAAAA
AAAoKjKfKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg+/zk6P/87PEH/Pj5D70BBRTAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHyEq/x8hKv8fISr/HyEq/x8hKv8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/x8hKv8fISr/HyEq/x8hKv8fISr/HiEq7x4g
KjAAAAAAAAAAACgqMp8qLDP/LC41/y4wN/8wMjj/MzQ6/zU2PP83OD7/OTo//zs8Qf8+PkP/QEFF/0JD
Ru9ERUgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICIr/yAiK/8gIiv/ICIr/yAiK/8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/yAiK/8gIiv/ICIr/yAi
K/8gIivvHyIrMAAAAAAAAAAAKCoynyosM/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4Pc85Oj/vOzxB/z4+
Q/9AQUX/QkNG/0RFSP9GR0rvSUlMMAAAAAAAAAAAAAAAAAAAAAAAAAAAISQs/yEkLP8hJCz/ISQs/yEk
LP8hJCz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISQs/yEkLP8hJCz/ISQs/yEk
LP8hJCz/ISQs/yEjLO8hIywwAAAAAAAAAAApKjIwKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg9zzg5
PhA7PEEwPj5D70BBRf9CQ0b/REVI/0ZHSv9JSUz/S0tOzwAAAAAAAAAAAAAAAAAAAAAAAAAAIyUt/yMl
Lf8jJS3/IyUt/yMlLf8jJS3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyUt/yMl
Lf8jJS3/IyUt/yMlLf8jJS3/IiUt7yIkLTAAAAAAAAAAAAAAAAAqLDQwLC41/y4wN/8wMjj/MzQ6/zU2
PP83OD3PODk+EAAAAAAAAAAAQEFFMEJDRu9ERUj/RkdK/0lJTP9LS07/TU1PzwAAAAAAAAAAAAAAAAAA
AAAAAAAAJCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQm
L/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv7yQmLzAAAAAAAAAAAAAAAAAAAAAALjA3nzAy
OP8zNDr/NTY8/zc4Pc84OT4QAAAAAAAAAAAAAAAAAAAAAERFSDBGR0rvSUlM/0tLTv9NTU/vTk5QMAAA
AAAAAAAAAAAAAAAAAAAAAAAAJScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUn
MP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMO8mKDAwAAAAAAAA
AAAAAAAAAAAAADI0Oo81NjzvNzg9rzg5PhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJSUwwS0tO301N
T99OTlAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycp
Mf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycp
Mf8nKTHvJykxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcpMTAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ygqMv8oKjL/KCoy7ygqMjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCoyYCgq
Mr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSsz/ykr
M/8pKzP/KSsz/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ykrM/8pKzP/KSsz/ykrM/8pKzP/KSsz/ykrM+8qLDMwAAAAAAAAAAAAAAAAAAAAAAAA
AAAqLDNgKSsz/ykrM78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAKy00/ystNP8rLTT/Ky00/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ygqMv8oKjL/KCoy/ystNP8rLTT/Ky00/ystNP8rLTT/Ky00/ystNP8rLTTvKy00MAAA
AAAAAAAAAAAAACstNGArLTT/Ky00/ystNL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALC41/ywuNf8sLjX/LC41/ywuNf8sLjX/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALC41/ywuNf8sLjX/LC41/ywuNf8sLjX/LC41/ywuNf8sLjX/LC41/ywu
Nf8sLjX/LC417ywuNTAAAAAALC41YCwuNf8sLjX/LC41/ywuNb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS82/y0vNv8tLzb/LS82/y0vNv8tLzb/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS82/y0vNv8tLzb/LS82/y0vNv8tLzb/LS82/y0v
Nv8tLzb/LS82/y0vNv8tLzb/LS82/y0vNu8uLzaALS82/y0vNv8tLzb/LS82/y0vNr8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALzA3/y8wN/8vMDf/LzA3/y8w
N/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8w
N/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8w
N78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAMzQ6/zM0Ov8zNDr/MzQ6/zM0Ov8zNDr/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zM0Ov8zNDr/MzQ6/zM0
Ov8zNDr/MzQ6/zM0Ov8zNDr/MzQ6/zM0Ov8zNDr/MzQ6/zM0Or8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zQ1
O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O78AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTc8/zU3PP81Nzz/NTc8/zU3
PP81Nzz/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3
PL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzg+/zc4
Pv83OD7/Nzg+/zc4Pv83OD7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAANzg+/zc4Pv83OD7/Nzg+/zc4Pv83OD7/Nzg+/zc4Pv83OD7/Nzg+/zc4
Pv83OD7/Nzg+/zc4Pr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAODk//zg5P/84OT//ODk//zg5P/84OT//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODk//zg5P/84OT//ODk//zg5P/84OT//ODk//zg5
P/84OT//ODk//zg5P/84OT//ODk//zg5P78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAOjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7
QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7
QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8
Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8
Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qb8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD1C/zw9Qv88PUL/PD1C/zw9
Qv88PUL/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8
Qf87PEH/OzxB/zw9Qv88PUL/PD1Cvzw9Qr88PUK/PD1Cvzw9Qr88PUK/PD1Cvzw9Qr88PUK/PD1Cvzw9
Qo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj5D/z4+
Q/8+PkP/Pj5D/z4+Q/8+PkP/PD1C/zw9Qv88PUL/PD1C/zw9Qv88PUL/PD1C/zw9Qv88PUL/PD1C/zw9
Qv88PUL/PD1C/zw9Qv88PUL/PD1C/z4+Q/8+PkP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAP0BE/z9ARP8/QET/P0BE/z9ARP8/QET/PT1C/z09Qv89PUL/PT1C/z09Qv89PUL/PT1C/z09
Qv89PUL/PT1C/z09Qv89PUL/PT1C/z09Qv89PUL/PT1C/z9ARP8/QET/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAQEFF/0BBRf9AQUX/QEFF/0BBRf9AQUX/Pj5D/z4+Q/8+PkP/Pj5D/z4+
Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/0BBRf9AQUX/AAAAAAAA
AABAQUXXQEFFv0BBRb9AQUW/QEFFv0BBRb9AQUW/QEFFr0BBRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkJG/0JCRv9CQkb/QkJG/0JCRv9CQkb/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkJG/0JC
Rv9CQkb/AAAAAAAAAABCQkb/QkJG/0JCRv9CQkb/QkJG/0JCRv9CQkb/QUJGYAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0NH/0NDR/9DQ0f/Q0NH/0ND
R/9DQ0f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAQ0NH/0NDR/9DQ0f/AAAAAAAAAABDQ0f/Q0NH/0NDR/9DQ0f/Q0NH/0NDR/9DQ0efAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREVI/0RF
SP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RF
SP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/AAAAAAAAAABERUj/REVI/0RFSP9ERUj/REVI/0RE
SM8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAARkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZG
Sf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/AAAAAAAAAABGRkn/RkZJ/0ZG
Sf9GRkn/RUZJ70VGSSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAR0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dH
Sv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/AAAAAAAA
AABHR0r/R0dK/0dHSv9HR0r/R0dKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJ
S/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJ
S/9ISUv/AAAAAAAAAABISUv/SElL/0hJS/9ISEuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpN/0pKTf9KSk3/SkpN/0pK
Tf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pK
Tf9KSk3/SkpN/0pKTf9KSk3/AAAAAAAAAABKSk3/SkpN/0lKTK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0tO/0tL
Tv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tL
Tv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/AAAAAAAAAABLS03vS0tN30pKTRAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAATExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xM
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
AAAAAAAAAAAAAAAAAAAAAAAALC41/iwuNf8sLjX/LC41/ywuNf8sLjX+LC41/CwuNcctLjV8LC417Cwu
Nf4sLjXTMzQ6AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuMDb/LjA2/y4wNv4uMDb+LjA2/i4w
Nv0uMDb9LjA2/S4wNv0uMDb9LjA2/i4wNv4uMDb+LjA2/y4wNv8uMDb/LjA2/y4wNv4uMDb+LjA2/i4w
Nv4uMDb+LjA2/i8wN9MxMzkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj+MDI40zEzOQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjQ5/zIz
Of8yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jI0
Of4yNDn/MjQ5/zI0Of8yNDn/MjQ5/zI0Of4yMznTMjM5AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA0Njv/NDU7/zQ1O/40NTv+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA0NTv2NDY7/jQ2O/80Njv/NDY7/zQ2O/80Njv/NDY7/jQ1O9MzNDoBAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADY4Pf82Nz3/Njc9/jY3Pf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADY3Peo2OD3+Njg9/zY4Pf82OD3/Njg9/zY4Pf82OD3+Njc90zU2PAEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAOTo//zo6P/87O0D/OztA/zs7QP87O0D/OztA/zs7QP87O0D/OztA/zs7
QP87O0D/OztA/zs7QP87O0D/ODo/+Dk6P/45Oj/+OTo//jk6P/45Oj/+OTo//jk6P/44OT7SNjc9AQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7O0D/OztA/zs7QP47O0D+OztA/js7QP47O0D+OztA/js7
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
AAAA/wAAAI8AAD6PAAAAnwAAAL8AAA==
</value>
</data>
</root>

66
ClearCache1C/Form2.Designer.cs generated Normal file
View File

@ -0,0 +1,66 @@
namespace ClearCache1C
{
partial class FormResult
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.InfoResult = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// InfoResult
//
this.InfoResult.BackColor = System.Drawing.SystemColors.Info;
this.InfoResult.Dock = System.Windows.Forms.DockStyle.Fill;
this.InfoResult.Location = new System.Drawing.Point(0, 0);
this.InfoResult.Multiline = true;
this.InfoResult.Name = "InfoResult";
this.InfoResult.ReadOnly = true;
this.InfoResult.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.InfoResult.Size = new System.Drawing.Size(464, 461);
this.InfoResult.TabIndex = 0;
//
// FormResult
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(464, 461);
this.Controls.Add(this.InfoResult);
this.Name = "FormResult";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Text = "Результат удаления";
this.Load += new System.EventHandler(this.FormResult_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox InfoResult;
}
}

54
ClearCache1C/Form2.cs Normal file
View File

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClearCache1C
{
public partial class FormResult : Form
{
public FormResult()
{
StartPosition = FormStartPosition.CenterScreen;
InitializeComponent();
}
private void FormResult_Load(object sender, EventArgs e)
{
MaximizeBox = false;
MinimizeBox = false;
}
public void SetInfoResult(int successfully_deleted, int errors_on_delete, float total_size_deleted,
List<string> list_success, List<string> list_error, List<string> list_exceptions)
{
InfoResult.ResetText();
InfoResult.AppendText("--- Итоги ---");
InfoResult.AppendText("\r\nВыполнено успешно: " + successfully_deleted);
InfoResult.AppendText("\r\nВыполнено с ошибками: " + errors_on_delete);
InfoResult.AppendText("\r\nВсего удалено: " + total_size_deleted.ToString("0.00") + " Mb");
InfoResult.AppendText("\r\n");
InfoResult.AppendText("\r\n--- Список обработанных успешно ---");
foreach (string s in list_success)
{
InfoResult.AppendText("\r\n > " + s);
}
InfoResult.AppendText("\r\n");
InfoResult.AppendText("\r\n--- Список обработанных с ошибками ---");
foreach (string s in list_error)
{
InfoResult.AppendText("\r\n > " + s);
}
InfoResult.AppendText("\r\n");
InfoResult.AppendText("\r\n--- Лог ошибок ---");
foreach (string s in list_exceptions)
{
InfoResult.AppendText("\r\n > " + s);
}
}
}
}

120
ClearCache1C/Form2.resx Normal file
View File

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

172
ClearCache1C/Form3.Designer.cs generated Normal file
View File

@ -0,0 +1,172 @@
namespace ClearCache1C
{
partial class FormAbout
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout));
this.pictureBoxAi = new System.Windows.Forms.PictureBox();
this.panel1 = new System.Windows.Forms.Panel();
this.textBoxInfo = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.linkContact = new System.Windows.Forms.LinkLabel();
this.linkGit = new System.Windows.Forms.LinkLabel();
this.label4 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAi)).BeginInit();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// pictureBoxAi
//
this.pictureBoxAi.Cursor = System.Windows.Forms.Cursors.Hand;
this.pictureBoxAi.Image = global::ClearCache1C.Properties.Resources.ai_full_logo___clean;
this.pictureBoxAi.InitialImage = global::ClearCache1C.Properties.Resources.ai_full_logo___clean;
this.pictureBoxAi.Location = new System.Drawing.Point(12, 12);
this.pictureBoxAi.Name = "pictureBoxAi";
this.pictureBoxAi.Size = new System.Drawing.Size(127, 119);
this.pictureBoxAi.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBoxAi.TabIndex = 0;
this.pictureBoxAi.TabStop = false;
this.pictureBoxAi.Click += new System.EventHandler(this.pictureBoxAi_Click);
//
// panel1
//
this.panel1.Controls.Add(this.textBoxInfo);
this.panel1.Controls.Add(this.label1);
this.panel1.Location = new System.Drawing.Point(147, 13);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(200, 118);
this.panel1.TabIndex = 2;
//
// textBoxInfo
//
this.textBoxInfo.BackColor = System.Drawing.SystemColors.Control;
this.textBoxInfo.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBoxInfo.Cursor = System.Windows.Forms.Cursors.Default;
this.textBoxInfo.Enabled = false;
this.textBoxInfo.ForeColor = System.Drawing.SystemColors.WindowText;
this.textBoxInfo.Location = new System.Drawing.Point(4, 28);
this.textBoxInfo.Multiline = true;
this.textBoxInfo.Name = "textBoxInfo";
this.textBoxInfo.ReadOnly = true;
this.textBoxInfo.Size = new System.Drawing.Size(193, 87);
this.textBoxInfo.TabIndex = 2;
this.textBoxInfo.TabStop = false;
this.textBoxInfo.Text = "Все просто.\r\nПрограмма читает пользовательский файл ibases.v8i и на его основе ст" +
"роит список баз.\r\nПо найденным ID и происходит вся магия удалений.";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.label1.Location = new System.Drawing.Point(49, 12);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(103, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Чистка кэша 1С";
//
// linkContact
//
this.linkContact.AutoSize = true;
this.linkContact.LinkArea = new System.Windows.Forms.LinkArea(20, 15);
this.linkContact.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
this.linkContact.LinkColor = System.Drawing.SystemColors.HotTrack;
this.linkContact.Location = new System.Drawing.Point(12, 134);
this.linkContact.Name = "linkContact";
this.linkContact.Size = new System.Drawing.Size(199, 17);
this.linkContact.TabIndex = 6;
this.linkContact.TabStop = true;
this.linkContact.Text = "Автор: FuketsuBaka (ai@ai-frame.net)";
this.linkContact.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.linkContact.UseCompatibleTextRendering = true;
this.linkContact.VisitedLinkColor = System.Drawing.SystemColors.WindowFrame;
this.linkContact.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkContact_LinkClicked);
//
// linkGit
//
this.linkGit.AutoSize = true;
this.linkGit.LinkArea = new System.Windows.Forms.LinkArea(5, 46);
this.linkGit.LinkColor = System.Drawing.SystemColors.HotTrack;
this.linkGit.Location = new System.Drawing.Point(12, 151);
this.linkGit.Name = "linkGit";
this.linkGit.Size = new System.Drawing.Size(267, 17);
this.linkGit.TabIndex = 7;
this.linkGit.TabStop = true;
this.linkGit.Text = "GIT: https://bitbucket.org/FuketsuBaka/clearcache1c";
this.linkGit.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.linkGit.UseCompatibleTextRendering = true;
this.linkGit.VisitedLinkColor = System.Drawing.SystemColors.WindowFrame;
this.linkGit.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkGit_LinkClicked);
//
// label4
//
this.label4.AutoSize = true;
this.label4.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
this.label4.Location = new System.Drawing.Point(149, 175);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(42, 13);
this.label4.TabIndex = 9;
this.label4.Text = "2018 г.";
//
// FormAbout
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(356, 196);
this.Controls.Add(this.label4);
this.Controls.Add(this.linkGit);
this.Controls.Add(this.linkContact);
this.Controls.Add(this.panel1);
this.Controls.Add(this.pictureBoxAi);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormAbout";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "About";
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAi)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.PictureBox pictureBoxAi;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.TextBox textBoxInfo;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.LinkLabel linkContact;
private System.Windows.Forms.LinkLabel linkGit;
private System.Windows.Forms.Label label4;
}
}

56
ClearCache1C/Form3.cs Normal file
View File

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClearCache1C
{
public partial class FormAbout : Form
{
public FormAbout()
{
StartPosition = FormStartPosition.CenterScreen;
InitializeComponent();
}
private void LinkContact_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string url;
if (e.Link.LinkData != null)
url = e.Link.LinkData.ToString();
else
url = linkContact.Text.Substring(e.Link.Start, e.Link.Length);
if (!url.Contains("://"))
url = "mailto:" + url;
System.Diagnostics.Process.Start(url);
linkContact.LinkVisited = true;
}
private void linkGit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string url;
if (e.Link.LinkData != null)
url = e.Link.LinkData.ToString();
else
url = linkGit.Text.Substring(e.Link.Start, e.Link.Length);
if (!url.Contains("://"))
url = "mailto:" + url;
System.Diagnostics.Process.Start(url);
linkGit.LinkVisited = true;
}
private void pictureBoxAi_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://ai-frame.net/");
}
}
}

418
ClearCache1C/Form3.resx Normal file
View File

@ -0,0 +1,418 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMW
IRATFiFAFBciIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSoyMCosNDAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW
If8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiGAAAAAAAAA
AAAAAAAAExYhEBMWIc8UFyH/Fhkj7xgbJTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKjKfKiwz/ywu
Nf8uMDePAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW
If8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMWIf8TFiH/ExYh/xMW
If8TFiFgAAAAAAAAAAATFiEQExYhzxQXIf8WGSP/GBsl/xodJ+8cHygwAAAAAAAAAAAAAAAAAAAAACgq
Mp8qLDP/LC41/y4wN/8wMjj/MjQ6gAAAAAAAAAAAAAAAAAAAAAAAAAAAFBci/xQXIv8UFyL/FBci/xQX
Iv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQXIv8UFyL/FBci/xQX
Iv8UFyL/FBci/xQXIWAAAAAAAAAAAAAAAAATFiFAFBch/xYZI/8YGyX/Gh0n/xwfKP8fISrvISMsMAAA
AAAAAAAAKCoynyosM/8sLjX/LjA3/zAyOP8zNDr/NTY87wAAAAAAAAAAAAAAAAAAAAAAAAAAFRgj/xUY
I/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUYI/8VGCP/FRgj/xUY
I/8VGCP/FRgj/xUYI/8VGCP/FRgjvwAAAAAAAAAAAAAAAAAAAAAUFyIgFhkj7xgbJf8aHSf/HB8o/x8h
Kv8hIyz/IyUu7yUnMDAoKjKfKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg9rwAAAAAAAAAAAAAAAAAA
AAAAAAAAFxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZ
JP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJP8XGST/Fxkk/xcZJJ8AAAAAAAAAAAAAAAAAAAAAGBslMBod
J+8cHyj/HyEq/yEjLP8jJS7/JScw/ycpMf8qLDP/LC41/y4wN/8wMjj/MzQ6/zU2PP83OD3PODk+EAAA
AAAAAAAAAAAAAAAAAAAAAAAAGBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgb
Jf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyX/GBsl/xgbJf8YGyWfAAAAAAAA
AAAAAAAAAAAAABwfKDAfISrvISMs/yMlLv8lJzD/Jykx/yosM/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4
Pc84OT4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkc
Jv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkcJv8ZHCb/GRwm/xkc
Jv8ZHCb/GRwmnwAAAAAAAAAAAAAAAAAAAAAhIywwIyUu7yUnMP8nKTH/Kiwz/ywuNf8uMDf/MDI4/zM0
Ov81Njz/Nzg9zzg5PhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx0n/xsdJ/8bHSf/Gx0n/xsd
J/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsd
J/8bHSf/Gx0n/xsdJ/8bHSf/Gx0n/xsdJ58AAAAAAAAAAAAAAAAAAAAAJScwMCcpMf8qLDP/LC41/y4w
N/8wMjj/MzQ6/zU2PP83OD3PODk+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyiPAAAAAAAAAAAAAAAAKCoynyos
M/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4Pv85Oj/vOzxBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHSAp/x0gKf8dICn/HSAp/x0gKf8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/x0gKf8dICn/HSAp/x0gKf8dICn/HSAp/x0fKe8dHykwAAAAAAAA
AAAoKjKfKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg+/zk6P/87PEH/Pj5D70BBRTAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHyEq/x8hKv8fISr/HyEq/x8hKv8cHyj/HB8o/xwfKP8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/x8hKv8fISr/HyEq/x8hKv8fISr/HiEq7x4g
KjAAAAAAAAAAACgqMp8qLDP/LC41/y4wN/8wMjj/MzQ6/zU2PP83OD7/OTo//zs8Qf8+PkP/QEFF/0JD
Ru9ERUgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICIr/yAiK/8gIiv/ICIr/yAiK/8cHyj/HB8o/xwf
KP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/xwfKP8cHyj/HB8o/yAiK/8gIiv/ICIr/yAi
K/8gIivvHyIrMAAAAAAAAAAAKCoynyosM/8sLjX/LjA3/zAyOP8zNDr/NTY8/zc4Pc85Oj/vOzxB/z4+
Q/9AQUX/QkNG/0RFSP9GR0rvSUlMMAAAAAAAAAAAAAAAAAAAAAAAAAAAISQs/yEkLP8hJCz/ISQs/yEk
LP8hJCz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISQs/yEkLP8hJCz/ISQs/yEk
LP8hJCz/ISQs/yEjLO8hIywwAAAAAAAAAAApKjIwKiwz/ywuNf8uMDf/MDI4/zM0Ov81Njz/Nzg9zzg5
PhA7PEEwPj5D70BBRf9CQ0b/REVI/0ZHSv9JSUz/S0tOzwAAAAAAAAAAAAAAAAAAAAAAAAAAIyUt/yMl
Lf8jJS3/IyUt/yMlLf8jJS3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyUt/yMl
Lf8jJS3/IyUt/yMlLf8jJS3/IiUt7yIkLTAAAAAAAAAAAAAAAAAqLDQwLC41/y4wN/8wMjj/MzQ6/zU2
PP83OD3PODk+EAAAAAAAAAAAQEFFMEJDRu9ERUj/RkdK/0lJTP9LS07/TU1PzwAAAAAAAAAAAAAAAAAA
AAAAAAAAJCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv/yQm
L/8kJi//JCYv/yQmL/8kJi//JCYv/yQmL/8kJi//JCYv7yQmLzAAAAAAAAAAAAAAAAAAAAAALjA3nzAy
OP8zNDr/NTY8/zc4Pc84OT4QAAAAAAAAAAAAAAAAAAAAAERFSDBGR0rvSUlM/0tLTv9NTU/vTk5QMAAA
AAAAAAAAAAAAAAAAAAAAAAAAJScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUn
MP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMP8lJzD/JScw/yUnMO8mKDAwAAAAAAAA
AAAAAAAAAAAAADI0Oo81NjzvNzg9rzg5PhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJSUwwS0tO301N
T99OTlAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycp
Mf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycpMf8nKTH/Jykx/ycp
Mf8nKTHvJykxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcpMTAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ygqMv8oKjL/KCoy7ygqMjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCoyYCgq
Mr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSsz/ykr
M/8pKzP/KSsz/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ykrM/8pKzP/KSsz/ykrM/8pKzP/KSsz/ykrM+8qLDMwAAAAAAAAAAAAAAAAAAAAAAAA
AAAqLDNgKSsz/ykrM78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAKy00/ystNP8rLTT/Ky00/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygqMv8oKjL/KCoy/ygq
Mv8oKjL/KCoy/ygqMv8oKjL/KCoy/ystNP8rLTT/Ky00/ystNP8rLTT/Ky00/ystNP8rLTTvKy00MAAA
AAAAAAAAAAAAACstNGArLTT/Ky00/ystNL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALC41/ywuNf8sLjX/LC41/ywuNf8sLjX/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALC41/ywuNf8sLjX/LC41/ywuNf8sLjX/LC41/ywuNf8sLjX/LC41/ywu
Nf8sLjX/LC417ywuNTAAAAAALC41YCwuNf8sLjX/LC41/ywuNb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS82/y0vNv8tLzb/LS82/y0vNv8tLzb/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS82/y0vNv8tLzb/LS82/y0vNv8tLzb/LS82/y0v
Nv8tLzb/LS82/y0vNv8tLzb/LS82/y0vNu8uLzaALS82/y0vNv8tLzb/LS82/y0vNr8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALzA3/y8wN/8vMDf/LzA3/y8w
N/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8w
N/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8wN/8vMDf/LzA3/y8w
N78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAMzQ6/zM0Ov8zNDr/MzQ6/zM0Ov8zNDr/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zM0Ov8zNDr/MzQ6/zM0
Ov8zNDr/MzQ6/zM0Ov8zNDr/MzQ6/zM0Ov8zNDr/MzQ6/zM0Or8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/MTM5/zEz
Of8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zQ1
O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O/80NTv/NDU7/zQ1O78AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTc8/zU3PP81Nzz/NTc8/zU3
PP81Nzz/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEzOf8xMzn/MTM5/zEz
Of8xMzn/MTM5/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3PP81Nzz/NTc8/zU3
PL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzg+/zc4
Pv83OD7/Nzg+/zc4Pv83OD7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAANzg+/zc4Pv83OD7/Nzg+/zc4Pv83OD7/Nzg+/zc4Pv83OD7/Nzg+/zc4
Pv83OD7/Nzg+/zc4Pr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAODk//zg5P/84OT//ODk//zg5P/84OT//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODk//zg5P/84OT//ODk//zg5P/84OT//ODk//zg5
P/84OT//ODk//zg5P/84OT//ODk//zg5P78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAOjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7
QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7
QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QP86O0D/OjtA/zo7QL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8
Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8
Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qb8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD1C/zw9Qv88PUL/PD1C/zw9
Qv88PUL/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8Qf87PEH/OzxB/zs8
Qf87PEH/OzxB/zw9Qv88PUL/PD1Cvzw9Qr88PUK/PD1Cvzw9Qr88PUK/PD1Cvzw9Qr88PUK/PD1Cvzw9
Qo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj5D/z4+
Q/8+PkP/Pj5D/z4+Q/8+PkP/PD1C/zw9Qv88PUL/PD1C/zw9Qv88PUL/PD1C/zw9Qv88PUL/PD1C/zw9
Qv88PUL/PD1C/zw9Qv88PUL/PD1C/z4+Q/8+PkP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAP0BE/z9ARP8/QET/P0BE/z9ARP8/QET/PT1C/z09Qv89PUL/PT1C/z09Qv89PUL/PT1C/z09
Qv89PUL/PT1C/z09Qv89PUL/PT1C/z09Qv89PUL/PT1C/z9ARP8/QET/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAQEFF/0BBRf9AQUX/QEFF/0BBRf9AQUX/Pj5D/z4+Q/8+PkP/Pj5D/z4+
Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/z4+Q/8+PkP/Pj5D/0BBRf9AQUX/AAAAAAAA
AABAQUXXQEFFv0BBRb9AQUW/QEFFv0BBRb9AQUW/QEFFr0BBRRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkJG/0JCRv9CQkb/QkJG/0JCRv9CQkb/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkJG/0JC
Rv9CQkb/AAAAAAAAAABCQkb/QkJG/0JCRv9CQkb/QkJG/0JCRv9CQkb/QUJGYAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0NH/0NDR/9DQ0f/Q0NH/0ND
R/9DQ0f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAQ0NH/0NDR/9DQ0f/AAAAAAAAAABDQ0f/Q0NH/0NDR/9DQ0f/Q0NH/0NDR/9DQ0efAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREVI/0RF
SP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/REVI/0RF
SP9ERUj/REVI/0RFSP9ERUj/REVI/0RFSP9ERUj/AAAAAAAAAABERUj/REVI/0RFSP9ERUj/REVI/0RE
SM8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAARkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZG
Sf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/RkZJ/0ZGSf9GRkn/AAAAAAAAAABGRkn/RkZJ/0ZG
Sf9GRkn/RUZJ70VGSSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAR0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dH
Sv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/R0dK/0dHSv9HR0r/AAAAAAAA
AABHR0r/R0dK/0dHSv9HR0r/R0dKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJ
S/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJS/9ISUv/SElL/0hJ
S/9ISUv/AAAAAAAAAABISUv/SElL/0hJS/9ISEuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpN/0pKTf9KSk3/SkpN/0pK
Tf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pK
Tf9KSk3/SkpN/0pKTf9KSk3/AAAAAAAAAABKSk3/SkpN/0lKTK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0tO/0tL
Tv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/S0tO/0tL
Tv9LS07/S0tO/0tLTv9LS07/S0tO/0tLTv9LS07/AAAAAAAAAABLS03vS0tN30pKTRAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAATExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xMT/9MTE//TExP/0xM
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
AAAAAAAAAAAAAAAAAAAAAAAALC41/iwuNf8sLjX/LC41/ywuNf8sLjX+LC41/CwuNcctLjV8LC417Cwu
Nf4sLjXTMzQ6AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuMDb/LjA2/y4wNv4uMDb+LjA2/i4w
Nv0uMDb9LjA2/S4wNv0uMDb9LjA2/i4wNv4uMDb+LjA2/y4wNv8uMDb/LjA2/y4wNv4uMDb+LjA2/i4w
Nv4uMDb+LjA2/i8wN9MxMzkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAyOP8wMjj/MDI4/zAy
OP8wMjj/MDI4/zAyOP8wMjj+MDI40zEzOQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjQ5/zIz
Of8yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jIzOf4yMzn+MjM5/jI0
Of4yNDn/MjQ5/zI0Of8yNDn/MjQ5/zI0Of4yMznTMjM5AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA0Njv/NDU7/zQ1O/40NTv+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA0NTv2NDY7/jQ2O/80Njv/NDY7/zQ2O/80Njv/NDY7/jQ1O9MzNDoBAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADY4Pf82Nz3/Njc9/jY3Pf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADY3Peo2OD3+Njg9/zY4Pf82OD3/Njg9/zY4Pf82OD3+Njc90zU2PAEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAOTo//zo6P/87O0D/OztA/zs7QP87O0D/OztA/zs7QP87O0D/OztA/zs7
QP87O0D/OztA/zs7QP87O0D/ODo/+Dk6P/45Oj/+OTo//jk6P/45Oj/+OTo//jk6P/44OT7SNjc9AQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7O0D/OztA/zs7QP47O0D+OztA/js7QP47O0D+OztA/js7
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
AAAA/wAAAI8AAD6PAAAAnwAAAL8AAA==
</value>
</data>
</root>

22
ClearCache1C/Program.cs Normal file
View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClearCache1C
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain());
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Общие сведения об этой сборке предоставляются следующим набором
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// связанные со сборкой.
[assembly: AssemblyTitle("ClearCache1C")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ClearCache1C")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
[assembly: ComVisible(false)]
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("ca37faa9-7c77-4c16-81a4-3bbd93f235a1")]
// Сведения о версии сборки состоят из следующих четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер сборки
// Редакция
//
// Можно задать все значения или принять номер сборки и номер редакции по умолчанию.
// используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,103 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ClearCache1C.Properties {
using System;
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ClearCache1C.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap ai_full_logo___clean {
get {
object obj = ResourceManager.GetObject("ai-full logo - clean", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icon_deselect_16 {
get {
object obj = ResourceManager.GetObject("icon_deselect_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icon_select_16 {
get {
object obj = ResourceManager.GetObject("icon_select_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icon_smart_select_16 {
get {
object obj = ResourceManager.GetObject("icon_smart_select_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -0,0 +1,133 @@
<?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>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="icon_select_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon_select_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon_deselect_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon_deselect_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon_smart_select_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon_smart_select_16.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ai-full logo - clean" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ai-full logo - clean.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ClearCache1C.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
</packages>