<component id="157" name="Script Component" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script" localeId="1033" version="11" 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="161" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_459f0ddbcb9a42cb91399b1618ab93e0.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{5633EE3F-29E6-4B77-9A28-246A7A0A1652}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_61c8db385ab54f948a3511404dee3f8e</RootNamespace>
    <AssemblyName>ScriptComponent_61c8db385ab54f948a3511404dee3f8e</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile></TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2017, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\CozyRoc.SSISPlus.2017.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS" />
    <Reference Include="CozyRoc.Sforce" />
    <Reference Include="System.Web.Services" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC140</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
  <PropertyGroup>
    <OptionCompare>Binary</OptionCompare>
  </PropertyGroup>
  <PropertyGroup>
    <OptionExplicit>On</OptionExplicit>
  </PropertyGroup>
  <PropertyGroup>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [autoNumber]() As Boolean
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [autoNumber_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [byteLength]() As Int32
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [byteLength_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [calculated]() As Boolean
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [calculated_IsNull] As Boolean
        Set
            If (value)
                SetNull(2)
            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 ReadOnly Property [calculatedFormula]() As BlobColumn
        Get
            Return CType(Me(3), BlobColumn)
        End Get
    End Property
    Public ReadOnly Property [calculatedFormula_IsNull] As Boolean
        Get
            Return IsNull(3)
        End Get
    End Property

    Public WriteOnly Property [cascadeDelete]() As Boolean
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [cascadeDelete_IsNull] As Boolean
        Set
            If (value)
                SetNull(4)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [caseSensitive]() As Boolean
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [caseSensitive_IsNull] As Boolean
        Set
            If (value)
                SetNull(5)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [controllerName]() As String
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [controllerName_IsNull] As Boolean
        Set
            If (value)
                SetNull(6)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [createable]() As Boolean
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [createable_IsNull] As Boolean
        Set
            If (value)
                SetNull(7)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [custom]() As Boolean
        Set
            Me(8) = Value
        End Set
    End Property
    Public WriteOnly Property [custom_IsNull] As Boolean
        Set
            If (value)
                SetNull(8)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [defaultedOnCreate]() As Boolean
        Set
            Me(9) = Value
        End Set
    End Property
    Public WriteOnly Property [defaultedOnCreate_IsNull] As Boolean
        Set
            If (value)
                SetNull(9)
            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 ReadOnly Property [defaultValueFormula]() As BlobColumn
        Get
            Return CType(Me(10), BlobColumn)
        End Get
    End Property
    Public ReadOnly Property [defaultValueFormula_IsNull] As Boolean
        Get
            Return IsNull(10)
        End Get
    End Property

    Public WriteOnly Property [dependentPicklist]() As Boolean
        Set
            Me(11) = Value
        End Set
    End Property
    Public WriteOnly Property [dependentPicklist_IsNull] As Boolean
        Set
            If (value)
                SetNull(11)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [deprecatedAndHidden]() As Boolean
        Set
            Me(12) = Value
        End Set
    End Property
    Public WriteOnly Property [deprecatedAndHidden_IsNull] As Boolean
        Set
            If (value)
                SetNull(12)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [digits]() As Int32
        Set
            Me(13) = Value
        End Set
    End Property
    Public WriteOnly Property [digits_IsNull] As Boolean
        Set
            If (value)
                SetNull(13)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [displayLocationInDecimal]() As Boolean
        Set
            Me(14) = Value
        End Set
    End Property
    Public WriteOnly Property [displayLocationInDecimal_IsNull] As Boolean
        Set
            If (value)
                SetNull(14)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [externalId]() As Boolean
        Set
            Me(15) = Value
        End Set
    End Property
    Public WriteOnly Property [externalId_IsNull] As Boolean
        Set
            If (value)
                SetNull(15)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [filterable]() As Boolean
        Set
            Me(16) = Value
        End Set
    End Property
    Public WriteOnly Property [filterable_IsNull] As Boolean
        Set
            If (value)
                SetNull(16)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [groupable]() As Boolean
        Set
            Me(17) = Value
        End Set
    End Property
    Public WriteOnly Property [groupable_IsNull] As Boolean
        Set
            If (value)
                SetNull(17)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [htmlFormatted]() As Boolean
        Set
            Me(18) = Value
        End Set
    End Property
    Public WriteOnly Property [htmlFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(18)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [idLookup]() As Boolean
        Set
            Me(19) = Value
        End Set
    End Property
    Public WriteOnly Property [idLookup_IsNull] As Boolean
        Set
            If (value)
                SetNull(19)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [inlineHelpText]() As String
        Set
            Me(20) = Value
        End Set
    End Property
    Public WriteOnly Property [inlineHelpText_IsNull] As Boolean
        Set
            If (value)
                SetNull(20)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [label]() As String
        Set
            Me(21) = Value
        End Set
    End Property
    Public WriteOnly Property [label_IsNull] As Boolean
        Set
            If (value)
                SetNull(21)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [length]() As Int32
        Set
            Me(22) = Value
        End Set
    End Property
    Public WriteOnly Property [length_IsNull] As Boolean
        Set
            If (value)
                SetNull(22)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [name]() As String
        Set
            Me(23) = Value
        End Set
    End Property
    Public WriteOnly Property [name_IsNull] As Boolean
        Set
            If (value)
                SetNull(23)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [nameField]() As Boolean
        Set
            Me(24) = Value
        End Set
    End Property
    Public WriteOnly Property [nameField_IsNull] As Boolean
        Set
            If (value)
                SetNull(24)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [namePointing]() As Boolean
        Set
            Me(25) = Value
        End Set
    End Property
    Public WriteOnly Property [namePointing_IsNull] As Boolean
        Set
            If (value)
                SetNull(25)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [nillable]() As Boolean
        Set
            Me(26) = Value
        End Set
    End Property
    Public WriteOnly Property [nillable_IsNull] As Boolean
        Set
            If (value)
                SetNull(26)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [permissionable]() As Boolean
        Set
            Me(27) = Value
        End Set
    End Property
    Public WriteOnly Property [permissionable_IsNull] As Boolean
        Set
            If (value)
                SetNull(27)
            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 ReadOnly Property [picklistValues]() As BlobColumn
        Get
            Return CType(Me(28), BlobColumn)
        End Get
    End Property
    Public ReadOnly Property [picklistValues_IsNull] As Boolean
        Get
            Return IsNull(28)
        End Get
    End Property

    Public WriteOnly Property [precision]() As Int32
        Set
            Me(29) = Value
        End Set
    End Property
    Public WriteOnly Property [precision_IsNull] As Boolean
        Set
            If (value)
                SetNull(29)
            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 ReadOnly Property [referenceTo]() As BlobColumn
        Get
            Return CType(Me(30), BlobColumn)
        End Get
    End Property
    Public ReadOnly Property [referenceTo_IsNull] As Boolean
        Get
            Return IsNull(30)
        End Get
    End Property

    Public WriteOnly Property [relationshipName]() As String
        Set
            Me(31) = Value
        End Set
    End Property
    Public WriteOnly Property [relationshipName_IsNull] As Boolean
        Set
            If (value)
                SetNull(31)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [relationshipOrder]() As Int32
        Set
            Me(32) = Value
        End Set
    End Property
    Public WriteOnly Property [relationshipOrder_IsNull] As Boolean
        Set
            If (value)
                SetNull(32)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [restrictedDelete]() As Boolean
        Set
            Me(33) = Value
        End Set
    End Property
    Public WriteOnly Property [restrictedDelete_IsNull] As Boolean
        Set
            If (value)
                SetNull(33)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [restrictedPicklist]() As Boolean
        Set
            Me(34) = Value
        End Set
    End Property
    Public WriteOnly Property [restrictedPicklist_IsNull] As Boolean
        Set
            If (value)
                SetNull(34)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [scale]() As Int32
        Set
            Me(35) = Value
        End Set
    End Property
    Public WriteOnly Property [scale_IsNull] As Boolean
        Set
            If (value)
                SetNull(35)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [soapType]() As String
        Set
            Me(36) = Value
        End Set
    End Property
    Public WriteOnly Property [soapType_IsNull] As Boolean
        Set
            If (value)
                SetNull(36)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [sortable]() As Boolean
        Set
            Me(37) = Value
        End Set
    End Property
    Public WriteOnly Property [sortable_IsNull] As Boolean
        Set
            If (value)
                SetNull(37)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [type]() As String
        Set
            Me(38) = Value
        End Set
    End Property
    Public WriteOnly Property [type_IsNull] As Boolean
        Set
            If (value)
                SetNull(38)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [unique]() As Boolean
        Set
            Me(39) = Value
        End Set
    End Property
    Public WriteOnly Property [unique_IsNull] As Boolean
        Set
            If (value)
                SetNull(39)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [updateable]() As Boolean
        Set
            Me(40) = Value
        End Set
    End Property
    Public WriteOnly Property [updateable_IsNull] As Boolean
        Set
            If (value)
                SetNull(40)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [writeRequiresMasterRead]() As Boolean
        Set
            Me(41) = Value
        End Set
    End Property
    Public WriteOnly Property [writeRequiresMasterRead_IsNull] As Boolean
        Set
            If (value)
                SetNull(41)
            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() {"autoNumber", "byteLength", "calculated", "calculatedFormula", "cascadeDelete", "caseSensitive", "controllerName", "createable", "custom", "defaultedOnCreate", "defaultValueFormula", "dependentPicklist", "deprecatedAndHidden", "digits", "displayLocationInDecimal", "externalId", "filterable", "groupable", "htmlFormatted", "idLookup", "inlineHelpText", "label", "length", "name", "nameField", "namePointing", "nillable", "permissionable", "picklistValues", "precision", "referenceTo", "relationshipName", "relationshipOrder", "restrictedDelete", "restrictedPicklist", "scale", "soapType", "sortable", "type", "unique", "updateable", "writeRequiresMasterRead"}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ScriptMain.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' COZYROC SQL Server Integration Services user script component
'
' Copyright (c) 2006-2013 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.Collections
Imports System.Text

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() { _
    "Connection", _
    "IsSalesforceObjectVariable", "SalesforceObject", "SalesforceObjectVariable"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        ' Get Salesforce object.
        Dim sobject As String = Me.SalesforceObject
        If Me.IsSalesforceObjectVariable Then
            sobject = GetVariable_(Me.SalesforceObjectVariable).ToString()
        End If

        ' Retrieve Salesforce object fields metadata.
        Dim dso As DescribeSObjectResult = Nothing
        Dim connection As ISforceConnection = CType( _
            Me.Connections.Connection.AcquireConnection(Nothing), _
            ISforceConnection)
        Try
            Dim service As SforceService = CType(connection.Connect(), SforceService)
            dso = service.describeSObject(sobject)
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call connection.Close()
        End Try

        If dso Is Nothing Then
            Exit Sub
        End If

        For Each field As Field In dso.fields
            With MyBase.OutputBuffer
                Call .AddRow()

                .autoNumber = field.autoNumber
                .byteLength = field.byteLength
                .calculated = field.calculated

                If Not String.IsNullOrEmpty(field.calculatedFormula) Then
                    Call .calculatedFormula.AddBlobData(Encoding.Unicode.GetBytes(field.calculatedFormula))
                End If

                If field.cascadeDeleteSpecified Then
                    .cascadeDelete = field.cascadeDelete
                End If

                .caseSensitive = field.caseSensitive
                .controllerName = field.controllerName
                .createable = field.createable
                .custom = field.custom
                .defaultedOnCreate = field.defaultedOnCreate

                If Not String.IsNullOrEmpty(field.defaultValueFormula) Then
                    Call .defaultValueFormula.AddBlobData(Encoding.Unicode.GetBytes(field.defaultValueFormula))
                End If

                If field.dependentPicklistSpecified Then
                    .dependentPicklist = field.dependentPicklist
                End If

                .deprecatedAndHidden = field.deprecatedAndHidden
                .digits = field.digits

                If field.displayLocationInDecimalSpecified Then
                    .displayLocationInDecimal = field.displayLocationInDecimal
                End If

                If field.externalIdSpecified Then
                    .externalId = field.externalId
                End If

                .filterable = field.filterable
                .groupable = field.groupable

                If field.htmlFormattedSpecified Then
                    .htmlFormatted = field.htmlFormatted
                End If

                .idLookup = field.idLookup
                .inlineHelpText = field.inlineHelpText
                .label = field.label
                .length = field.length
                .name = field.name
                .nameField = field.nameField

                If field.namePointingSpecified Then
                    .namePointing = field.namePointing
                End If

                .nillable = field.nillable
                .permissionable = field.permissionable

                If Not field.picklistValues Is Nothing Then
                    Call .picklistValues.AddBlobData(Encoding.Unicode.GetBytes(GetPicklistValues_(field.picklistValues)))
                End If

                .precision = field.precision

                If Not field.referenceTo Is Nothing Then
                    Call .referenceTo.AddBlobData(Encoding.Unicode.GetBytes(String.Join(";", field.referenceTo)))
                End If

                .relationshipName = field.relationshipName

                If field.relationshipOrderSpecified Then
                    .relationshipOrder = field.relationshipOrder
                End If

                If field.restrictedDeleteSpecified Then
                    .restrictedDelete = field.restrictedDelete
                End If

                .restrictedPicklist = field.restrictedPicklist
                .scale = field.scale
                .soapType = field.soapType.ToString()

                If field.sortableSpecified Then
                    .sortable = field.sortable
                End If

                .type = field.type.ToString()
                .unique = field.unique
                .updateable = field.updateable

                If field.writeRequiresMasterReadSpecified Then
                    .writeRequiresMasterRead = field.writeRequiresMasterRead
                End If
            End With
        Next
    End Sub ' CreateNewOutputRows


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

        Try
            If String.IsNullOrEmpty(Me.Connection) Then
                Throw New Exception("Select Salesforce Connection.")
            End If

            If String.IsNullOrEmpty(Me.SalesforceObject) Then
                Throw New Exception("Select Salesforce object.")
            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("Connection").ConnectionManagerID = Me.Connection

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

        Validate = result
    End Function    'Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        ' Setup static.
        Call result.Add("Connection")

        ' Setup dynamic.
        Call result.Add("IsSalesforceObjectVariable")
        Call result.Add(IIf( _
            Me.IsSalesforceObjectVariable, _
            "SalesforceObjectVariable", _
            "SalesforceObject"))

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of objects in the currently selected Salesforce connection.
    Public Function GetObjectList() As String()
        Dim result As New ArrayList

        Dim connection As ISforceConnection = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            ISforceConnection)
        Dim service As SforceService = CType(connection.Connect(), SforceService)

        Try
            Dim dgr As DescribeGlobalResult = service.describeGlobal()
            For Each sobject As DescribeGlobalSObjectResult In dgr.sobjects
                Call result.Add(sobject.name)
            Next

            Call result.Sort()
        Finally
            Call connection.Close()
        End Try

        GetObjectList = CType(result.ToArray(GetType(String)), String())
    End Function    ' GetObjectList


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select Salesforce Connection Manager.")> _
    <Connection("SforceConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            m_connection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies if SalesforceObject property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    <NonEssential()> _
    Public Property IsSalesforceObjectVariable() As Boolean
        Get
            IsSalesforceObjectVariable = m_isObjectVar
        End Get
        Set(ByVal value As Boolean)
            If m_isObjectVar <> value Then
                m_isObjectVar = value
                m_object = String.Empty
            End If
        End Set
    End Property    ' IsSalesforceObjectVariable

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select Salesforce object.")> _
    <List("GetObjectList")> _
    Public Property SalesforceObject() As String
        Get
            SalesforceObject = m_object
        End Get
        Set(ByVal value As String)
            m_object = value
        End Set
    End Property    ' SalesforceObject


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies variable containing Salesforce object.")> _
    <Variable()> _
    Public Property SalesforceObjectVariable() As String
        Get
            SalesforceObjectVariable = m_object
        End Get
        Set(ByVal value As String)
            m_object = value
        End Set
    End Property    ' SalesforceObjectVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property SforceConnectionType() As String()
        Get
            SforceConnectionType = New String() {"SFORCE"}
        End Get
    End Property    ' SforceConnectionType


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetPicklistValues_(ByVal picklist() As PicklistEntry) As String
        Dim count As Integer = picklist.Length
        Dim result() As String = New String(count - 1) {}
        For index As Integer = 0 To count - 1
            result(index) = picklist(index).value
        Next

        GetPicklistValues_ = String.Join(";", result)
    End Function    ' GetPicklistValues_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_isObjectVar As Boolean
    Private m_object As String
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    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 Connection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Connection").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[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
  <msb:PropertyGroup>
    <msb:CodeName>ScriptComponent_459f0ddbcb9a42cb91399b1618ab93e0</msb:CodeName>
    <msb:Language>msBuild</msb:Language>
    <msb:DisplayName>ScriptComponent_459f0ddbcb9a42cb91399b1618ab93e0</msb:DisplayName>
    <msb:ProjectId>{FD89F7EA-0B42-4DB5-AFD1-9F7FF153CA39}</msb:ProjectId>
  </msb:PropertyGroup>
  <msb:ItemGroup>
    <msb:Project Include="ScriptComponent_459f0ddbcb9a42cb91399b1618ab93e0.vbproj" />
    <msb:File Include="ComponentWrapper.vb" />
    <msb:File Include="ScriptMain.vb" />
    <msb:File Include="BufferWrapper.vb" />
  </msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="162" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_61c8db385ab54f948a3511404dee3f8e.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAK3nbVsAAAAAAAAAAOAAIiALAVAAAE4AAAAGAAAAAAAAXm0A
AAAgAAAAgAAAAAAAEAAgAAAAAgAABAAAAAAAAAAGAAAAAAAAAADAAAAAAgAAAAAAAAMAYIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAAxtAABPAAAAAIAAAEgDAAAAAAAAAAAAAAAAAAAA
AAAAAKAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAZE0AAAAgAAAATgAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAEgDAAAAgAAAAAQAAABQAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAKAAAAACAAAAVAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAABA
bQAAAAAAAEgAAAACAAUAQDEAAMw7AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKBgAAAoqHgIoGQAACiqmcxoAAAqAAQAABHMbAAAKgAIA
AARzHAAACoADAAAEcx0AAAqABAAABCoufgEAAARvHgAACioufgIAAARvHwAACioufgMAAARvIAAA
CioufgQAAARvIQAACioeAihzAAAGKgAAGzAEAO4DAAABAAARAigRAAAGCgIoDwAABiwSAgIoEwAA
BigXAAAGbyIAAAoKFAsCewgAAARveQAABhRvIwAACnQbAAABDAhvJAAACnQhAAABBm8lAAAKC94h
JSgmAAAKDQIJbycAAAooFgAABigoAAAK3gcIbykAAArcBzl4AwAAB28qAAAKEwQWEwU4XQMAABEE
EQWaEwYCewoAAAQTBxEHb3AAAAYRBxEGbysAAApvGwAABhEHEQZvLAAACm8dAAAGEQcRBm8tAAAK
bx8AAAYRBm8uAAAKKC8AAAotHREHbyEAAAYoMAAAChEGby4AAApvMQAACm8yAAAKEQZvMwAACiwO
EQcRBm80AAAKbyMAAAYRBxEGbzUAAApvJQAABhEHEQZvNgAACm8nAAAGEQcRBm83AAAKbykAAAYR
BxEGbzgAAApvKwAABhEHEQZvOQAACm8tAAAGEQZvOgAACigvAAAKLR0RB28vAAAGKDAAAAoRBm86
AAAKbzEAAApvMgAAChEGbzsAAAosDhEHEQZvPAAACm8xAAAGEQcRBm89AAAKbzMAAAYRBxEGbz4A
AApvNQAABhEGbz8AAAosDhEHEQZvQAAACm83AAAGEQZvQQAACiwOEQcRBm9CAAAKbzkAAAYRBxEG
b0MAAApvOwAABhEHEQZvRAAACm89AAAGEQZvRQAACiwOEQcRBm9GAAAKbz8AAAYRBxEGb0cAAApv
QQAABhEHEQZvSAAACm9DAAAGEQcRBm9JAAAKb0UAAAYRBxEGb0oAAApvRwAABhEHEQZvSwAACm9J
AAAGEQcRBm9MAAAKb0sAAAYRBm9NAAAKLA4RBxEGb04AAApvTQAABhEHEQZvTwAACm9PAAAGEQcR
Bm9QAAAKb1EAAAYRBm9RAAAKLCMRB29TAAAGKDAAAAoCEQZvUQAACigYAAAGbzEAAApvMgAAChEH
EQZvUgAACm9VAAAGEQZvUwAACiwnEQdvVwAABigwAAAKcgEAAHARBm9TAAAKKFQAAApvMQAACm8y
AAAKEQcRBm9VAAAKb1kAAAYRBm9WAAAKLA4RBxEGb1cAAApvWwAABhEGb1gAAAosDhEHEQZvWQAA
Cm9dAAAGEQcRBm9aAAAKb18AAAYRBxEGb1sAAApvYQAABhEHEQZvXAAAChMIEgj+Fh4AAAFvXQAA
Cm9jAAAGEQZvXgAACiwOEQcRBm9fAAAKb2UAAAYRBxEGb2AAAAoTCRIJ/hYfAAABb10AAApvZwAA
BhEHEQZvYQAACm9pAAAGEQcRBm9iAAAKb2sAAAYRBm9jAAAKLA4RBxEGb2QAAApvbQAABhQTBxEF
F9YTBREFEQSOaT+Y/P//KgAAARwAAAAAOgAUTgAaHAAAAQIAOgAuaAAHAAAAABswAgBwAAAAAgAA
EQIoDQAABigvAAAKLAtyBQAAcHNlAAAKegIoEQAABigvAAAKLAtyQQAAcHNlAAAKegIoZgAACm9n
AAAKcnUAAHBvaAAACgIoDQAABm9pAAAKFwveGCUoJgAACgwWCwMIbycAAApRKCgAAAreAAcKBioB
EAAAAAAAAFRUABgcAAABEzAFAFMAAAAAAAAAc2oAAAolcnUAAHBvawAACiYlcosAAHBvawAACiYl
AigPAAAGcsEAAHBy8wAAcChsAAAKKG0AAApvawAACibQNQAAAShuAAAKb28AAAp0BQAAGyoAGzAC
AIsAAAADAAARc2oAAAoLAihwAAAKAigNAAAGb3EAAAoUb3IAAAp0GwAAAQwIbyQAAAp0IQAAAQ0J
b3MAAApvdAAAChMEFhMFKxsRBBEFmhMGBxEGb3UAAApvawAACiYRBRfWEwURBREEjmky3QdvdgAA
Ct4HCG8pAAAK3AfQNQAAAShuAAAKb28AAAp0BQAAGwoGKgABEAAAAgAvAD1sAAcAAAAAEzABAAkA
AAAEAAARAnsFAAAECgYqIgIDfQUAAAQqAAATMAEACQAAAAUAABECewYAAAQKBipyAnsGAAAEAy4S
AgN9BgAABAJ+dwAACn0HAAAEKgAAEzABAAkAAAAEAAARAnsHAAAECgYqIgIDfQcAAAQqAAATMAEA
CQAAAAQAABECewcAAAQKBioAAAATMAQAEQAAAAYAABEXjTUAAAElFnIVAQBwogoGKgAAABMwBwAd
AAAABQAAERYKAihmAAAKFnIjAQBwA353AAAKFhIAb3gAAAoqAAAAGzADADQAAAAHAAARFAwCKHkA
AAoDEgJvegAACggDb3sAAApvfAAACihtAAAKC94HCG99AAAK3AcobQAACgoGKgEQAAACABAAFCQA
BwAAAAATMAQAPgAAAAgAABEDjmkLBxfaF9aNNQAAAQwHF9oNFhMEKxMIEQQDEQSab34AAAqiEQQX
1hMEEQQJMehyAQAAcAgoVAAACgoGKjoCAwQFDgQOBSh/AAAKKh4WjTUAAAEqOgIWA4xEAAABKIAA
AAoqWgMsCAIWKIEAAAoqclUBAHBzggAACno6AhcDjEYAAAEogAAACipaAywIAhcogQAACipyVQEA
cHOCAAAKejoCGAOMRAAAASiAAAAKKloDLAgCGCiBAAAKKnJVAQBwc4IAAAp6NgIZKIMAAAp0MAAA
ASoiAhkohAAACio6AhoDjEQAAAEogAAACipaAywIAhoogQAACipyVQEAcHOCAAAKejoCGwOMRAAA
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
BggSBSkAVgDYLQAAAAAGCNsMKQBXAPAtAAAAAAYIZAIpAFgAAC4AAAAABghjDCkAWQAYLgAAAADG
ClwVuwBaAJ0vAAAAAIYABRgGAFoApS8AAAAAhgBzFgYAWgCwLwAAAACGAHYWlQBaAMUvAAAAAAYY
xhMGAFoA5S8AAAAARgPXFQYAWgDnLwAAAAABAJMCBgBaAAQwAAAAAMYCvRd4AloA5S8AAAAARgMK
FgYAXgBZMAAAAAAGGMYThgJeAGgwAAAAAAYIBxGsAV8AiTAAAAAABhjGE4YCXwCYMAAAAADGAj4V
sgFgAKYwAAAAAMYCuASZAGEArjAAAAAAgwBXB40CYQC6MAAAAADGAtkKcgBhAMQwAAAAABEAcQGS
AmEA5DAAAAAAAQBdAZoCYgDtMAAAAAAGGMYTBgBjAPgwAAAAAAMIkARXAGMALDEAAAAABhjGEwYA
YwAAAAEA3AQAAAEAcgoAAAEAcgoAAAEAcgoAAAEAcgoAAAEA5wQAAAEAmQYAAAEAixcAAAEA7RYA
AAIAEAEAAAMAtRcAAAQA0xIAAAUAjhEAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEA
aAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoA
AAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEA
aAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoA
AAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEA
aAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoA
AAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEA
aAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoA
AAEAaAoAAAEAaAoAAAEAaAoAAAEAaAoAAAEA3RUAAAIA0xMAAAMAnRUAAAQAjhEAAAEA7RYAAAEA
7RYAAAEAfhEAAAEAoAQAAAEAoAQJAMYTAQARAMYTBgAZAMYTCgApAMYTEAAxAMYTFQBBAMYTGwBZ
AMYTBgBhAMYTBgBpAMYTBgCBAMYTIQCRAMYTKQChAMYTEACpAMYTLgCxAMYTEAC5AMYTEADBAMYT
BgDJAMYTKQApAcYTEAAxAcYTEABBAcYTNABJAcYTBgBRAcYTEABZAcYTBgBJAMYTBgBRAMYTBgAM
AMYTBgAUAMYTBgAcAMYTBgAkAMYTBgAMAJAEVwAUAJAEVwAcAJAEVwAkAJAEVwBxANkKcgCRATcR
dgDZAGsWewCZAR4WfwChAawThQDhANAEcgChAZoTiwDZAIEHBgDRAPATjwDpAAcSlQDpAAQLmQDp
AMwDlQDpAK8BcgCpAVYYnQCxAcQEogCxASIVqACBAfMBrgDpADMDlQDpAPsHlQDpAI4KlQDpAKEG
cgDpACEFlQDpABYQlQDpAJAHlQDpAMUBcgDpAK0DlQDpAF8XlQDpADkQlQDpAMEVmQDpAGgDlQDp
AE4LlQDpAKcClQDpACoClQDpABMGlQDpAPcFlQDpAOQClQDpAOoDlQDpAN8RlQDpANUXcgDpALIL
cgDpACILmQDpAMcGcgDpAA4ElQDpAE4DlQDpAOIKlQDpALcFlQDpANEFlQDpACsVtADpAKEQmQDp
AHARuwCpAZEQwADpAG8GcgDpAI4DlQDpAIUSmQDpABUDlQDpANEHlQDpADEXlQDpAO8EmQDpAD0H
xwC5AdkKcgDpAP8ClQDpADEGlQDpAF8HzADpAHgKlQDpAAMFlQDpAL8ClQDpAEgClQDhAMYTEABp
Ad0B2ADBAecQ3gDJAf0P5ADRAfgAEAABAcYTBgABAY8C6wDZAbIK8ADhAV8K9wCJAF0G/AABAUAY
BAGJAYcVJAH5Af0PKgEBAjcRdgCZAT8LMQEJArQVNwERAccGcgABARQXBgCpAV4YRgHBAZATTgFp
AWITYQERAoACZwEZAf0PcAEZAksKewAZATgLBgAhAW4KcgBhAcYTgAFhAQYQjwFhAfUPAQApAsYT
EABhAf0PlQFhAe4PmgE5AgUYBgA5AnMWBgA5AnYWlQCJAcYTBgBpARkBpAFxAMYTBgDRAdoSrAFx
AD4VsgFxALgEmQBBAoEEvwE8APsX1gFEAEsKVwBEAFUK7QFEAMYTBgApAGMAXAQuAAsA2AIuABMA
4QIuABsAAAMuACMACQNAADsAUwNAADMAWANDACsAZwNDADMAWANJAGMAbQRjACsAZwNjADMAWANp
AGMAgQSAADsAUwODAEMAUwODAEsAUwODACsAZwOJAGMAjgSgADsAUwOjAGsAgAOjAHMA2QOjAHsA
5wOjAIMAUwOjAIsAYQOpAJMAogSpAJsAzQTAADsAUwPDAIsAYQPJAJMA5wTJAKMAWAPJAKsAUwPg
ADsAUwPjAIsAYQPpAJMAMAXpALMATwUJAZMAYgUJAbsAUwNDATMAWANDAVMA+gNjATMAWANjAVsA
YQMAD4sAYQNAD4sAYQNgDzMAWANgDzsAUwOADzMAWAOADzsAUwOgDzMAWAOgDzsAUwPADzMAWAPA
DzsAUwPgDzsAUwMAEDsAUwMgEDsAUwMgEDMAWANAEDsAUwNgEDsAUwNgEDMAWANcANEADwE+AUIB
SQFZAXcBnwG3AcoBBAABAAUABQAGAAoACABgAAsAYQAAAIcTogIAAM8QpwIAAF0TrAIAACsUsQIA
AD4RtgIAAJwFugIAAEcWtgIAAJ4FtgIAACgHvgIAAEkVvgIAABoSugIAAEUPugIAABcLwwIAAHcO
ugIAAN8DugIAAIoMugIAALMBxwIAABUMugIAABEIugIAABsOugIAAKQKugIAAEYOugIAALgGtgIA
AJQNugIAADQFugIAAPUMugIAACUQugIAANQOugIAAKoHugIAAOINugIAAMkBxwIAADIMugIAAHkX
ugIAAMIPugIAAFUQugIAAOYOugIAANAVwwIAAJIPugIAAG8LugIAAJ8OugIAAD0CugIAAFEMugIA
ACYGugIAAE4NugIAAAkGugIAADkNugIAAAAEugIAAKAMugIAAPARugIAADEPugIAAOwXtgIAAN8P
ugIAAMALtgIAAMMOugIAADELwwIAAI0OugIAANQGtgIAAK4NugIAACAEugIAALkMugIAAPcKugIA
AF8OugIAAMgFugIAAAsNugIAAOgFugIAAB8NugIAAC8VxwIAAHgPugIAALMQwwIAAAUPugIAAHQR
xwIAABoPugIAAIgGtgIAAHgNugIAAJ8SwwIAAFsPugIAAOoHugIAAP8NugIAAEwXugIAAKQPugIA
AP0EwwIAAM4MugIAAE4HtgIAAL4NugIAAEIGugIAAGQNugIAAGwHtgIAANINugIAAIcKugIAADQO
ugIAABYFugIAAN8MugIAAGgCugIAAGcMugIAAGAVvgIAAD4RzQIAAJQE0wICAAQAAwACAAUABQAC
AAYABwACAAcACQACAA0ACwABAA4ACwACAA8ADQABABAADQACABEADwABABIADwACABMAEQABABQA
EQACABUAEwACABoAFQABABsAFwABABwAGQABAB0AGwABAB4AHQABAB8AHwABACAAIQACACEAIwAC
ACIAJQABACMAJwABACQAKQABACUAKwABACYALQABACcALwABACgAMQABACkAMwABACoANQABACsA
NwABACwAOQABAC0AOwABAC4APQACAC8APwACADAAQQABADEAQwABADIARQABADMARwABADQASQAB
ADUASwABADYATQABADcATwABADgAUQABADkAUwABADoAVQABADsAVwABADwAWQABAD0AWwABAD4A
XQABAD8AXwABAEAAYQABAEEAYwABAEIAZQABAEMAZwABAEQAaQABAEUAawABAEYAbQABAEcAbwAB
AEgAcQABAEkAcwABAEoAdQABAEsAdwABAEwAeQABAE0AewABAE4AfQABAE8AfwABAFAAgQABAFEA
gwABAFIAhQACAFMAhwACAFQAiQABAFUAiwABAFYAjQACAFcAjwACAFgAkQABAFkAkwABAFoAlQAB
AFsAlwABAFwAmQABAF0AmwABAF4AnQABAF8AnwABAGAAoQABAGEAowABAGIApQABAGMApwABAGQA
qQABAGUAqwABAGYArQABAGcArwABAGgAsQABAGkAswABAGoAtQABAGsAtwABAGwAuQABAG0AuwAB
AG4AvQACAG8AvwACAHkAwQACAIIAwwA7AEIASQBQAAwBvAHPAd4B5QEEgAAAAAAAAAAAAAAAAAAA
AAAqBAAABAAAAAAAAAAAAAAA8wELAgAAAAAEAAAAAAAAAAAAAADzAQ8QAAAAAAoAAAAAAAAAAAAA
APwBFAIAAAAAAQAAAAAAAAAAAAAABQLZAAAAAAAOAAAAAAAAAAAAAAAOAvcWAAAAAAEAAAAAAAAA
AAAAAAUCqQQAAAAADgAAAAAAAAAAAAAADgKYEQAAAAAOAAAAAAAAAAAAAAAOApQXAAAAAA4AAAAA
AAAAAAAAAA4CuxEAAAAADgAAAAAAAAAAAAAADgI8AQAAAAAKAAQACwAEAAAAEAAWAFsBAAAQAP8A
WwEAAAAAAQFbAR0BxQEdAegBAAAASURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAElEVFNWYXJpYWJs
ZTEwMABJRFRTUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uMTAwAElEVFNSdW50aW1lQ29ubmVj
dGlvbjEwMABJRFRTQ29ubmVjdGlvbk1hbmFnZXIxMDAASURUU1ZhcmlhYmxlRGlzcGVuc2VyMTAw
AElEVFNWYXJpYWJsZXMxMDAAQ29udGV4dFZhbHVlYDEAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVy
YDEASW50MzIAQ296eVJvYy5TU0lTUGx1cy4yMDE3ADxNb2R1bGU+AHNldF9Db25uZWN0aW9uTWFu
YWdlcklEAE9iamVjdElEAEdldE91dHB1dElEAENvenlSb2MuU3FsU2VydmVyLlNTSVMATWljcm9z
b2Z0LlNxbFNlcnZlci5NYW5hZ2VkRFRTAFQARGlzcG9zZV9fSW5zdGFuY2VfXwBDcmVhdGVfX0lu
c3RhbmNlX18AR2V0VmFyaWFibGVfAEZpcmVFcnJvcl8AR2V0UGlja2xpc3RWYWx1ZXNfAGdldF9j
YWxjdWxhdGVkRm9ybXVsYQBnZXRfZGVmYXVsdFZhbHVlRm9ybXVsYQBnZXRfQ29tcG9uZW50TWV0
YURhdGEAQWRkQmxvYkRhdGEAUHJvamVjdERhdGEAbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJh
c2ljAGdldF9leHRlcm5hbElkAHNldF9leHRlcm5hbElkAGdldF93cml0ZVJlcXVpcmVzTWFzdGVy
UmVhZABzZXRfd3JpdGVSZXF1aXJlc01hc3RlclJlYWQATG9ja09uZUZvclJlYWQAQWRkAE1hcmtP
dXRwdXRzRmluaXNoZWQAZ2V0X2V4dGVybmFsSWRTcGVjaWZpZWQAZ2V0X3dyaXRlUmVxdWlyZXNN
YXN0ZXJSZWFkU3BlY2lmaWVkAGdldF9odG1sRm9ybWF0dGVkU3BlY2lmaWVkAGdldF9zb3J0YWJs
ZVNwZWNpZmllZABnZXRfcmVzdHJpY3RlZERlbGV0ZVNwZWNpZmllZABnZXRfY2FzY2FkZURlbGV0
ZVNwZWNpZmllZABnZXRfbmFtZVBvaW50aW5nU3BlY2lmaWVkAGdldF9kaXNwbGF5TG9jYXRpb25J
bkRlY2ltYWxTcGVjaWZpZWQAZ2V0X3JlbGF0aW9uc2hpcE9yZGVyU3BlY2lmaWVkAGdldF9kZXBl
bmRlbnRQaWNrbGlzdFNwZWNpZmllZABnZXRfY2FsY3VsYXRlZABzZXRfY2FsY3VsYXRlZABnZXRf
aHRtbEZvcm1hdHRlZABzZXRfaHRtbEZvcm1hdHRlZABnZXRfbmFtZUZpZWxkAHNldF9uYW1lRmll
bGQAU2NyaXB0Q29tcG9uZW50XzYxYzhkYjM4NWFiNTRmOTQ4YTM1MTE0MDRkZWUzZjhlAENvenlS
b2MuU2ZvcmNlLlNlcnZpY2UAX1Nmb3JjZVNlcnZpY2UAQ3JlYXRlSW5zdGFuY2UAZ2V0X0dldElu
c3RhbmNlAGluc3RhbmNlAENvenlSb2MuU2ZvcmNlAEdldEhhc2hDb2RlAGdldF9Vbmljb2RlAGdl
dF9NZXNzYWdlAGVyck1lc3NhZ2UAbWVzc2FnZQBnZXRfc2NhbGUAc2V0X3NjYWxlAGdldF91cGRh
dGVhYmxlAHNldF91cGRhdGVhYmxlAGdldF9jcmVhdGVhYmxlAHNldF9jcmVhdGVhYmxlAGdldF9T
YWxlc2ZvcmNlT2JqZWN0VmFyaWFibGUAc2V0X1NhbGVzZm9yY2VPYmplY3RWYXJpYWJsZQBnZXRf
SXNTYWxlc2ZvcmNlT2JqZWN0VmFyaWFibGUAc2V0X0lzU2FsZXNmb3JjZU9iamVjdFZhcmlhYmxl
AGdldF9uaWxsYWJsZQBzZXRfbmlsbGFibGUAZ2V0X3Blcm1pc3Npb25hYmxlAHNldF9wZXJtaXNz
aW9uYWJsZQBnZXRfZ3JvdXBhYmxlAHNldF9ncm91cGFibGUAZ2V0X2ZpbHRlcmFibGUAc2V0X2Zp
bHRlcmFibGUAZ2V0X3NvcnRhYmxlAHNldF9zb3J0YWJsZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRU
eXBlRnJvbUhhbmRsZQBnZXRfcmVsYXRpb25zaGlwTmFtZQBzZXRfcmVsYXRpb25zaGlwTmFtZQB2
YXJOYW1lAGdldF9jb250cm9sbGVyTmFtZQBzZXRfY29udHJvbGxlck5hbWUAZ2V0X25hbWUAc2V0
X25hbWUATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZQBNaWNyb3NvZnQuU3FsU2VydmVy
LkR0cy5QaXBlbGluZQBmaWVsZFR5cGUAZ2V0X1Nmb3JjZUNvbm5lY3Rpb25UeXBlAGdldF9zb2Fw
VHlwZQBzZXRfc29hcFR5cGUAR2V0VHlwZQBnZXRfdHlwZQBzZXRfdHlwZQBBcHBsaWNhdGlvbkJh
c2UAQ2xvc2UAVmFsaWRhdGUAZ2V0X2RlZmF1bHRlZE9uQ3JlYXRlAHNldF9kZWZhdWx0ZWRPbkNy
ZWF0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBnZXRfcmVzdHJpY3RlZERlbGV0ZQBzZXRfcmVzdHJp
Y3RlZERlbGV0ZQBnZXRfY2FzY2FkZURlbGV0ZQBzZXRfY2FzY2FkZURlbGV0ZQBIZWxwS2V5d29y
ZEF0dHJpYnV0ZQBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAERlYnVnZ2FibGVBdHRyaWJ1dGUAVmFy
aWFibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAENvbVZpc2libGVBdHRyaWJ1
dGUAU3RhbmRhcmRNb2R1bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAVGFyZ2V0
RnJhbWV3b3JrQXR0cmlidXRlAE5vbkVzc2VudGlhbEF0dHJpYnV0ZQBEZWJ1Z2dlckhpZGRlbkF0
dHJpYnV0ZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAERl
c2NyaXB0aW9uQXR0cmlidXRlAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBSZWZyZXNoUHJv
cGVydGllc0F0dHJpYnV0ZQBGaWx0ZXJQcm9wZXJ0aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0aWVz
QXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAQ0xTQ29tcGxpYW50QXR0
cmlidXRlAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAExpc3RBdHRyaWJ1
dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAZ2V0X1ZhbHVlAHNldF9WYWx1ZQBHZXRP
YmplY3RWYWx1ZQBnZXRfdmFsdWUAZ2V0X3VuaXF1ZQBzZXRfdW5pcXVlAGdldF9jYXNlU2Vuc2l0
aXZlAHNldF9jYXNlU2Vuc2l0aXZlAElJZgBFbmNvZGluZwBTeXN0ZW0uUnVudGltZS5WZXJzaW9u
aW5nAFRvU3RyaW5nAGdldF9uYW1lUG9pbnRpbmcAc2V0X25hbWVQb2ludGluZwBnZXRfYnl0ZUxl
bmd0aABzZXRfYnl0ZUxlbmd0aABnZXRfbGVuZ3RoAHNldF9sZW5ndGgAVW5sb2NrAGRlc2NyaWJl
R2xvYmFsAGdldF9kaXNwbGF5TG9jYXRpb25JbkRlY2ltYWwAc2V0X2Rpc3BsYXlMb2NhdGlvbklu
RGVjaW1hbABNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABnZXRfbGFi
ZWwAc2V0X2xhYmVsAFN5c3RlbS5Db21wb25lbnRNb2RlbABTY3JpcHRDb21wb25lbnRfNjFjOGRi
Mzg1YWI1NGY5NDhhMzUxMTQwNGRlZTNmOGUuZGxsAGdldF9jYWxjdWxhdGVkRm9ybXVsYV9Jc051
bGwAZ2V0X2RlZmF1bHRWYWx1ZUZvcm11bGFfSXNOdWxsAHNldF9leHRlcm5hbElkX0lzTnVsbABz
ZXRfd3JpdGVSZXF1aXJlc01hc3RlclJlYWRfSXNOdWxsAHNldF9jYWxjdWxhdGVkX0lzTnVsbABz
ZXRfaHRtbEZvcm1hdHRlZF9Jc051bGwAc2V0X25hbWVGaWVsZF9Jc051bGwAc2V0X3NjYWxlX0lz
TnVsbABzZXRfdXBkYXRlYWJsZV9Jc051bGwAc2V0X2NyZWF0ZWFibGVfSXNOdWxsAHNldF9uaWxs
YWJsZV9Jc051bGwAc2V0X3Blcm1pc3Npb25hYmxlX0lzTnVsbABzZXRfZ3JvdXBhYmxlX0lzTnVs
bABzZXRfZmlsdGVyYWJsZV9Jc051bGwAc2V0X3NvcnRhYmxlX0lzTnVsbABzZXRfcmVsYXRpb25z
aGlwTmFtZV9Jc051bGwAc2V0X2NvbnRyb2xsZXJOYW1lX0lzTnVsbABzZXRfbmFtZV9Jc051bGwA
c2V0X3NvYXBUeXBlX0lzTnVsbABzZXRfdHlwZV9Jc051bGwAc2V0X2RlZmF1bHRlZE9uQ3JlYXRl
X0lzTnVsbABzZXRfcmVzdHJpY3RlZERlbGV0ZV9Jc051bGwAc2V0X2Nhc2NhZGVEZWxldGVfSXNO
dWxsAHNldF91bmlxdWVfSXNOdWxsAHNldF9jYXNlU2Vuc2l0aXZlX0lzTnVsbABzZXRfbmFtZVBv
aW50aW5nX0lzTnVsbABzZXRfYnl0ZUxlbmd0aF9Jc051bGwAc2V0X2xlbmd0aF9Jc051bGwAc2V0
X2Rpc3BsYXlMb2NhdGlvbkluRGVjaW1hbF9Jc051bGwAc2V0X2xhYmVsX0lzTnVsbABzZXRfY3Vz
dG9tX0lzTnVsbABzZXRfZGVwcmVjYXRlZEFuZEhpZGRlbl9Jc051bGwAc2V0X3ByZWNpc2lvbl9J
c051bGwAZ2V0X3JlZmVyZW5jZVRvX0lzTnVsbABzZXRfaWRMb29rdXBfSXNOdWxsAHNldF9hdXRv
TnVtYmVyX0lzTnVsbABzZXRfcmVsYXRpb25zaGlwT3JkZXJfSXNOdWxsAGdldF9waWNrbGlzdFZh
bHVlc19Jc051bGwAc2V0X2RpZ2l0c19Jc051bGwAc2V0X3Jlc3RyaWN0ZWRQaWNrbGlzdF9Jc051
bGwAc2V0X2RlcGVuZGVudFBpY2tsaXN0X0lzTnVsbABzZXRfaW5saW5lSGVscFRleHRfSXNOdWxs
AFNldE51bGwAZ2V0X0l0ZW0Ac2V0X0l0ZW0AU3lzdGVtAGdldF9jdXN0b20Ac2V0X2N1c3RvbQBF
bnVtAEJvb2xlYW4AZ2V0X2RlcHJlY2F0ZWRBbmRIaWRkZW4Ac2V0X2RlcHJlY2F0ZWRBbmRIaWRk
ZW4AU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlc2lnbgBTY3JpcHRNYWluAEpvaW4AQmxvYkNvbHVt
bgBnZXRfcHJlY2lzaW9uAHNldF9wcmVjaXNpb24AZ2V0X0FwcGxpY2F0aW9uAE15QXBwbGljYXRp
b24ASW50ZXJhY3Rpb24AZ2V0X1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbgBnZXRfQ29ubmVj
dGlvbgBzZXRfQ29ubmVjdGlvbgBJU2ZvcmNlQ29ubmVjdGlvbgBBY3F1aXJlQ29ubmVjdGlvbgBt
X2Nvbm5lY3Rpb24ASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBnZXRfcmVmZXJlbmNlVG8AT3V0
cHV0TmFtZU1hcABPdXRwdXRNYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABN
aWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3JhcABnZXRfaWRMb29rdXAAc2V0X2lkTG9v
a3VwAG1faXNPYmplY3RWYXIAZ2V0X2F1dG9OdW1iZXIAc2V0X2F1dG9OdW1iZXIAbV9BcHBPYmpl
Y3RQcm92aWRlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIA
bV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAZ2V0X3JlbGF0aW9uc2hpcE9yZGVyAHNldF9y
ZWxhdGlvbnNoaXBPcmRlcgBQaXBlbGluZUJ1ZmZlcgBTY3JpcHRCdWZmZXIAT3V0cHV0QnVmZmVy
AGdldF9Db25uZWN0aW9uTWFuYWdlcgBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBNaWNyb3NvZnQu
U3FsU2VydmVyLkR0cy5SdW50aW1lLldyYXBwZXIATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlw
ZWxpbmUuV3JhcHBlcgBnZXRfVXNlcgBnZXRfVmFyaWFibGVEaXNwZW5zZXIAZ2V0X0NvbXB1dGVy
AE15Q29tcHV0ZXIARmlyZUVycm9yAENsZWFyUHJvamVjdEVycm9yAFNldFByb2plY3RFcnJvcgBB
Y3RpdmF0b3IALmN0b3IALmNjdG9yAE91dHB1dElEcwBTeXN0ZW0uRGlhZ25vc3RpY3MAZ2V0X2Zp
ZWxkcwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBnZXRfV2ViU2VydmljZXMATXlXZWJT
ZXJ2aWNlcwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBTeXN0ZW0u
UnVudGltZS5JbnRlcm9wU2VydmljZXMATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2Vy
dmljZXMAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBEZWJ1Z2dpbmdNb2RlcwBSZWZy
ZXNoUHJvcGVydGllcwBHZXRQcm9wZXJ0aWVzAFZhcmlhYmxlcwBDb3p5Um9jLlNxbFNlcnZlci5T
U0lTLkF0dHJpYnV0ZXMAR2V0Qnl0ZXMAZ2V0X3BpY2tsaXN0VmFsdWVzAEVxdWFscwBnZXRfU3Rh
dGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAFN5c3RlbS5Db2xsZWN0aW9u
cwBnZXRfRGVzaWduQ29ubmVjdGlvbnMAQnVmZmVycwBSdW50aW1lSGVscGVycwBnZXRfc29iamVj
dHMAZ2V0X2RpZ2l0cwBzZXRfZGlnaXRzAEZpbmlzaE91dHB1dHMAU2NyaXB0QnVmZmVyUGx1cwBT
Y3JpcHRDb21wb25lbnRQbHVzAENyZWF0ZU5ld091dHB1dFJvd3MAZGVzY3JpYmVTT2JqZWN0AGdl
dF9TYWxlc2ZvcmNlT2JqZWN0AHNldF9TYWxlc2ZvcmNlT2JqZWN0AG1fb2JqZWN0AE15UHJvamVj
dABDb25uZWN0AFNldEVuZE9mUm93c2V0AERlc2NyaWJlR2xvYmFsUmVzdWx0AERlc2NyaWJlU09i
amVjdFJlc3VsdABEZXNjcmliZUdsb2JhbFNPYmplY3RSZXN1bHQAVXNlckNvbXBvbmVudABQYXJl
bnRDb21wb25lbnQAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQA
U29ydABHZXRPYmplY3RMaXN0AEFycmF5TGlzdABnZXRfcmVzdHJpY3RlZFBpY2tsaXN0AHNldF9y
ZXN0cmljdGVkUGlja2xpc3QAZ2V0X2RlcGVuZGVudFBpY2tsaXN0AHNldF9kZXBlbmRlbnRQaWNr
bGlzdABwaWNrbGlzdABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABJc0lucHV0AFBy
aW1lT3V0cHV0AFN5c3RlbS5UZXh0AGdldF9pbmxpbmVIZWxwVGV4dABzZXRfaW5saW5lSGVscFRl
eHQAbV9Db250ZXh0AEFkZFJvdwBTY3JpcHRDb21wb25lbnRfNjFjOGRiMzg1YWI1NGY5NDhhMzUx
MTQwNGRlZTNmOGUuTXkAVG9BcnJheQBQaWNrbGlzdEVudHJ5AElzTnVsbE9yRW1wdHkAAAM7AAA7
UwBlAGwAZQBjAHQAIABTAGEAbABlAHMAZgBvAHIAYwBlACAAQwBvAG4AbgBlAGMAdABpAG8AbgAu
AAAzUwBlAGwAZQBjAHQAIABTAGEAbABlAHMAZgBvAHIAYwBlACAAbwBiAGoAZQBjAHQALgAAFUMA
bwBuAG4AZQBjAHQAaQBvAG4AADVJAHMAUwBhAGwAZQBzAGYAbwByAGMAZQBPAGIAagBlAGMAdABW
AGEAcgBpAGEAYgBsAGUAADFTAGEAbABlAHMAZgBvAHIAYwBlAE8AYgBqAGUAYwB0AFYAYQByAGkA
YQBiAGwAZQAAIVMAYQBsAGUAcwBmAG8AcgBjAGUATwBiAGoAZQBjAHQAAA1TAEYATwBSAEMARQAA
MVMAYQBsAGUAcwBmAG8AcgBjAGUAIABGAGkAZQBsAGQAcwAgAFMAbwB1AHIAYwBlAACAm0kAcwBO
AHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUAIABzAGUAdAAgAHQA
bwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBlACAAdABvACAAdABo
AGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAAFWEAdQB0AG8ATgB1AG0AYgBlAHIA
ABViAHkAdABlAEwAZQBuAGcAdABoAAAVYwBhAGwAYwB1AGwAYQB0AGUAZAAAI2MAYQBsAGMAdQBs
AGEAdABlAGQARgBvAHIAbQB1AGwAYQAAG2MAYQBzAGMAYQBkAGUARABlAGwAZQB0AGUAABtjAGEA
cwBlAFMAZQBuAHMAaQB0AGkAdgBlAAAdYwBvAG4AdAByAG8AbABsAGUAcgBOAGEAbQBlAAAVYwBy
AGUAYQB0AGUAYQBiAGwAZQAADWMAdQBzAHQAbwBtAAAjZABlAGYAYQB1AGwAdABlAGQATwBuAEMA
cgBlAGEAdABlAAAnZABlAGYAYQB1AGwAdABWAGEAbAB1AGUARgBvAHIAbQB1AGwAYQAAI2QAZQBw
AGUAbgBkAGUAbgB0AFAAaQBjAGsAbABpAHMAdAAAJ2QAZQBwAHIAZQBjAGEAdABlAGQAQQBuAGQA
SABpAGQAZABlAG4AAA1kAGkAZwBpAHQAcwAAMWQAaQBzAHAAbABhAHkATABvAGMAYQB0AGkAbwBu
AEkAbgBEAGUAYwBpAG0AYQBsAAAVZQB4AHQAZQByAG4AYQBsAEkAZAAAFWYAaQBsAHQAZQByAGEA
YgBsAGUAABNnAHIAbwB1AHAAYQBiAGwAZQAAG2gAdABtAGwARgBvAHIAbQBhAHQAdABlAGQAABFp
AGQATABvAG8AawB1AHAAAB1pAG4AbABpAG4AZQBIAGUAbABwAFQAZQB4AHQAAAtsAGEAYgBlAGwA
AA1sAGUAbgBnAHQAaAAACW4AYQBtAGUAABNuAGEAbQBlAEYAaQBlAGwAZAAAGW4AYQBtAGUAUABv
AGkAbgB0AGkAbgBnAAARbgBpAGwAbABhAGIAbABlAAAdcABlAHIAbQBpAHMAcwBpAG8AbgBhAGIA
bABlAAAdcABpAGMAawBsAGkAcwB0AFYAYQBsAHUAZQBzAAATcAByAGUAYwBpAHMAaQBvAG4AABdy
AGUAZgBlAHIAZQBuAGMAZQBUAG8AACFyAGUAbABhAHQAaQBvAG4AcwBoAGkAcABOAGEAbQBlAAAj
cgBlAGwAYQB0AGkAbwBuAHMAaABpAHAATwByAGQAZQByAAAhcgBlAHMAdAByAGkAYwB0AGUAZABE
AGUAbABlAHQAZQAAJXIAZQBzAHQAcgBpAGMAdABlAGQAUABpAGMAawBsAGkAcwB0AAALcwBjAGEA
bABlAAARcwBvAGEAcABUAHkAcABlAAARcwBvAHIAdABhAGIAbABlAAAJdAB5AHAAZQAADXUAbgBp
AHEAdQBlAAAVdQBwAGQAYQB0AGUAYQBiAGwAZQAAL3cAcgBpAHQAZQBSAGUAcQB1AGkAcgBlAHMA
TQBhAHMAdABlAHIAUgBlAGEAZAAADU8AdQB0AHAAdQB0AACI4+4ZxDVcRLwmS5GaXPtdAAQgAQEI
AyAAAQUgAQEREQQgAQEOBSACAQ4OBSABAREdByAEAQ4ODg4EIAEBAgUgAQEdDgYgAQERgJ0GFRIs
ARIMBhUSLAESCAYVEiwBEj0GFRIsARIoBCAAEwAVBwoOEmkSbRJxHRJ1CBJ1EhgReRF9AyAADgQg
ARwcAyAAHAUgARJpDgUAAQEScQMAAAEFIAAdEnUDIAACAyAACAQAAQIOBQAAEoDZBSABHQUOBSAB
AR0FBiAAHRKAkQQgAB0OBgACDg4dDgQgABF5BCAAEX0GBwMCAhJxBSAAEoDhBSAAEoDlBiABEoDp
HAQgAQgcBgADHAIcHAQAARwcBwABEkURgPUHIAESgPkSRQIdDhQHBx0OEoCBEm0SgIUdEoCJCBKA
iQUgABKA/QYgARKBARwFIAASgQUGIAAdEoCJAwcBDgMHAQICBg4EBwEdDgogBgEIDg4OCBACBwcD
HBwSgI0FIAASgQkIIAIBDhASgI0GIAESgQ0cCAcFDggdDggIDiAFARKAtQgCEoC5EoC9BSACAQgc
BCABHAgEIAECCAQHAggIBwACCBKAvQ4FIAASgMkEIAECHAQHAR4AAh4ABRABAB4ABAoBHgAEBwET
AAYVEiwBEwAHBhUSTQETAAYVEk0BEwACEwAECgETAAUgAQETAAi3elxWGTTgiQiwP19/EdUKOggW
z0kLuAw06giJhF3NgIDMkQcGFRIsARIMBwYVEiwBEggHBhUSLAESPQcGFRIsARIoAgYCAwYSIAMG
EiQDBhIYBAYSgLUEAAASDAQAABIIBAAAEj0EAAASKAUgAQIQDgQgARwOByABDh0SgJEFIAASgMEN
IAQBCB0IHRKAuRKAvQYgAQESgLUEIAASRQcQAQEeAB4ABzABAQEQHgAECAASDAQIABIIBAgAEj0E
CAASKAMoAA4DKAACBCgAHQ4DKAAIBSgAEoDBBSgAEoDJBCgAEwAIAQAIAAAAAAAeAQABAFQCFldy
YXBOb25FeGNlcHRpb25UaHJvd3MBCAEAAgAAAAAASQEAGi5ORVRGcmFtZXdvcmssVmVyc2lvbj12
NC41AQBUDhRGcmFtZXdvcmtEaXNwbGF5TmFtZRIuTkVUIEZyYW1ld29yayA0LjUEAQAAAAgBAAEA
AAAAAAUBAAAAABgBAApNeVRlbXBsYXRlCDExLjAuMC4wAABYAQAEAAAACkNvbm5lY3Rpb24aSXNT
YWxlc2ZvcmNlT2JqZWN0VmFyaWFibGUQU2FsZXNmb3JjZU9iamVjdBhTYWxlc2ZvcmNlT2JqZWN0
VmFyaWFibGUAAA0BAAhWYWxpZGF0ZQAAEgEADUdldFByb3BlcnRpZXMAAGEBADRTeXN0ZW0uV2Vi
LlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFu
Y2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAAEAEAC015LkNvbXB1dGVyAAATAQAOTXkuQXBwbGlj
YXRpb24AAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2VydmljZXMAACoBACVTZWxlY3QgU2FsZXNm
b3JjZSBDb25uZWN0aW9uIE1hbmFnZXIuAAAZAQAUU2ZvcmNlQ29ubmVjdGlvblR5cGUAAEgBAENT
cGVjaWZpZXMgaWYgU2FsZXNmb3JjZU9iamVjdCBwcm9wZXJ0eSByZWZlcmVuY2VzIHBhY2thZ2Ug
dmFyaWFibGUuAAAeAQAZU2VsZWN0IFNhbGVzZm9yY2Ugb2JqZWN0LgAAEgEADUdldE9iamVjdExp
c3QAADUBADBTcGVjaWZpZXMgdmFyaWFibGUgY29udGFpbmluZyBTYWxlc2ZvcmNlIG9iamVjdC4A
ADRtAAAAAAAAAAAAAE5tAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAbQAAAAAAAAAAAAAAAF9D
b3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAAAAAAAAAAAAAAAAAAAAEA
AQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYgAAA7AIAAAAAAAAAAAAA7AI0AAAAVgBT
AF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAAAAAAAAAAAAAAAAAAAD8A
AAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkAbABlAEkAbgBmAG8AAAAA
ACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAABAFMAdAByAGkAbgBnAEYA
aQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwAAgABAEYAaQBsAGUARABl
AHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBWAGUAcgBzAGkAbwBuAAAA
AAAwAC4AMAAuADAALgAwAAAAigA1AAEASQBuAHQAZQByAG4AYQBsAE4AYQBtAGUAAABTAGMAcgBp
AHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADYAMQBjADgAZABiADMAOAA1AGEAYgA1ADQAZgA5ADQA
OABhADMANQAxADEANAAwADQAZABlAGUAMwBmADgAZQAuAGQAbABsAAAAAAAoAAIAAQBMAGUAZwBh
AGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAkgA1AAEATwByAGkAZwBpAG4AYQBsAEYAaQBsAGUA
bgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8ANgAxAGMAOABkAGIAMwA4
ADUAYQBiADUANABmADkANAA4AGEAMwA1ADEAMQA0ADAANABkAGUAZQAzAGYAOABlAC4AZABsAGwA
AAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAAAAA4
AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAGAAAAwAAABgPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="163" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">ScriptComponent_459f0ddbcb9a42cb91399b1618ab93e0</property><property id="164" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property><property id="171" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><connections><connection id="172" name="Connection" connectionManagerID="{FAC87090-6604-4D64-B141-8580CADB1F8E}" /></connections><outputs><output id="173" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="174" name="autoNumber" lineageId="174" dataType="bool" /><outputColumn id="175" name="byteLength" lineageId="175" dataType="i4" /><outputColumn id="176" name="calculated" lineageId="176" dataType="bool" /><outputColumn id="177" name="calculatedFormula" lineageId="177" dataType="nText" /><outputColumn id="178" name="cascadeDelete" lineageId="178" dataType="bool" /><outputColumn id="179" name="caseSensitive" lineageId="179" dataType="bool" /><outputColumn id="180" name="controllerName" lineageId="180" length="250" dataType="wstr" /><outputColumn id="181" name="createable" lineageId="181" dataType="bool" /><outputColumn id="182" name="custom" lineageId="182" dataType="bool" /><outputColumn id="183" name="defaultedOnCreate" lineageId="183" dataType="bool" /><outputColumn id="184" name="defaultValueFormula" lineageId="184" dataType="nText" /><outputColumn id="185" name="dependentPicklist" lineageId="185" dataType="bool" /><outputColumn id="186" name="deprecatedAndHidden" lineageId="186" dataType="bool" /><outputColumn id="187" name="digits" lineageId="187" dataType="i4" /><outputColumn id="188" name="displayLocationInDecimal" lineageId="188" dataType="bool" /><outputColumn id="189" name="externalId" lineageId="189" dataType="bool" /><outputColumn id="190" name="filterable" lineageId="190" dataType="bool" /><outputColumn id="191" name="groupable" lineageId="191" dataType="bool" /><outputColumn id="192" name="htmlFormatted" lineageId="192" dataType="bool" /><outputColumn id="193" name="idLookup" lineageId="193" dataType="bool" /><outputColumn id="194" name="inlineHelpText" lineageId="194" length="1000" dataType="wstr" /><outputColumn id="195" name="label" lineageId="195" length="250" dataType="wstr" /><outputColumn id="196" name="length" lineageId="196" dataType="i4" /><outputColumn id="197" name="name" lineageId="197" length="250" dataType="wstr" /><outputColumn id="198" name="nameField" lineageId="198" dataType="bool" /><outputColumn id="199" name="namePointing" lineageId="199" dataType="bool" /><outputColumn id="200" name="nillable" lineageId="200" dataType="bool" /><outputColumn id="201" name="permissionable" lineageId="201" dataType="bool" /><outputColumn id="202" name="picklistValues" lineageId="202" dataType="nText" /><outputColumn id="203" name="precision" lineageId="203" dataType="i4" /><outputColumn id="204" name="referenceTo" lineageId="204" dataType="nText" /><outputColumn id="205" name="relationshipName" lineageId="205" length="250" dataType="wstr" /><outputColumn id="206" name="relationshipOrder" lineageId="206" dataType="i4" /><outputColumn id="207" name="restrictedDelete" lineageId="207" dataType="bool" /><outputColumn id="208" name="restrictedPicklist" lineageId="208" dataType="bool" /><outputColumn id="209" name="scale" lineageId="209" dataType="i4" /><outputColumn id="210" name="soapType" lineageId="210" length="50" dataType="wstr" /><outputColumn id="211" name="sortable" lineageId="211" dataType="bool" /><outputColumn id="212" name="type" lineageId="212" length="50" dataType="wstr" /><outputColumn id="213" name="unique" lineageId="213" dataType="bool" /><outputColumn id="214" name="updateable" lineageId="214" dataType="bool" /><outputColumn id="215" name="writeRequiresMasterRead" lineageId="215" dataType="bool" /></outputColumns><externalMetadataColumns /></output></outputs></component>