From 32bdfa112f00e731be1cda2a546cafeb713806ba Mon Sep 17 00:00:00 2001 From: Ewerton Scaboro da Silva Date: Tue, 29 Nov 2022 21:23:43 -0800 Subject: [PATCH 1/7] Change ADU documentation to use Azure CLI instead of PS scripts --- examples/Azure_IoT_Adu_ESP32/readme.md | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/examples/Azure_IoT_Adu_ESP32/readme.md b/examples/Azure_IoT_Adu_ESP32/readme.md index 1c093b66..2da64ed5 100644 --- a/examples/Azure_IoT_Adu_ESP32/readme.md +++ b/examples/Azure_IoT_Adu_ESP32/readme.md @@ -63,7 +63,9 @@ _The following was run on Windows 11 and Ubuntu Desktop 20.04 environments, with - ESP32 boards are not natively supported by Arduino IDE, so you need to add them manually. - Follow the [instructions](https://github.com/espressif/arduino-esp32) in the official ESP32 repository. +- Install Azure CLI and Azure IoT Module + See steps to install both [here](https://learn.microsoft.com/en-us/azure/iot-hub-device-update/create-update?source=recommendations#prerequisites). ## Add Azure IoT Hub Device to an ADU Deployment Group @@ -220,24 +222,14 @@ Once you are done with the ADU sample, you may remove the added configuration to ### Generate the ADU Update Manifest -Navigate to the `C:\ADU-update` directory in a Powershell prompt. +Open PowerShell. -Clone the ADU toolset. +Navigate to the `C:\ADU-update` directory. -```bash -git clone https://github.com/Azure/iot-hub-device-update -``` - -Generate the update manifest using **powershell**. +Run the following command: ```powershell -Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Import-Module .\iot-hub-device-update\tools\AduCmdlets\AduUpdate.psm1 -$updateId = New-AduUpdateId -Provider "Contoso" -Name "ESP32-Embedded" -Version 1.1 -$compat = New-AduUpdateCompatibility -Properties @{ deviceManufacturer = 'ESPRESSIF'; deviceModel = 'ESP32-Embedded' } -$installStep = New-AduInstallationStep -Handler 'microsoft/swupdate:1'-HandlerProperties @{ installedCriteria = '1.1' } -Files C:\ADU-update\Azure_IoT_Adu_ESP32_1.1.bin -$update = New-AduImportManifest -UpdateId $updateId -Compatibility $compat -InstallationSteps $installStep -$update | Out-File "./$($updateId.provider).$($updateId.name).$($updateId.version).importmanifest.json" -Encoding utf8 +az iot du update init v5 --update-provider Contoso --update-name ESP32-Embedded --update-version 1.1 --compat deviceModel=ESP32-Embedded deviceManufacturer=ESPRESSIF --step handler=microsoft/swupdate:1 properties='{\"installedCriteria\":\"1.1\"}' --file path=./Azure_IoT_Adu_ESP32_1.1.bin > ./Contoso.ESP32-Embedded.1.1.importmanifest.json ``` Verify you have the following files in your ADU-update directory: From af4654be9bfe3d489beaf7e56df9ec6146ecbf9b Mon Sep 17 00:00:00 2001 From: Ewerton Scaboro da Silva Date: Fri, 2 Dec 2022 17:33:13 -0800 Subject: [PATCH 2/7] Add documentation to Update-Library.ps1 --- tools/Update-Library.ps1 | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tools/Update-Library.ps1 b/tools/Update-Library.ps1 index cb945cd2..4765fc7e 100644 --- a/tools/Update-Library.ps1 +++ b/tools/Update-Library.ps1 @@ -1,6 +1,28 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # SPDX-License-Identifier: MIT +<# +.SYNOPSIS + Updates the Azure SDK for C code referenced by this Arduino library. +.DESCRIPTION + Update-Library does: + - copy over the code from azure/azure-sdk-for-c into the flat file structure stored under .\src. + - Change the code from azure/azure-sdk-for-c (copied locally) to reference headers in the .\src directory. + - Update the version of this Arduino library. +.PARAMETER SdkBranch + Commit-ish (e.g., branch or tag) from azure/azure-sdk-for-c to use during the local file update. +.PARAMETER SdkVersion + String with the version information to update in this Arduino library library.properties/paragraph. +.PARAMETER NewLibraryVersion + String with the new version of this Arduino library (updated in library.properties/version). +.EXAMPLE + Update-Library -SdkBranch main -SdkVersion 1.3.2 -NewLibraryVersion 1.0.0 +.EXAMPLE + Update-Library -SdkBranch feature/adu -SdkVersion 1.3.2 -NewLibraryVersion 1.1.0-beta.1 +.EXAMPLE + Update-Library -SdkBranch 1.4.0 -SdkVersion 1.4.0 -NewLibraryVersion 1.1.0 +#> + param( $SdkBranch = $(throw "SdkBranch not provided"), $SdkVersion = $(throw "SdkVersion not provided"), From f5cfadc2c3a53dc1cfb1570097bcb5c1b4b11542 Mon Sep 17 00:00:00 2001 From: Ewerton Scaboro da Silva Date: Fri, 2 Dec 2022 17:38:46 -0800 Subject: [PATCH 3/7] Update to get ADU GA patch --- library.properties | 4 +- src/az_iot_adu_client.c | 8 +- src/az_version.h | 7 +- src/azure_ca.h | 440 ++++++++++++++++++++-------------------- 4 files changed, 229 insertions(+), 230 deletions(-) diff --git a/library.properties b/library.properties index 6f092e39..2855ee15 100644 --- a/library.properties +++ b/library.properties @@ -1,9 +1,9 @@ name=Azure SDK for C -version=1.1.0 +version=1.1.1 author=Microsoft Corporation maintainer=Microsoft Corporation sentence=Azure SDK for C library for Arduino. -paragraph=This is an Arduino port of the Azure SDK for C (1.4.0). It allows you to use your Arduino device with Azure services like Azure IoT Hub and Azure Device Provisioning Service. See README.md for more details. Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information. +paragraph=This is an Arduino port of the Azure SDK for C (1.5.0-beta.1). It allows you to use your Arduino device with Azure services like Azure IoT Hub and Azure Device Provisioning Service. See README.md for more details. Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information. category=Communication url=https://github.com/Azure/azure-sdk-for-c-arduino/releases architectures=* diff --git a/src/az_iot_adu_client.c b/src/az_iot_adu_client.c index cfd2fc6b..d4da183a 100644 --- a/src/az_iot_adu_client.c +++ b/src/az_iot_adu_client.c @@ -12,7 +12,7 @@ /* Define the ADU agent component name. */ #define AZ_IOT_ADU_CLIENT_AGENT_COMPONENT_NAME "deviceUpdate" -#define AZ_IOT_ADU_CLIENT_AGENT_INTERFACE_ID "dtmi:azure:iot:deviceUpdate;1" +#define AZ_IOT_ADU_CLIENT_AGENT_CONTRACT_MODEL_ID "dtmi:azure:iot:deviceUpdateContractModel;2" /* Define the ADU agent property name "agent" and sub property names. */ #define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_AGENT "agent" @@ -20,7 +20,7 @@ #define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_DEVICEPROPERTIES "deviceProperties" #define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_MANUFACTURER "manufacturer" #define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_MODEL "model" -#define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_INTERFACE_ID "interfaceId" +#define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_CONTRACT_MODEL_ID "contractModelId" #define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_ADU_VERSION "aduVer" #define AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_DO_VERSION "doVer" @@ -206,9 +206,9 @@ AZ_NODISCARD az_result az_iot_adu_client_get_agent_state_payload( } _az_RETURN_IF_FAILED(az_json_writer_append_property_name( - ref_json_writer, AZ_SPAN_FROM_STR(AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_INTERFACE_ID))); + ref_json_writer, AZ_SPAN_FROM_STR(AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_CONTRACT_MODEL_ID))); _az_RETURN_IF_FAILED(az_json_writer_append_string( - ref_json_writer, AZ_SPAN_FROM_STR(AZ_IOT_ADU_CLIENT_AGENT_INTERFACE_ID))); + ref_json_writer, AZ_SPAN_FROM_STR(AZ_IOT_ADU_CLIENT_AGENT_CONTRACT_MODEL_ID))); _az_RETURN_IF_FAILED(az_json_writer_append_property_name( ref_json_writer, AZ_SPAN_FROM_STR(AZ_IOT_ADU_CLIENT_AGENT_PROPERTY_NAME_ADU_VERSION))); diff --git a/src/az_version.h b/src/az_version.h index 1041cb95..ae8b248d 100644 --- a/src/az_version.h +++ b/src/az_version.h @@ -17,19 +17,18 @@ /// The version in string format used for telemetry following the `semver.org` standard /// (https://semver.org). -#define AZ_SDK_VERSION_STRING "1.4.0" +#define AZ_SDK_VERSION_STRING "1.5.0-beta.1" /// Major numeric identifier. #define AZ_SDK_VERSION_MAJOR 1 /// Minor numeric identifier. -#define AZ_SDK_VERSION_MINOR 4 +#define AZ_SDK_VERSION_MINOR 5 /// Patch numeric identifier. #define AZ_SDK_VERSION_PATCH 0 /// Optional pre-release identifier. SDK is in a pre-release state when present. -#define AZ_SDK_VERSION_PRERELEASE -#undef AZ_SDK_VERSION_PRERELEASE +#define AZ_SDK_VERSION_PRERELEASE "beta.1" #endif //_az_VERSION_H diff --git a/src/azure_ca.h b/src/azure_ca.h index 6e65d145..a17adc39 100644 --- a/src/azure_ca.h +++ b/src/azure_ca.h @@ -1,220 +1,220 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// SPDX-License-Identifier: MIT - -unsigned char ca_pem[] = { - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, - 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x64, 0x7a, 0x43, 0x43, - 0x41, 0x6c, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x45, - 0x41, 0x67, 0x41, 0x41, 0x75, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, - 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, - 0x41, 0x44, 0x42, 0x61, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, - 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4a, 0x0a, 0x52, 0x54, 0x45, - 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, - 0x4a, 0x51, 0x6d, 0x46, 0x73, 0x64, 0x47, 0x6c, 0x74, 0x62, 0x33, 0x4a, - 0x6c, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, - 0x4c, 0x45, 0x77, 0x70, 0x44, 0x65, 0x57, 0x4a, 0x6c, 0x63, 0x6c, 0x52, - 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, - 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6c, 0x43, 0x59, 0x57, - 0x78, 0x30, 0x61, 0x57, 0x31, 0x76, 0x63, 0x6d, 0x55, 0x67, 0x51, 0x33, - 0x6c, 0x69, 0x5a, 0x58, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, - 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, - 0x41, 0x77, 0x4d, 0x44, 0x55, 0x78, 0x4d, 0x6a, 0x45, 0x34, 0x4e, 0x44, - 0x59, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x0a, 0x44, 0x54, 0x49, 0x31, 0x4d, - 0x44, 0x55, 0x78, 0x4d, 0x6a, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x77, 0x4d, - 0x46, 0x6f, 0x77, 0x57, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, - 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x55, 0x55, 0x78, 0x45, - 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, - 0x55, 0x4a, 0x68, 0x62, 0x48, 0x52, 0x70, 0x62, 0x57, 0x39, 0x79, 0x0a, - 0x5a, 0x54, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, - 0x43, 0x78, 0x4d, 0x4b, 0x51, 0x33, 0x6c, 0x69, 0x5a, 0x58, 0x4a, 0x55, - 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x44, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, - 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x5a, 0x51, 0x6d, 0x46, 0x73, - 0x64, 0x47, 0x6c, 0x74, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x45, 0x4e, 0x35, - 0x59, 0x6d, 0x56, 0x79, 0x0a, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, - 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x44, 0x43, 0x43, 0x41, 0x53, 0x49, - 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, - 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, - 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, - 0x42, 0x41, 0x4b, 0x4d, 0x45, 0x75, 0x79, 0x4b, 0x72, 0x0a, 0x6d, 0x44, - 0x31, 0x58, 0x36, 0x43, 0x5a, 0x79, 0x6d, 0x72, 0x56, 0x35, 0x31, 0x43, - 0x6e, 0x69, 0x34, 0x65, 0x69, 0x56, 0x67, 0x4c, 0x47, 0x77, 0x34, 0x31, - 0x75, 0x4f, 0x4b, 0x79, 0x6d, 0x61, 0x5a, 0x4e, 0x2b, 0x68, 0x58, 0x65, - 0x32, 0x77, 0x43, 0x51, 0x56, 0x74, 0x32, 0x79, 0x67, 0x75, 0x7a, 0x6d, - 0x4b, 0x69, 0x59, 0x76, 0x36, 0x30, 0x69, 0x4e, 0x6f, 0x53, 0x36, 0x7a, - 0x6a, 0x72, 0x0a, 0x49, 0x5a, 0x33, 0x41, 0x51, 0x53, 0x73, 0x42, 0x55, - 0x6e, 0x75, 0x49, 0x64, 0x39, 0x4d, 0x63, 0x6a, 0x38, 0x65, 0x36, 0x75, - 0x59, 0x69, 0x31, 0x61, 0x67, 0x6e, 0x6e, 0x63, 0x2b, 0x67, 0x52, 0x51, - 0x4b, 0x66, 0x52, 0x7a, 0x4d, 0x70, 0x69, 0x6a, 0x53, 0x33, 0x6c, 0x6a, - 0x77, 0x75, 0x6d, 0x55, 0x4e, 0x4b, 0x6f, 0x55, 0x4d, 0x4d, 0x6f, 0x36, - 0x76, 0x57, 0x72, 0x4a, 0x59, 0x65, 0x4b, 0x0a, 0x6d, 0x70, 0x59, 0x63, - 0x71, 0x57, 0x65, 0x34, 0x50, 0x77, 0x7a, 0x56, 0x39, 0x2f, 0x6c, 0x53, - 0x45, 0x79, 0x2f, 0x43, 0x47, 0x39, 0x56, 0x77, 0x63, 0x50, 0x43, 0x50, - 0x77, 0x42, 0x4c, 0x4b, 0x42, 0x73, 0x75, 0x61, 0x34, 0x64, 0x6e, 0x4b, - 0x4d, 0x33, 0x70, 0x33, 0x31, 0x76, 0x6a, 0x73, 0x75, 0x66, 0x46, 0x6f, - 0x52, 0x45, 0x4a, 0x49, 0x45, 0x39, 0x4c, 0x41, 0x77, 0x71, 0x53, 0x75, - 0x0a, 0x58, 0x6d, 0x44, 0x2b, 0x74, 0x71, 0x59, 0x46, 0x2f, 0x4c, 0x54, - 0x64, 0x42, 0x31, 0x6b, 0x43, 0x31, 0x46, 0x6b, 0x59, 0x6d, 0x47, 0x50, - 0x31, 0x70, 0x57, 0x50, 0x67, 0x6b, 0x41, 0x78, 0x39, 0x58, 0x62, 0x49, - 0x47, 0x65, 0x76, 0x4f, 0x46, 0x36, 0x75, 0x76, 0x55, 0x41, 0x36, 0x35, - 0x65, 0x68, 0x44, 0x35, 0x66, 0x2f, 0x78, 0x58, 0x74, 0x61, 0x62, 0x7a, - 0x35, 0x4f, 0x54, 0x5a, 0x79, 0x0a, 0x64, 0x63, 0x39, 0x33, 0x55, 0x6b, - 0x33, 0x7a, 0x79, 0x5a, 0x41, 0x73, 0x75, 0x54, 0x33, 0x6c, 0x79, 0x53, - 0x4e, 0x54, 0x50, 0x78, 0x38, 0x6b, 0x6d, 0x43, 0x46, 0x63, 0x42, 0x35, - 0x6b, 0x70, 0x76, 0x63, 0x59, 0x36, 0x37, 0x4f, 0x64, 0x75, 0x68, 0x6a, - 0x70, 0x72, 0x6c, 0x33, 0x52, 0x6a, 0x4d, 0x37, 0x31, 0x6f, 0x47, 0x44, - 0x48, 0x77, 0x65, 0x49, 0x31, 0x32, 0x76, 0x2f, 0x79, 0x65, 0x0a, 0x6a, - 0x6c, 0x30, 0x71, 0x68, 0x71, 0x64, 0x4e, 0x6b, 0x4e, 0x77, 0x6e, 0x47, - 0x6a, 0x6b, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x46, 0x4d, - 0x45, 0x4d, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, - 0x42, 0x59, 0x45, 0x46, 0x4f, 0x57, 0x64, 0x57, 0x54, 0x43, 0x43, 0x52, - 0x31, 0x6a, 0x4d, 0x72, 0x50, 0x6f, 0x49, 0x56, 0x44, 0x61, 0x47, 0x65, - 0x7a, 0x71, 0x31, 0x0a, 0x42, 0x45, 0x33, 0x77, 0x4d, 0x42, 0x49, 0x47, - 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x49, - 0x4d, 0x41, 0x59, 0x42, 0x41, 0x66, 0x38, 0x43, 0x41, 0x51, 0x4d, 0x77, - 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, - 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x30, 0x47, - 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x0a, 0x44, 0x51, 0x45, - 0x42, 0x42, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x43, - 0x46, 0x44, 0x46, 0x32, 0x4f, 0x35, 0x47, 0x39, 0x52, 0x61, 0x45, 0x49, - 0x46, 0x6f, 0x4e, 0x32, 0x37, 0x54, 0x79, 0x63, 0x6c, 0x68, 0x41, 0x4f, - 0x39, 0x39, 0x32, 0x54, 0x39, 0x4c, 0x64, 0x63, 0x77, 0x34, 0x36, 0x51, - 0x51, 0x46, 0x2b, 0x76, 0x61, 0x4b, 0x53, 0x6d, 0x32, 0x65, 0x54, 0x39, - 0x32, 0x0a, 0x39, 0x68, 0x6b, 0x54, 0x49, 0x37, 0x67, 0x51, 0x43, 0x76, - 0x6c, 0x59, 0x70, 0x4e, 0x52, 0x68, 0x63, 0x4c, 0x30, 0x45, 0x59, 0x57, - 0x6f, 0x53, 0x69, 0x68, 0x66, 0x56, 0x43, 0x72, 0x33, 0x46, 0x76, 0x44, - 0x42, 0x38, 0x31, 0x75, 0x6b, 0x4d, 0x4a, 0x59, 0x32, 0x47, 0x51, 0x45, - 0x2f, 0x73, 0x7a, 0x4b, 0x4e, 0x2b, 0x4f, 0x4d, 0x59, 0x33, 0x45, 0x55, - 0x2f, 0x74, 0x33, 0x57, 0x67, 0x78, 0x0a, 0x6a, 0x6b, 0x7a, 0x53, 0x73, - 0x77, 0x46, 0x30, 0x37, 0x72, 0x35, 0x31, 0x58, 0x67, 0x64, 0x49, 0x47, - 0x6e, 0x39, 0x77, 0x2f, 0x78, 0x5a, 0x63, 0x68, 0x4d, 0x42, 0x35, 0x68, - 0x62, 0x67, 0x46, 0x2f, 0x58, 0x2b, 0x2b, 0x5a, 0x52, 0x47, 0x6a, 0x44, - 0x38, 0x41, 0x43, 0x74, 0x50, 0x68, 0x53, 0x4e, 0x7a, 0x6b, 0x45, 0x31, - 0x61, 0x6b, 0x78, 0x65, 0x68, 0x69, 0x2f, 0x6f, 0x43, 0x72, 0x30, 0x0a, - 0x45, 0x70, 0x6e, 0x33, 0x6f, 0x30, 0x57, 0x43, 0x34, 0x7a, 0x78, 0x65, - 0x39, 0x5a, 0x32, 0x65, 0x74, 0x63, 0x69, 0x65, 0x66, 0x43, 0x37, 0x49, - 0x70, 0x4a, 0x35, 0x4f, 0x43, 0x42, 0x52, 0x4c, 0x62, 0x66, 0x31, 0x77, - 0x62, 0x57, 0x73, 0x61, 0x59, 0x37, 0x31, 0x6b, 0x35, 0x68, 0x2b, 0x33, - 0x7a, 0x76, 0x44, 0x79, 0x6e, 0x79, 0x36, 0x37, 0x47, 0x37, 0x66, 0x79, - 0x55, 0x49, 0x68, 0x7a, 0x0a, 0x6b, 0x73, 0x4c, 0x69, 0x34, 0x78, 0x61, - 0x4e, 0x6d, 0x6a, 0x49, 0x43, 0x71, 0x34, 0x34, 0x59, 0x33, 0x65, 0x6b, - 0x51, 0x45, 0x65, 0x35, 0x2b, 0x4e, 0x61, 0x75, 0x51, 0x72, 0x7a, 0x34, - 0x77, 0x6c, 0x48, 0x72, 0x51, 0x4d, 0x7a, 0x32, 0x6e, 0x5a, 0x51, 0x2f, - 0x31, 0x2f, 0x49, 0x36, 0x65, 0x59, 0x73, 0x39, 0x48, 0x52, 0x43, 0x77, - 0x42, 0x58, 0x62, 0x73, 0x64, 0x74, 0x54, 0x4c, 0x53, 0x0a, 0x52, 0x39, - 0x49, 0x34, 0x4c, 0x74, 0x44, 0x2b, 0x67, 0x64, 0x77, 0x79, 0x61, 0x68, - 0x36, 0x31, 0x37, 0x6a, 0x7a, 0x56, 0x2f, 0x4f, 0x65, 0x42, 0x48, 0x52, - 0x6e, 0x44, 0x4a, 0x45, 0x4c, 0x71, 0x59, 0x7a, 0x6d, 0x70, 0x0a, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, - 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x0a, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, - 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x6a, 0x6a, - 0x43, 0x43, 0x41, 0x6e, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, - 0x49, 0x51, 0x41, 0x7a, 0x72, 0x78, 0x35, 0x71, 0x63, 0x52, 0x71, 0x61, - 0x43, 0x37, 0x4b, 0x47, 0x53, 0x78, 0x48, 0x51, 0x6e, 0x36, 0x35, 0x54, - 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, - 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x68, 0x0a, 0x4d, - 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, - 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, - 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, - 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, - 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, - 0x78, 0x42, 0x33, 0x0a, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, - 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, - 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, - 0x45, 0x78, 0x64, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, - 0x64, 0x43, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, - 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x48, 0x0a, 0x4d, 0x6a, 0x41, - 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x7a, 0x41, 0x34, 0x4d, 0x44, 0x45, - 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, - 0x7a, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x55, 0x78, 0x4d, 0x6a, 0x41, - 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x47, 0x45, 0x78, 0x43, 0x7a, 0x41, - 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, - 0x54, 0x0a, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, - 0x51, 0x4b, 0x45, 0x77, 0x78, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, - 0x56, 0x79, 0x64, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x78, 0x47, 0x54, - 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x45, 0x48, - 0x64, 0x33, 0x64, 0x79, 0x35, 0x6b, 0x61, 0x57, 0x64, 0x70, 0x59, 0x32, - 0x56, 0x79, 0x64, 0x43, 0x35, 0x6a, 0x0a, 0x62, 0x32, 0x30, 0x78, 0x49, - 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, - 0x30, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, - 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, - 0x32, 0x39, 0x30, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x49, 0x49, 0x42, 0x49, - 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x0a, - 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, - 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, - 0x41, 0x51, 0x45, 0x41, 0x75, 0x7a, 0x66, 0x4e, 0x4e, 0x4e, 0x78, 0x37, - 0x61, 0x38, 0x6d, 0x79, 0x61, 0x4a, 0x43, 0x74, 0x53, 0x6e, 0x58, 0x2f, - 0x52, 0x72, 0x6f, 0x68, 0x43, 0x67, 0x69, 0x4e, 0x39, 0x52, 0x6c, 0x55, - 0x79, 0x66, 0x75, 0x49, 0x0a, 0x32, 0x2f, 0x4f, 0x75, 0x38, 0x6a, 0x71, - 0x4a, 0x6b, 0x54, 0x78, 0x36, 0x35, 0x71, 0x73, 0x47, 0x47, 0x6d, 0x76, - 0x50, 0x72, 0x43, 0x33, 0x6f, 0x58, 0x67, 0x6b, 0x6b, 0x52, 0x4c, 0x70, - 0x69, 0x6d, 0x6e, 0x37, 0x57, 0x6f, 0x36, 0x68, 0x2b, 0x34, 0x46, 0x52, - 0x31, 0x49, 0x41, 0x57, 0x73, 0x55, 0x4c, 0x65, 0x63, 0x59, 0x78, 0x70, - 0x73, 0x4d, 0x4e, 0x7a, 0x61, 0x48, 0x78, 0x6d, 0x78, 0x0a, 0x31, 0x78, - 0x37, 0x65, 0x2f, 0x64, 0x66, 0x67, 0x79, 0x35, 0x53, 0x44, 0x4e, 0x36, - 0x37, 0x73, 0x48, 0x30, 0x4e, 0x4f, 0x33, 0x58, 0x73, 0x73, 0x30, 0x72, - 0x30, 0x75, 0x70, 0x53, 0x2f, 0x6b, 0x71, 0x62, 0x69, 0x74, 0x4f, 0x74, - 0x53, 0x5a, 0x70, 0x4c, 0x59, 0x6c, 0x36, 0x5a, 0x74, 0x72, 0x41, 0x47, - 0x43, 0x53, 0x59, 0x50, 0x39, 0x50, 0x49, 0x55, 0x6b, 0x59, 0x39, 0x32, - 0x65, 0x51, 0x0a, 0x71, 0x32, 0x45, 0x47, 0x6e, 0x49, 0x2f, 0x79, 0x75, - 0x75, 0x6d, 0x30, 0x36, 0x5a, 0x49, 0x79, 0x61, 0x37, 0x58, 0x7a, 0x56, - 0x2b, 0x68, 0x64, 0x47, 0x38, 0x32, 0x4d, 0x48, 0x61, 0x75, 0x56, 0x42, - 0x4a, 0x56, 0x4a, 0x38, 0x7a, 0x55, 0x74, 0x6c, 0x75, 0x4e, 0x4a, 0x62, - 0x64, 0x31, 0x33, 0x34, 0x2f, 0x74, 0x4a, 0x53, 0x37, 0x53, 0x73, 0x56, - 0x51, 0x65, 0x70, 0x6a, 0x35, 0x57, 0x7a, 0x0a, 0x74, 0x43, 0x4f, 0x37, - 0x54, 0x47, 0x31, 0x46, 0x38, 0x50, 0x61, 0x70, 0x73, 0x70, 0x55, 0x77, - 0x74, 0x50, 0x31, 0x4d, 0x56, 0x59, 0x77, 0x6e, 0x53, 0x6c, 0x63, 0x55, - 0x66, 0x49, 0x4b, 0x64, 0x7a, 0x58, 0x4f, 0x53, 0x30, 0x78, 0x5a, 0x4b, - 0x42, 0x67, 0x79, 0x4d, 0x55, 0x4e, 0x47, 0x50, 0x48, 0x67, 0x6d, 0x2b, - 0x46, 0x36, 0x48, 0x6d, 0x49, 0x63, 0x72, 0x39, 0x67, 0x2b, 0x55, 0x51, - 0x0a, 0x76, 0x49, 0x4f, 0x6c, 0x43, 0x73, 0x52, 0x6e, 0x4b, 0x50, 0x5a, - 0x7a, 0x46, 0x42, 0x51, 0x39, 0x52, 0x6e, 0x62, 0x44, 0x68, 0x78, 0x53, - 0x4a, 0x49, 0x54, 0x52, 0x4e, 0x72, 0x77, 0x39, 0x46, 0x44, 0x4b, 0x5a, - 0x4a, 0x6f, 0x62, 0x71, 0x37, 0x6e, 0x4d, 0x57, 0x78, 0x4d, 0x34, 0x4d, - 0x70, 0x68, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, - 0x77, 0x51, 0x44, 0x41, 0x50, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, - 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, - 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, - 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, - 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, - 0x51, 0x55, 0x54, 0x69, 0x4a, 0x55, 0x49, 0x42, 0x69, 0x56, 0x0a, 0x35, - 0x75, 0x4e, 0x75, 0x35, 0x67, 0x2f, 0x36, 0x2b, 0x72, 0x6b, 0x53, 0x37, - 0x51, 0x59, 0x58, 0x6a, 0x7a, 0x6b, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, - 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, - 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x47, 0x42, 0x6e, 0x4b, - 0x4a, 0x52, 0x76, 0x44, 0x6b, 0x68, 0x6a, 0x36, 0x7a, 0x48, 0x64, 0x36, - 0x6d, 0x63, 0x59, 0x0a, 0x31, 0x59, 0x6c, 0x39, 0x50, 0x4d, 0x57, 0x4c, - 0x53, 0x6e, 0x2f, 0x70, 0x76, 0x74, 0x73, 0x72, 0x46, 0x39, 0x2b, 0x77, - 0x58, 0x33, 0x4e, 0x33, 0x4b, 0x6a, 0x49, 0x54, 0x4f, 0x59, 0x46, 0x6e, - 0x51, 0x6f, 0x51, 0x6a, 0x38, 0x6b, 0x56, 0x6e, 0x4e, 0x65, 0x79, 0x49, - 0x76, 0x2f, 0x69, 0x50, 0x73, 0x47, 0x45, 0x4d, 0x4e, 0x4b, 0x53, 0x75, - 0x49, 0x45, 0x79, 0x45, 0x78, 0x74, 0x76, 0x34, 0x0a, 0x4e, 0x65, 0x46, - 0x32, 0x32, 0x64, 0x2b, 0x6d, 0x51, 0x72, 0x76, 0x48, 0x52, 0x41, 0x69, - 0x47, 0x66, 0x7a, 0x5a, 0x30, 0x4a, 0x46, 0x72, 0x61, 0x62, 0x41, 0x30, - 0x55, 0x57, 0x54, 0x57, 0x39, 0x38, 0x6b, 0x6e, 0x64, 0x74, 0x68, 0x2f, - 0x4a, 0x73, 0x77, 0x31, 0x48, 0x4b, 0x6a, 0x32, 0x5a, 0x4c, 0x37, 0x74, - 0x63, 0x75, 0x37, 0x58, 0x55, 0x49, 0x4f, 0x47, 0x5a, 0x58, 0x31, 0x4e, - 0x47, 0x0a, 0x46, 0x64, 0x74, 0x6f, 0x6d, 0x2f, 0x44, 0x7a, 0x4d, 0x4e, - 0x55, 0x2b, 0x4d, 0x65, 0x4b, 0x4e, 0x68, 0x4a, 0x37, 0x6a, 0x69, 0x74, - 0x72, 0x61, 0x6c, 0x6a, 0x34, 0x31, 0x45, 0x36, 0x56, 0x66, 0x38, 0x50, - 0x6c, 0x77, 0x55, 0x48, 0x42, 0x48, 0x51, 0x52, 0x46, 0x58, 0x47, 0x55, - 0x37, 0x41, 0x6a, 0x36, 0x34, 0x47, 0x78, 0x4a, 0x55, 0x54, 0x46, 0x79, - 0x38, 0x62, 0x4a, 0x5a, 0x39, 0x31, 0x0a, 0x38, 0x72, 0x47, 0x4f, 0x6d, - 0x61, 0x46, 0x76, 0x45, 0x37, 0x46, 0x42, 0x63, 0x66, 0x36, 0x49, 0x4b, - 0x73, 0x68, 0x50, 0x45, 0x43, 0x42, 0x56, 0x31, 0x2f, 0x4d, 0x55, 0x52, - 0x65, 0x58, 0x67, 0x52, 0x50, 0x54, 0x71, 0x68, 0x35, 0x55, 0x79, 0x6b, - 0x77, 0x37, 0x2b, 0x55, 0x30, 0x62, 0x36, 0x4c, 0x4a, 0x33, 0x2f, 0x69, - 0x79, 0x4b, 0x35, 0x53, 0x39, 0x6b, 0x4a, 0x52, 0x61, 0x54, 0x65, 0x0a, - 0x70, 0x4c, 0x69, 0x61, 0x57, 0x4e, 0x30, 0x62, 0x66, 0x56, 0x4b, 0x66, - 0x6a, 0x6c, 0x6c, 0x44, 0x69, 0x49, 0x47, 0x6b, 0x6e, 0x69, 0x62, 0x56, - 0x62, 0x36, 0x33, 0x64, 0x44, 0x63, 0x59, 0x33, 0x66, 0x65, 0x30, 0x44, - 0x6b, 0x68, 0x76, 0x6c, 0x64, 0x31, 0x39, 0x32, 0x37, 0x6a, 0x79, 0x4e, - 0x78, 0x46, 0x31, 0x57, 0x57, 0x36, 0x4c, 0x5a, 0x5a, 0x6d, 0x36, 0x7a, - 0x4e, 0x54, 0x66, 0x6c, 0x0a, 0x4d, 0x72, 0x59, 0x3d, 0x0a, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, - 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, - 0x00 -}; -unsigned int ca_pem_len = 2557; +// Copyright (c) Microsoft Corporation. All rights reserved. +// SPDX-License-Identifier: MIT + +unsigned char ca_pem[] = { + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, + 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x64, 0x7a, 0x43, 0x43, + 0x41, 0x6c, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x45, + 0x41, 0x67, 0x41, 0x41, 0x75, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, + 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, + 0x41, 0x44, 0x42, 0x61, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, + 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4a, 0x0a, 0x52, 0x54, 0x45, + 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, + 0x4a, 0x51, 0x6d, 0x46, 0x73, 0x64, 0x47, 0x6c, 0x74, 0x62, 0x33, 0x4a, + 0x6c, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, + 0x4c, 0x45, 0x77, 0x70, 0x44, 0x65, 0x57, 0x4a, 0x6c, 0x63, 0x6c, 0x52, + 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, + 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6c, 0x43, 0x59, 0x57, + 0x78, 0x30, 0x61, 0x57, 0x31, 0x76, 0x63, 0x6d, 0x55, 0x67, 0x51, 0x33, + 0x6c, 0x69, 0x5a, 0x58, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, + 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, + 0x41, 0x77, 0x4d, 0x44, 0x55, 0x78, 0x4d, 0x6a, 0x45, 0x34, 0x4e, 0x44, + 0x59, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x0a, 0x44, 0x54, 0x49, 0x31, 0x4d, + 0x44, 0x55, 0x78, 0x4d, 0x6a, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x77, 0x4d, + 0x46, 0x6f, 0x77, 0x57, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, + 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x55, 0x55, 0x78, 0x45, + 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, + 0x55, 0x4a, 0x68, 0x62, 0x48, 0x52, 0x70, 0x62, 0x57, 0x39, 0x79, 0x0a, + 0x5a, 0x54, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, + 0x43, 0x78, 0x4d, 0x4b, 0x51, 0x33, 0x6c, 0x69, 0x5a, 0x58, 0x4a, 0x55, + 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x44, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, + 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x5a, 0x51, 0x6d, 0x46, 0x73, + 0x64, 0x47, 0x6c, 0x74, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x45, 0x4e, 0x35, + 0x59, 0x6d, 0x56, 0x79, 0x0a, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, + 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x44, 0x43, 0x43, 0x41, 0x53, 0x49, + 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, + 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, + 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, + 0x42, 0x41, 0x4b, 0x4d, 0x45, 0x75, 0x79, 0x4b, 0x72, 0x0a, 0x6d, 0x44, + 0x31, 0x58, 0x36, 0x43, 0x5a, 0x79, 0x6d, 0x72, 0x56, 0x35, 0x31, 0x43, + 0x6e, 0x69, 0x34, 0x65, 0x69, 0x56, 0x67, 0x4c, 0x47, 0x77, 0x34, 0x31, + 0x75, 0x4f, 0x4b, 0x79, 0x6d, 0x61, 0x5a, 0x4e, 0x2b, 0x68, 0x58, 0x65, + 0x32, 0x77, 0x43, 0x51, 0x56, 0x74, 0x32, 0x79, 0x67, 0x75, 0x7a, 0x6d, + 0x4b, 0x69, 0x59, 0x76, 0x36, 0x30, 0x69, 0x4e, 0x6f, 0x53, 0x36, 0x7a, + 0x6a, 0x72, 0x0a, 0x49, 0x5a, 0x33, 0x41, 0x51, 0x53, 0x73, 0x42, 0x55, + 0x6e, 0x75, 0x49, 0x64, 0x39, 0x4d, 0x63, 0x6a, 0x38, 0x65, 0x36, 0x75, + 0x59, 0x69, 0x31, 0x61, 0x67, 0x6e, 0x6e, 0x63, 0x2b, 0x67, 0x52, 0x51, + 0x4b, 0x66, 0x52, 0x7a, 0x4d, 0x70, 0x69, 0x6a, 0x53, 0x33, 0x6c, 0x6a, + 0x77, 0x75, 0x6d, 0x55, 0x4e, 0x4b, 0x6f, 0x55, 0x4d, 0x4d, 0x6f, 0x36, + 0x76, 0x57, 0x72, 0x4a, 0x59, 0x65, 0x4b, 0x0a, 0x6d, 0x70, 0x59, 0x63, + 0x71, 0x57, 0x65, 0x34, 0x50, 0x77, 0x7a, 0x56, 0x39, 0x2f, 0x6c, 0x53, + 0x45, 0x79, 0x2f, 0x43, 0x47, 0x39, 0x56, 0x77, 0x63, 0x50, 0x43, 0x50, + 0x77, 0x42, 0x4c, 0x4b, 0x42, 0x73, 0x75, 0x61, 0x34, 0x64, 0x6e, 0x4b, + 0x4d, 0x33, 0x70, 0x33, 0x31, 0x76, 0x6a, 0x73, 0x75, 0x66, 0x46, 0x6f, + 0x52, 0x45, 0x4a, 0x49, 0x45, 0x39, 0x4c, 0x41, 0x77, 0x71, 0x53, 0x75, + 0x0a, 0x58, 0x6d, 0x44, 0x2b, 0x74, 0x71, 0x59, 0x46, 0x2f, 0x4c, 0x54, + 0x64, 0x42, 0x31, 0x6b, 0x43, 0x31, 0x46, 0x6b, 0x59, 0x6d, 0x47, 0x50, + 0x31, 0x70, 0x57, 0x50, 0x67, 0x6b, 0x41, 0x78, 0x39, 0x58, 0x62, 0x49, + 0x47, 0x65, 0x76, 0x4f, 0x46, 0x36, 0x75, 0x76, 0x55, 0x41, 0x36, 0x35, + 0x65, 0x68, 0x44, 0x35, 0x66, 0x2f, 0x78, 0x58, 0x74, 0x61, 0x62, 0x7a, + 0x35, 0x4f, 0x54, 0x5a, 0x79, 0x0a, 0x64, 0x63, 0x39, 0x33, 0x55, 0x6b, + 0x33, 0x7a, 0x79, 0x5a, 0x41, 0x73, 0x75, 0x54, 0x33, 0x6c, 0x79, 0x53, + 0x4e, 0x54, 0x50, 0x78, 0x38, 0x6b, 0x6d, 0x43, 0x46, 0x63, 0x42, 0x35, + 0x6b, 0x70, 0x76, 0x63, 0x59, 0x36, 0x37, 0x4f, 0x64, 0x75, 0x68, 0x6a, + 0x70, 0x72, 0x6c, 0x33, 0x52, 0x6a, 0x4d, 0x37, 0x31, 0x6f, 0x47, 0x44, + 0x48, 0x77, 0x65, 0x49, 0x31, 0x32, 0x76, 0x2f, 0x79, 0x65, 0x0a, 0x6a, + 0x6c, 0x30, 0x71, 0x68, 0x71, 0x64, 0x4e, 0x6b, 0x4e, 0x77, 0x6e, 0x47, + 0x6a, 0x6b, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x46, 0x4d, + 0x45, 0x4d, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, + 0x42, 0x59, 0x45, 0x46, 0x4f, 0x57, 0x64, 0x57, 0x54, 0x43, 0x43, 0x52, + 0x31, 0x6a, 0x4d, 0x72, 0x50, 0x6f, 0x49, 0x56, 0x44, 0x61, 0x47, 0x65, + 0x7a, 0x71, 0x31, 0x0a, 0x42, 0x45, 0x33, 0x77, 0x4d, 0x42, 0x49, 0x47, + 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x49, + 0x4d, 0x41, 0x59, 0x42, 0x41, 0x66, 0x38, 0x43, 0x41, 0x51, 0x4d, 0x77, + 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, + 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x30, 0x47, + 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x0a, 0x44, 0x51, 0x45, + 0x42, 0x42, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x43, + 0x46, 0x44, 0x46, 0x32, 0x4f, 0x35, 0x47, 0x39, 0x52, 0x61, 0x45, 0x49, + 0x46, 0x6f, 0x4e, 0x32, 0x37, 0x54, 0x79, 0x63, 0x6c, 0x68, 0x41, 0x4f, + 0x39, 0x39, 0x32, 0x54, 0x39, 0x4c, 0x64, 0x63, 0x77, 0x34, 0x36, 0x51, + 0x51, 0x46, 0x2b, 0x76, 0x61, 0x4b, 0x53, 0x6d, 0x32, 0x65, 0x54, 0x39, + 0x32, 0x0a, 0x39, 0x68, 0x6b, 0x54, 0x49, 0x37, 0x67, 0x51, 0x43, 0x76, + 0x6c, 0x59, 0x70, 0x4e, 0x52, 0x68, 0x63, 0x4c, 0x30, 0x45, 0x59, 0x57, + 0x6f, 0x53, 0x69, 0x68, 0x66, 0x56, 0x43, 0x72, 0x33, 0x46, 0x76, 0x44, + 0x42, 0x38, 0x31, 0x75, 0x6b, 0x4d, 0x4a, 0x59, 0x32, 0x47, 0x51, 0x45, + 0x2f, 0x73, 0x7a, 0x4b, 0x4e, 0x2b, 0x4f, 0x4d, 0x59, 0x33, 0x45, 0x55, + 0x2f, 0x74, 0x33, 0x57, 0x67, 0x78, 0x0a, 0x6a, 0x6b, 0x7a, 0x53, 0x73, + 0x77, 0x46, 0x30, 0x37, 0x72, 0x35, 0x31, 0x58, 0x67, 0x64, 0x49, 0x47, + 0x6e, 0x39, 0x77, 0x2f, 0x78, 0x5a, 0x63, 0x68, 0x4d, 0x42, 0x35, 0x68, + 0x62, 0x67, 0x46, 0x2f, 0x58, 0x2b, 0x2b, 0x5a, 0x52, 0x47, 0x6a, 0x44, + 0x38, 0x41, 0x43, 0x74, 0x50, 0x68, 0x53, 0x4e, 0x7a, 0x6b, 0x45, 0x31, + 0x61, 0x6b, 0x78, 0x65, 0x68, 0x69, 0x2f, 0x6f, 0x43, 0x72, 0x30, 0x0a, + 0x45, 0x70, 0x6e, 0x33, 0x6f, 0x30, 0x57, 0x43, 0x34, 0x7a, 0x78, 0x65, + 0x39, 0x5a, 0x32, 0x65, 0x74, 0x63, 0x69, 0x65, 0x66, 0x43, 0x37, 0x49, + 0x70, 0x4a, 0x35, 0x4f, 0x43, 0x42, 0x52, 0x4c, 0x62, 0x66, 0x31, 0x77, + 0x62, 0x57, 0x73, 0x61, 0x59, 0x37, 0x31, 0x6b, 0x35, 0x68, 0x2b, 0x33, + 0x7a, 0x76, 0x44, 0x79, 0x6e, 0x79, 0x36, 0x37, 0x47, 0x37, 0x66, 0x79, + 0x55, 0x49, 0x68, 0x7a, 0x0a, 0x6b, 0x73, 0x4c, 0x69, 0x34, 0x78, 0x61, + 0x4e, 0x6d, 0x6a, 0x49, 0x43, 0x71, 0x34, 0x34, 0x59, 0x33, 0x65, 0x6b, + 0x51, 0x45, 0x65, 0x35, 0x2b, 0x4e, 0x61, 0x75, 0x51, 0x72, 0x7a, 0x34, + 0x77, 0x6c, 0x48, 0x72, 0x51, 0x4d, 0x7a, 0x32, 0x6e, 0x5a, 0x51, 0x2f, + 0x31, 0x2f, 0x49, 0x36, 0x65, 0x59, 0x73, 0x39, 0x48, 0x52, 0x43, 0x77, + 0x42, 0x58, 0x62, 0x73, 0x64, 0x74, 0x54, 0x4c, 0x53, 0x0a, 0x52, 0x39, + 0x49, 0x34, 0x4c, 0x74, 0x44, 0x2b, 0x67, 0x64, 0x77, 0x79, 0x61, 0x68, + 0x36, 0x31, 0x37, 0x6a, 0x7a, 0x56, 0x2f, 0x4f, 0x65, 0x42, 0x48, 0x52, + 0x6e, 0x44, 0x4a, 0x45, 0x4c, 0x71, 0x59, 0x7a, 0x6d, 0x70, 0x0a, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, + 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x0a, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, + 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x6a, 0x6a, + 0x43, 0x43, 0x41, 0x6e, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, + 0x49, 0x51, 0x41, 0x7a, 0x72, 0x78, 0x35, 0x71, 0x63, 0x52, 0x71, 0x61, + 0x43, 0x37, 0x4b, 0x47, 0x53, 0x78, 0x48, 0x51, 0x6e, 0x36, 0x35, 0x54, + 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, + 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x68, 0x0a, 0x4d, + 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, + 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, + 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, + 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, + 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, + 0x78, 0x42, 0x33, 0x0a, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, + 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, + 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, + 0x45, 0x78, 0x64, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, + 0x64, 0x43, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, + 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x48, 0x0a, 0x4d, 0x6a, 0x41, + 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x7a, 0x41, 0x34, 0x4d, 0x44, 0x45, + 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, + 0x7a, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x55, 0x78, 0x4d, 0x6a, 0x41, + 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x47, 0x45, 0x78, 0x43, 0x7a, 0x41, + 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, + 0x54, 0x0a, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, + 0x51, 0x4b, 0x45, 0x77, 0x78, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, + 0x56, 0x79, 0x64, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x78, 0x47, 0x54, + 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x45, 0x48, + 0x64, 0x33, 0x64, 0x79, 0x35, 0x6b, 0x61, 0x57, 0x64, 0x70, 0x59, 0x32, + 0x56, 0x79, 0x64, 0x43, 0x35, 0x6a, 0x0a, 0x62, 0x32, 0x30, 0x78, 0x49, + 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, + 0x30, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, + 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, + 0x32, 0x39, 0x30, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x49, 0x49, 0x42, 0x49, + 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x0a, + 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, + 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, + 0x41, 0x51, 0x45, 0x41, 0x75, 0x7a, 0x66, 0x4e, 0x4e, 0x4e, 0x78, 0x37, + 0x61, 0x38, 0x6d, 0x79, 0x61, 0x4a, 0x43, 0x74, 0x53, 0x6e, 0x58, 0x2f, + 0x52, 0x72, 0x6f, 0x68, 0x43, 0x67, 0x69, 0x4e, 0x39, 0x52, 0x6c, 0x55, + 0x79, 0x66, 0x75, 0x49, 0x0a, 0x32, 0x2f, 0x4f, 0x75, 0x38, 0x6a, 0x71, + 0x4a, 0x6b, 0x54, 0x78, 0x36, 0x35, 0x71, 0x73, 0x47, 0x47, 0x6d, 0x76, + 0x50, 0x72, 0x43, 0x33, 0x6f, 0x58, 0x67, 0x6b, 0x6b, 0x52, 0x4c, 0x70, + 0x69, 0x6d, 0x6e, 0x37, 0x57, 0x6f, 0x36, 0x68, 0x2b, 0x34, 0x46, 0x52, + 0x31, 0x49, 0x41, 0x57, 0x73, 0x55, 0x4c, 0x65, 0x63, 0x59, 0x78, 0x70, + 0x73, 0x4d, 0x4e, 0x7a, 0x61, 0x48, 0x78, 0x6d, 0x78, 0x0a, 0x31, 0x78, + 0x37, 0x65, 0x2f, 0x64, 0x66, 0x67, 0x79, 0x35, 0x53, 0x44, 0x4e, 0x36, + 0x37, 0x73, 0x48, 0x30, 0x4e, 0x4f, 0x33, 0x58, 0x73, 0x73, 0x30, 0x72, + 0x30, 0x75, 0x70, 0x53, 0x2f, 0x6b, 0x71, 0x62, 0x69, 0x74, 0x4f, 0x74, + 0x53, 0x5a, 0x70, 0x4c, 0x59, 0x6c, 0x36, 0x5a, 0x74, 0x72, 0x41, 0x47, + 0x43, 0x53, 0x59, 0x50, 0x39, 0x50, 0x49, 0x55, 0x6b, 0x59, 0x39, 0x32, + 0x65, 0x51, 0x0a, 0x71, 0x32, 0x45, 0x47, 0x6e, 0x49, 0x2f, 0x79, 0x75, + 0x75, 0x6d, 0x30, 0x36, 0x5a, 0x49, 0x79, 0x61, 0x37, 0x58, 0x7a, 0x56, + 0x2b, 0x68, 0x64, 0x47, 0x38, 0x32, 0x4d, 0x48, 0x61, 0x75, 0x56, 0x42, + 0x4a, 0x56, 0x4a, 0x38, 0x7a, 0x55, 0x74, 0x6c, 0x75, 0x4e, 0x4a, 0x62, + 0x64, 0x31, 0x33, 0x34, 0x2f, 0x74, 0x4a, 0x53, 0x37, 0x53, 0x73, 0x56, + 0x51, 0x65, 0x70, 0x6a, 0x35, 0x57, 0x7a, 0x0a, 0x74, 0x43, 0x4f, 0x37, + 0x54, 0x47, 0x31, 0x46, 0x38, 0x50, 0x61, 0x70, 0x73, 0x70, 0x55, 0x77, + 0x74, 0x50, 0x31, 0x4d, 0x56, 0x59, 0x77, 0x6e, 0x53, 0x6c, 0x63, 0x55, + 0x66, 0x49, 0x4b, 0x64, 0x7a, 0x58, 0x4f, 0x53, 0x30, 0x78, 0x5a, 0x4b, + 0x42, 0x67, 0x79, 0x4d, 0x55, 0x4e, 0x47, 0x50, 0x48, 0x67, 0x6d, 0x2b, + 0x46, 0x36, 0x48, 0x6d, 0x49, 0x63, 0x72, 0x39, 0x67, 0x2b, 0x55, 0x51, + 0x0a, 0x76, 0x49, 0x4f, 0x6c, 0x43, 0x73, 0x52, 0x6e, 0x4b, 0x50, 0x5a, + 0x7a, 0x46, 0x42, 0x51, 0x39, 0x52, 0x6e, 0x62, 0x44, 0x68, 0x78, 0x53, + 0x4a, 0x49, 0x54, 0x52, 0x4e, 0x72, 0x77, 0x39, 0x46, 0x44, 0x4b, 0x5a, + 0x4a, 0x6f, 0x62, 0x71, 0x37, 0x6e, 0x4d, 0x57, 0x78, 0x4d, 0x34, 0x4d, + 0x70, 0x68, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, + 0x77, 0x51, 0x44, 0x41, 0x50, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, + 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, + 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, + 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, + 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, + 0x51, 0x55, 0x54, 0x69, 0x4a, 0x55, 0x49, 0x42, 0x69, 0x56, 0x0a, 0x35, + 0x75, 0x4e, 0x75, 0x35, 0x67, 0x2f, 0x36, 0x2b, 0x72, 0x6b, 0x53, 0x37, + 0x51, 0x59, 0x58, 0x6a, 0x7a, 0x6b, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, + 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, + 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x47, 0x42, 0x6e, 0x4b, + 0x4a, 0x52, 0x76, 0x44, 0x6b, 0x68, 0x6a, 0x36, 0x7a, 0x48, 0x64, 0x36, + 0x6d, 0x63, 0x59, 0x0a, 0x31, 0x59, 0x6c, 0x39, 0x50, 0x4d, 0x57, 0x4c, + 0x53, 0x6e, 0x2f, 0x70, 0x76, 0x74, 0x73, 0x72, 0x46, 0x39, 0x2b, 0x77, + 0x58, 0x33, 0x4e, 0x33, 0x4b, 0x6a, 0x49, 0x54, 0x4f, 0x59, 0x46, 0x6e, + 0x51, 0x6f, 0x51, 0x6a, 0x38, 0x6b, 0x56, 0x6e, 0x4e, 0x65, 0x79, 0x49, + 0x76, 0x2f, 0x69, 0x50, 0x73, 0x47, 0x45, 0x4d, 0x4e, 0x4b, 0x53, 0x75, + 0x49, 0x45, 0x79, 0x45, 0x78, 0x74, 0x76, 0x34, 0x0a, 0x4e, 0x65, 0x46, + 0x32, 0x32, 0x64, 0x2b, 0x6d, 0x51, 0x72, 0x76, 0x48, 0x52, 0x41, 0x69, + 0x47, 0x66, 0x7a, 0x5a, 0x30, 0x4a, 0x46, 0x72, 0x61, 0x62, 0x41, 0x30, + 0x55, 0x57, 0x54, 0x57, 0x39, 0x38, 0x6b, 0x6e, 0x64, 0x74, 0x68, 0x2f, + 0x4a, 0x73, 0x77, 0x31, 0x48, 0x4b, 0x6a, 0x32, 0x5a, 0x4c, 0x37, 0x74, + 0x63, 0x75, 0x37, 0x58, 0x55, 0x49, 0x4f, 0x47, 0x5a, 0x58, 0x31, 0x4e, + 0x47, 0x0a, 0x46, 0x64, 0x74, 0x6f, 0x6d, 0x2f, 0x44, 0x7a, 0x4d, 0x4e, + 0x55, 0x2b, 0x4d, 0x65, 0x4b, 0x4e, 0x68, 0x4a, 0x37, 0x6a, 0x69, 0x74, + 0x72, 0x61, 0x6c, 0x6a, 0x34, 0x31, 0x45, 0x36, 0x56, 0x66, 0x38, 0x50, + 0x6c, 0x77, 0x55, 0x48, 0x42, 0x48, 0x51, 0x52, 0x46, 0x58, 0x47, 0x55, + 0x37, 0x41, 0x6a, 0x36, 0x34, 0x47, 0x78, 0x4a, 0x55, 0x54, 0x46, 0x79, + 0x38, 0x62, 0x4a, 0x5a, 0x39, 0x31, 0x0a, 0x38, 0x72, 0x47, 0x4f, 0x6d, + 0x61, 0x46, 0x76, 0x45, 0x37, 0x46, 0x42, 0x63, 0x66, 0x36, 0x49, 0x4b, + 0x73, 0x68, 0x50, 0x45, 0x43, 0x42, 0x56, 0x31, 0x2f, 0x4d, 0x55, 0x52, + 0x65, 0x58, 0x67, 0x52, 0x50, 0x54, 0x71, 0x68, 0x35, 0x55, 0x79, 0x6b, + 0x77, 0x37, 0x2b, 0x55, 0x30, 0x62, 0x36, 0x4c, 0x4a, 0x33, 0x2f, 0x69, + 0x79, 0x4b, 0x35, 0x53, 0x39, 0x6b, 0x4a, 0x52, 0x61, 0x54, 0x65, 0x0a, + 0x70, 0x4c, 0x69, 0x61, 0x57, 0x4e, 0x30, 0x62, 0x66, 0x56, 0x4b, 0x66, + 0x6a, 0x6c, 0x6c, 0x44, 0x69, 0x49, 0x47, 0x6b, 0x6e, 0x69, 0x62, 0x56, + 0x62, 0x36, 0x33, 0x64, 0x44, 0x63, 0x59, 0x33, 0x66, 0x65, 0x30, 0x44, + 0x6b, 0x68, 0x76, 0x6c, 0x64, 0x31, 0x39, 0x32, 0x37, 0x6a, 0x79, 0x4e, + 0x78, 0x46, 0x31, 0x57, 0x57, 0x36, 0x4c, 0x5a, 0x5a, 0x6d, 0x36, 0x7a, + 0x4e, 0x54, 0x66, 0x6c, 0x0a, 0x4d, 0x72, 0x59, 0x3d, 0x0a, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, + 0x00 +}; +unsigned int ca_pem_len = 2557; From abe5bdc5bd2f745de88647598ad945ca11992f0d Mon Sep 17 00:00:00 2001 From: Ewerton Scaboro da Silva Date: Sat, 3 Dec 2022 21:36:49 -0800 Subject: [PATCH 4/7] Update pnp model id in ADU sample --- examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino b/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino index c03218f2..6b0f6fa5 100644 --- a/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino +++ b/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino @@ -63,7 +63,7 @@ #define SAMPLE_MQTT_PAYLOAD_LENGTH 1024 // ADU Values -#define ADU_PPV_DTMI "dtmi:azure:iot:deviceUpdateContractModel;1" +#define ADU_PPV_DTMI "dtmi:azure:iot:deviceUpdateContractModel;2" #define ADU_DEVICE_SHA_SIZE 32 #define ADU_SHA_PARTITION_READ_BUFFER_SIZE 32 #define HTTP_DOWNLOAD_CHUNK 4096 From 3fb00f15c856d6f08ece38c7ce7a7bd900e25939 Mon Sep 17 00:00:00 2001 From: Ewerton Scaboro da Silva Date: Sat, 3 Dec 2022 22:09:17 -0800 Subject: [PATCH 5/7] Update ADU sample documentation to reference correct arduino library version --- examples/Azure_IoT_Adu_ESP32/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Azure_IoT_Adu_ESP32/readme.md b/examples/Azure_IoT_Adu_ESP32/readme.md index 2da64ed5..14a78de2 100644 --- a/examples/Azure_IoT_Adu_ESP32/readme.md +++ b/examples/Azure_IoT_Adu_ESP32/readme.md @@ -90,7 +90,7 @@ Viewing the device twin on the portal, the "tag" section should look similar to - On the Arduino IDE, go to menu `Sketch`, `Include Library`, `Manage Libraries...`. - Search for and install `azure-sdk-for-c`. - - **Make sure to install the latest `1.1.0-beta.*` to use the preview version of the Embedded C SDK.** + - **Make sure to install version `1.1.0` or later to use the new Azure Device Update client of the Embedded C SDK.** 1. Open the ESPRESSIF ESP32 sample. From ea9758b9ad1864e778dc05484d4970d6139002d4 Mon Sep 17 00:00:00 2001 From: Ewerton Scaboro da Silva Date: Mon, 5 Dec 2022 09:50:52 -0800 Subject: [PATCH 6/7] [ACR] use AZ_IOT_ADU_CLIENT_AGENT_MODEL_ID --- examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino b/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino index 6b0f6fa5..ca25ac06 100644 --- a/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino +++ b/examples/Azure_IoT_Adu_ESP32/Azure_IoT_Adu_ESP32.ino @@ -63,7 +63,7 @@ #define SAMPLE_MQTT_PAYLOAD_LENGTH 1024 // ADU Values -#define ADU_PPV_DTMI "dtmi:azure:iot:deviceUpdateContractModel;2" +#define ADU_PPV_DTMI AZ_IOT_ADU_CLIENT_AGENT_MODEL_ID #define ADU_DEVICE_SHA_SIZE 32 #define ADU_SHA_PARTITION_READ_BUFFER_SIZE 32 #define HTTP_DOWNLOAD_CHUNK 4096 From da62d6af9b888b4c10fb26ac13632c6753a941ec Mon Sep 17 00:00:00 2001 From: Ewerton Scaboro da Silva Date: Mon, 5 Dec 2022 09:56:24 -0800 Subject: [PATCH 7/7] Update readme.md to use non-localized http link. Co-authored-by: Valerie Avva Lim <54871851+vaavva@users.noreply.github.com> --- examples/Azure_IoT_Adu_ESP32/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Azure_IoT_Adu_ESP32/readme.md b/examples/Azure_IoT_Adu_ESP32/readme.md index 14a78de2..8521bfc0 100644 --- a/examples/Azure_IoT_Adu_ESP32/readme.md +++ b/examples/Azure_IoT_Adu_ESP32/readme.md @@ -65,7 +65,7 @@ _The following was run on Windows 11 and Ubuntu Desktop 20.04 environments, with - Follow the [instructions](https://github.com/espressif/arduino-esp32) in the official ESP32 repository. - Install Azure CLI and Azure IoT Module - See steps to install both [here](https://learn.microsoft.com/en-us/azure/iot-hub-device-update/create-update?source=recommendations#prerequisites). + See steps to install both [here](https://learn.microsoft.com/azure/iot-hub-device-update/create-update?source=recommendations#prerequisites). ## Add Azure IoT Hub Device to an ADU Deployment Group