Private/ParseJsonString.ps1

# ParseJsonString converts from string to PowerShell objects
# (workaround to overcome ConvertFrom-Json limitation on PowerShell 4.0 and earlier)

# Based on code by Florian Feldhaus at 'ConvertFrom-Json max length'
# https://stackoverflow.com/questions/16854057/convertfrom-json-max-length
# With the following changes:
# - ParseJsonString calls ParseItem, not ParseJsonObject (suggested by Dmitry Lobanov)
# - if-else test in ParseJsonObject is replaced by '$parsedItem = ParseItem $item'
# Note: this code is much slower than ConvertFrom-Json

Add-Type -Assembly System.Web.Extensions

# .NET JSON Serializer
$javaScriptSerializer = New-Object System.Web.Script.Serialization.JavaScriptSerializer
$javaScriptSerializer.MaxJsonLength = [System.Int32]::MaxValue
$javaScriptSerializer.RecursionLimit = 99

# Functions necessary to parse JSON output from .NET serializer to PowerShell Objects
function ParseItem($jsonItem) {
        if($jsonItem.PSObject.TypeNames -match "Array") {
                return ParseJsonArray($jsonItem)
        }
        elseif($jsonItem.PSObject.TypeNames -match "Dictionary") {
                return ParseJsonObject([HashTable]$jsonItem)
        }
        else {
                return $jsonItem
        }
}

function ParseJsonObject($jsonObj) {
        $result = New-Object -TypeName PSCustomObject
        foreach ($key in $jsonObj.Keys) {
                $item = $jsonObj[$key]
                $parsedItem = ParseItem $item
                $result | Add-Member -MemberType NoteProperty -Name $key -Value $parsedItem
        }
        return $result
}

function ParseJsonArray($jsonArray) {
        $result = @()
        $jsonArray | ForEach-Object {
                $result += , (ParseItem $_)
        }
        return $result
}

function ParseJsonString($json) {
        $config = $javaScriptSerializer.DeserializeObject($json)
        return ParseItem($config)
}

