Functions/Get-IntuneWinPackage.psm1
function Get-IntuneWinPackage { #Parameters [cmdletbinding()] param ( [String]$AppId, [String]$Path ) if (!$AppId){ $AppId = Read-Host "-> App ID" } if (!$Path){ $Path = Read-Host "-> Download Path" } Write-Host -NoNewLine -f Magenta "[Pending] -> Check for updates..." $version = (Get-Module -ListAvailable IntuneWinPackage) | Sort-Object Version -Descending | Select-Object Version -First 1 $psgalleryversion = Find-Module -Name IntuneWinPackage | Sort-Object Version -Descending | Select-Object Version -First 1 $stringver = $version | Select-Object @{n='ModuleVersion'; e={$_.Version -as [string]}} $a = $stringver | Select-Object Moduleversion -ExpandProperty Moduleversion $onlinever = $psgalleryversion | Select-Object @{n='OnlineVersion'; e={$_.Version -as [string]}} $b = $onlinever | Select-Object OnlineVersion -ExpandProperty OnlineVersion if ([version]"$a" -ge [version]"$b") { Write-Host -f DarkGreen "`r[Done] -> Check for updates " } else { Write-Host -f Yellow "`r[Warning] -> This PowerShell module is out of date! Please run Update-Module IntuneWinPackage in a PowerShell session with elevated rights." break } Write-Host -NoNewLine -f Magenta "[Pending] -> Checking parameters..." try { $directoryInfo = Get-ChildItem $Path | Measure-Object if (!$directoryInfo.count -eq 0){ Write-Host -f Yellow "`r[Warning] -> You path must be empty! " break } } catch { Write-Host -f Red "`r[Failed] -> Please enter a valid path! " break } Write-Host -f DarkGreen "`r[Done] -> Checking parameters " # Set Var $temp = $env:TEMP $LocalAppdata = $env:LOCALAPPDATA Write-Host -NoNewLine -f Magenta "[Pending] -> Checking 7-Zip installation..." #Checks if (!(Test-Path -Path "C:\Program Files\7-Zip\7z.exe")){ Write-Host -f Red "`r[Failed] -> No 7-Zip installation detected! " Break } Write-Host -f DarkGreen "`r[Done] -> Checking 7-Zip installation " Write-Host -NoNewLine -f Magenta "[Pending] -> Checking config file" if (!(Test-Path -Path "$LocalAppdata/IntuneWinPackage/config.json")){ New-Item -ItemType Directory -Force -Path "$LocalAppdat/IntuneWinPackage" | Out-Null New-Item -Path "$LocalAppdata/IntuneWinPackage" -Name "config.json" -Value '{"SASToken": ""}' -Force | Out-Null } #Config $configJSON = Get-Content -Path "$LocalAppdata/IntuneWinPackage/config.json" -raw $configPS = ConvertFrom-Json $configJSON if(!$configPS.SASToken){ Write-Host -f Yellow "`r[Warning] -> No SAS Token set! " $configPS.SASToken = Read-Host "SAS Token: " $configJSON = ConvertTo-Json -depth 32 $configPS $configJSON | Out-File "$LocalAppdata/IntuneWinPackage/config.json" } Write-Host -f DarkGreen "`r[Done] -> Checking config file " #Set Alias set-alias sz "C:\Program Files\7-Zip\7z.exe" $TableHeader = @{ 'Accept' = 'application/json;odata=nometadata' } $TableURL = "https://widstwaas001.table.core.windows.net/IntuneUploadTable(RowKey='"+$AppId+"',PartitionKey='IntuneWin')"+($configPS.SASToken) Write-Host -NoNewLine -f Magenta "[Pending] -> Searching database..." try { $PackagePS = Invoke-RestMethod -Method "GET" -Uri $TableURL -Header $TableHeader } catch { Write-Host -f Red "`r[Failed] -> No entity in database found!" break } Write-Host -f DarkGreen "`r[Done] -> Searching database " $EncryptionKey = $PackagePS.EncryptionKey $InitializationVector = $PackagePS.InitializationVector $source = ($PackagePS.IntuneWinURI) $destination = "$temp/Application.intunewin.bin" Write-Host -NoNewLine -f Magenta "[Pending] -> Download IntuneWin..." try { Start-BitsTransfer -Source $source -Destination $destination | Out-Null Write-Host -f DarkGreen "`r[Done] -> Download IntuneWin " } catch { Write-Host -f Red "`r[Failed] -> Download failed! " break } Write-Host -NoNewLine -f Magenta "[Pending] -> Decode IntuneWin..." try { &"$PSScriptRoot/IntuneWinAppUtilDecoder.exe" "$temp/Application.intunewin.bin" /key:"$EncryptionKey" /iv:"$InitializationVector" | Out-Null Write-Host -f DarkGreen "`r[Done] -> Decode IntuneWin " } catch { Write-Host -f Red "`r[Failed] -> Decoding failed! " break } Write-Host -NoNewLine -f Magenta "[Pending] -> UnZip decoded IntuneWin..." try { sz x "$temp/Application.intunewin.bin.decoded" -o"$Path" | Out-Null Write-Host -f DarkGreen "`r[Done] -> UnZip decoded IntuneWin " } catch { Write-Host -f Red "`r[Failed] -> UnZipping failed! " break } Write-Host -NoNewLine -f Magenta "[Pending] -> CleanUp..." try { Remove-Item "$temp/Application.intunewin.bin" Remove-Item "$temp/Application.intunewin.bin.decoded" Write-Host -f DarkGreen "`r[Done] -> CleanUp " } catch { Write-Host -f Red "`r[Failed] -> CleanUp failed! " break } } # SIG # Begin signature block # MIIt0wYJKoZIhvcNAQcCoIItxDCCLcACAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUxz39mV3tMky+X2BAQYtfHFSk # +g6ggiczMIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkqhkiG9w0B # AQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD # VQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVk # IElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5WjBiMQsw # CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu # ZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQw # ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz # 7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS # 5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7 # bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfI # SKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jH # trHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14 # Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2 # h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt # 6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPR # iQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ER # ElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4K # Jpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUwAwEB/zAd # BgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAUReuir/SS # y4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEBBG0wazAk # BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAC # hjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURS # b290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0 # LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAowCDAGBgRV # HSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/Vwe9mqyh # hyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLeJLxSA8hO # 0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE1Od/6Fmo # 8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9HdaXFSMb++h # UD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbObyMt9H5x # aiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMIIFkDCCA3ig # AwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG # EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl # cnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMw # ODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UE # ChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYD # VQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqGSIb3DQEBAQUA # A4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEppz1Y # q3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lX # FllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxe # TsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbu # yntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I # 9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmg # Z92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse # 5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKy # Ebe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwh # HbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/ # Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwID # AQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4E # FgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQADggIBALth2X2p # bL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY # ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdN # Oj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4 # i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJ # EVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9NcCOGDErcgdLM # MpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N0XWs0Mr7QbhD # parTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb/UdK # Dd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP # 0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLS # oCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9T # dSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+MIIGrjCCBJagAwIBAgIQBzY3tyRU # fNhHrP0oZipeWzANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UE # ChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYD # VQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjIwMzIzMDAwMDAwWhcN # MzcwMzIyMjM1OTU5WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs # IEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBTSEEy # NTYgVGltZVN0YW1waW5nIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC # AgEAxoY1BkmzwT1ySVFVxyUDxPKRN6mXUaHW0oPRnkyibaCwzIP5WvYRoUQVQl+k # iPNo+n3znIkLf50fng8zH1ATCyZzlm34V6gCff1DtITaEfFzsbPuK4CEiiIY3+va # PcQXf6sZKz5C3GeO6lE98NZW1OcoLevTsbV15x8GZY2UKdPZ7Gnf2ZCHRgB720RB # idx8ald68Dd5n12sy+iEZLRS8nZH92GDGd1ftFQLIWhuNyG7QKxfst5Kfc71ORJn # 7w6lY2zkpsUdzTYNXNXmG6jBZHRAp8ByxbpOH7G1WE15/tePc5OsLDnipUjW8LAx # E6lXKZYnLvWHpo9OdhVVJnCYJn+gGkcgQ+NDY4B7dW4nJZCYOjgRs/b2nuY7W+yB # 3iIU2YIqx5K/oN7jPqJz+ucfWmyU8lKVEStYdEAoq3NDzt9KoRxrOMUp88qqlnNC # aJ+2RrOdOqPVA+C/8KI8ykLcGEh/FDTP0kyr75s9/g64ZCr6dSgkQe1CvwWcZklS # UPRR8zZJTYsg0ixXNXkrqPNFYLwjjVj33GHek/45wPmyMKVM1+mYSlg+0wOI/rOP # 015LdhJRk8mMDDtbiiKowSYI+RQQEgN9XyO7ZONj4KbhPvbCdLI/Hgl27KtdRnXi # YKNYCQEoAA6EVO7O6V3IXjASvUaetdN2udIOa5kM0jO0zbECAwEAAaOCAV0wggFZ # MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLoW2W1NhS9zKXaaL3WMaiCP # nshvMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQE # AwIBhjATBgNVHSUEDDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRrMGkwJAYIKwYB # BQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0 # cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5j # cnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp # Z2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJ # YIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQB9WY7Ak7ZvmKlEIgF+ZtbYIULh # sBguEE0TzzBTzr8Y+8dQXeJLKftwig2qKWn8acHPHQfpPmDI2AvlXFvXbYf6hCAl # NDFnzbYSlm/EUExiHQwIgqgWvalWzxVzjQEiJc6VaT9Hd/tydBTX/6tPiix6q4XN # Q1/tYLaqT5Fmniye4Iqs5f2MvGQmh2ySvZ180HAKfO+ovHVPulr3qRCyXen/KFSJ # 8NWKcXZl2szwcqMj+sAngkSumScbqyQeJsG33irr9p6xeZmBo1aGqwpFyd/EjaDn # mPv7pp1yr8THwcFqcdnGE4AJxLafzYeHJLtPo0m5d2aR8XKc6UsCUqc3fpNTrDsd # CEkPlM05et3/JWOZJyw9P2un8WbDQc1PtkCbISFA0LcTJM3cHXg65J6t5TRxktcm # a+Q4c6umAU+9Pzt4rUyt+8SVe+0KXzM5h0F4ejjpnOHdI/0dKNPH+ejxmF/7K9h+ # 8kaddSweJywm228Vex4Ziza4k9Tm8heZWcpw8De/mADfIBZPJ/tgZxahZrrdVcA6 # KYawmKAr7ZVBtzrVFZgxtGIJDwq9gdkT/r+k0fNX2bwE+oLeMt8EifAAzV3C+dAj # fwAL5HYCJtnwZXZCpimHCUcr5n8apIUP/JiW9lVUKx+A+sDyDivl1vupL0QVSucT # Dh3bNzgaoSv27dZ8/DCCBrAwggSYoAMCAQICEAitQLJg0pxMn17Nqb2TrtkwDQYJ # KoZIhvcNAQEMBQAwYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IElu # YzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGlnaUNlcnQg # VHJ1c3RlZCBSb290IEc0MB4XDTIxMDQyOTAwMDAwMFoXDTM2MDQyODIzNTk1OVow # aTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQD # EzhEaWdpQ2VydCBUcnVzdGVkIEc0IENvZGUgU2lnbmluZyBSU0E0MDk2IFNIQTM4 # NCAyMDIxIENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW0L0LQ # KK14t13VOVkbsYhC9TOM6z2Bl3DFu8SFJjCfpI5o2Fz16zQkB+FLT9N4Q/QX1x7a # +dLVZxpSTw6hV/yImcGRzIEDPk1wJGSzjeIIfTR9TIBXEmtDmpnyxTsf8u/LR1oT # pkyzASAl8xDTi7L7CPCK4J0JwGWn+piASTWHPVEZ6JAheEUuoZ8s4RjCGszF7pNJ # cEIyj/vG6hzzZWiRok1MghFIUmjeEL0UV13oGBNlxX+yT4UsSKRWhDXW+S6cqgAV # 0Tf+GgaUwnzI6hsy5srC9KejAw50pa85tqtgEuPo1rn3MeHcreQYoNjBI0dHs6EP # bqOrbZgGgxu3amct0r1EGpIQgY+wOwnXx5syWsL/amBUi0nBk+3htFzgb+sm+YzV # svk4EObqzpH1vtP7b5NhNFy8k0UogzYqZihfsHPOiyYlBrKD1Fz2FRlM7WLgXjPy # 6OjsCqewAyuRsjZ5vvetCB51pmXMu+NIUPN3kRr+21CiRshhWJj1fAIWPIMorTmG # 7NS3DVPQ+EfmdTCN7DCTdhSmW0tddGFNPxKRdt6/WMtyEClB8NXFbSZ2aBFBE1ia # 3CYrAfSJTVnbeM+BSj5AR1/JgVBzhRAjIVlgimRUwcwhGug4GXxmHM14OEUwmU// # Y09Mu6oNCFNBfFg9R7P6tuyMMgkCzGw8DFYRAgMBAAGjggFZMIIBVTASBgNVHRMB # Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRoN+Drtjv4XxGG+/5hewiIZfROQjAfBgNV # HSMEGDAWgBTs1+OC0nFdZEzfLmc/57qYrhwPTzAOBgNVHQ8BAf8EBAMCAYYwEwYD # VR0lBAwwCgYIKwYBBQUHAwMwdwYIKwYBBQUHAQEEazBpMCQGCCsGAQUFBzABhhho # dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQQYIKwYBBQUHMAKGNWh0dHA6Ly9jYWNl # cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRSb290RzQuY3J0MEMGA1Ud # HwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRy # dXN0ZWRSb290RzQuY3JsMBwGA1UdIAQVMBMwBwYFZ4EMAQMwCAYGZ4EMAQQBMA0G # CSqGSIb3DQEBDAUAA4ICAQA6I0Q9jQh27o+8OpnTVuACGqX4SDTzLLbmdGb3lHKx # AMqvbDAnExKekESfS/2eo3wm1Te8Ol1IbZXVP0n0J7sWgUVQ/Zy9toXgdn43ccsi # 91qqkM/1k2rj6yDR1VB5iJqKisG2vaFIGH7c2IAaERkYzWGZgVb2yeN258TkG19D # +D6U/3Y5PZ7Umc9K3SjrXyahlVhI1Rr+1yc//ZDRdobdHLBgXPMNqO7giaG9OeE4 # Ttpuuzad++UhU1rDyulq8aI+20O4M8hPOBSSmfXdzlRt2V0CFB9AM3wD4pWywiF1 # c1LLRtjENByipUuNzW92NyyFPxrOJukYvpAHsEN/lYgggnDwzMrv/Sk1XB+JOFX3 # N4qLCaHLC+kxGv8uGVw5ceG+nKcKBtYmZ7eS5k5f3nqsSc8upHSSrds8pJyGH+PB # VhsrI/+PteqIe3Br5qC6/To/RabE6BaRUotBwEiES5ZNq0RA443wFSjO7fEYVgcq # LxDEDAhkPDOPriiMPMuPiAsNvzv0zh57ju+168u38HcT5ucoP6wSrqUvImxB+YJc # FWbMbA7KxYbD9iYzDAdLoNMHAmpqQDBISzSoUSC7rRuFCOJZDW3KBVAr6kocnqX9 # oKcfBnTn8tZSkP2vhUgh+Vc7tJwD7YZF9LRhbr9o4iZghurIr6n+lB3nYxs6hlZ4 # TjCCBsAwggSooAMCAQICEAxNaXJLlPo8Kko9KQeAPVowDQYJKoZIhvcNAQELBQAw # YzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTswOQYDVQQD # EzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hBMjU2IFRpbWVTdGFtcGlu # ZyBDQTAeFw0yMjA5MjEwMDAwMDBaFw0zMzExMjEyMzU5NTlaMEYxCzAJBgNVBAYT # AlVTMREwDwYDVQQKEwhEaWdpQ2VydDEkMCIGA1UEAxMbRGlnaUNlcnQgVGltZXN0 # YW1wIDIwMjIgLSAyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAz+yl # JjrGqfJru43BDZrboegUhXQzGias0BxVHh42bbySVQxh9J0Jdz0Vlggva2Sk/QaD # FteRkjgcMQKW+3KxlzpVrzPsYYrppijbkGNcvYlT4DotjIdCriak5Lt4eLl6FuFW # xsC6ZFO7KhbnUEi7iGkMiMbxvuAvfTuxylONQIMe58tySSgeTIAehVbnhe3yYbyq # Ogd99qtu5Wbd4lz1L+2N1E2VhGjjgMtqedHSEJFGKes+JvK0jM1MuWbIu6pQOA3l # jJRdGVq/9XtAbm8WqJqclUeGhXk+DF5mjBoKJL6cqtKctvdPbnjEKD+jHA9QBje6 # CNk1prUe2nhYHTno+EyREJZ+TeHdwq2lfvgtGx/sK0YYoxn2Off1wU9xLokDEaJL # u5i/+k/kezbvBkTkVf826uV8MefzwlLE5hZ7Wn6lJXPbwGqZIS1j5Vn1TS+QHye3 # 0qsU5Thmh1EIa/tTQznQZPpWz+D0CuYUbWR4u5j9lMNzIfMvwi4g14Gs0/EH1OG9 # 2V1LbjGUKYvmQaRllMBY5eUuKZCmt2Fk+tkgbBhRYLqmgQ8JJVPxvzvpqwcOagc5 # YhnJ1oV/E9mNec9ixezhe7nMZxMHmsF47caIyLBuMnnHC1mDjcbu9Sx8e47LZInx # scS451NeX1XSfRkpWQNO+l3qRXMchH7XzuLUOncCAwEAAaOCAYswggGHMA4GA1Ud # DwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMI # MCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCGSAGG/WwHATAfBgNVHSMEGDAWgBS6 # FtltTYUvcyl2mi91jGogj57IbzAdBgNVHQ4EFgQUYore0GH8jzEU7ZcLzT0qlBTf # UpwwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp # Z2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNIQTI1NlRpbWVTdGFtcGluZ0NBLmNybDCB # kAYIKwYBBQUHAQEEgYMwgYAwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj # ZXJ0LmNvbTBYBggrBgEFBQcwAoZMaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29t # L0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNIQTI1NlRpbWVTdGFtcGluZ0NBLmNy # dDANBgkqhkiG9w0BAQsFAAOCAgEAVaoqGvNG83hXNzD8deNP1oUj8fz5lTmbJeb3 # coqYw3fUZPwV+zbCSVEseIhjVQlGOQD8adTKmyn7oz/AyQCbEx2wmIncePLNfIXN # U52vYuJhZqMUKkWHSphCK1D8G7WeCDAJ+uQt1wmJefkJ5ojOfRu4aqKbwVNgCeij # uJ3XrR8cuOyYQfD2DoD75P/fnRCn6wC6X0qPGjpStOq/CUkVNTZZmg9U0rIbf35e # Ca12VIp0bcrSBWcrduv/mLImlTgZiEQU5QpZomvnIj5EIdI/HMCb7XxIstiSDJFP # PGaUr10CU+ue4p7k0x+GAWScAMLpWnR1DT3heYi/HAGXyRkjgNc2Wl+WFrFjDMZG # QDvOXTXUWT5Dmhiuw8nLw/ubE19qtcfg8wXDWd8nYiveQclTuf80EGf2JjKYe/5c # QpSBlIKdrAqLxksVStOYkEVgM4DgI974A6T2RUflzrgDQkfoQTZxd639ouiXdE4u # 2h4djFrIHprVwvDGIqhPm73YHJpRxC+a9l+nJ5e6li6FV8Bg53hWf2rvwpWaSxEC # yIKcyRoFfLpxtU56mWz06J7UWpjIn7+NuxhcQ/XQKujiYu54BNu90ftbCqhwfvCX # hHjjCANdRyxjqCU4lwHSPzra5eX25pvcfizM/xdMTQCi2NYBDriL7ubgclWJLCcZ # YfZ3AYwwggfgMIIFyKADAgECAhAEvFAJrWGkMrU95ncQieRtMA0GCSqGSIb3DQEB # CwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8G # A1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBT # SEEzODQgMjAyMSBDQTEwHhcNMjIxMDEzMDAwMDAwWhcNMjMxMDEzMjM1OTU5WjCB # wDELMAkGA1UEBhMCQ0gxEjAQBgNVBAcTCUtpcmNoYmVyZzEuMCwGA1UEChMlV2Fn # bmVyIEFHIEluZm9ybWF0aWsgRGllbnN0bGVpc3R1bmdlbjEVMBMGA1UECxMMU21h # cnRXb3JraW5nMS4wLAYDVQQDEyVXYWduZXIgQUcgSW5mb3JtYXRpayBEaWVuc3Rs # ZWlzdHVuZ2VuMSYwJAYJKoZIhvcNAQkBFhdzaW1vbi5idWVobGVyQHdhZ25lci5j # aDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMdC5YMo70Hi3T+D+cuB # cv/hR8siaO2vzx91NoK/gjUP7XppSxmE6Ouxse5lsvWAXwVgNxYVs3JbMhjPAJqn # JvvJya9P7lEsWsHiX+R4COSOzdBzlYcxsY3lInP2vKfe7UvFxbc2tLbnrqW2AHWj # stppoKJ2aGmmXDnbR8Vs0OReM7AYItrAoFFf9wo7g6py44f5/uY2d8VXoljaeFt3 # 6kxkjgcLwj9hiQiO+BZsZG74bhm8sj/uXBmgn5h4H/gOCUfgVQIxeX+JyGLULZvX # aVCqLKC7JNoHVDSLFZhnaePN87A8u9Gacaw513IyjedBZWFkyE4U/Mz8VOBBYzNB # X43rcEaoq9wGiVb/HXIGwV/VUCg4pQ7c8FLCHMEykEEAhU2uEeS+dB5J/HrmvZbQ # rwbEGx166g/ENnXl8psBzmXSrwZHIGDmX3phtvL56Gea+Peh5lWTPVllMqw1mFck # XqU5JLbNgReal6Uy+ZNoqCrTKcYIRfdwmAdJ1Nh+UGJ0Le3/ZxqJUduQ2iFDbhw7 # oVMRqgVOA5S2k2JRLX0sCRmF9T8lw9npVlQwlRy01yYwq3T34OprOveXs12mUFys # 8VMudyk8qJ6sfg+w6NxgX1PStOgPnxSwPP1FZ9me1bwHJSImxpC6cff+2gQnafN4 # V9X2QMnkOzyDKJxTSzYFAHntAgMBAAGjggIqMIICJjAfBgNVHSMEGDAWgBRoN+Dr # tjv4XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQUjA8vk7Wf1eqcSRK45LZdARisCtIw # IgYDVR0RBBswGYEXc2ltb24uYnVlaGxlckB3YWduZXIuY2gwDgYDVR0PAQH/BAQD # AgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0 # dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWdu # aW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5k # aWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZT # SEEzODQyMDIxQ0ExLmNybDA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUF # BwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGH # MIGEMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYB # BQUHMAKGUGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0 # ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAwGA1UdEwEB # /wQCMAAwDQYJKoZIhvcNAQELBQADggIBAL6Y+r+Pj3oQpcotIF7nDNUagOImzuAR # +WBLLwvIRG3TQQetHfCMReX1q1ytAkQEdlYYkReREkFMJniS+wxHmq5kDE2/06K/ # ujd+kt0VCBXQmIo2NXgoJEs5uD3nPYH7TLamlmdPvIoziEknzV8FlJqvy2QXCyml # xv3iDtnQnv8DZsnusktSnuUTl+KEOKmcVAPy96NMZlZ8rOuR+X8jShf4BwFRuz9e # 8mqtc7moCMZLjyBl5gJCuMSXo22ytDEKwFecbLCvxETA6fh3WJOdufAwZEmcDE79 # BZEcr5q5xnbE1GqnZkT1oJiMoyyhw6DOf3r6o2hKjeYdYSXBhAV7ZAQLz1y90LkT # 1ABkzN6W+vQL0Mv//NZ6tv7WkgLJQg+D/Widf7f5d6y9eH7QuOTJ1kP6jicXtK/l # TETOc3odIJqItrEz2YiAawRKiB6y3Ur8AqwOdb/ewwAYPsPFFv0I1p6LndmBNFET # iyEcrsH587w4xz7DslJ2l84tZocFtfXdO2HI3SpQCWB31CjqCs3iHj3dNTGQZUq0 # eetkK8bKtDLd6bZpvoH1k90rI3XRX/d7Gh4yZyHJcurTVFr37TCWWGbDlnqugpdn # w5KNIpn1wy6jR0BrzNRPucI9fxxXz1JsR4d0zqVR3Kgocrnf76bp0S0P3i1TcVNe # r/iwMkHUI17eMYIGCjCCBgYCAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO # RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29k # ZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExAhAEvFAJrWGkMrU95ncQ # ieRtMAkGBSsOAwIaBQCgQDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAjBgkq # hkiG9w0BCQQxFgQUlX66Nth2KIGmiQ0uqTu/uq1u2CMwDQYJKoZIhvcNAQEBBQAE # ggIALQmbnhQNLbLE1RB6HcWnN+bklt7hpE+iytdW8XOH8mWm82AcPDOgUF1BS8fE # 2Y5sxCRsdukEB9PDHd5IkDhXI3nhExvb6jhkSmWe0RiuG1cDjktYbMD/pGqKnpXH # OoFgSV6jIZFnYsL9fbF+dwgzPlwJcT11kzHNia+ysgwqH0FsRk65xtPDi1O5MsFT # zwui3eM7hcuJ5tj13qT6nCqsf0tlYXcB648zinHgoOEvFRdN0iPeUcTtTOcIr0KG # kdstdCRCwKypS1XbEr4L52S4mgAk0/dORvCEOvbJcet20plE3TN4750e9UuvKi+8 # Bp6Bl3XDJ8TdizySCAjCOH9LQvhOU/I/f+83BdE+Er3JjKP9BjZPO8seybhJ1MNY # Ogyi7Kbeg7qPQOLrwIdb065smihPsk6PbTvhR6OC8vyaO2vmOJQnhve6rVCXTLLi # O7eFyypt/vYhq8S/7TXi2GDPTSjcCHPOgPLscNgokM3PSHXQWRwDpKkCHoO3QmGK # /2o+Lux9fiSZgjPBrG6w2as74kFhVyrSp+MnyHSXdXb9YvDLrQy0+E+xXAEtNGr0 # ykK4K4nhQ8ZWUOm95KA79+HfYLEkfmXoVC8Njf8IO4zr4RxiiaaNLQ5idPkvkWwY # /0uPGhJonuejxuGICaJ9rmk8fNpgMz+LhJ+Nx+AO4q0nYGShggMgMIIDHAYJKoZI # hvcNAQkGMYIDDTCCAwkCAQEwdzBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGln # aUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5 # NiBTSEEyNTYgVGltZVN0YW1waW5nIENBAhAMTWlyS5T6PCpKPSkHgD1aMA0GCWCG # SAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B # CQUxDxcNMjIxMDEzMTMwNDUwWjAvBgkqhkiG9w0BCQQxIgQgmvwSPZjj6Dj4N/oS # krjxD4E5Cpjl7kiyMVYCerIOJ6IwDQYJKoZIhvcNAQEBBQAEggIAkfzp/CaWjNeJ # Bt7G42z5YWI9ssp9wjv2X+A6qVxEVtc+7FVfIQndNlY6Ir5mywBZ810Xdosw8hTR # xStvECZvREn+kY2c7ym8r7tAUOKpvxeafQ1m2p6GLcZR8bgThBoJWZwxxK5xiTRL # mWrm/8h/mq4kjYu5hfw5sDati754nAzgKnI9t8v/I32gdA3dWeUZygmz1/17h7Lr # 3aG8DV0+MNJxY7mYfAVVzroc1Izf0QPaJoJA7642t5/AxweKDpcCnGs+aB9bsv0A # cHTmIgnKpNv6Y/2MrOaVFHr4KRVZFB/UajsfMLOzmDtA/NrFNn2UrkaqJoMreuAl # PsAIO1lxREgLYq1SFjJnI/Uc8FXedijbUY3/gqJ7H+EuRkbxUoBewj/ovYmjbwFU # aG6IocIpDlUa9M/3k+n9kKqebOSEKmfH3JSim8KL+gHeF4V1MnzIuLuIdhY5k2Ey # wN82lxWYybgKiyChwFkhAZ1l1qelA74DSvyNtuXIm0YpmHuOp3iV7M948v3CG82z # 8UogHV0iIXm99jK/MOPz0j+YO1+616UcJumArDBEV+Vmtq3gl48qz8wvrZ9bOGDi # 3ziDvaJ1qWCz07gFEJi/uIPyG/rXJDCKmCUOvS+c0Nx/m0ND2+wb5uYuzSKtbhOW # D27w2aFQXfRIy9n0+d242Gpg7faTkBI= # SIG # End signature block |