{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Debug
AnyCPU
8.0.30703
2.0
{3AF74B7B-CE4A-41E0-BFEF-C38D33FD6209}
Library
My Project
ScriptTask_621609c6b8b34789b81ad064fe2a737d
ScriptTask_621609c6b8b34789b81ad064fe2a737d
v4.5
512
Binary
On
On
true
full
false
.\bin\Debug\
false
true
true
prompt
4
false
true
.\bin\Release\
false
false
true
prompt
4
False
C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\CozyRoc.SSISPlus.2017.dll
False
False
SSIS_ST140
]]>
unlzw.c code in gzip-1.2.4 (written
' by Peter Jannesen) and the original compress code.
'
' Based on implementation by Ronald Tschalr (ronald@innovation.ch).
Class UncompressInputStream
Inherits Stream
' Methods
' @param is the input stream to decompress
Public Sub New(ByVal inputStream As Stream)
Me._inputStream = inputStream
Me.parse_header()
End Sub ' New
Private Sub fill()
Me.got = Me._inputStream.Read(Me.data, Me.end, Me.data.Length - 1 - Me.end)
If Me.got > 0 Then
Me.end += Me.got
End If
End Sub ' fill
Public Overrides Sub Flush()
Throw New NotSupportedException
End Sub ' Flush
Private Const LZW_MAGIC As Integer = &H1F9D
Private Const MAX_BITS As Integer = &H10
Private Const INIT_BITS As Integer = 9
Private Const HDR_MAXBITS As Integer = &H1F
Private Const HDR_EXTENDED As Integer = &H20
Private Const HDR_FREE As Integer = &H40
Private Const HDR_BLOCK_MODE As Integer = &H80
Private Sub parse_header()
' read in and check magic number
Dim t As Integer = Me.read_byte()
If t < 0 Then
Throw New Exception("Failed to read magic number")
End If
Dim magic As Integer = ((t And &HFF) << 8)
t = Me.read_byte()
If t < 0 Then
Throw New Exception("Failed to read magic number")
End If
magic += (t And &HFF)
If (magic <> LZW_MAGIC) Then
Throw New IOException("Input not in compress format (read magic number 0x" & magic.ToString("x") & ")")
End If
' read in header byte
Dim header As Integer = Me.read_byte()
If header < 0 Then
Throw New Exception("Failed to read header")
End If
Me.block_mode = ((header And HDR_BLOCK_MODE) > 0)
Me.maxbits = (header And HDR_MAXBITS)
If Me.maxbits > MAX_BITS Then
Throw New IOException( _
"Stream compressed with " & Me.maxbits.ToString() & _
" bits, but can only handle " & MAX_BITS.ToString() & " bits")
End If
If (header And HDR_EXTENDED) > 0 Then
Throw New IOException("Header extension bit set")
End If
If (header And HDR_FREE) > 0 Then
Throw New IOException("Header bit 6 set")
End If
' initialize stuff
Me.maxmaxcode = (CInt(1) << Me.maxbits)
Me.n_bits = INIT_BITS
Me.maxcode = (CInt(1) << Me.n_bits) - 1
Me.bitmask = Me.maxcode
Me.oldcode = -1
Me.finchar = 0
Me.free_ent = CType(IIf(Me.block_mode, TBL_FIRST, &H100), Integer)
Me.tab_prefix = New Integer((CInt(1) << Me.maxbits) - 1) {}
Me.tab_suffix = New Byte((CInt(1) << Me.maxbits) - 1) {}
Me.stack = New Byte((CInt(1) << Me.maxbits) - 1) {}
Me.stackp = Me.stack.Length
Dim idx As Integer = &HFF
Do While idx >= 0
Me.tab_suffix(idx) = CByte(idx)
idx -= 1
Loop
End Sub ' parse_header
Private one As Byte() = New Byte(1 - 1) {}
Public Function read_byte() As Integer
If Me._inputStream.Read(Me.one, 0, 1) = 1 Then
Return (Me.one(0) And &HFF)
End If
Return -1
End Function ' read_byte
Public Function read_internal(ByVal buf As Byte(), ByVal off As Integer, ByVal len As Integer) As Integer
If Me.eof Then
Return -1
End If
Dim num As Integer
Dim start As Integer = off
Dim l_tab_prefix As Integer() = Me.tab_prefix
Dim l_tab_suffix As Byte() = Me.tab_suffix
Dim l_stack As Byte() = Me.stack
Dim l_n_bits As Integer = Me.n_bits
Dim l_maxcode As Integer = Me.maxcode
Dim l_maxmaxcode As Integer = Me.maxmaxcode
Dim l_bitmask As Integer = Me.bitmask
Dim l_oldcode As Integer = Me.oldcode
Dim l_finchar As Byte = Me.finchar
Dim l_stackp As Integer = Me.stackp
Dim l_free_ent As Integer = Me.free_ent
Dim l_data As Byte() = Me.data
Dim l_bit_pos As Integer = Me.bit_pos
' empty stack if stuff still left
Dim s_size As Integer = (l_stack.Length - l_stackp)
If s_size > 0 Then
num = CType(IIf((s_size >= len), len, s_size), Integer)
Array.Copy(l_stack, l_stackp, buf, off, num)
off += num
len -= num
l_stackp += num
End If
If len = 0 Then
Me.stackp = l_stackp
Return (off - start)
End If
' loop, filling local buffer until enough data has been decompressed
main_loop:
If Me.end < EXTRA Then
Call Me.fill()
End If
Dim bit_in As Integer = CType(IIf(Me.got > 0, _
(Me.end - (Me.end Mod l_n_bits)) << 3, _
(Me.end << 3) - (l_n_bits - 1)), _
Integer)
Do While l_bit_pos < bit_in
Dim n_bytes As Integer
' check for code-width expansion
If l_free_ent > l_maxcode Then
n_bytes = (l_n_bits << 3)
l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes)
l_n_bits += 1
l_maxcode = CType(IIf(l_n_bits = Me.maxbits, _
l_maxmaxcode, _
((CInt(1) << l_n_bits) - 1)), _
Integer)
l_bitmask = ((CInt(1) << l_n_bits) - 1)
l_bit_pos = Me.resetbuf(l_bit_pos)
GoTo main_loop
End If
' read next code
Dim pos As Integer = (l_bit_pos >> 3)
Dim code As Integer = _
(((l_data(pos) And &HFF) Or ((l_data(pos + 1) And &HFF) << 8) Or _
((l_data(pos + 2) And &HFF) << &H10)) _
>> (l_bit_pos And 7)) And l_bitmask
l_bit_pos += l_n_bits
' handle first iteration
If (l_oldcode = -1) Then
If (code >= &H100) Then
Throw New IOException(("corrupt input: " & code & " > 255"))
End If
l_oldcode = code
l_finchar = CByte(code)
buf(off) = l_finchar
off += 1
len -= 1
Continue Do
End If
' handle CLEAR code
If code = TBL_CLEAR AndAlso Me.block_mode Then
Array.Copy(Me.zeros, 0, l_tab_prefix, 0, Me.zeros.Length)
l_free_ent = TBL_FIRST - 1
n_bytes = (l_n_bits << 3)
l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes)
l_n_bits = INIT_BITS
l_maxcode = ((CInt(1) << l_n_bits) - 1)
l_bitmask = l_maxcode
l_bit_pos = Me.resetbuf(l_bit_pos)
GoTo main_loop
End If
' setup
Dim incode As Integer = code
l_stackp = l_stack.Length
' Handle KwK case
If code >= l_free_ent Then
If code > l_free_ent Then
Throw New IOException( _
"corrupt input: code=" & code.ToString() & _
", free_ent=" & l_free_ent.ToString())
End If
l_stackp -= 1
l_stack(l_stackp) = l_finchar
code = l_oldcode
End If
' Generate output characters in reverse order
Do While (code >= &H100)
l_stackp -= 1
l_stack(l_stackp) = l_tab_suffix(code)
code = l_tab_prefix(code)
Loop
l_finchar = l_tab_suffix(code)
buf(off) = l_finchar
off += 1
len -= 1
' And put them out in forward order
s_size = (l_stack.Length - l_stackp)
num = CType(IIf(s_size >= len, len, s_size), Integer)
Array.Copy(l_stack, l_stackp, buf, off, num)
off += num
len -= num
l_stackp += num
' generate new entry in table
If l_free_ent < l_maxmaxcode Then
l_tab_prefix(l_free_ent) = l_oldcode
l_tab_suffix(l_free_ent) = l_finchar
l_free_ent += 1
End If
' Remember previous code
l_oldcode = incode
' if output buffer full, then return
If len = 0 Then
Me.n_bits = l_n_bits
Me.maxcode = l_maxcode
Me.bitmask = l_bitmask
Me.oldcode = l_oldcode
Me.finchar = l_finchar
Me.stackp = l_stackp
Me.free_ent = l_free_ent
Me.bit_pos = l_bit_pos
Return (off - start)
End If
Loop
l_bit_pos = Me.resetbuf(l_bit_pos)
If (Me.got > 0) Then
GoTo main_loop
End If
Me.n_bits = l_n_bits
Me.maxcode = l_maxcode
Me.bitmask = l_bitmask
Me.oldcode = l_oldcode
Me.finchar = l_finchar
Me.stackp = l_stackp
Me.free_ent = l_free_ent
Me.bit_pos = l_bit_pos
Me.eof = True
Return (off - start)
End Function ' read_internal
Public Overrides Function Read(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer) As Integer
Return Me.read_internal(buffer, offset, count)
End Function ' Read
' Moves the unread data in the buffer to the beginning and resets
' the pointers.
Private Function resetbuf(ByVal bit_pos As Integer) As Integer
Dim pos As Integer = (bit_pos >> 3)
Array.Copy(Me.data, pos, Me.data, 0, (Me.end - pos))
Me.end -= pos
Return 0
End Function ' resetbuf
Public Overrides Function Seek(ByVal offset As Long, ByVal origin As SeekOrigin) As Long
Throw New NotSupportedException
End Function ' Seek
Public Overrides Sub SetLength(ByVal value As Long)
Throw New NotSupportedException
End Sub ' SetLength
Public Overrides Sub Write(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer)
Throw New NotSupportedException
End Sub ' Write
' Properties
Public Overrides ReadOnly Property CanRead() As Boolean
Get
If Me.eof Then
Return False
End If
Return Me._inputStream.CanRead
End Get
End Property ' CanRead
Public Overrides ReadOnly Property CanSeek() As Boolean
Get
Return False
End Get
End Property ' CanSeek
Public Overrides ReadOnly Property CanWrite() As Boolean
Get
Return False
End Get
End Property ' CanWrite
Public Overrides ReadOnly Property Length() As Long
Get
Throw New NotSupportedException
End Get
End Property ' Length
Public Overrides Property Position() As Long
Get
Throw New NotSupportedException
End Get
Set(ByVal value As Long)
Throw New NotSupportedException
End Set
End Property ' Position
' Fields
Private _inputStream As Stream = Nothing
' string table stuff
Private Const TBL_CLEAR As Integer = &H100
Private Const TBL_FIRST As Integer = TBL_CLEAR + 1
Private tab_prefix As Integer()
Private tab_suffix As Byte()
Private zeros As Integer() = New Integer(&H100 - 1) {}
Private stack As Byte()
' various state
Private block_mode As Boolean
Private n_bits As Integer
Private maxbits As Integer
Private maxmaxcode As Integer
Private maxcode As Integer
Private bitmask As Integer
Private oldcode As Integer
Private finchar As Byte
Private stackp As Integer
Private free_ent As Integer
' input buffer
Private data As Byte() = New Byte(&H2710 - 1) {}
Private bit_pos As Integer = 0
Private [end] As Integer = 0
Private got As Integer = 0
Private eof As Boolean = False
Private Const EXTRA As Integer = &H40
End Class ' UncompressInputStream
_
_
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
' 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 fireAgain As Boolean
Try
Dim sourceFile As String = GetConnectionFile_(Me.SourceFile)
Dim inStream As Stream = New UncompressInputStream(File.OpenRead(sourceFile))
Dim buf As Byte() = New Byte(&H1000 - 1) {}
Dim targetFile As String = GetConnectionFile_(Me.TargetFile)
Using outStream As Stream = File.Create(targetFile)
Try
Dim bytesRead As Integer = 0
Do While True
bytesRead = inStream.Read(buf, 0, buf.Length)
If bytesRead <= 0 Then
Exit Do
End If
Call outStream.Write(buf, 0, bytesRead)
Loop
Call outStream.Flush()
Catch ex As Exception
' Failed to uncompress. Remove target file.
Call outStream.Close()
Call File.Delete(targetFile)
Throw
End Try
End Using
Call Dts.Events.FireInformation( _
0, _
String.Empty, _
String.Format("Uncompressed '{0}' to '{1}'.", sourceFile, targetFile), _
String.Empty, _
0, _
fireAgain)
result = ScriptResults.Success
Catch ex As Exception
result = ScriptResults.Failure
Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0)
End Try
Dts.TaskResult = result
End Sub ' Main
#Region "Internals"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' SourceFile property.
_
_
Public Property SourceFile() As String
Get
SourceFile = m_source
End Get
Set(ByVal value As String)
m_source = value
End Set
End Property ' SourceFile
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' TargetFile property.
_
_
Public Property TargetFile() As String
Get
TargetFile = m_target
End Get
Set(ByVal value As String)
m_target = value
End Set
End Property ' TargetFile
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private ReadOnly Property FileConnectionType() As String
Get
FileConnectionType = "FILE"
End Get
End Property ' FileConnectionType
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Validate specified connection is the expected type.
Private Function ValidateConnection_( _
ByVal managerName As String, _
ByVal expectedType As String) As Boolean
Dim result As Boolean
Dim manager As ConnectionManager
If Not String.IsNullOrEmpty(managerName) Then
manager = Dts.Connections(managerName)
If manager.CreationName = expectedType Then
result = True
Else
' Doesn't match expected type.
Dts.Events.FireError( _
0, _
String.Empty, _
String.Format( _
"'{0}' connection is not '{1}' type.", _
managerName, _
expectedType), _
String.Empty, _
0)
End If
End If
ValidateConnection_ = result
End Function ' ValidateConnection_
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Retrieves file path from specified file connection manager.
Private Function GetConnectionFile_(ByVal managerName As String) As String
Dim result As String
Dim manager As ConnectionManager
Dim fileConnection As Object
If ValidateConnection_(managerName, "FILE") Then
manager = Dts.Connections(managerName)
fileConnection = manager.AcquireConnection(Nothing)
If Not fileConnection Is Nothing Then
result = fileConnection.ToString()
Else
Dts.Events.FireError( _
0, _
String.Empty, _
String.Format("''{0}' connection file doesn't exist.", managerName), _
String.Empty, _
0)
End If
End If
GetConnectionFile_ = result
End Function ' GetConnectionFile_
#End Region ' Internals
#Region "Attributes"
Private m_source As String
Private m_target As String
#End Region ' Attributes
End Class ' ScriptMain]]>
ScriptTask_621609c6b8b34789b81ad064fe2a737d
msBuild
ScriptTask_621609c6b8b34789b81ad064fe2a737d
{4D2F88D9-7D8D-49A3-A422-9BF6D9A21D18}
]]>
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
AQEAAAgAABECAigbAAAGKCEAAAYMCCgrAAAKcwgAAAYNIAAQAACNHgAAARMEAgIoHQAABighAAAG
EwURBSgsAAAKEwYWEwcJEQQWEQSOaW8cAAAKEwcRBxYxDhEGEQQWEQdvLQAACiveEQZvLgAACt4Y
JSgvAAAKEwgRBm8wAAAKEQUoMQAACv4a3gwRBiwHEQZvMgAACtwCKDMAAApvNAAAChZ+NQAACnIL
AgBwCBEFKDYAAAp+NQAAChYSAW83AAAKFgreNSUoLwAAChMJFwoCKDMAAApvNAAAChZ+NQAAChEJ
bzgAAAp+NQAAChZvOQAACiYoOgAACt4AAigzAAAKBm87AAAKKgAAAAEoAAAAADwALmoAGBoAAAEC
ADwASIQADAAAAAAAAAAAv78ANRoAAAETMAEACQAAAAkAABECeyQAAAQKBioiAgN9JAAABCoAABMw
AQAJAAAACQAAEQJ7JQAABAoGKiICA30lAAAEKgAAEzABAAgAAAAJAAARckUCAHAKBioTMAYAWAAA
AAoAABEDKDwAAAotTAIoMwAACm89AAAKA28+AAAKbz8AAAoEFihAAAAKLQQXCyspAigzAAAKbzQA
AAoWfjUAAApyTwIAcAMEKDYAAAp+NQAAChZvOQAACiYHCgYqEzAGAGMAAAALAAARAgNyRQIAcCgg
AAAGLFECKDMAAApvPQAACgNvPgAAChRvQQAACihCAAAKDAgsCQhvQwAACgsrKAIoMwAACm80AAAK
Fn41AAAKcpcCAHADKEQAAAp+NQAAChZvOQAACiYHCgYqNgIDKEIAAAooRQAACioeAihGAAAKKi7Q
BwAAAihHAAAKKh4CKEMAAAoqAAAAEzABABQAAAAMAAARAowFAAAbLQgoAQAAKworAgIKBioiA/4V
BQAAGyoeAihJAAAKKgAAABMwAgAoAAAADQAAEQJ7SgAACm9LAAAKCgaMCAAAGy0SKAIAACsKAntK
AAAKBm9MAAAKBipKAihJAAAKAnNNAAAKfUoAAAoqAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5
AAAAAAUAbAAAAKwKAAAjfgAAGAsAAPwKAAAjU3RyaW5ncwAAAAAUFgAA5AIAACNVUwD4GAAAEAAA
ACNHVUlEAAAACBkAAGgEAAAjQmxvYgAAAAAAAAACAAABVx2iCQkOAAAA+gEzABYAAAEAAAAxAAAA
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
CQHtCjYBUQHTCTsBYQGkBkEBaQF/AnAAcQFNBUgBaQExB1UBeQEJBVoBcQBbBXAACQFJCl8BcQDA
CWUBcQDdAWoBiQAxAm4BiQGsAX4BcQCjCAYANACTCpUBPAD1BEoAPAD/BKwBPACjCAYACAAUANYB
CAAYANsBCAAcAOABCAAgAOUBCAAkAOoBCAAoAO8BCAAsAPQBCAA4APkBCAA8AP4BCACMAO8BCACg
AAMCCACkAAgCKQBjALoDLgALALUCLgATAL4CLgAbAN0CLgAjAOYCQAA7AAgCQAAzADADQwArADkD
QwAzADADSQBjAMsDYwArADkDYwAzADADaQBjAN8DgAA7AAgCgwBDAAgCgwBLAAgCgwArADkDiQBj
AOwDoAA7AAgCwAA7AAgCwwBrAAgCwwBzAFID4AA7AAgC4wAzADAD4wBTAFgDAwEzADADAwFbAFID
SQF7AAAESQGDABgEaQF7AAAEaQGDAD8EQAQzADADQAQ7AAgCYAQzADADYAQ7AAgCgAQzADADgAQ7
AAgCoAQzADADoAQ7AAgCwAQ7AAgC4AQ7AAgCAAU7AAgCAAUzADADIAU7AAgCQAU7AAgCQAUzADAD
TwBcAIYAigDBAMcAywDTAC0BMQFPAXYBiQEEAAEABQAFAAYACgAIAA0AAABkCJACAAAJB5UCAABQ
CJoCAADzCJ8CAACXAaQCAACJBaQCAABVA6QCAAB4BagCAABUB6gCAABWAqwCAAB0AqwCAADRAqwC
AAC/AbACAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgATAAsAAgAUAA0AAgAVAA8AAgAWABEAAgAX
ABMAAQAYABMAAgAbABUAAQAcABUAAgAdABcAAQAeABcAAgAfABkAAgApABsALgA1ADwAQwB7AY4B
nQGkAQSAAAAAAAAAAAAAAAAAAAAAAGcBAAAEAAAAAAAAAAAAAACyAUgBAAAAAAQAAAAAAAAAAAAA
ALIBrQYAAAAACgAAAAAAAAAAAAAAuwFRAQAAAAAOAAAAAAAAAAAAAADEAZEFAAAAAAEAAAAAAAAA
AAAAAM0BMQAAAAAADgAAAAAAAAAAAAAAxAGZAAAAAAAHAAQACAAEAAkABgAAABAAEADfAAAAEABN
AN8AAAAAAE8A3wCRAIQBkQCnAQAAAENvbnRleHRWYWx1ZWAxAFRocmVhZFNhZmVPYmplY3RQcm92
aWRlcmAxAEludDMyAENvenlSb2MuU1NJU1BsdXMuMjAxNwA8TW9kdWxlPgBFWFRSQQBMWldfTUFH
SUMASERSX0VYVEVOREVEAEhEUl9CTE9DS19NT0RFAEhEUl9GUkVFAFN5c3RlbS5JTwBUQkxfQ0xF
QVIATWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VkRFRTAEhEUl9NQVhCSVRTAElOSVRfQklUUwBN
QVhfQklUUwBUQkxfRklSU1QARGlzcG9zZV9fSW5zdGFuY2VfXwBDcmVhdGVfX0luc3RhbmNlX18A
dmFsdWVfXwBHZXRDb25uZWN0aW9uRmlsZV8AVmFsaWRhdGVDb25uZWN0aW9uXwBQcm9qZWN0RGF0
YQBkYXRhAG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBTY3JpcHRUYXNrXzYyMTYwOWM2
YjhiMzQ3ODliODFhZDA2NGZlMmE3MzdkAGdldF9DYW5SZWFkAE9wZW5SZWFkAGVuZABDcmVhdGVJ
bnN0YW5jZQBnZXRfR2V0SW5zdGFuY2UAaW5zdGFuY2UAbV9zb3VyY2UAR2V0SGFzaENvZGUAb2xk
Y29kZQBtYXhtYXhjb2RlAGJsb2NrX21vZGUAZ2V0X01lc3NhZ2UASURpc3Bvc2FibGUAUnVudGlt
ZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAZ2V0X1NvdXJjZUZpbGUAc2V0X1NvdXJjZUZp
bGUAZ2V0X1RhcmdldEZpbGUAc2V0X1RhcmdldEZpbGUAZ2V0X0NyZWF0aW9uTmFtZQBtYW5hZ2Vy
TmFtZQBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAG9uZQBleHBlY3RlZFR5cGUAZ2V0
X0ZpbGVDb25uZWN0aW9uVHlwZQBHZXRUeXBlAEZhaWx1cmUAVlNUQVJUU2NyaXB0T2JqZWN0TW9k
ZWxCYXNlAEFwcGxpY2F0aW9uQmFzZQBDbG9zZQBEaXNwb3NlAENyZWF0ZQBFZGl0b3JCcm93c2Fi
bGVTdGF0ZQBEZWxldGUAZ2V0X0NhbldyaXRlAEhlbHBLZXl3b3JkQXR0cmlidXRlAEdlbmVyYXRl
ZENvZGVBdHRyaWJ1dGUARGVidWdnYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVBdHRyaWJ1
dGUAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxl
TmFtZUF0dHJpYnV0ZQBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUARGVidWdnZXJIaWRkZW5BdHRy
aWJ1dGUATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBEZXNj
cmlwdGlvbkF0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAENMU0NvbXBs
aWFudEF0dHJpYnV0ZQBTU0lTU2NyaXB0VGFza0VudHJ5UG9pbnRBdHRyaWJ1dGUAUnVudGltZUNv
bXBhdGliaWxpdHlBdHRyaWJ1dGUAQnl0ZQByZWFkX2J5dGUAZ2V0X1ZhbHVlAHNldF9WYWx1ZQBH
ZXRPYmplY3RWYWx1ZQB2YWx1ZQBJSWYAb2ZmAGVvZgByZXNldGJ1ZgBTeXN0ZW0uUnVudGltZS5W
ZXJzaW9uaW5nAENvbXBhcmVTdHJpbmcAVG9TdHJpbmcARmx1c2gAZ2V0X0xlbmd0aABTZXRMZW5n
dGgAc3RhY2sAZ2V0X0NhblNlZWsATWljcm9zb2Z0LlNxbFNlcnZlci5TY3JpcHRUYXNrAE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRHRzLlRhc2tzLlNjcmlwdFRhc2sAYml0bWFzawBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbAByZWFkX2ludGVybmFsAFNjcmlwdE9iamVjdE1v
ZGVsAFN5c3RlbS5Db21wb25lbnRNb2RlbABTY3JpcHRUYXNrXzYyMTYwOWM2YjhiMzQ3ODliODFh
ZDA2NGZlMmE3MzdkLmRsbABmaWxsAEZpbGVTdHJlYW0AVW5jb21wcmVzc0lucHV0U3RyZWFtAF9p
bnB1dFN0cmVhbQBnZXRfSXRlbQBTeXN0ZW0ARW51bQBsZW4AU3lzdGVtLkNvbXBvbmVudE1vZGVs
LkRlc2lnbgBTY3JpcHRNYWluAFNlZWtPcmlnaW4Ab3JpZ2luAGdldF9BcHBsaWNhdGlvbgBNeUFw
cGxpY2F0aW9uAEZpcmVJbmZvcm1hdGlvbgBJbnRlcmFjdGlvbgBBY3F1aXJlQ29ubmVjdGlvbgBn
ZXRfUG9zaXRpb24Ac2V0X1Bvc2l0aW9uAElPRXhjZXB0aW9uAE5vdFN1cHBvcnRlZEV4Y2VwdGlv
bgBvAHN0YWNrcABmaW5jaGFyAHBhcnNlX2hlYWRlcgBtX0FwcE9iamVjdFByb3ZpZGVyAG1fVXNl
ck9iamVjdFByb3ZpZGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBtX015V2ViU2VydmljZXNP
YmplY3RQcm92aWRlcgBidWZmZXIAQ29ubmVjdGlvbk1hbmFnZXIAVG9JbnRlZ2VyAFN5c3RlbS5D
b2RlRG9tLkNvbXBpbGVyAEV2ZW50c09iamVjdFdyYXBwZXIAZ2V0X1VzZXIAZ2V0X0NvbXB1dGVy
AE15Q29tcHV0ZXIARmlyZUVycm9yAENsZWFyUHJvamVjdEVycm9yAFNldFByb2plY3RFcnJvcgBB
Y3RpdmF0b3IALmN0b3IALmNjdG9yAFN5c3RlbS5EaWFnbm9zdGljcwBNaWNyb3NvZnQuVmlzdWFs
QmFzaWMuRGV2aWNlcwBnZXRfV2ViU2VydmljZXMATXlXZWJTZXJ2aWNlcwBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2Vydmlj
ZXMATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUu
Q29tcGlsZXJTZXJ2aWNlcwBEZWJ1Z2dpbmdNb2RlcwBDb3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0
dHJpYnV0ZXMARXF1YWxzAENvbnZlcnNpb25zAGdldF9Db25uZWN0aW9ucwBiaXRfcG9zAHplcm9z
AFJ1bnRpbWVIZWxwZXJzAE9wZXJhdG9ycwBTdWNjZXNzAGdldF9EdHMAbl9iaXRzAG1heGJpdHMA
U2NyaXB0UmVzdWx0cwBnZXRfRXZlbnRzAENvbmNhdABGb3JtYXQAT2JqZWN0AE15UHJvamVjdABt
X3RhcmdldABvZmZzZXQAc2V0X1Rhc2tSZXN1bHQAZnJlZV9lbnQAY291bnQAZ290AG1fQ29udGV4
dAB0YWJfcHJlZml4AHRhYl9zdWZmaXgAU2NyaXB0VGFza182MjE2MDljNmI4YjM0Nzg5YjgxYWQw
NjRmZTJhNzM3ZC5NeQBBcnJheQBDb3B5AElzTnVsbE9yRW1wdHkAAAA3RgBhAGkAbABlAGQAIAB0
AG8AIAByAGUAYQBkACAAbQBhAGcAaQBjACAAbgB1AG0AYgBlAHIAAGVJAG4AcAB1AHQAIABuAG8A
dAAgAGkAbgAgAGMAbwBtAHAAcgBlAHMAcwAgAGYAbwByAG0AYQB0ACAAKAByAGUAYQBkACAAbQBh
AGcAaQBjACAAbgB1AG0AYgBlAHIAIAAwAHgAAAN4AAADKQAAK0YAYQBpAGwAZQBkACAAdABvACAA
cgBlAGEAZAAgAGgAZQBhAGQAZQByAAAvUwB0AHIAZQBhAG0AIABjAG8AbQBwAHIAZQBzAHMAZQBk
ACAAdwBpAHQAaAAgAAA3IABiAGkAdABzACwAIABiAHUAdAAgAGMAYQBuACAAbwBuAGwAeQAgAGgA
YQBuAGQAbABlACAAAAsgAGIAaQB0AHMAADFIAGUAYQBkAGUAcgAgAGUAeAB0AGUAbgBzAGkAbwBu
ACAAYgBpAHQAIABzAGUAdAAAIUgAZQBhAGQAZQByACAAYgBpAHQAIAA2ACAAcwBlAHQAAB9jAG8A
cgByAHUAcAB0ACAAaQBuAHAAdQB0ADoAIAAADSAAPgAgADIANQA1AAApYwBvAHIAcgB1AHAAdAAg
AGkAbgBwAHUAdAA6ACAAYwBvAGQAZQA9AAAXLAAgAGYAcgBlAGUAXwBlAG4AdAA9AAA5VQBuAGMA
bwBtAHAAcgBlAHMAcwBlAGQAIAAnAHsAMAB9ACcAIAB0AG8AIAAnAHsAMQB9ACcALgABCUYASQBM
AEUAAEcnAHsAMAB9ACcAIABjAG8AbgBuAGUAYwB0AGkAbwBuACAAaQBzACAAbgBvAHQAIAAnAHsA
MQB9ACcAIAB0AHkAcABlAC4AAUsnACcAewAwAH0AJwAgAGMAbwBuAG4AZQBjAHQAaQBvAG4AIABm
AGkAbABlACAAZABvAGUAcwBuACcAdAAgAGUAeABpAHMAdAAuAAEAFiZH9pnQL0OMYsDQbkNftwAE
IAEBCAMgAAEFIAEBEREEIAEBDgUgAgEODgUgAQERHQcgBAEODg4OBCABAQIGFRIgARIMBhUSIAES
CAYVEiABEj0GFRIgARIcBCAAEwAEBwEQCAcgAwgdBQgIBwcFCAgICAgEIAEODgYAAw4ODg4DIAAO
BQABDh0OBgADHAIcHAQAAQgcAwcBCBwHFggICB0IHQUdBQgICAgIBQgIHQUICAgICAgIDAAFARKA
lQgSgJUICAQAAQ4IBwAEDg4ODg4FBwIIEAgDBwEKAwcBAgMgAAIRBwoIAg4SVR0FDhJVCBJpEmkG
AAESgJ0OByADAR0FCAgFAAEBEmkEAAEBDgUgABKAqQUgABKArQIGDgYAAw4OHBwKIAYBCA4ODggQ
AgggBQIIDg4OCAMAAAEDBwEOBAcCAgIEAAECDgUgABKAsQYgARKAtRwGAAMIDg4CBQcDDg4cBCAB
HBwEAAEcHAUAAg4OHAQgAQIcAyAACAcAARJFEYDBBAcBHgACHgAFEAEAHgAECgEeAAQHARMABhUS
IAETAAcGFRJNARMABhUSTQETAAITAAQKARMABSABARMACLd6XFYZNOCJCLA/X38R1Qo6CImEXc2A
gMyRCBbPSQu4DDTqBJ0fAAAEEAAAAAQJAAAABB8AAAAEIAAAAARAAAAABIAAAAAEAAEAAAQBAQAA
BAAAAAAEAQAAAAcGFRIgARIMBwYVEiABEggHBhUSIAESPQcGFRIgARIcAgYIAwYdBQMGElUDBh0I
AgYCAgYFAwYRJAQAABIMBAAAEggEAAASPQQAABIcBSABARJVBCABCAgGIAIKChFZBCABAQoDIAAK
BSACAg4OBCAAEkUHEAEBHgAeAAcwAQEBEB4ABAgAEgwECAASCAQIABI9BAgAEhwDKAACAygACgMo
AA4EKAATAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwEIAQACAAAAAABJ
AQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjUBAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1lEi5O
RVQgRnJhbWV3b3JrIDQuNQgBAAEAAAAAABgBAApNeVRlbXBsYXRlCDExLjAuMC4wAAAFAQAAAABh
AQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJD
cmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAABABAAtNeS5Db21wdXRlcgAA
EwEADk15LkFwcGxpY2F0aW9uAAAMAQAHTXkuVXNlcgAAEwEADk15LldlYlNlcnZpY2VzAAAXAQAS
RmlsZUNvbm5lY3Rpb25UeXBlAAAmAQAhU2VsZWN0IGNvbm5lY3Rpb24gdG8gc291cmNlIGZpbGUu
AAAmAQAhU2VsZWN0IGNvbm5lY3Rpb24gdG8gdGFyZ2V0IGZpbGUuAAAAAExJAAAAAAAAAAAAAGZJ
AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYSQAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29y
ZWUuZGxsAAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgA
AIAAAAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA1AIA
AAAAAAAAAAAA1AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEA
AAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBG
AGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBDQC
AAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAABACAAABADAAMAAwADAAMAA0AGIAMAAA
ACwAAgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwA
ZQBWAGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAgAAwAAEASQBuAHQAZQByAG4AYQBs
AE4AYQBtAGUAAABTAGMAcgBpAHAAdABUAGEAcwBrAF8ANgAyADEANgAwADkAYwA2AGIAOABiADMA
NAA3ADgAOQBiADgAMQBhAGQAMAA2ADQAZgBlADIAYQA3ADMANwBkAC4AZABsAGwAAAAoAAIAAQBM
AGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAiAAwAAEATwByAGkAZwBpAG4AYQBsAEYA
aQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AFQAYQBzAGsAXwA2ADIAMQA2ADAAOQBjADYAYgA4
AGIAMwA0ADcAOAA5AGIAOAAxAGEAZAAwADYANABmAGUAMgBhADcAMwA3AGQALgBkAGwAbAAAADQA
CAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAAAAA4AAgAAQBB
AHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAAB4OQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=