<component id="568" name="XPath Transform" 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="572" 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_bace598fd265486ab18e19f203ac7042.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_bace598fd265486ab18e19f203ac7042.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2011")> 
<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("02f27c36-5a0b-4424-b8ca-ba4be6d29f75")> 

' 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 [Result]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [Result_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() {"Result"}
        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[\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[\scriptcomponent_bace598fd265486ab18e19f203ac7042.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_bace598fd265486ab18e19f203ac7042.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_bace598fd265486ab18e19f203ac7042.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{F25325C3-B632-4011-913D-58AEADF6AAC0}</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.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-2011 CozyRoc LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Xml
Imports System.Xml.XPath

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"InputColumn", "XPath", "Namespaces", "ResultSeparator"})> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim xml As String
        If Not Row.Buffer.IsNull(m_columnIndex) Then
            xml = Row.Buffer.GetString(m_columnIndex)
        End If

        If String.IsNullOrEmpty(xml) Then
            ' No data to process.
            Return
        End If

        Try
            Call m_document.LoadXml(xml)

            ' Load result.
            Dim result As String
            Dim iter As XPathNodeIterator = m_navigator.Select(m_expr)
            While iter.MoveNext()
                If Not String.IsNullOrEmpty(result) Then
                    result += Me.ResultSeparator
                End If

                result += CType(iter.Current, IHasXmlNode).GetNode().Value
            End While

            Row.Result = result
        Catch ex As Exception
            Dim cancel As Boolean = False
            Call MyBase.ComponentMetaData.FireError( _
                0, _
                "XPath Transform", _
                ex.Message, _
                String.Empty, _
                0, _
                cancel)
        End Try
    End Sub ' Input_ProcessInputRow


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

        Try
            ' Setup XML document, XPath navigator and expression.
            ' They will be used during processing.
            m_document = New XmlDocument()
            m_navigator = m_document.CreateNavigator()
            m_expr = m_navigator.Compile(Me.XPath)
            If Not String.IsNullOrEmpty(Me.Namespaces) Then
                ' Setup namespaces.
                Dim ns As XmlNamespaceManager = New XmlNamespaceManager(m_document.NameTable)
                Dim nsList() As String = Me.Namespaces.Split( _
                    New String() {"\r\n"}, _
                    StringSplitOptions.None)
                For Each nsCombo As String In nsList
                    If String.IsNullOrEmpty(nsCombo) Then
                        Continue For
                    End If

                    Dim equalIndex As Integer = nsCombo.IndexOf("=")
                    Dim prefix As String = nsCombo.Substring(0, equalIndex)
                    Dim uri As String = nsCombo.Substring(equalIndex + 1)
                    Call ns.AddNamespace(prefix, uri)
                Next

                Call m_expr.SetContext(ns)
            End If

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

            ' Find input column index.
            m_columnIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                input.InputColumnCollection(Me.InputColumn).LineageID)
        Catch ex As Exception
            Dim cancel As Boolean = False
            Call MyBase.ComponentMetaData.FireError( _
                0, _
                "XPath Transform", _
                ex.Message, _
                String.Empty, _
                0, _
                cancel)
        End Try
    End Sub ' PreExecute


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

        m_document = Nothing
        m_columnIndex = -1
    End Sub ' PostExecute


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

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

            If String.IsNullOrEmpty(Me.XPath) Then
                Throw New ApplicationException("Specify XPath statement.")
            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)

            result = True
        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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify XPath statement.")> _
    <TextDialog("Specify XPath statement")> _
    Public Property XPath() As String
        Get
            XPath = m_xpath
        End Get
        Set(ByVal value As String)
            m_xpath = value
        End Set
    End Property    ' XPath


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify XPath namespaces. The format is <namespace prefix>=<namespace>. Separate each namespace with newline.")> _
    <TextDialog("Specify XPath namespaces")> _
    Public Property Namespaces() As String
        Get
            Namespaces = m_namespace
        End Get
        Set(ByVal value As String)
            m_namespace = value
        End Set
    End Property    ' Namespaces


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify result separator string.")> _
    Public Property ResultSeparator() As String
        Get
            ResultSeparator = m_resultSep
        End Get
        Set(ByVal value As String)
            m_resultSep = value
        End Set
    End Property    ' ResultSeparator
#End Region ' Properties


