<component id="25" name="Dynamics CRM Associations" 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="29" 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_b5708f5a69b94658812603a4da75cbec.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_b5708f5a69b94658812603a4da75cbec.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2012")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("0e00bcf5-dba3-4d80-9bab-ff363ce0e775")> 

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

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\bufferwrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></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

    Public ReadOnly Property CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2012 COZYROC LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Collections
Imports System.Reflection
Imports System.Diagnostics
Imports System.Web.Services.Protocols

Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CRM2011 = CozyRoc.Dynamics.Crm2011.OrganizationService
Imports CRM4 = CozyRoc.Dynamics.Crm.Service


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ColumnMappings()> _
<SortProperties(New String() {"CrmConnection", "Action", "RelationshipName"})> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            If Not m_service2011 Is Nothing Then
                ' CRM 2011
                Dim req As New CRM2011.OrganizationRequest
                req.RequestName = m_requestName
                req("RelationshipName") = Me.RelationshipName

                ' Setup relationship parameters.
                Dim moniker1 As New CRM2011.EntityReference
                moniker1.LogicalName = CStr(Row.Buffer(m_fenIndex))
                moniker1.Id = New Guid(Row.Buffer(m_feiIndex).ToString())
                req("Moniker1") = moniker1

                Dim moniker2 As New CRM2011.EntityReference
                moniker2.LogicalName = CStr(Row.Buffer(m_senIndex))
                moniker2.Id = New Guid(Row.Buffer(m_seiIndex).ToString())
                req("Moniker2") = moniker2

                ' Execute action.
                Call m_service2011.Execute(req)
            Else
                ' CRM 4.0

                ' Setup relationship parameters.
                Dim moniker1 As New CRM4.Moniker
                moniker1.Name = CStr(Row.Buffer(m_fenIndex))
                moniker1.Id = New Guid(Row.Buffer(m_feiIndex).ToString())

                Dim moniker2 As New CRM4.Moniker
                moniker2.Name = CStr(Row.Buffer(m_senIndex))
                moniker2.Id = New Guid(Row.Buffer(m_seiIndex).ToString())

                ' Execute action.
                Select Case Me.Action
                    Case ActionTypes.Associate
                        Dim assocReq As New CRM4.AssociateEntitiesRequest
                        assocReq.Moniker1 = moniker1
                        assocReq.Moniker2 = moniker2
                        assocReq.RelationshipName = Me.RelationshipName
                        Call m_service4.Execute(assocReq)

                    Case ActionTypes.Disassociate
                        Dim disassocReq As New CRM4.DisassociateEntitiesRequest
                        disassocReq.Moniker1 = moniker1
                        disassocReq.Moniker2 = moniker2
                        disassocReq.RelationshipName = Me.RelationshipName
                        Call m_service4.Execute(disassocReq)

                    Case Else
                        Throw New ApplicationException("Unhandled action type.")
                End Select
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.Message)
        End Try
    End Sub ' Input_ProcessInputRow


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

        ' Setup CRM service.
        m_connection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing), _
            ICrmConnection)
        Call m_connection.Connect()

        Dim service As Object = m_connection.GetService(0)   ' 0 - CRM Service

        m_service2011 = TryCast(service, CRM2011.OrganizationServiceClient)
        If m_service2011 Is Nothing Then
            m_service4 = TryCast(service, CRM4.CrmService)
            If m_service4 Is Nothing Then
                Throw New Exception("Unhandled service object.")
            End If
        End If

        ' Setup request for CRM 2011.
        Select Case Me.Action
            Case ActionTypes.Associate
                m_requestName = "AssociateEntities"

            Case ActionTypes.Disassociate
                m_requestName = "DisassociateEntities"

            Case Else
                Throw New ApplicationException("Unhandled action type.")
        End Select

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

        ' Get input column indexes.
        inputCol = GetInputColumn_("FirstEntityName")
        m_fenIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("FirstEntityId")
        m_feiIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("SecondEntityName")
        m_senIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("SecondEntityId")
        m_seiIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)
    End Sub ' PreExecute


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

        Call m_connection.Close()
    End Sub ' PostExecute


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

        Try
            If String.IsNullOrEmpty(Me.CrmConnection) Then
                Throw New ApplicationException("Select Dynamics CRM connection.")
            End If

            If String.IsNullOrEmpty(Me.RelationshipName) Then
                Throw New ApplicationException("Specify relationship name.")
            End If

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso _
                (input.InputColumnCollection.Count = 0 OrElse _
                input.InputColumnCollection.Count < 4) Then
                Throw New Exception("Map input columns.")
            End If

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

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

        Validate = result
    End Function    'Validate


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

        If MyBase.ComponentMetaData.InputCollection.Count = 0 Then
            ' At least one input must exist.
            Throw New Exception("No inputs.")
        End If

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

        ' Cleanup.
        input.ExternalMetadataColumnCollection.IsUsed = True
        Call input.InputColumnCollection.RemoveAll()
        Call input.ExternalMetadataColumnCollection.RemoveAll()

        Dim column As IDTSExternalMetadataColumn100

        ' Setup first entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "FirstEntityName"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "FirstEntityId"
        column.DataType = DataType.DT_GUID

        ' Setup second entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "SecondEntityName"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "SecondEntityId"
        column.DataType = DataType.DT_GUID
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            m_crmConnection = value
        End Set
    End Property    ' CrmConnection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select action to perform.")> _
    Public Property Action() As ActionTypes
        Get
            Action = m_action
        End Get
        Set(ByVal value As ActionTypes)
            m_action = value
        End Set
    End Property    ' Action


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specify relationship name.")> _
    Public Property RelationshipName() As String
        Get
            RelationshipName = m_relationshipName
        End Get
        Set(ByVal value As String)
            m_relationshipName = value
        End Set
    End Property    ' RelationshipName
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property CrmConnectionType() As String()
        Get
            CrmConnectionType = New String() {"DYNAMICS-CRM"}
        End Get
    End Property    ' CrmConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Dynamics CRM Relationships", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetInputColumn_(ByVal externalName As String) As IDTSInputColumn100
        Dim result As IDTSInputColumn100 = Nothing
        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim extColumn As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection(externalName)

        ' Find input column for specified external column.
        For Each inputCol As IDTSInputColumn100 In input.InputColumnCollection
            If inputCol.ExternalMetadataColumnID = extColumn.ID Then
                ' Found input column.
                result = inputCol
                Exit For
            End If
        Next

        If result Is Nothing Then
            Throw New Exception("Input column not found.")
        End If

        GetInputColumn_ = result
    End Function    ' GetInputColumn_
