document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. Public Class TBitArray
  2.     \'Byte array used to store bits
  3.     Private BA As Byte() = {}
  4.     \'Actual size of bit array (number of elements)
  5.     Private _Length As Integer = 0
  6.     \'Bit value lookup table
  7.     Private Shared ReadOnly Table(,) As Byte =
  8.         {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 1, 1},
  9.          {0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 1}, {0, 0, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 1, 1, 1},
  10.          {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {0, 0, 0, 0, 1, 0, 1, 0}, {0, 0, 0, 0, 1, 0, 1, 1},
  11.          {0, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 1, 1, 0, 1}, {0, 0, 0, 0, 1, 1, 1, 0}, {0, 0, 0, 0, 1, 1, 1, 1},
  12.          {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 1, 1},
  13.          {0, 0, 0, 1, 0, 1, 0, 0}, {0, 0, 0, 1, 0, 1, 0, 1}, {0, 0, 0, 1, 0, 1, 1, 0}, {0, 0, 0, 1, 0, 1, 1, 1},
  14.          {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 1}, {0, 0, 0, 1, 1, 0, 1, 0}, {0, 0, 0, 1, 1, 0, 1, 1},
  15.          {0, 0, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 0, 1}, {0, 0, 0, 1, 1, 1, 1, 0}, {0, 0, 0, 1, 1, 1, 1, 1},
  16.          {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 1}, {0, 0, 1, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 1, 1},
  17.          {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 1}, {0, 0, 1, 0, 0, 1, 1, 0}, {0, 0, 1, 0, 0, 1, 1, 1},
  18.          {0, 0, 1, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 1, 0, 0, 1}, {0, 0, 1, 0, 1, 0, 1, 0}, {0, 0, 1, 0, 1, 0, 1, 1},
  19.          {0, 0, 1, 0, 1, 1, 0, 0}, {0, 0, 1, 0, 1, 1, 0, 1}, {0, 0, 1, 0, 1, 1, 1, 0}, {0, 0, 1, 0, 1, 1, 1, 1},
  20.          {0, 0, 1, 1, 0, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1}, {0, 0, 1, 1, 0, 0, 1, 0}, {0, 0, 1, 1, 0, 0, 1, 1},
  21.          {0, 0, 1, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 0, 1, 0, 1}, {0, 0, 1, 1, 0, 1, 1, 0}, {0, 0, 1, 1, 0, 1, 1, 1},
  22.          {0, 0, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 0, 0, 1}, {0, 0, 1, 1, 1, 0, 1, 0}, {0, 0, 1, 1, 1, 0, 1, 1},
  23.          {0, 0, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 0, 1}, {0, 0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1},
  24.          {0, 1, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {0, 1, 0, 0, 0, 0, 1, 0}, {0, 1, 0, 0, 0, 0, 1, 1},
  25.          {0, 1, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 1}, {0, 1, 0, 0, 0, 1, 1, 0}, {0, 1, 0, 0, 0, 1, 1, 1},
  26.          {0, 1, 0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {0, 1, 0, 0, 1, 0, 1, 0}, {0, 1, 0, 0, 1, 0, 1, 1},
  27.          {0, 1, 0, 0, 1, 1, 0, 0}, {0, 1, 0, 0, 1, 1, 0, 1}, {0, 1, 0, 0, 1, 1, 1, 0}, {0, 1, 0, 0, 1, 1, 1, 1},
  28.          {0, 1, 0, 1, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 0, 0, 1}, {0, 1, 0, 1, 0, 0, 1, 0}, {0, 1, 0, 1, 0, 0, 1, 1},
  29.          {0, 1, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 1}, {0, 1, 0, 1, 0, 1, 1, 0}, {0, 1, 0, 1, 0, 1, 1, 1},
  30.          {0, 1, 0, 1, 1, 0, 0, 0}, {0, 1, 0, 1, 1, 0, 0, 1}, {0, 1, 0, 1, 1, 0, 1, 0}, {0, 1, 0, 1, 1, 0, 1, 1},
  31.          {0, 1, 0, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 1, 1, 0, 1}, {0, 1, 0, 1, 1, 1, 1, 0}, {0, 1, 0, 1, 1, 1, 1, 1},
  32.          {0, 1, 1, 0, 0, 0, 0, 0}, {0, 1, 1, 0, 0, 0, 0, 1}, {0, 1, 1, 0, 0, 0, 1, 0}, {0, 1, 1, 0, 0, 0, 1, 1},
  33.          {0, 1, 1, 0, 0, 1, 0, 0}, {0, 1, 1, 0, 0, 1, 0, 1}, {0, 1, 1, 0, 0, 1, 1, 0}, {0, 1, 1, 0, 0, 1, 1, 1},
  34.          {0, 1, 1, 0, 1, 0, 0, 0}, {0, 1, 1, 0, 1, 0, 0, 1}, {0, 1, 1, 0, 1, 0, 1, 0}, {0, 1, 1, 0, 1, 0, 1, 1},
  35.          {0, 1, 1, 0, 1, 1, 0, 0}, {0, 1, 1, 0, 1, 1, 0, 1}, {0, 1, 1, 0, 1, 1, 1, 0}, {0, 1, 1, 0, 1, 1, 1, 1},
  36.          {0, 1, 1, 1, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 1}, {0, 1, 1, 1, 0, 0, 1, 0}, {0, 1, 1, 1, 0, 0, 1, 1},
  37.          {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 1}, {0, 1, 1, 1, 0, 1, 1, 0}, {0, 1, 1, 1, 0, 1, 1, 1},
  38.          {0, 1, 1, 1, 1, 0, 0, 0}, {0, 1, 1, 1, 1, 0, 0, 1}, {0, 1, 1, 1, 1, 0, 1, 0}, {0, 1, 1, 1, 1, 0, 1, 1},
  39.          {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 1}, {0, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1},
  40.          {1, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 1, 1},
  41.          {1, 0, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 0, 0, 1, 1, 0}, {1, 0, 0, 0, 0, 1, 1, 1},
  42.          {1, 0, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 1, 0}, {1, 0, 0, 0, 1, 0, 1, 1},
  43.          {1, 0, 0, 0, 1, 1, 0, 0}, {1, 0, 0, 0, 1, 1, 0, 1}, {1, 0, 0, 0, 1, 1, 1, 0}, {1, 0, 0, 0, 1, 1, 1, 1},
  44.          {1, 0, 0, 1, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {1, 0, 0, 1, 0, 0, 1, 1},
  45.          {1, 0, 0, 1, 0, 1, 0, 0}, {1, 0, 0, 1, 0, 1, 0, 1}, {1, 0, 0, 1, 0, 1, 1, 0}, {1, 0, 0, 1, 0, 1, 1, 1},
  46.          {1, 0, 0, 1, 1, 0, 0, 0}, {1, 0, 0, 1, 1, 0, 0, 1}, {1, 0, 0, 1, 1, 0, 1, 0}, {1, 0, 0, 1, 1, 0, 1, 1},
  47.          {1, 0, 0, 1, 1, 1, 0, 0}, {1, 0, 0, 1, 1, 1, 0, 1}, {1, 0, 0, 1, 1, 1, 1, 0}, {1, 0, 0, 1, 1, 1, 1, 1},
  48.          {1, 0, 1, 0, 0, 0, 0, 0}, {1, 0, 1, 0, 0, 0, 0, 1}, {1, 0, 1, 0, 0, 0, 1, 0}, {1, 0, 1, 0, 0, 0, 1, 1},
  49.          {1, 0, 1, 0, 0, 1, 0, 0}, {1, 0, 1, 0, 0, 1, 0, 1}, {1, 0, 1, 0, 0, 1, 1, 0}, {1, 0, 1, 0, 0, 1, 1, 1},
  50.          {1, 0, 1, 0, 1, 0, 0, 0}, {1, 0, 1, 0, 1, 0, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 0}, {1, 0, 1, 0, 1, 0, 1, 1},
  51.          {1, 0, 1, 0, 1, 1, 0, 0}, {1, 0, 1, 0, 1, 1, 0, 1}, {1, 0, 1, 0, 1, 1, 1, 0}, {1, 0, 1, 0, 1, 1, 1, 1},
  52.          {1, 0, 1, 1, 0, 0, 0, 0}, {1, 0, 1, 1, 0, 0, 0, 1}, {1, 0, 1, 1, 0, 0, 1, 0}, {1, 0, 1, 1, 0, 0, 1, 1},
  53.          {1, 0, 1, 1, 0, 1, 0, 0}, {1, 0, 1, 1, 0, 1, 0, 1}, {1, 0, 1, 1, 0, 1, 1, 0}, {1, 0, 1, 1, 0, 1, 1, 1},
  54.          {1, 0, 1, 1, 1, 0, 0, 0}, {1, 0, 1, 1, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 1, 0}, {1, 0, 1, 1, 1, 0, 1, 1},
  55.          {1, 0, 1, 1, 1, 1, 0, 0}, {1, 0, 1, 1, 1, 1, 0, 1}, {1, 0, 1, 1, 1, 1, 1, 0}, {1, 0, 1, 1, 1, 1, 1, 1},
  56.          {1, 1, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 0, 0, 0, 1}, {1, 1, 0, 0, 0, 0, 1, 0}, {1, 1, 0, 0, 0, 0, 1, 1},
  57.          {1, 1, 0, 0, 0, 1, 0, 0}, {1, 1, 0, 0, 0, 1, 0, 1}, {1, 1, 0, 0, 0, 1, 1, 0}, {1, 1, 0, 0, 0, 1, 1, 1},
  58.          {1, 1, 0, 0, 1, 0, 0, 0}, {1, 1, 0, 0, 1, 0, 0, 1}, {1, 1, 0, 0, 1, 0, 1, 0}, {1, 1, 0, 0, 1, 0, 1, 1},
  59.          {1, 1, 0, 0, 1, 1, 0, 0}, {1, 1, 0, 0, 1, 1, 0, 1}, {1, 1, 0, 0, 1, 1, 1, 0}, {1, 1, 0, 0, 1, 1, 1, 1},
  60.          {1, 1, 0, 1, 0, 0, 0, 0}, {1, 1, 0, 1, 0, 0, 0, 1}, {1, 1, 0, 1, 0, 0, 1, 0}, {1, 1, 0, 1, 0, 0, 1, 1},
  61.          {1, 1, 0, 1, 0, 1, 0, 0}, {1, 1, 0, 1, 0, 1, 0, 1}, {1, 1, 0, 1, 0, 1, 1, 0}, {1, 1, 0, 1, 0, 1, 1, 1},
  62.          {1, 1, 0, 1, 1, 0, 0, 0}, {1, 1, 0, 1, 1, 0, 0, 1}, {1, 1, 0, 1, 1, 0, 1, 0}, {1, 1, 0, 1, 1, 0, 1, 1},
  63.          {1, 1, 0, 1, 1, 1, 0, 0}, {1, 1, 0, 1, 1, 1, 0, 1}, {1, 1, 0, 1, 1, 1, 1, 0}, {1, 1, 0, 1, 1, 1, 1, 1},
  64.          {1, 1, 1, 0, 0, 0, 0, 0}, {1, 1, 1, 0, 0, 0, 0, 1}, {1, 1, 1, 0, 0, 0, 1, 0}, {1, 1, 1, 0, 0, 0, 1, 1},
  65.          {1, 1, 1, 0, 0, 1, 0, 0}, {1, 1, 1, 0, 0, 1, 0, 1}, {1, 1, 1, 0, 0, 1, 1, 0}, {1, 1, 1, 0, 0, 1, 1, 1},
  66.          {1, 1, 1, 0, 1, 0, 0, 0}, {1, 1, 1, 0, 1, 0, 0, 1}, {1, 1, 1, 0, 1, 0, 1, 0}, {1, 1, 1, 0, 1, 0, 1, 1},
  67.          {1, 1, 1, 0, 1, 1, 0, 0}, {1, 1, 1, 0, 1, 1, 0, 1}, {1, 1, 1, 0, 1, 1, 1, 0}, {1, 1, 1, 0, 1, 1, 1, 1},
  68.          {1, 1, 1, 1, 0, 0, 0, 0}, {1, 1, 1, 1, 0, 0, 0, 1}, {1, 1, 1, 1, 0, 0, 1, 0}, {1, 1, 1, 1, 0, 0, 1, 1},
  69.          {1, 1, 1, 1, 0, 1, 0, 0}, {1, 1, 1, 1, 0, 1, 0, 1}, {1, 1, 1, 1, 0, 1, 1, 0}, {1, 1, 1, 1, 0, 1, 1, 1},
  70.          {1, 1, 1, 1, 1, 0, 0, 0}, {1, 1, 1, 1, 1, 0, 0, 1}, {1, 1, 1, 1, 1, 0, 1, 0}, {1, 1, 1, 1, 1, 0, 1, 1},
  71.          {1, 1, 1, 1, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 1, 0, 1}, {1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1, 1}}
  72.     \'Gets or sets a bit at a specified index
  73.     Default Property Bit(ByVal index As Integer) As Boolean
  74.         Get
  75.             Dim _byte As Integer = Math.Floor(index / 8)
  76.             Dim _pos As Byte = index Mod 8
  77.             If index > -1 AndAlso index < _Length AndAlso _byte < BA.Length Then Return Table(BA(_byte), _pos) Else _
  78.                 Throw New ArgumentOutOfRangeException(index)
  79.         End Get
  80.         Set(ByVal value As Boolean)
  81.             Dim _byte As Integer = Math.Floor(index / 8)
  82.             Dim _pos As Byte = index Mod 8
  83.             Dim bool As Boolean = Table(BA(_byte), _pos)
  84.             If index > -1 AndAlso index < _Length AndAlso _byte < BA.Length Then
  85.                 If value Then
  86.                     If Not bool Then
  87.                         Select Case _pos
  88.                             Case 0 : BA(_byte) += 128
  89.                             Case 1 : BA(_byte) += 64
  90.                             Case 2 : BA(_byte) += 32
  91.                             Case 3 : BA(_byte) += 16
  92.                             Case 4 : BA(_byte) += 8
  93.                             Case 5 : BA(_byte) += 4
  94.                             Case 6 : BA(_byte) += 2
  95.                             Case 7 : BA(_byte) += 1
  96.                         End Select
  97.                     End If
  98.                 Else
  99.                     If bool Then
  100.                         Select Case _pos
  101.                             Case 0 : BA(_byte) -= 128
  102.                             Case 1 : BA(_byte) -= 64
  103.                             Case 2 : BA(_byte) -= 32
  104.                             Case 3 : BA(_byte) -= 16
  105.                             Case 4 : BA(_byte) -= 8
  106.                             Case 5 : BA(_byte) -= 4
  107.                             Case 6 : BA(_byte) -= 2
  108.                             Case 7 : BA(_byte) -= 1
  109.                         End Select
  110.                     End If
  111.                 End If
  112.             Else
  113.                 Throw New ArgumentOutOfRangeException(index)
  114.             End If
  115.         End Set
  116.     End Property
  117.     \'Gets or Sets the byte at specified index
  118.     Public Property ByteElements(ByVal index As Integer) As Byte
  119.         Get
  120.             If index > -1 AndAlso index < BA.Length Then Return BA(index) Else _
  121.                 Throw New ArgumentOutOfRangeException(index)
  122.         End Get
  123.         Set(value As Byte)
  124.             If index > -1 AndAlso index < BA.Length Then BA(index) = value Else _
  125.                 Throw New ArgumentOutOfRangeException(index)
  126.         End Set
  127.     End Property
  128.     \'Get length of bit array
  129.     Public ReadOnly Property Length() As Integer
  130.         Get
  131.             Return _Length
  132.         End Get
  133.     End Property
  134.     \'Get number of bytes allocated to the byte array used for the bit array
  135.     Public ReadOnly Property Size() As Integer
  136.         Get
  137.             Return BA.Length
  138.         End Get
  139.     End Property
  140.     \'Resizes the bit array
  141.     Public Sub Resize(ByVal Size As Integer, Optional ByVal Preserve As Boolean = False)
  142.         If Size > -1 Then
  143.             If Preserve Then ReDim Preserve BA(Math.Floor(Size / 8)) Else ReDim BA(Math.Floor(Size / 8))
  144.             _Length = Size + 1
  145.         End If
  146.     End Sub
  147.     \'Returns the Byte Array used to store the bits
  148.     Public Function GetByteArray() As Byte()
  149.         Return BA
  150.     End Function
  151.     \'Returns the BitArray as a string
  152.     Public Overrides Function ToString() As String
  153.         Dim str(_Length - 1) As Char
  154.         For i = 0 To _Length - 1
  155.             If Bit(i) Then str(i) = "1" Else str(i) = "0"
  156.         Next
  157.         Return str
  158.     End Function
  159.     \'Sets the bits starting from the beginning
  160.     Public Sub SetBits(ByRef Values() As Boolean)
  161.         If Values.Length > _Length Then
  162.             Throw New ArgumentOutOfRangeException(Values.Length)
  163.         Else
  164.             For i = 0 To Values.Length - 1 : Bit(i) = Values(i) : Next
  165.         End If
  166.     End Sub
  167.     \'Sets the bits starting from the given index
  168.     Public Sub SetBits(ByVal index As Integer, ByRef Values() As Boolean)
  169.         If Values.Length + index > _Length Then
  170.             Throw New ArgumentOutOfRangeException(Values.Length)
  171.         Else
  172.             For i = 0 To Values.Length - 1 : Bit(index) = Values(i) : index += 1 : Next
  173.         End If
  174.     End Sub
  175.     \'Sets the bits starting from the given index for a given length
  176.     Public Sub SetBits(ByVal index As Integer, ByVal length As Integer, ByRef Values() As Boolean)
  177.         Dim l As Integer = length + index
  178.         If index > _Length - 1 OrElse l > _Length Then
  179.             Throw New ArgumentOutOfRangeException(l)
  180.         Else
  181.             For i = 0 To length - 1 : Bit(index) = Values(i) : index += 1 : Next
  182.         End If
  183.     End Sub
  184.     \'Gets the entire array as a boolean array representing bits
  185.     Public Function GetBits() As Boolean()
  186.         Dim l As Integer = _Length - 1
  187.         Dim bools(l) As Boolean
  188.         For i = 0 To l : bools(i) = Bit(i) : Next
  189.         Return bools
  190.     End Function
  191.     \'Gets a range of bits from the beginning of the array
  192.     Public Function GetBits(ByVal length As Integer) As Boolean()
  193.         If length > _Length Then
  194.             Throw New ArgumentOutOfRangeException(length)
  195.         Else
  196.             Dim l As Integer = length - 1
  197.             Dim bools(l) As Boolean
  198.             For i = 0 To l : bools(i) = Bit(i) : Next
  199.             Return bools
  200.         End If
  201.     End Function
  202.     \'Returns boolean array representation of an integer
  203.     Public Shared Function ConvertToBinaryArray(ByVal Value As Integer) As Boolean()
  204.         If Value = 0 Then Return {False}
  205.         Dim bools() As Boolean = {}, pow As Integer = 0, index As Integer = 1
  206.         While True
  207.             If 2 ^ pow > Value Then
  208.                 pow -= 1
  209.                 ReDim bools(pow)
  210.                 bools(0) = True
  211.                 Value -= 2 ^ pow
  212.                 pow -= 1
  213.                 For i = pow To 0 Step -1
  214.                     If 2 ^ pow > Value Then
  215.                         bools(index) = False
  216.                     Else
  217.                         bools(index) = True
  218.                         Value -= 2 ^ pow
  219.                     End If
  220.                     index += 1
  221.                     pow -= 1
  222.                 Next
  223.                 Return bools
  224.             Else
  225.                 pow += 1
  226.             End If
  227.         End While
  228.         Return {}
  229.     End Function
  230.     \'Gets a range of bits from a specified index for a given length in the array
  231.     Public Function GetBits(ByVal index As Integer, ByVal length As Integer) As Boolean()
  232.         If index + length > _Length Then
  233.             Throw New ArgumentOutOfRangeException(length)
  234.         Else
  235.             Dim l As Integer = length - 1, t As Integer = 0
  236.             Dim bools(l) As Boolean
  237.             For i = index To index + l : bools(t) = Bit(i) : t += 1 : Next
  238.             Return bools
  239.         End If
  240.     End Function
  241.     \'Loads a byte Array as the Array Used to store bits
  242.     Public Sub LoadArray(ByVal Bytes() As Byte)
  243.         BA = Bytes
  244.         _Length = Bytes.Length * 8
  245.     End Sub
  246.     \'Creates a new TBitArray with given size
  247.     Sub New(Optional Size As Integer = -1)
  248.         If Size > -1 Then
  249.             ReDim BA(Math.Floor(Size / 8))
  250.             _Length = Size + 1
  251.         End If
  252.     End Sub
  253.     \'Load a byte array on TBitArray init
  254.     Sub New(ByVal Bytes() As Byte)
  255.         BA = Bytes
  256.         _Length = Bytes.Length * 8
  257.     End Sub
  258.     \'Load a byte array on TBitArray init
  259.     Sub New(ByVal Bytes() As Byte, ByVal Length As Integer)
  260.         BA = Bytes
  261.         _Length = Length
  262.     End Sub
  263. End Class
');