# SIG # Begin signature block
# MIIdhwYJKoZIhvcNAQcCoIIdeDCCHXQCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUrXQEvaxdyNT7aRhxjQ/dFKXe
# yAegghhjMIIE3jCCA8agAwIBAgITMwAAAVs1WiafYIVg/AAAAAABWzANBgkqhkiG
# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw
# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTkxMjE5MDExMzA1
# WhcNMjEwMzE3MDExMzA1WjCBzjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
# b3JhdGlvbjEpMCcGA1UECxMgTWljcm9zb2Z0IE9wZXJhdGlvbnMgUHVlcnRvIFJp
# Y28xJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjMyQkQtRTNENS0zQjFEMSUwIwYD
# VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEArElLEu/9QqeW207HJEwTD7omCt3Xcu4U5VwFXfWl
# ISARVzK+xf7eThxGU7pxM6zi9fvQl0UjUzS2QCXyE/7IZDiiRBEjnpQZ/B5MOK/H
# e1TFewVybrUXP7jACbN6eezxBuL8c2JnBiJGdN8O5fCyT9vyw9bqC7efCVTfra/s
# G0oM4+JibMipA9FTq00X7IUmjIzwIt2K4hdnt1gAHE8WNHXMua8wd0ao2Hf0+jLe
# 1bqzLK2JnhdJB9g8Ja9mPlopIYT4t4p5TPXPm4JaBRVonQTVeNZUHGU9c8QRFfZm
# rhpp69eWoHnZPX21uVudV7kkh/ZufQER9XJ/5snQpN/14wIDAQABo4IBCTCCAQUw
# HQYDVR0OBBYEFM2ge4hOgBpcuZDdFVE9iWZJxgDeMB8GA1UdIwQYMBaAFCM0+NlS
# RnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwubWlj
# cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdFRpbWVTdGFtcFBD
# QS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsGAQUFBzAChjxodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcnQw
# EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEFBQADggEBAGzeXXm6u0Mw
# pEckc5+vcGmTgUfHJVhdGVg1alKCyfS84WWC7KTAZgYiG82twQpWlgCX1dKXafIN
# +ttGlvDFPCmDy5jfo47FMbgmx9q63uvyEVw0NkE1TUO5uMJlKKIrtYLPRujWLdsX
# GkMwWfCbLFscBtzXaBPCjpNUyz8wAUSL8H601pyW7U1c8t5HGoHsBHgq9TrkFPVX
# zjHy3B+TrUfOrwxRi13xadorjbHc71y/gXQ56U4wqEYPqjVw8IPvxN9yptU26Rxq
# +iW9XpfyA6ioi0JjWLpFfXZmn0jJgOFDo1/Ky32HhBg2cxfuU84gQZbm3Ifh00l4
# I5n3CabokIEwggX0MIID3KADAgECAhMzAAABhk0hdaDZB74sAAAAAAGGMA0GCSqG
# SIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
# DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
# KDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwHhcNMjAw
# MzA0MTgzOTQ2WhcNMjEwMzAzMTgzOTQ2WjB0MQswCQYDVQQGEwJVUzETMBEGA1UE
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24w
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC49eyyaaieg3Xb7ew+/hA3
# 4gqzRuReb9svBF6N3+iLD5A0iMddtunnmbFVQ+lNWphf/xOGef5vXMMMk744txo/
# kT6CKq0GzV+IhAqDytjH3UgGhLBNZ/UWuQPgrnhwafQ3ZclsXo1lto4pyps4+X3R
# yQfnxCwqtjRxjCQ+AwIzk0vSVFnId6AwbB73w2lJ+MC+E6nVmyvikp7DT2swTF05
# JkfMUtzDosktz/pvvMWY1IUOZ71XqWUXcwfzWDJ+96WxBH6LpDQ1fCQ3POA3jCBu
# 3mMiB1kSsMihH+eq1EzD0Es7iIT1MlKERPQmC+xlK+9pPAw6j+rP2guYfKrMFr39
# AgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEEAYI3TAgBBggrBgEFBQcDAzAd
# BgNVHQ4EFgQUhTFTFHuCaUCdTgZXja/OAQ9xOm4wRQYDVR0RBD4wPKQ6MDgxHjAc
# BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEWMBQGA1UEBRMNMjMwMDEyKzQ1
# ODM4NDAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBL
# MEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWND
# b2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggr
# BgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9N
# aWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJ
# KoZIhvcNAQELBQADggIBAEDkLXWKDtJ8rLh3d7XP1xU1s6Gt0jDqeHoIpTvnsREt
# 9MsKriVGKdVVGSJow1Lz9+9bINmPZo7ZdMhNhWGQQnEF7z/3czh0MLO0z48cxCrj
# Lch0P2sxvtcaT57LBmEy+tbhlUB6iz72KWavxuhP5zxKEChtLp8gHkp5/1YTPlvR
# YFrZr/iup2jzc/Oo5N4/q+yhOsRT3KJu62ekQUUPsPU2bWsaF/hUPW/L2O1Fecf+
# 6OOJLT2bHaAzr+EBAn0KAUiwdM+AUvasG9kHLX+IXXlEZvfsXGzzxFlWzNbpM99u
# mWWMQPTGZPpSCTDDs/1Ci0Br2/oXcgayYLaZCWsj1m/a0V8OHZGbppP1RrBeLQKf
# ATjtAl0xrhMr4kgfvJ6ntChg9dxy4DiGWnsj//QywUs1UxVchRR7eFaP3M8/BV0e
# eMotXwTNIwzSd3uAzAI+NSrN5pVlQeC0XXTueeDuxDch3S5UUdDOvdlOdlRAa+85
# Si6HmEUgx3j0YYSC1RWBdEhwsAdH6nXtXEshAAxf8PWh2wCsczMe/F4vTg4cmDsB
# TZwwrHqL5krX++s61sLWA67Yn4Db6rXV9Imcf5UMCq09wJj5H93KH9qc1yCiJzDC
# tbtgyHYXAkSHQNpoj7tDX6ko9gE8vXqZIGj82mwDTAY9ofRH0RSMLJqpgLrBPCKN
# MIIGBzCCA++gAwIBAgIKYRZoNAAAAAAAHDANBgkqhkiG9w0BAQUFADBfMRMwEQYK
# CZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYD
# VQQDEyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcw
# NDAzMTI1MzA5WhcNMjEwNDAzMTMwMzA5WjB3MQswCQYDVQQGEwJVUzETMBEGA1UE
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQ
# Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfoWyx39tIkip8ay4Z
# 4b3i48WZUSNQrc7dGE4kD+7Rp9FMrXQwIBHrB9VUlRVJlBtCkq6YXDAm2gBr6Hu9
# 7IkHD/cOBJjwicwfyzMkh53y9GccLPx754gd6udOo6HBI1PKjfpFzwnQXq/QsEIE
# ovmmbJNn1yjcRlOwhtDlKEYuJ6yGT1VSDOQDLPtqkJAwbofzWTCd+n7Wl7PoIZd+
# +NIT8wi3U21StEWQn0gASkdmEScpZqiX5NMGgUqi+YSnEUcUCYKfhO1VeP4Bmh1Q
# CIUAEDBG7bfeI0a7xC1Un68eeEExd8yb3zuDk6FhArUdDbH895uyAc4iS1T/+QXD
# wiALAgMBAAGjggGrMIIBpzAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQjNPjZ
# UkZwCu1A+3b7syuwwzWzDzALBgNVHQ8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAw
# gZgGA1UdIwSBkDCBjYAUDqyCYEBWJ5flJRP8KuEKU5VZ5KShY6RhMF8xEzARBgoJ
# kiaJk/IsZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNV
# BAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eYIQea0WoUqg
# pa1Mc1j0BxMuZTBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29m
# dC5jb20vcGtpL2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYI
# KwYBBQUHAQEESDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5j
# b20vcGtpL2NlcnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDATBgNVHSUEDDAKBggr
# BgEFBQcDCDANBgkqhkiG9w0BAQUFAAOCAgEAEJeKw1wDRDbd6bStd9vOeVFNAbEu
# dHFbbQwTq86+e4+4LtQSooxtYrhXAstOIBNQmd16QOJXu69YmhzhHQGGrLt48ovQ
# 7DsB7uK+jwoFyI1I4vBTFd1Pq5Lk541q1YDB5pTyBi+FA+mRKiQicPv2/OR4mS4N
# 9wficLwYTp2OawpylbihOZxnLcVRDupiXD8WmIsgP+IHGjL5zDFKdjE9K3ILyOpw
# Pf+FChPfwgphjvDXuBfrTot/xTUrXqO/67x9C0J71FNyIe4wyrt4ZVxbARcKFA7S
# 2hSY9Ty5ZlizLS/n+YWGzFFW6J1wlGysOUzU9nm/qhh6YinvopspNAZ3GmLJPR5t
# H4LwC8csu89Ds+X57H2146SodDW4TsVxIxImdgs8UoxxWkZDFLyzs7BNZ8ifQv+A
# eSGAnhUwZuhCEl4ayJ4iIdBD6Svpu/RIzCzU2DKATCYqSCRfWupW76bemZ3KOm+9
# gSd0BhHudiG/m4LBJ1S2sWo9iaF2YbRuoROmv6pH8BJv/YoybLL+31HIjCPJZr2d
# HYcSZAI9La9Zj7jkIeW1sMpjtHhUBdRBLlCslLCleKuzoJZ1GtmShxN1Ii8yqAhu
# oFuMJb+g74TKIdbrHk/Jmu5J4PcBZW+JC33Iacjmbuqnl84xKf8OxVtc2E0bodj6
# L54/LlUWa8kTo/0wggd6MIIFYqADAgECAgphDpDSAAAAAAADMA0GCSqGSIb3DQEB
# CwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYD
# VQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMTAe
# Fw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDlaMH4xCzAJBgNVBAYTAlVTMRMw
# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
# aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp
# Z25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCr
# 8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgGOBoESbp/wwwe3TdrxhLYC/A4
# wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S35tTsgosw6/ZqSuuegmv15ZZ
# ymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jzy23zOlyhFvRGuuA4ZKxuZDV4
# pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/74ytaEB9NViiienLgEjq3SV7Y
# 7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2uM1jFtz7+MtOzAz2xsq+SOH7S
# nYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33X/DQUr+MlIe8wCF0JV8YKLbM
# Jyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIlXdMhSz5SxLVXPyQD8NF6Wy/V
# I+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP6SNJvBi4RHxF5MHDcnrgcuck
# 379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLBl4F77dbtS+dJKacTKKanfWeA
# 5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGFRInECUzF1KVDL3SV9274eCBY
# LBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiMCwIDAQABo4IB7TCCAekwEAYJ
# KwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQBdOCqhc3NyK1bajKdQKVMBkG
# CSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8E
# BTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO4eqnxzHRI4k0MFoGA1UdHwRT
# MFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1
# Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18yMi5jcmwwXgYIKwYBBQUHAQEE
# UjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl
# cnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18yMi5jcnQwgZ8GA1UdIASBlzCB
# lDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jv
# c29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNwcy5odG0wQAYIKwYBBQUHAgIw
# NB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkAXwBzAHQAYQB0AGUAbQBlAG4A
# dAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY4FR5Gi7T2HRnIpsLlhHhY5KZ
# QpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj82nbY78iNaWXXWWEkH2LRlBV
# 2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUdd5Q54ulkyUQ9eHoj8xN9ppB0
# g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJYx8JaW5amJbkg/TAj/NGK978
# O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYfwzIY4vDFLc5bnrRJOQrGCsLG
# ra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJaG5vp7d0w0AFBqYBKig+gj8T
# TWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1jNpeG39rz+PIWoZon4c2ll9Du
# XWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9Bxw4o7t5lL+yX9qFcltgA1qFG
# vVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96eiL6SJUfq/tHI4D1nvi/a7dL
# l+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7r/ww7QRMjt/fdW1jkT3RnVZO
# T7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5IRcBCyZt2WwqASGv9eZ/BvW1t
# aslScxMNelDNMYIEjjCCBIoCAQEwgZUwfjELMAkGA1UEBhMCVVMxEzARBgNVBAgT
# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
# dCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQ
# Q0EgMjAxMQITMwAAAYZNIXWg2Qe+LAAAAAABhjAJBgUrDgMCGgUAoIGiMBkGCSqG
# SIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3
# AgEVMCMGCSqGSIb3DQEJBDEWBBSDnUtySy5n5Mhowc3CpFe3a/HlWzBCBgorBgEE
# AYI3AgEMMTQwMqAUgBIATQBpAGMAcgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5t
# aWNyb3NvZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAJegX+9WS6MCnGPifMzql4GM
# 3oI4ps3zoblcUL1idVqtgX+Zq2d5098Mdu4Lu4J63QsX06ILyScIAVJIDKy0+hbS
# /hm6r9CZkWmvjSWGLQpqvKg7N4PoH2A7b1QtECv6gCYWNJU5bpl4NpSl2s41VGQp
# u/dkPv6KoN5RTTO/f3ocEjOBxOW1Q1icBbAiwvIBt6uip2g1d6Y6FQvslesaoqD4
# yQo4JpdZwTUeapMbuVEyaTSSFU43sxFlAFEhjt6wJQwTNccuhWa0ZeOrLjH7VACn
# sTQujUlEjn6Q9LoRn4H07kACpgM0nIwIc0lRgkv7CSmPS3hKuigDGQqKFchIugeh
# ggIoMIICJAYJKoZIhvcNAQkGMYICFTCCAhECAQEwgY4wdzELMAkGA1UEBhMCVVMx
# EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
# FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUt
# U3RhbXAgUENBAhMzAAABWzVaJp9ghWD8AAAAAAFbMAkGBSsOAwIaBQCgXTAYBgkq
# hkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMDExMDMxNzQ1
# MTdaMCMGCSqGSIb3DQEJBDEWBBRQW2OjxkHN8tVHIZivnNpoieyANTANBgkqhkiG
# 9w0BAQUFAASCAQAL6D/k3H7GnDyh0iQN6nIRx1I8NcbXRo0gsMCfJaQn9KpuhauF
# DGhI9SGPjNaks+WK0XMAr5iD2qWeOZgZV9V4b4WksQJPTqfA+vjd3tM/VcL24cyn
# oLIrOndVTKqx/hcOzZrjBbVlU6cFfofrghRc1dSNnEJm8lTipekoCja8EN0ZECoM
# bBKxhqDf53HirbEczZbQX907W0aimNDDHca9TJiu52BC2HXLr77uYuQknchvvtF9
# FL5NhAS5qXQVbD0+b5b1AGJkvYgQSg++kvqzomJdQ3ifKscD1qh3JY72Wg38qXz+
# baGMrVf6jWEj08xHXA1MVNncSqo0kQNJZ7xB
# SIG # End signature block