CUETools 2.1.1

* Local Database for verification results and metadata
* FlaCuda replaced with FLACCL
This commit is contained in:
chudov
2011-03-08 15:37:43 +00:00
parent 51639e3c7b
commit 052cb096c4
65 changed files with 2839 additions and 1037 deletions

View File

@@ -40,9 +40,169 @@ namespace CUEControls
public delegate void FileSystemTreeViewNodeExpandHandler(object sender, FileSystemTreeViewNodeExpandEventArgs e);
#endregion
public class DummyNode : TreeNode
{
}
public abstract class FileSystemTreeNode : TreeNode
{
protected IIconManager icon_mgr;
abstract public string Path
{
get;
}
abstract public string DisplayName
{
get;
}
abstract public int DisplayIcon
{
get;
}
public bool IsExpandable
{
get
{
return Nodes.Count == 1 && Nodes[0] is DummyNode;
}
set
{
if (value)
{
Nodes.Clear();
Nodes.Add(new DummyNode());
}
}
}
public FileSystemTreeNode(IIconManager icon_mgr, bool expandable)
{
this.icon_mgr = icon_mgr;
if (expandable)
IsExpandable = true;
}
virtual public void DoExpand()
{
if (!Directory.Exists(this.Path))
return;
var info = new DirectoryInfo(this.Path);
FileSystemTreeViewNodeExpandEventArgs e = new FileSystemTreeViewNodeExpandEventArgs();
e.node = this;
e.files = info.GetFileSystemInfos();
(this.TreeView as FileSystemTreeView).OnDoExpand(e);
}
}
public class FileSystemTreeNodeSpecialFolder : FileSystemTreeNode
{
public ExtraSpecialFolder Folder
{
get;
private set;
}
public override string Path
{
get
{
return icon_mgr.GetFolderPath(Folder);
}
}
public override string DisplayName
{
get
{
return icon_mgr.GetDisplayName(Folder);
}
}
public override int DisplayIcon
{
get
{
return icon_mgr.GetIconIndex(Folder, !IsExpandable);
}
}
public FileSystemTreeNodeSpecialFolder(IIconManager icon_mgr, ExtraSpecialFolder folder)
: base(icon_mgr, true)
{
this.Folder = folder;
this.SelectedImageIndex = this.ImageIndex = this.DisplayIcon;
this.Text = this.DisplayName;
}
public override void DoExpand()
{
switch (Folder)
{
case ExtraSpecialFolder.Desktop:
foreach (ExtraSpecialFolder fldr in (this.TreeView as FileSystemTreeView).SpecialFolders)
try { Nodes.Add(new FileSystemTreeNodeSpecialFolder(icon_mgr, fldr)); }
catch { }
break;
case ExtraSpecialFolder.MyComputer:
if (Path == "/")
break;
foreach (DriveInfo di in DriveInfo.GetDrives())
try { Nodes.Add(new FileSystemTreeNodeFileSystemInfo(icon_mgr, new DirectoryInfo(di.Name))); }
catch { }
return;
}
base.DoExpand();
}
}
public class FileSystemTreeNodeFileSystemInfo : FileSystemTreeNode
{
public FileSystemInfo File
{
get;
private set;
}
public override string Path
{
get
{
return File.FullName;
}
}
public override string DisplayName
{
get
{
return icon_mgr.GetDisplayName(File);
}
}
public override int DisplayIcon
{
get
{
return icon_mgr.GetIconIndex(File, !IsExpandable);
}
}
public FileSystemTreeNodeFileSystemInfo(IIconManager icon_mgr, FileSystemInfo file)
: base(icon_mgr, (file.Attributes & FileAttributes.Directory) != 0)
{
this.File = file;
this.SelectedImageIndex = this.ImageIndex = this.DisplayIcon;
this.Text = this.DisplayName;
}
}
public partial class FileSystemTreeView : TreeView
{
private const string DummyNodeText = "DUMMY";
private IIconManager m_icon_mgr;
private ExtraSpecialFolder[] m_extra_folders;
@@ -117,10 +277,8 @@ namespace CUEControls
{
if (!DesignMode && SelectedNode != null)
{
if (SelectedNode.Tag is FileSystemInfo)
return ((FileSystemInfo)SelectedNode.Tag).FullName;
if (SelectedNode.Tag is ExtraSpecialFolder)
return m_icon_mgr.GetFolderPath((ExtraSpecialFolder)SelectedNode.Tag);
if (SelectedNode is FileSystemTreeNode)
return (SelectedNode as FileSystemTreeNode).Path;
if (SelectedNode.Tag is string)
return (string)SelectedNode.Tag;
}
@@ -145,9 +303,8 @@ namespace CUEControls
}
get
{
if (!DesignMode && SelectedNode != null)
if (SelectedNode.Tag is ExtraSpecialFolder)
return (ExtraSpecialFolder)SelectedNode.Tag;
if (!DesignMode && SelectedNode as FileSystemTreeNodeSpecialFolder != null)
return (SelectedNode as FileSystemTreeNodeSpecialFolder).Folder;
return ExtraSpecialFolder.Desktop;
}
}
@@ -170,7 +327,7 @@ namespace CUEControls
private TreeNode LookupNode(TreeNodeCollection nodes, ExtraSpecialFolder tag)
{
foreach (TreeNode node in nodes)
if (node.Tag is ExtraSpecialFolder && (ExtraSpecialFolder)node.Tag == tag)
if (node is FileSystemTreeNodeSpecialFolder && (node as FileSystemTreeNodeSpecialFolder).Folder == tag)
return node;
return null;
}
@@ -196,10 +353,10 @@ namespace CUEControls
}
foreach (TreeNode node in desktop.Nodes)
if (node.Tag is ExtraSpecialFolder)
if (node is FileSystemTreeNodeSpecialFolder)
{
specialPath = m_icon_mgr.GetFolderPath((ExtraSpecialFolder)node.Tag);
if (specialPath != null && path.StartsWith(specialPath.ToUpper()) && (top == null || m_icon_mgr.GetFolderPath((ExtraSpecialFolder)top.Tag).Length < specialPath.Length))
specialPath = (node as FileSystemTreeNodeSpecialFolder).Path;
if (specialPath != null && path.StartsWith(specialPath.ToUpper()) && (top as FileSystemTreeNodeSpecialFolder == null || (top as FileSystemTreeNodeSpecialFolder).Path.Length < specialPath.Length))
{
if (path == specialPath.ToUpper())
return node;
@@ -222,9 +379,9 @@ namespace CUEControls
found = false;
foreach (TreeNode node in top.Nodes)
{
if (node.Tag is FileSystemInfo)
if (node is FileSystemTreeNodeFileSystemInfo)
{
string prefix = ((FileSystemInfo)node.Tag).FullName.ToUpper();
string prefix = (node as FileSystemTreeNodeFileSystemInfo).File.FullName.ToUpper();
if (path == prefix)
return node;
if (path.StartsWith(prefix) && (prefix.EndsWith(PathSeparator) || path.Substring(prefix.Length).StartsWith(PathSeparator)))
@@ -239,31 +396,23 @@ namespace CUEControls
return null;
}
private bool IsDummy(TreeNode n)
{
return n.Nodes.Count == 1 && n.Nodes[0].Tag == null && n.Nodes[0].Text == DummyNodeText;
}
public TreeNode NewNode(ExtraSpecialFolder folder)
{
TreeNode node = new TreeNode();
node.Tag = folder;
node.ImageIndex = m_icon_mgr.GetIconIndex(folder, false);
node.SelectedImageIndex = node.ImageIndex;
node.Text = m_icon_mgr.GetDisplayName(folder);
node.Nodes.Add(DummyNodeText);
return node;
return new FileSystemTreeNodeSpecialFolder(m_icon_mgr, folder);
}
public TreeNode NewNode(FileSystemInfo file, bool expandable)
public TreeNode NewNode(FileSystemInfo file)
{
TreeNode node = new TreeNode();
node.Tag = file;
node.ImageIndex = m_icon_mgr.GetIconIndex(file, false);
node.SelectedImageIndex = node.ImageIndex;
node.Text = m_icon_mgr.GetDisplayName(file);
if (expandable) node.Nodes.Add(DummyNodeText);
return node;
return new FileSystemTreeNodeFileSystemInfo(m_icon_mgr, file);
}
public TreeNode NewNode(string file)
{
if (File.Exists(file))
return new FileSystemTreeNodeFileSystemInfo(m_icon_mgr, new FileInfo(file));
var icon = m_icon_mgr.GetIconIndex(file);
var res = new TreeNode(Path.GetFileNameWithoutExtension(file), icon, icon);
return res;
}
/// <summary>
@@ -272,24 +421,28 @@ namespace CUEControls
/// <param name="e">the arguments giving the node to be expanded</param>
protected override void OnBeforeExpand(TreeViewCancelEventArgs e)
{
if (!IsDummy(e.Node))
return;
e.Node.Nodes.Clear();
try
FileSystemTreeNode node = e.Node as FileSystemTreeNode;
if (node != null && node.IsExpandable)
{
ExpandDirInNode(e.Node);
base.OnBeforeExpand(e);
}
catch (Exception ex)
{
e.Node.Text = (e.Node.Tag is FileSystemInfo ? m_icon_mgr.GetDisplayName((FileSystemInfo)e.Node.Tag) :
e.Node.Tag is ExtraSpecialFolder ? m_icon_mgr.GetDisplayName((ExtraSpecialFolder)e.Node.Tag) : ""
) + " : " + ex.Message;
e.Node.Nodes.Clear();
e.Node.Nodes.Add(DummyNodeText);
e.Cancel = true;
BeginUpdate();
node.Nodes.Clear();
try
{
node.DoExpand();
node.SelectedImageIndex = node.ImageIndex = node.DisplayIcon;
}
catch (Exception ex)
{
node.Text = node.DisplayName + " : " + ex.Message;
node.IsExpandable = true;
e.Cancel = true;
}
finally
{
EndUpdate();
}
}
base.OnBeforeExpand(e);
}
/// <summary>
@@ -299,75 +452,23 @@ namespace CUEControls
/// <param name="e"></param>
protected override void OnAfterCollapse(TreeViewEventArgs e)
{
e.Node.Nodes.Clear();
// Add the dummy node
e.Node.Nodes.Add(DummyNodeText);
if (e.Node.Tag is ExtraSpecialFolder)
e.Node.ImageIndex = m_icon_mgr.GetIconIndex((ExtraSpecialFolder)e.Node.Tag, false);
else if (e.Node.Tag is DirectoryInfo)
e.Node.ImageIndex = m_icon_mgr.GetIconIndex((DirectoryInfo)e.Node.Tag, false);
FileSystemTreeNode node = e.Node as FileSystemTreeNode;
if (node != null)
{
node.IsExpandable = true;
node.SelectedImageIndex = node.ImageIndex = node.DisplayIcon;
}
}
private void ExpandDirInNode(TreeNode node, DirectoryInfo info)
internal void OnDoExpand(FileSystemTreeViewNodeExpandEventArgs e)
{
FileSystemTreeViewNodeExpandEventArgs e = new FileSystemTreeViewNodeExpandEventArgs();
e.node = node;
e.files = info.GetFileSystemInfos();
if (NodeExpand != null)
NodeExpand(this, e);
else
{
foreach (FileSystemInfo file in e.files)
{
bool isExpandable = (file.Attributes & FileAttributes.Directory) != 0;
if ((file.Attributes & FileAttributes.Hidden) == 0 && (file.Attributes & FileAttributes.Directory) != 0)
node.Nodes.Add(NewNode(file, isExpandable));
}
}
}
private void ExpandDirInNode(TreeNode node, ExtraSpecialFolder path)
{
switch (path)
{
case ExtraSpecialFolder.Desktop:
foreach (ExtraSpecialFolder fldr in m_extra_folders)
try { node.Nodes.Add(NewNode(fldr)); }
catch { }
break;
case ExtraSpecialFolder.MyComputer:
if (m_icon_mgr.GetFolderPath(path) == "/")
break;
foreach (DriveInfo di in DriveInfo.GetDrives())
try { node.Nodes.Add(NewNode(new DirectoryInfo(di.Name), true)); }
catch { }
return;
}
string dir = m_icon_mgr.GetFolderPath(path);
if (dir != null && dir != "" && Directory.Exists(dir))
ExpandDirInNode(node, new DirectoryInfo(dir));
}
private void ExpandDirInNode(TreeNode node)
{
try
{
BeginUpdate();
if (node.Tag is ExtraSpecialFolder)
{
ExpandDirInNode(node, (ExtraSpecialFolder)node.Tag);
node.ImageIndex = m_icon_mgr.GetIconIndex((ExtraSpecialFolder)node.Tag, true);
}
if (node.Tag is DirectoryInfo)
{
ExpandDirInNode(node, (DirectoryInfo)node.Tag);
node.ImageIndex = m_icon_mgr.GetIconIndex((DirectoryInfo)node.Tag, true);
}
}
finally
{
EndUpdate();
e.node.Nodes.Add(NewNode(file));
}
}
@@ -385,10 +486,10 @@ namespace CUEControls
/// <param name="e">the location of the event</param>
protected override void OnItemDrag(ItemDragEventArgs e)
{
if (e.Item != null && e.Item is TreeNode && (e.Item as TreeNode).Tag is FileSystemInfo)
if (e.Item != null && e.Item is FileSystemTreeNodeFileSystemInfo)
{
string[] arr = new string[1];
arr[0] = ((FileSystemInfo)((e.Item as TreeNode).Tag)).FullName;
arr[0] = (e.Item as FileSystemTreeNodeFileSystemInfo).File.FullName;
DataObject dobj = new DataObject(DataFormats.FileDrop, arr);
DragDropEffects effects = DoDragDrop(dobj, DragDropEffects.All);
return;

View File

@@ -26,6 +26,7 @@ namespace CUEControls
/// <param name="open">if true, the file is "open", most useful for folders</param>
/// <returns>the index into the image list for the icon associated with this file</returns>
int GetIconIndex(ExtraSpecialFolder folder, bool open);
int GetIconIndex(string filename);
void SetExtensionIcon(string extension, Image icon);
void SetExtensionIcon(string extension, Icon icon);
string GetFolderPath(ExtraSpecialFolder folder);
@@ -280,6 +281,16 @@ namespace CUEControls
{
return 0;
}
public int GetIconIndex(string filename)
{
int iIcon;
if (m_extension_map.TryGetValue(Path.GetExtension(filename).ToLower(), out iIcon))
return iIcon;
if (m_extension_map.TryGetValue(".wav", out iIcon))
return iIcon;
return 0;
}
#endregion
#region private methods

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -183,6 +183,16 @@ namespace CUEControls
DestroyIcon(info.hIcon);
return iIcon;
}
public int GetIconIndex(string filename)
{
int iIcon;
if (m_extension_map.TryGetValue(Path.GetExtension(filename).ToLower(), out iIcon))
return iIcon;
if (m_extension_map.TryGetValue(".wav", out iIcon))
return iIcon;
return 0;
}
#endregion
#region private methods

View File

@@ -42,7 +42,7 @@ namespace CUEPlayer
List<FileGroupInfo> fileGroups = CUESheet.ScanFolder(_config, e.files);
foreach (FileGroupInfo fileGroup in fileGroups)
{
TreeNode node = fileSystemTreeView1.NewNode(fileGroup.main, fileGroup.type == FileGroupInfoType.Folder);
TreeNode node = fileSystemTreeView1.NewNode(fileGroup.main);
if (fileGroup.type == FileGroupInfoType.TrackFiles)
node.Text = node.Text + ": " + fileGroup.files.Count.ToString() + " files";
e.node.Nodes.Add(node);

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -68,7 +68,7 @@
this.IsMdiContainer = true;
this.MainMenuStrip = this.menuStrip1;
this.Name = "frmCUEPlayer";
this.Text = "CUEPlayer 2.0.9";
this.Text = "CUEPlayer 2.1.1";
this.Load += new System.EventHandler(this.frmCUEPlayer_Load);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmCUEPlayer_FormClosing);
this.menuStrip1.ResumeLayout(false);

View File

@@ -40,7 +40,7 @@
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>index.html</WebPage>
<ApplicationRevision>2</ApplicationRevision>
<ApplicationVersion>2.0.9.0</ApplicationVersion>
<ApplicationVersion>2.1.1.0</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>

View File

@@ -208,6 +208,6 @@
<value>Senden</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>CUERipper 2.0.9</value>
<value>CUERipper 2.1.1</value>
</data>
</root>

View File

@@ -468,7 +468,7 @@
<value>bnComboBoxLosslessOrNot</value>
</data>
<data name="&gt;&gt;bnComboBoxLosslessOrNot.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bnComboBoxLosslessOrNot.Parent" xml:space="preserve">
<value>groupBoxSettings</value>
@@ -495,7 +495,7 @@
<value>bnComboBoxEncoder</value>
</data>
<data name="&gt;&gt;bnComboBoxEncoder.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bnComboBoxEncoder.Parent" xml:space="preserve">
<value>groupBoxSettings</value>
@@ -549,7 +549,7 @@
<value>bnComboBoxFormat</value>
</data>
<data name="&gt;&gt;bnComboBoxFormat.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bnComboBoxFormat.Parent" xml:space="preserve">
<value>groupBoxSettings</value>
@@ -615,7 +615,7 @@
<value>bnComboBoxImage</value>
</data>
<data name="&gt;&gt;bnComboBoxImage.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bnComboBoxImage.Parent" xml:space="preserve">
<value>groupBoxSettings</value>
@@ -1005,7 +1005,7 @@
<value>bnComboBoxRelease</value>
</data>
<data name="&gt;&gt;bnComboBoxRelease.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bnComboBoxRelease.Parent" xml:space="preserve">
<value>$this</value>
@@ -1029,7 +1029,7 @@
<value>bnComboBoxDrives</value>
</data>
<data name="&gt;&gt;bnComboBoxDrives.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bnComboBoxDrives.Parent" xml:space="preserve">
<value>$this</value>
@@ -1053,7 +1053,7 @@
<value>bnComboBoxOutputFormat</value>
</data>
<data name="&gt;&gt;bnComboBoxOutputFormat.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bnComboBoxOutputFormat.Parent" xml:space="preserve">
<value>$this</value>
@@ -1729,7 +1729,7 @@
<value>CenterScreen</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>CUERipper 2.0.9</value>
<value>CUERipper 2.1.1</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel1.Name" xml:space="preserve">
<value>toolStripStatusLabel1</value>

View File

@@ -138,7 +138,7 @@
<value>imgComboBoxCategory</value>
</data>
<data name="&gt;&gt;imgComboBoxCategory.Type" xml:space="preserve">
<value>CUEControls.ImgComboBox, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.ImgComboBox, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;imgComboBoxCategory.Parent" xml:space="preserve">
<value>groupBox1</value>

View File

@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -4,12 +4,152 @@ using System.Globalization;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using System.Xml.Serialization;
using CUETools.Parity;
using CUETools.CDImage;
using CUETools.Codecs;
namespace CUETools.AccurateRip
{
[Serializable]
public class OffsetSafeCRCRecord
{
private uint[] val;
public OffsetSafeCRCRecord()
{
this.val = new uint[1];
}
public OffsetSafeCRCRecord(AccurateRipVerify ar)
: this(new uint[64 + 64])
{
int offset = 64 * 64;
for (int i = 0; i < 64; i++)
this.val[i] = ar.GetMiddleCRC32(offset + i * 64 + 64, 2 * offset - 64 - i * 64);
for (int i = 0; i < 64; i++)
this.val[i + 64] = ar.GetMiddleCRC32(offset + 64 - 1 - i, 2 * offset - 64 + 1 + i);
}
public OffsetSafeCRCRecord(uint[] val)
{
this.val = val;
}
[XmlIgnore]
public uint[] Value
{
get
{
return val;
}
}
public unsafe string Base64
{
get
{
byte[] res = new byte[val.Length * 4];
fixed (byte* pres = &res[0])
fixed (uint* psrc = &val[0])
AudioSamples.MemCpy(pres, (byte*)psrc, res.Length);
var b64 = new char[res.Length * 2 + 4];
int b64len = Convert.ToBase64CharArray(res, 0, res.Length, b64, 0);
StringBuilder sb = new StringBuilder(b64len + b64len / 4 + 1);
for (int i = 0; i < b64len; i += 64)
{
sb.Append(b64, i, Math.Min(64, b64len - i));
sb.AppendLine();
}
return sb.ToString();
}
set
{
if (value == null)
throw new ArgumentNullException();
byte[] bytes = Convert.FromBase64String(value);
if (bytes.Length % 4 != 0)
throw new InvalidDataException();
val = new uint[bytes.Length / 4];
fixed (byte* pb = &bytes[0])
fixed (uint* pv = &val[0])
AudioSamples.MemCpy((byte*)pv, pb, bytes.Length);
}
}
public override bool Equals(object obj)
{
return obj is OffsetSafeCRCRecord && this == (OffsetSafeCRCRecord)obj;
}
public override int GetHashCode()
{
return (int)val[0];
}
public static bool operator == (OffsetSafeCRCRecord x, OffsetSafeCRCRecord y)
{
if (x as object == null || y as object == null) return x as object == null && y as object == null;
if (x.Value.Length != y.Value.Length) return false;
for (int i = 0; i < x.Value.Length; i++)
if (x.Value[i] != y.Value[i])
return false;
return true;
}
public static bool operator !=(OffsetSafeCRCRecord x, OffsetSafeCRCRecord y)
{
return !(x == y);
}
public bool DifferByOffset(OffsetSafeCRCRecord rec)
{
int offset;
return FindOffset(rec, out offset);
}
public bool FindOffset (OffsetSafeCRCRecord rec, out int offset)
{
if (this.Value.Length != 128 || rec.Value.Length != 128)
{
offset = 0;
return false;
//throw new InvalidDataException("Unsupported OffsetSafeCRCRecord");
}
for (int i = 0; i < 64; i++)
{
if (rec.Value[0] == Value[i])
{
offset = i * 64;
return true;
}
if (Value[0] == rec.Value[i])
{
offset = -i * 64;
return true;
}
for (int j = 0; j < 64; j++)
{
if (rec.Value[i] == Value[64 + j])
{
offset = i * 64 + j + 1;
return true;
}
if (Value[i] == rec.Value[64 + j])
{
offset = -i * 64 - j - 1;
return true;
}
}
}
offset = 0;
return false;
}
}
public class AccurateRipVerify : IAudioDest
{
public AccurateRipVerify(CDImageLayout toc, IWebProxy proxy)
@@ -153,6 +293,19 @@ namespace CUETools.AccurateRip
return _Peak[iTrack];
}
internal uint GetMiddleCRC32(int prefixLen, int suffixLen)
{
return CTDBCRC(prefixLen * 2, suffixLen * 2);
}
public OffsetSafeCRCRecord OffsetSafeCRC
{
get
{
return new OffsetSafeCRCRecord(this);
}
}
public uint CRC32(int iTrack)
{
return CRC32(iTrack, 0);
@@ -333,13 +486,17 @@ namespace CUETools.AccurateRip
Init(_toc);
}
internal unsafe uint CTDBCRC(int actualOffset)
public unsafe uint CTDBCRC(int prefixLen, int suffixLen)
{
if (prefixLen > leadin.Length || suffixLen > leadout.Length)
throw new ArgumentOutOfRangeException();
// stride - 2 * actualOffset
// laststride + 2 * actualOffset
fixed (uint* crct = Crc32.table)
{
// calculate leadin CRC
uint crc0 = 0;
for (int off = 0; off < stride - 2 * actualOffset; off++)
for (int off = 0; off < prefixLen; off++)
{
ushort dd = leadin[off];
crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ dd)];
@@ -347,17 +504,22 @@ namespace CUETools.AccurateRip
}
// calculate leadout CRC
uint crc2 = 0;
for (int off = laststride + 2 * actualOffset - 1; off >= 0; off--)
for (int off = suffixLen - 1; off >= 0; off--)
{
ushort dd = leadout[off];
crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ dd)];
crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ (dd >> 8))];
}
return GetCRC32(crc0, (stride - 2 * actualOffset) * 2, crc2, (laststride + 2 * actualOffset) * 2);
return GetCRC32(crc0, prefixLen * 2, crc2, suffixLen * 2);
}
}
public uint CTDBCRC(int actualOffset)
{
return CTDBCRC(stride - 2 * actualOffset, laststride + 2 * actualOffset);
}
private unsafe static void CalcSyn8(ushort* exp, ushort* log, ushort* syn, uint lo, uint n, int npar)
{
syn[0] ^= (ushort)lo;
@@ -438,9 +600,8 @@ namespace CUETools.AccurateRip
/// </summary>
/// <param name="pSampleBuff"></param>
/// <param name="count"></param>
/// <param name="currentOffset"></param>
/// <param name="offs"></param>
public unsafe void CalculateCRCs(uint* t, ushort* exp, ushort* log, ushort* syn, ushort* wr, uint* pSampleBuff, int count, int currentOffset, int offs)
public unsafe void CalculateCRCs(uint* t, ushort* exp, ushort* log, ushort* syn, ushort* wr, uint* pSampleBuff, int count, int offs)
{
int currentStride = ((int)_sampleCount * 2) / stride;
bool doSyn = currentStride >= 1 && currentStride <= stridecount && calcSyn;
@@ -453,7 +614,7 @@ namespace CUETools.AccurateRip
uint crcwn = _CRCWN[_currentTrack, 0];
int crcnl = _CRCNL[_currentTrack, 0];
int peak = _Peak[_currentTrack];
//fixed (ushort* exp = expTbl, log = logTbl, synptr = syndrome)
for (int i = 0; i < count; i++)
{
if (offs >= 0)
@@ -467,7 +628,7 @@ namespace CUETools.AccurateRip
uint sample = *(pSampleBuff++);
crcsm += sample;
crcar += sample * (uint)(currentOffset + i + 1);
crcar += sample * (uint)(_samplesDoneTrack + i + 1);
uint lo = sample & 0xffff;
crc32 = (crc32 >> 8) ^ t[(byte)(crc32 ^ lo)];
@@ -510,7 +671,8 @@ namespace CUETools.AccurateRip
_Peak[_currentTrack] = peak;
}
private long _samplesRemTrack = 0;
private int _samplesRemTrack = 0;
private int _samplesDoneTrack = 0;
public long Position
{
@@ -521,14 +683,15 @@ namespace CUETools.AccurateRip
set
{
_sampleCount = value;
int tempLocation = (int)_toc[_toc.FirstAudio][0].Start * 588;
int tempLocation = 0; // NOT (int)_toc[_toc.FirstAudio][0].Start * 588;
for (int iTrack = 0; iTrack <= _toc.AudioTracks; iTrack++)
{
int tempLen = (int)(iTrack == 0 ? _toc[_toc.FirstAudio].Pregap : _toc[_toc.FirstAudio + iTrack - 1].Length) * 588;
if (tempLocation + tempLen > _sampleCount)
{
_currentTrack = iTrack;
_samplesRemTrack = tempLocation + tempLen - _sampleCount;
_samplesRemTrack = tempLocation + tempLen - (int)_sampleCount;
_samplesDoneTrack = (int)_sampleCount - tempLocation;
return;
}
tempLocation += tempLen;
@@ -549,55 +712,67 @@ namespace CUETools.AccurateRip
{
// Process no more than there is in the buffer, no more than there is in this track, and no more than up to a sector boundary.
int copyCount = Math.Min(Math.Min(sampleBuffer.Length - pos, (int)_samplesRemTrack), 588 - (int)_sampleCount % 588);
// Calculate offset within a track
int currentOffset = (int)_sampleCount - (int)(_currentTrack > 0 ? _toc[_currentTrack + _toc.FirstAudio - 1].Start * 588 : 0);
int currentSector = currentOffset / 588;
int remaingSectors = (int)(_samplesRemTrack - 1) / 588;
int currentSector = _samplesDoneTrack / 588;
int remaingSectors = (_samplesRemTrack - 1) / 588;
uint* samples = ((uint*)pSampleBuff) + pos;
int currentPart = ((int)_sampleCount * 2) % stride;
ushort* synptr = synptr1 + npar * currentPart;
ushort* wr = ((ushort*)bpar) + npar * currentPart;
int currentStride = ((int)_sampleCount * 2) / stride;
if (currentStride < 2 && leadin != null)
for (int i = 0; i < copyCount * 2; i++)
leadin[_sampleCount * 2 + i] = ((ushort*)samples)[i];
if (currentStride >= stridecount && leadout != null)
for (int i = 0; i < copyCount * 2; i++)
{
int remaining = (int)(_finalSampleCount - _sampleCount) * 2 - i - 1;
if (remaining < stride + laststride)
leadout[remaining] = ((ushort*)samples)[i];
}
for (int i = 0; i < Math.Min(leadin.Length - (int)_sampleCount * 2, copyCount * 2); i++)
leadin[_sampleCount * 2 + i] = ((ushort*)samples)[i];
for (int i = Math.Max(0, (int)(_finalSampleCount - _sampleCount) * 2 - leadout.Length); i < copyCount * 2; i++)
//if (currentStride >= stridecount && leadout != null)
//for (int i = 0; i < copyCount * 2; i++)
{
int remaining = (int)(_finalSampleCount - _sampleCount) * 2 - i - 1;
leadout[remaining] = ((ushort*)samples)[i];
}
if (currentSector < 10)
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, currentOffset, currentOffset);
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, _samplesDoneTrack);
else if (remaingSectors < 10)
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, currentOffset, 20 * 588 - (int)_samplesRemTrack);
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, 20 * 588 - _samplesRemTrack);
else if (currentSector >= 445 && currentSector <= 455)
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, currentOffset, 20 * 588 + currentOffset - 445 * 588);
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, 20 * 588 + _samplesDoneTrack - 445 * 588);
else
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, currentOffset, -1);
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, -1);
pos += copyCount;
_samplesRemTrack -= copyCount;
_samplesDoneTrack += copyCount;
_sampleCount += copyCount;
while (_samplesRemTrack <= 0)
{
if (++_currentTrack > _toc.AudioTracks)
return;
_samplesRemTrack = _toc[_currentTrack + _toc.FirstAudio - 1].Length * 588;
_samplesRemTrack = (int)_toc[_currentTrack + _toc.FirstAudio - 1].Length * 588;
_samplesDoneTrack = 0;
}
}
}
public void Combine(AccurateRipVerify part, int start, int end)
{
for (int i = 0; i < leadin.Length; i++)
{
int currentOffset = i / 2;
if (currentOffset >= start && currentOffset < end)
this.leadin[i] = part.leadin[i];
}
for (int i = 0; i < leadout.Length; i++)
{
int currentOffset = (int)_finalSampleCount - i / 2 - 1;
if (currentOffset >= start && currentOffset < end)
this.leadout[i] = part.leadout[i];
}
for (int iTrack = 0; iTrack <= _toc.AudioTracks; iTrack++)
{
int tempLocation = (int) (iTrack == 0 ? _toc[_toc.FirstAudio][0].Start : _toc[_toc.FirstAudio + iTrack - 1].Start) * 588;
// ??? int tempLocation = (int) (iTrack == 0 ? _toc[_toc.FirstAudio][0].Start : _toc[_toc.FirstAudio + iTrack - 1].Start) * 588;
int tempLocation = (int) (iTrack == 0 ? 0 : _toc[_toc.FirstAudio + iTrack - 1].Start - _toc[_toc.FirstAudio][0].Start) * 588;
int tempLen = (int) (iTrack == 0 ? _toc[_toc.FirstAudio].Pregap : _toc[_toc.FirstAudio + iTrack - 1].Length) * 588;
int trStart = Math.Max(tempLocation, start);
int trEnd = Math.Min(tempLocation + tempLen, end);
@@ -660,18 +835,12 @@ namespace CUETools.AccurateRip
_Peak = new int[_toc.AudioTracks + 1];
syndrome = new ushort[calcSyn ? stride : 1, npar];
parity = new byte[stride * npar * 2];
if (calcSyn || calcParity)
{
leadin = new ushort[stride * 2];
leadout = new ushort[stride + laststride];
}
else
{
leadin = null;
leadout = null;
}
int leadin_len = Math.Max(4096 * 4, (calcSyn || calcParity) ? stride * 2 : 0);
int leadout_len = Math.Max(4096 * 4, (calcSyn || calcParity) ? stride + laststride : 0);
leadin = new ushort[leadin_len];
leadout = new ushort[leadout_len];
_currentTrack = 0;
Position = _toc[_toc.FirstAudio][0].Start * 588;
Position = 0; // NOT _toc[_toc.FirstAudio][0].Start * 588;
}
private uint readIntLE(byte[] data, int pos)
@@ -679,6 +848,10 @@ namespace CUETools.AccurateRip
return (uint)(data[pos] + (data[pos + 1] << 8) + (data[pos + 2] << 16) + (data[pos + 3] << 24));
}
static DateTime last_accessed;
static readonly TimeSpan min_interval = new TimeSpan (5000000); // 0.5 second
static readonly object server_mutex = new object ();
public void ContactAccurateRip(string accurateRipId)
{
// Calculate the three disc ids used by AR
@@ -703,72 +876,89 @@ namespace CUETools.AccurateRip
req.Method = "GET";
req.Proxy = proxy;
try
lock (server_mutex)
{
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
ExceptionStatus = WebExceptionStatus.ProtocolError;
ResponseStatus = response.StatusCode;
if (ResponseStatus == HttpStatusCode.OK)
// Don't access the AR server twice within min_interval
if (last_accessed != null)
{
ExceptionStatus = WebExceptionStatus.Success;
TimeSpan time = DateTime.Now - last_accessed;
if (min_interval > time)
Thread.Sleep((min_interval - time).Milliseconds);
}
// Retrieve response stream and wrap in StreamReader
Stream respStream = response.GetResponseStream();
// Allocate byte buffer to hold stream contents
byte[] urlData = new byte[13];
int urlDataLen, bytesRead;
_accDisks.Clear();
while (true)
try
{
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
for (urlDataLen = 0; urlDataLen < 13; urlDataLen += bytesRead)
ExceptionStatus = WebExceptionStatus.ProtocolError;
ResponseStatus = response.StatusCode;
if (ResponseStatus == HttpStatusCode.OK)
{
bytesRead = respStream.Read(urlData, urlDataLen, 13 - urlDataLen);
if (0 == bytesRead)
break;
}
if (urlDataLen == 0)
break;
if (urlDataLen < 13)
{
ExceptionStatus = WebExceptionStatus.ReceiveFailure;
return;
}
AccDisk dsk = new AccDisk();
dsk.count = urlData[0];
dsk.discId1 = readIntLE(urlData, 1);
dsk.discId2 = readIntLE(urlData, 5);
dsk.cddbDiscId = readIntLE(urlData, 9);
ExceptionStatus = WebExceptionStatus.Success;
for (int i = 0; i < dsk.count; i++)
{
for (urlDataLen = 0; urlDataLen < 9; urlDataLen += bytesRead)
// Retrieve response stream and wrap in StreamReader
Stream respStream = response.GetResponseStream();
// Allocate byte buffer to hold stream contents
byte[] urlData = new byte[13];
int urlDataLen, bytesRead;
_accDisks.Clear();
while (true)
{
bytesRead = respStream.Read(urlData, urlDataLen, 9 - urlDataLen);
if (0 == bytesRead)
for (urlDataLen = 0; urlDataLen < 13; urlDataLen += bytesRead)
{
bytesRead = respStream.Read(urlData, urlDataLen, 13 - urlDataLen);
if (0 == bytesRead)
break;
}
if (urlDataLen == 0)
break;
if (urlDataLen < 13)
{
ExceptionStatus = WebExceptionStatus.ReceiveFailure;
return;
}
AccDisk dsk = new AccDisk();
dsk.count = urlData[0];
dsk.discId1 = readIntLE(urlData, 1);
dsk.discId2 = readIntLE(urlData, 5);
dsk.cddbDiscId = readIntLE(urlData, 9);
for (int i = 0; i < dsk.count; i++)
{
for (urlDataLen = 0; urlDataLen < 9; urlDataLen += bytesRead)
{
bytesRead = respStream.Read(urlData, urlDataLen, 9 - urlDataLen);
if (0 == bytesRead)
{
ExceptionStatus = WebExceptionStatus.ReceiveFailure;
return;
}
}
AccTrack trk = new AccTrack();
trk.count = urlData[0];
trk.CRC = readIntLE(urlData, 1);
trk.Frame450CRC = readIntLE(urlData, 5);
dsk.tracks.Add(trk);
}
_accDisks.Add(dsk);
}
AccTrack trk = new AccTrack();
trk.count = urlData[0];
trk.CRC = readIntLE(urlData, 1);
trk.Frame450CRC = readIntLE(urlData, 5);
dsk.tracks.Add(trk);
respStream.Close();
}
_accDisks.Add(dsk);
}
respStream.Close();
}
}
catch (WebException ex)
{
ExceptionStatus = ex.Status;
ExceptionMessage = ex.Message;
if (ExceptionStatus == WebExceptionStatus.ProtocolError)
ResponseStatus = (ex.Response as HttpWebResponse).StatusCode;
catch (WebException ex)
{
ExceptionStatus = ex.Status;
ExceptionMessage = ex.Message;
if (ExceptionStatus == WebExceptionStatus.ProtocolError)
ResponseStatus = (ex.Response as HttpWebResponse).StatusCode;
}
finally
{
last_accessed = DateTime.Now;
}
}
}