#Region "Attributes"
    Private m_inputColumn As String
    Private m_xpath As String
    Private m_namespace As String
    Private m_resultSep As String

    Private m_document As XmlDocument
    Private m_navigator As XPathNavigator
    Private m_expr As XPathExpression
    Private m_columnIndex As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="573" 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_bace598fd265486ab18e19f203ac7042.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAMLOqk4AAAAAAAAAAOAAAiELAQgAADAAAAAMAAAAAAAADk4A
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAALhNAABTAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAFC4AAAAgAAAAMAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAAAyAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAAPAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAADw
TQAAAAAAAEgAAAACAAUAaCgAAFAlAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgAyAgMEBQ4EKB4AAAoqAAAAEzABAAcAAAAMAAARFo0dAAABKgAm
AhYDbx8AAAoqAABiAywJAhZvIAAACisLcgEAAHBzIQAACnoqAAAAEzADABEAAAANAAARF40dAAAB
CwcWcp4AAHCiByoAAAATMAEACQAAAA4AABECKCIAAAoKBioAAAATMAEACQAAAA8AABECKCMAAAoK
BioAAAB+AiglAAAKAgJzHAAABn0GAAAEAgJzHQAABn0HAAAEKrYDAigmAAAKbycAAApyrAAAcG8o
AAAKbykAAAozDwICAxcEcxEAAAZvGgAABioAAEorBwIDbxsAAAYDbxYAAAYt8SoABioAADoCKBcA
AAoCA30IAAAEKgA6AigXAAAKAgN9CQAABCoAHgIoGAAABiobMAcAwgAAABAAABEDbyoAAAoCexEA
AARvKwAACi0SA28qAAAKAnsRAAAEbywAAAoKBigtAAAKLAEqAnsOAAAEBm8uAAAKAnsPAAAEAnsQ
AAAEby8AAAoLKzEIKC0AAAotDQgCbykAAAYoMAAACgwIB28xAAAKdCYAAAFvMgAACm8zAAAKKDAA
AAoMB280AAAKLccDCG8TAAAG3jElKDUAAAoTBBYNAigmAAAKFnK4AABwEQRvNgAACn43AAAKFhID
bzgAAAooOQAACt4AKgAAAQwAAAAALgBikAAxJQAAARswBwBaAQAAEQAAEQIoOgAACgJzOwAACn0O
AAAEAgJ7DgAABG88AAAKfQ8AAAQCAnsPAAAEAm8lAAAGbz0AAAp9EAAABAJvJwAABigtAAAKOpMA
AAACew4AAARvPgAACnM/AAAKCwJvJwAABheNHQAAARMJEQkWctgAAHCiEQkWb0AAAAoMCBMLFhMK
K0YRCxEKmhMEEQQoLQAACiwCKy4RBHLiAABwb0EAAAoNEQQWCW9CAAAKEwURBAkX1m9DAAAKEwYH
EQURBm9EAAAKEQoX1hMKEQoRC463MrICexAAAAQHb0UAAAoCbyYAAApvJwAAChaMLAAAAW8oAAAK
CgICb0YAAApvRwAACgZvSAAACgZvSQAACgJvIwAABm9KAAAKb0sAAApvTAAACn0RAAAE3jIlKDUA
AAoTCBYTBwIoJgAAChZyuAAAcBEIbzYAAAp+NwAAChYSB284AAAKKDkAAAreACoAAEEYAAAAAAAA
BgAAACEBAAAnAQAAMgAAACUAAAFWAihNAAAKAhR9DgAABAIVfREAAAQqAAAbMAUAsQAAABIAABEC
byMAAAYoLQAACiwLcuYAAHBzTgAACnoCbyUAAAYoLQAACiwLchABAHBzTgAACnoCbyYAAApvTwAA
ChMEAm8mAAAKbycAAAoWjCwAAAFvKAAACgwIb1AAAAoTBQhvSQAACm9RAAAKEQQIbykAAAoRBREF
b1IAAAoCbyMAAAZvUwAACm9UAAAKFm9VAAAKDRcK3holKDUAAAoTBhYKAxEGbzYAAApRKDkAAAre
AAYLByoAAAABDAAAAAAAAJOTABolAAABEzABAAkAAAATAAARAnsKAAAECgYqAAAAIgIDfQoAAAQq
AAAAEzABAAkAAAAUAAARAnsLAAAECgYqAAAAIgIDfQsAAAQqAAAAEzABAAkAAAAVAAARAnsMAAAE
CgYqAAAAIgIDfQwAAAQqAAAAEzABAAkAAAAWAAARAnsNAAAECgYqAAAAIgIDfQ0AAAQqAAAAHgIo
FwAACioTMAIALQAAABcAABF+EgAABC0gckIBAHDQDAAAAigUAAAKb1wAAApzXQAACgsHgBIAAAR+
EgAABCoAAAATMAEABgAAABgAABF+EwAABCoAAB4CgBMAAAQqQnMXAAAKKBEAAAqAFQAABCoAAAAe
AiheAAAKKhswAQA/AAAAGQAAEX4UAAAELTJ+FQAABCgRAAAKKF8AAAp+FAAABC0cczAAAAaAFAAA
BN4QfhUAAAQoEQAACihgAAAK3H4UAAAEKgABDAAAAgAdAAwpABAAAAABQlNKQgEAAQAAAAAADAAA
AHYyLjAuNTA3MjcAAAAABQBsAAAAxAwAACN+AAAwDQAAiBAAACNTdHJpbmdzAAAAALgdAAB0AQAA
I1VTACwfAAAQAAAAI0dVSUQAAAA8HwAAFAYAACNCbG9iAAAAAAAAAAIAAAFXFaIJCQ8AAAD6ATMA
FgAAAQAAAEoAAAANAAAAFQAAADEAAAAWAAAAawAAAEIAAAAZAAAABgAAABAAAAAVAAAACQAAAAEA
AAAIAAAAAQAAAAIAAAADAAAAAgAAAAAAShABAAAAAAAKAKkBfwEKAN0BvwEGAO0B5gEKAEUCfwEG
AMMC5gEKAEUDGwMOAJcDgAMSAOYDxQMWABcExQMOAOoEgAMaADQGKQYaAFwGSwYaAHcGSwYGANoG
yQYGAAcH8gYeAGgHUwceALUHnwceAM4HnwceAPsH4wcGACUIEggKAGQIPQgKAHwIEwAeALEIlAgG
AOYIxggGAAQJ5gEGACgJ5gEKAEEJEwAGAIUJZgkGAJkJ5gEGALEJ5gESAMsJxQMGANgJ5gEiADsK
EgoiAGoKEgoiAJUKEgoaALIKSwYGAMQK5gEaABoLKQYaACYLKQYKAD8LPQgaAIkLKQYaALULKQYG
ANAL5gEGABMM5gEWABkMxQMiAD0MEgoiAGQMEgoiAJsMEgoiANIMEgoiAOsMEgoGAP8M5gEiADoN
EgoiAH8NEgoiAJkNEgoiALQNEgoSAM4NxQMOABcO9Q0OADMO9Q0OAEsO9Q0eAF8OnwcOAHQO9Q0G
AKIOkA4GAMkOuA4GANwOEggGAEUPxggGAGUPxggGAIMPkA4GAKAPZgkGAK4PkA4GAMkPkA4GAOQP
kA4GAP0PkA4GABYQkA4GADMQkA4AAAAAAQAAAAAAAQABAAAAAAApADcABQABAAEAAAAAAHIANwAJ
AAEAAgAAARAAfQA3AA0AAQADAAUBAACHAAAADQAFAAgABQEAAJUAAAANAAUADwABAAAAsAC8AB0A
BgARAAEAAAD0ALwAKQAGABgAAQAAAAIBvAANAAgAHAABAAAADgG8AA0ACQAdAAEAAAAYAbwAIAAK
AB4AAAAAACMBLwENABIAKwAAARAAdAG8AEEAFAAvADEACAIgADEAMQItADEAUwI6ADEAeAJHACEA
VAOQAAYAAgHZAAYADgHdAAEAQAXuAAEAQAXuAAEA+wX+AAEACQb+AAEAEQb+AAEAHQb+AAEAQAYB
AQEAawYFAQEAhwYJAQEAjgYNAREA6gYQAREAEwcUAREAgAcyAREAiAc2AQghAAAAAAYYuQETAAEA
ECEAAAAABhi5ARMAAQAYIQAAAAARGPQBFwABAEQhAAAAABMI+wEbAAEAXCEAAAAAEwghAigAAQB0
IQAAAAATCEoCNQABAIwhAAAAABMIaAJCAAEApCEAAAAARgKuAmMAAQDAIQAAAABGArcCaAACANQh
AAAAAIMAyAJsAAIA7CEAAAAARgLQAnEAAgAAIgAAAAARANkCeAACABwiAAAAAAEA9wKAAAMAOCIA
AAAABhi5ARMABABAIgAAAAADCAsDiwAEAHQiAAAAAAYYuQETAAQAiCIAAAAABhi5Aa8ABACYIgAA
AABGCkgEuQAIAKwiAAAAAAYIXwS+AAgAuCIAAAAABghwBMMACQDUIgAAAABGCoIEuQAKAPQiAAAA
AIYAmgTIAAoADCMAAAAAhgCiBMgACgAkIwAAAAAGGLkBEwAKAEQjAAAAAEYC/gThAAoAdCMAAAAA
RgMTBegADACIIwAAAABGAyYF6AANAIwjAAAAAAYYuQHyAA4AnCMAAAAABhi5AfIADwCsIwAAAAAG
GLkBEwAQALQjAAAAAEYCJgXoABAAlCQAAAAARgJQBRMAEQAYJgAAAABGAlsFEwARADAmAAAAAAYA
ZwX4ABEAACcAAAAABgh7BXEAEgAYJwAAAAAGCIsFvgASACQnAAAAAAYIoQVxABMAPCcAAAAABgir
Bb4AEwBIJwAAAAAGCLUFcQAUAGAnAAAAAAYIxAW+ABQAbCcAAAAABgjTBXEAFQCEJwAAAAAGCOcF
vgAVAJAnAAAAAAMYuQETABYAmCcAAAAAFggfBxgBFgDUJwAAAAAWCDMHHQEWAOgnAAAAABYIPwci
ARYA8CcAAAAAERj0ARcAFwAEKAAAAAAGGLkBEwAXAAwoAAAAABYIlQc5ARcAAAABALUCAAABAO4C
AAABAO4CAAABACYEAAACADAEAAADADkEAAAEAEEEAAABAGoEAAABAGoEAAABAAsFAAACAEEEAAAB
AEEEAAABADwFAAABACYEAAABACYEAAABADwFAAABAHAFAAABAJsFAAABAJsFAAABAJsFAAABAJsF
AAABAGoECQC5ARMAiQC5AUMBmQC5AVIBEQC5ARMAoQC5ARMAJAC5ARMALAC5ARMANAC5ARMAPAC5
ARMAJAALA4sALAALA4sANAALA4sAPAALA4sAqQC5ARMAsQC5ARMAuQC5Ab4AwQD1COsBGQCuAmMA
GQC3AmgAKQAWCfgBGQDQAnEA0QAyCQgCGQC5ARMA2QC5ARgCRABUA5AATACVB4sATABcCZUCTAC5
ARMA4QC5AcMAOQC5Aa8AOQCgCa0COQCpCbMC8QC5Ab4A+QCaBMgA+QCiBMgAAQG5AcMAUQC5ARMA
QQBUCr8CCQGBCsUCEQGiCssCGQGrCmgAOQDOCtICSQDZCtcCSQDgCtwC6QDqCuECWQD4Cr4AYQAA
C+YC6QAHC+4CIQEOC/QCMQEuC/kCOQGVB3EAIQE2C8gAQQFLC/8CKQFbC3EA6QBnC/4ACQFtCwYD
QQF3CxcAQQBQBRMAWQC5ARMAWQCdC/QCYQCtCx0DWQDCCyMDSQG5ASkD6QDjCzAD6QDpCzoD6QDx
Cz8D6QDxC9wCSQH7C1IBaQAIDEUDUQArDEwDaQFSDFIDGQHOCmgAGQGBDFgDeQGiCl4DgQGuDGgA
cQG8DGUDQQBbBRMAmQG5Ab4ACQEUDYMDGQEgDYkDeQEwDRMAkQFeDY8DoQGiCpUDqQGuDGgAsQHB
DZwDwQG5ARMAyQG5Ab4A0QG5AcwD2QG5Ab4A4QG5Ab4A6QG5ARMAKQCrDhQFcQC5ARoFgQC5ARMA
+QHRDjcF+QHXDjcFAQK5ARMACQK5AbMCEQK5ARMAGQK5Ab4AIQK5Ab4AKQK5Ab4AMQK5Ab4AOQK5
Ab4AQQK5Ab4ASQK5Ab4AUQK5Ab4AKQCDAKUBLgBLAwMGLgAjA2kFLgBDA8YFLgBbA8YFLgBTA6IC
LgATA0EFLgAbA0oFLgArA3YFLgDrAKICLgAjAaAFLgAzA6ICLgA7A6YFQAATAEkBQAArAHABQwAT
AEkBQwAbAFgBSQCDANcBYwATAEkBYwAbAFgBaQCDALYBgAArAHABgwB7AHABgwBzAHABgwAbAFgB
iQCDAMMBoAArAHABowATAEkBowDDACACwAArAHABwwATAEkBwwDrAKIC4AArAHAB4wAjAaICAAET
AEkBAAErAHABAwEjAaICIAErAHABIAETAEkBQAErAHABQAETAEkBSQHTAmkESQHbAnABYAErAHAB
YAETAEkBYwHDAtIDYwEjAaICYwGzAnABYwG7Ar4DaQHTAiUEaQHLAggEgAErAHABiQHTAqEEiQHL
AoMEoAErAHABqQHTAkMEwAETAEkBwAErAHAByQETAC4F4AErAHAB6QETAC4FAAIrAHABAAITAEkB
CQILA3ABgAMjAaICoAMjAaICkQGWAZsBoAHwAfQB/wEEAhMCEwKbAqgCuALwAfABEQNrA6oDBAIE
AgQCBAIiBSkFPAUEAAEABgAFAAcABgALAAoADAAOAA0AEAAAAN0BTwAAAJYCVAAAAEUCWQAAAKIC
XgAAAF4DmAAAAK4EzAAAAMEE0QAAAMgE1QAAANYEzAAAAJwG0QAAAKgG0QAAAK4G0QAAALkG0QAA
ANoGKAEAAEsHLQEAAGoEPgECAAQAAwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQABABMA
DwABABQAEQACABUAEwABACQAFQACACMAFQABACYAFwACACUAFwACACcAGQABACgAGQACACkAGwAB
ACoAGwACACwAHQACAC0AHwABAC4AHwACADEAIQB1AHUAiAB1AXwBgwGKAYICiQIEgAAAAQAAAAAA
AAAAAAAAAAC8AAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAIAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAA
AAAAAAAAAJ0AagMAAAAACgAAAAAAAAAAAAAApgCoAwAAAAAKAAAAAAAAAAAAAACmAPYDAAAAAAIA
AAAAAAAAAAAAAAEAKQYAAAAAAgAAAAAAAAAAAAAAAQDmAQAAAAAKAAAAAAAAAAAAAACmAO4JAAAA
AAAAAAABAAAA+Q4AAAUABAAGAAQAAAAQAAwA7AIAABAAGQDsAgAAAAAbAOwCLQAOAi0AkAIAAAA8
TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3Jp
cHRDb21wb25lbnRfYmFjZTU5OGZkMjY1NDg2YWIxOGUxOWYyMDNhYzcwNDIudmJwcm9qLk15AE15
Q29tcHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVy
YDEASW5wdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50X2JhY2U1OThmZDI2NTQ4NmFiMThlMTlmMjAz
YWM3MDQyLnZicHJvagBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRN
YWluAE15UmVzb3VyY2VzAFNjcmlwdENvbXBvbmVudF9iYWNlNTk4ZmQyNjU0ODZhYjE4ZTE5ZjIw
M2FjNzA0Mi52YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGluZ3MATWljcm9zb2Z0LlZpc3VhbEJh
c2ljLkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jvc29mdC5W
aXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdldF9Db21w
dXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBwT2JqZWN0
UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2ViU2Vydmlj
ZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2VydmljZXMA
RXF1YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9fSW5zdGFu
Y2VfXwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNlAE1pY3Jv
c29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAxAG1fQ29u
dGV4dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMDgAQ296eVJvYy5TcWxTZXJ2ZXIu
U1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWljcm9z
b2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAENvbXBvbmVudABPYmplY3RJRABJc0lu
cHV0AEJ1ZmZlcgBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAHNldF9SZXN1bHQAVmFsdWUAc2V0X1Jl
c3VsdF9Jc051bGwAZ2V0X1N0YXRpY091dHB1dENvbHVtbnMATmV4dFJvdwBFbmRPZlJvd3NldABT
dGF0aWNJbnB1dENvbHVtbnMAUmVzdWx0AFJlc3VsdF9Jc051bGwAU3RhdGljT3V0cHV0Q29sdW1u
cwBTY3JpcHRDb21wb25lbnRQbHVzAFByb2Nlc3NJbnB1dABJbnB1dElEAElucHV0X1Byb2Nlc3NJ
bnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cAUm93AFBhcmVudENvbXBvbmVudABQcmVFeGVjdXRl
AFBvc3RFeGVjdXRlAFZhbGlkYXRlAGVyck1lc3NhZ2UAZ2V0X0lucHV0Q29sdW1uAHNldF9JbnB1
dENvbHVtbgB2YWx1ZQBnZXRfWFBhdGgAc2V0X1hQYXRoAGdldF9OYW1lc3BhY2VzAHNldF9OYW1l
c3BhY2VzAGdldF9SZXN1bHRTZXBhcmF0b3IAc2V0X1Jlc3VsdFNlcGFyYXRvcgBtX2lucHV0Q29s
dW1uAG1feHBhdGgAbV9uYW1lc3BhY2UAbV9yZXN1bHRTZXAAU3lzdGVtLlhtbABYbWxEb2N1bWVu
dABtX2RvY3VtZW50AFN5c3RlbS5YbWwuWFBhdGgAWFBhdGhOYXZpZ2F0b3IAbV9uYXZpZ2F0b3IA
WFBhdGhFeHByZXNzaW9uAG1fZXhwcgBtX2NvbHVtbkluZGV4AElucHV0Q29sdW1uAFhQYXRoAE5h
bWVzcGFjZXMAUmVzdWx0U2VwYXJhdG9yAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5hZ2Vy
AF9yZXNNZ3IAU3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUAZ2V0
X1Jlc291cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBDdWx0dXJlAFN5c3RlbS5D
b25maWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9TeW5jT2JqZWN0
AGdldF9WYWx1ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRl
AEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENv
ZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1p
Y3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmli
dXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24A
SGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50
aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhh
bmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUA
c2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmli
dXRlAFN0cmluZwBzZXRfSXRlbQBTZXROdWxsAEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24AU2Ny
aXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJpYnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1Bp
cGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFND
b21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29sbGVj
dGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABnZXRfSXRlbQBnZXRfSUQA
WFBhdGhOb2RlSXRlcmF0b3IARXhjZXB0aW9uAGdldF9CdWZmZXIASXNOdWxsAEdldFN0cmluZwBJ
c051bGxPckVtcHR5AExvYWRYbWwAU2VsZWN0AENvbmNhdABnZXRfQ3VycmVudABJSGFzWG1sTm9k
ZQBYbWxOb2RlAEdldE5vZGUATW92ZU5leHQAUHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9yAGdl
dF9NZXNzYWdlAEVtcHR5AEZpcmVFcnJvcgBDbGVhclByb2plY3RFcnJvcgBYbWxOYW1lc3BhY2VN
YW5hZ2VyAENyZWF0ZU5hdmlnYXRvcgBDb21waWxlAFhtbE5hbWVUYWJsZQBnZXRfTmFtZVRhYmxl
AFN0cmluZ1NwbGl0T3B0aW9ucwBTcGxpdABJbmRleE9mAFN1YnN0cmluZwBBZGROYW1lc3BhY2UA
U2V0Q29udGV4dABJbnQzMgBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABJRFRT
QnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFuYWdlcgBJRFRTSW5wdXRDb2x1bW5Db2xsZWN0
aW9uMTAwAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24ASURUU0lucHV0Q29sdW1uMTAwAGdldF9M
aW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAENNYW5hZ2VkQ29tcG9uZW50V3JhcHBlcgBJ
RFRTVmlydHVhbElucHV0MTAwAEFwcGxpY2F0aW9uRXhjZXB0aW9uAEluc3RhbnRpYXRlAEdldFZp
cnR1YWxJbnB1dABSZW1vdmVBbGwASURUU1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAA
Z2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24ASURUU1ZpcnR1YWxJbnB1dENvbHVtbjEw
MABJRFRTRGVzaWdudGltZUNvbXBvbmVudDEwMABEVFNVc2FnZVR5cGUAU2V0VXNhZ2VUeXBlAFNT
SVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2MuU3FsU2VydmVyLlNT
SVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNB
dHRyaWJ1dGUAVGV4dERpYWxvZ0F0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBJbnB1dFZp
cnR1YWxDb2x1bW5BdHRyaWJ1dGUAU3lzdGVtLlJlZmxlY3Rpb24AQXNzZW1ibHkAZ2V0X0Fzc2Vt
Ymx5AFN5c3RlbS5UaHJlYWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0AERlYnVnZ2VyTm9uVXNlckNv
ZGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50X2JhY2U1OThmZDI2NTQ4NmFiMThlMTlmMjAzYWM3
MDQyLnZicHJvai5SZXNvdXJjZXMucmVzb3VyY2VzAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRy
aWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0
dHJpYnV0ZQBHdWlkQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmlidXRlAEFzc2VtYmx5
Q29weXJpZ2h0QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBh
bnlBdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0
cmlidXRlAFNjcmlwdENvbXBvbmVudF9iYWNlNTk4ZmQyNjU0ODZhYjE4ZTE5ZjIwM2FjNzA0Mi52
YnByb2ouZGxsAAAAAICbSQBzAE4AdQBsAGwAIABwAHIAbwBwAGUAcgB0AHkAIABjAGEAbgBuAG8A
dAAgAGIAZQAgAHMAZQB0ACAAdABvACAARgBhAGwAcwBlAC4AIABBAHMAcwBpAGcAbgAgAGEAIAB2
AGEAbAB1AGUAIAB0AG8AIAB0AGgAZQAgAGMAbwBsAHUAbQBuACAAaQBuAHMAdABlAGEAZAAuAAAN
UgBlAHMAdQBsAHQAAAtJAG4AcAB1AHQAAB9YAFAAYQB0AGgAIABUAHIAYQBuAHMAZgBvAHIAbQAA
CVwAcgBcAG4AAAM9AAApUwBlAGwAZQBjAHQAIABpAG4AcAB1AHQAIABjAG8AbAB1AG0AbgAuAAAx
UwBwAGUAYwBpAGYAeQAgAFgAUABhAHQAaAAgAHMAdABhAHQAZQBtAGUAbgB0AC4AADFNAHkALgBS
AGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAK0fHG7sIpkOuO+RQ+3iE
YgAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcGFRIYARIIBAAA
EhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIcAyAACAQgABIV
AyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9JC7gMNOoIiYRd
zYCAzJEJIAQBEiEIAhIlBCAAHQ4EIAEBDgQgAQECAyAAAgQoAB0OAygADgMoAAIDBhIkAwYSKAYg
AgEIEiUFIAEBEhwDBhIhBSABARIhBSABAhAOAgYOAwYSLQMGEjEDBhI1AgYIAwYSOQMGEj0EAAAS
OQQAABI9BQABARI9BAgAEjkECAASPQMGEjQCBhwEAAASNAQIABI0BSABARFJCAEAAQAAAAAABSAC
AQ4OFwEACk15VGVtcGxhdGUHOC4wLjAuMAAABAEAAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIY
ARIUBAcBEgwEBwESCAQHARIRBAcBEhQQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAATAQAO
TXkuV2ViU2VydmljZXMAABMBAA5NeS5BcHBsaWNhdGlvbgAABAABHBwDBwECAwcBCAYAARIVEWUE
BwESFQMHAQ4FEAEAHgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Q
cm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9z
ZV9fSW5zdGFuY2VfXwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAGBwITABMABQEAAAAABAcB
HQ4FIAIBCBwEIAEBCAYHAh0OHQ4FIAASgIUFIAASgIkGIAESgI0cBCAAEiUEIAECCAQgAQ4IBAAB
Ag4HIAESgJESNQUAAg4ODgQgABIxBSAAEoCdBgABARKAlQogBgEIDg4OCBACCwcFDhKAkQ4CEoCV
BSABEjUOBSAAEoCpBiABARKAqQkgAh0OHQ4RgK0EIAEIDgUgAg4ICAYgAQESgKUFIAASgLUFIAAS
gLkFIAASgL0GIAESgMEcBSACCAgIFwcMEoCNEoClHQ4IDg4OAhKAlR0OCB0OBSAAEoDFBSAAEoDJ
BSAAEoDRBiABEoDVHA0gBBKAwQgSgMkIEYDdEwcHAgISgI0SgMESgMUSgMkSgJUNAQAIVmFsaWRh
dGUAAAUgAQEdDjUBAAQAAAALSW5wdXRDb2x1bW4FWFBhdGgKTmFtZXNwYWNlcw9SZXN1bHRTZXBh
cmF0b3IAABwBABdTcGVjaWZ5IFhQYXRoIHN0YXRlbWVudAAAHQEAGFNwZWNpZnkgWFBhdGggc3Rh
dGVtZW50LgAAJQEAIFNwZWNpZnkgcmVzdWx0IHNlcGFyYXRvciBzdHJpbmcuAAAZAQAUU2VsZWN0
IGlucHV0IGNvbHVtbi4AAB0BABhTcGVjaWZ5IFhQYXRoIG5hbWVzcGFjZXMAAHIBAG1TcGVjaWZ5
IFhQYXRoIG5hbWVzcGFjZXMuIFRoZSBmb3JtYXQgaXMgPG5hbWVzcGFjZSBwcmVmaXg+PTxuYW1l
c3BhY2U+LiBTZXBhcmF0ZSBlYWNoIG5hbWVzcGFjZSB3aXRoIG5ld2xpbmUuAAAFIAASgPkHIAIB
DhKA+QYHAhI5EjkEBwESPQgBAAIAAAAAAAQAAQEcBAcBEjQIAQAIAAAAAAAeAQABAFQCFldyYXBO
b25FeGNlcHRpb25UaHJvd3MBDAEABzEuMC4wLjAAACkBACQwMmYyN2MzNi01YTBiLTQ0MjQtYjhj
YS1iYTRiZTZkMjlmNzUAAAUBAAEAAB8BABpDb3B5cmlnaHQgQCBNaWNyb3NvZnQgMjAxMQAAPAEA
N1NjcmlwdENvbXBvbmVudF9iYWNlNTk4ZmQyNjU0ODZhYjE4ZTE5ZjIwM2FjNzA0Mi52YnByb2oA
AA4BAAlNaWNyb3NvZnQAAAAA4E0AAAAAAAAAAAAA/k0AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
APBNAAAAAAAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAD/JQAgQAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwAAACgAAIAO
AAAASAAAgBAAAABgAACAAAAAAAAAAAAAAAAAAAACAAIAAAB4AACAAwAAAJAAAIAAAAAAAAAAAAAA
AAAAAAEAAH8AAKgAAIAAAAAAAAAAAAAAAAAAAAEAAQAAAMAAAIAAAAAAAAAAAAAAAAAAAAEAAAAA
ANgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAOgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAPgAAAAAAAAA
AAAAAAAAAAAAAAEAAAAAAAgBAACAZQAA6AIAAAAAAAAAAAAAaGgAACgBAAAAAAAAAAAAAJBpAAAi
AAAAAAAAAAAAAAAYYQAAaAQAAAAAAAAAAAAAaAQ0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkA
TgBGAE8AAAAAAL0E7/4AAAEAAAABAAAAAAAAAAEAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAA
AAAAAABEAAAAAQBWAGEAcgBGAGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEA
dABpAG8AbgAAAAAAAACwBMgDAAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAAKQDAAAB
ADAAMAAwADAAMAA0AGIAMAAAADQACgABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAATQBpAGMA
cgBvAHMAbwBmAHQAAACYADgAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAUwBj
AHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwBiAGEAYwBlADUAOQA4AGYAZAAyADYANQA0ADgA
NgBhAGIAMQA4AGUAMQA5AGYAMgAwADMAYQBjADcAMAA0ADIALgB2AGIAcAByAG8AagAAADAACAAB
AEYAaQBsAGUAVgBlAHIAcwBpAG8AbgAAAAAAMQAuADAALgAwAC4AMAAAAJgAPAABAEkAbgB0AGUA
cgBuAGEAbABOAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwBiAGEAYwBl
ADUAOQA4AGYAZAAyADYANQA0ADgANgBhAGIAMQA4AGUAMQA5AGYAMgAwADMAYQBjADcAMAA0ADIA
LgB2AGIAcAByAG8AagAuAGQAbABsAAAAXAAbAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0
AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAATQBpAGMAcgBvAHMAbwBmAHQAIAAyADAAMQAxAAAA
AACgADwAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBv
AG0AcABvAG4AZQBuAHQAXwBiAGEAYwBlADUAOQA4AGYAZAAyADYANQA0ADgANgBhAGIAMQA4AGUA
MQA5AGYAMgAwADMAYQBjADcAMAA0ADIALgB2AGIAcAByAG8AagAuAGQAbABsAAAAkAA4AAEAUABy
AG8AZAB1AGMAdABOAGEAbQBlAAAAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGIA
YQBjAGUANQA5ADgAZgBkADIANgA1ADQAOAA2AGEAYgAxADgAZQAxADkAZgAyADAAMwBhAGMANwAw
ADQAMgAuAHYAYgBwAHIAbwBqAAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAAAQPgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property>
<property id="580" 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="1090" 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_bace598fd265486ab18e19f203ac7042</property>
<property id="1091" 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="570" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></input>
</inputs>
<outputs>
<output id="571" name="Output" description="" exclusionGroup="0" synchronousInputId="570" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns>
<outputColumn id="602" name="Result" description="" lineageId="602" precision="0" scale="0" length="250" 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>