<component id="21" name="WMI Source" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="9" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="22" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2011 CozyRoc LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Collections.Generic
Imports System.Management

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"Connection", "IsQueryVariable", "Query", "QueryVariable"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim colsCount As Integer = output.OutputColumnCollection.Count
        Dim colIndex As Integer = 0

        ' Setup column indexes.
        Dim colsIdx As New Hashtable
        For Each column As IDTSOutputColumn100 In output.OutputColumnCollection
            Call colsIdx.Add( _
                column.Name, _
                Me.HostComponent.BufferManager.FindColumnByLineageID( _
                    output.Buffer, _
                    column.LineageID))
        Next

        Dim scope As ManagementScope = CType( _
            Me.Connections.Connection.AcquireConnection(Nothing), _
            ManagementScope)
        Try
            Dim rawData As ManagementObjectCollection = GetQueryResult_(scope, False)

            For Each rawRow As ManagementObject In rawData
                ' Get packed row values.
                Dim packed_values() As Object = New Object(colsCount - 1) {}
                colIndex = 0
                For Each column As DictionaryEntry In colsIdx
                    packed_values(colIndex) = rawRow(CStr(column.Key))
                    colIndex += 1
                Next

                Dim rows As List(Of Object()) = UnwindRow_(packed_values)
                For Each row As Object() In rows
                    Call Me.OutputBuffer.AddRow()

                    colIndex = 0
                    For Each column As DictionaryEntry In colsIdx
                        Dim name As String = CStr(column.Key)
                        Dim index As Integer = CInt(column.Value)
                        Dim value As Object = row(colIndex)

                        If value Is Nothing Then
                            Call Me.OutputBuffer.Buffer.SetNull(index)
                        Else
                            Try
                                Me.OutputBuffer.Buffer(index) = GetValue_( _
                                output.OutputColumnCollection(name), _
                                value)
                            Catch ex As Exception
                                Throw New Exception(String.Format( _
                                    "Failed to set column '{0}'. {1}", _
                                    name, _
                                    ex.Message))
                            End Try
                        End If

                        colIndex += 1
                    Next
                Next
            Next
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call Me.Connections.Connection.ReleaseConnection(scope)
        End Try
    End Sub ' CreateNewOutputRows


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Validate(ByRef errMessage As String) As Boolean
        Dim result As Boolean

        Try
            If String.IsNullOrEmpty(Me.Connection) Then
                Throw New ApplicationException("Select WMI connection.")
            End If

            If String.IsNullOrEmpty(Me.Query) Then
                Throw New ApplicationException("Specify WQL query.")
            End If

            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
            If output.OutputColumnCollection.Count = 0 Then
                ' Setup collection output columns.
                Call SetupOutputColumns_()
            End If

            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.
            Me.ComponentMetaData.RuntimeConnectionCollection("Connection").ConnectionManagerID = Me.Connection

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        Call result.Add("Connection")

        Call result.Add("IsQueryVariable")
        Call result.Add(IIf(Me.IsQueryVariable, "QueryVariable", "Query"))

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties



