<component id="40" name="Join Column" 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="44" 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_253e3764fea64551abc411476fc6e3d8.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_253e3764fea64551abc411476fc6e3d8.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2012")> 
<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("17ef1b8f-9d47-41bc-ab11-bcbf34533fad")> 

' 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 Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        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

<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)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    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[\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[\scriptcomponent_253e3764fea64551abc411476fc6e3d8.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_253e3764fea64551abc411476fc6e3d8.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_253e3764fea64551abc411476fc6e3d8.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{DD01B8A4-A189-4FF6-A116-B513994BDE2F}</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[\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 OutputBuffer As OutputBuffer

    Dim InputsFinished As Integer = 0

    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

        If Buffer.EndOfRowset Then
            InputsFinished = InputsFinished + 1
            If InputsFinished = 1 Then
                FinishOutputs()
                MarkOutputsFinished()
            End If
        End If

    End Sub

    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)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = MyBase.ComponentMetaData.OutputCollection("Output").ID Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I))
            End If
        Next

        CreateNewOutputRows()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    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-2012 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.Text
Imports System.Text.RegularExpressions

Imports Microsoft.SqlServer.Dts.Pipeline
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 ProcessInput( _
        ByVal InputID As Integer, _
        ByVal Buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer)

        While Buffer.NextRow()
            Dim groupValue As Object = Buffer(m_groupIndex)

            If TypeOf groupValue Is BlobColumn Then
                groupValue = Buffer.GetString(m_joinIndex)
            End If

            If groupValue Is Nothing Then
                ' Ignore NULL groups.
                Continue While
            End If

            Dim joinValue As Object = Buffer(m_joinIndex)

            If joinValue Is Nothing Then
                joinValue = String.Empty
            End If

            If TypeOf joinValue Is BlobColumn Then
                joinValue = Buffer.GetString(m_joinIndex)
            End If

            If m_currentGroup Is Nothing Then
                ' Init current group.
                m_currentGroup = groupValue
            End If

            If Not m_currentGroup.Equals(groupValue) Then
                ' New group. Setup output record for existing data.
                Call InsertJoinOutput_()
                m_currentGroup = groupValue
            End If

            ' Append join value to group.
            If m_sbJoin.Length > 0 Then
                Call m_sbJoin.Append(m_joinSymbol)
            End If

            Call m_sbJoin.Append(joinValue)
        End While

        If Buffer.EndOfRowset Then
            Call InsertJoinOutput_()
            Call MyBase.OutputBuffer.SetEndOfRowset()
        End If
    End Sub ' ProcessInput


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

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

        ' Find group column index.
        m_groupIndex = MyBase.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.GroupColumn).LineageID)

        ' Find join column index.
        m_joinIndex = MyBase.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.JoinColumn).LineageID)

        ' Get join symbol.
        m_joinSymbol = Regex.Unescape(Me.JoinSymbol)

        m_sbJoin = New StringBuilder()
    End Sub ' PreExecute


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

        Try
            Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()

            If virtInput.VirtualInputColumnCollection.Count > 0 AndAlso _
                String.IsNullOrEmpty(Me.GroupColumn) Then

                Throw New Exception("Select group column.")
            End If

            If virtInput.VirtualInputColumnCollection.Count > 0 AndAlso _
                String.IsNullOrEmpty(Me.JoinColumn) Then

                Throw New Exception("Select join column.")
            End If

            If String.IsNullOrEmpty(Me.JoinSymbol) Then
                Throw New Exception("Specify join symbol.")
            End If

            Dim managedComponent As CManagedComponentWrapper = Me.ComponentMetaData.Instantiate()
            Call input.InputColumnCollection.RemoveAll()

            ' Setup selected group column.
            Dim groupColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                input.ID, _
                virtInput, _
                virtInput.VirtualInputColumnCollection(Me.GroupColumn).LineageID, _
                DTSUsageType.UT_READONLY)

            ' Setup selected join column.
            Dim joinColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                input.ID, _
                virtInput, _
                virtInput.VirtualInputColumnCollection(Me.JoinColumn).LineageID, _
                DTSUsageType.UT_READONLY)

            ' Setup output columns for group and join column.
            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
            Dim outColumn As IDTSOutputColumn100

            If output.OutputColumnCollection.Count = 0 Then
                ' Setup group output column.
                outColumn = output.OutputColumnCollection.[New]()
                outColumn.Name = groupColumn.Name

                ' Setup join output column.
                outColumn = output.OutputColumnCollection.[New]()
                outColumn.Name = joinColumn.Name
                Call outColumn.SetDataTypeProperties(DataType.DT_NTEXT, 0, 0, 0, 0)
            End If

            ' Update group output column.
            outColumn = output.OutputColumnCollection(0)
            outColumn.Name = groupColumn.Name
            Call outColumn.SetDataTypeProperties( _
                groupColumn.DataType, _
                groupColumn.Length, _
                groupColumn.Precision, _
                groupColumn.Scale, _
                groupColumn.CodePage)

            ' Update group output column name.
            outColumn = output.OutputColumnCollection(1)
            outColumn.Name = joinColumn.Name
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select column to join.")> _
    <InputVirtualColumn()> _
    Public Property JoinColumn() As String
        Get
            JoinColumn = m_joinColumn
        End Get
        Set(ByVal value As String)
            m_joinColumn = value
        End Set
    End Property    ' JoinColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify join symbol.")> _
    Public Property JoinSymbol() As String
        Get
            JoinSymbol = m_joinSymbolRE
        End Get
        Set(ByVal value As String)
            m_joinSymbolRE = value
        End Set
    End Property    ' JoinSymbol
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub InsertJoinOutput_()
        With Me.OutputBuffer
            Call .AddRow()
            .Buffer(0) = m_currentGroup
            .Buffer(1) = m_sbJoin.ToString()
        End With

        m_sbJoin.Length = 0
    End Sub ' InsertJoinOutput_
