<component id="1" name="Dynamics CRM Quote To Sales Order" 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="5" 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[\scriptcomponent_3fe65a1a026e44d09602cd9524772938.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_3fe65a1a026e44d09602cd9524772938.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_3fe65a1a026e44d09602cd9524772938.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{53E8FF77-DB78-4A5D-8BD3-FD31D359A042}</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><arrayElement dataType="System.String"><![CDATA[\my project\settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\bufferwrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [SalesOrderId]() As Guid
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [SalesOrderId_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"SalesOrderId"}
        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\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_3fe65a1a026e44d09602cd9524772938.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_3fe65a1a026e44d09602cd9524772938.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2016")> 
<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("b2ee5dfc-aa58-4bf5-b794-e359d4c0bfbc")> 

' 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\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-2016 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.Web.Services.Protocols

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Dynamics.Crm
Imports CozyRoc.Dynamics.Crm2011.OrganizationService


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            Dim req As New OrganizationRequest
            req.RequestName = "ConvertQuoteToSalesOrder"

            ' Setup QuoteId.
            req("QuoteId") = New Guid(Convert.ToString(Row.Buffer(m_qiIndex)))

            Dim value As Object

            value = GetBufferValue_(Row.Buffer, m_qcdIndex)
            If Not value Is Nothing Then
                req("QuoteCloseDate") = Convert.ToDateTime(value)
            End If

            value = GetBufferValue_(Row.Buffer, m_qcdescIndex)
            If Not value Is Nothing Then
                req("QuoteCloseDescription") = Convert.ToString(value)
            End If

            value = GetBufferValue_(Row.Buffer, m_qcsIndex)
            If Not value Is Nothing Then
                Dim qcs As New OptionSetValue()
                qcs.Value = Convert.ToInt32(value)
                req("QuoteCloseStatus") = qcs
            End If

            value = GetBufferValue_(Row.Buffer, m_qcsubjIndex)
            If Not value Is Nothing Then
                req("QuoteCloseSubject") = Convert.ToString(value)
            End If

            ' Execute action.
            Dim res As OrganizationResponse = m_service.Execute(req)
            Dim salesOrder As Entity = CType(res("Entity"), Entity)
            Row.SalesOrderId = salesOrder.Id
        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), _
            IConnection)
        Call m_connection.Connect()

        m_service = CType(m_connection.GetService(0), OrganizationServiceClient)   ' 0 - CRM Service

        ' Get input column indexes.
        m_qiIndex = GetColumnIndex_("QuoteId")
        m_qcdIndex = GetColumnIndex_("QuoteCloseDate")
        m_qcdescIndex = GetColumnIndex_("QuoteCloseDescription")
        m_qcsIndex = GetColumnIndex_("QuoteCloseStatus")
        m_qcsubjIndex = GetColumnIndex_("QuoteCloseSubject")
    End Sub ' PreExecute


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

        Call m_connection.Close()
        m_qiIndex = -1
        m_qcdIndex = -1
        m_qcdescIndex = -1
        m_qcsIndex = -1
        m_qcsubjIndex = -1
    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 Exception("Select Dynamics CRM Connection.")
            End If

            Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
            If input.IsAttached Then
                Dim inputCol As IDTSInputColumn100 = Nothing

                inputCol = GetInputColumn_("QuoteId")
                If inputCol Is Nothing Then
                    Throw New Exception("QuoteId column is not mapped.")
                End If
            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 QuoteId column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "QuoteId"
        column.DataType = DataType.DT_GUID

        ' Setup QuoteCloseDate column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "QuoteCloseDate"
        column.DataType = DataType.DT_DBTIMESTAMP

        ' Setup QuoteCloseDescription column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "QuoteCloseDescription"
        column.DataType = DataType.DT_WSTR
        column.Length = 1000

        ' Setup QuoteCloseStatus column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "QuoteCloseStatus"
        column.DataType = DataType.DT_I4

        ' Setup QuoteCloseSubject column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "QuoteCloseSubject"
        column.DataType = DataType.DT_WSTR
        column.Length = 250
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <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
#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 Quote To Sales Order", _
            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

        GetInputColumn_ = result
    End Function    ' GetInputColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetColumnIndex_(ByVal externalName As String) As Integer
        Dim result As Integer = -1

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim inputCol As IDTSInputColumn100 = GetInputColumn_(externalName)
        If Not inputCol Is Nothing Then
            result = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                inputCol.LineageID)
        End If

        GetColumnIndex_ = result
    End Function    ' GetColumnIndex_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetBufferValue_( _
        ByVal buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer, _
        ByVal index As Integer) As Object

        Dim result As Object = Nothing

        If index <> -1 AndAlso Not buffer.IsNull(index) Then
            result = buffer(index)
        End If

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


