﻿//------------------------------------------------------------------------------
// <autogenerated>
//     This code was generated by a tool.
//     Runtime Version:2.0.40607.42
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------

namespace LzmaAlone.Properties
{
	public partial class Settings : System.Configuration.ApplicationSettingsBase
	{
		private static Settings m_Value;

		private static object m_SyncObject = new object();

		public static Settings Value
		{
			get
			{
				if ((Settings.m_Value == null))
				{
					System.Threading.Monitor.Enter(Settings.m_SyncObject);
					if ((Settings.m_Value == null))
					{
						try
						{
							Settings.m_Value = new Settings();
						}
						finally
						{
							System.Threading.Monitor.Exit(Settings.m_SyncObject);
						}
					}
				}
				return Settings.m_Value;
			}
		}
	}
}
