<component id="2" name="Join Column" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="9" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-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><arrayElement dataType="System.String"><![CDATA[ScriptComponent_844bc124bab34b198ac335e4b25a29b7.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{CBDDF003-0B87-4325-9637-634B385A1F77}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_844bc124bab34b198ac335e4b25a29b7</RootNamespace>
    <AssemblyName>ScriptComponent_844bc124bab34b198ac335e4b25a29b7</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CozyRoc.SSISPlus.2014.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_SC120" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads 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, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [keycol]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [keycol_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 WriteOnly Property [joincol]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [joincol_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            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() {"keycol", "joincol"}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Dim InputsFinished As Integer = 0

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        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, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

    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[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:CodeName>ScriptComponent_844bc124bab34b198ac335e4b25a29b7</msb:CodeName>
		<msb:DisplayName>ScriptComponent_844bc124bab34b198ac335e4b25a29b7</msb:DisplayName>
		<msb:ProjectId>{A1643FEA-7635-4376-890D-E2CB427E0812}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_844bc124bab34b198ac335e4b25a29b7.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="4" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_844bc124bab34b198ac335e4b25a29b7.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
//8EbywAAAosEQJvNAAABgJ7CAAABG8eAAAGKhMwBQCeAAAAFQAAEQIoNQAACgIoKAAACm8pAAAK
FowhAAABbyoAAAoKAgIoNgAACm83AAAKBm84AAAKBm85AAAKAm8uAAAGbzoAAApvOwAACm88AAAK
fQ8AAAQCAig2AAAKbzcAAAoGbzgAAAoGbzkAAAoCbzAAAAZvOgAACm87AAAKbzwAAAp9EAAABAIC
bzIAAAYoPQAACn0RAAAEAnM+AAAKfRMAAAQqAAAbMAYA5gEAABYAABEXCgIoKAAACm8pAAAKFowh
AAABbyoAAAoNCW8/AAAKEwgRCG9AAAAKb0EAAAoWMRgCby4AAAYoQgAACiwLctYAAHBzQwAACnoR
CG9AAAAKb0EAAAoWMRgCbzAAAAYoQgAACiwLcgABAHBzQwAACnoCbzIAAAYoQgAACiwLcigBAHBz
QwAACnoCbygAAApvRAAAChMFCW85AAAKb0UAAAoRBQlvKwAAChEIEQhvQAAACgJvLgAABm9GAAAK
b0cAAAoWb0gAAAoMEQUJbysAAAoRCBEIb0AAAAoCbzAAAAZvRgAACm9HAAAKFm9IAAAKEwQCKCgA
AApvSQAAChaMIQAAAW9KAAAKEwcRB29LAAAKb0wAAAoWM0cRB29LAAAKb00AAAoTBhEGCG9OAAAK
b08AAAoRB29LAAAKb00AAAoTBhEGEQRvTgAACm9PAAAKEQYgLwEAABYWFhZvUAAAChEHb0sAAAoW
jCEAAAFvUQAAChMGEQYIb04AAApvTwAAChEGCG9SAAAKCG9TAAAKCG9UAAAKCG9VAAAKCG9WAAAK
b1AAAAoRB29LAAAKF4whAAABb1EAAAoTBhEGEQRvTgAACm9PAAAK3holKFcAAAoTCRYKAxEJb1gA
AApRKFkAAAreAAYLByoAAEEcAAAAAAAAAgAAAMYBAADIAQAAGgAAACsAAAETMAEACQAAABcAABEC
ewwAAAQKBioAAAAiAgN9DAAABCoAAAATMAEACQAAABgAABECew0AAAQKBioAAAAiAgN9DQAABCoA
AAATMAEACQAAABkAABECew4AAAQKBioAAAAiAgN9DgAABCoAAAATMAMASgAAABoAABECewgAAAQK
Bm8dAAAGBm9aAAAKFgJ7EgAABCgRAAAKb1sAAAoGb1oAAAoXAnsTAAAEb1wAAApvWwAAChQKAnsT
AAAEFm9dAAAKKgAAQlNKQgEAAQAAAAAADAAAAHY0LjAuMzAzMTkAAAAABQBsAAAAKAwAACN+AACU
DAAAKA8AACNTdHJpbmdzAAAAALwbAABUAQAAI1VTABAdAAAQAAAAI0dVSUQAAAAgHQAAYAQAACNC
bG9iAAAAAAAAAAIAAAFXFaIJCQ4AAAD6JTMAFgAAAQAAADoAAAAMAAAAEwAAADQAAAAjAAAAZAAA
ADQAAAAaAAAABQAAABAAAAATAAAACQAAAAEAAAAIAAAAAgAAAAMAAAACAAAAAADwDgEAAAAAAAoA
TAEiAQoAgAFiAQYAkAGJAQoA6AEiAQYAZgKJAQoA6AK+Ag4AOgMjAxIAiQNoAxYAugNoAxIAyQNo
Aw4A8QQjAwYAyga+BhoAGQcDBxoAMgcDBxoAXwdHBwYAiQd2BwoAyAehBwoA4AcTABoAFQj4BwYA
SggqCAYAaAiJAQYAjAiJAQoApQgTAAYA8wjUCAYABwmJARIADgloAwYAGwmJAQYAQgmJAR4AqQmA
CR4A2AmACR4AAwqACRYAPApoAwYAaQqJARYAbwpoAx4AkwqACR4AxQqACR4A/AqACRoAUgszCx4A
YQuACR4AeguACR4AjguACR4AnAuACQYAsAuJAR4AyguACR4APQyACR4AVwyACR4AcgyACR4AjAyA
CR4AuQyACSIAUw0rDQoApA2hBxIA6Q1oAw4AMg4QDg4ATg4QDhoAag4DBwYAfw4qCAYAnw4qCAYA
1w69DgAAAAABAAAAAAABAAEAAAAAACkANwAFAAEAAQAAAAAAawA3AAkAAQACAAABEAB2ADcADQAB
AAMABQEAAIAAAAANAAUACAAFAQAAjgAAAA0ABQAPAAEAAACpALUAHQAGABEAAQAAAOYAtQAdAAYA
FgABAAAA8wC1AC0ABgAgAAEAAAABAbUADQAKACgAAQAAAA0BtQANAAsAKQABAAAAFwG1ACQADAAq
ADEAqwEgADEA1AEtADEA9gE6ADEAGwJHACEA9wKQAAYAAQHbAAYADQHfAAYA5gDjAAEABQXnAAEA
vAUGAQEAvAUGAQEAXwYdAQEAbQYdAQEAegYdAQEAiQbnAAEAlgbnAAEAogYdAQEArwYgAQEA2AYj
AVAgAAAAAAYYXAETAAEAWCAAAAAABhhcARMAAQBgIAAAAAARGJcBFwABAIwgAAAAABMIngEbAAEA
pCAAAAAAEwjEASgAAQC8IAAAAAATCO0BNQABANQgAAAAABMICwJCAAEA7CAAAAAARgJRAmMAAQAI
IQAAAABGAloCaAACABwhAAAAAIMAawJsAAIANCEAAAAARgJzAnEAAgBIIQAAAAARAHwCeAACAGQh
AAAAAAEAmgKAAAMAgCEAAAAABhhcARMABACIIQAAAAADCK4CiwAEALwhAAAAAAYYXAETAAQA0CEA
AAAABhhcAa8ABADgIQAAAABGCgMEuwAJAPQhAAAAAEYKGgS7AAkACCIAAAAAhgAyBMAACQAgIgAA
AACGADoEwAAJADgiAAAAAAYYXAGvAAkASCIAAAAARgoDBLsADgBcIgAAAAAGCG0EyQAOAGgiAAAA
AAYIfgTOAA8AhCIAAAAABgiQBMkAEACQIgAAAAAGCJwEzgARAKwiAAAAAEYKGgS7ABIA1CIAAAAA
hgCvBBMAEgDcIgAAAACGALYEEwASAOQiAAAAAIYAOgTAABIA/CIAAAAABhhcARMAEgAkIwAAAABG
AhQF6gASAIwjAAAAAEYDMwUTABYAkCMAAAAAAQBBBRMAFgCsIwAAAABGAlUF9AAWAPgjAAAAAEYD
ewUTABoA/CMAAAAARgOPBQABGgAQJAAAAABGA6IFAAEbABQkAAAAAAYYXAEKARwAJCQAAAAABhhc
AQoBHQA0JAAAAAAGGFwBEwAeADwkAAAAAEYCFAUQAR4APCUAAAAARgLMBRMAIADoJQAAAAAGANcF
FwEgAPgnAAAAAAYI6wVxACEAECgAAAAABgj7BckAIQAcKAAAAAAGCBEGcQAiADQoAAAAAAYIIAbJ
ACIAQCgAAAAABggvBnEAIwBYKAAAAAAGCD4GyQAjAGQoAAAAAAEATQYTACQAAAABAFgCAAABAJEC
AAABAJECAAABANcDAAACAOEDAAADAOoDAAAEAPIDAAAFAPkDAAABANcDAAACAOEDAAADAOoDAAAE
APIDAAAFAPkDAAABAHgEAAABAHgEAAABAHgEAAABAHgEAAABACEFAAACACkFAAADAPIDAAAEAPkD
AAABAGEFAAACAGkFAAADAHMFAAAEAPkDAAABAPIDAAABALgFAAABANcDAAABANcDAAABACEFAAAC
APIDAAABAOAFAAABAAsGAAABAAsGAAABAAsGCQBcARMAaQBcAScBeQBcATYBEQBcARMAgQBcARMA
JABcARMALABcARMANABcARMAPABcARMAJACuAosALACuAosANACuAosAPACuAosAiQBcARMAkQBc
ARMAmQBcAckAoQBZCNABGQBRAmMAGQBaAmgAKQB6CN0BGQBzAnEAsQCWCO0BGQBcARMAuQBcAf0B
RAD3ApAATADACIsATADKCHoCTABcARMAwQBcAc4AOQBcAa8A0QAyBMAA0QA6BMAA2QBcAc4AOQAx
CZQCOQA6CZoC4QBcAckA0QCvBBMA0QC2BBMAWQBcARMAQQDCCaYC6QDvCasC8QAQCrAC+QAZCmgA
SQAgCsAAQQAwCrYCSQAQCsICSQBHCscCyQBRCh0BYQBXCmgAYQBiCswCYQBiCtICSQAyBMAAQQDM
BRMAWQCBCt0CEQGoCuMC+QC6CmgA+QDiCukCIQEQCu8CKQEPC2gAGQEdC/YCMQFYC/wCYQBcARMA
+QC6CwYDUQHuCwwDYQEPDGgAyQAZDBIDWQFcAckA6QAnDBcDIQEzDBMAYQEQCh0DaQEPC2gAcQF/
DCQD6QCkDDIDgQEQCjgDSQHXDD8DiQEPDGgAiQHyDEUDKQH2DHEAQQH/DMkAQQFcDUsDiQEQClYD
KQFyDV0DKQFXCmgAKQF/DWgAKQGNDWgAKQGXDWgAmQGwDWMDWQHADXEAmQHMDRcAOQC6CoYDSQAx
CZQCYQBzAnEAYQDeDZoCoQFcARMAqQFcAckAsQFcARMAuQFcAckAwQFcAZoCyQFcARMA0QFcAckA
KQCDAIoBLgATA+4DLgAbA/cDLgAjAxYEQAATAC0BQAArAFUBQwAbADwBQwATAC0BSQCDALwBYwAT
AC0BYwAbADwBaQCDAJsBgAArAFUBgwB7AFUBgwBzAFUBgwAbADwBiQCDAKgBoAArAFUBowDDAAUC
owATAC0BwAArAFUBwwDrAIkCwwATAC0B4AArAFUB4wALAYkCAAErAFUBAAETAC0BAwELAYkCIAET
AC0BIAErAFUBIwELAYkCQAETAC0BQAErAFUBYAErAFUBYAETAC0BgAErAFUBgwH7ApADgwELAYkC
gwHzAlUBoAErAFUBwAErAFUBwAETAC0ByQEDA1UByQELA54D4AErAFUB6QELA7gD6QEDA1UBAAIr
AFUBAAITAC0BCQILA9QDAAULAYkCIAULAYkCdgF7AYABhQHVAdkB5AHpAfgB+AGAAo8CjwLVAdUB
jwKfAtUBvQLYAgEDagPpAekB6QGLAwQAAQAGAAUABwAGAAgACAAMAA4AAACAAU8AAAA5AlQAAADo
AVkAAABFAl4AAAABA5gAAABGBMQAAABZBMQAAABGBMQAAADFBNMAAADMBNcAAADaBNMAAADiBNcA
AABZBMQAAADhBtMAAADtBtMAAAD4BtMAAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgAS
AA0AAgATAA8AAgAXABEAAQAYABMAAQAZABUAAQAaABcAAQAbABkAAgAcABsAAQAvAB0AAgAuAB0A
AQAxAB8AAgAwAB8AAgAyACEAAQAzACEAdQB1AIgAWgFhAWgBbwFnAm4CBIAAAAAAAAAAAAAAAAAA
AAAAtQAAAAQAAAAAAAAAAAAAAAEACgAAAAAACgAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAA
AACdAA0DAAAAAAwAAAAAAAAAAAAAAKYASwMAAAAADAAAAAAAAAAAAAAApgCZAwAAAAAEAAAAAAAA
AAAAAAABAIkBAAAAAAwAAAAAAAAAAAAAAKYAXAkAAAAADAAAAAAAAAAAAAAApgAIDQAAAAAFAAQA
BgAEAAAAEAAMAI8CAAAQABkAjwIAAAAAGwCPAi0A8wEtAHUCAAAAAAA8TW9kdWxlPgBtc2Nvcmxp
YgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfODQ0
YmMxMjRiYWIzNGIxOThhYzMzNWU0YjI1YTI5YjcuTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlX
ZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBJbnB1dEJ1ZmZlcgBTY3JpcHRD
b21wb25lbnRfODQ0YmMxMjRiYWIzNGIxOThhYzMzNWU0YjI1YTI5YjcAT3V0cHV0QnVmZmVyAFVz
ZXJDb21wb25lbnQAQ29ubmVjdGlvbnMAVmFyaWFibGVzAFNjcmlwdE1haW4ATWljcm9zb2Z0LlZp
c3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1pY3Jv
c29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9yAGdl
dF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1fQXBw
T2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRfV2Vi
U2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2ViU2Vy
dmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0ZV9f
SW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3RhbmNl
AE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1ZWAx
AG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMTQAQ296eVJvYy5TcWxT
ZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQA
TWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29m
dC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAE91dHB1dE5hbWVNYXAAQ29t
cG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVmZmVyAE91dHB1dE1hcABnZXRfU3RhdGljSW5wdXRD
b2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAE5leHRSb3cARW5kT2ZSb3dzZXQAU3RhdGlj
SW5wdXRDb2x1bW5zAFN0YXRpY091dHB1dENvbHVtbnMAc2V0X2tleWNvbABWYWx1ZQBzZXRfa2V5
Y29sX0lzTnVsbABzZXRfam9pbmNvbABzZXRfam9pbmNvbF9Jc051bGwAQWRkUm93AFNldEVuZE9m
Um93c2V0AGtleWNvbABrZXljb2xfSXNOdWxsAGpvaW5jb2wAam9pbmNvbF9Jc051bGwAU2NyaXB0
Q29tcG9uZW50UGx1cwBJbnB1dHNGaW5pc2hlZABQcm9jZXNzSW5wdXQASW5wdXRJRABJbnB1dE5h
bWUARmluaXNoT3V0cHV0cwBNYXJrT3V0cHV0c0ZpbmlzaGVkAFByaW1lT3V0cHV0AE91dHB1dHMA
T3V0cHV0SURzAEJ1ZmZlcnMAQ3JlYXRlTmV3T3V0cHV0Um93cwBJbnB1dF9Qcm9jZXNzSW5wdXQA
SW5wdXRfUHJvY2Vzc0lucHV0Um93AFJvdwBQYXJlbnRDb21wb25lbnQAUHJlRXhlY3V0ZQBWYWxp
ZGF0ZQBlcnJNZXNzYWdlAGdldF9Hcm91cENvbHVtbgBzZXRfR3JvdXBDb2x1bW4AdmFsdWUAZ2V0
X0pvaW5Db2x1bW4Ac2V0X0pvaW5Db2x1bW4AZ2V0X0pvaW5TeW1ib2wAc2V0X0pvaW5TeW1ib2wA
SW5zZXJ0Sm9pbk91dHB1dF8AbV9ncm91cENvbHVtbgBtX2pvaW5Db2x1bW4AbV9qb2luU3ltYm9s
UkUAbV9ncm91cEluZGV4AG1fam9pbkluZGV4AG1fam9pblN5bWJvbABtX2N1cnJlbnRHcm91cABT
eXN0ZW0uVGV4dABTdHJpbmdCdWlsZGVyAG1fc2JKb2luAEdyb3VwQ29sdW1uAEpvaW5Db2x1bW4A
Sm9pblN5bWJvbABTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRl
AEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENv
ZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1p
Y3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmli
dXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24A
SGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50
aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhh
bmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUA
Z2V0X1ZhbHVlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlz
aWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJpYnV0ZQBz
ZXRfSXRlbQBTZXROdWxsAEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24ATWljcm9zb2Z0LlNxbFNl
cnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3Jh
cHBlcgBJRFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0NvbXBvbmVudE1ldGFEYXRhAElEVFNJ
bnB1dENvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sbGVjdGlvbgBJRFRTSW5wdXQxMDAAZ2V0X0l0
ZW0AZ2V0X0lEAGdldF9FbmRPZlJvd3NldABHZXRPdXRwdXRJRABCbG9iQ29sdW1uAEdldFN0cmlu
ZwBFbXB0eQBnZXRfTGVuZ3RoAEFwcGVuZABJbnQzMgBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9z
dENvbXBvbmVudABJRFRTQnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFuYWdlcgBnZXRfQnVm
ZmVyAElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29sbGVjdGlv
bgBJRFRTSW5wdXRDb2x1bW4xMDAAZ2V0X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQA
U3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zAFJlZ2V4AFVuZXNjYXBlAENNYW5hZ2VkQ29t
cG9uZW50V3JhcHBlcgBJRFRTT3V0cHV0Q29sdW1uMTAwAElEVFNPdXRwdXQxMDAASURUU1ZpcnR1
YWxJbnB1dDEwMABFeGNlcHRpb24AR2V0VmlydHVhbElucHV0AElEVFNWaXJ0dWFsSW5wdXRDb2x1
bW5Db2xsZWN0aW9uMTAwAGdldF9WaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uAGdldF9Db3Vu
dABJc051bGxPckVtcHR5AEluc3RhbnRpYXRlAFJlbW92ZUFsbABJRFRTVmlydHVhbElucHV0Q29s
dW1uMTAwAElEVFNEZXNpZ250aW1lQ29tcG9uZW50MTAwAERUU1VzYWdlVHlwZQBTZXRVc2FnZVR5
cGUASURUU091dHB1dENvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbGxlY3Rpb24ASURUU091dHB1
dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbHVtbkNvbGxlY3Rpb24ATmV3AGdldF9O
YW1lAHNldF9OYW1lAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0
LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAERhdGFUeXBlAFNldERhdGFUeXBlUHJvcGVy
dGllcwBnZXRfRGF0YVR5cGUAZ2V0X1ByZWNpc2lvbgBnZXRfU2NhbGUAZ2V0X0NvZGVQYWdlAFBy
b2plY3REYXRhAFNldFByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBDbGVhclByb2plY3RFcnJvcgBz
ZXRfTGVuZ3RoAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2Mu
U3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUASW5w
dXRWaXJ0dWFsQ29sdW1uQXR0cmlidXRlAERlc2NyaXB0aW9uQXR0cmlidXRlAENvbXBpbGF0aW9u
UmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lzdGVt
LlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAU2NyaXB0Q29tcG9u
ZW50Xzg0NGJjMTI0YmFiMzRiMTk4YWMzMzVlNGIyNWEyOWI3LmRsbAAAAAAAgJtJAHMATgB1AGwA
bAAgAHAAcgBvAHAAZQByAHQAeQAgAGMAYQBuAG4AbwB0ACAAYgBlACAAcwBlAHQAIAB0AG8AIABG
AGEAbABzAGUALgAgAEEAcwBzAGkAZwBuACAAYQAgAHYAYQBsAHUAZQAgAHQAbwAgAHQAaABlACAA
YwBvAGwAdQBtAG4AIABpAG4AcwB0AGUAYQBkAC4AAA1rAGUAeQBjAG8AbAAAD2oAbwBpAG4AYwBv
AGwAAAtJAG4AcAB1AHQAAA1PAHUAdABwAHUAdAAAKVMAZQBsAGUAYwB0ACAAZwByAG8AdQBwACAA
YwBvAGwAdQBtAG4ALgAAJ1MAZQBsAGUAYwB0ACAAagBvAGkAbgAgAGMAbwBsAHUAbQBuAC4AAClT
AHAAZQBjAGkAZgB5ACAAagBvAGkAbgAgAHMAeQBtAGIAbwBsAC4AAAAAQM4eiZv7hkC2zcImtzSS
xQAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcGFRIYARIIBAAA
EhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIcAyAACAQgABIV
AyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9JC7gMNOoIiYRd
zYCAzJELIAUBEiEIAhIlEikEIAAdDgMgAAIEKAAdDgQgAQEOBCABAQIDKAAOAygAAgMGEigDBhIs
AwYSIAIGCAkgBAEIDhIlEikLIAQBCB0IHRIlEikFIAEBEhwDBhIhBSABARIhBiACAQgSJQUgAQIQ
DgIGDgIGHAMGEjEFIAEBETkIAQABAAAAAAAFIAIBDg4YAQAKTXlUZW1wbGF0ZQgxMC4wLjAuMAAA
BAEAAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwESCAQHARIRBAcBEhQQAQAL
TXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2VydmljZXMAABMBAA5NeS5BcHBs
aWNhdGlvbgAABAABHBwDBwECAwcBCAYAARIVEVUEBwESFQMHAQ4FEAEAHgAECgEeAAQHAR4AByAE
AQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90
b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAAAYVEhgBEwAGFRIZ
ARMABAoBEwAFIAEBEwAIBwMTABMAEwAFAQAAAAAEBwEdDgUgAgEIHAQgAQEIBgcCHQ4dDgQgABJ1
BCAAEnkFIAESfRwGAAIIEikOBAcCCAgEIAEcCAQgAQ4IBSABEjEOBSABEjEcBAcCHBwFIAASgIkF
IAASgI0FIAASgJEGIAESgJUcBSACCAgIBAABDg4EBwESfQUgABKAqQUgABKAsQQAAQIOBSAAEoCd
BiABEoC1HA0gBBKAlQgSgKkIEYC9BSAAEoDBBiABEoClHAUgABKAxQUgABKAoQogBQERgMkICAgI
BiABEoChHAUgABGAyQYAAQESgK0bBwoCAhKAlRJ9EoCVEoCdEoChEoClEoCpEoCtBCAAEiUEBwES
IA0BAAhWYWxpZGF0ZQAAGQEAFFNlbGVjdCBncm91cCBjb2x1bW4uAAAbAQAWU2VsZWN0IGNvbHVt
biB0byBqb2luLgAAGQEAFFNwZWNpZnkgam9pbiBzeW1ib2wuAAAIAQAIAAAAAAAeAQABAFQCFldy
YXBOb25FeGNlcHRpb25UaHJvd3MBRwEAGi5ORVRGcmFtZXdvcmssVmVyc2lvbj12NC4wAQBUDhRG
cmFtZXdvcmtEaXNwbGF5TmFtZRAuTkVUIEZyYW1ld29yayA0AABkSgAAAAAAAAAAAAB+SgAAACAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAcEoAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRs
bAAAAAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAA
gAAAAAAAAAAAAAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFhgAADsAgAA
AAAAAAAAAADsAjQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAA
AAAAAAAAAAAAAAAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYA
aQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAETAIA
AAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAAKAIAAAEAMAAwADAAMAAwADQAYgAwAAAA
LAACAAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAACAAAAAwAAgAAQBGAGkAbABl
AFYAZQByAHMAaQBvAG4AAAAAADAALgAwAC4AMAAuADAAAACMADUAAQBJAG4AdABlAHIAbgBhAGwA
TgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AOAA0ADQAYgBjADEAMgA0
AGIAYQBiADMANABiADEAOQA4AGEAYwAzADMANQBlADQAYgAyADUAYQAyADkAYgA3AC4AZABsAGwA
AAAAACgAAgABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAACAAAACUADUAAQBPAHIAaQBn
AGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQA
XwA4ADQANABiAGMAMQAyADQAYgBhAGIAMwA0AGIAMQA5ADgAYQBjADMAMwA1AGUANABiADIANQBh
ADIAOQBiADcALgBkAGwAbAAAAAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAA
MAAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBiAGwAeQAgAFYAZQByAHMAaQBvAG4AAAAw
AC4AMAAuADAALgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADAAAAJA6AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="11" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">ScriptComponent_844bc124bab34b198ac335e4b25a29b7</property><property id="12" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><inputs><input id="14" name="Input" hasSideEffects="true"></input></inputs><outputs><output id="17" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="18" name="keycol" lineageId="18" length="5" dataType="str" codePage="1252" /><outputColumn id="19" name="joincol" lineageId="19" length="4000" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>