context: // ===================================================================================================
  //                           _  __     _ _
  //                          | |/ /__ _| | |_ _  _ _ _ __ _
  //                          | ' </ _` | |  _| || | '_/ _` |
  //                          |_|\_\__,_|_|\__|\_,_|_| \__,_|
  //
  // This file is part of the Kaltura Collaborative Media Suite which allows users
  // to do with audio, video, and animation what Wiki platforms allow them to do with
  // text.
  //
  // Copyright (C) 2006-2022  Kaltura Inc.
  //
  // This program is free software: you can redistribute it and/or modify
  // it under the terms of the GNU Affero General Public License as
  // published by the Free Software Foundation, either version 3 of the
  // License, or (at your option) any later version.
  //
  // This program is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU Affero General Public License for more details.
  //
  // You should have received a copy of the GNU Affero General Public License
  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
  //
  // @ignore
  // ===================================================================================================
  using System;
  using System.Xml;
  using System.Collections.Generic;
  using Kaltura.Enums;
  using Kaltura.Request;
  using Newtonsoft.Json;
  using Newtonsoft.Json.Linq;
  
  namespace Kaltura.Types
  {
  	public class StatsEvent : ObjectBase
  	{
  		#region Constants
  		public const string CLIENT_VER = "clientVer";
  		public const string EVENT_TYPE = "eventType";
  		public const string EVENT_TIMESTAMP = "eventTimestamp";
  		public const string SESSION_ID = "sessionId";
  		public const string PARTNER_ID = "partnerId";
  		public const string ENTRY_ID = "entryId";
  		public const string UNIQUE_VIEWER = "uniqueViewer";
  		public const string WIDGET_ID = "widgetId";
  		public const string UICONF_ID = "uiconfId";
  		public const string USER_ID = "userId";
  		public const string CURRENT_POINT = "currentPoint";
  		public const string DURATION = "duration";
  		public const string USER_IP = "userIp";
  		public const string PROCESS_DURATION = "processDuration";
  		public const string CONTROL_ID = "controlId";
  		public const string SEEK = "seek";
  		public const string NEW_POINT = "newPoint";
  		public const string REFERRER = "referrer";
  		public const string IS_FIRST_IN_SESSION = "isFirstInSession";
  		public const string APPLICATION_ID = "applicationId";
  		public const string CONTEXT_ID = "contextId";
  		public const string FEATURE_TYPE = "featureType";
  		#endregion
  
  		#region Private Fields
  		private string _ClientVer = null;
  		private StatsEventType _EventType = (StatsEventType)Int32.MinValue;
  		private double _EventTimestamp = Double.MinValue;
  		private string _SessionId = null;
  		private int _PartnerId = Int32.MinValue;
  		private string _EntryId = null;
  		private string _UniqueViewer = null;
  		private string _WidgetId = null;
  		private int _UiconfId = Int32.MinValue;
  		private string _UserId = null;
  		private int _CurrentPoint = Int32.MinValue;
  		private int _Duration = Int32.MinValue;
  		private string _UserIp = null;
  		private int _ProcessDuration = Int32.MinValue;
  		private string _ControlId = null;
  		private bool? _Seek = null;
  		private int _NewPoint = Int32.MinValue;
  		private string _Referrer = null;
  		private bool? _IsFirstInSession = null;
  		private string _ApplicationId = null;
  		private int _ContextId = Int32.MinValue;
  		private StatsFeatureType _FeatureType = (StatsFeatureType)Int32.MinValue;
  		#endregion
  
  		#region Properties
  		/// <summary>
  		/// Use ClientVerAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string ClientVer
  		{
  			get { return _ClientVer; }
  			set 
  			{ 
  				_ClientVer = value;
  				OnPropertyChanged("ClientVer");
  			}
  		}
  		/// <summary>
  		/// Use EventTypeAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public StatsEventType EventType
  		{
  			get { return _EventType; }
  			set 
  			{ 
  				_EventType = value;
  				OnPropertyChanged("EventType");
  			}
  		}
  		/// <summary>
  		/// Use EventTimestampAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public double EventTimestamp
  		{
  			get { return _EventTimestamp; }
  			set 
  			{ 
  				_EventTimestamp = value;
  				OnPropertyChanged("EventTimestamp");
  			}
  		}
  		/// <summary>
  		/// Use SessionIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string SessionId
  		{
  			get { return _SessionId; }
  			set 
  			{ 
  				_SessionId = value;
  				OnPropertyChanged("SessionId");
  			}
  		}
  		/// <summary>
  		/// Use PartnerIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int PartnerId
  		{
  			get { return _PartnerId; }
  			set 
  			{ 
  				_PartnerId = value;
  				OnPropertyChanged("PartnerId");
  			}
  		}
  		/// <summary>
  		/// Use EntryIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string EntryId
  		{
  			get { return _EntryId; }
  			set 
  			{ 
  				_EntryId = value;
  				OnPropertyChanged("EntryId");
  			}
  		}
  		/// <summary>
  		/// Use UniqueViewerAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string UniqueViewer
  		{
  			get { return _UniqueViewer; }
  			set 
  			{ 
  				_UniqueViewer = value;
  				OnPropertyChanged("UniqueViewer");
  			}
  		}
  		/// <summary>
  		/// Use WidgetIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string WidgetId
  		{
  			get { return _WidgetId; }
  			set 
  			{ 
  				_WidgetId = value;
  				OnPropertyChanged("WidgetId");
  			}
  		}
  		/// <summary>
  		/// Use UiconfIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int UiconfId
  		{
  			get { return _UiconfId; }
  			set 
  			{ 
  				_UiconfId = value;
  				OnPropertyChanged("UiconfId");
  			}
  		}
  		/// <summary>
  		/// Use UserIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string UserId
  		{
  			get { return _UserId; }
  			set 
  			{ 
  				_UserId = value;
  				OnPropertyChanged("UserId");
  			}
  		}
  		/// <summary>
  		/// Use CurrentPointAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int CurrentPoint
  		{
  			get { return _CurrentPoint; }
  			set 
  			{ 
  				_CurrentPoint = value;
  				OnPropertyChanged("CurrentPoint");
  			}
  		}
  		/// <summary>
  		/// Use DurationAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int Duration
  		{
  			get { return _Duration; }
  			set 
  			{ 
  				_Duration = value;
  				OnPropertyChanged("Duration");
  			}
  		}
  		/// <summary>
  		/// Use UserIpAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string UserIp
  		{
  			get { return _UserIp; }
  			private set 
  			{ 
  				_UserIp = value;
  				OnPropertyChanged("UserIp");
  			}
  		}
  		/// <summary>
  		/// Use ProcessDurationAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int ProcessDuration
  		{
  			get { return _ProcessDuration; }
  			set 
  			{ 
  				_ProcessDuration = value;
  				OnPropertyChanged("ProcessDuration");
  			}
  		}
  		/// <summary>
  		/// Use ControlIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string ControlId
  		{
  
gt: 			get { return _ControlId; }