#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select WMI Connection Manager.")> _
    <Connection("WmiConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            m_connection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies if Query property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property IsQueryVariable() As Boolean
        Get
            IsQueryVariable = m_isQueryVar
        End Get
        Set(ByVal value As Boolean)
            If m_isQueryVar <> value Then
                m_isQueryVar = value
                m_query = String.Empty
            End If
        End Set
    End Property    ' IsQueryVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies WMI query.")> _
    <TextDialog("Specify query", Nothing, "sql")> _
    Public Property Query() As String
        Get
            Query = m_query
        End Get
        Set(ByVal value As String)
            m_query = value
        End Set
    End Property    ' Query


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies variable containing query.")> _
    <Variable()> _
    Public Property QueryVariable() As String
        Get
            QueryVariable = Me.Query
        End Get
        Set(ByVal value As String)
            Me.Query = value
        End Set
    End Property    ' QueryVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property WmiConnectionType() As String()
        Get
            WmiConnectionType = New String() {"WMI"}
        End Get
    End Property    ' WmiConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns variable value.
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object
        Dim vars As IDTSVariables100

        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This function is based on the Microsoft's WMI Source sample code.
    ' http://sqlsrvintegrationsrv.codeplex.com/sourcecontrol/network/Show?projectName=SQLSrvIntegrationSrv&changeSetId=40668#348153
    ' 
    ' Unwind WMI row ( unwind array in any column )
    ' we use the same approach to handle WMI arrays as WMI ODBC driver 
    ' input row is unwinded into several output rows
    ' output rows should represent every possible combination of WMI arrays elements in different columns
    ' for details see msdn :
    ' http://msdn.microsoft.com/en-us/library/aa392328(VS.85).aspx#_hmm_mapping_wmi_arrays_to_odbc
    ' 
    ' Here is an example :
    '
    ' input row : { a1, {b1,b2}, {c1,c2,c3} }
    '
    ' output rows :
    ' 
    ' { a1 , b1, c1 }
    ' { a1 , b1, c2 }
    ' { a1 , b1, c3 }
    ' { a1 , b2, c1 }
    ' { a1 , b2, c2 }
    ' { a1 , b2, c3 }
    Private Function UnwindRow_(ByVal arr() As Object) As List(Of Object())
        Dim result As New List(Of Object())

        Dim buf() As Object = New Object(arr.Length - 1) {}
        Call UnwindRow_(arr, 0, buf, result)

        UnwindRow_ = result
    End Function    ' UnwindRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub UnwindRow_( _
        ByVal arr() As Object, _
        ByVal pos As Integer, _
        ByVal buf() As Object, _
        ByVal result As List(Of Object()))

        While pos < arr.Length
            If Not arr(pos) Is Nothing AndAlso arr(pos).GetType().IsArray Then
                ' This is array. Unwind it.
                Dim inner As Array = CType(arr(pos), Array)

                If inner.Length = 0 Then
                    ' empty array will be represented as null value
                    inner = New Object(0) {}
                End If

                For Each obj As Object In inner
                    buf(pos) = obj
                    Call UnwindRow_(arr, pos + 1, buf, result)
                Next

                Return
            End If

            buf(pos) = arr(pos)
            pos += 1
        End While

        Call result.Add(CType(buf.Clone(), Object()))
    End Sub    ' UnwindRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim scope As ManagementScope = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            ManagementScope)

        Try
            ' Get WMI columns.
            Dim objEnum As ManagementObjectCollection.ManagementObjectEnumerator = GetQueryResult_(scope, True).GetEnumerator()
            Call objEnum.Reset()
            Call objEnum.MoveNext()
            Dim props As PropertyDataCollection = objEnum.Current.Properties

            For Each prop As PropertyData In props
                Dim dtsType As DataType
                Dim length, precision, scale, codePage As Integer
                Call GetDtsTypeFromProperty_(prop, dtsType, length, precision, scale, codePage)

                Dim column As IDTSOutputColumn100 = output.OutputColumnCollection.[New]()
                column.Name = prop.Name
                column.Description = CStr(GetQualifier_(prop, "Description", String.Empty))
                Call column.SetDataTypeProperties(dtsType, length, precision, scale, codePage)
            Next
        Finally
            Call Me.DesignConnections(Me.Connection).ReleaseConnection(scope)
        End Try
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetQueryResult_( _
        ByVal scope As ManagementScope, _
        ByVal onlyMeta As Boolean) As ManagementObjectCollection

        ' Get query.
        Dim query As String = Me.Query
        If Me.IsQueryVariable Then
            query = GetVariable_(query).ToString()
        End If

        Dim result As ManagementObjectCollection
        Dim objQuery As New ObjectQuery(query)
        Dim searcher As New ManagementObjectSearcher(scope, objQuery)
        searcher.Options.PrototypeOnly = onlyMeta
        result = searcher.Get()

        Try
            Dim count As Integer = result.Count
        Catch ex As ManagementException
            If ex.ErrorCode = ManagementStatus.InvalidClass OrElse _
                ex.ErrorCode = ManagementStatus.NotFound Then
                Throw New Exception("Invalid WQL query.")
            Else
                Throw
            End If
        End Try

        GetQueryResult_ = result
    End Function    ' GetQueryResult_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get SSIS type from PropertyData.
    Private Sub GetDtsTypeFromProperty_( _
        ByVal prop As PropertyData, _
        ByRef dtsType As DataType, _
        ByRef length As Integer, _
        ByRef precision As Integer, _
        ByRef scale As Integer, _
        ByRef codePage As Integer)

        length = CType(GetQualifier_(prop, "MaxLen", 0), Integer)
        precision = 0
        scale = 0
        codePage = 0

        Select Case prop.Type
            Case CimType.Boolean
                dtsType = DataType.DT_BOOL

            Case CimType.Char16, CimType.String
                dtsType = DataType.DT_WSTR
                If length = 0 Then
                    length = 256
                End If

            Case CimType.DateTime
                dtsType = DataType.DT_DBTIMESTAMP

            Case CimType.None
                dtsType = DataType.DT_NULL

            Case CimType.Object
                dtsType = DataType.DT_IMAGE

            Case CimType.Real32
                dtsType = DataType.DT_R4

            Case CimType.Real64
                dtsType = DataType.DT_R8

            Case CimType.SInt16
                dtsType = DataType.DT_I2

            Case CimType.SInt32
                dtsType = DataType.DT_I4

            Case CimType.SInt64
                dtsType = DataType.DT_I8

            Case CimType.SInt8
                dtsType = DataType.DT_I1

            Case CimType.UInt16
                dtsType = DataType.DT_UI2

            Case CimType.UInt32
                dtsType = DataType.DT_UI4

            Case CimType.UInt64
                dtsType = DataType.DT_UI8

            Case CimType.UInt8
                dtsType = DataType.DT_UI1

            Case Else
                Throw New Exception("Unhandled column type.")
        End Select
    End Sub ' GetDtsTypeFromProperty_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get qualifier from PropertyData.
    Private Function GetQualifier_( _
        ByVal prop As PropertyData, _
        ByVal qualName As String, _
        ByVal defValue As Object) As Object

        Dim result As Object = defValue
        Try
            result = prop.Qualifiers(qualName).Value
        Catch ex As Exception
        End Try

        GetQualifier_ = result
    End Function    ' GetQualifier_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetValue_( _
        ByVal column As IDTSOutputColumn100, _
        ByVal value As Object) As Object

        Dim result As Object = value

        Select Case column.DataType
            Case DataType.DT_WSTR
                result = CStr(result).Substring( _
                    0, _
                    System.Math.Min(column.Length, CStr(result).Length))

            Case DataType.DT_DBTIMESTAMP
                result = ManagementDateTimeConverter.ToDateTime(CStr(value))

            Case DataType.DT_I8
                If TypeOf result Is TimeSpan Then
                    result = CType(result, TimeSpan).Ticks
                End If
        End Select

        GetValue_ = result
    End Function    ' GetValue_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean
        Call Me.ComponentMetaData.FireError(0, "WMI Source", message, String.Empty, 0, cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_isQueryVar As Boolean
    Private m_query As String
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{49C11C1E-F77D-4536-AA3E-08CC493AFEA0}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</RootNamespace>
    <AssemblyName>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CozyRoc.SSISPlus.2014.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Management">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_SC120" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    Public ReadOnly Property Connection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Connection").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:CodeName>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</msb:CodeName>
		<msb:DisplayName>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</msb:DisplayName>
		<msb:ProjectId>{92716031-67F9-4474-9A47-CEBAEF9A1863}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="23" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
KgAAABswBQCoAAAAGwAAETiHAAAAAwSaLHIDBJpvXgAACm9fAAAKLGMDBJp0OgAAAQoGb2AAAAoW
MwcXjQMAAAEKBm9hAAAKDCsiCG8vAAAKKBEAAAoLBQQHKBEAAAqiAgMEF9YFDgRvLgAABghvNwAA
Ci3W3kAIdTMAAAEsCwh1MwAAAW84AAAK3CoFBAMEmigRAAAKogQX1hACBAOOtz9w////DgQFb2IA
AAp0DQAAG29jAAAKKgEQAAACADIANWcAFAAAAAAbMAcA7gAAABwAABECbyUAAApvKQAAChaMLwAA
AW8qAAAKCgJvZAAACgJvIwAABm9lAAAKFG9mAAAKdA8AAAELAgcXbzAAAAZvOgAACgwIb2cAAAoI
b04AAAomCG87AAAKb2gAAAoNCW9pAAAKEwsrZRELb2oAAAoTCQIRCRIGEgcSCBIKEgRvMQAABgZv
KwAACm9rAAAKEwURBREJb2wAAApvbQAAChEFAhEJcgkBAHB+VwAACm8yAAAGKD4AAApvbgAAChEF
EQYRBxEIEQoRBG9vAAAKEQtvcAAACi2S3hgCb2QAAAoCbyMAAAZvZQAACgdvcQAACtwqAAABEAAA
AgA0AKHVABgAAAAAGzACAIAAAAAdAAARAm8nAAAGDAJvJQAABiwNAghvLAAABm8VAAAKDAhzcgAA
CgsDB3NzAAAKEwQRBG90AAAKBG91AAAKEQRvdgAACg0Jb3cAAAoTBd4xJShIAAAKEwYRBm94AAAK
IBAQBIAuDhEGb3gAAAogAhAEgDMLciEBAHBzSwAACnr+GgkKBioBEAAAAABBAApLADFEAAABEzAF
AEgCAAAeAAARBQIDckcBAHAWjC8AAAFvMgAABihDAAAKVA4EFlQOBRZUDgYWVANveQAACkVoAAAA
JgAAAGwAAAA+AAAAQwAAADQAAAA5AAAAbAAAAGwAAAAIAAAAbAAAAGwAAAACAAAAbAAAACsAAABs
AAAAbAAAAE4AAABmAAAAVAAAAFoAAABIAAAAYAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwA
AABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA
AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAA
bAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABs
AAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwA
AABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA
AGwAAAAdAAAAbAAAAAgAAAAragQfC1QrbwQgggAAAFQFShYzYwUgAAEAAFQrWgQghwAAAFQrUQQX
VCtMBCAtAQAAVCtDBBpUKz4EG1QrOQQYVCs0BBlUKy8EHxRUKykEHxBUKyMEHxJUKx0EHxNUKxcE
HxVUKxEEHxFUKwtyVQEAcHNLAAAKeiobMAIANwAAAB8AABEFKBEAAAoLA296AAAKBG97AAAKb3wA
AAooEQAACgveDiUoSAAACgwoTAAACt4ABygRAAAKCgYqAAEQAAAAAAcAGSAADikAAAETMAQAjQAA
ACAAABEEKBEAAAoLA299AAAKDAggggAAADMlByg+AAAKFgNvfgAACgcoPgAACm9/AAAKKIAAAApv
gQAACgsrSQgghwAAADMTBCg+AAAKKIIAAAqMTQAAAQsrLggfFDMpB3VKAAABLCEHJS0EJgkrCnlK
AAABcUoAAAETBBIEKIMAAAqMTgAAAQsHKBEAAAoKBioAAAATMAcAGwAAACEAABECbyUAAAoWcoMB
AHADflcAAAoWEgBvhAAACioAQlNKQgEAAQAAAAAADAAAAHY0LjAuMzAzMTkAAAAABQBsAAAAFA4A
ACN+AACADgAAYBIAACNTdHJpbmdzAAAAAOAgAACcAQAAI1VTAHwiAAAQAAAAI0dVSUQAAACMIgAA
tAYAACNCbG9iAAAAAAAAAAIAAAFXFaIJCQ4AAAD6JTMAFgAAAQAAAFsAAAALAAAADQAAADQAAAAn
AAAAkAAAADgAAAAhAAAABQAAAA0AAAARAAAADQAAAAEAAAAKAAAAAgAAAAMAAAACAAAAAAApEgEA
AAAAAAoAQAEWAQoAdAFWAQYAhAF9AQoA3AEWAQYAWgJ9AQoA3AKyAg4ALgMXAxIAfQNcAxYArgNc
AxIAvQNcAw4AbwQXAxoAOgUSBQYASgYvBh4AlQaDBh4AsAaDBh4A3waDBhoA7AYSBSIApwd+ByYA
TQg3CCYAZgg3CCYAkwh7CAYAvQiqCAoA/AjVCAoAFAkTACYASQksCQYAfgleCQYAnAl9AQYAwAl9
AQoA2QkTAAYAJwoICgYAOwp9ARIAQgpcAwYATwp9ASIAcQp+ByIAoAp+ByIA4wp+BwYALgsbCyIA
OAt+Bx4ARguDBgYAVwsbCwYAZwt9AQYAcQsbCzsAfQsAAAYAmAsbCzcArgsAACIAuQt+BwYA5gt9
ASIA7At+BxYAUgxcAyIAdgx+BwYA2Qx9AR4A/wyDBgoAHA3VCAoAQw3VCAYApA19AQYA0Q0bCwoA
2w0TAAYA6w19ARoA/w0SBRoAEA4SBRoATg4SBR4Agg6DBvsAmQ4AACoA9QDPDioABQ/PDh4AXw+D
Bh4Aaw+DBh4AhA+DBh4AmA+DBh4AzQ+DBh4A7A+DBh4A/Q+DBh4AJBCDBgYAMhB9AQYASBB9AR4A
WxCDBgYAdxB9AQYAlRB9ARIApRBcAw4A7hDMEA4ACBHMEA4AJBHMEA4APBHMECYAUBE3CCYAZRE3
CCYAgBE3CA4AkhHMEA4ApBHMEAYAuBFeCQYA2BFeCQYAEBL2EQAAAAABAAAAAAABAAEAAAAAACkA
NwAFAAEAAQAAAAAAawA3AAkAAQACAAABEAB2ADcADQABAAMABQEAAIAAAAANAAUACAAFAQAAjgAA
AA0ABQAPAAEAAACpALYAHQAGABEAAQAAAOcAtgAtAAYAFwABAAAA9QC2AA0ACQAcAAEAAAABAbYA
DQAKAB4AAQAAAAsBtgAgAAsAHwAxAJ8BIAAxAMgBLQAxAOoBOgAxAA8CRwAhAOsCkAAGAPUAyQAG
AAEBzQAGAKkA0QABAN8E4QABAN8E4QABAN8HTAEBAOwHTwEBAPkHTAFQIAAAAAAGGFABEwABAFgg
AAAAAAYYUAETAAEAYCAAAAAAERiLARcAAQCMIAAAAAATCJIBGwABAKQgAAAAABMIuAEoAAEAvCAA
AAAAEwjhATUAAQDUIAAAAAATCP8BQgABAOwgAAAAAEYCRQJjAAEACCEAAAAARgJOAmgAAgAcIQAA
AACDAF8CbAACADQhAAAAAEYCZwJxAAIASCEAAAAAEQBwAngAAgBkIQAAAAABAI4CgAADAIAhAAAA
AAYYUAETAAQAiCEAAAAAAwiiAosABAC8IQAAAAAGGFABEwAEANAhAAAAAAYYUAGvAAQA4CEAAAAA
Rgr3A7sACQD0IQAAAABGCg4EuwAJAAgiAAAAAIYAJgQTAAkAECIAAAAAhgAtBBMACQAYIgAAAACG
ADwEwAAJADAiAAAAAAYYUAETAAkAUCIAAAAARgODBBMACQBUIgAAAAABAJEEEwAJAHAiAAAAAEYC
pQTVAAkAyCIAAAAARgPLBBMADQDMIgAAAAAGGFAB5QANANwiAAAAAAYIUwXrAA4ACCMAAAAABhhQ
AeUADgAYIwAAAAAGGFABEwAPACAjAAAAAEYCywQTAA8AVCYAAAAABgBtBfUADwAMJwAAAAAGAIEF
uwAQAHAnAAAAAAYIUwVxABAAiCcAAAAABgiPBfsAEACUJwAAAAAGCKQFwAARAKwnAAAAAAYIuAUA
AREAzCcAAAAABgjMBXEAEgDkJwAAAAAGCNYF+wASAPAnAAAAAAYI4AVxABMACCgAAAAABgjyBfsA
EwAUKAAAAAABCAQGuwAUADQoAAAAAAEAGgYFARQAhCgAAAAAAQBRBgoBFQC0KAAAAAABAFEGFQEW
AHgpAAAAAAEAbwYTABoAhCoAAAAAAQDABiQBGgAgKwAAAAABAPUGLAEcAHQtAAAAAAEAOgc9ASIA
yC0AAAAAAQC7B0UBJQBkLgAAAAABAMwH+wAnAAAAAQBMAgAAAQCFAgAAAQCFAgAAAQDLAwAAAgDV
AwAAAwDeAwAABADmAwAABQDtAwAAAQCxBAAAAgC5BAAAAwDDBAAABADtAwAAAQDLAwAAAQDLAwAA
AQB2BQAAAQCeBQAAAQCeBQAAAQCeBQAAAQCeBQAAAQAnBgAAAQBcBgAAAQBcBgAAAgBgBgAAAwBk
BgAABABoBgAAAQDQBgAAAgDWBgAAAQANBwAAAgASBwAAAwAaBwAABAAhBwAABQArBwAABgAxBwAA
AQANBwAAAgBIBwAAAwBRBwAAAQDFBwAAAgCeBQAAAQDXBwkAUAETAJkAUAFaAakAUAFpAREAUAET
ALEAUAETACQAUAETACwAUAETADQAUAETADwAUAETACQAogKLACwAogKLADQAogKLADwAogKLALkA
UAETAMEAUAETAMkAUAH7ANEAjQkDAhkARQJjABkATgJoACkArgkQAhkAZwJxAOEAygkgAhkAUAET
AOkAUAEwAkQA6wKQAEwA9AmLAEwA/gmtAkwAUAETAPEAUAEAATkAUAGvAAEBJgQTAAEBLQQTAAEB
PATAAAkBUAEAAVkAUAETAEEAZQrHAkEAigrTAhEBwwrZAhkB/ArfAiEBBQvrABEB0QvrAnEB/Arx
AjEBCgz4AoEBJQxoACkBUAETAIEBLwz+AlEBPQwEA5EASQxxAFkAZAwIA4kBiwwOAzEBnQxoAJEA
qAxoAJEBtgwUAykBzAwaA1EB0AzAAJkB5QwTAGEA7QwgA3EALwwlA1kBPQwrAykBLwwxA0EBFA0E
A6kBZwI3A6EB/AoFAVQALwxDA1wAPQyLAEEB9AkEA6kBKA1VAzkAnQxaA0kAMg1fA4EB/ApkA0kA
Og1qA7EBTw1wA0kBXw1xAPkAaw13A0kBUAH7ALEBcg0XAFwA0AzAAFkB0AzAAGEAhA1+A/kAlg3G
A7kBUAH7ACEBuQ37AMEBUAETAMEBzAzWA8kB5w3bA8EB8Q3iA/kA+Q1MAUEAKQ78A+EBPw4CBNkB
/AoLBOkB9AkEA9kBXg4TAFQAUAETABkAXwJsACkAZQ7AANEBcQ5oANEBLwz+AtEBfA4EA1QAzAyt
AlkA7w44BAEC/Ao+BAkC7QwgA1kBFw8TAKEBHQ9FBPEBLwxLBPkBPQxRBIEBLA9WBIEASQxxAJEA
MA/7AJEAOQ/7AJEASQ9bBPkB0AzAAAkChA1+AxECUAH7ABkCUAGABBkCqw+JBCkCtw8AARkCyQ+P
BHEAJQxoACEC3g+UBIEA9A+sBIEAFRC4BEEC/Aq+BEkC9AkEA5EAOxDNBJEAcQ5oAPkAcQ5oAFkC
TRDSBPkAURDYBGECgBDeBFECixDlBBEBmxD2BHkCUAETAIECUAH7AIkCUAH7AJECUAEiBZkCUAFg
BaECUAH7AKkCUAGZBbkCUAETAMECUAH7AMkCUAFfA9ECUAETANkCUAH7ACkAgwDlAS4AcwRDBi4A
ewRMBi4AgwRrBkAAKwCIAUAAEwBgAUMAEwBgAUMAGwBvAUkAgwC9AWMAEwBgAWMAGwBvAWkAgwD2
AYAAKwCIAYMAGwBvAYMAewCIAYMAcwCIAYkAgwDRAaAAKwCIAaMAEwBgAaMAwwA4AsAAKwCIAcMA
EwBgAcMA6wC8AuAAKwCIAeMAEwG8AgABKwCIAQABEwBgAQMBEwG8AiABKwCIASABEwBgASkBUwQf
BikBawQIBkABEwBgAUABKwCIAUkBWwRgAUkBUwSgBWABEwBgAWABKwCIAWMBEwG8AmMBQwQoBWMB
OwQUBWMBKwSIAWMBMwQBBWkBSwRnBWkBUwR/BYABKwCIAYkBYwSIAYkBUwTeBaABKwCIAcABEwBg
AcABKwCIAeABKwCIAQACEwBgAQACKwCIAYADEwG8AsADEwG8AqkBrgGzAbgBCAIMAhcCHAIrAisC
swLCAsICCALOAuYCgwPLA+0DHAIIAhwCHAL1AxIEGgQuBGUEmgSyBMUE6QQIAgQAAQAGAAUABwAG
AAkACAALAAkAAAB0AU8AAAAtAlQAAADcAVkAAAA5Al4AAAD1ApgAAABIBMQAAABbBMQAAABiBfAA
AABiBVIBAAABCFYBAAARCFIBAAAXCFIBAAAlCMQAAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAP
AAsAAgASAA0AAgATAA8AAgAdABEAAgAjABMAAQAkABMAAgAlABUAAQAmABUAAgAnABcAAQAoABcA
AgApABkAAQAqABkAAgArABsAdQB1AIgAjQGUAZsBogGaAqECPANNA+oDKwQEgAAAAAAAAAAAAAAA
AAAAAAC2AAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAA
AAAAAJ0AAQMAAAAADAAAAAAAAAAAAAAApgA/AwAAAAAMAAAAAAAAAAAAAACmAI0DAAAAAAwAAAAA
AAAAAAAAAKYA7wQAAAAABAAAAAAAAAAAAAAACgCDBgAAAAAMAAAAAAAAAAAAAACmAFoHAAAAAAQA
AAAAAAAAAAAAAAEAfQEAAAAADAAAAAAAAAAAAAAApgCwDgAAAAAFAAQABgAEAAAAEAAMAIMCAAAQ
ABkAgwIAAAAAGwCDAi0AJgItAKgCAAAAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfMGMwZmViNWEzNjNkNDY4MmEx
YjE3NDUzNzlkN2NlMWYuTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJl
YWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBPdXRwdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50XzBjMGZl
YjVhMzYzZDQ2ODJhMWIxNzQ1Mzc5ZDdjZTFmAFVzZXJDb21wb25lbnQAQ29ubmVjdGlvbnMAVmFy
aWFibGVzAFNjcmlwdE1haW4ATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2Vydmlj
ZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENv
bXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0
UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNl
cgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2Jq
ZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUA
VHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bv
c2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNl
cnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5
Um9jLlNTSVNQbHVzLjIwMTQAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVz
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlw
ZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBp
cGVsaW5lQnVmZmVyAE91dHB1dE5hbWVNYXAAQ29tcG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVm
ZmVyAE91dHB1dE1hcABnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1
bW5zAEFkZFJvdwBTZXRFbmRPZlJvd3NldABFbmRPZlJvd3NldABTdGF0aWNJbnB1dENvbHVtbnMA
U3RhdGljT3V0cHV0Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQbHVzAEZpbmlzaE91dHB1dHMATWFy
a091dHB1dHNGaW5pc2hlZABQcmltZU91dHB1dABPdXRwdXRzAE91dHB1dElEcwBCdWZmZXJzAENy
ZWF0ZU5ld091dHB1dFJvd3MAUGFyZW50Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRT
UnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAElEVFND
b25uZWN0aW9uTWFuYWdlcjEwMABnZXRfQ29ubmVjdGlvbgBDb25uZWN0aW9uAFZhbGlkYXRlAGVy
ck1lc3NhZ2UAR2V0UHJvcGVydGllcwBzZXRfQ29ubmVjdGlvbgB2YWx1ZQBnZXRfSXNRdWVyeVZh
cmlhYmxlAHNldF9Jc1F1ZXJ5VmFyaWFibGUAZ2V0X1F1ZXJ5AHNldF9RdWVyeQBnZXRfUXVlcnlW
YXJpYWJsZQBzZXRfUXVlcnlWYXJpYWJsZQBnZXRfV21pQ29ubmVjdGlvblR5cGUAR2V0VmFyaWFi
bGVfAHZhck5hbWUAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMATGlzdGAxAFVud2luZFJvd18A
YXJyAHBvcwBidWYAcmVzdWx0AFNldHVwT3V0cHV0Q29sdW1uc18AU3lzdGVtLk1hbmFnZW1lbnQA
TWFuYWdlbWVudE9iamVjdENvbGxlY3Rpb24ATWFuYWdlbWVudFNjb3BlAEdldFF1ZXJ5UmVzdWx0
XwBzY29wZQBvbmx5TWV0YQBQcm9wZXJ0eURhdGEARGF0YVR5cGUAR2V0RHRzVHlwZUZyb21Qcm9w
ZXJ0eV8AcHJvcABkdHNUeXBlAGxlbmd0aABwcmVjaXNpb24Ac2NhbGUAY29kZVBhZ2UAR2V0UXVh
bGlmaWVyXwBxdWFsTmFtZQBkZWZWYWx1ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5l
V3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFNPdXRwdXRD
b2x1bW4xMDAAR2V0VmFsdWVfAGNvbHVtbgBGaXJlRXJyb3JfAG1lc3NhZ2UAbV9jb25uZWN0aW9u
AG1faXNRdWVyeVZhcgBtX3F1ZXJ5AElzUXVlcnlWYXJpYWJsZQBRdWVyeQBRdWVyeVZhcmlhYmxl
AFdtaUNvbm5lY3Rpb25UeXBlAFN5c3RlbS5Db21wb25lbnRNb2RlbABFZGl0b3JCcm93c2FibGVB
dHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIAR2Vu
ZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlhZ25vc3RpY3MARGVidWdnZXJIaWRkZW5BdHRy
aWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3RhbmRhcmRNb2R1
bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAU3lzdGVtLkNvbXBvbmVudE1vZGVs
LkRlc2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZp
Y2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZhbHVlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5
cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJbnN0YW5jZQBNeUdyb3VwQ29sbGVjdGlvbkF0
dHJpYnV0ZQBnZXRfVmFsdWUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNl
cwBDb21WaXNpYmxlQXR0cmlidXRlAFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0
cmlidXRlAEdldE91dHB1dElEAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50
TWV0YURhdGEASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVudGltZUNv
bm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfSXRlbQBnZXRf
Q29ubmVjdGlvbk1hbmFnZXIAU3lzdGVtLkNvbGxlY3Rpb25zAEhhc2h0YWJsZQBJRFRTT3V0cHV0
MTAwAE1hbmFnZW1lbnRPYmplY3QARGljdGlvbmFyeUVudHJ5AEV4Y2VwdGlvbgBJRW51bWVyYXRv
cgBNYW5hZ2VtZW50T2JqZWN0RW51bWVyYXRvcgBJRGljdGlvbmFyeUVudW1lcmF0b3IARW51bWVy
YXRvcgBJRFRTT3V0cHV0Q29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29sbGVjdGlvbgBJbnQzMgBJ
RFRTT3V0cHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29sdW1uQ29sbGVjdGlvbgBn
ZXRfQ291bnQAR2V0RW51bWVyYXRvcgBnZXRfQ3VycmVudABnZXRfTmFtZQBQaXBlbGluZUNvbXBv
bmVudABnZXRfSG9zdENvbXBvbmVudABJRFRTQnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFu
YWdlcgBnZXRfQnVmZmVyAGdldF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAEFkZABN
b3ZlTmV4dABJRGlzcG9zYWJsZQBEaXNwb3NlAEFjcXVpcmVDb25uZWN0aW9uAE1hbmFnZW1lbnRC
YXNlT2JqZWN0AGdldF9LZXkAQ29udmVyc2lvbnMAVG9JbnRlZ2VyAFNldE51bGwAc2V0X0l0ZW0A
UHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9yAGdldF9NZXNzYWdlAEZvcm1hdABDbGVhclByb2pl
Y3RFcnJvcgBSZWxlYXNlQ29ubmVjdGlvbgBJc051bGxPckVtcHR5AEFwcGxpY2F0aW9uRXhjZXB0
aW9uAHNldF9Db25uZWN0aW9uTWFuYWdlcklEAEFycmF5TGlzdABJbnRlcmFjdGlvbgBJSWYAQXJy
YXkAVG9BcnJheQBFbXB0eQBJRFRTVmFyaWFibGVzMTAwAElEVFNWYXJpYWJsZURpc3BlbnNlcjEw
MABnZXRfVmFyaWFibGVEaXNwZW5zZXIATG9ja09uZUZvclJlYWQASURUU1ZhcmlhYmxlMTAwAFVu
bG9jawBnZXRfSXNBcnJheQBnZXRfTGVuZ3RoAENsb25lAFByb3BlcnR5RGF0YUNvbGxlY3Rpb24A
UHJvcGVydHlEYXRhRW51bWVyYXRvcgBNaWNyb3NvZnQuU3FsU2VydmVyLk1hbmFnZWREVFMATWlj
cm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZQBnZXRfRGVzaWduQ29ubmVjdGlvbnMAQ29ubmVj
dGlvbk1hbmFnZXIAUmVzZXQAZ2V0X1Byb3BlcnRpZXMATmV3AHNldF9OYW1lAHNldF9EZXNjcmlw
dGlvbgBTZXREYXRhVHlwZVByb3BlcnRpZXMAT2JqZWN0UXVlcnkATWFuYWdlbWVudE9iamVjdFNl
YXJjaGVyAE1hbmFnZW1lbnRFeGNlcHRpb24ARW51bWVyYXRpb25PcHRpb25zAGdldF9PcHRpb25z
AHNldF9Qcm90b3R5cGVPbmx5AEdldABNYW5hZ2VtZW50U3RhdHVzAGdldF9FcnJvckNvZGUAQ2lt
VHlwZQBnZXRfVHlwZQBRdWFsaWZpZXJEYXRhQ29sbGVjdGlvbgBnZXRfUXVhbGlmaWVycwBRdWFs
aWZpZXJEYXRhAFRpbWVTcGFuAGdldF9EYXRhVHlwZQBNYXRoAE1pbgBTdWJzdHJpbmcATWFuYWdl
bWVudERhdGVUaW1lQ29udmVydGVyAERhdGVUaW1lAFRvRGF0ZVRpbWUAZ2V0X1RpY2tzAEludDY0
AEZpcmVFcnJvcgBTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5Um9j
LlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMARmlsdGVyUHJvcGVydGllc0F0dHJpYnV0ZQBWYWxp
ZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUAVGV4dERpYWxv
Z0F0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBSZWZyZXNoUHJvcGVydGllc0F0dHJpYnV0
ZQBSZWZyZXNoUHJvcGVydGllcwBWYXJpYWJsZUF0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRl
AENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRy
aWJ1dGUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUA
U2NyaXB0Q29tcG9uZW50XzBjMGZlYjVhMzYzZDQ2ODJhMWIxNzQ1Mzc5ZDdjZTFmLmRsbAAAAAAN
TwB1AHQAcAB1AHQAABVDAG8AbgBuAGUAYwB0AGkAbwBuAAA/RgBhAGkAbABlAGQAIAB0AG8AIABz
AGUAdAAgAGMAbwBsAHUAbQBuACAAJwB7ADAAfQAnAC4AIAB7ADEAfQABLVMAZQBsAGUAYwB0ACAA
VwBNAEkAIABjAG8AbgBuAGUAYwB0AGkAbwBuAC4AACVTAHAAZQBjAGkAZgB5ACAAVwBRAEwAIABx
AHUAZQByAHkALgAAH0kAcwBRAHUAZQByAHkAVgBhAHIAaQBhAGIAbABlAAAbUQB1AGUAcgB5AFYA
YQByAGkAYQBiAGwAZQAAC1EAdQBlAHIAeQAAB1cATQBJAAAXRABlAHMAYwByAGkAcAB0AGkAbwBu
AAAlSQBuAHYAYQBsAGkAZAAgAFcAUQBMACAAcQB1AGUAcgB5AC4AAA1NAGEAeABMAGUAbgAALVUA
bgBoAGEAbgBkAGwAZQBkACAAYwBvAGwAdQBtAG4AIAB0AHkAcABlAC4AABVXAE0ASQAgAFMAbwB1
AHIAYwBlAAAAAABuwOr6rkr9SZEnem9rQN0rAAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAA
EgwHBhUSGAESDAQAABIIBwYVEhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgA
EggECAASEQQIABIUBCABAhwDIAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMA
BwYVEhkBEwAEKAATAAgWz0kLuAw06giJhF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OAyAAAgQoAB0O
AwYSJAMGEigDBhIcCyAEAQgdCB0SJRIpAwYSIQUgAQESIQQgABIxBCgAEjEFIAECEA4EIAEBDgQg
AQECBCABHA4KIAEVEjUBHRwdHA4gBAEdHAgdHBUSNQEdHAcgAhI5Ej0CECAGARJBEBFFEAgQCBAI
EAgHIAMcEkEOHAYgAhwSSRwCBg4CBgIDKAAOAygAAgUgAQERUQgBAAEAAAAAAAUgAgEODhgBAApN
eVRlbXBsYXRlCDEwLjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwES
DAQHARIIBAcBEhEEBwESFBMBAA5NeS5BcHBsaWNhdGlvbgAAEwEADk15LldlYlNlcnZpY2VzAAAQ
AQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAAEAAEcHAMHAQIDBwEIBgABEhURbQQHARIVAwcB
DgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29s
cy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0
YW5jZV9fAAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAgHAxMAEwATAAUBAAAAAAQHAR0OBgAC
CBIpDgQHAggIBSAAEoCJBSAAEoCNBiABEoCRHAQHARIxBSAAEoC5BiABEoCZHAUgABKAwQUgABKA
qQMgABwFIAASgMUFIAASgMkFIAIICAgFIAIBHBwEIAEcHAUgABKArQUgABKA0QUgABKAsQQAAQ4c
BhUSNQEdHAkgABURgLUBEwAHFRGAtQEdHAQAAQgcBCAAEiUEIAEBCAUgARJJHAUgAgEIHAYAAQES
gKUGAAMODhwcBCABARxCBxgICBKAlRKAmRI9EkkSOR0cEoCdFRI1AR0cEYChHRwRgKEIDhwSgKUS
gKUSgKkSgK0SgLERgKEVEYC1AR0cEoCxBAABAg4KBwQCAhKAmRKApQQgAQgcBgADHAIcHAcgARKA
6RIVAh0OBwcCHQ4SgOEGBwIdDh0OBSAAEoDxCCACAQ4QEoDtBiABEoD1HAcHAxwcEoDtEAcDHRwV
EjUBHRwVEjUBHRwCHRwJBwMSgOkcEoCpBSAAEoEBBiABEoEFHAUgABKA+QUgABKA/QQgABJBBCAA
EkkJIAUBEUUICAgIGgcMEoCZEj0SgK0SgPkIEkkRRQgIEkEIEoD9CCACARI9EoEJBSAAEoEVBCAA
EjkFIAARgRkRBwcSORKBCQ4SORKBDQgSgREFIAARgR0FBwERgR0FIAASgSEGIAESgSUOBwcDHBwS
gKUEIAARRQUAAggICAUgAg4ICAYAARGBNQ4DIAAKDAcFHBwRRRGBKRGBKQogBgEIDg4OCBACEgEA
DUdldFByb3BlcnRpZXMAAA0BAAhWYWxpZGF0ZQAABSABAR0ONwEABAAAAApDb25uZWN0aW9uD0lz
UXVlcnlWYXJpYWJsZQVRdWVyeQ1RdWVyeVZhcmlhYmxlAAAGIAMBDg4OFwEADVNwZWNpZnkgcXVl
cnn/A3NxbAAAGQEAFFNwZWNpZmllcyBXTUkgcXVlcnkuAAAGIAEBEYFZPQEAOFNwZWNpZmllcyBp
ZiBRdWVyeSBwcm9wZXJ0eSByZWZlcmVuY2VzIHBhY2thZ2UgdmFyaWFibGUuAAApAQAkU3BlY2lm
aWVzIHZhcmlhYmxlIGNvbnRhaW5pbmcgcXVlcnkuAAAWAQARV21pQ29ubmVjdGlvblR5cGUAACMB
AB5TZWxlY3QgV01JIENvbm5lY3Rpb24gTWFuYWdlci4AAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5v
bkV4Y2VwdGlvblRocm93cwFHAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1l
d29ya0Rpc3BsYXlOYW1lEC5ORVQgRnJhbWV3b3JrIDQA9FcAAAAAAAAAAAAADlgAAAAgAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAA
AP8lACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAA
AAAAAAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAAAOwCAAAAAAAAAAAA
AOwCNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAAAAAAAA
AAAAAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJ
AG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsARMAgAAAQBTAHQA
cgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAAAoAgAAAQAwADAAMAAwADAANABiADAAAAAsAAIAAQBG
AGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYAaQBsAGUAVgBlAHIA
cwBpAG8AbgAAAAAAMAAuADAALgAwAC4AMAAAAIwANQABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBl
AAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAwAGMAMABmAGUAYgA1AGEAMwA2ADMA
ZAA0ADYAOAAyAGEAMQBiADEANwA0ADUAMwA3ADkAZAA3AGMAZQAxAGYALgBkAGwAbAAAAAAAKAAC
AAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAJQANQABAE8AcgBpAGcAaQBuAGEA
bABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADAAYwAw
AGYAZQBiADUAYQAzADYAMwBkADQANgA4ADIAYQAxAGIAMQA3ADQANQAzADcAOQBkADcAYwBlADEA
ZgAuAGQAbABsAAAAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAwAC4AMAAu
ADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4A
MAAuADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAIDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="28" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="30" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</property><property id="31" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><connections><connection id="33" name="Connection" connectionManagerID="{9B4AB618-0877-451A-B206-404837BD572B}" /></connections><outputs><output id="34" name="Output" hasSideEffects="true"><externalMetadataColumns /></output></outputs></component>