#Region "Attributes"
    Private m_crmConnection As String

    Private m_connection As IConnection
    Private m_service As OrganizationServiceClient
    Private m_qiIndex As Integer
    Private m_qcdIndex As Integer
    Private m_qcdescIndex As Integer
    Private m_qcsIndex As Integer
    Private m_qcsubjIndex As Integer
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="6" 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_3fe65a1a026e44d09602cd9524772938.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAKEFYFgAAAAAAAAAAOAAAiELAQgAADQAAAAMAAAAAAAAPlMA
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAPBSAABLAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAARDMAAAAgAAAANAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAAA2AAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAAQAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAAg
UwAAAAAAAEgAAAACAAUAzCoAACQoAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgAyAgMEBQ4EKB4AAAoqAAAAEzABAAcAAAAMAAARFo0fAAABKgA6
AhYDjAoAAAFvHwAACioAYgMsCQIWbyAAAAorC3IBAABwcyEAAAp6KgAAABMwAwARAAAADQAAEReN
HwAAAQsHFnKeAABwogcqAAAAEzABAAkAAAAOAAARAigiAAAKCgYqAAAAEzABAAkAAAAPAAARAigj
AAAKCgYqAAAAfgIoJQAACgICcxwAAAZ9BgAABAICcx4AAAZ9BwAABCq2AwIoJgAACm8nAAAKcrgA
AHBvKAAACm8pAAAKMw8CAgMXBHMRAAAGbxoAAAYqAABKKwcCA28bAAAGA28WAAAGLfEqAAYqAAA6
AigXAAAKAgN9CAAABCoAEzACACAAAAAQAAARAnsIAAAEbyYAAApvKgAACnLEAABwbysAAApvLAAA
Cio6AigXAAAKAgN9CQAABCoAHgIoGAAABiobMAUAiAEAABEAABFzLQAACgoGcuAAAHBvLgAACgZy
EgEAcBIHA28vAAAKAnsNAAAEbzAAAAooEQAACigxAAAKKDIAAAoRB4wKAAABbzMAAAoCA28vAAAK
AnsOAAAEbysAAAYoEQAACg0JLBsGciIBAHAJKBEAAAooNAAACowvAAABbzMAAAoCA28vAAAKAnsP
AAAEbysAAAYoEQAACg0JLBYGckABAHAJKBEAAAooMQAACm8zAAAKAgNvLwAACgJ7EAAABG8rAAAG
KBEAAAoNCSwmczUAAAoTBBEECSgRAAAKKDYAAApvNwAACgZybAEAcBEEbzMAAAoCA28vAAAKAnsR
AAAEbysAAAYoEQAACg0JLBYGco4BAHAJKBEAAAooMQAACm8zAAAKAnsMAAAEBm84AAAKCwdysgEA
cG85AAAKdCoAAAEMAwhvOgAACm8TAAAG3j0lKDsAAAoTBQIRBW88AAAKbz0AAApvKAAABig+AAAK
3hwlKDsAAAoTBgIRBm8/AAAKbygAAAYoPgAACt4AKkEwAAAAAAAAAAAAAEoBAABKAQAAIQAAACwA
AAEAAAAAAAAAAEoBAABrAQAAHAAAAC0AAAETMAMAmgAAAAAAAAACKEAAAAoCAnsGAAAEbx0AAAYU
b0EAAAp0DgAAAX0LAAAEAnsLAAAEb0IAAAoCAnsLAAAEFm9DAAAKdA8AAAF9DAAABAICchIBAHBv
KgAABn0NAAAEAgJyIgEAcG8qAAAGfQ4AAAQCAnJAAQBwbyoAAAZ9DwAABAICcmwBAHBvKgAABn0Q
AAAEAgJyjgEAcG8qAAAGfREAAAQqAADWAihEAAAKAnsLAAAEb0UAAAoCFX0NAAAEAhV9DgAABAIV
fQ8AAAQCFX0QAAAEAhV9EQAABCoAABswAgCVAAAAEgAAEQJvJQAABihGAAAKLAtywAEAcHNHAAAK
egIoJgAACm8nAAAKFowyAAABbygAAAoMCG9IAAAKLBwUDQJyEgEAcG8pAAAGDQktC3IAAgBwc0cA
AAp6Am8mAAAKbyoAAApyxAAAcG8rAAAKAm8lAAAGb0kAAAoXCt4aJSg7AAAKEwQWCgMRBG8/AAAK
USg+AAAK3gAGCwcqAAAAAQwAAAAAAAB3dwAaLQAAARMwAgAXAQAAEwAAEQIoSgAACgIoJgAACm8n
AAAKb0sAAAoWMwtyPAIAcHNHAAAKegIoJgAACm8nAAAKFowyAAABbygAAAoLB29MAAAKF29NAAAK
B29OAAAKb08AAAoHb0wAAApvUAAACgdvTAAACm9RAAAKCgZyEgEAcG9SAAAKBh9Ib1MAAAoHb0wA
AApvUQAACgoGciIBAHBvUgAACgYghwAAAG9TAAAKB29MAAAKb1EAAAoKBnJAAQBwb1IAAAoGIIIA
AABvUwAACgYg6AMAAG9UAAAKB29MAAAKb1EAAAoKBnJsAQBwb1IAAAoGGW9TAAAKB29MAAAKb1EA
AAoKBnKOAQBwb1IAAAoGIIIAAABvUwAACgYg+gAAAG9UAAAKKgATMAEACQAAABQAABECewoAAAQK
BioAAAAiAgN9CgAABCoAAAATMAMAEwAAABUAABEXjR8AAAELBxZyUgIAcKIHCgYqABMwBwAdAAAA
FgAAERYKAigmAAAKFnJsAgBwA35VAAAKFhIAb1YAAAoqAAAAGzACAHwAAAAXAAARFA0CKCYAAApv
JwAAChaMMgAAAW8oAAAKDAhvTAAACgNvVwAACgoIb04AAApvWAAAChMFKyIRBW9ZAAAKdA0AAAET
BBEEb1oAAAoGb1sAAAozBREEDd4hEQVvXAAACi3V3hYRBXU4AAABLAwRBXU4AAABb10AAArcCQsH
KgEMAAACACYAPGIAFgAAAAETMAMARQAAABgAABEVDQIoJgAACm8nAAAKFowyAAABbygAAAoLAgNv
KQAABgwILB0Cb14AAApvXwAACgdvYAAACghvYQAACm9iAAAKDQkKBioAAAATMAIAJQAAABkAABEU
CwQVLhYDBG9jAAAKLQ0DBG8wAAAKKBEAAAoLBygRAAAKCgYqAAAAHgIoFwAACioTMAIALQAAABoA
ABF+EgAABC0gcrACAHDQDAAAAigUAAAKb2kAAApzagAACgsHgBIAAAR+EgAABCoAAAATMAEABgAA
ABsAABF+EwAABCoAAB4CgBMAAAQqQnMXAAAKKBEAAAqAFQAABCoAAAAeAihrAAAKKhswAQA/AAAA
HAAAEX4UAAAELTJ+FQAABCgRAAAKKGwAAAp+FAAABC0cczEAAAaAFAAABN4QfhUAAAQoEQAACiht
AAAK3H4UAAAEKgABDAAAAgAdAAwpABAAAAABQlNKQgEAAQAAAAAADAAAAHYyLjAuNTA3MjcAAAAA
BQBsAAAARA0AACN+AACwDQAAQBIAACNTdHJpbmdzAAAAAPAfAADkAgAAI1VTANQiAAAQAAAAI0dV
SUQAAADkIgAAQAUAACNCbG9iAAAAAAAAAAIAAAFXFaIJCQ8AAAD6ATMAFgAAAQAAAEwAAAANAAAA
FQAAADIAAAAYAAAAeAAAAD0AAAAcAAAABwAAAA8AAAARAAAACQAAAAEAAAALAAAAAQAAAAIAAAAD
AAAAAgAAAAAAAhIBAAAAAAAKAKkBfwEKAN0BvwEGAO0B5gEKAEUCfwEGAMMC5gEKAEUDGwMOAJcD
gAMSAOYDxQMWABcExQMGAF8E5gEOAAcFgAMaALgFkAUeAL8GlgYOAEEHLAciAJgHawcGABsICggG
AEgIMwgmAKkIlAgmAPYI4AgmAA8J4AgmADwJJAkGAGYJUwkKAKUJfgkKAL0JEwAmAPIJ1QkGACcK
BwoGAEUK5gEGAGkK5gEKAIIKEwAGAMYKpwoGANoK5gEGAPIK5gESAAwLxQMGABkL5gEeAC8LlgYe
AF4LlgYeAIkLlgYeAKYLlgYeAOkLlgYiABgMawciACwMawciAEEMawciAEgMawcqAIkMawwGAJcM
5gEGALwM5gEGAMQM5gEKAO8MfgkuABYNCw0GAI0N5gEeALoNlgYeAOINlgYeADoOlgYaAIgOkAUG
AMwOuQ4GABgP5gEWACwPxQMeAFAPlgYSAKIPxQMOAOsPyQ8OAAMQyQ8OAB8QyQ8mADMQ4AgGAFoQ
SBAGAIEQcBAGAJQQUwkGAP0QBwoGAB0RBwoGADsRSBAGAFgRpwoGAGYRSBAGAIERSBAGAJwRSBAG
ALURSBAGAM4RSBAGAOsRSBAAAAAAAQAAAAAAAQABAAAAAAApADcABQABAAEAAAAAAHIANwAJAAEA
AgAAARAAfQA3AA0AAQADAAUBAACHAAAADQAFAAgABQEAAJUAAAANAAUADwABAAAAsAC8AB0ABgAR
AAEAAAD0ALwALQAGABgAAQAAAAIBvAANAAgAHAABAAAADgG8AA0ACQAeAAEAAAAYAbwAIAAKAB8A
AAAAACMBLwENABIALAAAARAAdAG8AEkAFAAwADEACAIgADEAMQItADEAUwI6ADEAeAJHACEAVAOQ
AAYAAgHbAAYADgHfAAEAXQXwAAEAXQXwAAEAHAchAQEATQckAQEAsgcoAQEAvAcsAQEAxgcsAQEA
0QcsAQEA3wcsAQEA6gcsAREAKwgzAREAVAg3AREAwQhVAREAyQhZAQghAAAAAAYYuQETAAEAECEA
AAAABhi5ARMAAQAYIQAAAAARGPQBFwABAEQhAAAAABMI+wEbAAEAXCEAAAAAEwghAigAAQB0IQAA
AAATCEoCNQABAIwhAAAAABMIaAJCAAEApCEAAAAARgKuAmMAAQDAIQAAAABGArcCaAACANQhAAAA
AIMAyAJsAAIA7CEAAAAARgLQAnEAAgAAIgAAAAARANkCeAACABwiAAAAAAEA9wKAAAMAOCIAAAAA
Bhi5ARMABABAIgAAAAADCAsDiwAEAHQiAAAAAAYYuQETAAQAiCIAAAAABhi5Aa8ABACYIgAAAABG
CkgEuQAIAKwiAAAAAAYIZAS+AAgAvCIAAAAABgh7BMQACQDYIgAAAABGCpMEuQAKAPgiAAAAAIYA
qwTJAAoAECMAAAAAhgCzBMkACgAoIwAAAAAGGLkBEwAKAEgjAAAAAEYCGwXjAAoAeCMAAAAARgMw
BeoADACMIwAAAABGA0MF6gANAJAjAAAAAAYYuQH0AA4AoCMAAAAABgjRBfoADwDMIwAAAAAGGLkB
9AAPANwjAAAAAAYYuQETABAA5CMAAAAARgJDBeoAEACsJQAAAABGAvEFEwARAFQmAAAAAEYC/AUT
ABEAjCYAAAAABgAIBgQBEQBAJwAAAABGAhwGEwASAGQoAAAAAAYI0QVxABIAfCgAAAAABggxBgoB
EgCIKAAAAAABCEkGuQATAKgoAAAAAAEAXwYKARMA1CgAAAAAAQDSBg8BFABsKQAAAAABAO8GFQEV
AMApAAAAAAEA/wYaARYA9CkAAAAAAxi5ARMAGAD8KQAAAAAWCGAIOwEYADgqAAAAABYIdAhAARgA
TCoAAAAAFgiACEUBGABUKgAAAAARGPQBFwAZAGgqAAAAAAYYuQETABkAcCoAAAAAFgjWCFwBGQAA
AAEAtQIAAAEA7gIAAAEA7gIAAAEAJgQAAAIAMAQAAAMAOQQAAAQAQQQAAAEAdQQAAAEAdQQAAAEA
KAUAAAIAQQQAAAEAQQQAAAEAWQUAAAEAJgQAAAEAJgQAAAEAWQUAAAEAEQYAAAEAQwYAAAEAagYA
AAEA4gYAAAEA4gYAAAEADwcAAAIAFgcAAAEAdQQJALkBEwCZALkBZgGpALkBdQERALkBEwCxALkB
EwAkALkBEwAsALkBEwA0ALkBEwA8ALkBEwAkAAsDiwAsAAsDiwA0AAsDiwA8AAsDiwC5ALkBEwDB
ALkBEwDJALkBCgHRADYKDgIZAK4CYwAZALcCaAApAFcKGwIZANACcQDhAHMKKwIZALkBEwDpALkB
OwJEAFQDkABMANYIiwBMAJ0KuAJMALkBEwDxALkBxAA5ALkBrwA5AOEK0AI5AOoK1gIBAbkBCgEJ
AasEyQAJAbMEyQARAbkBxABZALkBEwBBAEgL4gIZAXUL6AIhAZYL7gIpAZ8LaAAZAckL9QIxAZYL
+wI5AQIM+gBBAbkBEwBBAaEMCgE5ALEMBwNJAJYLDANxAdACEQNRALkBCgFBAeEKFgNxAc0MHANZ
AbkBEwBxAdgMIwNZAZ0K1gJ5AOAMKANJAZYLMQNRAegMNgOBAfsMOwNhAR4NQgOJASkNcQCBATYN
FwBpAUgNcQBBAPEFEwBhAFQNYANxAGYNEwBxAG4NDANBAPwFEwBxAHkNEwD5AH8NZQNpAbkBCgEp
AZMNyQA5AaINCgFZABwGEwAhAdgNaAApAQoOdwOhAS8OxAApAVcOfQOpAXEOEwChAXEOEwChAXsO
gwOZAX8OCgGZAZEOiQOZAZ4O1gL5AKkOIQEZAa8OmQOhAZYLpAOpAdgOqwO5AeYOsQNpAPIOaACZ
AZ8LaAC5AQ8PyQDBASQPEwBZAD4PxwPJAWUPzQMpAbEMaABpAHcPaADRAYUP0wNJAJsP4wPZAbkB
EwDhAbkBEwDpAbkBCgHxAbkBCgH5AbkBCgEpAGMQPwSBALkBRQSRALkBEwAJAokQYgQJAo8QYgQR
ArkBEwAZArkB1gIhArkBEwApArkBCgExArkBCgE5ArkBCgFBArkBCgFJArkBCgFRArkBCgFZArkB
CgFhArkBCgEpAIMA8AEuALMDLgUuAKsD8QQuAIMDdQQuAIsDlAQuAKMD0QQuAMMD8QQuAHsDbAQu
ALsDxQIuAJMDoQQuAOsAxQIuACMBywQuAJsDxQJAACsAkwFAABMAbAFDABMAbAFDABsAewFJAIMA
yAFjABMAbAFjABsAewFpAIMAAQKAACsAkwGDABsAewGDAHMAkwGDAHsAkwGJAIMA3AGgACsAkwGj
ABMAbAGjAMMAQwLAACsAkwHDABMAbAHDAOsAxQLgACsAkwHjACMBxQIAARMAbAEAASsAkwEDASMB
xQIgARMAbAEgASsAkwFAARMAbAFAASsAkwFgASsAkwFgARMAbAFjATMD7QNjASsDkwFjASMBxQJj
ASMDkwFpAUMDEgRpATsD+wOAASsAkwGgASsAkwGpARMAWQTAASsAkwHAARMAbAHJARMAWQTgASsA
kwHpAXMDkwEAAhMAbAEAAisAkwGAAyMBxQLAAyMBxQK0AbkBvgHDARMCFwIiAicCNgI2Ar4CywLb
AhMCEwICA0gDagOQAycC2wITArUD2QPoA00EVARnBAQAAQAGAAUABwAGAAkACgALAAsADAANAA0A
DwAAAN0BTwAAAJYCVAAAAEUCWQAAAKICXgAAAF4DmAAAAL8EzQAAANIE0gAAAN8E1wAAAPMEzQAA
AOMF/wAAAOMFLwEAAPgHzQAAABsISwEAAIwIUAEAAHUEYQECAAQAAwACAAUABQACAAYABwACAAcA
CQACAA8ACwACABIADQABABMADwABABQAEQACABUAEwACAB0AFQACACUAFwABACYAFwACACcAGQAC
AC0AGwACAC4AHQABAC8AHQACADIAHwB1AHUAiACYAZ8BpgGtAaUCrAIEgAAAAQAAAAAAAAAAAAAA
AAC8AAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAIAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAA
AJ0AagMAAAAACgAAAAAAAAAAAAAApgCoAwAAAAAKAAAAAAAAAAAAAACmAPYDAAAAAAoAAAAAAAAA
AAAAAKYAbQUAAAAACgAAAAAAAAAAAAAApgByBgAAAAABAAAAAAAAAAAAAACdAFoHAAAAAAIAAAAA
AAAAAAAAAAEA5gEAAAAAAgAAAAAAAAAAAAAACgBXDAAAAAACAAAAAAAAAAAAAAABAAsNAAAAAAAA
AAABAAAAsRAAAAUABAAGAAQAAAAQAAwA7AIAABAAGQDsAgAAAAAbAOwCLQAxAi0AswIAAAAAADxN
b2R1bGU+AG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBNeUFwcGxpY2F0aW9uAFNjcmlw
dENvbXBvbmVudF8zZmU2NWExYTAyNmU0NGQwOTYwMmNkOTUyNDc3MjkzOC52YnByb2ouTXkATXlD
b21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJg
MQBJbnB1dEJ1ZmZlcgBTY3JpcHRDb21wb25lbnRfM2ZlNjVhMWEwMjZlNDRkMDk2MDJjZDk1MjQ3
NzI5MzgudmJwcm9qAFVzZXJDb21wb25lbnQAQ29ubmVjdGlvbnMAVmFyaWFibGVzAFNjcmlwdE1h
aW4ATXlSZXNvdXJjZXMAU2NyaXB0Q29tcG9uZW50XzNmZTY1YTFhMDI2ZTQ0ZDA5NjAyY2Q5NTI0
NzcyOTM4LnZicHJvai5NeS5SZXNvdXJjZXMATXlTZXR0aW5ncwBNaWNyb3NvZnQuVmlzdWFsQmFz
aWMuQXBwbGljYXRpb25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9zb2Z0LlZp
c3VhbEJhc2ljLkRldmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0X0NvbXB1
dGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBPYmplY3RQ
cm92aWRlcgBVc2VyAGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2aWNl
cwBtX015V2ViU2VydmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNlcwBF
cXVhbHMAbwBHZXRIYXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0YW5j
ZV9fAFQAaW5zdGFuY2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UATWljcm9z
b2Z0LlZpc3VhbEJhc2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9Db250
ZXh0AEdldEluc3RhbmNlAENvenlSb2MuU1NJU1BsdXMuMjAwOABDb3p5Um9jLlNxbFNlcnZlci5T
U0lTAFNjcmlwdEJ1ZmZlclBsdXMATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABNaWNyb3Nv
ZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZQBTY3JpcHRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNl
cnZlci5QaXBlbGluZUhvc3QAUGlwZWxpbmVCdWZmZXIAQ29tcG9uZW50AE9iamVjdElEAElzSW5w
dXQAQnVmZmVyAGdldF9TdGF0aWNJbnB1dENvbHVtbnMAR3VpZABzZXRfU2FsZXNPcmRlcklkAFZh
bHVlAHNldF9TYWxlc09yZGVySWRfSXNOdWxsAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAE5leHRS
b3cARW5kT2ZSb3dzZXQAU3RhdGljSW5wdXRDb2x1bW5zAFNhbGVzT3JkZXJJZABTYWxlc09yZGVy
SWRfSXNOdWxsAFN0YXRpY091dHB1dENvbHVtbnMAU2NyaXB0Q29tcG9uZW50UGx1cwBQcm9jZXNz
SW5wdXQASW5wdXRJRABJbnB1dF9Qcm9jZXNzSW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0Um93AFJv
dwBQYXJlbnRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNy
b3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lLldyYXBwZXIASURUU0Nvbm5lY3Rpb25NYW5hZ2Vy
MTAwAGdldF9Dcm1Db25uZWN0aW9uAENybUNvbm5lY3Rpb24AUHJlRXhlY3V0ZQBQb3N0RXhlY3V0
ZQBWYWxpZGF0ZQBlcnJNZXNzYWdlAFJlaW5pdGlhbGl6ZU1ldGFEYXRhAHNldF9Dcm1Db25uZWN0
aW9uAHZhbHVlAGdldF9Dcm1Db25uZWN0aW9uVHlwZQBGaXJlRXJyb3JfAG1lc3NhZ2UATWljcm9z
b2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlw
ZWxpbmUuV3JhcHBlcgBJRFRTSW5wdXRDb2x1bW4xMDAAR2V0SW5wdXRDb2x1bW5fAGV4dGVybmFs
TmFtZQBHZXRDb2x1bW5JbmRleF8AR2V0QnVmZmVyVmFsdWVfAGJ1ZmZlcgBpbmRleABtX2NybUNv
bm5lY3Rpb24AQ296eVJvYy5EeW5hbWljcy5Dcm0ASUNvbm5lY3Rpb24AbV9jb25uZWN0aW9uAENv
enlSb2MuRHluYW1pY3MAQ296eVJvYy5EeW5hbWljcy5Dcm0yMDExLk9yZ2FuaXphdGlvblNlcnZp
Y2UAT3JnYW5pemF0aW9uU2VydmljZUNsaWVudABtX3NlcnZpY2UAbV9xaUluZGV4AG1fcWNkSW5k
ZXgAbV9xY2Rlc2NJbmRleABtX3Fjc0luZGV4AG1fcWNzdWJqSW5kZXgAQ3JtQ29ubmVjdGlvblR5
cGUAU3lzdGVtLlJlc291cmNlcwBSZXNvdXJjZU1hbmFnZXIAX3Jlc01ncgBTeXN0ZW0uR2xvYmFs
aXphdGlvbgBDdWx0dXJlSW5mbwBfcmVzQ3VsdHVyZQBnZXRfUmVzb3VyY2VNYW5hZ2VyAGdldF9D
dWx0dXJlAHNldF9DdWx0dXJlAEN1bHR1cmUAU3lzdGVtLkNvbmZpZ3VyYXRpb24AQXBwbGljYXRp
b25TZXR0aW5nc0Jhc2UAbV9WYWx1ZQBtX1N5bmNPYmplY3QAZ2V0X1ZhbHVlAFN5c3RlbS5Db21w
b25lbnRNb2RlbABFZGl0b3JCcm93c2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUA
U3lzdGVtLkNvZGVEb20uQ29tcGlsZXIAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlh
Z25vc3RpY3MARGVidWdnZXJIaWRkZW5BdHRyaWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNv
bXBpbGVyU2VydmljZXMAU3RhbmRhcmRNb2R1bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRy
aWJ1dGUAU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlc2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBT
eXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZh
bHVlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJ
bnN0YW5jZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJpYnV0ZQBzZXRfVmFsdWUAU3lzdGVtLlJ1bnRp
bWUuSW50ZXJvcFNlcnZpY2VzAENvbVZpc2libGVBdHRyaWJ1dGUAU3RyaW5nAHNldF9JdGVtAFNl
dE51bGwASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50
QXR0cmlidXRlAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEA
SURUU0lucHV0Q29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABn
ZXRfSXRlbQBnZXRfSUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVu
dGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfQ29u
bmVjdGlvbk1hbmFnZXIAT3JnYW5pemF0aW9uUmVxdWVzdABPcmdhbml6YXRpb25SZXNwb25zZQBF
bnRpdHkAT3B0aW9uU2V0VmFsdWUAU3lzdGVtLldlYi5TZXJ2aWNlcwBTeXN0ZW0uV2ViLlNlcnZp
Y2VzLlByb3RvY29scwBTb2FwRXhjZXB0aW9uAEV4Y2VwdGlvbgBzZXRfUmVxdWVzdE5hbWUAZ2V0
X0J1ZmZlcgBDb252ZXJ0AERhdGVUaW1lAFRvRGF0ZVRpbWUAVG9JbnQzMgBFeGVjdXRlAGdldF9J
ZABQcm9qZWN0RGF0YQBTZXRQcm9qZWN0RXJyb3IAU3lzdGVtLlhtbABYbWxOb2RlAGdldF9EZXRh
aWwAZ2V0X0lubmVyWG1sAENsZWFyUHJvamVjdEVycm9yAGdldF9NZXNzYWdlAEFjcXVpcmVDb25u
ZWN0aW9uAENvbm5lY3QAR2V0U2VydmljZQBDbG9zZQBJc051bGxPckVtcHR5AEludDMyAGdldF9J
c0F0dGFjaGVkAHNldF9Db25uZWN0aW9uTWFuYWdlcklEAElEVFNFeHRlcm5hbE1ldGFkYXRhQ29s
dW1uMTAwAGdldF9Db3VudABJRFRTRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24xMDAA
Z2V0X0V4dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uAHNldF9Jc1VzZWQASURUU0lucHV0
Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2x1bW5Db2xsZWN0aW9uAFJlbW92ZUFsbABO
ZXcAc2V0X05hbWUARGF0YVR5cGUAc2V0X0RhdGFUeXBlAHNldF9MZW5ndGgARW1wdHkARmlyZUVy
cm9yAFN5c3RlbS5Db2xsZWN0aW9ucwBJRW51bWVyYXRvcgBHZXRFbnVtZXJhdG9yAGdldF9DdXJy
ZW50AGdldF9FeHRlcm5hbE1ldGFkYXRhQ29sdW1uSUQATW92ZU5leHQASURpc3Bvc2FibGUARGlz
cG9zZQBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABJRFRTQnVmZmVyTWFuYWdl
cjEwMABnZXRfQnVmZmVyTWFuYWdlcgBnZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJ
RABJc051bGwAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5T
cWxTZXJ2ZXIuU1NJUy5BdHRyaWJ1dGVzAENvbHVtbk1hcHBpbmdzQXR0cmlidXRlAFZhbGlkYXRl
UHJvcGVydGllc0F0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAERlc2NyaXB0aW9uQXR0cmli
dXRlAFN5c3RlbS5SZWZsZWN0aW9uAEFzc2VtYmx5AGdldF9Bc3NlbWJseQBTeXN0ZW0uVGhyZWFk
aW5nAE1vbml0b3IARW50ZXIARXhpdABEZWJ1Z2dlck5vblVzZXJDb2RlQXR0cmlidXRlAFNjcmlw
dENvbXBvbmVudF8zZmU2NWExYTAyNmU0NGQwOTYwMmNkOTUyNDc3MjkzOC52YnByb2ouUmVzb3Vy
Y2VzLnJlc291cmNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21w
YXRpYmlsaXR5QXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAR3VpZEF0dHJp
YnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0
ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb21wYW55QXR0cmlidXRlAEFzc2Vt
Ymx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTY3JpcHRDb21w
b25lbnRfM2ZlNjVhMWEwMjZlNDRkMDk2MDJjZDk1MjQ3NzI5MzgudmJwcm9qLmRsbAAAAACAm0kA
cwBOAHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUAIABzAGUAdAAg
AHQAbwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBlACAAdABvACAA
dABoAGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAAGVMAYQBsAGUAcwBPAHIAZABl
AHIASQBkAAALSQBuAHAAdQB0AAAbQwByAG0AQwBvAG4AbgBlAGMAdABpAG8AbgAAMUMAbwBuAHYA
ZQByAHQAUQB1AG8AdABlAFQAbwBTAGEAbABlAHMATwByAGQAZQByAAAPUQB1AG8AdABlAEkAZAAA
HVEAdQBvAHQAZQBDAGwAbwBzAGUARABhAHQAZQAAK1EAdQBvAHQAZQBDAGwAbwBzAGUARABlAHMA
YwByAGkAcAB0AGkAbwBuAAAhUQB1AG8AdABlAEMAbABvAHMAZQBTAHQAYQB0AHUAcwAAI1EAdQBv
AHQAZQBDAGwAbwBzAGUAUwB1AGIAagBlAGMAdAAADUUAbgB0AGkAdAB5AAA/UwBlAGwAZQBjAHQA
IABEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAEMAbwBuAG4AZQBjAHQAaQBvAG4ALgAAO1EAdQBv
AHQAZQBJAGQAIABjAG8AbAB1AG0AbgAgAGkAcwAgAG4AbwB0ACAAbQBhAHAAcABlAGQALgAAFU4A
bwAgAGkAbgBwAHUAdABzAC4AABlEAFkATgBBAE0ASQBDAFMALQBDAFIATQABQ0QAeQBuAGEAbQBp
AGMAcwAgAEMAUgBNACAAUQB1AG8AdABlACAAVABvACAAUwBhAGwAZQBzACAATwByAGQAZQByAAAx
TQB5AC4AUgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAAAAHO85LN1t
+k+wToaWpdepLQAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcG
FRIYARIIBAAAEhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIc
AyAACAQgABIVAyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9J
C7gMNOoIiYRdzYCAzJEJIAQBEiEIAhIlBCAAHQ4FIAEBESkEIAEBAgMgAAIEKAAdDgQoABEpAygA
AgMGEiQDBhIoBiACAQgSJQUgAQESHAMGEiEFIAEBEiEEIAASMQQoABIxBSABAhAOBCABAQ4FIAES
NQ4EIAEIDgYgAhwSJQgCBg4DBhI5AwYSPQIGCAMoAA4DBhJBAwYSRQQAABJBBAAAEkUFAAEBEkUE
CAASQQQIABJFAwYSNAIGHAQAABI0BAgAEjQFIAEBEVEIAQABAAAAAAAFIAIBDg4XAQAKTXlUZW1w
bGF0ZQc4LjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwESDAQHARII
BAcBEhEEBwESFBMBAA5NeS5BcHBsaWNhdGlvbgAAEwEADk15LldlYlNlcnZpY2VzAAAQAQALTXku
Q29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAAEAAEcHAMHAQIDBwEIBgABEhURbQQHARIVAwcBDgUQAQAe
AAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2Fw
SHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9f
AAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAYHAhMAEwAFAQAAAAAEBwEdDgUgAgEIHAQgAQEI
BgcCHQ4dDgUgABKAjQUgABKAkQYgARKAlRwFIAASgJkGIAESgJ0cBAcBEjEEIAASJQQgARwIBAAB
DhwFIAIBDhwGAAERgL0cBAABCBwIIAESgKUSgKEEIAEcDgQgABEpBgABARKAtQUgABKAxRcHCBKA
oRKApRKAqRwSgK0SgLESgLURKQQgARwcBAABAg4MBwUCAhKAlRI1EoC1BSAAEoDRBSAAEoDVBSAA
EoDNBiABARGA2QgHAhKAzRKAlQogBgEIDg4OCBACBiABEoDNHAUgABKA3QMgABwRBwYSgM0SNRKA
lRI1EjUSgN0FIAASgOUFIAASgOkFIAIICAgJBwQIEoCVEjUIBCABAggEBwIcHA0BAAhWYWxpZGF0
ZQAAFgEAEUNybUNvbm5lY3Rpb25UeXBlAAAsAQAnU2VsZWN0IER5bmFtaWNzIENSTSBDb25uZWN0
aW9uIE1hbmFnZXIuAAAFIAASgQEHIAIBDhKBAQYHAhJBEkEEBwESRQgBAAIAAAAAAAQAAQEcBAcB
EjQIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNlcHRpb25UaHJvd3MBDAEABzEuMC4wLjAAACkB
ACRiMmVlNWRmYy1hYTU4LTRiZjUtYjc5NC1lMzU5ZDRjMGJmYmMAAAUBAAEAAB8BABpDb3B5cmln
aHQgQCBNaWNyb3NvZnQgMjAxNgAAPAEAN1NjcmlwdENvbXBvbmVudF8zZmU2NWExYTAyNmU0NGQw
OTYwMmNkOTUyNDc3MjkzOC52YnByb2oAAA4BAAlNaWNyb3NvZnQAAAAAABhTAAAAAAAAAAAAAC5T
AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgUwAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5k
bGwAAAAAAP8lACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAAoAACADgAA
AEgAAIAQAAAAYAAAgAAAAAAAAAAAAAAAAAAAAgACAAAAeAAAgAMAAACQAACAAAAAAAAAAAAAAAAA
AAABAAB/AACoAACAAAAAAAAAAAAAAAAAAAABAAEAAADAAACAAAAAAAAAAAAAAAAAAAABAAAAAADY
AAAAAAAAAAAAAAAAAAAAAAABAAAAAADoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAD4AAAAAAAAAAAA
AAAAAAAAAAABAAAAAAAIAQAAgGUAAOgCAAAAAAAAAAAAAGhoAAAoAQAAAAAAAAAAAACQaQAAIgAA
AAAAAAAAAAAAGGEAAGgEAAAAAAAAAAAAAGgENAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4A
RgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAABAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAA
AAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQA
aQBvAG4AAAAAAAAAsATIAwAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAACkAwAAAQAw
ADAAMAAwADAANABiADAAAAA0AAoAAQBDAG8AbQBwAGEAbgB5AE4AYQBtAGUAAAAAAE0AaQBjAHIA
bwBzAG8AZgB0AAAAmAA4AAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAYwBy
AGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMwBmAGUANgA1AGEAMQBhADAAMgA2AGUANAA0AGQA
MAA5ADYAMAAyAGMAZAA5ADUAMgA0ADcANwAyADkAMwA4AC4AdgBiAHAAcgBvAGoAAAAwAAgAAQBG
AGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAACYADwAAQBJAG4AdABlAHIA
bgBhAGwATgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMwBmAGUANgA1
AGEAMQBhADAAMgA2AGUANAA0AGQAMAA5ADYAMAAyAGMAZAA5ADUAMgA0ADcANwAyADkAMwA4AC4A
dgBiAHAAcgBvAGoALgBkAGwAbAAAAFwAGwABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAA
AEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgAE0AaQBjAHIAbwBzAG8AZgB0ACAAMgAwADEANgAAAAAA
oAA8AAEATwByAGkAZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBt
AHAAbwBuAGUAbgB0AF8AMwBmAGUANgA1AGEAMQBhADAAMgA2AGUANAA0AGQAMAA5ADYAMAAyAGMA
ZAA5ADUAMgA0ADcANwAyADkAMwA4AC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAJAAOAABAFAAcgBv
AGQAdQBjAHQATgBhAG0AZQAAAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAzAGYA
ZQA2ADUAYQAxAGEAMAAyADYAZQA0ADQAZAAwADkANgAwADIAYwBkADkANQAyADQANwA3ADIAOQAz
ADgALgB2AGIAcAByAG8AagAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAu
ADAALgAwAC4AMAAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD/
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB3d3d3d3d3d3d3d3d3d3AERERERERERERERERERERwBP/////////////////0
cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////////
////////9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE
//////////////////RwBP/////////////////0cAT/////////////////9HAE////////////
//////RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//
///////////////0cAT/////////////////9HAE//////////////////RwBIiIiIiIiIiIiIiI
iIiEcARERERERERERERERERERHAETExMTExMTExMTs7OSXRwBMzMzMzMzMzMzMzMzMzEAABERERE
REREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/////////////////////wAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAA
AYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAD
wAAAB////////////////ygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAHd3d3d3d3d0RERERERERHT///////+EdP///////4R0////////hHT///
////+EdP///////4R0////////hHT///////+EdP///////4R0iIiIiIiIhHTMzMzMzMzEfERERE
REREwAAAAAAAAAAAAAAAAAAAAAD//wAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAEAAP//AAD//wAAAAABAAIAICAQAAEABADoAgAAAgAQEBAAAQAEACgB
AAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAQDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property>
<property id="13" 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="49" 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_3fe65a1a026e44d09602cd9524772938</property>
<property id="50" 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="27" name="CrmConnection" description="" connectionManagerID="{0915ff2b-7c2a-4ade-90ec-d9c929d1c858}" /></connections>
<inputs>
<input id="3" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="True">
<externalMetadataColumn id="43" name="QuoteId" description="" precision="0" scale="0" length="0" dataType="guid" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="44" name="QuoteCloseDate" description="" precision="0" scale="0" length="0" dataType="dbTimeStamp" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="45" name="QuoteCloseDescription" description="" precision="0" scale="0" length="1000" dataType="wstr" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="46" name="QuoteCloseStatus" description="" precision="0" scale="0" length="0" dataType="i4" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="47" name="QuoteCloseSubject" description="" precision="0" scale="0" length="250" dataType="wstr" codePage="0" mappedColumnId="0" /></externalMetadataColumns></input>
</inputs>
<outputs>
<output id="4" name="Output" description="" exclusionGroup="0" synchronousInputId="3" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns>
<outputColumn id="26" name="SalesOrderId" description="" lineageId="26" precision="0" scale="0" length="0" dataType="guid" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" /></outputColumns><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>