<component id="22" name="Soundex" componentClassID="{2E42D45B-F83C-400F-8D77-61DDE6A7DF29}" description="Executes a custom script." localeId="1033" usesDispositions="false" validateExternalMetadata="True" version="4" pipelineVersion="0" 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="26" name="SourceCode" dataType="System.String" state="cdata" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="18"><arrayElement dataType="System.String"><![CDATA[\my project\settings.designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\assemblyinfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following 
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("ScriptComponent_28a12860c6ab4329a9aa37f15b4a2dd8.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_28a12860c6ab4329a9aa37f15b4a2dd8.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2010")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("b2714325-9357-4df1-b337-d6a175d0df7e")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\bufferwrapper.vb]]></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 InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [Soundex]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [Soundex_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"Soundex"}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\scriptcomponent_28a12860c6ab4329a9aa37f15b4a2dd8.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{A860303F-1F3F-4691-B57E-529FC101A107};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_28a12860c6ab4329a9aa37f15b4a2dd8.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_28a12860c6ab4329a9aa37f15b4a2dd8.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{8DBCE68C-270B-44BB-B7AA-DAB9EC74D8DE}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Release" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section enables pre- and post-build steps. However,
       it is recommended that MSBuild tasks be used instead of these properties.
  -->
  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </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>
  <!-- This section defines the user source files that are part of the
       project.

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </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="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptComponent</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\componentwrapper.vb]]></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 Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal Buffer As PipelineBuffer)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer))
        End If

    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

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[\my project\resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2010 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.

' The following resources were used as a reference:
' http://en.wikipedia.org/wiki/Soundex
' http://blogs.techrepublic.com.com/programming-and-development/?p=656

Imports System
Imports System.ComponentModel
Imports System.Text

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Row.Soundex = Soundex_(Row.Buffer(m_inputIndex).ToString())
    End Sub ' Input_ProcessInputRow


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PreExecute()
        Call MyBase.PreExecute()

        Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)

        ' Find input column index.
        m_inputIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.InputColumn).LineageID)
    End Sub ' PreExecute


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

        Try
            If String.IsNullOrEmpty(Me.InputColumn) Then
                Throw New Exception("Select input column.")
            End If

            Dim managedComponent As CManagedComponentWrapper = Me.ComponentMetaData.Instantiate()
            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()

            Call input.InputColumnCollection.RemoveAll()

            ' Setup selected input column.
            Dim inputColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                input.ID, _
                virtInput, _
                virtInput.VirtualInputColumnCollection(Me.InputColumn).LineageID, _
                DTSUsageType.UT_READONLY)
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select input column.")> _
    <InputVirtualColumn()> _
    Public Property InputColumn() As String
        Get
            InputColumn = m_inputColumn
        End Get
        Set(ByVal value As String)
            m_inputColumn = value
        End Set
    End Property    ' InputColumn
#End Region ' Properties


#Region "Internals"
    Private Function Soundex_(ByVal data As String) As String
        Dim result As StringBuilder = New StringBuilder()

        If Not String.IsNullOrEmpty(data) Then
            data = data.ToLower()
            Call result.Append(data(0))

            Dim prevCode As Integer = -1
            Dim length As Integer = data.Length
            For i As Integer = 1 To length - 1
                Dim letter As Char = data(i)
                Dim code As Integer = -1

                If "bfpv".IndexOf(letter) > -1 Then
                    code = 1
                ElseIf "cgjkqsxz".IndexOf(letter) > -1 Then
                    code = 2
                ElseIf "dt".IndexOf(letter) > -1 Then
                    code = 3
                ElseIf letter = "l"c Then
                    code = 4
                ElseIf "mn".IndexOf(letter) > -1 Then
                    code = 5
                ElseIf letter = "r"c Then
                    code = 6
                Else
                    Continue For
                End If

                If code <> prevCode Then
                    Call result.Append(code)
                End If

                If result.Length = 4 Then
                    Exit For
                End If

                If code <> -1 Then
                    prevCode = code
                End If
            Next
        End If

        If result.Length < 4 Then
            Call result.Append(New String("0"c, 4 - result.Length))
        End If

        Soundex_ = result.ToString().ToUpper()
    End Function    ' Soundex_