#End Region ' Internals


#Region "Attributes"
    Private m_groupColumn As String
    Private m_joinColumn As String
    Private m_joinSymbolRE As String

    Private m_groupIndex As Integer
    Private m_joinIndex As Integer
    Private m_joinSymbol As String
    Private m_currentGroup As Object
    Private m_sbJoin As StringBuilder
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="45" 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_253e3764fea64551abc411476fc6e3d8.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
RgL4BNYAFQCYJQAAAABGAqYFEwAXAEQmAAAAAAYAsQX3ABcAVCgAAAAABgjFBXEAGABsKAAAAAAG
CNUF/QAYAHgoAAAAAAYI6wVxABkAkCgAAAAABgj6Bf0AGQCcKAAAAAAGCAkGcQAaALQoAAAAAAYI
GAb9ABoAwCgAAAAAAQAnBhMAGwAYKQAAAAADGMYBEwAbACApAAAAABYIMwcYARsAXCkAAAAAFghH
Bx0BGwBwKQAAAAAWCFMHIgEbAHgpAAAAABEYAQIXABwAjCkAAAAABhjGARMAHACUKQAAAAAWCK8H
NgEcAAAAAQDCAgAAAQD7AgAAAQD7AgAAAQAzBAAAAgA9BAAAAwBGBAAABABOBAAAAQAzBAAAAgA9
BAAAAwBGBAAABABOBAAAAQAFBQAAAgBOBAAAAQA7BQAAAgBDBQAAAwBNBQAAAQBOBAAAAQCSBQAA
AQAzBAAAAQAzBAAAAQAFBQAAAgBOBAAAAQC6BQAAAQDlBQAAAQDlBQAAAQDlBQAAAQBfBwkAxgET
AHkAxgFAAYkAxgFPAREAxgETAJEAxgETACQAxgETACwAxgETADQAxgETADwAxgETACQAGAOLACwA
GAOLADQAGAOLADwAGAOLAJkAxgETAKEAxgETAKkAxgH9ALEADwnoARkAuwJjABkAxAJoACkAMAn1
ARkA3QJxAMEATAkFAhkAxgETAMkAxgEVAkQAYQOQAEwArweLAEwAdgmSAkwAxgETANEAxgGfAjkA
xgGvAOEAhAS+AOEAjAS+AOkAxgGfAuEAvwQTAOEAxgQTAFEAxgETAEEAQwqvAvEAcAq0AvkAkQq5
AgEBmgpoAEkAoQq+APEAyQrAAgkBkQrGAhEBmgpoAEkAkQrSAkkA9wrXAtkAAQsCAVkABwtoAFkA
EgvcAlkAEgviAkkAhAS+AEEApgUTAFEAMQvtAikBWAvzAgEBagtoAAEBkgv5AjkBkQr/AkEBvwto
ADEBzQsGA0kBCAwMA1kAxgETAAEBXAwXA2EBkAwdA3EBsQxoANkAuwwjA2kBxgH9APEAyQwoAzkB
1QwTAHEBkQouA3kBvwtoAIEBIQ01AxEBTA1DA5EBsQxoAJEBZw1JA0EBaw1xAFkBdA39AFkB0Q1P
A5EBkQpaA0EB5w1hA0EBBwtoAEEB9A1oAEEBAg5oAEEBDA5oAKEBJQ5nA2kBNQ5xAKEBQQ4XADkA
aguLA0kAUw6QA1kA3QJxAFkAXA6WA6kBxgETALEBxgH9ALkBxgETAMEBxgH9ACkAGA/+A2EAxgEE
BHEAxgETANEBPg8hBNEBRA8hBNkBxgETAOEBxgGWA+kBxgETAPEBxgH9APkBxgH9AAECxgH9AAkC
xgH9ABECxgH9ABkCxgH9ACECxgH9ACkCxgH9ACkAgwDKAS4AYwPtBC4AOwNTBC4AWwOwBC4AcwOw
BC4AawOkAi4AKwMrBC4AMwM0BC4AQwNgBC4A6wCkAi4ACwGKBC4ASwOkAi4AUwOQBEAAEwBGAUAA
KwBtAUMAEwBGAUMAGwBVAUkAgwCiAWMAEwBGAWMAGwBVAWkAgwDbAYAAKwBtAYMAewBtAYMAcwBt
AYMAGwBVAYkAgwC2AaAAKwBtAaMAEwBGAaMAwwAdAsAAKwBtAcMA6wCkAsMAEwBGAeAAKwBtAeMA
CwGkAgABKwBtAQABEwBGAQMBCwGkAiABKwBtASABEwBGASMBCwGkAkABKwBtAUABEwBGAUkB6wJt
AUkB8wKuA2ABKwBtAWABEwBGAWkB8wLIA2kB6wJtAYABKwBtAYMBCwGkAoMB2wJtAYMB4wKgA4kB
8wLkA6ABKwBtAakBEwAYBMABEwBGAcABKwBtAckBEwAYBOABKwBtAekBIwNtAQACKwBtAQACEwBG
AYAECwGkAqAECwGkAo4BkwGYAZ0B7QHxAfwBAQIQAhACmAKqAqoC7QHtAaoCqgLtAc0C6AIRA24D
AQIBAgECmwMMBBMEJgQEAAEABgAFAAcABgAIAAgADAAKAA0ADQAOAA8AAADqAU8AAACjAlQAAABS
AlkAAACvAl4AAABrA5gAAACYBMIAAACrBMIAAACYBMIAAACrBMIAAAC7BgwBAADHBgwBAADSBgwB
AADuBigBAABlBy0BAABfBzsBAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgASAA0AAgAT
AA8AAgAXABEAAgAYABMAAgAqABUAAQArABUAAgAsABcAAQAtABcAAQAvABkAAgAuABkAAgAyABsA
AgAzAB0AAQA0AB0AAgA3AB8AdQB1AIgAcgF5AYABhwF/AoYCBIAAAAEAAAAAAAAAAAAAAAAAvAAA
AAIAAAAAAAAAAAAAAAEACgAAAAAACAAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdAHcD
AAAAAAoAAAAAAAAAAAAAAKYAtQMAAAAACgAAAAAAAAAAAAAApgADBAAAAAACAAAAAAAAAAAAAAAB
APMBAAAAAAoAAAAAAAAAAAAAAKYA3QkAAAAACgAAAAAAAAAAAAAApgB9DQAAAAAAAAAAAQAAAGYP
AAAFAAQABgAEAAAAEAAMAPkCAAAQABkA+QIAAAAAGwD5Ai0ACwItAI0CAAAAAAA8TW9kdWxlPgBt
c2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25l
bnRfMjUzZTM3NjRmZWE2NDU1MWFiYzQxMTQ3NmZjNmUzZDgudmJwcm9qLk15AE15Q29tcHV0ZXIA
TXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEASW5wdXRC
dWZmZXIAU2NyaXB0Q29tcG9uZW50XzI1M2UzNzY0ZmVhNjQ1NTFhYmM0MTE0NzZmYzZlM2Q4LnZi
cHJvagBPdXRwdXRCdWZmZXIAVXNlckNvbXBvbmVudABDb25uZWN0aW9ucwBWYXJpYWJsZXMAU2Ny
aXB0TWFpbgBNeVJlc291cmNlcwBTY3JpcHRDb21wb25lbnRfMjUzZTM3NjRmZWE2NDU1MWFiYzQx
MTQ3NmZjNmUzZDgudmJwcm9qLk15LlJlc291cmNlcwBNeVNldHRpbmdzAE1pY3Jvc29mdC5WaXN1
YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3Nv
ZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRf
Q29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9i
amVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNl
cnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZp
Y2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0lu
c3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3NlX19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBN
aWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBt
X0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJvYy5TU0lTUGx1cy4yMDA4AENvenlSb2MuU3FsU2Vy
dmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1p
Y3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQu
U3FsU2VydmVyLlBpcGVsaW5lSG9zdABQaXBlbGluZUJ1ZmZlcgBDb21wb25lbnQAT2JqZWN0SUQA
SXNJbnB1dABCdWZmZXIAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29s
dW1ucwBOZXh0Um93AEVuZE9mUm93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRD
b2x1bW5zAEFkZFJvdwBTZXRFbmRPZlJvd3NldABTY3JpcHRDb21wb25lbnRQbHVzAElucHV0c0Zp
bmlzaGVkAFByb2Nlc3NJbnB1dABJbnB1dElEAEZpbmlzaE91dHB1dHMATWFya091dHB1dHNGaW5p
c2hlZABQcmltZU91dHB1dABPdXRwdXRzAE91dHB1dElEcwBCdWZmZXJzAENyZWF0ZU5ld091dHB1
dFJvd3MASW5wdXRfUHJvY2Vzc0lucHV0AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBSb3cAUGFyZW50
Q29tcG9uZW50AFByZUV4ZWN1dGUAVmFsaWRhdGUAZXJyTWVzc2FnZQBnZXRfR3JvdXBDb2x1bW4A
c2V0X0dyb3VwQ29sdW1uAHZhbHVlAGdldF9Kb2luQ29sdW1uAHNldF9Kb2luQ29sdW1uAGdldF9K
b2luU3ltYm9sAHNldF9Kb2luU3ltYm9sAEluc2VydEpvaW5PdXRwdXRfAG1fZ3JvdXBDb2x1bW4A
bV9qb2luQ29sdW1uAG1fam9pblN5bWJvbFJFAG1fZ3JvdXBJbmRleABtX2pvaW5JbmRleABtX2pv
aW5TeW1ib2wAbV9jdXJyZW50R3JvdXAAU3lzdGVtLlRleHQAU3RyaW5nQnVpbGRlcgBtX3NiSm9p
bgBHcm91cENvbHVtbgBKb2luQ29sdW1uAEpvaW5TeW1ib2wAU3lzdGVtLlJlc291cmNlcwBSZXNv
dXJjZU1hbmFnZXIAX3Jlc01ncgBTeXN0ZW0uR2xvYmFsaXphdGlvbgBDdWx0dXJlSW5mbwBfcmVz
Q3VsdHVyZQBnZXRfUmVzb3VyY2VNYW5hZ2VyAGdldF9DdWx0dXJlAHNldF9DdWx0dXJlAFZhbHVl
AEN1bHR1cmUAU3lzdGVtLkNvbmZpZ3VyYXRpb24AQXBwbGljYXRpb25TZXR0aW5nc0Jhc2UAbV9W
YWx1ZQBtX1N5bmNPYmplY3QAZ2V0X1ZhbHVlAFN5c3RlbS5Db21wb25lbnRNb2RlbABFZGl0b3JC
cm93c2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAU3lzdGVtLkNvZGVEb20uQ29t
cGlsZXIAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlhZ25vc3RpY3MARGVidWdnZXJI
aWRkZW5BdHRyaWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3Rh
bmRhcmRNb2R1bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAU3lzdGVtLkNvbXBv
bmVudE1vZGVsLkRlc2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5Db21w
aWxlclNlcnZpY2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZhbHVlAFJ1bnRpbWVUeXBlSGFu
ZGxlAEdldFR5cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJbnN0YW5jZQBNeUdyb3VwQ29s
bGVjdGlvbkF0dHJpYnV0ZQBzZXRfVmFsdWUAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2Vz
AENvbVZpc2libGVBdHRyaWJ1dGUAU3RyaW5nAFNjcmlwdEJ1ZmZlcgBDTFNDb21wbGlhbnRBdHRy
aWJ1dGUATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNl
cnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJRFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0Nv
bXBvbmVudE1ldGFEYXRhAElEVFNJbnB1dENvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sbGVjdGlv
bgBJRFRTSW5wdXQxMDAAZ2V0X0l0ZW0AZ2V0X0lEAGdldF9FbmRPZlJvd3NldABJRFRTT3V0cHV0
Q29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29sbGVjdGlvbgBJRFRTT3V0cHV0MTAwAEJsb2JDb2x1
bW4AR2V0U3RyaW5nAEVtcHR5AGdldF9MZW5ndGgAQXBwZW5kAEludDMyAFBpcGVsaW5lQ29tcG9u
ZW50AGdldF9Ib3N0Q29tcG9uZW50AElEVFNCdWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5h
Z2VyAGdldF9CdWZmZXIASURUU0lucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2x1
bW5Db2xsZWN0aW9uAElEVFNJbnB1dENvbHVtbjEwMABnZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5C
eUxpbmVhZ2VJRABTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMAUmVnZXgAVW5lc2NhcGUA
Q01hbmFnZWRDb21wb25lbnRXcmFwcGVyAElEVFNPdXRwdXRDb2x1bW4xMDAASURUU1ZpcnR1YWxJ
bnB1dDEwMABFeGNlcHRpb24AR2V0VmlydHVhbElucHV0AElEVFNWaXJ0dWFsSW5wdXRDb2x1bW5D
b2xsZWN0aW9uMTAwAGdldF9WaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uAGdldF9Db3VudABJ
c051bGxPckVtcHR5AEluc3RhbnRpYXRlAFJlbW92ZUFsbABJRFRTVmlydHVhbElucHV0Q29sdW1u
MTAwAElEVFNEZXNpZ250aW1lQ29tcG9uZW50MTAwAERUU1VzYWdlVHlwZQBTZXRVc2FnZVR5cGUA
SURUU091dHB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbHVtbkNvbGxlY3Rpb24A
TmV3AGdldF9OYW1lAHNldF9OYW1lAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAA
TWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAERhdGFUeXBlAFNldERhdGFU
eXBlUHJvcGVydGllcwBnZXRfRGF0YVR5cGUAZ2V0X1ByZWNpc2lvbgBnZXRfU2NhbGUAZ2V0X0Nv
ZGVQYWdlAFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBDbGVhclByb2pl
Y3RFcnJvcgBzZXRfSXRlbQBzZXRfTGVuZ3RoAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50
QXR0cmlidXRlAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3Bl
cnRpZXNBdHRyaWJ1dGUASW5wdXRWaXJ0dWFsQ29sdW1uQXR0cmlidXRlAERlc2NyaXB0aW9uQXR0
cmlidXRlAFN5c3RlbS5SZWZsZWN0aW9uAEFzc2VtYmx5AGdldF9Bc3NlbWJseQBTeXN0ZW0uVGhy
ZWFkaW5nAE1vbml0b3IARW50ZXIARXhpdABEZWJ1Z2dlck5vblVzZXJDb2RlQXR0cmlidXRlAFNj
cmlwdENvbXBvbmVudF8yNTNlMzc2NGZlYTY0NTUxYWJjNDExNDc2ZmM2ZTNkOC52YnByb2ouUmVz
b3VyY2VzLnJlc291cmNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVD
b21wYXRpYmlsaXR5QXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAR3VpZEF0
dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJp
YnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb21wYW55QXR0cmlidXRlAEFz
c2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTY3JpcHRD
b21wb25lbnRfMjUzZTM3NjRmZWE2NDU1MWFiYzQxMTQ3NmZjNmUzZDgudmJwcm9qLmRsbAAAAAtJ
AG4AcAB1AHQAAA1PAHUAdABwAHUAdAAAKVMAZQBsAGUAYwB0ACAAZwByAG8AdQBwACAAYwBvAGwA
dQBtAG4ALgAAJ1MAZQBsAGUAYwB0ACAAagBvAGkAbgAgAGMAbwBsAHUAbQBuAC4AAClTAHAAZQBj
AGkAZgB5ACAAagBvAGkAbgAgAHMAeQBtAGIAbwBsAC4AADFNAHkALgBSAGUAcwBvAHUAcgBjAGUA
cwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAAAAA2mP9dqSZ80effhdPfVMI+wAIt3pcVhk04IkI
sD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcGFRIYARIIBAAAEhEHBhUSGAESEQQA
ABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIcAyAACAQgABIVAyAADgIeAAcQAQEe
AB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9JC7gMNOoIiYRdzYCAzJEJIAQBEiEI
AhIlBCAAHQ4DIAACBCgAHQ4DBhIoAwYSLAMGEiACBggGIAIBCBIlCSADAQgdCB0SJQUgAQESHAMG
EiEFIAEBEiEFIAECEA4EIAEBDgIGDgIGHAMGEi0DKAAOAwYSMQMGEjUEAAASMQQAABI1BQABARI1
BAgAEjEECAASNQMGEjgEAAASOAQIABI4BSABARFBCAEAAQAAAAAABSACAQ4OFwEACk15VGVtcGxh
dGUHOC4wLjAuMAAABAEAAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwESCAQH
ARIRBAcBEhQTAQAOTXkuQXBwbGljYXRpb24AABMBAA5NeS5XZWJTZXJ2aWNlcwAAEAEAC015LkNv
bXB1dGVyAAAMAQAHTXkuVXNlcgAABAABHBwDBwECAwcBCAYAARIVEV0EBwESFQMHAQ4FEAEAHgAE
CgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0
dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAA
AAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAGBwITABMABCABAQIFAQAAAAAEBwEdDgQgABJ5BCAA
En0GIAESgIEcBSAAEoCFBiABEoCJHAQHAggIBCABHAgEIAEOCAUgARItDgUgARItHAQHAhwcBSAA
EoCVBSAAEoCZBSAAEoCdBiABEoChHAUgAggICAQAAQ4OBQcBEoCBBSAAEoCxBSAAEoC5BAABAg4F
IAASgKkGIAESgL0cDSAEEoChCBKAsQgRgMUFIAASgMkFIAASgK0KIAUBEYDNCAgICAYgARKArRwF
IAARgM0GAAEBEoC1HAcKAgISgKESgIESgKESgKkSgK0SgIkSgLESgLUEIAASJQUgAgEIHAQgAQEI
BAcBEiANAQAIVmFsaWRhdGUAABkBABRTZWxlY3QgZ3JvdXAgY29sdW1uLgAAGwEAFlNlbGVjdCBj
b2x1bW4gdG8gam9pbi4AABkBABRTcGVjaWZ5IGpvaW4gc3ltYm9sLgAABSAAEoDlByACAQ4SgOUG
BwISMRIxBAcBEjUIAQACAAAAAAAEAAEBHAQHARI4CAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhj
ZXB0aW9uVGhyb3dzAQwBAAcxLjAuMC4wAAApAQAkMTdlZjFiOGYtOWQ0Ny00MWJjLWFiMTEtYmNi
ZjM0NTMzZmFkAAAFAQABAAAfAQAaQ29weXJpZ2h0IEAgTWljcm9zb2Z0IDIwMTIAADwBADdTY3Jp
cHRDb21wb25lbnRfMjUzZTM3NjRmZWE2NDU1MWFiYzQxMTQ3NmZjNmUzZDgudmJwcm9qAAAOAQAJ
TWljcm9zb2Z0AACETgAAAAAAAAAAAACeTgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkE4AAAAA
AAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIEAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwAAACgAAIAO
AAAASAAAgBAAAABgAACAAAAAAAAAAAAAAAAAAAACAAIAAAB4AACAAwAAAJAAAIAAAAAAAAAAAAAA
AAAAAAEAAH8AAKgAAIAAAAAAAAAAAAAAAAAAAAEAAQAAAMAAAIAAAAAAAAAAAAAAAAAAAAEAAAAA
ANgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAOgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAPgAAAAAAAAA
AAAAAAAAAAAAAAEAAAAAAAgBAACAZQAA6AIAAAAAAAAAAAAAaGgAACgBAAAAAAAAAAAAAJBpAAAi
AAAAAAAAAAAAAAAYYQAAaAQAAAAAAAAAAAAAaAQ0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkA
TgBGAE8AAAAAAL0E7/4AAAEAAAABAAAAAAAAAAEAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAA
AAAAAABEAAAAAQBWAGEAcgBGAGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEA
dABpAG8AbgAAAAAAAACwBMgDAAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAAKQDAAAB
ADAAMAAwADAAMAA0AGIAMAAAADQACgABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAATQBpAGMA
cgBvAHMAbwBmAHQAAACYADgAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAUwBj
AHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAyADUAMwBlADMANwA2ADQAZgBlAGEANgA0ADUA
NQAxAGEAYgBjADQAMQAxADQANwA2AGYAYwA2AGUAMwBkADgALgB2AGIAcAByAG8AagAAADAACAAB
AEYAaQBsAGUAVgBlAHIAcwBpAG8AbgAAAAAAMQAuADAALgAwAC4AMAAAAJgAPAABAEkAbgB0AGUA
cgBuAGEAbABOAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAyADUAMwBl
ADMANwA2ADQAZgBlAGEANgA0ADUANQAxAGEAYgBjADQAMQAxADQANwA2AGYAYwA2AGUAMwBkADgA
LgB2AGIAcAByAG8AagAuAGQAbABsAAAAXAAbAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0
AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAATQBpAGMAcgBvAHMAbwBmAHQAIAAyADAAMQAyAAAA
AACgADwAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBv
AG0AcABvAG4AZQBuAHQAXwAyADUAMwBlADMANwA2ADQAZgBlAGEANgA0ADUANQAxAGEAYgBjADQA
MQAxADQANwA2AGYAYwA2AGUAMwBkADgALgB2AGIAcAByAG8AagAuAGQAbABsAAAAkAA4AAEAUABy
AG8AZAB1AGMAdABOAGEAbQBlAAAAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADIA
NQAzAGUAMwA3ADYANABmAGUAYQA2ADQANQA1ADEAYQBiAGMANAAxADEANAA3ADYAZgBjADYAZQAz
AGQAOAAuAHYAYgBwAHIAbwBqAAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAA
MQAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBiAGwAeQAgAFYAZQByAHMAaQBvAG4AAAAx
AC4AMAAuADAALgAwAAAAKAAAACAAAABAAAAAAQAEAAAAAACAAgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8A
AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAHd3d3d3d3d3d3d3d3d3cARERERERERERERERERERHAE////////////////
//RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//////
///////////0cAT/////////////////9HAE//////////////////RwBP/////////////////0
cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////////
////////9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE
//////////////////RwBP/////////////////0cAT/////////////////9HAEiIiIiIiIiIiI
iIiIiIRwBEREREREREREREREREREcARMTExMTExMTExOzs5JdHAEzMzMzMzMzMzMzMzMzMQAAERE
RERERERERERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAP/////////////////////AAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGA
AAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
AAPAAAAH////////////////KAAAABAAAAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A
//8AAP///wAAAAAAAAAAAAd3d3d3d3d3REREREREREdP///////4R0////////hHT///////+EdP
///////4R0////////hHT///////+EdP///////4R0////////hHSIiIiIiIiEdMzMzMzMzMR8RE
RERERETAAAAAAAAAAAAAAAAAAAAAAP//AACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAQAA//8AAP//AAAAAAEAAgAgIBAAAQAEAOgCAAACABAQEAABAAQA
KAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAACwPgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property>
<property id="52" 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="181" 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_253e3764fea64551abc411476fc6e3d8</property>
<property id="182" 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="42" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></input>
</inputs>
<outputs>
<output id="43" name="Output" description="" exclusionGroup="0" synchronousInputId="0" deleteOutputOnPathDetached="false" hasSideEffects="true" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>