<?xml version="1.0"?>
<ScriptProject Name="ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1" VSTAMajorVersion="3" VSTAMinorVersion="0" Language="VisualBasic">
  <ProjectItem Name="ScriptMain.vb" Encoding="UTF8">
<![CDATA[' Microsoft SQL Server Integration Services Script Task
'
' Copyright (c) 2008 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.Windows.Forms
Imports System.Reflection

Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.AnalysisServices
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"Type", "Connection", "Database", "Cube", "Dimension", "Name", "ResultVariable"})> _
<FilterProperties("GetProperties")> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
	Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

	Enum ScriptResults
		Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
		Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
	End Enum
    ' Types of object supported.
    Enum ObjectType
        Server = 1
        Database = 2
        Cube = 3
        Dimension = 4
    End Enum    ' ObjectType


    ' The execution engine calls this method when the task executes.
    ' To access the object model, use the Dts object. Connections, variables, events,
    ' and logging features are available as static members of the Dts class.
    ' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
    ' 
    ' To open Code and Text Editor Help, press F1.
    ' To open Object Browser, press Ctrl+Alt+J.


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub Main()
        Dim result As Integer
        Dim propValue As Object
        Dim vars As Variables

        Try
            Select Case Me.Type
                Case ObjectType.Server
                    ' Get server.
                    Using server As Server = GetServer_()
                        propValue = GetPropertyValue_(server)
                    End Using

                Case ObjectType.Database
                    ' Get database.
                    Using server As Server = GetServer_()
                        Using database As Database = server.Databases(Me.Database)
                            propValue = GetPropertyValue_(database)
                        End Using
                    End Using

                Case ObjectType.Cube
                    ' Get cube.
                    Using server As Server = GetServer_()
                        Using database As Database = server.Databases(Me.Database)
                            Using cube As Cube = database.Cubes(Me.Cube)
                                propValue = GetPropertyValue_(cube)
                            End Using
                        End Using
                    End Using

                Case ObjectType.Dimension
                    ' Get dimension.
                    Using server As Server = GetServer_()
                        Using database As Database = server.Databases(Me.Database)
                            Using cube As Cube = database.Cubes(Me.Cube)
                                Using dimension As CubeDimension = cube.Dimensions(Me.Dimension)
                                    propValue = GetPropertyValue_(dimension)
                                End Using
                            End Using
                        End Using
                    End Using
            End Select

            ' Store property value in package variable.
            Call Dts.VariableDispenser.LockOneForWrite(Me.ResultVariable, vars)
            Try
                vars(Me.ResultVariable).Value = propValue
            Finally
                Call vars.Unlock()
            End Try

            result = ScriptResults.Success
        Catch ex As Exception
            result = ScriptResults.Failure
            Call Dts.Events.FireError( _
                0, _
                String.Empty, _
                ex.Message, _
                String.Empty, _
                0)
        End Try

        Dts.TaskResult = result
    End Sub ' Main


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        ' Base properties.
        Call result.Add("Type")
        Call result.Add("Connection")
        Call result.Add("Name")
        Call result.Add("ResultVariable")

        Select Case Me.Type
            Case ObjectType.Server
                ' Nothing to do here.

            Case ObjectType.Database
                Call result.Add("Database")

            Case ObjectType.Cube
                Call result.Add("Database")
                Call result.Add("Cube")

            Case ObjectType.Dimension
                Call result.Add("Database")
                Call result.Add("Cube")
                Call result.Add("Dimension")
        End Select

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Validate(ByRef errMessage As String) As Boolean
        Dim result As Boolean
        Dim props As Object()

        Try
            props = GetProps_()

            If String.IsNullOrEmpty(Me.Name) Then
                Throw New ApplicationException("Please specify property.")
            End If

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("	Object")> _
    <Description("Specifies analysis services object.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Type() As ObjectType
        Get
            Type = m_object
        End Get
        Set(ByVal value As ObjectType)
            If m_object <> value Then
                m_object = value

                Me.Name = String.Empty
                m_cachedProps = Nothing
            End If
        End Set
    End Property    ' Type


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Connection("AsConnectionType")> _
    <Category("Analysis Services")> _
    <Description("Specifies connection to Analysis Services server.")> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            If m_connection <> value Then
                m_connection = value

                Me.Database = String.Empty
                m_cachedDatabases = Nothing
                Me.Name = String.Empty
                m_cachedProps = Nothing
            End If
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <List("GetDatabases")> _
    <Category("Analysis Services")> _
    <Description("Specifies Analysis Services database.")> _
    Public Property Database() As String
        Get
            Database = m_database
        End Get
        Set(ByVal value As String)
            If m_database <> value Then
                m_database = value

                Me.Cube = String.Empty
                m_cachedCubes = Nothing
                Me.Name = String.Empty
                m_cachedProps = Nothing
            End If
        End Set
    End Property    ' Database


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <List("GetCubes")> _
    <Category("Analysis Services")> _
    <Description("Specifies Analysis Services cube.")> _
    Public Property Cube() As String
        Get
            Cube = m_cube
        End Get
        Set(ByVal value As String)
            If m_cube <> value Then
                m_cube = value

                Me.Dimension = String.Empty
                m_cachedDims = Nothing
                Me.Name = String.Empty
                m_cachedProps = Nothing
            End If
        End Set
    End Property    ' Cube


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <List("GetDimensions")> _
    <Category("Analysis Services")> _
    <Description("Specifies Analysis Services dimension.")> _
    Public Property Dimension() As String
        Get
            Dimension = m_dimension
        End Get
        Set(ByVal value As String)
            If m_cube <> value Then
                m_dimension = value

                Me.Name = String.Empty
                m_cachedProps = Nothing
            End If
        End Set
    End Property    ' Dimension


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <List("GetObjectProperties")> _
    <Category("Property")> _
    <Description("Specifies object property.")> _
    Public Property Name() As String
        Get
            Name = m_propName
        End Get
        Set(ByVal value As String)
            m_propName = value
        End Set
    End Property    ' Name


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Variable()> _
    <Category("Property")> _
    <Description("Specifies package variable where you would like to store the property value.")> _
    Public Property ResultVariable() As String
        Get
            ResultVariable = m_resultVariable
        End Get
        Set(ByVal value As String)
            m_resultVariable = value
        End Set
    End Property    ' ResultVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property AsConnectionType() As String()
        Get
            AsConnectionType = New String() {"MSOLAP90"}
        End Get
    End Property    ' FtpConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get connected AS Server object.
    Private Function GetServer_() As Server
        Dim result As Server

        ' Get connection string.
        Dim manager As ConnectionManager = Dts.Connections(Me.Connection)
        Dim connString As String = manager.ConnectionString

        result = New Server()
        result.Connect(connString)

        GetServer_ = result
    End Function    ' GetServer_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get list of selected connection databases.
    Public Function GetDatabases() As Object()
        Dim arrDatabases As ArrayList = New ArrayList()
        Dim dbCount As Integer

        Cursor.Current = Cursors.WaitCursor

        Try
            If String.IsNullOrEmpty(Me.Connection) Then
                ' User has to specify connection.
                Throw New ApplicationException("Please specify connection.")
            End If

            If m_cachedDatabases Is Nothing Then
                ' Cache databases.
                Using server As Server = GetServer_()
                    dbCount = server.Databases.Count
                    For dbIndex As Integer = 0 To dbCount - 1
                        Using db As Database = server.Databases(dbIndex)
                            Call arrDatabases.Add(db.Name)
                        End Using
                    Next
                End Using

                m_cachedDatabases = arrDatabases.ToArray()
            End If
        Catch ex As Exception
            Call MessageBox.Show(ex.Message)
        Finally
            Cursor.Current = m_currentCursor
        End Try

        GetDatabases = m_cachedDatabases
    End Function    ' GetDatabases


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get list of selected database cubes.
    Public Function GetCubes() As Object()
        Dim arrCubes As ArrayList = New ArrayList()
        Dim cubesCount As Integer

        Cursor.Current = Cursors.WaitCursor

        Try
            If String.IsNullOrEmpty(Me.Database) Then
                ' User has to specify database.
                Throw New ApplicationException("Please specify database.")
            End If

            If m_cachedCubes Is Nothing Then
                ' Cache cubes.
                Using server As Server = GetServer_()
                    Using database As Database = server.Databases(Me.Database)
                        cubesCount = database.Cubes.Count
                        For cubeIndex As Integer = 0 To cubesCount - 1
                            Using cube As Cube = database.Cubes(cubeIndex)
                                Call arrCubes.Add(cube.Name)
                            End Using
                        Next
                    End Using
                End Using

                m_cachedCubes = arrCubes.ToArray()
            End If
        Catch ex As Exception
            Call MessageBox.Show(ex.Message)
        Finally
            Cursor.Current = m_currentCursor
        End Try

        GetCubes = m_cachedCubes
    End Function    ' GetCubes


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get list of selected cube dimensions.
    Public Function GetDimensions() As Object()
        Dim arrDims As ArrayList = New ArrayList()
        Dim dimsCount As Integer

        Cursor.Current = Cursors.WaitCursor

        Try
            If String.IsNullOrEmpty(Me.Cube) Then
                ' User has to specify cube.
                Throw New ApplicationException("Please specify cube.")
            End If

            If m_cachedDims Is Nothing Then
                ' Cache dimensions.
                Using server As Server = GetServer_()
                    Using database As Database = server.Databases(Me.Database)
                        Using cube As Cube = database.Cubes(Me.Cube)
                            dimsCount = cube.Dimensions.Count
                            For dimIndex As Integer = 0 To dimsCount - 1
                                Using dimension As CubeDimension = cube.Dimensions(dimIndex)
                                    Call arrDims.Add(dimension.Name)
                                End Using
                            Next

                        End Using
                    End Using
                End Using

                m_cachedDims = arrDims.ToArray()
            End If
        Catch ex As Exception
            Call MessageBox.Show(ex.Message)
        Finally
            Cursor.Current = m_currentCursor
        End Try

        GetDimensions = m_cachedDims
    End Function    ' GetDimensions


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get list of selected object properties.
    Public Function GetObjectProperties() As Object()
        Cursor.Current = Cursors.WaitCursor

        Try
            GetObjectProperties = GetProps_()
        Catch ex As Exception
            Call MessageBox.Show(ex.Message)
        Finally
            Cursor.Current = m_currentCursor
        End Try
    End Function    ' GetObjectProperties


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get list of selected object properties.
    Public Function GetProps_() As Object()
        Dim arrProps As ArrayList = New ArrayList()
        Dim props As PropertyInfo()

        If m_cachedProps Is Nothing Then
            ' Cache properties.

            ' Get object.
            Select Case Me.Type
                Case ObjectType.Server
                    ' Get server.
                    If String.IsNullOrEmpty(Me.Connection) Then
                        Throw New ApplicationException("Please specify connection.")
                    End If

                    Using server As Server = GetServer_()
                        props = server.GetType().GetProperties( _
                            BindingFlags.Instance Or BindingFlags.Public)
                    End Using

                Case ObjectType.Database
                    ' Get database.
                    If String.IsNullOrEmpty(Me.Database) Then
                        Throw New ApplicationException("Please specify database.")
                    End If

                    Using server As Server = GetServer_()
                        Using database As Database = server.Databases(Me.Database)
                            props = database.GetType().GetProperties( _
                                BindingFlags.Instance Or BindingFlags.Public)
                        End Using
                    End Using

                Case ObjectType.Cube
                    ' Get cube.
                    If String.IsNullOrEmpty(Me.Cube) Then
                        Throw New ApplicationException("Please specify cube.")
                    End If

                    Using server As Server = GetServer_()
                        Using database As Database = server.Databases(Me.Database)
                            Using cube As Cube = database.Cubes(Me.Cube)
                                props = cube.GetType().GetProperties( _
                                    BindingFlags.Instance Or BindingFlags.Public)
                            End Using
                        End Using
                    End Using

                Case ObjectType.Dimension
                    ' Get dimension.
                    If String.IsNullOrEmpty(Me.Dimension) Then
                        Throw New ApplicationException("Please specify dimension.")
                    End If

                    Using server As Server = GetServer_()
                        Using database As Database = server.Databases(Me.Database)
                            Using cube As Cube = database.Cubes(Me.Cube)
                                Using dimension As CubeDimension = cube.Dimensions(Me.Dimension)
                                    props = dimension.GetType().GetProperties( _
                                        BindingFlags.Instance Or BindingFlags.Public)
                                End Using
                            End Using
                        End Using
                    End Using
            End Select

            ' Load properties.
            For Each prop As PropertyInfo In props
                Call arrProps.Add(prop.Name)
            Next

            Call arrProps.Sort()

            m_cachedProps = arrProps.ToArray()
        End If

        GetProps_ = m_cachedProps
    End Function    ' GetProps_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get current selected property value.
    Private Function GetPropertyValue_(ByVal obj As Object) As Object
        GetPropertyValue_ = obj.GetType().InvokeMember( _
            Me.Name, _
            BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.GetProperty, _
            Nothing, _
            obj, _
            New Object() {})
    End Function    ' GetPropertyValue_
#End Region ' Internals


#Region "Attributes"
    Private m_object As ObjectType
    Private m_connection As String
    Private m_database As String
    Private m_cube As String
    Private m_dimension As String
    Private m_propName As String
    Private m_resultVariable As String

    Private m_cachedDatabases As Object()
    Private m_cachedCubes As Object()
    Private m_cachedDims As Object()
    Private m_cachedProps As Object()
    Private m_currentCursor As Cursor = Cursor.Current
#End Region ' Attributes

End Class   ' ScriptMain]]></ProjectItem>
  <ProjectItem Name="ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1.vbproj" Encoding="UTF16LE">
<![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>{CC8DCB73-2430-4956-987D-6FD0E1156337}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1</RootNamespace>
    <AssemblyName>ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CozyRoc.SSISPlus.2014.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.ScriptTask, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.AnalysisServices">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <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" />
  <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="ScriptTask" />
        <ProjectClient>
          <HostIdentifier>SSIS_ST120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></ProjectItem>
  <ProjectItem Name="Project" Encoding="UTF16LE">
<![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:CodeName>ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1</msb:CodeName>
		<msb:DisplayName>ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1</msb:DisplayName>
		<msb:ProjectId>{1D8561B6-59A0-44FE-8321-6D7A1E439E85}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
	</msb:ItemGroup>
</c:Project>]]></ProjectItem>
  <BinaryItem Name="ScriptTask_9b073cd5a9404ac3b15506ca5f1398d1.dll">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
AAARGGkBFwABAIwgAAAAABMIcAEbAAEApCAAAAAAEwiWASgAAQC8IAAAAAATCL8BNQABANQgAAAA
ABMI3QFCAAEA7CAAAAAARgIjAmMAAQAIIQAAAABGAiwCaAACABwhAAAAAIMAPQJsAAIANCEAAAAA
RgJFAnEAAgBIIQAAAAARAE4CeAACAGQhAAAAAAEAbAKAAAMAgCEAAAAABhguARMABACIIQAAAAAD
CIACiwAEALwhAAAAAAYYLgETAAQA0CEAAAAABhguARMABADkIQAAAAAGAEMDEwAEADAlAAAAAAYA
SAOmAAQA+CUAAAAABgBWA6sABABUJgAAAAAGCGoDsQAFAGwmAAAAAAYIcwO2AAUAkCYAAAAABgiC
A3EABgCoJgAAAAAGCJEDvAAGAOgmAAAAAAYIoANxAAcAACcAAAAABgitA7wABwBAJwAAAAAGCLoD
cQAIAFgnAAAAAAYIwwO8AAgAmCcAAAAABgjMA3EACQCwJwAAAAAGCNoDvAAJANwnAAAAAAYI6ANx
AAoA9CcAAAAABgjxA7wACgAAKAAAAAAGCPoDcQALABgoAAAAAAYIDQS8AAsAJCgAAAAAAQggBKYA
DABEKAAAAAABAFcEwQAMAIAoAAAAAAYAYgTGAAwAkCkAAAAABgBvBMYADADUKgAAAAAGAHgExgAM
AEQsAAAAAAYAhgTGAAwAqCwAAAAABgCaBMYADACILwAAAAABAKQEywAMAAAAAQAqAgAAAQBjAgAA
AQBjAgAAAQBfAwAAAQB8AwAAAQB8AwAAAQB8AwAAAQB8AwAAAQB8AwAAAQB8AwAAAQB8AwAAAQC2
BAkALgETAFkALgENAWkALgEcAREALgETAHEALgETACQALgETACwALgETADQALgETADwALgETACQA
gAKLACwAgAKLADQAgAKLADwAgAKLAHkALgETAIEALgETAIkALgG8AJEALAexARkAIwJjABkALAJo
ACkATQe+ARkARQJxAKEAaQfOARkALgETAKkALgHeAUQAyQKQAEwAkweLAEwAnQdbAkwALgETALEA
LgFqAjkALgETAEkA2gd1AuEAUwgTAEEAbgh6AukAfAh/AsEAlAiFAvEAfAiKAskAtgiQAvkAfAiV
AjkA1wibAgEB8QihAgkBBwmnArkAfAivAhEBnQe2ArkAIAkTABkBMwm7AgEBVwnBAikBaQnUANkA
bwlxACEBewnHAhkBhQkXAAEBlwnQAjEBLgETADEBwwn0AjEBzQn5AikB1QkOA0EBLgG8AEkBAgoh
AwEBLgovA1kBfAg1A1EBPgpxAEEALgETAEEAUwq8AGEBYwp1AkkAcgpHA2kBlwpoAOkAfAhNA3EB
6ANxADEBzQnGAHkByApTA/EAfAhrA/kAfAiEAxkAPQJsACkASAOmA5kB6ANxADEBBAsTACkAEAva
A6kBLgFqArEBLgETALkBLgG8AMEBLgG8AMkBLgEWBNEBLgG8ANkBLgG8AOEBLgG8AOkBLgETAPEB
LgG8APkBLgHSBQkCLgHQAhECLgETABkCLgG8AAgATAD0AAgAUAD5AAgAWAD5AAgAXAD+AAgAYAAD
AQgAZAAIASkAgwCgAS4AwwJMBi4AywJVBi4A0wJ0BkAAEwATAUAAKwD5AEMAEwATAUMAGwAiAUkA
gwCMAWMAEwATAWMAGwAiAWkAgwBrAYAAKwD5AIMAGwAiAYMAewD5AIMAcwD5AIkAgwB4AaAAKwD5
AKMAwwDmAaMAEwATAcAAKwD5AMMAEwATAcMA6wBvAskAuwITAckAkwLZBckAmwICBuAAKwD5AOMA
cwL5AOMAgwIDBOMAiwIcBOMAawJvAuMAewL1A+kAowKvBOkAkwJhBOkAmwKYBAABEwATAQABKwD5
AAkBswI6BgkBmwKYBAkBkwIPBiABKwD5ACABEwATASkBkwKdBSkBmwKYBCkBswLEBUABEwATAUAB
KwD5AEkBmwKYBEkBkwIlBUkBswJRBWABKwD5AGABEwATAWkBswKEBWkBkwJkBWkBmwIXBYABKwD5
AIkBqwL5AIkBkwLFBIkBmwIXBaABKwD5AMABKwD5AMABEwATAeABKwD5AAACEwATAQACKwD5AFcB
XAFhAWYBtgG6AcUBygHZAdkBYQLVAgQDEwMcA8oBygHKAcoBygHKASgDPANaA3EDigOfA7AD6AME
AAEABgAFAAcABgAAAFIBTwAAAAsCVAAAALoBWQAAABcCXgAAANMCmAAAADgC3wAAAHEF5AAAAHwF
5AAAAIUF5AAAAIoF5AAAAJQF5AAAAJkF5AAAAKgF6AACAAQAAwACAAUABQACAAYABwACAAcACQAC
AA8ACwACABUADQABABYADQACABcADwABABgADwACABkAEQABABoAEQACABsAEwABABwAEwABAB4A
FQACAB0AFQABACAAFwACAB8AFwACACEAGQABACIAGQACACMAGwB1AHUAiAA7AUIBSQFQAUgCTwIB
AwSAAAAAAAAAAAAAAAAAAAAAAK8AAAAEAAAAAAAAAAAAAAABAAoAAAAAAAoAAAAAAAAAAAAAAAoA
EwAAAAAADAAAAAAAAAAAAAAAnQDfAgAAAAAMAAAAAAAAAAAAAACdADUEAAAAAAQAAAAAAAAAAAAA
AAEARQUAAAAABAAAAAAAAAAAAAAAAQBbAQAAAAAMAAAAAAAAAAAAAACdAOYHAAAAAAEAAAAAAAAA
AAAAAOwDVQsAAAAABQAEAAYABAAIAAcACQAHAAAAEAAMAGECAAAQABkAYQIAAAAAGwBhAi0A1AEt
AFYCAAAAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNh
dGlvbgBTY3JpcHRUYXNrXzliMDczY2Q1YTk0MDRhYzNiMTU1MDZjYTVmMTM5OGQxLk15AE15Q29t
cHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEA
U2NyaXB0TWFpbgBTY3JpcHRUYXNrXzliMDczY2Q1YTk0MDRhYzNiMTU1MDZjYTVmMTM5OGQxAFNj
cmlwdFJlc3VsdHMAT2JqZWN0VHlwZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRpb25T
ZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRldmlj
ZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0ZXJP
YmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2VyAGdl
dF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2Vydmlj
ZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRIYXNo
Q29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFuY2UA
RGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJhc2lj
Lk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3RhbmNl
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuU2NyaXB0VGFzawBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5U
YXNrcy5TY3JpcHRUYXNrAFZTVEFSVFNjcmlwdE9iamVjdE1vZGVsQmFzZQBNYWluAEdldFByb3Bl
cnRpZXMAVmFsaWRhdGUAZXJyTWVzc2FnZQBnZXRfVHlwZQBzZXRfVHlwZQB2YWx1ZQBnZXRfQ29u
bmVjdGlvbgBzZXRfQ29ubmVjdGlvbgBnZXRfRGF0YWJhc2UAc2V0X0RhdGFiYXNlAGdldF9DdWJl
AHNldF9DdWJlAGdldF9EaW1lbnNpb24Ac2V0X0RpbWVuc2lvbgBnZXRfTmFtZQBzZXRfTmFtZQBn
ZXRfUmVzdWx0VmFyaWFibGUAc2V0X1Jlc3VsdFZhcmlhYmxlAGdldF9Bc0Nvbm5lY3Rpb25UeXBl
AE1pY3Jvc29mdC5BbmFseXNpc1NlcnZpY2VzAFNlcnZlcgBHZXRTZXJ2ZXJfAEdldERhdGFiYXNl
cwBHZXRDdWJlcwBHZXREaW1lbnNpb25zAEdldE9iamVjdFByb3BlcnRpZXMAR2V0UHJvcHNfAEdl
dFByb3BlcnR5VmFsdWVfAG9iagBtX29iamVjdABtX2Nvbm5lY3Rpb24AbV9kYXRhYmFzZQBtX2N1
YmUAbV9kaW1lbnNpb24AbV9wcm9wTmFtZQBtX3Jlc3VsdFZhcmlhYmxlAG1fY2FjaGVkRGF0YWJh
c2VzAG1fY2FjaGVkQ3ViZXMAbV9jYWNoZWREaW1zAG1fY2FjaGVkUHJvcHMAU3lzdGVtLldpbmRv
d3MuRm9ybXMAQ3Vyc29yAG1fY3VycmVudEN1cnNvcgBDb25uZWN0aW9uAERhdGFiYXNlAEN1YmUA
RGltZW5zaW9uAE5hbWUAUmVzdWx0VmFyaWFibGUAQXNDb25uZWN0aW9uVHlwZQBFbnVtAHZhbHVl
X18AU3VjY2VzcwBGYWlsdXJlAFN5c3RlbS5Db21wb25lbnRNb2RlbABFZGl0b3JCcm93c2FibGVB
dHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIAR2Vu
ZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlhZ25vc3RpY3MARGVidWdnZXJIaWRkZW5BdHRy
aWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3RhbmRhcmRNb2R1
bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAU3lzdGVtLkNvbXBvbmVudE1vZGVs
LkRlc2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZp
Y2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZhbHVlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5
cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJbnN0YW5jZQBNeUdyb3VwQ29sbGVjdGlvbkF0
dHJpYnV0ZQBnZXRfVmFsdWUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNl
cwBDb21WaXNpYmxlQXR0cmlidXRlAGdldF9DdXJyZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuTWFu
YWdlZERUUwBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAFZhcmlhYmxlcwBDdWJlRGlt
ZW5zaW9uAEV4Y2VwdGlvbgBJRGlzcG9zYWJsZQBEaXNwb3NlAERhdGFiYXNlQ29sbGVjdGlvbgBn
ZXRfRGF0YWJhc2VzAGdldF9JdGVtAEN1YmVDb2xsZWN0aW9uAGdldF9DdWJlcwBDdWJlRGltZW5z
aW9uQ29sbGVjdGlvbgBnZXRfRGltZW5zaW9ucwBTY3JpcHRPYmplY3RNb2RlbABnZXRfRHRzAFZh
cmlhYmxlRGlzcGVuc2VyAGdldF9WYXJpYWJsZURpc3BlbnNlcgBMb2NrT25lRm9yV3JpdGUAVmFy
aWFibGUAVW5sb2NrAFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBFdmVudHNPYmplY3RXcmFw
cGVyAGdldF9FdmVudHMAU3RyaW5nAEVtcHR5AGdldF9NZXNzYWdlAEZpcmVFcnJvcgBDbGVhclBy
b2plY3RFcnJvcgBzZXRfVGFza1Jlc3VsdABTeXN0ZW0uQ29sbGVjdGlvbnMAQXJyYXlMaXN0AEFk
ZABBcnJheQBUb0FycmF5AElzTnVsbE9yRW1wdHkAQXBwbGljYXRpb25FeGNlcHRpb24AT3BlcmF0
b3JzAENvbXBhcmVTdHJpbmcAQ29ubmVjdGlvbk1hbmFnZXIAQ29ubmVjdGlvbnMAZ2V0X0Nvbm5l
Y3Rpb25zAGdldF9Db25uZWN0aW9uU3RyaW5nAENvbm5lY3QAQ3Vyc29ycwBnZXRfV2FpdEN1cnNv
cgBzZXRfQ3VycmVudABNb2RlbENvbXBvbmVudENvbGxlY3Rpb24AZ2V0X0NvdW50AE5hbWVkQ29t
cG9uZW50AE1lc3NhZ2VCb3gARGlhbG9nUmVzdWx0AFNob3cAU3lzdGVtLlJlZmxlY3Rpb24AUHJv
cGVydHlJbmZvAEJpbmRpbmdGbGFncwBNZW1iZXJJbmZvAFNvcnQAQmluZGVyAEludm9rZU1lbWJl
cgBDTFNDb21wbGlhbnRBdHRyaWJ1dGUAU1NJU1NjcmlwdFRhc2tFbnRyeVBvaW50QXR0cmlidXRl
AENvenlSb2MuU1NJU1BsdXMuMjAxNABDb3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMA
VmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRlAEZpbHRlclByb3BlcnRpZXNBdHRyaWJ1dGUAU29y
dFByb3BlcnRpZXNBdHRyaWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1
dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBWYXJpYWJsZUF0dHJpYnV0ZQBMaXN0QXR0cmlidXRlAFJl
ZnJlc2hQcm9wZXJ0aWVzQXR0cmlidXRlAFJlZnJlc2hQcm9wZXJ0aWVzAENvbXBpbGF0aW9uUmVs
YXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lzdGVtLlJ1
bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAU2NyaXB0VGFza185YjA3
M2NkNWE5NDA0YWMzYjE1NTA2Y2E1ZjEzOThkMS5kbGwAAAlUAHkAcABlAAAVQwBvAG4AbgBlAGMA
dABpAG8AbgAACU4AYQBtAGUAAB1SAGUAcwB1AGwAdABWAGEAcgBpAGEAYgBsAGUAABFEAGEAdABh
AGIAYQBzAGUAAAlDAHUAYgBlAAATRABpAG0AZQBuAHMAaQBvAG4AADFQAGwAZQBhAHMAZQAgAHMA
cABlAGMAaQBmAHkAIABwAHIAbwBwAGUAcgB0AHkALgAAEU0AUwBPAEwAQQBQADkAMAAANVAAbABl
AGEAcwBlACAAcwBwAGUAYwBpAGYAeQAgAGMAbwBuAG4AZQBjAHQAaQBvAG4ALgAAMVAAbABlAGEA
cwBlACAAcwBwAGUAYwBpAGYAeQAgAGQAYQB0AGEAYgBhAHMAZQAuAAApUABsAGUAYQBzAGUAIABz
AHAAZQBjAGkAZgB5ACAAYwB1AGIAZQAuAAAzUABsAGUAYQBzAGUAIABzAHAAZQBjAGkAZgB5ACAA
ZABpAG0AZQBuAHMAaQBvAG4ALgAAALYRcDg2U5RCrZ8swwPkdQ4ACLd6XFYZNOCJCLA/X38R1Qo6
AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIY
ARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEB
EB4AAhMABCAAEwAHBhUSGQETAAQoABMACImEXc2AgMyRBCAAHQ4FIAECEA4EIAARJAUgAQERJAQg
AQEOBCAAEiEEIAAdHAQgARwcAwYRJAIGDgMGHRwDBhIlBCgAESQDKAAOBCgAHQ4CBggDBhEgBAAA
AAAEAQAAAAQCAAAABAMAAAAEBAAAAAUgAQERMQgBAAEAAAAAAAUgAgEODhgBAApNeVRlbXBsYXRl
CDEwLjAuMC4wAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwESCAQHARIRBAcB
EhQMAQAHTXkuVXNlcgAAEwEADk15LldlYlNlcnZpY2VzAAATAQAOTXkuQXBwbGljYXRpb24AABAB
AAtNeS5Db21wdXRlcgAABAABHBwDBwECAwcBCAYAARIVEU0EBwESFQMHAQ4FEAEAHgAECgEeAAQH
AR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGll
bnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAAAYVEhgB
EwAGFRIZARMABAoBEwAFIAEBEwAIBwMTABMAEwAEIAEBAgUBAAAAAAQAABIlBCAAEnUFIAESYQ4E
IAASeQUgARJlDgQgABJ9BSABEmkOBSAAEoCBBSAAEoCFByACAQ4QEl0GIAESgIkcBCABARwFAAEB
Em0FIAASgJEIIAUCCA4ODggEIAEBCB4HDxwIEl0SIRIhEmESIRJhEmUSIRJhEmUSaRJtESQEIAEI
HAcgARKAnRIVAh0OCQcDHQ4SgJkRJAQAAQIOCAcEHRwCAhJtBAcBESQGAAMIDg4CBgcCHQ4dDgUg
ABKArQYgARKAqRwKBwQOEiESgKkSIQUAAQESJQUgARJhCAYAARGAwQ4QBwgSgJkIHRwSIQgSYRJt
CAUgARJlCBIHCRKAmQgdHBIhEmEIEmUSbQgFIAESaQgUBwoSgJkIHRwSIRJhEmUIEmkSbQgGBwId
HBJtCSABHRKAxRGAySkHERKAmR0cHRKAxRIhEiESYRIhEmESZRIhEmESZRJpEoDFESQIHRKAxQ0g
BRwOEYDJEoDRHB0cAwcBHAgWz0kLuAw06g0BAAhWYWxpZGF0ZQAAEgEADUdldFByb3BlcnRpZXMA
AAUgAQEdDkQBAAcAAAAEVHlwZQpDb25uZWN0aW9uCERhdGFiYXNlBEN1YmUJRGltZW5zaW9uBE5h
bWUOUmVzdWx0VmFyaWFibGUAADYBADFTcGVjaWZpZXMgY29ubmVjdGlvbiB0byBBbmFseXNpcyBT
ZXJ2aWNlcyBzZXJ2ZXIuAAAWAQARQW5hbHlzaXMgU2VydmljZXMAABUBABBBc0Nvbm5lY3Rpb25U
eXBlAABRAQBMU3BlY2lmaWVzIHBhY2thZ2UgdmFyaWFibGUgd2hlcmUgeW91IHdvdWxkIGxpa2Ug
dG8gc3RvcmUgdGhlIHByb3BlcnR5IHZhbHVlLgAADQEACFByb3BlcnR5AAArAQAmU3BlY2lmaWVz
IEFuYWx5c2lzIFNlcnZpY2VzIGRpbWVuc2lvbi4AABIBAA1HZXREaW1lbnNpb25zAAAfAQAaU3Bl
Y2lmaWVzIG9iamVjdCBwcm9wZXJ0eS4AABgBABNHZXRPYmplY3RQcm9wZXJ0aWVzAAAmAQAhU3Bl
Y2lmaWVzIEFuYWx5c2lzIFNlcnZpY2VzIGN1YmUuAAANAQAIR2V0Q3ViZXMAAAYgAQERgQEoAQAj
U3BlY2lmaWVzIGFuYWx5c2lzIHNlcnZpY2VzIG9iamVjdC4AAAwBAAcJT2JqZWN0AAAqAQAlU3Bl
Y2lmaWVzIEFuYWx5c2lzIFNlcnZpY2VzIGRhdGFiYXNlLgAAEQEADEdldERhdGFiYXNlcwAACAEA
CAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZl
cnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNCBRAAAA
AAAAAAAAAD5RAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwUQAAAAAAAAAAAAAAAAAAAABfQ29y
RGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAA
AAAAAAAAAAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFhgAADUAgAAAAAA
AAAAAADUAjQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAAA
AAAAAAAAAAAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBs
AGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAENAIAAAEA
UwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAAEAIAAAEAMAAwADAAMAAwADQAYgAwAAAALAAC
AAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAACAAAAAwAAgAAQBGAGkAbABlAFYA
ZQByAHMAaQBvAG4AAAAAADAALgAwAC4AMAAuADAAAACAADAAAQBJAG4AdABlAHIAbgBhAGwATgBh
AG0AZQAAAFMAYwByAGkAcAB0AFQAYQBzAGsAXwA5AGIAMAA3ADMAYwBkADUAYQA5ADQAMAA0AGEA
YwAzAGIAMQA1ADUAMAA2AGMAYQA1AGYAMQAzADkAOABkADEALgBkAGwAbAAAACgAAgABAEwAZQBn
AGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAACAAAACIADAAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwA
ZQBuAGEAbQBlAAAAUwBjAHIAaQBwAHQAVABhAHMAawBfADkAYgAwADcAMwBjAGQANQBhADkANAAw
ADQAYQBjADMAYgAxADUANQAwADYAYwBhADUAZgAxADMAOQA4AGQAMQAuAGQAbABsAAAANAAIAAEA
UAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAADgACAABAEEAcwBz
AGUAbQBiAGwAeQAgAFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAwAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAADAAAAFAxAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</BinaryItem>
</ScriptProject>