#End Region ' Internals


#Region "Attributes"
    Enum ActionTypes
        Associate
        Disassociate
    End Enum    ' ActionTypes

    Private m_crmConnection As String
    Private m_action As ActionTypes
    Private m_relationshipName As String

    Private m_connection As ICrmConnection
    Private m_service2011 As CRM2011.OrganizationServiceClient
    Private m_service4 As CRM4.CrmService
    Private m_requestName As String
    Private m_fenIndex As Integer
    Private m_feiIndex As Integer
    Private m_senIndex As Integer
    Private m_seiIndex As Integer
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\scriptcomponent_b5708f5a69b94658812603a4da75cbec.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_b5708f5a69b94658812603a4da75cbec.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_b5708f5a69b94658812603a4da75cbec.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{BD678D63-B7B2-48F3-9789-55A6508A9693}</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.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <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.Web.Services" />
    <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></arrayElements></property>
<property id="30" 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_b5708f5a69b94658812603a4da75cbec.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAIdb2k8AAAAAAAAAAOAAAiELAQgAADgAAAAMAAAAAAAAblYA
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAABxWAABPAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAdDYAAAAgAAAAOAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAAA6AAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAARAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAABQ
VgAAAAAAAEgAAAACAAUA1CsAAEgqAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgAyAgMEBQ4EKB4AAAoqAAAAEzABAAcAAAAMAAARFo0gAAABKgAT
MAEABwAAAA0AABEWjSAAAAEqABMwAQAJAAAADgAAEQIoHwAACgoGKgAAABMwAQAJAAAADwAAEQIo
IAAACgoGKgAAAH4CKCIAAAoCAnMaAAAGfQYAAAQCAnMcAAAGfQcAAAQqtgMCKCMAAApvJAAACnIB
AABwbyUAAApvJgAACjMPAgIDFwRzEQAABm8YAAAGKgAASisHAgNvGQAABgNvFAAABi3xKgAGKgAA
OgIoFwAACgIDfQgAAAQqABMwAgAgAAAAEAAAEQJ7CAAABG8jAAAKbycAAApyDQAAcG8oAAAKbykA
AAoqOgIoFwAACgIDfQkAAAQqAB4CKBYAAAYqGzAEAEECAAARAAARAnsOAAAEOdsAAABzKgAACgwI
AnsQAAAEbysAAAoIcikAAHACbycAAAZvLAAACnMtAAAKCgYDby4AAAoCexEAAARvLwAACigwAAAK
bzEAAAoGEgkDby4AAAoCexIAAARvLwAACm8VAAAKKDIAAAoRCW8zAAAKCHJLAABwBm8sAAAKcy0A
AAoLBwNvLgAACgJ7EwAABG8vAAAKKDAAAApvMQAACgcSCQNvLgAACgJ7FAAABG8vAAAKbxUAAAoo
MgAAChEJbzMAAAoIcl0AAHAHbywAAAoCew4AAAQIbzQAAAom3VoBAABzNQAACg0JA28uAAAKAnsR
AAAEby8AAAooMAAACm82AAAKCRIJA28uAAAKAnsSAAAEby8AAApvFQAACigyAAAKEQlvNwAACnM1
AAAKEwQRBANvLgAACgJ7EwAABG8vAAAKKDAAAApvNgAAChEEEgkDby4AAAoCexQAAARvLwAACm8V
AAAKKDIAAAoRCW83AAAKAm8lAAAGRQIAAAACAAAANwAAACtqczgAAAoTBREFCW85AAAKEQURBG86
AAAKEQUCbycAAAZvOwAACgJ7DwAABBEFbzwAAAomK0BzPQAAChMGEQYJbz4AAAoRBhEEbz8AAAoR
BgJvJwAABm9AAAAKAnsPAAAEEQZvPAAACiYrC3JvAABwc0EAAAp63j0lKEIAAAoTBwIRB29DAAAK
b0QAAApvKgAABihFAAAK3hwlKEIAAAoTCAIRCG9GAAAKbyoAAAYoRQAACt4AKgAAAEEwAAAAAAAA
AAAAAAMCAAADAgAAIQAAAC0AAAEAAAAAAAAAAAMCAAAkAgAAHAAAAC4AAAETMAQAfAEAABIAABEC
KEcAAAoCAnsGAAAEbxsAAAYUb0gAAAp0DQAAAX0NAAAEAnsNAAAEb0kAAAoCew0AAAQWb0oAAAoo
EQAACgwCCHUOAAABfQ4AAAQCew4AAAQtHwIIdQ8AAAF9DwAABAJ7DwAABC0Lcp0AAHBzSwAACnoC
byUAAAZFAgAAAAIAAAAPAAAAKxoCctEAAHB9EAAABCsYAnL1AABwfRAAAAQrC3JvAABwc0EAAAp6
AigjAAAKbyQAAAoWjDcAAAFvJQAACgoCch8BAHBvKwAABgsCAm9MAAAKb00AAAoGb04AAAoHb08A
AApvUAAACn0RAAAEAnI/AQBwbysAAAYLAgJvTAAACm9NAAAKBm9OAAAKB29PAAAKb1AAAAp9EgAA
BAJyWwEAcG8rAAAGCwICb0wAAApvTQAACgZvTgAACgdvTwAACm9QAAAKfRMAAAQCcn0BAHBvKwAA
BgsCAm9MAAAKb00AAAoGb04AAAoHb08AAApvUAAACn0UAAAEKkoCKFEAAAoCew0AAARvUgAACioA
GzACALYAAAATAAARAm8jAAAGKFMAAAosC3KbAQBwc0EAAAp6Am8nAAAGKFMAAAosC3LbAQBwc0EA
AAp6Am8jAAAKbyQAAAoWjDcAAAFvJQAACgwIb1QAAAosJwhvVQAACm9WAAAKFi4OCG9VAAAKb1YA
AAoaLwtyEQIAcHNLAAAKegJvIwAACm8nAAAKcg0AAHBvKAAACgJvIwAABm9XAAAKFwreGCUoQgAA
Cg0WCgMJb0YAAApRKEUAAAreAAYLByoAAAEMAAAAAAAAmpoAGC4AAAETMAIA8AAAABQAABECKFgA
AAoCKCMAAApvJAAACm9ZAAAKFjMLcjcCAHBzSwAACnoCKCMAAApvJAAAChaMNwAAAW8lAAAKCwdv
WgAAChdvWwAACgdvVQAACm9cAAAKB29aAAAKb10AAAoHb1oAAApvXgAACgoGch8BAHBvXwAACgYg
ggAAAG9gAAAKBh9kb2EAAAoHb1oAAApvXgAACgoGcj8BAHBvXwAACgYfSG9gAAAKB29aAAAKb14A
AAoKBnJbAQBwb18AAAoGIIIAAABvYAAACgYfZG9hAAAKB29aAAAKb14AAAoKBnJ9AQBwb18AAAoG
H0hvYAAACioTMAEACQAAABUAABECewoAAAQKBioAAAAiAgN9CgAABCoAAAATMAEACQAAABYAABEC
ewsAAAQKBioAAAAiAgN9CwAABCoAAAATMAEACQAAABcAABECewwAAAQKBioAAAAiAgN9DAAABCoA
AAATMAMAEwAAABgAABEXjSAAAAELBxZyTQIAcKIHCgYqABMwBwAdAAAAGQAAERYKAigjAAAKFnJn
AgBwA35iAAAKFhIAb2MAAAoqAAAAGzACAIoAAAAaAAARFA0CKCMAAApvJAAAChaMNwAAAW8lAAAK
DAhvWgAACgNvZAAACgoIb1UAAApvZQAAChMFKyIRBW9mAAAKdAwAAAETBBEEb2cAAAoGb2gAAAoz
BREEDd4hEQVvaQAACi3V3hYRBXU/AAABLAwRBXU/AAABb2oAAArcCS0Lcp0CAHBzSwAACnoJCwcq
AAABDAAAAgAmADxiABYAAAABHgIoFwAACioTMAIALQAAABsAABF+GAAABC0gcs0CAHDQDQAAAigU
AAAKb3IAAApzcwAACgsHgBgAAAR+GAAABCoAAAATMAEABgAAABwAABF+GQAABCoAAB4CgBkAAAQq
QnMXAAAKKBEAAAqAGwAABCoAAAAeAih0AAAKKhswAQA/AAAAHQAAEX4aAAAELTJ+GwAABCgRAAAK
KHUAAAp+GgAABC0cczEAAAaAGgAABN4QfhsAAAQoEQAACih2AAAK3H4aAAAEKgABDAAAAgAdAAwp
ABAAAAABQlNKQgEAAQAAAAAADAAAAHYyLjAuNTA3MjcAAAAABQBsAAAACA4AACN+AAB0DgAAABMA
ACNTdHJpbmdzAAAAAHQhAAAAAwAAI1VTAHQkAAAQAAAAI0dVSUQAAACEJAAAxAUAACNCbG9iAAAA
AAAAAAIAAAFXHaIJCQ8AAAD6ATMAFgAAAQAAAFMAAAAOAAAAGwAAADIAAAAVAAAAgQAAAAIAAABD
AAAAHQAAAAcAAAAPAAAAEwAAAAkAAAABAAAACwAAAAEAAAADAAAAAwAAAAIAAAAAAMISAQAAAAAA
CgC1AYsBCgDpAcsBBgD5AfIBCgBRAosBBgDPAvIBCgBRAycDDgCjA4wDEgDyA9EDFgAjBNEDDgC+
BIwDGgBvBUcFHgC2Bo0GDgASB4wDIgBsBz8HIgCxB5QHBgArCPIBBgBgCE8IBgCNCHgIJgD0CN8I
JgBBCSsJJgBaCSsJJgCHCW8JBgCxCZ4JCgDwCckJCgAIChMAJgA9CiAKBgByClIKBgCQCvIBBgC0
CvIBCgDNChMABgARC/IKBgAlC/IBEgAsC9EDBgA5C/IBHgBPC40GHgB+C40GHgCpC40GHgDGC40G
HgAJDI0GIgA4DD8HIgBIDD8HIgBcDJQHIgBkDJQHIgB9DJQHKgDLDK0MBgDZDPIBBgDjDPIBCgAM
DckJIgAvDT8HIgBvDZQHIgB4DZQHBgCADfIBCgCVDckJLgC8DbENBgAfDvIBFgAlDtEDHgBJDo0G
HgC3Do0GHgAQD40GHgAuD40GGgCUD0cFBgDYD8UPBgAkEPIBEgA4ENEDDgCBEF8QDgCdEF8QDgC1
EF8QDgDNEF8QJgDhECsJJgD2ECsJBgAaEQgRBgBBETARBgBUEZ4JBgC9EVIKBgDdEVIKBgD7EQgR
BgAYEvIKBgAmEggRBgBBEggRBgBcEggRBgB1EggRBgCOEggRBgCrEggRAAAAAAEAAAAAAAEAAQAA
AAAAKQA3AAUAAQABAAAAAAByADcACQABAAIAAAEQAH0ANwANAAEAAwAFAQAAhwAAAA0ABQAIAAUB
AACVAAAADQAFAA8AAQAAALAAvAAdAAYAEQABAAAA9AC8ACkABgAWAAEAAAACAbwADQAIABoAAQAA
AA4BvAANAAkAHAABAAAAGAG8ACAACgAdAAIBAAAjAQAAQQAVACwAAAAAAC8BOwENABgALAAAARAA
gAG8AE0AGgAwADEAFAIgADEAPQItADEAXwI6ADEAhAJHACEAYAOQAAYAAgHHAAYADgHLAAEAFAXc
AAEAFAXcAAEA5gYMAQEA9gYPAQEA/wYMAQEAIQcTAQEAhgcXAQEAvAcbAQEAxwcMAQEA1QcfAQEA
4AcfAQEA6wcfAQEA9gcfAQYGMAgfAVaAOAgPAVaAQggPAREAcAg1AREAmQg5AREADAlXAREAFAlb
AQghAAAAAAYYxQETAAEAECEAAAAABhjFARMAAQAYIQAAAAARGAACFwABAEQhAAAAABMIBwIbAAEA
XCEAAAAAEwgtAigAAQB0IQAAAAATCFYCNQABAIwhAAAAABMIdAJCAAEApCEAAAAARgK6AmMAAQDA
IQAAAABGAsMCaAACANQhAAAAAIMA1AJsAAIA7CEAAAAARgLcAnEAAgAAIgAAAAARAOUCeAACABwi
AAAAAAEAAwOAAAMAOCIAAAAABhjFARMABABAIgAAAAADCBcDiwAEAHQiAAAAAAYYxQETAAQAiCIA
AAAABhjFAa8ABACYIgAAAABGClQEuQAIAKwiAAAAAEYKawS5AAgAwCIAAAAAhgCDBL4ACADYIgAA
AACGAIsEvgAIAPAiAAAAAAYYxQETAAgAECMAAAAARgLSBM8ACABAIwAAAABGA+cE1gAKAFQjAAAA
AEYD+gTWAAsAWCMAAAAABhjFAeAADABoIwAAAAAGCIgF5gANAJQjAAAAAAYYxQHgAA0ApCMAAAAA
BhjFARMADgCsIwAAAABGAvoE1gAOADAmAAAAAEYCqAUTAA8AuCcAAAAARgKzBRMADwDMJwAAAAAG
AL8F8AAPAKAoAAAAAEYC0wUTABAAnCkAAAAABgiIBXEAEAC0KQAAAAAGCOgF9gAQAMApAAAAAAYI
AAb7ABEA2CkAAAAABggLBgABEQDkKQAAAAAGCBYGcQASAPwpAAAAAAYIKwb2ABIACCoAAAAAAQhA
BrkAEwAoKgAAAAABAFYG9gATAFQqAAAAAAEAyQYGARQA/CoAAAAAAxjFARMAFQAEKwAAAAAWCKUI
PQEVAEArAAAAABYIuQhCARUAVCsAAAAAFgjFCEcBFQBcKwAAAAARGAACFwAWAHArAAAAAAYYxQET
ABYAeCsAAAAAFgghCV4BFgAAAAEAwQIAAAEA+gIAAAEA+gIAAAEAMgQAAAIAPAQAAAMARQQAAAQA
TQQAAAEA3wQAAAIATQQAAAEATQQAAAEAEAUAAAEAMgQAAAEAMgQAAAEAEAUAAAEAyAUAAAEA+gUA
AAEA+gUAAAEA+gUAAAEAYQYAAAEA2QYAAAEA0QgJAMUBEwChAMUBaAGxAMUBdwERAMUBEwC5AMUB
EwAkAMUBEwAsAMUBEwA0AMUBEwA8AMUBEwAkABcDiwAsABcDiwA0ABcDiwA8ABcDiwDBAMUBEwDJ
AMUBEwDRAMUB9gDZAIEKCwIZALoCYwAZAMMCaAApAKIKGAIZANwCcQDpAL4KKAIZAMUBEwDxAMUB
OAJEAGADkABMACEJiwBMAOgKtQJMAMUBEwD5AMUBwgI5AMUBrwAJAYMEvgAJAYsEvgARAcUBwgJR
AMUBEwBBAGgL0gIZAZUL2AIhAbYL3gIpAb8LaAAZAekL5QIxAbYL6wI5ASIM5gBJAcUBEwBJAegM
9gBJAfgM9wJBAcUBEwA5AAEN/QJJALYLAgOBAdwCBwNBARgN9gB5AcUB9gBBASgNDANxAEQNEwNR
AcUBEwBRAUwN9gBRASgNDANZAcUBEwBZAVUNHANZAWINHANZASsG9gB5AEQNIwNhAcUBEwBhAVUN
HANhAWINHANhASsG9gChAcUB9gCpAaENLANpAcQNMwOxAc8NcQCpAdwNFwBxAe4NcQBBAKgFEwBZ
APoNXANpAAwOEwBpABQOAgNxAcUB9gBRADcOYQPBAV4OZwMpAQENaABhAHAOaADJAX4ObQNBALMF
EwBpAJQOEwABAZoOfgMpAagOvgApAdQOgwPRAe4OaAA5AfgO9gBRANMFEwAhAe4OaAApAVYPlAPh
AXsPwgLRAYYPEwDhAYYPEwDhAZAPmgPZAUwN9gDZAZ0PoAPZAaoPpwMBAbUPDAEZAbsPwQPhAbYL
zAPRAeQP0wPxAfIP2QNhAP4PaADZAb8LaADxARsQvgD5ATAQEwABAsUBEwAJAsUB9gARAsUB/QMZ
AsUBEwAhAsUB9gApAsUB9gAxAsUB9gApACMRwwSJAMUByQSZAMUBEwBBAkkR5gRBAk8R5gRJAsUB
EwBRAsUBpwNZAsUBEwBhAsUB9gBpAsUB9gBxAsUB9gB5AsUB9gCBAsUB9gCJAsUB9gCRAsUB9gCZ
AsUB9gAIAFgAKwEIAFwAMAEpAIMA7QEuAPsDsgUuAPMDdQUuAMsD+QQuANMDGAUuAOsDVQUuAAsE
dQUuAMMD8AQuAAMExwIuANsDJQUuAOsAxwIuAAsBTwUuAOMDxwJAACsAMAFAABMAbgFDABMAbgFD
ABsAfQFJAIMAxQFjABMAbgFjABsAfQFpAIMA/gGAACsAMAGDAHsAMAGDAHMAMAGDABsAfQGJAIMA
2QGgACsAMAGjABMAbgGjAMMAQALAACsAMAHDAOsAxwLDABMAbgHgACsAMAHjAAsBxwIAASsAMAEA
ARMAbgEDAQsBxwIgASsAMAEgARMAbgEpAXsDMgQpAYMDSQQpAYsDdgRAARMAbgFAASsAMAFJAYsD
dgRJAYMDpARgASsAMAFgARMAbgFjAXMDMAFjAWMD7wNjAQsBxwJjAVsDMAFjAWsDAwRpAYsDdgRp
AYMDhASAASsAMAGgASsAMAGpARMA3QTAARMAbgHAASsAMAHJARMA3QTgASsAMAHpAbsDMAEAAhMA
bgEAAisAMAFAAwsBxwKAAwsBxwKxAbYBuwHAARACFAIfAiQCMwIzArsCzQLNAhACEALyAjkDcwOJ
A6wDJAK1AyQCugMQAt0D0QTYBOsEBAABAAYABQAHAAYACQAIAAsACQANAA0ADgAPAAAA6QFPAAAA
ogJUAAAAUQJZAAAArgJeAAAAagOYAAAAlwTCAAAAqgTCAAAAmgXrAAAAmgUiAQAAAQgmAQAACAgi
AQAAGQjCAAAAYAhNAQAA1whSAQAA0QhjAQIABAADAAIABQAFAAIABgAHAAIABwAJAAIADwALAAIA
EgANAAIAEwAPAAIAGwARAAEAJAATAAIAIwATAAIAJQAVAAEAJgAVAAEAKAAXAAIAJwAXAAIAKQAZ
AAIALQAbAAIALgAdAAEALwAdAAIAMgAfAHUAdQCIAJUBnAGjAaoBogKpAgSAAAABAAAAAAAAAAAA
AAAAALwAAAACAAAAAAAAAAAAAAABAAoAAAAAAAgAAAAAAAAAAAAAAAoAEwAAAAAAAQAAAAAAAAAA
AAAAnQB2AwAAAAAKAAAAAAAAAAAAAACmALQDAAAAAAoAAAAAAAAAAAAAAKYAAgQAAAAACgAAAAAA
AAAAAAAApgAkBQAAAAAKAAAAAAAAAAAAAACmAGkGAAAAAAEAAAAAAAAAAAAAAJ0ALgcAAAAAAgAA
AAAAAAAAAAAAAQDyAQAAAAACAAAAAAAAAAAAAAAKAJkMAAAAAAIAAAAAAAAAAAAAAAEAsQ0AAAAA
AAAAAAEAAABxEQAABQAEAAYABAAMAAsAAAAQAAwA+AIAABAAGQD4AgAAAAAbAPgCLQAuAi0AsAIA
AAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBT
Y3JpcHRDb21wb25lbnRfYjU3MDhmNWE2OWI5NDY1ODgxMjYwM2E0ZGE3NWNiZWMudmJwcm9qLk15
AE15Q29tcHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3Zp
ZGVyYDEASW5wdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50X2I1NzA4ZjVhNjliOTQ2NTg4MTI2MDNh
NGRhNzVjYmVjLnZicHJvagBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3Jp
cHRNYWluAEFjdGlvblR5cGVzAE15UmVzb3VyY2VzAFNjcmlwdENvbXBvbmVudF9iNTcwOGY1YTY5
Yjk0NjU4ODEyNjAzYTRkYTc1Y2JlYy52YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGluZ3MATWlj
cm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5j
dG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QA
LmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0
aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRl
cgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRp
b24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5n
AENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dl
dEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRl
eHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMDgAQ296
eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
VHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAENvbXBvbmVu
dABPYmplY3RJRABJc0lucHV0AEJ1ZmZlcgBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9TdGF0
aWNPdXRwdXRDb2x1bW5zAE5leHRSb3cARW5kT2ZSb3dzZXQAU3RhdGljSW5wdXRDb2x1bW5zAFN0
YXRpY091dHB1dENvbHVtbnMAU2NyaXB0Q29tcG9uZW50UGx1cwBQcm9jZXNzSW5wdXQASW5wdXRJ
RABJbnB1dF9Qcm9jZXNzSW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0Um93AFJvdwBQYXJlbnRDb21w
b25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQuU3FsU2Vy
dmVyLkR0cy5SdW50aW1lLldyYXBwZXIASURUU0Nvbm5lY3Rpb25NYW5hZ2VyMTAwAGdldF9Dcm1D
b25uZWN0aW9uAENybUNvbm5lY3Rpb24AUHJlRXhlY3V0ZQBQb3N0RXhlY3V0ZQBWYWxpZGF0ZQBl
cnJNZXNzYWdlAFJlaW5pdGlhbGl6ZU1ldGFEYXRhAHNldF9Dcm1Db25uZWN0aW9uAHZhbHVlAGdl
dF9BY3Rpb24Ac2V0X0FjdGlvbgBnZXRfUmVsYXRpb25zaGlwTmFtZQBzZXRfUmVsYXRpb25zaGlw
TmFtZQBnZXRfQ3JtQ29ubmVjdGlvblR5cGUARmlyZUVycm9yXwBtZXNzYWdlAE1pY3Jvc29mdC5T
cWxTZXJ2ZXIuRFRTUGlwZWxpbmVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5l
LldyYXBwZXIASURUU0lucHV0Q29sdW1uMTAwAEdldElucHV0Q29sdW1uXwBleHRlcm5hbE5hbWUA
bV9jcm1Db25uZWN0aW9uAG1fYWN0aW9uAG1fcmVsYXRpb25zaGlwTmFtZQBJQ3JtQ29ubmVjdGlv
bgBtX2Nvbm5lY3Rpb24AQ296eVJvYy5EeW5hbWljcwBDb3p5Um9jLkR5bmFtaWNzLkNybTIwMTEu
T3JnYW5pemF0aW9uU2VydmljZQBPcmdhbml6YXRpb25TZXJ2aWNlQ2xpZW50AG1fc2VydmljZTIw
MTEAQ296eVJvYy5EeW5hbWljcy5Dcm0uU2VydmljZQBDcm1TZXJ2aWNlAG1fc2VydmljZTQAbV9y
ZXF1ZXN0TmFtZQBtX2ZlbkluZGV4AG1fZmVpSW5kZXgAbV9zZW5JbmRleABtX3NlaUluZGV4AEFj
dGlvbgBSZWxhdGlvbnNoaXBOYW1lAENybUNvbm5lY3Rpb25UeXBlAEVudW0AdmFsdWVfXwBBc3Nv
Y2lhdGUARGlzYXNzb2NpYXRlAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5hZ2VyAF9yZXNN
Z3IAU3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUAZ2V0X1Jlc291
cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBWYWx1ZQBDdWx0dXJlAFN5c3RlbS5D
b25maWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9TeW5jT2JqZWN0
AGdldF9WYWx1ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRl
AEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENv
ZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1p
Y3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmli
dXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24A
SGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50
aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhh
bmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUA
c2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmli
dXRlAFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAElEVFNDb21wb25l
bnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29sbGVjdGlvbjEw
MABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABnZXRfSXRlbQBnZXRfSUQASURUU1J1
bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0
aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFnZXIARW50aXR5
UmVmZXJlbmNlAE9yZ2FuaXphdGlvblJlcXVlc3QATW9uaWtlcgBBc3NvY2lhdGVFbnRpdGllc1Jl
cXVlc3QARGlzYXNzb2NpYXRlRW50aXRpZXNSZXF1ZXN0AFN5c3RlbS5XZWIuU2VydmljZXMAU3lz
dGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMAU29hcEV4Y2VwdGlvbgBFeGNlcHRpb24AR3VpZABz
ZXRfUmVxdWVzdE5hbWUAc2V0X0l0ZW0AZ2V0X0J1ZmZlcgBDb252ZXJzaW9ucwBzZXRfTG9naWNh
bE5hbWUAc2V0X0lkAE9yZ2FuaXphdGlvblJlc3BvbnNlAEV4ZWN1dGUAc2V0X05hbWUAc2V0X01v
bmlrZXIxAHNldF9Nb25pa2VyMgBSZXNwb25zZQBSZXF1ZXN0AEFwcGxpY2F0aW9uRXhjZXB0aW9u
AFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBTeXN0ZW0uWG1sAFhtbE5vZGUAZ2V0X0RldGFp
bABnZXRfSW5uZXJYbWwAQ2xlYXJQcm9qZWN0RXJyb3IAZ2V0X01lc3NhZ2UAQWNxdWlyZUNvbm5l
Y3Rpb24AQ29ubmVjdABHZXRTZXJ2aWNlAEludDMyAFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0
Q29tcG9uZW50AElEVFNCdWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAGdldF9MaW5l
YWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAENsb3NlAElzTnVsbE9yRW1wdHkAZ2V0X0lzQXR0
YWNoZWQASURUU0lucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2x1bW5Db2xsZWN0
aW9uAGdldF9Db3VudABzZXRfQ29ubmVjdGlvbk1hbmFnZXJJRABJRFRTRXh0ZXJuYWxNZXRhZGF0
YUNvbHVtbjEwMABJRFRTRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0V4
dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uAHNldF9Jc1VzZWQAUmVtb3ZlQWxsAE5ldwBE
YXRhVHlwZQBzZXRfRGF0YVR5cGUAc2V0X0xlbmd0aABFbXB0eQBGaXJlRXJyb3IAU3lzdGVtLkNv
bGxlY3Rpb25zAElFbnVtZXJhdG9yAEdldEVudW1lcmF0b3IAZ2V0X0N1cnJlbnQAZ2V0X0V4dGVy
bmFsTWV0YWRhdGFDb2x1bW5JRABNb3ZlTmV4dABJRGlzcG9zYWJsZQBEaXNwb3NlAFNTSVNTY3Jp
cHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0
cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1
dGUAQ29sdW1uTWFwcGluZ3NBdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBEZXNjcmlwdGlv
bkF0dHJpYnV0ZQBDYXRlZ29yeUF0dHJpYnV0ZQBTeXN0ZW0uUmVmbGVjdGlvbgBBc3NlbWJseQBn
ZXRfQXNzZW1ibHkAU3lzdGVtLlRocmVhZGluZwBNb25pdG9yAEVudGVyAEV4aXQARGVidWdnZXJO
b25Vc2VyQ29kZUF0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfYjU3MDhmNWE2OWI5NDY1ODgxMjYw
M2E0ZGE3NWNiZWMudmJwcm9qLlJlc291cmNlcy5yZXNvdXJjZXMAQ29tcGlsYXRpb25SZWxheGF0
aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBBc3NlbWJseUZpbGVW
ZXJzaW9uQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUA
QXNzZW1ibHlDb3B5cmlnaHRBdHRyaWJ1dGUAQXNzZW1ibHlQcm9kdWN0QXR0cmlidXRlAEFzc2Vt
Ymx5Q29tcGFueUF0dHJpYnV0ZQBBc3NlbWJseURlc2NyaXB0aW9uQXR0cmlidXRlAEFzc2VtYmx5
VGl0bGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50X2I1NzA4ZjVhNjliOTQ2NTg4MTI2MDNhNGRh
NzVjYmVjLnZicHJvai5kbGwAAAAAC0kAbgBwAHUAdAAAG0MAcgBtAEMAbwBuAG4AZQBjAHQAaQBv
AG4AACFSAGUAbABhAHQAaQBvAG4AcwBoAGkAcABOAGEAbQBlAAARTQBvAG4AaQBrAGUAcgAxAAAR
TQBvAG4AaQBrAGUAcgAyAAAtVQBuAGgAYQBuAGQAbABlAGQAIABhAGMAdABpAG8AbgAgAHQAeQBw
AGUALgAAM1UAbgBoAGEAbgBkAGwAZQBkACAAcwBlAHIAdgBpAGMAZQAgAG8AYgBqAGUAYwB0AC4A
ACNBAHMAcwBvAGMAaQBhAHQAZQBFAG4AdABpAHQAaQBlAHMAAClEAGkAcwBhAHMAcwBvAGMAaQBh
AHQAZQBFAG4AdABpAHQAaQBlAHMAAB9GAGkAcgBzAHQARQBuAHQAaQB0AHkATgBhAG0AZQAAG0YA
aQByAHMAdABFAG4AdABpAHQAeQBJAGQAACFTAGUAYwBvAG4AZABFAG4AdABpAHQAeQBOAGEAbQBl
AAAdUwBlAGMAbwBuAGQARQBuAHQAaQB0AHkASQBkAAA/UwBlAGwAZQBjAHQAIABEAHkAbgBhAG0A
aQBjAHMAIABDAFIATQAgAGMAbwBuAG4AZQBjAHQAaQBvAG4ALgAANVMAcABlAGMAaQBmAHkAIABy
AGUAbABhAHQAaQBvAG4AcwBoAGkAcAAgAG4AYQBtAGUALgAAJU0AYQBwACAAaQBuAHAAdQB0ACAA
YwBvAGwAdQBtAG4AcwAuAAAVTgBvACAAaQBuAHAAdQB0AHMALgAAGUQAWQBOAEEATQBJAEMAUwAt
AEMAUgBNAAE1RAB5AG4AYQBtAGkAYwBzACAAQwBSAE0AIABSAGUAbABhAHQAaQBvAG4AcwBoAGkA
cABzAAAvSQBuAHAAdQB0ACAAYwBvAGwAdQBtAG4AIABuAG8AdAAgAGYAbwB1AG4AZAAuAAAxTQB5
AC4AUgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAACg1OTCuaIRR7ci
QvCxfstEAAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwHBhUSGAESDAQAABIIBwYVEhgB
EggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggECAASEQQIABIUBCABAhwDIAAI
BCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYVEhkBEwAEKAATAAgWz0kLuAw0
6giJhF3NgIDMkQkgBAESIQgCEiUEIAAdDgMgAAIEKAAdDgMGEiQDBhIoBiACAQgSJQUgAQESHAMG
EiEFIAEBEiEEIAASLQQoABItBSABAhAOBCABAQ4EIAARMAUgAQERMAUgARIxDgIGDgMGETADBhI1
AwYSOQMGEj0CBggDKAAOBCgAETAEAAAAAAQBAAAAAwYSRQMGEkkEAAASRQQAABJJBQABARJJBAgA
EkUECAASSQMGEjgCBhwEAAASOAQIABI4BSABARFVCAEAAQAAAAAABSACAQ4OFwEACk15VGVtcGxh
dGUHOC4wLjAuMAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIMBAcBEggEBwESEQQH
ARIUEwEADk15LkFwcGxpY2F0aW9uAAATAQAOTXkuV2ViU2VydmljZXMAABABAAtNeS5Db21wdXRl
cgAADAEAB015LlVzZXIAAAQAARwcAwcBAgMHAQgGAAESFRFxBAcBEhUDBwEOBRABAB4ABAoBHgAE
BwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNvYXBIdHRwQ2xp
ZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAGFRIY
ARMABhUSGQETAAQKARMABSABARMABgcCEwATAAQgAQECBQEAAAAABAcBHQ4FIAASgI0FIAASgJEG
IAESgJUcBSAAEoCZBiABEoCdHAQHARItBSACAQ4cBCAAEiUEIAEcCAQAAQ4cBiABARGAvQggARKA
xRKApQYgAQESgKkIIAESgMkSgM0GAAEBEoC5BSAAEoDZIgcLEoChEoChEoClEoCpEoCpEoCtEoCx
EoC1EoC5EYC9ETAEIAEcHAUgABKA4QUgABKA5QUgAggICAoHBBKAlRIxHBEwBAABAg4FIAASgOkK
BwQCAhKAlRKAuQUgABKA8QUgABKA7QYgAQERgPUEIAEBCAgHAhKA7RKAlQQHAREwBgcCHQ4dDgog
BgEIDg4OCBACBiABEoDtHAUgABKA+QMgABwRBwYSgO0SMRKAlRIxEjESgPkNAQAIVmFsaWRhdGUA
AAUgAQEdDi4BAAMAAAANQ3JtQ29ubmVjdGlvbgZBY3Rpb24QUmVsYXRpb25zaGlwTmFtZQAAFgEA
EUNybUNvbm5lY3Rpb25UeXBlAAAsAQAnU2VsZWN0IER5bmFtaWNzIENSTSBDb25uZWN0aW9uIE1h
bmFnZXIuAAANAQAIU2V0dGluZ3MAAB8BABpTcGVjaWZ5IHJlbGF0aW9uc2hpcCBuYW1lLgAAHgEA
GVNlbGVjdCBhY3Rpb24gdG8gcGVyZm9ybS4AAAUgABKBHQcgAgEOEoEdBgcCEkUSRQQHARJJCAEA
AgAAAAAABAABARwEBwESOAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwEM
AQAHMS4wLjAuMAAAKQEAJDBlMDBiY2Y1LWRiYTMtNGQ4MC05YmFiLWZmMzYzY2UwZTc3NQAABQEA
AQAAHwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEyAAA8AQA3U2NyaXB0Q29tcG9uZW50X2I1
NzA4ZjVhNjliOTQ2NTg4MTI2MDNhNGRhNzVjYmVjLnZicHJvagAADgEACU1pY3Jvc29mdAAAAAAA
RFYAAAAAAAAAAAAAXlYAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBWAAAAAAAAAAAAAAAAX0Nv
ckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAKAAAgA4AAABI
AACAEAAAAGAAAIAAAAAAAAAAAAAAAAAAAAIAAgAAAHgAAIADAAAAkAAAgAAAAAAAAAAAAAAAAAAA
AQAAfwAAqAAAgAAAAAAAAAAAAAAAAAAAAQABAAAAwAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAA2AAA
AAAAAAAAAAAAAAAAAAAAAQAAAAAA6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA+AAAAAAAAAAAAAAA
AAAAAAAAAQAAAAAACAEAAIBlAADoAgAAAAAAAAAAAABoaAAAKAEAAAAAAAAAAAAAkGkAACIAAAAA
AAAAAAAAABhhAABoBAAAAAAAAAAAAABoBDQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYA
TwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAA
AEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkA
bwBuAAAAAAAAALAEyAMAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAApAMAAAEAMAAw
ADAAMAAwADQAYgAwAAAANAAKAAEAQwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAABNAGkAYwByAG8A
cwBvAGYAdAAAAJgAOAABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAGMAcgBp
AHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGIANQA3ADAAOABmADUAYQA2ADkAYgA5ADQANgA1ADgA
OAAxADIANgAwADMAYQA0AGQAYQA3ADUAYwBiAGUAYwAuAHYAYgBwAHIAbwBqAAAAMAAIAAEARgBp
AGwAZQBWAGUAcgBzAGkAbwBuAAAAAAAxAC4AMAAuADAALgAwAAAAmAA8AAEASQBuAHQAZQByAG4A
YQBsAE4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGIANQA3ADAAOABm
ADUAYQA2ADkAYgA5ADQANgA1ADgAOAAxADIANgAwADMAYQA0AGQAYQA3ADUAYwBiAGUAYwAuAHYA
YgBwAHIAbwBqAC4AZABsAGwAAABcABsAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABD
AG8AcAB5AHIAaQBnAGgAdAAgAEAAIABNAGkAYwByAG8AcwBvAGYAdAAgADIAMAAxADIAAAAAAKAA
PAABAE8AcgBpAGcAaQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBw
AG8AbgBlAG4AdABfAGIANQA3ADAAOABmADUAYQA2ADkAYgA5ADQANgA1ADgAOAAxADIANgAwADMA
YQA0AGQAYQA3ADUAYwBiAGUAYwAuAHYAYgBwAHIAbwBqAC4AZABsAGwAAACQADgAAQBQAHIAbwBk
AHUAYwB0AE4AYQBtAGUAAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AYgA1ADcA
MAA4AGYANQBhADYAOQBiADkANAA2ADUAOAA4ADEAMgA2ADAAMwBhADQAZABhADcANQBjAGIAZQBj
AC4AdgBiAHAAcgBvAGoAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4A
MAAuADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADEALgAw
AC4AMAAuADAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAd3d3d3d3d3d3d3d3d3dwBEREREREREREREREREREcAT/////////////////9HAE
//////////////////RwBP/////////////////0cAT/////////////////9HAE////////////
//////RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//
///////////////0cAT/////////////////9HAE//////////////////RwBP//////////////
///0cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////
////////////9HAE//////////////////RwBP/////////////////0cASIiIiIiIiIiIiIiIiI
hHAERERERERERERERERERERwBExMTExMTExMTE7Ozkl0cATMzMzMzMzMzMzMzMzMxAAARERERERE
REREREREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
/////////////////////8AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGA
AAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA8AA
AAf///////////////8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA
////AAAAAAAAAAAAB3d3d3d3d3dERERERERER0////////hHT///////+EdP///////4R0//////
//hHT///////+EdP///////4R0////////hHT///////+EdIiIiIiIiIR0zMzMzMzMxHxERERERE
RMAAAAAAAAAAAAAAAAAAAAAA//8AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABAAD//wAA//8AAAAAAQACACAgEAABAAQA6AIAAAIAEBAQAAEABAAoAQAA
AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAADAAAAHA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property>
<property id="37" 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="324" 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_b5708f5a69b94658812603a4da75cbec</property>
<property id="325" 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>
<connections>
<connection id="87" name="CrmConnection" description="" connectionManagerID="{B7AC7DEF-08AC-4F40-86FF-DF27C9B310BE}" /></connections>
<inputs>
<input id="27" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="True">
<externalMetadataColumn id="101" name="FirstEntityName" description="" precision="0" scale="0" length="100" dataType="wstr" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="102" name="FirstEntityId" description="" precision="0" scale="0" length="0" dataType="guid" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="103" name="SecondEntityName" description="" precision="0" scale="0" length="100" dataType="wstr" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="104" name="SecondEntityId" description="" precision="0" scale="0" length="0" dataType="guid" codePage="0" mappedColumnId="0" /></externalMetadataColumns></input>
</inputs>
</component>