#End Region ' Internals


#Region "Attributes"
    Private m_inputColumn As String
    Private m_inputIndex As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="27" name="BinaryCode" dataType="System.String" state="cdata" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[\bin\scriptcomponent_28a12860c6ab4329a9aa37f15b4a2dd8.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAIQ8rkwAAAAAAAAAAOAAAiELAQgAACgAAAAMAAAAAAAAfkcA
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAACxHAABPAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAhCcAAAAgAAAAKAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAAAqAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAANAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAABg
RwAAAAAAAEgAAAACAAUAACcAACwgAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgAyAgMEBQ4EKB4AAAoqAAAAEzABAAcAAAAMAAARFo0aAAABKgAm
AhYDbx8AAAoqAABiAywJAhZvIAAACisLcgEAAHBzIQAACnoqAAAAEzADABEAAAANAAARF40aAAAB
CwcWcp4AAHCiByoAAAATMAEACQAAAA4AABECKCIAAAoKBioAAAATMAEACQAAAA8AABECKCMAAAoK
BioAAAB+AiglAAAKAgJzHAAABn0GAAAEAgJzHQAABn0HAAAEKrYDAigmAAAKbycAAApyrgAAcG8o
AAAKbykAAAozDwICAxcEcxEAAAZvGgAABioAAEorBwIDbxsAAAYDbxYAAAYt8SoABioAADoCKBcA
AAoCA30IAAAEKgA6AigXAAAKAgN9CQAABCoAHgIoGAAABiqOAwIDbyoAAAoCewsAAARvKwAACm8V
AAAKbyQAAAZvEwAABioTMAUAUAAAABAAABECKCwAAAoCbyYAAApvJwAAChaMIQAAAW8oAAAKCgIC
by0AAApvLgAACgZvLwAACgZvMAAACgJvIgAABm8xAAAKbzIAAApvMwAACn0LAAAEKhswBQCZAAAA
EQAAERcKAm8iAAAGKDQAAAosC3K6AABwczUAAAp6Am8mAAAKbzYAAAoTBAJvJgAACm8nAAAKFowh
AAABbygAAAoMCG83AAAKEwUIbzAAAApvOAAAChEECG8pAAAKEQURBW85AAAKAm8iAAAGbzoAAApv
OwAAChZvPAAACg3eGiUoPQAAChMGFgoDEQZvPgAAClEoPwAACt4ABgsHKgAAAAEMAAAAAAIAeXsA
GigAAAETMAEACQAAABIAABECewoAAAQKBioAAAAiAgN9CgAABCoAAAATMAQACQEAABMAABFzQAAA
CgoDKDQAAAo6ywAAAANvQQAAChABBgMWb0IAAApvQwAACiYVDQNvRAAACgwXCBfaEwcTBTiWAAAA
AxEFb0IAAAoTBhUTBHLkAABwEQZvRQAAChUxBRcTBCtQcu4AAHARBm9FAAAKFTEFGBMEKzxyAAEA
cBEGb0UAAAoVMQUZEwQrKBEGH2wzBRoTBCsdcgYBAHARBm9FAAAKFTEFGxMEKwkRBh9yMyIcEwQR
BAkuCQYRBG9GAAAKJgZvRwAAChouFxEEFS4DEQQNEQUX1hMFEQURBz5h////Bm9HAAAKGi8WBh8w
GgZvRwAACtpzSAAACm9JAAAKJgZvSgAACm9LAAAKCwcqAAAAHgIoFwAACioTMAIALQAAABQAABF+
DAAABC0gcgwBAHDQDAAAAigUAAAKb1AAAApzUQAACgsHgAwAAAR+DAAABCoAAAATMAEABgAAABUA
ABF+DQAABCoAAB4CgA0AAAQqQnMXAAAKKBEAAAqADwAABCoAAAAeAihSAAAKKhswAQA/AAAAFgAA
EX4OAAAELTJ+DwAABCgRAAAKKFMAAAp+DgAABC0ccyoAAAaADgAABN4Qfg8AAAQoEQAACihUAAAK
3H4OAAAEKgABDAAAAgAdAAwpABAAAAABQlNKQgEAAQAAAAAADAAAAHYyLjAuNTA3MjcAAAAABQBs
AAAARAsAACN+AACwCwAAlA4AACNTdHJpbmdzAAAAAEQaAABAAQAAI1VTAIQbAAAQAAAAI0dVSUQA
AACUGwAAmAQAACNCbG9iAAAAAAAAAAIAAAFXFaIJCQ8AAAD6ATMAFgAAAQAAAD8AAAANAAAADwAA
ACsAAAAUAAAAXwAAADwAAAAWAAAABgAAAA0AAAAPAAAACQAAAAEAAAAHAAAAAQAAAAIAAAADAAAA
AgAAAAAAWA4BAAAAAAAKAKkBfwEKAN0BvwEGAO0B5gEKAEUCfwEGAMMC5gEKAEUDGwMOAJcDgAMS
AOYDxQMWABcExQMOAO4EgAMGAN8FzgUGAAwG9wUaAG0GWAYaALoGpAYaANMGpAYaAAAH6AYGACoH
FwcKAGkHQgcKAIEHEwAaALYHmQcGAOsHywcGAAkI5gEGAC0I5gEKAEYIEwAGAIoIawgGAJ4I5gEG
ALYI5gESANAIxQMGAN0I5gEeAEAJFwkeAG8JFwkeAJoJFwkGAMIJ5gEWAMgJxQMeAOwJFwkeABMK
FwkeAEoKFwkeAIEKFwkeAJoKFwkGAK4K5gEeAOwKFwkeADELFwkeAEsLFwkeAGYLFwkKAIALQgcG
AMYLugsSAAgMxQMOAFEMLwwOAG0MLwwaAIkMpAYGALAMngwGANcMxgwGAOoMFwcGAFMNywcGAHMN
ywcGAJENngwGAK4NawgGALwNngwGANcNngwGAPINngwGAAsOngwGACQOngwGAEEOngwAAAAAAQAA
AAAAAQABAAAAAAApADcABQABAAEAAAAAAHIANwAJAAEAAgAAARAAfQA3AA0AAQADAAUBAACHAAAA
DQAFAAgABQEAAJUAAAANAAUADwABAAAAsAC8AB0ABgARAAEAAAD0ALwAKQAGABgAAQAAAAIBvAAN
AAgAHAABAAAADgG8AA0ACQAdAAEAAAAYAbwAIAAKAB4AAAAAACMBLwENAAwAJQAAARAAdAG8ADUA
DgApADEACAIgADEAMQItADEAUwI6ADEAeAJHACEAVAOQAAYAAgHZAAYADgHdAAEARAXuAAEARAXu
AAEApwUDAQEAtQUGAREA7wUJAREAGAYNAREAhQYrAREAjQYvAQghAAAAAAYYuQETAAEAECEAAAAA
Bhi5ARMAAQAYIQAAAAARGPQBFwABAEQhAAAAABMI+wEbAAEAXCEAAAAAEwghAigAAQB0IQAAAAAT
CEoCNQABAIwhAAAAABMIaAJCAAEApCEAAAAARgKuAmMAAQDAIQAAAABGArcCaAACANQhAAAAAIMA
yAJsAAIA7CEAAAAARgLQAnEAAgAAIgAAAAARANkCeAACABwiAAAAAAEA9wKAAAMAOCIAAAAABhi5
ARMABABAIgAAAAADCAsDiwAEAHQiAAAAAAYYuQETAAQAiCIAAAAABhi5Aa8ABACYIgAAAABGCkgE
uQAIAKwiAAAAAAYIXwS+AAgAuCIAAAAABghxBMMACQDUIgAAAABGCoQEuQAKAPQiAAAAAIYAnATI
AAoADCMAAAAAhgCkBMgACgAkIwAAAAAGGLkBEwAKAEQjAAAAAEYCAgXhAAoAdCMAAAAARgMXBegA
DACIIwAAAABGAyoF6AANAIwjAAAAAAYYuQHyAA4AnCMAAAAABhi5AfIADwCsIwAAAAAGGLkBEwAQ
ALQjAAAAAEYCKgXoABAA2CMAAAAARgJUBRMAEQA0JAAAAAAGAF8F+AARAOwkAAAAAAYIcwVxABIA
BCUAAAAABgiDBb4AEgAQJQAAAAABAJkF/gATACgmAAAAAAMYuQETABQAMCYAAAAAFggkBhEBFABs
JgAAAAAWCDgGFgEUAIAmAAAAABYIRAYbARQAiCYAAAAAERj0ARcAFQCcJgAAAAAGGLkBEwAVAKQm
AAAAABYImgYyARUAAAABALUCAAABAO4CAAABAO4CAAABACYEAAACADAEAAADADkEAAAEAEEEAAAB
AGsEAAABAGsEAAABAA8FAAACAEEEAAABAEEEAAABAEAFAAABACYEAAABACYEAAABAEAFAAABAGgF
AAABAJMFAAABAKIFAAABAGsECQC5ARMAcQC5ATwBgQC5AUsBEQC5ARMAiQC5ARMAJAC5ARMALAC5
ARMANAC5ARMAPAC5ARMAJAALA4sALAALA4sANAALA4sAPAALA4sAkQC5ARMAmQC5ARMAoQC5Ab4A
qQD6B+QBGQCuAmMAGQC3AmgAKQAbCPEBGQDQAnEAuQA3CAECGQC5ARMAwQC5ARECRABUA5AATACa
BosATABhCI4CTAC5ARMAyQC5AcMAOQC5Aa8AOQClCKYCOQCuCKwC2QC5Ab4A4QCcBMgA4QCkBMgA
6QC5AcMAUQC5ARMAQQBZCbgC8QCGCb0C+QCnCcICAQGwCWgAOQC3CckCSQCnCc4CQQBUBRMAUQDa
CdMCEQEBCtkCAQG3CWgAAQEwCt8CIQGnCeUCKQFdCmgAGQFrCuwC0QC4CvgCQQG5Ab4A8QDGCv0C
AQHSCgMDIQHiChMAOQEQCwkDSQGnCQ8DUQFdCmgAWQFzCxYDaQGMCyQDQQGcC3EAaQGoCxcAcQG5
ARMA0QDUC3EA0QDcCz8DcQHmC0QD0QDtC2gA0QD4C0sDcQHmC1ADcQHtC2gA0QC5AVcDcQHmC10D
cQHQAnEA0QAADHEAeQG5ARMAgQG5Ab4AiQG5ARMAkQG5Ab4AKQC5DJkDWQC5AZ8DaQC5ARMAoQHf
DLwDoQHlDLwDqQG5ARMAsQG5AawCuQG5ARMAwQG5Ab4AyQG5Ab4A0QG5Ab4A2QG5Ab4A4QG5Ab4A
6QG5Ab4A8QG5Ab4A+QG5Ab4AKQCDAMYBLgDbAisELgDzApsCLgD7AksELgAjASUELgDjAksELgDr
AogELgDTApsCLgCzAsYDLgC7As8DLgDDAu4DLgDLAvsDLgDrAJsCQAATAEIBQAArAGkBQwAbAFEB
QwATAEIBSQCDAJ4BYwAbAFEBYwATAEIBaQCDANcBgAArAGkBgwB7AGkBgwAbAFEBgwBzAGkBiQCD
ALIBoAArAGkBowDDABkCowATAEIBwAArAGkBwwDrAJsCwwATAEIB4AArAGkB4wAjAZsCAAETAEIB
AAErAGkBAwEjAZsCIAErAGkBIAETAEIBQAErAGkBQAETAEIBSQFzAmkBSQF7An8DYAETAEIBYAEr
AGkBYwFrAnEDYwFjAmkBYwEjAZsCaQETALMDgAErAGkBiQETALMDoAErAGkBqQGrAmkBwAETAEIB
wAErAGkB4AErAGkBAAIrAGkBAAITAEIBgAMjAZsCoAMjAZsCigGPAZQBmQHpAe0B+AH9AQwCDAKU
AqECsQLpAekB8gIrA/0BZAOnA64DwQMEAAEABgAFAAcABgALAAoADAALAA0ADQAAAN0BTwAAAJYC
VAAAAEUCWQAAAKICXgAAAF4DmAAAALAEzAAAAMME0QAAAMsE1QAAANoEzAAAAMIF0QAAAN8FIQEA
AFAGJgEAAGsENwECAAQAAwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQABABMADwABABQA
EQACABUAEwACACIAFQABACMAFQACACYAFwACACcAGQABACgAGQACACsAGwB1AHUAiABuAXUBfAGD
AXsCggIEgAAAAQAAAAAAAAAAAAAAAAC8AAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAIAAAAAAAAAAAA
AAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0AagMAAAAACgAAAAAAAAAAAAAApgCoAwAAAAAKAAAAAAAA
AAAAAACmAPYDAAAAAAIAAAAAAAAAAAAAAAEA5gEAAAAACgAAAAAAAAAAAAAApgDzCAAAAAAAAAAA
AQAAAAcNAAAFAAQABgAEAAAAEAAMAOwCAAAQABkA7AIAAAAAGwDsAi0ABwItAIkCAAAAAAA8TW9k
dWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRD
b21wb25lbnRfMjhhMTI4NjBjNmFiNDMyOWE5YWEzN2YxNWI0YTJkZDgudmJwcm9qLk15AE15Q29t
cHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEA
SW5wdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50XzI4YTEyODYwYzZhYjQzMjlhOWFhMzdmMTViNGEy
ZGQ4LnZicHJvagBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRNYWlu
AE15UmVzb3VyY2VzAFNjcmlwdENvbXBvbmVudF8yOGExMjg2MGM2YWI0MzI5YTlhYTM3ZjE1YjRh
MmRkOC52YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGluZ3MATWljcm9zb2Z0LlZpc3VhbEJhc2lj
LkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1
YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21wdXRl
cgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJv
dmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2VydmljZXMA
bV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMARXF1
YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFuY2Vf
XwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jvc29m
dC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29udGV4
dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMDgAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJ
UwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0
LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2
ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAENvbXBvbmVudABPYmplY3RJRABJc0lucHV0
AEJ1ZmZlcgBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAHNldF9Tb3VuZGV4AFZhbHVlAHNldF9Tb3Vu
ZGV4X0lzTnVsbABnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBOZXh0Um93AEVuZE9mUm93c2V0AFN0
YXRpY0lucHV0Q29sdW1ucwBTb3VuZGV4AFNvdW5kZXhfSXNOdWxsAFN0YXRpY091dHB1dENvbHVt
bnMAU2NyaXB0Q29tcG9uZW50UGx1cwBQcm9jZXNzSW5wdXQASW5wdXRJRABJbnB1dF9Qcm9jZXNz
SW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0Um93AFJvdwBQYXJlbnRDb21wb25lbnQAUHJlRXhlY3V0
ZQBWYWxpZGF0ZQBlcnJNZXNzYWdlAGdldF9JbnB1dENvbHVtbgBzZXRfSW5wdXRDb2x1bW4AdmFs
dWUAU291bmRleF8AZGF0YQBtX2lucHV0Q29sdW1uAG1faW5wdXRJbmRleABJbnB1dENvbHVtbgBT
eXN0ZW0uUmVzb3VyY2VzAFJlc291cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5HbG9iYWxpemF0
aW9uAEN1bHR1cmVJbmZvAF9yZXNDdWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0N1bHR1
cmUAc2V0X0N1bHR1cmUAQ3VsdHVyZQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNl
dHRpbmdzQmFzZQBtX1ZhbHVlAG1fU3luY09iamVjdABnZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVu
dE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0
ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFnbm9z
dGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGls
ZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0
ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5c3Rl
bS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUA
UnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUluc3Rh
bmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5J
bnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAc2V0X0l0ZW0AU2V0TnVs
bABJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uAFNjcmlwdEJ1ZmZlcgBDTFNDb21wbGlhbnRBdHRy
aWJ1dGUATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNl
cnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJRFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0Nv
bXBvbmVudE1ldGFEYXRhAElEVFNJbnB1dENvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sbGVjdGlv
bgBJRFRTSW5wdXQxMDAAZ2V0X0l0ZW0AZ2V0X0lEAGdldF9CdWZmZXIASW50MzIAUGlwZWxpbmVD
b21wb25lbnQAZ2V0X0hvc3RDb21wb25lbnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZl
ck1hbmFnZXIASURUU0lucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2x1bW5Db2xs
ZWN0aW9uAElEVFNJbnB1dENvbHVtbjEwMABnZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVh
Z2VJRABDTWFuYWdlZENvbXBvbmVudFdyYXBwZXIASURUU1ZpcnR1YWxJbnB1dDEwMABFeGNlcHRp
b24ASXNOdWxsT3JFbXB0eQBJbnN0YW50aWF0ZQBHZXRWaXJ0dWFsSW5wdXQAUmVtb3ZlQWxsAElE
VFNWaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9WaXJ0dWFsSW5wdXRDb2x1bW5D
b2xsZWN0aW9uAElEVFNWaXJ0dWFsSW5wdXRDb2x1bW4xMDAASURUU0Rlc2lnbnRpbWVDb21wb25l
bnQxMDAARFRTVXNhZ2VUeXBlAFNldFVzYWdlVHlwZQBQcm9qZWN0RGF0YQBTZXRQcm9qZWN0RXJy
b3IAZ2V0X01lc3NhZ2UAQ2xlYXJQcm9qZWN0RXJyb3IAU3lzdGVtLlRleHQAU3RyaW5nQnVpbGRl
cgBUb0xvd2VyAGdldF9DaGFycwBBcHBlbmQAZ2V0X0xlbmd0aABJbmRleE9mAFRvVXBwZXIAU1NJ
U1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJ
Uy5BdHRyaWJ1dGVzAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBJbnB1dFZpcnR1YWxDb2x1
bW5BdHRyaWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAU3lzdGVtLlJlZmxlY3Rpb24AQXNzZW1i
bHkAZ2V0X0Fzc2VtYmx5AFN5c3RlbS5UaHJlYWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0AERlYnVn
Z2VyTm9uVXNlckNvZGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50XzI4YTEyODYwYzZhYjQzMjlh
OWFhMzdmMTViNGEyZGQ4LnZicHJvai5SZXNvdXJjZXMucmVzb3VyY2VzAENvbXBpbGF0aW9uUmVs
YXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAQXNzZW1ibHlG
aWxlVmVyc2lvbkF0dHJpYnV0ZQBHdWlkQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmli
dXRlAEFzc2VtYmx5Q29weXJpZ2h0QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBB
c3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3Nl
bWJseVRpdGxlQXR0cmlidXRlAFNjcmlwdENvbXBvbmVudF8yOGExMjg2MGM2YWI0MzI5YTlhYTM3
ZjE1YjRhMmRkOC52YnByb2ouZGxsAACAm0kAcwBOAHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAA
YwBhAG4AbgBvAHQAIABiAGUAIABzAGUAdAAgAHQAbwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBn
AG4AIABhACAAdgBhAGwAdQBlACAAdABvACAAdABoAGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQA
ZQBhAGQALgAAD1MAbwB1AG4AZABlAHgAAAtJAG4AcAB1AHQAAClTAGUAbABlAGMAdAAgAGkAbgBw
AHUAdAAgAGMAbwBsAHUAbQBuAC4AAAliAGYAcAB2AAARYwBnAGoAawBxAHMAeAB6AAAFZAB0AAAF
bQBuAAAxTQB5AC4AUgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAAAA
Wh/+OtUc5UCknA3juMEBcgAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwE
AAASCAcGFRIYARIIBAAAEhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAAS
FAQgAQIcAyAACAQgABIVAyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgA
EwAIFs9JC7gMNOoIiYRdzYCAzJEJIAQBEiEIAhIlBCAAHQ4EIAEBDgQgAQECAyAAAgQoAB0OAygA
DgMoAAIDBhIkAwYSKAYgAgEIEiUFIAEBEhwDBhIhBSABARIhBSABAhAOBCABDg4CBg4CBggDBhIt
AwYSMQQAABItBAAAEjEFAAEBEjEECAASLQQIABIxAwYSNAIGHAQAABI0BAgAEjQFIAEBET0IAQAB
AAAAAAAFIAIBDg4XAQAKTXlUZW1wbGF0ZQc4LjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUS
GAESEQYVEhgBEhQEBwESDAQHARIIBAcBEhEEBwESFBMBAA5NeS5BcHBsaWNhdGlvbgAAEwEADk15
LldlYlNlcnZpY2VzAAAQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAAEAAEcHAMHAQIDBwEI
BgABEhURWQQHARIVAwcBDgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNl
cnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2Vf
XxNEaXNwb3NlX19JbnN0YW5jZV9fAAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAYHAhMAEwAF
AQAAAAAEBwEdDgUgAgEIHAQgAQEIBgcCHQ4dDgQgABJ5BCAAEn0GIAESgIEcBCAAEiUEIAEcCAUg
ABKAiQUgABKAjQUgABKAkQYgARKAlRwFIAIICAgFBwESgIEEAAECDgUgABKAmQUgABKAnQUgABKA
pQYgARKAqRwNIAQSgJUIEoCdCBGAsQYAAQESgKETBwcCAhKAgRKAlRKAmRKAnRKAoQQgAQMIBiAB
EoC5AwQgAQgDBiABEoC5CAUgAgEDCAYgARKAuQ4MBwgSgLkOCAgICAMIDQEACFZhbGlkYXRlAAAZ
AQAUU2VsZWN0IGlucHV0IGNvbHVtbi4AAAUgABKAzQcgAgEOEoDNBgcCEi0SLQQHARIxCAEAAgAA
AAAABAABARwEBwESNAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwEMAQAH
MS4wLjAuMAAAKQEAJGIyNzE0MzI1LTkzNTctNGRmMS1iMzM3LWQ2YTE3NWQwZGY3ZQAABQEAAQAA
HwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEwAAA8AQA3U2NyaXB0Q29tcG9uZW50XzI4YTEy
ODYwYzZhYjQzMjlhOWFhMzdmMTViNGEyZGQ4LnZicHJvagAADgEACU1pY3Jvc29mdAAAAFRHAAAA
AAAAAAAAAG5HAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgRwAAAAAAAAAAAAAAAF9Db3JEbGxN
YWluAG1zY29yZWUuZGxsAAAAAAD/JQAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAAo
AACADgAAAEgAAIAQAAAAYAAAgAAAAAAAAAAAAAAAAAAAAgACAAAAeAAAgAMAAACQAACAAAAAAAAA
AAAAAAAAAAABAAB/AACoAACAAAAAAAAAAAAAAAAAAAABAAEAAADAAACAAAAAAAAAAAAAAAAAAAAB
AAAAAADYAAAAAAAAAAAAAAAAAAAAAAABAAAAAADoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAD4AAAA
AAAAAAAAAAAAAAAAAAABAAAAAAAIAQAAgGUAAOgCAAAAAAAAAAAAAGhoAAAoAQAAAAAAAAAAAACQ
aQAAIgAAAAAAAAAAAAAAGGEAAGgEAAAAAAAAAAAAAGgENAAAAFYAUwBfAFYARQBSAFMASQBPAE4A
XwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAABAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAA
AAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMA
bABhAHQAaQBvAG4AAAAAAAAAsATIAwAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAACk
AwAAAQAwADAAMAAwADAANABiADAAAAA0AAoAAQBDAG8AbQBwAGEAbgB5AE4AYQBtAGUAAAAAAE0A
aQBjAHIAbwBzAG8AZgB0AAAAmAA4AAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAA
AFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMgA4AGEAMQAyADgANgAwAGMANgBhAGIA
NAAzADIAOQBhADkAYQBhADMANwBmADEANQBiADQAYQAyAGQAZAA4AC4AdgBiAHAAcgBvAGoAAAAw
AAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAACYADwAAQBJAG4A
dABlAHIAbgBhAGwATgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMgA4
AGEAMQAyADgANgAwAGMANgBhAGIANAAzADIAOQBhADkAYQBhADMANwBmADEANQBiADQAYQAyAGQA
ZAA4AC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAFwAGwABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBn
AGgAdAAAAEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgAE0AaQBjAHIAbwBzAG8AZgB0ACAAMgAwADEA
MAAAAAAAoAA8AAEATwByAGkAZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0
AEMAbwBtAHAAbwBuAGUAbgB0AF8AMgA4AGEAMQAyADgANgAwAGMANgBhAGIANAAzADIAOQBhADkA
YQBhADMANwBmADEANQBiADQAYQAyAGQAZAA4AC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAJAAOAAB
AFAAcgBvAGQAdQBjAHQATgBhAG0AZQAAAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQA
XwAyADgAYQAxADIAOAA2ADAAYwA2AGEAYgA0ADMAMgA5AGEAOQBhAGEAMwA3AGYAMQA1AGIANABh
ADIAZABkADgALgB2AGIAcAByAG8AagAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8A
bgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBu
AAAAMQAuADAALgAwAC4AMAAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/
AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAB3d3d3d3d3d3d3d3d3d3AERERERERERERERERERERwBP//////////
///////0cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/
////////////////9HAE//////////////////RwBP/////////////////0cAT/////////////
////9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE////
//////////////RwBP/////////////////0cAT/////////////////9HAE////////////////
//RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBIiIiIiI
iIiIiIiIiIiEcARERERERERERERERERERHAETExMTExMTExMTs7OSXRwBMzMzMzMzMzMzMzMzMzE
AABEREREREREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAD/////////////////////wAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGA
AAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
AAGAAAADwAAAB////////////////ygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA
/wD/AP//AAD///8AAAAAAAAAAAAHd3d3d3d3d0RERERERERHT///////+EdP///////4R0//////
//hHT///////+EdP///////4R0////////hHT///////+EdP///////4R0iIiIiIiIhHTMzMzMzM
zEfEREREREREwAAAAAAAAAAAAAAAAAAAAAD//wAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAP//AAD//wAAAAABAAIAICAQAAEABADoAgAAAgAQEBAA
AQAEACgBAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAMAAAAgDcAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property>
<property id="34" name="UserComponentTypeName" dataType="System.String" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property>
<property id="258" name="VSTAProjectName" dataType="System.String" state="default" isArray="false" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None">ScriptComponent_28a12860c6ab4329a9aa37f15b4a2dd8</property>
<property id="259" name="ScriptLanguage" dataType="System.String" state="default" isArray="false" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" UITypeEditor="" containsID="false" expressionType="None">VisualBasic</property></properties>
<inputs>
<input id="24" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></input>
</inputs>
<outputs>
<output id="25" name="Output" description="" exclusionGroup="0" synchronousInputId="24" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns>
<outputColumn id="190" name="Soundex" description="" lineageId="190" precision="0" scale="0" length="4" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" /></outputColumns><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>