View File

@@ -430,6 +430,14 @@ namespace CUETools.AccurateRip
return fix;
}
public string OffsetSafeCRC
{
get
{
return ar.OffsetSafeCRC.Base64;
}
}
public byte[] Parity
{
get

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -188,7 +188,11 @@ namespace CUETools.CTDB
public string Confirm(DBEntry entry)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlbase + "/confirm.php?tocid=" + toc.TOCID + "&id=" + entry.id + "&userid=" + GetUUID());
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlbase +
"/confirm.php?tocid=" + toc.TOCID +
"&id=" + entry.id +
"&userid=" + GetUUID() +
"&offscrc=" + verify.OffsetSafeCRC.Replace('+', '.').Replace('/', '_').Replace('=', '-').Replace("\r", "").Replace("\n", ""));
req.Method = "GET";
req.Proxy = proxy;
req.UserAgent = userAgent;
@@ -253,6 +257,7 @@ namespace CUETools.CTDB
using (DBHDR CONF = DISC.HDR("CONF")) CONF.Write(confidence);
using (DBHDR NPAR = DISC.HDR("NPAR")) NPAR.Write(verify.NPAR);
using (DBHDR CRC_ = DISC.HDR("CRC ")) CRC_.Write(verify.CRC);
using (var OFFS = DISC.HDR("OFFS")) OFFS.Write(verify.OffsetSafeCRC);
using (DBHDR PAR_ = DISC.HDR("PAR ")) PAR_.Write(verify.Parity);
}
}

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}</ProjectGuid>
<OutputType>Exe</OutputType>
@@ -19,10 +19,11 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\bin\x64\Debug\</OutputPath>
<OutputPath>..\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>

View File

@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -43,7 +43,7 @@ namespace CUETools.Processor
{
get
{
string cache = System.IO.Path.Combine(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "CUE Tools"), "MetadataCache");
string cache = Path.Combine(SettingsShared.GetProfileDir("CUE Tools", System.Windows.Forms.Application.ExecutablePath), "MetadataCache");
if (!Directory.Exists(cache))
Directory.CreateDirectory(cache);
return cache;
@@ -67,6 +67,27 @@ namespace CUETools.Processor
public string Catalog { get; set; }
public List<CUETrackMetadata> Tracks { get; set; }
[XmlIgnore]
public string DiscNumber01
{
get
{
uint td = 0, dn = 0;
if (uint.TryParse(TotalDiscs, out td) && uint.TryParse(DiscNumber, out dn) && td > 9 && dn > 0)
return string.Format("{0:00}", dn);
return DiscNumber;
}
}
[XmlIgnore]
public string DiscNumberAndTotal
{
get
{
return (TotalDiscs != "" && TotalDiscs != "1" ? DiscNumber01 + "/" + TotalDiscs : (DiscNumber != "" && DiscNumber != "1" ? DiscNumber01 : ""));
}
}
public void Save()
{
TextWriter writer = new StreamWriter(Path.Combine(MetadataPath, Id + ".xml"));
@@ -272,7 +293,7 @@ namespace CUETools.Processor
public CUEMetadataEntry(CUEMetadata metadata, CDImageLayout TOC, string key)
{
this.metadata = metadata;
this.metadata = new CUEMetadata(metadata);
this.TOC = TOC;
this.ImageKey = key;
}

View File

@@ -28,6 +28,7 @@ using System.Collections.Specialized;
using System.Text;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Security.Policy;
using System.Security.Cryptography;
@@ -96,6 +97,183 @@ namespace CUETools.Processor
GapsLeftOut
}
[Serializable]
public class CUEToolsLocalDBEntry
{
public CUEToolsLocalDBEntry()
{
}
public string DiscID { get; set; }
public OffsetSafeCRCRecord OffsetSafeCRC { get; set; }
public CUEMetadata Metadata { get; set; }
public List<string> InputPaths { get; set; }
public List<string> AudioPaths { get; set; }
public int TrackCount { get; set; }
public int AudioTracks { get; set; }
public int FirstAudio { get; set; }
public string TrackOffsets { get; set; }
public uint ARConfidence { get; set; }
public string Status { get; set; }
public string Log { get; set; }
public DateTime VerificationDate { get; set; }
[XmlIgnore]
public string Path
{
get
{
return InputPaths == null || InputPaths.Count < 1 ? null : InputPaths[0];
}
}
static public string NormalizePath(string path)
{
if (System.Environment.OSVersion.Platform != System.PlatformID.Unix)
return System.IO.Path.GetFullPath(path).ToLower();
else
return System.IO.Path.GetFullPath(path);
}
public bool HasPath(string inputPath)
{
string norm = CUEToolsLocalDBEntry.NormalizePath(inputPath);
return this.InputPaths != null && this.InputPaths.Find(i => i == norm) != null;
}
public bool EqualAudioPaths(List<string> fullAudioPaths)
{
int count1 = this.AudioPaths == null ? 0 : this.AudioPaths.Count;
int count2 = fullAudioPaths == null ? 0 : fullAudioPaths.Count;
if (count1 == count2)
{
bool equals = true;
for (int i = 0; i < count1; i++)
equals &= this.AudioPaths[i] == fullAudioPaths[i];
return equals;
}
return false;
}
public bool EqualLayouts(CDImageLayout layout)
{
return this.TrackCount == layout.TrackCount
&& this.AudioTracks == layout.AudioTracks
&& this.FirstAudio == layout.FirstAudio
&& this.TrackOffsets == layout.TrackOffsets;
}
public bool Equals(CDImageLayout layout, List<string> fullAudioPaths)
{
return EqualLayouts(layout) && EqualAudioPaths(fullAudioPaths);
}
}
[Serializable]
public class CUEToolsLocalDB : List<CUEToolsLocalDBEntry>
{
private static XmlSerializer serializer = new XmlSerializer(typeof(CUEToolsLocalDB));
public bool Dirty
{
get;
set;
}
public static List<CUEToolsLocalDBEntry>[] Group(List<CUEToolsLocalDBEntry> items, Converter<CUEToolsLocalDBEntry, string> convert, Comparison<List<CUEToolsLocalDBEntry>> compare)
{
var results = new Dictionary<string, List<CUEToolsLocalDBEntry>>(items.Count);
foreach (var item in items)
{
var key = convert(item);
if (key != null)
{
if (!results.ContainsKey(key))
results[key] = new List<CUEToolsLocalDBEntry>();
results[key].Add(item);
}
}
var groups = new List<CUEToolsLocalDBEntry>[results.Count];
results.Values.CopyTo(groups, 0);
if (compare != null)
Array.Sort(groups, (a, b) => compare(a, b));
else
{
var keys = new string[results.Count];
results.Keys.CopyTo(keys, 0);
Array.Sort(keys, groups);
}
return groups;
}
public CUEToolsLocalDBEntry Lookup(string inputPath)
{
return this.Find(e => e.HasPath(inputPath));
}
public CUEToolsLocalDBEntry Lookup(CDImageLayout layout, List<string> audioPaths)
{
List<string> fullAudioPaths = audioPaths == null ? null : audioPaths.ConvertAll(p => CUEToolsLocalDBEntry.NormalizePath(p));
var entry = this.Find(e => e.Equals(layout, fullAudioPaths));
if (entry == null)
{
entry = new CUEToolsLocalDBEntry();
entry.TrackCount = layout.TrackCount;
entry.AudioTracks = (int)layout.AudioTracks;
entry.FirstAudio = layout.FirstAudio;
entry.TrackOffsets = layout.TrackOffsets;
entry.DiscID = layout.TOCID;
entry.AudioPaths = fullAudioPaths;
this.Add(entry);
this.Dirty = true;
}
return entry;
}
public static string LocalDBPath
{
get
{
return Path.Combine(SettingsShared.GetProfileDir("CUE Tools", System.Windows.Forms.Application.ExecutablePath), "LocalDB.xml.z");
}
}
public void Save()
{
if (!this.Dirty) return;
string tempPath = LocalDBPath + "." + DateTime.Now.Ticks.ToString() + ".tmp";
using (var fileStream = new FileStream(tempPath, FileMode.CreateNew))
using (var deflateStream = new DeflateStream(fileStream, CompressionMode.Compress))
using (TextWriter writer = new StreamWriter(deflateStream))
serializer.Serialize(writer, this);
File.Delete(LocalDBPath);
File.Move(tempPath, LocalDBPath);
this.Dirty = false;
}
public static CUEToolsLocalDB Load()
{
if (!File.Exists(LocalDBPath))
return new CUEToolsLocalDB();
using (var fileStream = new FileStream(LocalDBPath, FileMode.Open))
using (var deflateStream = new DeflateStream(fileStream, CompressionMode.Decompress))
return serializer.Deserialize(deflateStream) as CUEToolsLocalDB;
}
}
public static class General {
public static CUELine FindCUELine(List<CUELine> list, string command) {
command = command.ToUpper();
@@ -933,7 +1111,7 @@ namespace CUETools.Processor
public string ProxyPassword { get; set; }
[DefaultValue(true), Category("Cache"), DisplayName("Cache metadata")]
public bool CacheMetadata { get; set; }
[DefaultValue(new string[]{"folder.jpg", "cover.jpg", "albumart.jpg", "thumbnail.jpg", "albumartlarge.jpg", "front.jpg"})]
[DefaultValue(new string[]{"folder.jpg", "cover.jpg", "albumart.jpg", "thumbnail.jpg", "albumartlarge.jpg", "front.jpg", "%album%.jpg"})]
[Category("Cover Art"), DisplayName("Cover Art Files")]
public string[] CoverArtFiles { get; set; }
[DefaultValue(true)]
@@ -1621,6 +1799,8 @@ string status = processor.Go();
_useMusicBrainz = sr.LoadBoolean("MusicBrainzLookup") ?? _useMusicBrainz;
_useAccurateRip = sr.LoadBoolean("AccurateRipLookup") ?? _useAccurateRip;
_useCUEToolsDB = sr.LoadBoolean("CUEToolsDBLookup") ?? _useCUEToolsDB;
_useLocalDB = sr.LoadBoolean("LocalDBLookup") ?? _useLocalDB;
_skipRecent = sr.LoadBoolean("SkipRecent") ?? _skipRecent;
_outputAudioType = (AudioEncoderType?)sr.LoadInt32("OutputAudioType", null, null) ?? _outputAudioType;
_outputAudioFormat = sr.Load("OutputAudioFmt") ?? _outputAudioFormat;
_action = (CUEAction?)sr.LoadInt32("AccurateRipMode", (int)CUEAction.Encode, (int)CUEAction.CorrectFilenames) ?? _action;
@@ -1637,6 +1817,8 @@ string status = processor.Go();
sw.Save("FreedbLookup", _useFreeDb);
sw.Save("MusicBrainzLookup", _useMusicBrainz);
sw.Save("AccurateRipLookup", _useAccurateRip);
sw.Save("LocalDBLookup", _useLocalDB);
sw.Save("SkipRecent", _skipRecent);
sw.Save("CUEToolsDBLookup", _useCUEToolsDB);
sw.Save("OutputAudioType", (int)_outputAudioType);
sw.Save("OutputAudioFmt", _outputAudioFormat);
@@ -1653,7 +1835,7 @@ string status = processor.Go();
public CUEAction _action = CUEAction.Encode;
public CUEStyle _CUEStyle = CUEStyle.SingleFileWithCUE;
public int _writeOffset = 0;
public bool _useFreeDb = true, _useMusicBrainz = true, _useAccurateRip = true, _useCUEToolsDB = true;
public bool _useFreeDb = true, _useMusicBrainz = true, _useAccurateRip = true, _useCUEToolsDB = true, _useLocalDB = true, _skipRecent = true;
public string _name;
}
@@ -1739,6 +1921,8 @@ string status = processor.Go();
private int _padding = 8192;
private IWebProxy proxy;
private CUEMetadata taglibMetadata;
private bool _useLocalDB;
private CUEToolsLocalDB _localDB;
public event EventHandler<CompressionPasswordRequiredEventArgs> PasswordRequired;
public event EventHandler<CUEToolsProgressEventArgs> CUEToolsProgress;
@@ -1768,6 +1952,7 @@ string status = processor.Go();
_hasEmbeddedCUESheet = false;
_isArchive = false;
_isCD = false;
_useLocalDB = false;
proxy = _config.GetProxy();
}
@@ -1902,31 +2087,193 @@ string status = processor.Go();
}
}
public List<object> LookupAlbumInfo(bool useFreedb, bool useMusicBrainz, bool useCache)
protected void ReportProgress(string status, double percent)
{
ShowProgress(status, percent, null, null);
}
public void ScanLocalDB(string folder)
{
var results = new List<string>();
int n = 2, j = 0;
foreach (var fmt in _config.formats)
if (fmt.Value.allowLossless)
n++;
CheckStop();
ReportProgress("Scanning *.cue", (double)(j++) / n);
results.AddRange(Directory.GetFiles(folder, "*.cue", SearchOption.AllDirectories));
CheckStop();
ReportProgress("Scanning *.m3u", (double)(j++) / n);
results.AddRange(Directory.GetFiles(folder, "*.m3u", SearchOption.AllDirectories));
foreach (var fmt in _config.formats)
if (fmt.Value.allowLossless)
{
CheckStop();
ReportProgress("Scanning *." + fmt.Key, (double)(j++) / n);
results.AddRange(Directory.GetFiles(folder, "*." + fmt.Key, SearchOption.AllDirectories));
}
int i = 0;
foreach (var result in results)
{
CheckStop();
var path = CUEToolsLocalDBEntry.NormalizePath(result);
var pathextension = Path.GetExtension(path).ToLower();
bool skip = false;
if (_localDB.Find(
item => item.HasPath(path) ||
(item.AudioPaths != null &&
item.AudioPaths.Count > 1 &&
item.AudioPaths.Contains(path))
) != null)
skip = true;
if (!skip && pathextension == ".m3u")
{
var contents = new List<string>();
using (StreamReader m3u = new StreamReader(path))
{
do
{
string line = m3u.ReadLine();
if (line == null) break;
if (line == "" || line[0] == '#') continue;
//if (line.IndexOfAny(Path.GetInvalidPathChars()) >= 0)
// continue;
try
{
string extension = Path.GetExtension(line);
CUEToolsFormat fmt1;
if (!extension.StartsWith(".") || !_config.formats.TryGetValue(extension.ToLower().Substring(1), out fmt1) || !fmt1.allowLossless)
{
skip = true;
break;
}
string fullpath = CUEToolsLocalDBEntry.NormalizePath(Path.Combine(Path.GetDirectoryName(path), line));
if (!File.Exists(fullpath))
{
skip = true;
break;
}
contents.Add(fullpath);
}
catch
{
skip = true;
break;
}
} while (!skip);
}
if (!skip && _localDB.Find(item => item.EqualAudioPaths(contents)) != null)
skip = true;
}
if (!skip && pathextension != ".cue" && pathextension != ".m3u")
{
if (_localDB.Find(item =>
item.AudioPaths != null &&
item.AudioPaths.Count == 1 &&
item.AudioPaths[0] == path
) != null)
{
CUEToolsFormat fmt;
if (!pathextension.StartsWith(".") || !_config.formats.TryGetValue(pathextension.Substring(1), out fmt) || !fmt.allowLossless || !fmt.allowEmbed)
skip = true;
else
{
TagLib.File fileInfo;
TagLib.UserDefined.AdditionalFileTypes.Config = _config;
TagLib.File.IFileAbstraction file = (TagLib.File.IFileAbstraction)new TagLib.File.LocalFileAbstraction(path);
fileInfo = TagLib.File.Create(file);
NameValueCollection tags = Tagging.Analyze(fileInfo);
if (tags.Get("CUESHEET") == null)
skip = true;
}
}
}
if (skip)
{
ReportProgress("Skipping " + path, (double)(i++) / results.Count);
}
else
{
ReportProgress("Checking " + path, (double)(i++) / results.Count);
var cueSheet = new CUESheet(_config);
cueSheet.UseLocalDB(_localDB);
//cueSheet.PasswordRequired += new EventHandler<CompressionPasswordRequiredEventArgs>(PasswordRequired);
//cueSheet.CUEToolsProgress += new EventHandler<CUEToolsProgressEventArgs>(SetStatus);
//cueSheet.CUEToolsSelection += new EventHandler<CUEToolsSelectionEventArgs>(MakeSelection);
try
{
cueSheet.Open(path);
cueSheet.OpenLocalDBEntry();
}
catch (Exception)
{
}
cueSheet.Close();
}
}
_localDB.Save();
}
public List<object> LookupAlbumInfo(bool useFreedb, bool useMusicBrainz, bool useCache, bool useCUE)
{
List<object> Releases = new List<object>();
StringCollection DiscIds = new StringCollection();
DiscIds.Add(_toc.MusicBrainzId);
if (useCache)
CUEMetadata dbmeta = null;
if (useCache && _localDB != null)
{
try
List<string> fullAudioPaths = this.SourcePaths.ConvertAll(p => CUEToolsLocalDBEntry.NormalizePath(p));
var myEntry = _localDB.Find(e => e.Equals(this.TOC, fullAudioPaths));
if (myEntry != null)
dbmeta = myEntry.Metadata;
}
if (dbmeta != null)
Releases.Add(new CUEMetadataEntry(dbmeta, TOC, "local"));
//if (useCache)
//{
// try
// {
// CUEMetadata cache = CUEMetadata.Load(TOC.TOCID);
// if (cache != null)
// Releases.Add(new CUEMetadataEntry(cache, TOC, "local"));
// }
// catch (Exception ex)
// {
// System.Diagnostics.Trace.WriteLine(ex.Message);
// }
//}
if (useCUE)
{
CUEMetadata meta = Metadata;
if (dbmeta == null || !dbmeta.Contains(meta))
{
CUEMetadata cache = CUEMetadata.Load(TOC.TOCID);
if (cache != null)
Releases.Add(new CUEMetadataEntry(cache, TOC, "local"));
if (meta.Contains(taglibMetadata) || !taglibMetadata.Contains(meta))
Releases.Add(new CUEMetadataEntry(meta, TOC, "cue"));
}
catch (Exception ex)
if (dbmeta == null || !dbmeta.Contains(taglibMetadata))
{
System.Diagnostics.Trace.WriteLine(ex.Message);
if (!meta.Contains(taglibMetadata))
Releases.Add(new CUEMetadataEntry(new CUEMetadata(taglibMetadata), TOC, "tags"));
}
}
CUEMetadata meta = Metadata;
if (meta.Contains(taglibMetadata) || !taglibMetadata.Contains(meta))
Releases.Add(new CUEMetadataEntry(meta, TOC, "cue"));
if (!meta.Contains(taglibMetadata))
Releases.Add(new CUEMetadataEntry(new CUEMetadata(taglibMetadata), TOC, "tags"));
if (useCache && _localDB != null)
{
foreach (var entry in _localDB)
if (entry.DiscID == TOC.TOCID && entry.Metadata != null && (dbmeta == null || !dbmeta.Contains(entry.Metadata)))
Releases.Add(new CUEMetadataEntry(entry.Metadata, TOC, "local"));
}
if (useFreedb)
{
@@ -2042,6 +2389,7 @@ string status = processor.Go();
//if (cdEntry != null)
// FillFromFreedb(cdEntry);
}
ShowProgress("", 0, null, null);
return Releases;
}
@@ -2379,6 +2727,8 @@ string status = processor.Go();
}
if (!fileIsBinary)
{
if (_sourcePaths.Count != 0 && !seenFirstFileIndex)
throw new Exception("Double FILE in CUE sheet: \"" + line.Params[1] + "\".");
if (!_hasEmbeddedCUESheet)
{
if (_isArchive)
@@ -2427,7 +2777,10 @@ string status = processor.Go();
isAudioTrack = line.Params[2].ToUpper() == "AUDIO";
trackNumber = int.Parse(line.Params[1]);
if (trackNumber != _toc.TrackCount + 1)
throw new Exception("Invalid track number.");
throw new Exception("Invalid track number");
// Disabled this check: fails on Headcandy test image
//if (isAudioTrack && _sourcePaths.Count == 0)
// throw new Exception("No FILE seen before TRACK");
_toc.AddTrack(new CDTrack((uint)trackNumber, 0, 0, isAudioTrack, false));
if (isAudioTrack)
{
@@ -2880,10 +3233,6 @@ string status = processor.Go();
break;
ShowProgress((string)"Contacting AccurateRip database...", (dtl - minDTL) / 75.0, null, null);
CheckStop();
lock (this)
{
Monitor.Wait(this, 500);
}
}
}
else
@@ -3087,12 +3436,15 @@ string status = processor.Go();
for (int iDir = 0; iDir < dirList.Count; iDir++) {
for (int iFile = 0; iFile < fileList.Count; iFile++) {
string path = Path.Combine(dirList[iDir], fileList[iFile]);
if ((contents == null && System.IO.File.Exists(path))
|| (contents != null && contents.Contains(path)))
return path;
path = dirList[iDir] + '/' + fileList[iFile];
if (contents != null && contents.Contains(path))
if (contents == null && System.IO.File.Exists(path))
return path;
if (contents != null)
{
List<string> matching = contents.FindAll(s => s.ToLower().Replace('/', Path.DirectorySeparatorChar) ==
path.ToLower().Replace('/', Path.DirectorySeparatorChar));
if (matching.Count == 1)
return matching[0];
}
}
}
@@ -3322,7 +3674,7 @@ string status = processor.Go();
{
ShowProgress("Analyzing input file...", 0.0, path, null);
if (Path.GetExtension(path) == ".dummy" || Path.GetExtension(path) == ".bin")
if (Path.GetExtension(path).ToLower() == ".dummy" || Path.GetExtension(path).ToLower() == ".bin")
{
fileInfo = null;
}
@@ -3773,7 +4125,7 @@ string status = processor.Go();
}
}
public readonly static string CUEToolsVersion = "2.0.9";
public readonly static string CUEToolsVersion = "2.1.1";
public void GenerateAccurateRipLog(TextWriter sw)
{
@@ -3982,6 +4334,16 @@ string status = processor.Go();
CreateRipperLOG();
if (_action == CUEAction.Verify && _useLocalDB)
{
var entry = OpenLocalDBEntry();
entry.Status = this.GenerateAccurateRipStatus();
entry.ARConfidence = _arVerify.WorstConfidence();
entry.Log = AccurateRipLog;
entry.VerificationDate = DateTime.Now;
entry.OffsetSafeCRC = _arVerify.OffsetSafeCRC;
}
if (_action == CUEAction.Encode)
{
uint tracksMatch = 0;
@@ -4139,6 +4501,23 @@ string status = processor.Go();
return WriteReport();
}
public CUEToolsLocalDBEntry OpenLocalDBEntry()
{
if (!_useLocalDB)
return null;
string path = CUEToolsLocalDBEntry.NormalizePath(InputPath);
CUEToolsLocalDBEntry entry = _localDB.Lookup(_toc, _sourcePaths);
if (entry.InputPaths == null)
entry.InputPaths = new List<string>();
if (!entry.InputPaths.Contains(path))
entry.InputPaths.Add(path);
if (entry.Metadata == null)
entry.Metadata = Metadata;
_localDB.Dirty = true;
return entry;
}
private static Bitmap resizeImage(Image imgToResize, Size size)
{
int sourceWidth = imgToResize.Width;
@@ -4195,8 +4574,9 @@ string status = processor.Go();
}
if ((_config.extractAlbumArt || _config.embedAlbumArt) && !_isCD)
{
foreach (string name in _config.advanced.CoverArtFiles)
foreach (string tpl in _config.advanced.CoverArtFiles)
{
string name = tpl.Replace("%album%", Title).Replace("%artist%", Artist);
string imgPath = Path.Combine(_isArchive ? _archiveCUEpath : _inputDir, name);
bool exists = _isArchive ? _archiveContents.Contains(imgPath) : File.Exists(imgPath);
if (exists)
@@ -4213,51 +4593,50 @@ string status = processor.Go();
if (!_isArchive && _config.advanced.CoverArtSearchSubdirs)
{
List<string> allfiles = new List<string>(Directory.GetFiles(_inputDir, "*.jpg", SearchOption.AllDirectories));
// TODO: archive case
foreach (string name in _config.advanced.CoverArtFiles)
foreach (string tpl in _config.advanced.CoverArtFiles)
{
foreach (string imgPath in Directory.GetFiles(_inputDir, name, SearchOption.AllDirectories))
string name = tpl.Replace("%album%", Title).Replace("%artist%", Artist);
List<string> matching = allfiles.FindAll(s => Path.GetFileName(s) == name);
if (matching.Count == 1)
{
string imgPath = matching[0];
TagLib.File.IFileAbstraction file = _isArchive
? (TagLib.File.IFileAbstraction)new ArchiveFileAbstraction(this, imgPath)
: (TagLib.File.IFileAbstraction)new TagLib.File.LocalFileAbstraction(imgPath);
TagLib.Picture pic = new TagLib.Picture(file);
pic.Description = name;
_albumArt.Add(pic);
}
if (_albumArt.Count == 1)
return;
if (_albumArt.Count > 1)
{
_albumArt.Clear();
break;
}
}
foreach (string imgPath in Directory.GetFiles(_inputDir, "*.jpg", SearchOption.AllDirectories))
if (CUEToolsSelection != null
&& ( (Action == CUEAction.Encode && allfiles.Count < 32)
|| (Action != CUEAction.Encode && allfiles.Count < 2)
)
)
{
TagLib.Picture pic = new TagLib.Picture(imgPath);
if (imgPath.StartsWith(_inputDir))
pic.Description = imgPath.Substring(_inputDir.Length).Trim(Path.DirectorySeparatorChar);
else
pic.Description = Path.GetFileName(imgPath);
_albumArt.Add(pic);
foreach (string imgPath in allfiles)
{
TagLib.Picture pic = new TagLib.Picture(imgPath);
if (imgPath.StartsWith(_inputDir))
pic.Description = imgPath.Substring(_inputDir.Length).Trim(Path.DirectorySeparatorChar);
else
pic.Description = Path.GetFileName(imgPath);
_albumArt.Add(pic);
}
if (_albumArt.Count > 0)
{
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs();
e.choices = _albumArt.ToArray();
CUEToolsSelection(this, e);
TagLib.IPicture selected = e.selection == -1 ? null : _albumArt[e.selection];
_albumArt.RemoveAll(t => t != selected);
}
}
}
if (Action != CUEAction.Encode && _albumArt.Count > 1)
{
_albumArt.Clear();
return;
}
if (_albumArt.Count != 0)
{
CUEToolsSelectionEventArgs e = new CUEToolsSelectionEventArgs();
e.choices = _albumArt.ToArray();
CUEToolsSelection(this, e);
TagLib.IPicture selected = e.selection == -1 ? null : _albumArt[e.selection];
_albumArt.RemoveAll(t => t != selected);
}
}
}
@@ -4310,6 +4689,14 @@ string status = processor.Go();
}
}
public List<string> SourcePaths
{
get
{
return _sourcePaths;
}
}
public string WriteReport()
{
if (_useAccurateRip)
@@ -4697,6 +5084,8 @@ string status = processor.Go();
}
copyCount = audioSource.Read(sampleBuffer, copyCount);
if (copyCount == 0)
throw new Exception("Unexpected end of file");
if (_useCUEToolsDB && _useCUEToolsDBFix)
_CUEToolsDB.SelectedEntry.repair.Write(sampleBuffer);
// we use AR after CTDB fix, so that we can verify what we fixed
@@ -4737,6 +5126,15 @@ string status = processor.Go();
}
}
}
if (hdcdDecoder != null)
(hdcdDecoder as IAudioFilter).AudioDest = null;
hdcdDecoder = null;
if (audioSource != null)
audioSource.Close();
audioSource = null;
if (audioDest != null)
audioDest.Close();
audioDest = null;
}
#if !DEBUG
catch (Exception ex)
@@ -4753,13 +5151,6 @@ string status = processor.Go();
throw ex;
}
#endif
if (hdcdDecoder != null)
(hdcdDecoder as IAudioFilter).AudioDest = null;
if (audioSource != null)
audioSource.Close();
if (audioDest != null)
audioDest.Close();
}
public void VerifyAudio()
@@ -4844,7 +5235,8 @@ string status = processor.Go();
}
int copyCount = task.Step(sampleBuffer);
if (copyCount == 0)
throw new Exception("Unexpected end of file");
diskOffset += copyCount;
CheckStop();
@@ -4918,7 +5310,14 @@ string status = processor.Go();
int trackNo = 0;
foreach (FileSystemInfo file in fileGroup.files)
{
sw.WriteLine(String.Format("FILE \"{0}\" WAVE", file.Name));
string name = file.Name;
if (fileGroup.type == FileGroupInfoType.M3UFile
&& Path.GetDirectoryName(file.FullName) != Path.GetDirectoryName(fileGroup.main.FullName)
&& Path.GetDirectoryName(file.FullName).StartsWith(Path.GetDirectoryName(fileGroup.main.FullName)))
{
name = file.FullName.Substring(Path.GetDirectoryName(fileGroup.main.FullName).Length + 1);
}
sw.WriteLine(String.Format("FILE \"{0}\" WAVE", name));
sw.WriteLine(String.Format(" TRACK {0:00} AUDIO", ++trackNo));
sw.WriteLine(String.Format(" INDEX 01 00:00:00"));
}
@@ -4946,6 +5345,7 @@ string status = processor.Go();
CUELine line;
int i;
string CDDBID = "";
//bool isBinary = false;
using (StringReader sr = new StringReader(cue))
{
@@ -4956,12 +5356,28 @@ string status = processor.Go();
if ((line.Params.Count == 3) && (line.Params[0].ToUpper() == "FILE"))
{
string fileType = line.Params[2].ToUpper();
if ((fileType != "BINARY") && (fileType != "MOTOROLA"))
{
filePos.Add(lines.Count - 1);
origFiles.Add(line.Params[1]);
foundAll &= (LocateFile(dir, line.Params[1], files) != null);
}
if (fileType == "MOTOROLA")
continue;
if (fileType == "BINARY")
continue;
//{
// if (filePos.Count > 0)
// continue;
// isBinary = true;
//}
//else
//{
// if (isBinary)
// {
// filePos.Clear();
// origFiles.Clear();
// foundAll = false;
// isBinary = false;
// }
//}
filePos.Add(lines.Count - 1);
origFiles.Add(line.Params[1]);
foundAll &= (LocateFile(dir, line.Params[1], files) != null);
}
if (line.Params.Count == 3 && line.Params[0].ToUpper() == "REM" && line.Params[1].ToUpper() == "DISCID")
CDDBID = line.Params[2].ToLower();
@@ -5000,39 +5416,19 @@ string status = processor.Go();
List<FileGroupInfo> fileGroups = CUESheet.ScanFolder(_config, dir == "" ? "." : dir);
// Choose filegroup by track count
foreach (FileGroupInfo fileGroup in fileGroups)
List<FileGroupInfo>
matching = fileGroups.FindAll(f => f.type == FileGroupInfoType.TrackFiles && f.files.Count == filePos.Count);
// If ambiguous, use DISCID
if (matching.Count > 1)
matching = fileGroups.FindAll(f => f.type == FileGroupInfoType.TrackFiles && f.files.Count == filePos.Count && f.TOC != null && AccurateRipVerify.CalculateCDDBId(f.TOC).ToLower() == CDDBID);
if (matching.Count == 1)
{
if (fileGroup.type == FileGroupInfoType.TrackFiles && fileGroup.files.Count == filePos.Count)
{
if (foundAll)
{
foundAll = false;
break;
}
audioFiles = fileGroup.files.ConvertAll<string>(info => info.FullName).ToArray();
// No need to sort - hopefully already sorted by ScanFolder
extension = fileGroup.main.Extension.ToLower().TrimStart('.');
foundAll = true;
}
audioFiles = matching[0].files.ConvertAll<string>(info => info.FullName).ToArray();
// No need to sort - hopefully already sorted by ScanFolder
extension = matching[0].main.Extension.ToLower().TrimStart('.');
foundAll = true;
}
// Choose filegroup by DISCID
if (!foundAll)
foreach (FileGroupInfo fileGroup in fileGroups)
{
if (fileGroup.type == FileGroupInfoType.TrackFiles && fileGroup.files.Count == filePos.Count && fileGroup.TOC != null && AccurateRipVerify.CalculateCDDBId(fileGroup.TOC).ToLower() == CDDBID)
{
if (foundAll)
{
foundAll = false;
break;
}
audioFiles = fileGroup.files.ConvertAll<string>(info => info.FullName).ToArray();
extension = fileGroup.main.Extension.ToLower().TrimStart('.');
foundAll = true;
}
}
if (!foundAll && filePos.Count == 1)
foreach (FileGroupInfo fileGroup in fileGroups)
{
@@ -5067,7 +5463,7 @@ string status = processor.Go();
audioFiles = files.FindAll(s => Path.GetDirectoryName(s) == dir && Path.GetExtension(s).ToLower() == "." + format.Key).ToArray();
if (audioFiles.Length == filePos.Count)
{
Array.Sort(audioFiles);
Array.Sort(audioFiles, FileGroupInfo.CompareTrackNames);
extension = format.Key;
foundAll = true;
break;
@@ -5496,6 +5892,7 @@ string status = processor.Go();
return;
if (!_toc[1].IsAudio)
{
// TODO: if track 2 has a pregap, we should adjust it!!!
for (int i = 2; i <= _toc.TrackCount; i++)
{
_toc[i].Start += value - _toc[1].Length;
@@ -5864,6 +6261,12 @@ string status = processor.Go();
return fileGroups;
}
public void UseLocalDB(CUEToolsLocalDB db)
{
_useLocalDB = true;
_localDB = db;
}
public string AccurateRipLog
{
get

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -89,7 +89,7 @@ namespace CUETools.ConsoleRipper
static void Main(string[] args)
{
Console.SetOut(Console.Error);
Console.WriteLine("CUERipper v2.0.9 Copyright (C) 2008-10 Gregory S. Chudov");
Console.WriteLine("CUERipper v2.1.1 Copyright (C) 2008-10 Gregory S. Chudov");
Console.WriteLine("This is free software under the GNU GPLv3+ license; There is NO WARRANTY, to");
Console.WriteLine("the extent permitted by law. <http://www.gnu.org/licenses/> for details.");

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -1187,7 +1187,7 @@ namespace CUETools.Ripper.SCSI
{
get
{
return "CUERipper v2.0.9 Copyright (C) 2008-10 Gregory S. Chudov";
return "CUERipper v2.1.1 Copyright (C) 2008-10 Gregory S. Chudov";
// ripper.GetName().Name + " " + ripper.GetName().Version;
}
}

View File

@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -190,6 +190,69 @@ namespace CUETools.TestCodecs
Assert.AreEqual<uint>(2012115554, ar2.CRC450(1, 55), "CRC450[1,55] was not set correctly.");
Assert.AreEqual<uint>(1483829604, ar2.CRC450(1, -3), "CRC450[1,-3] was not set correctly.");
}
/// <summary>
///OffsetSafeCRCRecord
///</summary>
[TestMethod()]
public void OffsetSafeCRCRecordTest()
{
OffsetSafeCRCRecord[] records = new OffsetSafeCRCRecord[5000];
for (int i = 0; i < records.Length; i++)
{
var arv = new AccurateRipVerify(toc, null);
Random rnd = new Random(2314);
Random rnd2 = new Random(2314);
for (int k = 0; k < i; k++)
{
rnd.Next(-32768, 32767);
rnd.Next(-32768, 32767);
}
int chunk;
for (int k = 0; k < toc.AudioLength * 588; k += chunk)
{
chunk = Math.Min(512 + rnd2.Next(512), (int)toc.AudioLength * 588 - k);
AudioBuffer buff = new AudioBuffer(AudioPCMConfig.RedBook, chunk);
buff.Length = chunk;
for (int s = 0; s < chunk; s++)
{
buff.Samples[s, 0] = rnd.Next(-32768, 32767);
buff.Samples[s, 1] = rnd.Next(-32768, 32767);
}
arv.Write(buff);
}
records[i] = arv.OffsetSafeCRC;
arv.Close();
}
for (int i = 0; i < records.Length; i++)
{
int real_off = -i;
int off;
bool found = records[0].FindOffset(records[i], out off);
if (real_off > 4096 || real_off < -4096)
{
Assert.IsFalse(found, string.Format("FindOffset found offset where it shouldn't have, real offset {0}", real_off));
}
else
{
Assert.IsTrue(found, string.Format("FindOffset failed to detect offset, real offset {0}", real_off));
Assert.AreEqual(real_off, off, string.Format("FindOffset returned {0}, should be {1}", off, real_off));
}
real_off = i;
found = records[i].FindOffset(records[0], out off);
if (real_off > 4096 || real_off < -4096)
{
Assert.IsFalse(found, string.Format("FindOffset found offset where it shouldn't have, real offset {0}", real_off));
}
else
{
Assert.IsTrue(found, string.Format("FindOffset failed to detect offset, real offset {0}", real_off));
Assert.AreEqual(real_off, off, string.Format("FindOffset returned {0}, should be {1}", off, real_off));
}
}
}
}

View File

@@ -23,6 +23,7 @@
<Optimize>false</Optimize>
<OutputPath>.\bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -30,6 +31,7 @@
<OutputPath>..\bin\Release\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="CSScriptLibrary.v1.1, Version=2.3.2.0, Culture=neutral">

View File

@@ -99,7 +99,55 @@ namespace CUETools.TestCodecs
CollectionAssert.AreEqual(File.ReadAllBytes("flake.flac"), File.ReadAllBytes("flakewriter1.flac"), "flakewriter1.flac doesn't match.");
}
public static unsafe void
compute_schur_reflection(/*const*/ double* autoc, uint max_order,
double* dreff/*[][MAX_LPC_ORDER]*/, double* err)
{
float* gen0 = stackalloc float[lpc.MAX_LPC_ORDER];
float* gen1 = stackalloc float[lpc.MAX_LPC_ORDER];
// Schur recursion
for (uint i = 0; i < max_order; i++)
gen0[i] = gen1[i] = (float)autoc[i + 1];
float error = (float)autoc[0];
for (uint i = 0; i < max_order; i++)
{
float reff = -gen1[0] / error;
error += gen1[0] * reff;
for (uint j = 0; j < max_order - i - 1; j++)
{
gen1[j] = gen1[j + 1] + reff * gen0[j];
gen0[j] = gen1[j + 1] * reff + gen0[j];
}
dreff[i] = reff;
err[i] = error;
}
}
[TestMethod()]
public unsafe void LPCTest()
{
double* autoc = stackalloc double[9];
double* reff = stackalloc double[8];
double* err = stackalloc double[8];
float* lpcs = stackalloc float[9 * lpc.MAX_LPC_ORDER];
autoc[0] = 177286873088.0;
autoc[1] = 177010016256.0;
autoc[2] = 176182624256.0;
autoc[3] = 174806581248.0;
autoc[4] = 172888768512.0;
autoc[5] = 170436820992.0;
autoc[6] = 167460765696.0;
autoc[7] = 163973169152.0;
autoc[8] = 159987859456.0;
compute_schur_reflection(autoc, 8, reff, err);
lpc.compute_lpc_coefs(8, reff, lpcs);
Assert.IsTrue(lpcs[7 * lpc.MAX_LPC_ORDER] < 3000);
}
}
}

View File

@@ -25,10 +25,11 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>false</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<Optimize>true</Optimize>
<OutputPath>..\bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
</PropertyGroup>
<ItemGroup>
<Reference Include="CSScriptLibrary.v1.1, Version=2.3.2.0, Culture=neutral">

View File

@@ -51,7 +51,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -281,6 +281,16 @@
<None Include="Resources\delete.png" />
<None Include="Resources\cdrepair.ico" />
<None Include="Resources\cdrepair.png" />
<None Include="Resources\more\icon\puzzle--arrow.png" />
<None Include="Resources\more\icon\alarm-clock--minus.png" />
<None Include="Resources\puzzle.ico" />
<None Include="Resources\alarm-clock.ico" />
<None Include="Resources\users.ico" />
<None Include="Resources\calendar.ico" />
<None Include="Resources\images.ico" />
<None Include="Resources\pictures.ico" />
<None Include="Resources\images-question.ico" />
<None Include="Resources\picture.ico" />
<Content Include="unrar.dll">
</Content>
<Content Include="Resources\accuraterip_16.bmp" />

View File

@@ -169,692 +169,629 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.Codecs.Icecast", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFRipper", "..\WPFRipper\WPFRipper.csproj", "{2D8D7A03-DFFA-44EF-9299-8BB56D122245}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.Codecs.FLACCL", "..\CUETools.Codecs.FLACCL\CUETools.Codecs.FLACCL.csproj", "{DFE55765-564C-4B8F-993B-A94C4D1C212E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.FLACL.cmd", "..\CUETools.FLACCL.cmd\CUETools.FLACL.cmd.csproj", "{1FCA8834-34E6-47CF-B53F-D8DF35345363}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenCLNet", "..\..\ATI Stream\OpenCL.Net 0.6\source\OpenCLNet\OpenCLNet.csproj", "{758285C6-1ACA-458A-9906-EE6701D5AF87}"
EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = CUETools1.vsmdi
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x64.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x86.ActiveCfg = Debug|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.Build.0 = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Win32.ActiveCfg = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x64.ActiveCfg = Release|Any CPU
{EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x86.ActiveCfg = Release|Any CPU
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Any CPU.ActiveCfg = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Mixed Platforms.Build.0 = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.ActiveCfg = Debug|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.Build.0 = Debug|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.ActiveCfg = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.Build.0 = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x86.ActiveCfg = Debug|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Any CPU.ActiveCfg = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Mixed Platforms.ActiveCfg = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Mixed Platforms.Build.0 = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.ActiveCfg = Release|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.Build.0 = Release|Win32
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.ActiveCfg = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.Build.0 = Release|x64
{E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x86.ActiveCfg = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Any CPU.ActiveCfg = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Mixed Platforms.Build.0 = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.ActiveCfg = Debug|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.Build.0 = Debug|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.ActiveCfg = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.Build.0 = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x86.ActiveCfg = Debug|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Any CPU.ActiveCfg = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Mixed Platforms.ActiveCfg = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Mixed Platforms.Build.0 = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.ActiveCfg = Release|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.Build.0 = Release|Win32
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.ActiveCfg = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.Build.0 = Release|x64
{9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x86.ActiveCfg = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Any CPU.ActiveCfg = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Mixed Platforms.Build.0 = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.ActiveCfg = Debug|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.Build.0 = Debug|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.ActiveCfg = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.Build.0 = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x86.ActiveCfg = Debug|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Any CPU.ActiveCfg = Release|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Mixed Platforms.ActiveCfg = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Mixed Platforms.Build.0 = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.ActiveCfg = Release|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.Build.0 = Release|Win32
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.ActiveCfg = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.Build.0 = Release|x64
{CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x86.ActiveCfg = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Any CPU.ActiveCfg = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Mixed Platforms.Build.0 = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.ActiveCfg = Debug|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.Build.0 = Debug|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.ActiveCfg = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.Build.0 = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x86.ActiveCfg = Debug|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Any CPU.ActiveCfg = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Mixed Platforms.ActiveCfg = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Mixed Platforms.Build.0 = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.ActiveCfg = Release|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.Build.0 = Release|Win32
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.ActiveCfg = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.Build.0 = Release|x64
{0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x86.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Any CPU.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Mixed Platforms.Build.0 = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.Build.0 = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x86.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Any CPU.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Mixed Platforms.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Mixed Platforms.Build.0 = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.Build.0 = Release|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.Build.0 = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x86.ActiveCfg = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Any CPU.ActiveCfg = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Mixed Platforms.Build.0 = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.ActiveCfg = Debug|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.Build.0 = Debug|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.ActiveCfg = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.Build.0 = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x86.ActiveCfg = Debug|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Any CPU.ActiveCfg = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Mixed Platforms.ActiveCfg = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Mixed Platforms.Build.0 = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.ActiveCfg = Release|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.Build.0 = Release|Win32
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x64.ActiveCfg = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x64.Build.0 = Release|x64
{5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x86.ActiveCfg = Release|x64
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x64.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x86.ActiveCfg = Debug|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.Build.0 = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Win32.ActiveCfg = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x64.ActiveCfg = Release|Any CPU
{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x86.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.Build.0 = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x86.ActiveCfg = Debug|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.Build.0 = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Win32.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.ActiveCfg = Release|Any CPU
{4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x86.ActiveCfg = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Mixed Platforms.Build.0 = Debug|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.ActiveCfg = Debug|x64
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.Build.0 = Debug|x64
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x86.ActiveCfg = Debug|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x86.Build.0 = Debug|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Any CPU.Build.0 = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Mixed Platforms.ActiveCfg = Release|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Mixed Platforms.Build.0 = Release|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Win32.ActiveCfg = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x64.ActiveCfg = Release|Any CPU
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x86.ActiveCfg = Release|x86
{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x86.Build.0 = Release|x86
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.Build.0 = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x86.ActiveCfg = Debug|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.Build.0 = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Win32.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x64.ActiveCfg = Release|Any CPU
{6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x86.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.Build.0 = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x86.ActiveCfg = Debug|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.Build.0 = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Win32.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x64.ActiveCfg = Release|Any CPU
{F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x86.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|x64.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Debug|x86.ActiveCfg = Debug|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|Win32.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|x64.ActiveCfg = Release|Any CPU
{8427CAA5-80B8-4952-9A68-5F3DFCFBDF40}.Release|x86.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|x64.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|x64.Build.0 = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Debug|x86.ActiveCfg = Debug|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Any CPU.Build.0 = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|Win32.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|x64.ActiveCfg = Release|Any CPU
{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}.Release|x86.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|x64.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Debug|x86.ActiveCfg = Debug|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Any CPU.Build.0 = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|Win32.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|x64.ActiveCfg = Release|Any CPU
{A574F3B1-E38B-4EE4-9394-49D6E2DF52EA}.Release|x86.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|Win32.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|x64.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Debug|x86.ActiveCfg = Debug|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Any CPU.Build.0 = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|Win32.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|x64.ActiveCfg = Release|Any CPU
{B75FA7AD-968E-4990-B342-1B4B17C850DF}.Release|x86.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|x64.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Debug|x86.ActiveCfg = Debug|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Any CPU.Build.0 = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|Win32.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|x64.ActiveCfg = Release|Any CPU
{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}.Release|x86.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|x64.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Debug|x86.ActiveCfg = Debug|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Any CPU.Build.0 = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|Win32.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|x64.ActiveCfg = Release|Any CPU
{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}.Release|x86.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|x64.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Debug|x86.ActiveCfg = Debug|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Any CPU.Build.0 = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|Win32.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|x64.ActiveCfg = Release|Any CPU
{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}.Release|x86.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|x64.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Debug|x86.ActiveCfg = Debug|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Any CPU.Build.0 = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|Win32.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|x64.ActiveCfg = Release|Any CPU
{9253A314-1821-42BF-B02F-2BF986B1765D}.Release|x86.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|x64.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Debug|x86.ActiveCfg = Debug|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Any CPU.Build.0 = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|Win32.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|x64.ActiveCfg = Release|Any CPU
{1DD41038-D885-46C5-8DDE-E0B82F066584}.Release|x86.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|x64.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Debug|x86.ActiveCfg = Debug|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Any CPU.Build.0 = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Win32.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x64.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x86.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Win32.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x86.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.Build.0 = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Win32.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|x64.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|x86.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|x64.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|x86.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Any CPU.Build.0 = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|Win32.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|x64.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Release|x86.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x64.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x64.Build.0 = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Debug|x86.ActiveCfg = Debug|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Any CPU.Build.0 = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|Win32.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x64.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x86.ActiveCfg = Release|Any CPU
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Any CPU.ActiveCfg = Debug|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.Build.0 = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Win32.ActiveCfg = Debug|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Win32.Build.0 = Debug|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x64.ActiveCfg = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x64.Build.0 = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|x86.ActiveCfg = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Any CPU.ActiveCfg = Release|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Mixed Platforms.ActiveCfg = Release|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Mixed Platforms.Build.0 = Release|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Win32.ActiveCfg = Release|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|Win32.Build.0 = Release|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x64.ActiveCfg = Release|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x64.Build.0 = Release|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Release|x86.ActiveCfg = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Any CPU.ActiveCfg = Debug|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Mixed Platforms.Build.0 = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Win32.ActiveCfg = Debug|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|Win32.Build.0 = Debug|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x64.ActiveCfg = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x64.Build.0 = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Debug|x86.ActiveCfg = Debug|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Any CPU.ActiveCfg = Release|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Mixed Platforms.ActiveCfg = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Mixed Platforms.Build.0 = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Win32.ActiveCfg = Release|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|Win32.Build.0 = Release|Win32
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|x64.ActiveCfg = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|x64.Build.0 = Release|x64
{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}.Release|x86.ActiveCfg = Release|x64
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Any CPU.Build.0 = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|Win32.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|x64.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Debug|x86.ActiveCfg = Debug|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Any CPU.ActiveCfg = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Any CPU.Build.0 = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|Win32.ActiveCfg = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|x64.ActiveCfg = Release|Any CPU
{115CC5B0-0385-41CD-8A23-6A7EA4C51926}.Release|x86.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|x64.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Debug|x86.ActiveCfg = Debug|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Any CPU.Build.0 = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|Win32.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|x64.ActiveCfg = Release|Any CPU
{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}.Release|x86.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x64.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x64.Build.0 = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Debug|x86.ActiveCfg = Debug|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Any CPU.Build.0 = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|Win32.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|x64.ActiveCfg = Release|Any CPU
{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}.Release|x86.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x64.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x64.Build.0 = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Debug|x86.ActiveCfg = Debug|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Any CPU.Build.0 = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|Win32.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|x64.ActiveCfg = Release|Any CPU
{2379BAAF-A406-4477-BF53-2D6A326C24C8}.Release|x86.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|x64.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Debug|x86.ActiveCfg = Debug|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Any CPU.Build.0 = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|Win32.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|x64.ActiveCfg = Release|Any CPU
{8E6E1763-39AE-491D-A10F-44C8844ABA5B}.Release|x86.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x64.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x64.Build.0 = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Debug|x86.ActiveCfg = Debug|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Any CPU.Build.0 = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|Win32.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|x64.ActiveCfg = Release|Any CPU
{DFE50673-906C-4B8F-993B-A24CAD1CA17D}.Release|x86.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x64.Build.0 = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Any CPU.Build.0 = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|Win32.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|x64.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E}.Release|x86.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|x64.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Debug|x86.ActiveCfg = Debug|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Any CPU.Build.0 = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|Win32.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|x64.ActiveCfg = Release|Any CPU
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80}.Release|x86.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|x64.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Debug|x86.ActiveCfg = Debug|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Any CPU.Build.0 = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|Win32.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|x64.ActiveCfg = Release|Any CPU
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A}.Release|x86.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x64.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x64.Build.0 = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Debug|x86.ActiveCfg = Debug|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Any CPU.Build.0 = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|Win32.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|x64.ActiveCfg = Release|Any CPU
{04945FB2-8410-4F14-8262-2ED18DCDACD6}.Release|x86.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|x64.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Debug|x86.ActiveCfg = Debug|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Any CPU.Build.0 = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|Win32.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|x64.ActiveCfg = Release|Any CPU
{A430AD28-B76A-4ED0-AF7D-D13B8969297F}.Release|x86.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|x64.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Debug|x86.ActiveCfg = Debug|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Any CPU.Build.0 = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|Win32.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|x64.ActiveCfg = Release|Any CPU
{14EE067E-C218-4625-9540-2361AB27C4A6}.Release|x86.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|x64.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Debug|x86.ActiveCfg = Debug|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Any CPU.Build.0 = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|Win32.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|x64.ActiveCfg = Release|Any CPU
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}.Release|x86.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|x64.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Debug|x86.ActiveCfg = Debug|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Any CPU.Build.0 = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|Win32.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|x64.ActiveCfg = Release|Any CPU
{D2700165-3E77-4B28-928D-551F5FC11954}.Release|x86.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|x64.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Debug|x86.ActiveCfg = Debug|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Any CPU.Build.0 = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|Win32.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|x64.ActiveCfg = Release|Any CPU
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796}.Release|x86.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|Win32.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|x64.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Debug|x86.ActiveCfg = Debug|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Any CPU.Build.0 = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|Win32.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|x64.ActiveCfg = Release|Any CPU
{ECEB839C-171B-4535-958F-9899310A0342}.Release|x86.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|x64.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Debug|x86.ActiveCfg = Debug|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Any CPU.Build.0 = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|Win32.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|x64.ActiveCfg = Release|Any CPU
{6C74652F-1EF4-459E-84F4-99D93D3D17DA}.Release|x86.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|x64.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Debug|x86.ActiveCfg = Debug|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Any CPU.Build.0 = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|Win32.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|x64.ActiveCfg = Release|Any CPU
{AA2A9A7E-45FB-4632-AD85-85B0E556F818}.Release|x86.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|x64.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Debug|x86.ActiveCfg = Debug|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Any CPU.Build.0 = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|Win32.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|x64.ActiveCfg = Release|Any CPU
{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}.Release|x86.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|Win32.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|x64.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Debug|x86.ActiveCfg = Debug|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Any CPU.Build.0 = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|Win32.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|x64.ActiveCfg = Release|Any CPU
{04E59836-0C5A-4B9B-8899-848D56911758}.Release|x86.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|x64.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Debug|x86.ActiveCfg = Debug|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Any CPU.Build.0 = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|Win32.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|x64.ActiveCfg = Release|Any CPU
{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}.Release|x86.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|x64.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Debug|x86.ActiveCfg = Debug|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Any CPU.Build.0 = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|Win32.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|x64.ActiveCfg = Release|Any CPU
{1AF02E2C-2CB2-44B5-B417-37653071FEC6}.Release|x86.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|x64.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Debug|x86.ActiveCfg = Debug|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Any CPU.Build.0 = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|Win32.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|x64.ActiveCfg = Release|Any CPU
{5A9FB016-6388-475D-AB33-6F86AD49FDAD}.Release|x86.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|x64.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Debug|x86.ActiveCfg = Debug|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Any CPU.Build.0 = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|Win32.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|x64.ActiveCfg = Release|Any CPU
{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}.Release|x86.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|x64.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Debug|x86.ActiveCfg = Debug|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Any CPU.Build.0 = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|Win32.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|x64.ActiveCfg = Release|Any CPU
{A6303861-CA06-4C2C-A104-BA9291538F6F}.Release|x86.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|x64.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Debug|x86.ActiveCfg = Debug|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Any CPU.Build.0 = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|Win32.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|x64.ActiveCfg = Release|Any CPU
{8FC5DA7C-F6AC-4D04-85BC-1233DDF569E7}.Release|x86.ActiveCfg = Release|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|x64.ActiveCfg = Debug|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Debug|x86.ActiveCfg = Debug|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Any CPU.Build.0 = Release|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|Win32.ActiveCfg = Release|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|x64.ActiveCfg = Release|Any CPU
{2D8D7A03-DFFA-44EF-9299-8BB56D122245}.Release|x86.ActiveCfg = Release|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|x64.ActiveCfg = Debug|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Debug|x86.ActiveCfg = Debug|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Any CPU.Build.0 = Release|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|Win32.ActiveCfg = Release|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|x64.ActiveCfg = Release|Any CPU
{DFE55765-564C-4B8F-993B-A94C4D1C212E}.Release|x86.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|x64.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Debug|x86.ActiveCfg = Debug|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Any CPU.Build.0 = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|Win32.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|x64.ActiveCfg = Release|Any CPU
{1FCA8834-34E6-47CF-B53F-D8DF35345363}.Release|x86.ActiveCfg = Release|Any CPU
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Any CPU.Build.0 = Debug|Any CPU
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|Win32.ActiveCfg = Debug|x86
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|x64.ActiveCfg = Debug|x64
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|x64.Build.0 = Debug|x64
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|x86.ActiveCfg = Debug|x86
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Debug|x86.Build.0 = Debug|x86
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Any CPU.ActiveCfg = Release|Any CPU
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Any CPU.Build.0 = Release|Any CPU
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|Win32.ActiveCfg = Release|Any CPU
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x64.ActiveCfg = Release|x64
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x64.Build.0 = Release|x64
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x86.ActiveCfg = Release|x86
{758285C6-1ACA-458A-9906-EE6701D5AF87}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -877,6 +814,7 @@ Global
{8E6E1763-39AE-491D-A10F-44C8844ABA5B} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
{1FCA8834-34E6-47CF-B53F-D8DF49F0819E} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
{FC4BCF9B-F4C7-41AD-8A16-2A90A082954A} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
{1FCA8834-34E6-47CF-B53F-D8DF35345363} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D}
{8B179853-B7D6-479C-B8B2-6CBCE835D040} = {39A17A65-E893-44B8-A312-DDCDD990D9D1}
{E70FA90A-7012-4A52-86B5-362B699D1540} = {39A17A65-E893-44B8-A312-DDCDD990D9D1}
{9AE965C4-301E-4C01-B90F-297AF341ACC6} = {39A17A65-E893-44B8-A312-DDCDD990D9D1}
@@ -891,6 +829,7 @@ Global
{DFE50673-906C-4B8F-993B-A24CAD1CA17D} = {93B7AE1D-DEF6-4A04-A222-5CDE09DF262D}
{DDE1EA77-637C-4D5F-96F3-1328BC45CE80} = {93B7AE1D-DEF6-4A04-A222-5CDE09DF262D}
{1AF02E2C-2CB2-44B5-B417-37653071FEC6} = {93B7AE1D-DEF6-4A04-A222-5CDE09DF262D}
{DFE55765-564C-4B8F-993B-A94C4D1C212E} = {93B7AE1D-DEF6-4A04-A222-5CDE09DF262D}
{04945FB2-8410-4F14-8262-2ED18DCDACD6} = {D9D97BB6-002F-4858-8EF2-49B4C4C4DDB4}
{A430AD28-B76A-4ED0-AF7D-D13B8969297F} = {D9D97BB6-002F-4858-8EF2-49B4C4C4DDB4}
{5C8B61C0-BC3D-4316-B8A7-419D55BB5796} = {D9D97BB6-002F-4858-8EF2-49B4C4C4DDB4}

View File

@@ -5,7 +5,7 @@
</TestList>
<TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d">
<TestLinks>
<TestLink id="707b580c-3801-a61c-0d6a-866ccb489f00" name="CDRepairFixTest" storage="cuetools.testparity\bin\release\cuetools.testparity.dll" enabled="false" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="707b580c-3801-a61c-0d6a-866ccb489f00" name="CDRepairFixTest" storage="cuetools.testparity\bin\debug\cuetools.testparity.dll" enabled="false" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
</TestLinks>
</TestList>
</TestLists>

View File

@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("2.0.9.0")]
[assembly: AssemblyFileVersion("2.0.9.0")]
[assembly: AssemblyVersion("2.1.1.0")]
[assembly: AssemblyFileVersion("2.1.1.0")]

View File

@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.4200
// Runtime Version:2.0.50727.4206
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -67,6 +67,20 @@ namespace JDP.Properties {
}
}
internal static System.Drawing.Icon alarm_clock {
get {
object obj = ResourceManager.GetObject("alarm_clock", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static System.Drawing.Bitmap alarm_clock__minus {
get {
object obj = ResourceManager.GetObject("alarm-clock--minus", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Icon ape {
get {
object obj = ResourceManager.GetObject("ape", resourceCulture);
@@ -88,6 +102,13 @@ namespace JDP.Properties {
}
}
internal static System.Drawing.Icon calendar {
get {
object obj = ResourceManager.GetObject("calendar", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static System.Drawing.Icon cdrepair {
get {
object obj = ResourceManager.GetObject("cdrepair", resourceCulture);
@@ -230,6 +251,20 @@ namespace JDP.Properties {
}
}
internal static System.Drawing.Icon images {
get {
object obj = ResourceManager.GetObject("images", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static System.Drawing.Icon images_question {
get {
object obj = ResourceManager.GetObject("images_question", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static System.Drawing.Bitmap info2 {
get {
object obj = ResourceManager.GetObject("info2", resourceCulture);
@@ -286,6 +321,34 @@ namespace JDP.Properties {
}
}
internal static System.Drawing.Icon picture {
get {
object obj = ResourceManager.GetObject("picture", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static System.Drawing.Icon pictures {
get {
object obj = ResourceManager.GetObject("pictures", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static System.Drawing.Icon puzzle {
get {
object obj = ResourceManager.GetObject("puzzle", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
internal static System.Drawing.Bitmap puzzle__arrow {
get {
object obj = ResourceManager.GetObject("puzzle--arrow", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap report {
get {
object obj = ResourceManager.GetObject("report", resourceCulture);
@@ -316,6 +379,13 @@ namespace JDP.Properties {
}
}
internal static System.Drawing.Icon users {
get {
object obj = ResourceManager.GetObject("users", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
/// <summary>
/// Looks up a localized string similar to Verify.
/// </summary>

View File

@@ -130,6 +130,9 @@
<data name="AR" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AR.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="cdrepair" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cdrepair.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="info2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\info2.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -160,6 +163,9 @@
<data name="Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="cdrepair1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cdrepair.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="world_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\world_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -223,25 +229,49 @@
<data name="report" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\report.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="puzzle--arrow" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\more\icon\puzzle--arrow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="folder_page" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\more\icons\folder_page.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="folder" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\more\icons\folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="disk" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\disk.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="accuraterip16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\accuraterip_16.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="alarm-clock--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\more\icon\alarm-clock--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="cdrepair" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cdrepair.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="alarm_clock" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\alarm-clock.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="cdrepair1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cdrepair.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="calendar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\calendar.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="puzzle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\puzzle.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="users" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\users.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="images" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\images.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pictures" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pictures.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="images_question" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\images-question.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="picture" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\picture.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -38,6 +38,10 @@ namespace JDP {
this.fileSystemTreeView1 = new CUEControls.FileSystemTreeView();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.groupBoxMode = new System.Windows.Forms.GroupBox();
this.tableLayoutPanelVerifyMode = new System.Windows.Forms.TableLayoutPanel();
this.checkBoxSkipRecent = new System.Windows.Forms.CheckBox();
this.checkBoxVerifyUseLocal = new System.Windows.Forms.CheckBox();
this.checkBoxVerifyUseCDRepair = new System.Windows.Forms.CheckBox();
this.tableLayoutPanelCUEStyle = new System.Windows.Forms.TableLayoutPanel();
this.checkBoxUseAccurateRip = new System.Windows.Forms.CheckBox();
this.checkBoxUseFreeDb = new System.Windows.Forms.CheckBox();
@@ -51,8 +55,6 @@ namespace JDP {
this.toolStripMenuItemCorrectorModeLocateFiles = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemCorrectorModeChangeExtension = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripDropDownButtonCorrectorFormat = new System.Windows.Forms.ToolStripDropDownButton();
this.tableLayoutPanelVerifyMode = new System.Windows.Forms.TableLayoutPanel();
this.checkBoxVerifyUseCDRepair = new System.Windows.Forms.CheckBox();
this.grpAudioOutput = new System.Windows.Forms.GroupBox();
this.labelEncoderMaxMode = new System.Windows.Forms.Label();
this.labelEncoderMinMode = new System.Windows.Forms.Label();
@@ -78,6 +80,7 @@ namespace JDP {
this.toolStripMenuItemInputBrowserFiles = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemInputBrowserMulti = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemInputBrowserDrag = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemLocalDatabase = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItemInputBrowserHide = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripOutput = new System.Windows.Forms.ToolStrip();
this.toolStripLabelOutput = new System.Windows.Forms.ToolStripLabel();
@@ -121,6 +124,10 @@ namespace JDP {
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.setAsMyMusicFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetToOriginalLocationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editMetadataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addFolderToLocalDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.removeItemFromDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.backgroundWorkerAddToLocalDB = new System.ComponentModel.BackgroundWorker();
this.toolStripContainer1.BottomToolStripPanel.SuspendLayout();
this.toolStripContainer1.ContentPanel.SuspendLayout();
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
@@ -130,9 +137,9 @@ namespace JDP {
this.grpInput.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.groupBoxMode.SuspendLayout();
this.tableLayoutPanelVerifyMode.SuspendLayout();
this.tableLayoutPanelCUEStyle.SuspendLayout();
this.toolStripCorrectorFormat.SuspendLayout();
this.tableLayoutPanelVerifyMode.SuspendLayout();
this.grpAudioOutput.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.trackBarEncoderMode)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxMotd)).BeginInit();
@@ -295,13 +302,45 @@ namespace JDP {
//
// groupBoxMode
//
this.groupBoxMode.Controls.Add(this.tableLayoutPanelVerifyMode);
this.groupBoxMode.Controls.Add(this.tableLayoutPanelCUEStyle);
this.groupBoxMode.Controls.Add(this.toolStripCorrectorFormat);
this.groupBoxMode.Controls.Add(this.tableLayoutPanelVerifyMode);
resources.ApplyResources(this.groupBoxMode, "groupBoxMode");
this.groupBoxMode.Name = "groupBoxMode";
this.groupBoxMode.TabStop = false;
//
// tableLayoutPanelVerifyMode
//
resources.ApplyResources(this.tableLayoutPanelVerifyMode, "tableLayoutPanelVerifyMode");
this.tableLayoutPanelVerifyMode.Controls.Add(this.checkBoxSkipRecent, 2, 0);
this.tableLayoutPanelVerifyMode.Controls.Add(this.checkBoxVerifyUseLocal, 1, 0);
this.tableLayoutPanelVerifyMode.Controls.Add(this.checkBoxVerifyUseCDRepair, 0, 0);
this.tableLayoutPanelVerifyMode.Name = "tableLayoutPanelVerifyMode";
//
// checkBoxSkipRecent
//
resources.ApplyResources(this.checkBoxSkipRecent, "checkBoxSkipRecent");
this.checkBoxSkipRecent.Image = global::JDP.Properties.Resources.alarm_clock__minus;
this.checkBoxSkipRecent.Name = "checkBoxSkipRecent";
this.toolTip1.SetToolTip(this.checkBoxSkipRecent, resources.GetString("checkBoxSkipRecent.ToolTip"));
this.checkBoxSkipRecent.UseVisualStyleBackColor = true;
//
// checkBoxVerifyUseLocal
//
resources.ApplyResources(this.checkBoxVerifyUseLocal, "checkBoxVerifyUseLocal");
this.checkBoxVerifyUseLocal.Image = global::JDP.Properties.Resources.puzzle__arrow;
this.checkBoxVerifyUseLocal.Name = "checkBoxVerifyUseLocal";
this.toolTip1.SetToolTip(this.checkBoxVerifyUseLocal, resources.GetString("checkBoxVerifyUseLocal.ToolTip"));
this.checkBoxVerifyUseLocal.UseVisualStyleBackColor = true;
//
// checkBoxVerifyUseCDRepair
//
resources.ApplyResources(this.checkBoxVerifyUseCDRepair, "checkBoxVerifyUseCDRepair");
this.checkBoxVerifyUseCDRepair.Image = global::JDP.Properties.Resources.cdrepair1;
this.checkBoxVerifyUseCDRepair.Name = "checkBoxVerifyUseCDRepair";
this.toolTip1.SetToolTip(this.checkBoxVerifyUseCDRepair, resources.GetString("checkBoxVerifyUseCDRepair.ToolTip"));
this.checkBoxVerifyUseCDRepair.UseVisualStyleBackColor = true;
//
// tableLayoutPanelCUEStyle
//
resources.ApplyResources(this.tableLayoutPanelCUEStyle, "tableLayoutPanelCUEStyle");
@@ -420,20 +459,6 @@ namespace JDP {
this.toolStripDropDownButtonCorrectorFormat.Name = "toolStripDropDownButtonCorrectorFormat";
this.toolStripDropDownButtonCorrectorFormat.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButtonCorrectorFormat_DropDownItemClicked);
//
// tableLayoutPanelVerifyMode
//
resources.ApplyResources(this.tableLayoutPanelVerifyMode, "tableLayoutPanelVerifyMode");
this.tableLayoutPanelVerifyMode.Controls.Add(this.checkBoxVerifyUseCDRepair, 0, 0);
this.tableLayoutPanelVerifyMode.Name = "tableLayoutPanelVerifyMode";
this.toolTip1.SetToolTip(this.tableLayoutPanelVerifyMode, resources.GetString("tableLayoutPanelVerifyMode.ToolTip"));
//
// checkBoxVerifyUseCDRepair
//
resources.ApplyResources(this.checkBoxVerifyUseCDRepair, "checkBoxVerifyUseCDRepair");
this.checkBoxVerifyUseCDRepair.Image = global::JDP.Properties.Resources.cdrepair1;
this.checkBoxVerifyUseCDRepair.Name = "checkBoxVerifyUseCDRepair";
this.checkBoxVerifyUseCDRepair.UseVisualStyleBackColor = true;
//
// grpAudioOutput
//
this.grpAudioOutput.Controls.Add(this.labelEncoderMaxMode);
@@ -624,6 +649,7 @@ namespace JDP {
this.toolStripMenuItemInputBrowserFiles,
this.toolStripMenuItemInputBrowserMulti,
this.toolStripMenuItemInputBrowserDrag,
this.toolStripMenuItemLocalDatabase,
this.toolStripMenuItemInputBrowserHide});
this.toolStripSplitButtonInputBrowser.Image = global::JDP.Properties.Resources.folder;
resources.ApplyResources(this.toolStripSplitButtonInputBrowser, "toolStripSplitButtonInputBrowser");
@@ -649,6 +675,12 @@ namespace JDP {
this.toolStripMenuItemInputBrowserDrag.Name = "toolStripMenuItemInputBrowserDrag";
resources.ApplyResources(this.toolStripMenuItemInputBrowserDrag, "toolStripMenuItemInputBrowserDrag");
//
// toolStripMenuItemLocalDatabase
//
this.toolStripMenuItemLocalDatabase.Image = global::JDP.Properties.Resources.puzzle__arrow;
this.toolStripMenuItemLocalDatabase.Name = "toolStripMenuItemLocalDatabase";
resources.ApplyResources(this.toolStripMenuItemLocalDatabase, "toolStripMenuItemLocalDatabase");
//
// toolStripMenuItemInputBrowserHide
//
this.toolStripMenuItemInputBrowserHide.Image = global::JDP.Properties.Resources.folder_delete;
@@ -970,7 +1002,10 @@ namespace JDP {
this.SelectedNodeName,
this.toolStripSeparator2,
this.setAsMyMusicFolderToolStripMenuItem,
this.resetToOriginalLocationToolStripMenuItem});
this.resetToOriginalLocationToolStripMenuItem,
this.editMetadataToolStripMenuItem,
this.addFolderToLocalDatabaseToolStripMenuItem,
this.removeItemFromDatabaseToolStripMenuItem});
this.contextMenuStripFileTree.Name = "contextMenuStripFileTree";
resources.ApplyResources(this.contextMenuStripFileTree, "contextMenuStripFileTree");
//
@@ -996,6 +1031,29 @@ namespace JDP {
resources.ApplyResources(this.resetToOriginalLocationToolStripMenuItem, "resetToOriginalLocationToolStripMenuItem");
this.resetToOriginalLocationToolStripMenuItem.Click += new System.EventHandler(this.resetToOriginalLocationToolStripMenuItem_Click);
//
// editMetadataToolStripMenuItem
//
this.editMetadataToolStripMenuItem.Name = "editMetadataToolStripMenuItem";
resources.ApplyResources(this.editMetadataToolStripMenuItem, "editMetadataToolStripMenuItem");
this.editMetadataToolStripMenuItem.Click += new System.EventHandler(this.editMetadataToolStripMenuItem_Click);
//
// addFolderToLocalDatabaseToolStripMenuItem
//
this.addFolderToLocalDatabaseToolStripMenuItem.Name = "addFolderToLocalDatabaseToolStripMenuItem";
resources.ApplyResources(this.addFolderToLocalDatabaseToolStripMenuItem, "addFolderToLocalDatabaseToolStripMenuItem");
this.addFolderToLocalDatabaseToolStripMenuItem.Click += new System.EventHandler(this.addFolderToLocalDatabaseToolStripMenuItem_Click);
//
// removeItemFromDatabaseToolStripMenuItem
//
this.removeItemFromDatabaseToolStripMenuItem.Name = "removeItemFromDatabaseToolStripMenuItem";
resources.ApplyResources(this.removeItemFromDatabaseToolStripMenuItem, "removeItemFromDatabaseToolStripMenuItem");
this.removeItemFromDatabaseToolStripMenuItem.Click += new System.EventHandler(this.removeItemFromDatabaseToolStripMenuItem_Click);
//
// backgroundWorkerAddToLocalDB
//
this.backgroundWorkerAddToLocalDB.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorkerAddToLocalDB_DoWork);
this.backgroundWorkerAddToLocalDB.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorkerAddToLocalDB_RunWorkerCompleted);
//
// frmCUETools
//
resources.ApplyResources(this, "$this");
@@ -1018,12 +1076,12 @@ namespace JDP {
this.grpInput.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.groupBoxMode.ResumeLayout(false);
this.tableLayoutPanelVerifyMode.ResumeLayout(false);
this.tableLayoutPanelVerifyMode.PerformLayout();
this.tableLayoutPanelCUEStyle.ResumeLayout(false);
this.tableLayoutPanelCUEStyle.PerformLayout();
this.toolStripCorrectorFormat.ResumeLayout(false);
this.toolStripCorrectorFormat.PerformLayout();
this.tableLayoutPanelVerifyMode.ResumeLayout(false);
this.tableLayoutPanelVerifyMode.PerformLayout();
this.grpAudioOutput.ResumeLayout(false);
this.grpAudioOutput.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.trackBarEncoderMode)).EndInit();
@@ -1147,6 +1205,13 @@ namespace JDP {
private System.Windows.Forms.TableLayoutPanel tableLayoutPanelVerifyMode;
private System.Windows.Forms.CheckBox checkBoxVerifyUseCDRepair;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelCTDB;
private System.Windows.Forms.CheckBox checkBoxVerifyUseLocal;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemLocalDatabase;
private System.Windows.Forms.CheckBox checkBoxSkipRecent;
private System.Windows.Forms.ToolStripMenuItem editMetadataToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addFolderToLocalDatabaseToolStripMenuItem;
private System.ComponentModel.BackgroundWorker backgroundWorkerAddToLocalDB;
private System.Windows.Forms.ToolStripMenuItem removeItemFromDatabaseToolStripMenuItem;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -280,7 +280,7 @@
<data name="btnResume.Text" xml:space="preserve">
<value>&amp;Fortsetzen</value>
</data>
<data name="tableLayoutPanelVerifyMode.ToolTip" xml:space="preserve">
<data name="checkBoxVerifyUseCDRepair.ToolTip" xml:space="preserve">
<value>Verwende CUETools-Datenbank</value>
</data>
<data name="groupBoxMode.Text" xml:space="preserve">

View File

@@ -271,7 +271,7 @@
<value>fileSystemTreeView1</value>
</data>
<data name="&gt;&gt;fileSystemTreeView1.Type" xml:space="preserve">
<value>CUEControls.FileSystemTreeView, CUEControls, Version=2.0.9.0, Culture=neutral, PublicKeyToken=null</value>
<value>CUEControls.FileSystemTreeView, CUEControls, Version=2.1.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;fileSystemTreeView1.Parent" xml:space="preserve">
<value>grpInput</value>
@@ -312,6 +312,141 @@
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanelVerifyMode.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="checkBoxSkipRecent.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="checkBoxSkipRecent.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="checkBoxSkipRecent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="checkBoxSkipRecent.Location" type="System.Drawing.Point, System.Drawing">
<value>99, 3</value>
</data>
<data name="checkBoxSkipRecent.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 29</value>
</data>
<data name="checkBoxSkipRecent.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>153, 8</value>
</metadata>
<data name="checkBoxSkipRecent.ToolTip" xml:space="preserve">
<value>Skip recently verified</value>
</data>
<data name="&gt;&gt;checkBoxSkipRecent.Name" xml:space="preserve">
<value>checkBoxSkipRecent</value>
</data>
<data name="&gt;&gt;checkBoxSkipRecent.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkBoxSkipRecent.Parent" xml:space="preserve">
<value>tableLayoutPanelVerifyMode</value>
</data>
<data name="&gt;&gt;checkBoxSkipRecent.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="checkBoxVerifyUseLocal.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="checkBoxVerifyUseLocal.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="checkBoxVerifyUseLocal.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="checkBoxVerifyUseLocal.Location" type="System.Drawing.Point, System.Drawing">
<value>51, 3</value>
</data>
<data name="checkBoxVerifyUseLocal.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 29</value>
</data>
<data name="checkBoxVerifyUseLocal.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="checkBoxVerifyUseLocal.ToolTip" xml:space="preserve">
<value>Use local database</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseLocal.Name" xml:space="preserve">
<value>checkBoxVerifyUseLocal</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseLocal.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseLocal.Parent" xml:space="preserve">
<value>tableLayoutPanelVerifyMode</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseLocal.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="checkBoxVerifyUseCDRepair.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="checkBoxVerifyUseCDRepair.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="checkBoxVerifyUseCDRepair.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="checkBoxVerifyUseCDRepair.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="checkBoxVerifyUseCDRepair.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 29</value>
</data>
<data name="checkBoxVerifyUseCDRepair.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="checkBoxVerifyUseCDRepair.ToolTip" xml:space="preserve">
<value>Use CTDB (CUETools database)</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.Name" xml:space="preserve">
<value>checkBoxVerifyUseCDRepair</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.Parent" xml:space="preserve">
<value>tableLayoutPanelVerifyMode</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanelVerifyMode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelVerifyMode.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 17</value>
</data>
<data name="tableLayoutPanelVerifyMode.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanelVerifyMode.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 110</value>
</data>
<data name="tableLayoutPanelVerifyMode.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.Name" xml:space="preserve">
<value>tableLayoutPanelVerifyMode</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.Parent" xml:space="preserve">
<value>groupBoxMode</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelVerifyMode.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="checkBoxSkipRecent" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="checkBoxVerifyUseLocal" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="checkBoxVerifyUseCDRepair" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,33,33333,Percent,33,33333,Percent,33,33333,Absolute,20" /&gt;&lt;Rows Styles="Percent,32,72727,Percent,67,27273" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanelCUEStyle.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
@@ -336,9 +471,6 @@
<data name="checkBoxUseAccurateRip.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>153, 8</value>
</metadata>
<data name="checkBoxUseAccurateRip.ToolTip" xml:space="preserve">
<value>Use AccurateRip</value>
</data>
@@ -571,7 +703,7 @@
<value>groupBoxMode</value>
</data>
<data name="&gt;&gt;tableLayoutPanelCUEStyle.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="tableLayoutPanelCUEStyle.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="checkBoxUseAccurateRip" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="checkBoxUseFreeDb" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="rbTracks" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="rbEmbedCUE" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="rbSingleFile" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="checkBoxUseMusicBrainz" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,33,33332,Percent,33,33334,Percent,33,33334" /&gt;&lt;Rows Styles="Percent,18,18229,Percent,18,18229,Percent,18,18229,Percent,22,72658,Percent,22,72658" /&gt;&lt;/TableLayoutSettings&gt;</value>
@@ -652,74 +784,8 @@
<value>groupBoxMode</value>
</data>
<data name="&gt;&gt;toolStripCorrectorFormat.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanelVerifyMode.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="checkBoxVerifyUseCDRepair.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="checkBoxVerifyUseCDRepair.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="checkBoxVerifyUseCDRepair.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="checkBoxVerifyUseCDRepair.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="checkBoxVerifyUseCDRepair.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 29</value>
</data>
<data name="checkBoxVerifyUseCDRepair.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.Name" xml:space="preserve">
<value>checkBoxVerifyUseCDRepair</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.Parent" xml:space="preserve">
<value>tableLayoutPanelVerifyMode</value>
</data>
<data name="&gt;&gt;checkBoxVerifyUseCDRepair.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelVerifyMode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelVerifyMode.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 17</value>
</data>
<data name="tableLayoutPanelVerifyMode.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanelVerifyMode.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 110</value>
</data>
<data name="tableLayoutPanelVerifyMode.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanelVerifyMode.ToolTip" xml:space="preserve">
<value>Use CUETools database</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.Name" xml:space="preserve">
<value>tableLayoutPanelVerifyMode</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.Parent" xml:space="preserve">
<value>groupBoxMode</value>
</data>
<data name="&gt;&gt;tableLayoutPanelVerifyMode.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanelVerifyMode.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="checkBoxVerifyUseCDRepair" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,36,11111,Percent,63,88889" /&gt;&lt;Rows Styles="Percent,32,72727,Percent,67,27273" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="groupBoxMode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@@ -1314,6 +1380,12 @@
<data name="toolStripMenuItemInputBrowserDrag.Text" xml:space="preserve">
<value>Drag'n'drop mode</value>
</data>
<data name="toolStripMenuItemLocalDatabase.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="toolStripMenuItemLocalDatabase.Text" xml:space="preserve">
<value>Local database</value>
</data>
<data name="toolStripMenuItemInputBrowserHide.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
@@ -2359,28 +2431,46 @@
<value>False</value>
</data>
<data name="SelectedNodeName.Size" type="System.Drawing.Size, System.Drawing">
<value>205, 22</value>
<value>223, 22</value>
</data>
<data name="SelectedNodeName.Text" xml:space="preserve">
<value>Selected file</value>
</data>
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
<value>202, 6</value>
<value>220, 6</value>
</data>
<data name="setAsMyMusicFolderToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>205, 22</value>
<value>223, 22</value>
</data>
<data name="setAsMyMusicFolderToolStripMenuItem.Text" xml:space="preserve">
<value>Set as My Music folder</value>
</data>
<data name="resetToOriginalLocationToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>205, 22</value>
<value>223, 22</value>
</data>
<data name="resetToOriginalLocationToolStripMenuItem.Text" xml:space="preserve">
<value>Reset to original location</value>
</data>
<data name="editMetadataToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 22</value>
</data>
<data name="editMetadataToolStripMenuItem.Text" xml:space="preserve">
<value>Edit metadata</value>
</data>
<data name="addFolderToLocalDatabaseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 22</value>
</data>
<data name="addFolderToLocalDatabaseToolStripMenuItem.Text" xml:space="preserve">
<value>Add folder to local database</value>
</data>
<data name="removeItemFromDatabaseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 22</value>
</data>
<data name="removeItemFromDatabaseToolStripMenuItem.Text" xml:space="preserve">
<value>Remove item from database</value>
</data>
<data name="contextMenuStripFileTree.Size" type="System.Drawing.Size, System.Drawing">
<value>206, 76</value>
<value>224, 142</value>
</data>
<data name="&gt;&gt;contextMenuStripFileTree.Name" xml:space="preserve">
<value>contextMenuStripFileTree</value>
@@ -2388,11 +2478,14 @@
<data name="&gt;&gt;contextMenuStripFileTree.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="backgroundWorkerAddToLocalDB.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>845, 8</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>29</value>
<value>30</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
@@ -2804,7 +2897,7 @@
<value>700, 538</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>CUETools 2.0.9</value>
<value>CUETools 2.1.1</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel1.Name" xml:space="preserve">
<value>toolStripStatusLabel1</value>
@@ -2896,6 +2989,12 @@
<data name="&gt;&gt;toolStripMenuItemInputBrowserDrag.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItemLocalDatabase.Name" xml:space="preserve">
<value>toolStripMenuItemLocalDatabase</value>
</data>
<data name="&gt;&gt;toolStripMenuItemLocalDatabase.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItemInputBrowserHide.Name" xml:space="preserve">
<value>toolStripMenuItemInputBrowserHide</value>
</data>
@@ -3022,6 +3121,30 @@
<data name="&gt;&gt;resetToOriginalLocationToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;editMetadataToolStripMenuItem.Name" xml:space="preserve">
<value>editMetadataToolStripMenuItem</value>
</data>
<data name="&gt;&gt;editMetadataToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;addFolderToLocalDatabaseToolStripMenuItem.Name" xml:space="preserve">
<value>addFolderToLocalDatabaseToolStripMenuItem</value>
</data>
<data name="&gt;&gt;addFolderToLocalDatabaseToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;removeItemFromDatabaseToolStripMenuItem.Name" xml:space="preserve">
<value>removeItemFromDatabaseToolStripMenuItem</value>
</data>
<data name="&gt;&gt;removeItemFromDatabaseToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;backgroundWorkerAddToLocalDB.Name" xml:space="preserve">
<value>backgroundWorkerAddToLocalDB</value>
</data>
<data name="&gt;&gt;backgroundWorkerAddToLocalDB.Type" xml:space="preserve">
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmCUETools</value>
</data>

View File

@@ -46,6 +46,7 @@ namespace JDP
this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
@@ -181,16 +182,21 @@ namespace JDP
this.pictureBox1.TabStop = false;
this.pictureBox1.DoubleClick += new System.EventHandler(this.pictureBox1_DoubleClick);
//
// backgroundWorker1
//
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
//
// frmChoice
//
this.AcceptButton = this.buttonOk;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tableLayoutPanel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.MaximizeBox = false;
this.Name = "frmChoice";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Load += new System.EventHandler(this.frmChoice_Load);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmChoice_FormClosing);
this.tableLayoutPanel1.ResumeLayout(false);
@@ -219,5 +225,6 @@ namespace JDP
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.ColumnHeader columnHeader3;
private System.Windows.Forms.PictureBox pictureBox1;
private System.ComponentModel.BackgroundWorker backgroundWorker1;
}
}

View File

@@ -20,6 +20,18 @@ namespace JDP
public CUESheet CUE;
private bool freedb, musicbrainz;
public void LookupAlbumInfo(bool freedb, bool musicbrainz, bool cache, bool cue)
{
this.freedb = freedb;
this.musicbrainz = musicbrainz;
var releases = CUE.LookupAlbumInfo(false, false, cache, cue);
this.Choices = releases;
if (freedb || musicbrainz)
backgroundWorker1.RunWorkerAsync(null);
}
private void frmChoice_Load(object sender, EventArgs e)
{
buttonOk.Select();
@@ -117,7 +129,7 @@ namespace JDP
}
}
private CUEMetadataEntry ChosenRelease
public CUEMetadataEntry ChosenRelease
{
get
{
@@ -136,12 +148,15 @@ namespace JDP
private void frmChoice_FormClosing(object sender, FormClosingEventArgs e)
{
if (backgroundWorker1.IsBusy)
{
e.Cancel = true;
return;
}
CUEMetadataEntry ri = ChosenRelease;
if (e.CloseReason != CloseReason.None || DialogResult != DialogResult.OK || ri == null || CUE == null)
return;
CUE.CopyMetadata(ri.metadata);
if (CUE.Config.advanced.CacheMetadata)
ri.metadata.Save();
}
private void AutoResizeTracks()
@@ -282,5 +297,16 @@ namespace JDP
pictureBox1.SizeMode = pictureBox1.SizeMode == PictureBoxSizeMode.Zoom ?
PictureBoxSizeMode.CenterImage : PictureBoxSizeMode.Zoom;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
e.Result = CUE.LookupAlbumInfo(this.freedb, this.musicbrainz, false, false);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
foreach (object i in (e.Result as List<object>))
AddItem(i);
}
}
}

View File

@@ -120,61 +120,6 @@
<data name="button1.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAo
CwAAAk1TRnQBSQFMAgEBBAEAAQwBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8ACgAG6wUA
EAQBAAF6AlELegYABusIAAHvAesB7wTzAe8B6wHvAwAEBAP/AQcB7AP/AewDBAFRAQABEQETAQABDwp6
AwAB7wHrAe8E8wHvAesB7wUAAusB7wbzAe8C6wIAAwQCBwEEAf8BBwHsAf8BBAHsAf8DBAEAAbwD/wET
AQ8JegIAAusB7wbzAe8C6wMAAe8B6wrzAesB7wEAAwQBBwHsAQQCBwHsAf8CBAH/AwQBAAG8BP8BAAl6
AQAB7wHrCvMB6wHvAQAB7wHrDPMB6wHvAwQB7AH/AQQB/wEHAewB/wHsAf8BBwMEAVEBDwHrAgcBvAEA
AREEAAERA3oBAAHrDPMB6wEAAesB7wzzAe8B6wQEAuwCBwHsAf8C7AQEAXoBUQEPAgAB/wEAAQ8B9wL/
AZICEQJ6AesO8wLrAfMDAAHzAQAC8wEAAfMB7wIAAfMB6wYEAgcB7AH/BgQEegEAAf8BAAERBP8BvAEA
AnoB6wHzAesCAAHzAesCAAHrAfMDAAHzAusB8wEAA/MBAALzAQAB8wEAA/MB6xAEBK4BAAH/AgABEwG8
A/8BAAKuAesB8wEAA/MBAALzAQAB8wEAA/MC6wHzAgAC8wQAAfMBAAPzAesQ/wSuAQAB/wEAARIBDwMA
Af8BAAKuAesB8wEAA/MBAALzAQAB8wIAAvMC6wHzAQAD8wEAAvMBAAHzAQAD8wHrAf8BBAEHAf8BBAL/
AwQBBwH/AwQB/wSuAQAB/wEPAQABEQISAQAB/wEAAq4B6wHzAQAD8wEAAvMBAAHzAQAD8wLrAe8DAAHz
Ae8CAAHvAfMB7wIAAe8B6wH/AQQBBwH/AQQC/wEEA/8BBwEEAf8BBwH/BK4BAAL/AZIBEQEAAQ8BAAH/
AQACrgHrAfMB6wIAAfMBAALzAQAB8wMAAfMB6wHvAesM8wHrAe8B/wEEAQcB/wEEAv8BBALsAQQBBwEE
AewCBASuAQABBwP/AbwB6gEAAf8BAAKuAQAB6wzzAesCAAHvAesK8wHrAe8BAAH/AQQB7AH/AgQBBwEE
AQcB7AEEAf8BBAEHAQQBBwSuAREBEwEHBv8BAAKuAQAB7wHrCvMB6wHvAwAC6wHvBvMB7wLrAgAB/wEE
AewB/wMHAf8B7AEHA/8B7AEHAf8FrgERAQABEQGSBP8BAAKuAgAC6wHvBvMB7wLrBQAB7wHrAe8E8wHv
AesB7wMAAf8CBAHsDP8HrgERAQABDwHrAbwB/wEAAq4DAAHvAesB7wTzAe8B6wHvBwAB7wbrAe8EABD/
AQAJrgEPAQABEwERAa4GAAbrBQABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4EA
AfgBHwIAAYABAQH4AR8B4AEHBAAB4AEHAcABAwQAAcABAwGAAQEEAAGAAQEGAAGAAQE2AAGAAQEBgAEB
BAABgAEBAcABAwQAAcABAwHgAQcEAAHgAQcB8AEPAgABgAEBAfgBHws=
</value>
</data>
<data name="Title.Text" xml:space="preserve">
<value>Titel</value>
</data>

View File

@@ -126,7 +126,7 @@
<value>456, 3</value>
</data>
<data name="buttonOk.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 32</value>
<value>110, 28</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonOk.TabIndex" type="System.Int32, mscorlib">
@@ -157,7 +157,7 @@
<value>3, 3</value>
</data>
<data name="listChoices.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 85</value>
<value>569, 114</value>
</data>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
@@ -166,119 +166,115 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAC
GgAAAk1TRnQBSQFMAgEBBgEAAQwBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIB4AAh4BHQEqAj8BNwF3Ah4BHQEq8AACHgEdASkCQgE6AXQC/wHwAf8CQgE6
AXQCHgEdASnoAAIeAR0BKAJGAT4BcQL/AfAB/wLpAdoD/wHxAf8CRgE+AXECHgEdASggAAI2ATIBWQJA
ATcBdgJAATcBdgIvASwBSwQAAi8BLAFLAkABNwF2AkABNwF2AkABNwF2AkABNwF2Ai8BLAFLBAACLwEs
AUsCQAE3AXYCQAE3AXYCNgEyAVmAAAIeAR0BJwJIAUEBbwL/AfAB/wHrAd0BsQH/AfcBwQE4Af8B7QHf
AbMD/wHyAf8CSAFBAW8CHgEdASccAAJFAT0BcgL5AekB/wLzAeMB/wJzAWUBtQI9ATQBeAKLAX0BwwLz
AeMB/wLzAeMB/wLzAeMB/wLzAeMB/wKLAX0BwwI9ATQBeAJzAWUBtQLzAeMB/wL5AekB/wJFAT0BcoAA
AkkBQQFuAv8B8AH/AukB2gH/AecBqwEiAf8B5wGrASIB/wHnAasBIgH/AeoB2wGwA/8B9AH/AkkBQQFu
Ah4BHQEnGAACSAFBAW8C9AHmAf8C6QHaAf8C7wHgAf8C9AHmAf8C7wHgAf8C6QHaAf8C6QHaAf8C6QHa
Af8C6QHaAf8C7wHgAf8C9AHmAf8C7wHgAf8C6QHaAf8C9AHmAf8CSAFBAW+AAAIeAR0BJwJKAUIBbQL/
AfEB/wHnAdcBqwH/AdcBlgENAf8B1wGWAQ0B/wHXAZYBDQH/AegB2AGuA/8B9QH/AkoBQgFtAh4BHQEn
FAACSQFCAW4C9gHoAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHe
Af8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C9gHoAf8CSQFCAW6EAAIdARwBJgJKAUMBbAL/AfIB/wHl
AdQBqQH/Ac0BiQEAAf8BzQGJAQAB/wHNAYkBAAH/AegB1wGvA/8B9wH/AkoBQwFsAh0BHAEmEAACSgFD
AW0C9wHsAf8C7gHjAf8C7gHjAf8C7gHjAf8C7gHjAf8C7gHjAf8C7gHjAf8C7gHjAf8C7gHjAf8C7gHj
Af8C7gHjAf8C7gHjAf8C7gHjAf8C9wHsAf8CSgFDAW2IAAIdARwBJgJKAUMBawL/AfQB/wHnAdYBrAH/
AdEBjgEFAf8B0QGOAQUB/wHRAY4BBQH/AewB2wGzA/8B+AH/AkoBQwFrAh0BHAEmDAACSgFDAWsC+QHv
Af8C8QHoAf8C8QHoAf8C8QHoAf8C8QHoAf8C8QHoAf8DAAH/AVABhQGTAf8BuALLAf8C8QHoAf8C8QHo
Af8C8QHoAf8C8QHoAf8C+QHvAf8CSgFDAWuMAAIdARwBJgJLAUQBawL/AfUB/wHrAdwBswH/Ad8BoQEY
Af8B3wGhARgB/wHfAaEBGAH/AfEB4gG7A/8B+gH/AksBRAFrAx0BJggAAksBRAFqAvoB8wH/AvUB7gH/
AvUB7gH/AvUB7gH/AvUB7gH/AvUB7gH/AXsBsQHAAf8B2QH0Av8BPgGcAasB/wG1AdMB1AH/AvUB7gH/
AvUB7gH/AvUB7gH/AvoB8wH/AksBRAFqkAADHQEmAkwBRQFqAv8B9wH/AfIB5AG7Af8B8AG4AS8B/wHw
AbgBLwH/AfABuAEvAf8C+AH0A/8B+wH/AkwBRQFqAh0BHAElBAACTAFFAWkC/AH3Af8C+AHzAf8C+AHz
Af8C+AHzAf8C+AHzAf8C+AHzAf8B1AHmAecB/wFIAbQBwwH/AXgB5gH3Af8BPwGdAa0B/wG2AdUB1wH/
AvgB8wH/AvgB8wH/AvwB9wH/AkwBRQFplAACHQEcASUCTAFFAWkC/wH4Af8B9wHqAcMB/wH9AckBQAH/
AfkB7AHHAf8C+wH3Af8C/AH5A/8B/AH/AkwBRQFpAh0BHAElAkwBRQFoAv0B+gH/AvsB9wH/AvsB9wH/
AvsB9wH/AvsB9wH/AvsB9wH/AvsB9wH/Ab4B5QHoAf8BSQG1AcUB/wF4AeYB9wH/AUABngGuAf8BuQHY
AdsB/wL7AfcB/wL9AfoB/wJMAUUBaJgAAh0BHAElAkwBRQFoAv8B+gH/AvgB9AH/AvsB9wH/AugB3gH/
AtgByQH/AugB3gP/Af4B/wJMAUUBaAJNAUcBaAL+Af0B/wL9AfsB/wL9AfsB/wL9AfsB/wL9AfsB/wL9
AfsB/wL9AfsB/wL9AfsB/wHAAeYB6wH/AUoBtQHGAf8BeAHmAfcB/wFAAZ4BrwH/Ab4B2AHcAf8C/gH9
Af8CTQFHAWicAAIdARwBJQJNAUYBaAL/AfsB/wL8AfkB/wLLAbsB/wQAAssBvAP/Af4B/wJNAUYBaAJO
AUcBZyT/AcEB6AHuAf8BSgG2AccB/wF4AeYB9wH/A5MB/wPVAf8CTgFHAWegAAIdARwBJQJNAUYBZwL/
AfwB/wLUAcoB/wKvAZ8B/wLUAcsD/wH+Af8CTQFGAWcCOwE3AU0CTgFHAWYCTgFHAWYCTgFHAWYCTgFH
AWYCTgFHAWYCTgFHAWYCTgFHAWYCTgFHAWYCTgFHAWYCTgFHAWYBVQFmAWABjAJeAVgBpwP3Af8CSQFY
AbsCRgFVAXqkAAMcASQCTgFHAWcC/wH+A/8B/gP/Af4F/wJOAUcBZzAAAxsBJAJBAU4BfAKAAv8CJwGM
AcGoAAMcASQCTgFHAWYCTgFHAWYCTgFHAWYCTgFHAWYCOwE4AU00AAImASwBOQItAZUBrwInATQBQIwA
AwIBAwMUARwDMAFMA0QBeQNQAZoDUAGkA1ABmgNEAXkDMAFMAxQBHAMDAQQIAAOWAf8BHgIAAf8BHgIA
Af8BHgIAAf8BHgIAAf8BHgIAAf8BHgIAAf8BHgIAAf8BHgIAAf8BHgIAAf8BHgIAAf8BHgIAAf8BHgIA
Af8BHgIAAf8BHgIAAf8BHgIAAf8EAAFRAcwC/wEeApkB/wEeApkB/wFRAcwC/wFRAcwC/wFRAcwC/wFR
AcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/xAAAwIBAwMUARwDMAFM
A0QBeQNQAZoDUAGkA1ABmgNEAXkDMAFMAxQBHAMDAQQQAAMEAQYDJAE2A1MBsAFjAl4B5QF5AmIB+wGz
AqkB/wF5AmoB+wNgAesDWgHTA1MBrANHAYIDKAE8AwcBCQQAAcwCmQH/AYACAAH/AYACAAH/AYACAAH/
AYACAAH/A+oB/wPqAf8D6gH/AYACAAH/A+oB/wPqAf8D6gH/AYACAAH/AYACAAH/AVECAAH/AR4CAAH/
AR4CmQH/AwAB/wMUAf8DOAH/AwAB/wMHAf8BUQHMAv8BUQHMAv8BUQHMAv8BUQHMAv8BUQHMAv8BUQHM
Av8BUQHMAv8BUQHMAv8BUQHMAv8BUQHMAv8IAAMEAQYDJAE2A1MBsAFjAl4B5QF5AmIB+wGzAqkB/wF5
AmoB+wNgAesDWgHTA1MBrANHAYIDKAE8AwcBCQgAAwIBAwMxAU8DXAHqAc8CtAL/At0C/wLiAv8C6AL/
Au4C/wLzAf8DzwH/A18B8wNYAcYDTAGSAygBPAMDAQQBzAKZAf8BgAIAAf8BgAIAAf8BgAIAAf8D8QH/
AYACAAH/AYACAAH/A/EB/wGAAgAB/wPxAf8BgAIAAf8BgAIAAf8D8QH/AYACAAH/AYACAAH/AR4CAAH/
AwAB/wPMDf8DOAH/AwcB/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFR
AcwC/wFRAcwC/wQAAwIBAwMxAU8DXAHqAc8CtAL/At0C/wLiAv8C6AL/Au4C/wLzAf8DzwH/A18B8wNY
AcYDTAGSAygBPAMDAQQEAAMmATgDbQH3AfUCxwL/AtIC/wLYAv8C3QL/AuIC/wLoAv8C9AX/A/UB/wOE
AfsDWAHGA0cBggMUARwBzAKZAf8BmQEAAR4B/wGAAgAB/wGAAgAF/wGAAgAB/wGAAgAF/wGAAgAF/wGA
AgAB/wGAAgAF/wGAAgAB/wGAAgAB/wEeAgAB/wMAAf8DzBH/AwAB/wFRAcwC/wFRAcwC/wFRAcwC/wFR
AcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wQAAyYBOANtAfcB9QLHAv8C0gL/AtgC/wLd
Av8C4gL/AugC/wL0Bf8D9QH/A4QB+wNYAcYDRwGCAxQBHAMHAQkDXgHdAfUCzQL/As8C/wLNAv8C0gL/
AtgC/wLdAv8C4gL/AvoJ/wP1Af8DXwHzA1MBrAMwAUwBzAKZAf8BmQEAAR4B/wGAAgAB/wGAAgAB/wGA
AgAN/wGAAgAN/wGAAgAB/wGAAgAB/wGAAgAB/wEeAgAB/wEeApkB/wMHAf8DYgH/A8AB/wPAAf8DzAH/
AwAB/wMUAf8DAAH/AwAB/wMAAf8DAAH/AxQB/wFRAcwC/wFRAcwC/wFRAcwC/wMHAQkDXgHdAfUCzQL/
As8C/wLNAv8C0gL/AtgC/wLdAv8C4gL/AvoJ/wP1Af8DXwHzA1MBrAMwAUwDPgFqAcYCsQL/AtkC/wLU
Av8CzwL/As0C/wHUAdsC/wHXAeIC/wHkAeoR/wHSAswB/wNaAdMDQwF3AcwCmQH/AZkBAAEeAf8BgAIA
Af8BgAIAAf8BgAIAAf8BgAIAAf8BgAIABf8BgAIABf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIA
Af8BHgIAAf8BUQHMAv8BHgKZAf8DBwH/AwAB/wMABf8DAAH/AwcB/wGkAqAJ/wOZAf8DFAH/AxQB/wFR
AcwC/wFRAcwC/wM+AWoBxgKxAv8C2QL/AtQC/wLPAv8CzQL/AdQB2wL/AdcB4gL/AeQB6hH/AdICzAH/
A1oB0wNDAXcDVgG2Af8C4wH/AQABGQEaAf8BAAEZARoB/wEAARkBGgL/Ad4B5wH/AQABGQEaAv8B0QHz
Af8BAAEZARoC/wH4Av8BWQJfAf8BAAEZARoB/wFZAl8B/wHMApkB/wFcAlUB6gNOAZQBzAKZAf8BmQEA
AR4B/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAF/wGAAgAF/wGAAgAB/wGAAgAB/wGAAgAB/wGA
AgAB/wGAAgAB/wEeAgAB/wFRAcwC/wFRAcwC/wFRAcwC/wFRAcwC/wMABf8DAAH/AxQR/wPMAf8DAAH/
AVEBzAL/AVEBzAL/A1YBtgH/AuMB/wFZAl8B/wEAARkBGgH/AVkCXwL/Ad4B5wH/AVkCXwH/AQABGQEa
Af8BWQJfAv8B+AL/AQABGQEaAf8BAAEZARoB/wEAARkBGgH/AcwCmQH/AVwCVQHqA04BlANhAeIB/wLn
Af8BAAEZARoC/wLeAv8C4AL/Ae8B/AH/AQABGQEaAv8B4gH8Af8BAAEZARoB/wH8AfAB+QH/AQABGQEa
Af8BzAKZAf8BAAEZARoB/wHMApkB/wFtAmwB9wNRAaEBzAKZAf8BmQEAAR4B/wGAAgAB/wGAAgAB/wGA
AgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGA
AgAB/wEeAgAB/wGZAlEB/wGZAlEB/wGZAlEB/wGZAlEB/wMABf8DAAH/AwAB/wM4Af8DzA3/AwAB/wGZ
AlEB/wGZAlEB/wNhAeIB/wLnAf8BAAEZARoC/wLeAf8BAAEZARoC/wHvAfwB/wEAARkBGgL/AeIB/AH/
AQABGQEaAf8B/AHwAfkB/wEAARkBGgH/AcwCmQH/AcwCmQH/AcwCmQH/AW0CbAH3A1EBoQGeAowB/wHp
Ar4B/wEAARkBGgH/AQABGQEaAf8B+QLWAv8B6QHzAf8BAAEZARoB/wEAARkBGgH/AQABGQEaAf8B+QHo
AewB/wEAARkBGgH/AeYCugH/AeYCvQH/AeYCwAH/AaYClAH/A04BlDT/A/EB/wPqAf8DgAH/AZkCUQH/
AZkCUQH/AZkCUQH/AZkCUQH/AwAF/wMAAf8DQAH/AwcB/wMAAf8DAAH/AwAF/wMAAf8BmQJRAf8BmQJR
Af8BngKMAf8B6QK+Af8BAAEZARoB/wHzAsUB/wH5AtYC/wHpAfMB/wEAARkBGgL/AekB8wH/AQABGQEa
Af8B+QHoAewB/wEAARkBGgH/AQABGQEaAf8B5gK9Af8B5gLAAf8BpgKUAf8DTgGUA10B0gHbAqgB/wEA
ARkBGgH/AeoCtwH/AfMCzQL/Ae4B/AH/AQABGQEaAv8B0gH1Af8BAAEZARoC/wH0AfwB/wEAARkBGgL/
AtgB/wEAARkBGgL/AuIB/wNiAfYDQwF3BP8BmQEAAR4J/wGAAgAN/wGAAgAB/wGAAgAN/wGAAgAB/wGA
AgAB/wOAAf8BmQJRAf8BmQJRAf8BmQJRAf8BmQJRAf8DAAX/AwcB/wMAAf8DFAH/A0AB/wNAAf8DAAX/
AwAB/wGZAlEB/wGZAlEB/wNdAdIB2wKoAf8BAAEZARoB/wHqArcB/wEAARkBGgL/Ae4B/AH/AQABGQEa
Av8B0gH1Af8BAAEZARoC/wH0AfwB/wEAARkBGgL/AtgC/wLdAv8C4gH/A2IB9gNDAXcDVgGxAdUCogH/
AQABGQEaAf8BAAEZARoB/wEAARkBGgL/AfYC/wFZAl8B/wEAARkBGgH/AVkCXwL/AeAB5wH/AVkCXwH/
AQABGQEaAf8BWQJfAv8C3QH/A1oB5AMwAUwE/wGZAQABHgn/AYACAAn/AYACABH/AYACAAH/A/EB/wPq
Af8DgAH/AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/AwAJ/wOZAf8DFAH/AwAB/wMHAf8DAAX/AwAB/wGZ
AlEB/wGZAlEB/wNWAbEB1QKiAf8BWQJfAf8BAAEZARoB/wFZAl8C/wH2Av8BAAEZARoC/wHSAfUB/wEA
ARkBGgL/AeAB5wH/AQABGQEaAf8BAAEZARoB/wEAARkBGgL/At0B/wNaAeQDMAFMAzIBUAHDAr8S/wHs
AfEC/wHbAecC/wHZAd4C/wLUAv8CzwL/As0C/wLSAf8BxgKtAf8DUwGsAxQBGwT/AZkBAAEeCf8BgAIA
Cf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIABf8BgAIAAf8BgAIAAf8BgAIAAf8BHgIAAf8BmQJRAf8BmQJR
Af8BmQJRAf8BmQJRAf8DAAH/A8AN/wPMAf8DSgH/AwAF/wMAAf8BmQJRAf8BmQJRAf8DMgFQAcMCvxL/
AewB8QL/AdsB5wL/AdkB3gL/AtQC/wLPAv8CzQL/AtIB/wHGAq0B/wNTAawDFAEbBAADWgHAA/UK/wL+
Av8C5wL/AuMC/wLeAv8C2QL/AtQC/wLPAf8B9QLHAf8DXwHjAyMBNAMCAQME/wGZAQABHgH/AYACAAX/
AYACAAn/AYACAAn/AYACAAX/AYACAAH/A/EB/wPqAf8BHgIAAf8BmQJRAf8BmQJRAf8BmQJRAf8BmQJR
Af8DFAH/AzgB/wPAGf8DAAH/AZkCUQH/AZkCUQH/BAADWgHAA/UK/wL+Av8C5wL/AuMC/wLeAv8C2QL/
AtQC/wLPAf8B9QLHAf8DXwHjAyMBNAMCAQMEAAMXASADYgHvA/UG/wL4Av8C7AL/AucC/wLjAv8C3gL/
AtkB/wH1As0B/wNtAfcDMAFNAwQBBgQABP8BmQIeCf8BgAIAAf8BgAIACf8BgAIAAf8BgAIADf8BgAIA
Af8BgAIAAf8DhgH/AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/AxQB/wMAAf8DFAH/A5kR/wMA
Af8BmQJRAf8BmQJRAf8EAAMXASADYgHvA/UG/wL4Av8C7AL/AucC/wLjAv8C3gL/AtkB/wH1As0B/wNt
AfcDMAFNAwQBBgwAAxcBIANaAcADxgL/AvcC/wLyAv8C7AL/AucC/wLjAf8BxgKxAf8DXgHQAyQBNgMC
AQMIAAT/AZkCHi3/A/EB/wPqAf8DhgH/AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/
AZkCUQH/AxQB/wMAAf8DBwH/A2IB/wPMBf8DAAH/AZkCUQH/AZkCUQH/CAADFwEgA1oBwAPGAv8C9wL/
AvIC/wLsAv8C5wL/AuMB/wHGArEB/wNeAdADJAE2AwIBAxgAAzIBUANRAaIDXQHSAYwCiQH/A2AB1ANU
AaYDNwFaAwUBBxAACP8BzAKZLf8D8QH/A8AB/wQAAZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/
AZkCUQH/AZkCUQH/AZkCUQH/AZkCUQH/AwcB/wMAAf8DOAH/AxQB/wGZAlEB/xQAAzIBUANRAaIDXQHS
AYwCiQH/A2AB1ANUAaYDNwFaAwUBBxAAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYA
A/8BAAHjA/8EAAHBA/8EAAGAAf8BCAEQBQABfwcAAT8HAAEfBgABgAEPBgABwAEHBgAB4AEDBgAB8AEB
BgAB+AcAAfwHAAH+AQgGAAH/BwAB/wGAAf8B8AQAAf8BwAH/AfgEAAHgAQMCAAGAAQEB4AEDAcABAQQA
AcABAQGABQABgAEAAYAFAAGAQQABgAUAAYABAAGAAQEEAAGAAQEBwAEDBAABwAEDAfABDwIAAYABAQHw
AQ8L
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAy
GQAAAk1TRnQBSQFMAgEBBgEAAQwBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIB4AAx0BKgJDAUIBdwMdASrwAAMdASkCQgFBAXQC/wHwAf8CQgFBAXQDHQEp
6AADHAEoA0ABcQL/AfAB/wLpAdoD/wHxAf8DQAFxAxwBKCAAAzYBWQNCAXYDQgF2AzABSwQAAzABSwNC
AXYDQgF2A0IBdgNCAXYDMAFLBAADMAFLA0IBdgNCAXYDNgFZgAADHAEnA0ABbwL/AfAB/wHrAd0BsQH/
AfcBwQE2Af8B7QHfAbMD/wHyAf8DQAFvAxwBJxwAA0EBcgL5AekB/wLzAeMB/wJeAVsBtQNDAXgCawFn
AcMC8wHjAf8C8wHjAf8C8wHjAf8C8wHjAf8CawFnAcMDQwF4Al4BWwG1AvMB4wH/AvkB6QH/A0EBcoAA
A0ABbgL/AfAB/wLpAdoB/wHnAasBIAH/AecBqwEgAf8B5wGrASAB/wHqAdsBsAP/AfQB/wNAAW4DHAEn
GAADQAFvAvQB5gH/AukB2gH/Au8B4AH/AvQB5gH/Au8B4AH/AukB2gH/AukB2gH/AukB2gH/AukB2gH/
Au8B4AH/AvQB5gH/Au8B4AH/AukB2gH/AvQB5gH/A0ABb4AAAxwBJwM/AW0C/wHxAf8B5wHXAasB/wHX
AZYBCwH/AdcBlgELAf8B1wGWAQsB/wHoAdgBrgP/AfUB/wM/AW0DHAEnFAADQAFuAvYB6AH/AusB3gH/
AusB3gH/AusB3gH/AusB3gH/AusB3gH/AusB3gH/AusB3gH/AusB3gH/AusB3gH/AusB3gH/AusB3gH/
AusB3gH/AvYB6AH/A0ABboQAAxsBJgM/AWwC/wHyAf8B5QHUAakB/wHNAYkBAAH/Ac0BiQEAAf8BzQGJ
AQAB/wHoAdcBrwP/AfcB/wM/AWwDGwEmEAADPwFtAvcB7AH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/
Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/AvcB7AH/Az8BbYgA
AxsBJgM+AWsC/wH0Af8B5wHWAawB/wHRAY4BAwH/AdEBjgEDAf8B0QGOAQMB/wHsAdsBswP/AfgB/wM+
AWsDGwEmDAADPgFrAvkB7wH/AvEB6AH/AvEB6AH/AvEB6AH/AvEB6AH/AvEB6AH/AwAB/wFOAYUBkwH/
AbgCywH/AvEB6AH/AvEB6AH/AvEB6AH/AvEB6AH/AvkB7wH/Az4Ba4wAAxsBJgM+AWsC/wH1Af8B6wHc
AbMB/wHfAaEBFgH/Ad8BoQEWAf8B3wGhARYB/wHxAeIBuwP/AfoB/wM+AWsDGwEmCAADPgFqAvoB8wH/
AvUB7gH/AvUB7gH/AvUB7gH/AvUB7gH/AvUB7gH/AXkBsQHAAf8B2QH0Av8BPAGcAasB/wG1AdMB1AH/
AvUB7gH/AvUB7gH/AvUB7gH/AvoB8wH/Az4BapAAAxsBJgM+AWoC/wH3Af8B8gHkAbsB/wHwAbgBLQH/
AfABuAEtAf8B8AG4AS0B/wL4AfQD/wH7Af8DPgFqAxoBJQQAAz0BaQL8AfcB/wL4AfMB/wL4AfMB/wL4
AfMB/wL4AfMB/wL4AfMB/wHUAeYB5wH/AUYBtAHDAf8BdgHmAfcB/wE9AZ0BrQH/AbYB1QHXAf8C+AHz
Af8C+AHzAf8C/AH3Af8DPQFplAADGgElAz0BaQL/AfgB/wH3AeoBwwH/Af0ByQE+Af8B+QHsAccB/wL7
AfcB/wL8AfkD/wH8Af8DPQFpAxoBJQM9AWgC/QH6Af8C+wH3Af8C+wH3Af8C+wH3Af8C+wH3Af8C+wH3
Af8C+wH3Af8BvgHlAegB/wFHAbUBxQH/AXYB5gH3Af8BPgGeAa4B/wG5AdgB2wH/AvsB9wH/Av0B+gH/
Az0BaJgAAxoBJQM9AWgC/wH6Af8C+AH0Af8C+wH3Af8C6AHeAf8C2AHJAf8C6AHeA/8B/gH/Az0BaAM9
AWgC/gH9Af8C/QH7Af8C/QH7Af8C/QH7Af8C/QH7Af8C/QH7Af8C/QH7Af8C/QH7Af8BwAHmAesB/wFI
AbUBxgH/AXYB5gH3Af8BPgGeAa8B/wG+AdgB3AH/Av4B/QH/Az0BaJwAAxoBJQM9AWgC/wH7Af8C/AH5
Af8CywG7Af8EAALLAbwD/wH+Af8DPQFoAz0BZyT/AcEB6AHuAf8BSAG2AccB/wF2AeYB9wH/A5MB/wPV
Af8DPQFnoAADGgElAz0BZwL/AfwB/wLUAcoB/wKvAZ8B/wLUAcsD/wH+Af8DPQFnAzEBTQM8AWYDPAFm
AzwBZgM8AWYDPAFmAzwBZgM8AWYDPAFmAzwBZgM8AWYDTAGMAlYBVAGnA/cB/wJUAVgBuwJEAUUBeqQA
AxoBJAM9AWcC/wH+A/8B/gP/Af4F/wM9AWcwAAMaASQCRAFFAXwCgAL/AkgBagHBqAADGgEkAzwBZgM8
AWYDPAFmAzwBZgMxAU00AAMmATkCSwFjAa8DKgFAjAADAgEDAxQBHAMwAUwDRAF5A1ABmgNQAaQDUAGa
A0QBeQMwAUwDFAEcAwMBBAgAA5YB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEc
AgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wEcAgAB/wQAAU8BzAL/
ARwCmQH/ARwCmQH/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/
AU8BzAL/AU8BzAL/AU8BzAL/EAADAgEDAxQBHAMwAUwDRAF5A1ABmgNQAaQDUAGaA0QBeQMwAUwDFAEc
AwMBBBAAAwQBBgMkATYDUwGwAWMCXgHlAXMCXwH7AbMCqQH/AXMCZAH7A2AB6wNaAdMDUwGsA0cBggMo
ATwDBwEJBAABzAKZAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8D6gH/A+oB/wPqAf8BgAIAAf8D6gH/
A+oB/wPqAf8BgAIAAf8BgAIAAf8BTwIAAf8BHAIAAf8BHAKZAf8DAAH/AxIB/wM2Af8DAAH/AwUB/wFP
AcwC/wFPAcwC/wFPAcwC/wFPAcwC/wFPAcwC/wFPAcwC/wFPAcwC/wFPAcwC/wFPAcwC/wFPAcwC/wgA
AwQBBgMkATYDUwGwAWMCXgHlAXMCXwH7AbMCqQH/AXMCZAH7A2AB6wNaAdMDUwGsA0cBggMoATwDBwEJ
CAADAgEDAzEBTwNcAeoBzwK0Av8C3QL/AuIC/wLoAv8C7gL/AvMB/wPPAf8DXwHzA1gBxgNMAZIDKAE8
AwMBBAHMApkB/wGAAgAB/wGAAgAB/wGAAgAB/wPxAf8BgAIAAf8BgAIAAf8D8QH/AYACAAH/A/EB/wGA
AgAB/wGAAgAB/wPxAf8BgAIAAf8BgAIAAf8BHAIAAf8DAAH/A8wN/wM2Af8DBQH/AU8BzAL/AU8BzAL/
AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/BAADAgEDAzEBTwNcAeoBzwK0
Av8C3QL/AuIC/wLoAv8C7gL/AvMB/wPPAf8DXwHzA1gBxgNMAZIDKAE8AwMBBAQAAyYBOANtAfcB9QLH
Av8C0gL/AtgC/wLdAv8C4gL/AugC/wL0Bf8D9QH/A4IB+wNYAcYDRwGCAxQBHAHMApkB/wGZAQABHAH/
AYACAAH/AYACAAX/AYACAAH/AYACAAX/AYACAAX/AYACAAH/AYACAAX/AYACAAH/AYACAAH/ARwCAAH/
AwAB/wPMEf8DAAH/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/AU8BzAL/
AU8BzAL/BAADJgE4A20B9wH1AscC/wLSAv8C2AL/At0C/wLiAv8C6AL/AvQF/wP1Af8DggH7A1gBxgNH
AYIDFAEcAwcBCQNeAd0B9QLNAv8CzwL/As0C/wLSAv8C2AL/At0C/wLiAv8C+gn/A/UB/wNfAfMDUwGs
AzABTAHMApkB/wGZAQABHAH/AYACAAH/AYACAAH/AYACAA3/AYACAA3/AYACAAH/AYACAAH/AYACAAH/
ARwCAAH/ARwCmQH/AwUB/wNgAf8DwAH/A8AB/wPMAf8DAAH/AxIB/wMAAf8DAAH/AwAB/wMAAf8DEgH/
AU8BzAL/AU8BzAL/AU8BzAL/AwcBCQNeAd0B9QLNAv8CzwL/As0C/wLSAv8C2AL/At0C/wLiAv8C+gn/
A/UB/wNfAfMDUwGsAzABTAM+AWoBxgKxAv8C2QL/AtQC/wLPAv8CzQL/AdQB2wL/AdcB4gL/AeQB6hH/
AdICzAH/A1oB0wNDAXcBzAKZAf8BmQEAARwB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAF/wGA
AgAF/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wEcAgAB/wFPAcwC/wEcApkB/wMFAf8DAAH/
AwAF/wMAAf8DBQH/AaQCoAn/A5kB/wMSAf8DEgH/AU8BzAL/AU8BzAL/Az4BagHGArEC/wLZAv8C1AL/
As8C/wLNAv8B1AHbAv8B1wHiAv8B5AHqEf8B0gLMAf8DWgHTA0MBdwNWAbYB/wLjAf8BAAEXARgB/wEA
ARcBGAH/AQABFwEYAv8B3gHnAf8BAAEXARgC/wHRAfMB/wEAARcBGAL/AfgC/wFXAl0B/wEAARcBGAH/
AVcCXQH/AcwCmQH/AVwCVQHqA04BlAHMApkB/wGZAQABHAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/
AYACAAX/AYACAAX/AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/ARwCAAH/AU8BzAL/AU8BzAL/
AU8BzAL/AU8BzAL/AwAF/wMAAf8DEhH/A8wB/wMAAf8BTwHMAv8BTwHMAv8DVgG2Af8C4wH/AVcCXQH/
AQABFwEYAf8BVwJdAv8B3gHnAf8BVwJdAf8BAAEXARgB/wFXAl0C/wH4Av8BAAEXARgB/wEAARcBGAH/
AQABFwEYAf8BzAKZAf8BXAJVAeoDTgGUA2EB4gH/AucB/wEAARcBGAL/At4C/wLgAv8B7wH8Af8BAAEX
ARgC/wHiAfwB/wEAARcBGAH/AfwB8AH5Af8BAAEXARgB/wHMApkB/wEAARcBGAH/AcwCmQH/AW0CbAH3
A1EBoQHMApkB/wGZAQABHAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/
AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/ARwCAAH/AZkCTwH/AZkCTwH/AZkCTwH/
AZkCTwH/AwAF/wMAAf8DAAH/AzYB/wPMDf8DAAH/AZkCTwH/AZkCTwH/A2EB4gH/AucB/wEAARcBGAL/
At4B/wEAARcBGAL/Ae8B/AH/AQABFwEYAv8B4gH8Af8BAAEXARgB/wH8AfAB+QH/AQABFwEYAf8BzAKZ
Af8BzAKZAf8BzAKZAf8BbQJsAfcDUQGhAZ4CjAH/AekCvgH/AQABFwEYAf8BAAEXARgB/wH5AtYC/wHp
AfMB/wEAARcBGAH/AQABFwEYAf8BAAEXARgB/wH5AegB7AH/AQABFwEYAf8B5gK6Af8B5gK9Af8B5gLA
Af8BpgKUAf8DTgGUNP8D8QH/A+oB/wOAAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8DAAX/AwAB/wM+
Af8DBQH/AwAB/wMAAf8DAAX/AwAB/wGZAk8B/wGZAk8B/wGeAowB/wHpAr4B/wEAARcBGAH/AfMCxQH/
AfkC1gL/AekB8wH/AQABFwEYAv8B6QHzAf8BAAEXARgB/wH5AegB7AH/AQABFwEYAf8BAAEXARgB/wHm
Ar0B/wHmAsAB/wGmApQB/wNOAZQDXQHSAdsCqAH/AQABFwEYAf8B6gK3Af8B8wLNAv8B7gH8Af8BAAEX
ARgC/wHSAfUB/wEAARcBGAL/AfQB/AH/AQABFwEYAv8C2AH/AQABFwEYAv8C4gH/A2IB9gNDAXcE/wGZ
AQABHAn/AYACAA3/AYACAAH/AYACAA3/AYACAAH/AYACAAH/A4AB/wGZAk8B/wGZAk8B/wGZAk8B/wGZ
Ak8B/wMABf8DBQH/AwAB/wMSAf8DPgH/Az4B/wMABf8DAAH/AZkCTwH/AZkCTwH/A10B0gHbAqgB/wEA
ARcBGAH/AeoCtwH/AQABFwEYAv8B7gH8Af8BAAEXARgC/wHSAfUB/wEAARcBGAL/AfQB/AH/AQABFwEY
Av8C2AL/At0C/wLiAf8DYgH2A0MBdwNWAbEB1QKiAf8BAAEXARgB/wEAARcBGAH/AQABFwEYAv8B9gL/
AVcCXQH/AQABFwEYAf8BVwJdAv8B4AHnAf8BVwJdAf8BAAEXARgB/wFXAl0C/wLdAf8DWgHkAzABTAT/
AZkBAAEcCf8BgAIACf8BgAIAEf8BgAIAAf8D8QH/A+oB/wOAAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJP
Af8DAAn/A5kB/wMSAf8DAAH/AwUB/wMABf8DAAH/AZkCTwH/AZkCTwH/A1YBsQHVAqIB/wFXAl0B/wEA
ARcBGAH/AVcCXQL/AfYC/wEAARcBGAL/AdIB9QH/AQABFwEYAv8B4AHnAf8BAAEXARgB/wEAARcBGAH/
AQABFwEYAv8C3QH/A1oB5AMwAUwDMgFQAcMCvxL/AewB8QL/AdsB5wL/AdkB3gL/AtQC/wLPAv8CzQL/
AtIB/wHGAq0B/wNTAawDFAEbBP8BmQEAARwJ/wGAAgAJ/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAF/wGA
AgAB/wGAAgAB/wGAAgAB/wEcAgAB/wGZAk8B/wGZAk8B/wGZAk8B/wGZAk8B/wMAAf8DwA3/A8wB/wNI
Af8DAAX/AwAB/wGZAk8B/wGZAk8B/wMyAVABwwK/Ev8B7AHxAv8B2wHnAv8B2QHeAv8C1AL/As8C/wLN
Av8C0gH/AcYCrQH/A1MBrAMUARsEAANaAcAD9Qr/Av4C/wLnAv8C4wL/At4C/wLZAv8C1AL/As8B/wH1
AscB/wNfAeMDIwE0AwIBAwT/AZkBAAEcAf8BgAIABf8BgAIACf8BgAIACf8BgAIABf8BgAIAAf8D8QH/
A+oB/wEcAgAB/wGZAk8B/wGZAk8B/wGZAk8B/wGZAk8B/wMSAf8DNgH/A8AZ/wMAAf8BmQJPAf8BmQJP
Af8EAANaAcAD9Qr/Av4C/wLnAv8C4wL/At4C/wLZAv8C1AL/As8B/wH1AscB/wNfAeMDIwE0AwIBAwQA
AxcBIANiAe8D9Qb/AvgC/wLsAv8C5wL/AuMC/wLeAv8C2QH/AfUCzQH/A20B9wMwAU0DBAEGBAAE/wGZ
AhwJ/wGAAgAB/wGAAgAJ/wGAAgAB/wGAAgAN/wGAAgAB/wGAAgAB/wOGAf8BmQJPAf8BmQJPAf8BmQJP
Af8BmQJPAf8BmQJPAf8DEgH/AwAB/wMSAf8DmRH/AwAB/wGZAk8B/wGZAk8B/wQAAxcBIANiAe8D9Qb/
AvgC/wLsAv8C5wL/AuMC/wLeAv8C2QH/AfUCzQH/A20B9wMwAU0DBAEGDAADFwEgA1oBwAPGAv8C9wL/
AvIC/wLsAv8C5wL/AuMB/wHGArEB/wNeAdADJAE2AwIBAwgABP8BmQIcLf8D8QH/A+oB/wOGAf8BmQJP
Af8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8DEgH/AwAB/wMFAf8DYAH/A8wF/wMA
Af8BmQJPAf8BmQJPAf8IAAMXASADWgHAA8YC/wL3Av8C8gL/AuwC/wLnAv8C4wH/AcYCsQH/A14B0AMk
ATYDAgEDGAADMgFQA1EBogNdAdIBjAKJAf8DYAHUA1QBpgM3AVoDBQEHEAAI/wHMApkt/wPxAf8DwAH/
BAABmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8BmQJPAf8DBQH/
AwAB/wM2Af8DEgH/AZkCTwH/FAADMgFQA1EBogNdAdIBjAKJAf8DYAHUA1QBpgM3AVoDBQEHEAABQgFN
AT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/wEAAeMD/wQAAcED/wQAAYAB/wEIARAFAAF/
BwABPwcAAR8GAAGAAQ8GAAHAAQcGAAHgAQMGAAHwAQEGAAH4BwAB/AcAAf4BCAYAAf8HAAH/AYAB/wHw
BAAB/wHAAf8B+AQAAeABAwIAAYABAQHgAQMBwAEBBAABwAEBAYAFAAGAAQABgAUAAYBBAAGABQABgAEA
AYABAQQAAYABAQHAAQMEAAHAAQMB8AEPAgABgAEBAfABDws=
</value>
</data>
<data name="listChoices.TabIndex" type="System.Int32, mscorlib">
@@ -303,7 +299,7 @@
<value>Courier New, 8pt</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 94</value>
<value>3, 123</value>
</data>
<data name="textBox1.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
@@ -312,7 +308,7 @@
<value>Vertical</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 5</value>
<value>569, 3</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@@ -329,6 +325,33 @@
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="listTracks.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="listTracks.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 261</value>
</data>
<data name="listTracks.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 156</value>
</data>
<data name="listTracks.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="listTracks.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;listTracks.Name" xml:space="preserve">
<value>listTracks</value>
</data>
<data name="&gt;&gt;listTracks.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listTracks.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;listTracks.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="Title.DisplayIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
@@ -359,69 +382,9 @@
<data name="Length.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Right</value>
</data>
<data name="listTracks.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="listTracks.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 250</value>
</data>
<data name="listTracks.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 163</value>
</data>
<data name="listTracks.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="listTracks.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;listTracks.Name" xml:space="preserve">
<value>listTracks</value>
</data>
<data name="&gt;&gt;listTracks.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listTracks.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;listTracks.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="columnHeader2.DisplayIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="columnHeader2.Text" xml:space="preserve">
<value>Value</value>
</data>
<data name="columnHeader2.Width" type="System.Int32, mscorlib">
<value>400</value>
</data>
<data name="columnHeader3.DisplayIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="columnHeader3.Text" xml:space="preserve">
<value>Name</value>
</data>
<data name="columnHeader3.Width" type="System.Int32, mscorlib">
<value>120</value>
</data>
<data name="listMetadata.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="listMetadata.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 122</value>
</data>
<data name="listMetadata.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 122</value>
</data>
<data name="listMetadata.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="listMetadata.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;listMetadata.Name" xml:space="preserve">
<value>listMetadata</value>
</data>
@@ -434,24 +397,6 @@
<data name="&gt;&gt;listMetadata.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 419</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 38</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
@@ -467,21 +412,6 @@
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="buttonOk" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,37,59399,Percent,22,93233,Percent,19,17293,Percent,20,11278" /&gt;&lt;Rows Styles="Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="pictureBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 105</value>
</data>
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 11</value>
</data>
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>Zoom</value>
</data>
<data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
<value>31</value>
</data>
<data name="&gt;&gt;pictureBox1.Name" xml:space="preserve">
<value>pictureBox1</value>
</data>
@@ -522,8 +452,116 @@
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="listMetadata" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel2" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="textBox1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="listTracks" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="listChoices" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="pictureBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Percent,19,85646,Percent,2,392344,Percent,3,827751,Percent,27,7512,Percent,36,60287,Percent,9,035593" /&gt;&lt;/TableLayoutSettings&gt;</value>
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="listMetadata" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel2" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="textBox1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="listTracks" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="listChoices" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="pictureBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,120,Percent,5,Percent,5,Absolute,120,Percent,90,Absolute,40" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="listMetadata.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="listMetadata.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 141</value>
</data>
<data name="listMetadata.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 114</value>
</data>
<data name="listMetadata.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="listMetadata.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;listMetadata.Name" xml:space="preserve">
<value>listMetadata</value>
</data>
<data name="&gt;&gt;listMetadata.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listMetadata.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;listMetadata.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="columnHeader2.DisplayIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="columnHeader2.Text" xml:space="preserve">
<value>Value</value>
</data>
<data name="columnHeader2.Width" type="System.Int32, mscorlib">
<value>400</value>
</data>
<data name="columnHeader3.DisplayIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="columnHeader3.Text" xml:space="preserve">
<value>Name</value>
</data>
<data name="columnHeader3.Width" type="System.Int32, mscorlib">
<value>120</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 423</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 34</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="buttonOk" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,37,59399,Percent,22,93233,Percent,19,17293,Percent,20,11278" /&gt;&lt;Rows Styles="Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="pictureBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 132</value>
</data>
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 3</value>
</data>
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>Zoom</value>
</data>
<data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
<value>31</value>
</data>
<data name="&gt;&gt;pictureBox1.Name" xml:space="preserve">
<value>pictureBox1</value>
</data>
<data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pictureBox1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>127, 17</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@@ -536,6 +574,9 @@
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>575, 460</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>591, 496</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
@@ -590,6 +631,12 @@
<data name="&gt;&gt;columnHeader3.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;backgroundWorker1.Name" xml:space="preserve">
<value>backgroundWorker1</value>
</data>
<data name="&gt;&gt;backgroundWorker1.Type" xml:space="preserve">
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmChoice</value>
</data>

View File

@@ -85,16 +85,16 @@ int CNNFilter::Decompress(int nInput)
int nDotProduct;
if (m_bMMXAvailable)
{
nDotProduct = CalculateDotProduct(&m_rbInput[-m_nOrder], &m_paryM[0], m_nOrder);
else
nDotProduct = CalculateDotProductNoMMX(&m_rbInput[-m_nOrder], &m_paryM[0], m_nOrder);
// adapt
if (m_bMMXAvailable)
Adapt(&m_paryM[0], &m_rbDeltaM[-m_nOrder], -nInput, m_nOrder);
}
else
{
nDotProduct = CalculateDotProductNoMMX(&m_rbInput[-m_nOrder], &m_paryM[0], m_nOrder);
AdaptNoMMX(&m_paryM[0], &m_rbDeltaM[-m_nOrder], nInput, m_nOrder);
}
// store the output value
int nOutput = nInput + ((nDotProduct + (1 << (m_nShift - 1))) >> m_nShift);

View File

@@ -253,6 +253,15 @@ void CUnBitArray::FlushState(UNBIT_ARRAY_STATE & BitArrayState)
void CUnBitArray::FlushBitArray()
{
// G.S.C.: Fixing a bug here. There was no check here for the buffer boundary.
// nMod is how much we will skip in AdvanceToByteBoundary + ignoring the first byte.
int nMod = m_nCurrentBitIndex % 8;
if (nMod != 0) { nMod = 8 - nMod; }
nMod += 8;
if ((m_nCurrentBitIndex + nMod) >= m_nBits)
FillBitArray();
// G.S.C.: end
AdvanceToByteBoundary();
m_nCurrentBitIndex += 8; // ignore the first byte... (slows compression too much to not output this dummy byte)
m_RangeCoderInfo.buffer = GetC();