# Qualcomm Linux software components

This section covers key software components like initialization scripts, debugging tools,
systemd-boot, partitioning tools, and support for containers and Kubernetes.
It also describes features, such as logging and secondary virtual machines.

## System initscripts

`meta-qcom-hwe` added the system initscripts to the image as follows:

| System initscripts | Description |
| --- | --- |
| `var-persist.mount` | Mounts the `/dev/disk/by-partlabel/persist` disk partition<br>to `/var/persist`. |
| `android-tools-adbd.service` | Provides the adbd daemon on the device. |
| `logrotate.service` | Archives old logs.<br><br><br>Modify the `rsyslog.logrotate` configuration file in Qualcomm<br>Linux to manage on-device logs. The modified `rsyslog.logrotate` file is<br>in the `meta-qcom-hwe/dynamic-layers/openembedded-layer/recipes-devtools/rsyslog/rsyslog/rsyslog.logrotate`<br>directory. This file overrides the default configuration file provided by<br>`meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate`. |
| `pd-mapper.service` | Configures and manages protection domains.<br>`pd-mapper_git.bbappend` in the Qualcomm Linux BSP layer updates the `pd-mapper.service.in` file<br>to run the service as a system user instead of as the root user.<br><br><br>do_install:prepend() {<br>        # convert the service from root user to system user<br>        sed -i "/ExecStart=/i\User=system\nGroup=system" pd-mapper.service.in<br>    }<br>    Copy to clipboard |
| `property-vault.service` | Provides the `property_get` and `property_set` functionalities.<br>For more information about this service,<br>see [Properties](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html#properties-section). |
| `persist-property-vault.service` | Runs `set-persist-prop.sh`, which sets the<br>`le.persistprop.enable` flag to true. This property allows use<br>of persist properties, which are stored in the filesystem and persist<br>across reboots. |
| `resize-partition@.service` | Resizes the file system at bootup time according to<br>the size of the partition.<br><br><br>ExecStart=/bin/sh -c "/sbin/e2fsck -n /dev/disk/by-partlabel/%i; if [ $? -gt 1 ]; then /sbin/mkfs.ext4 /dev/disk/by-partlabel/%i; fi; /sbin/resize2fs /dev/disk/by-partlabel/%i"<br>    Copy to clipboard |
| `rsyslog.service` | Redirects logs according to a specified configuration. |
| `sys-kernel-debug.mount` | Mask the `sys-kernel-debug.mount` unit when building the `perf` variant.<br>This conditional masking of this systemd unit is done in `do_install:append:qcom` task<br>of `meta-qcom-hwe/recipes-core/systemd/systemd_%.bbappend`. |

## Debug tools

The `packagegroup-core-tools-debug` defined in the `<workspace>/layers/poky/meta`
directory adds debug tools as part of `rootfs`.
The `<workspace>/layers/meta-qcom-hwe/recipes-devtools` contains the appended package group recipe as
`packagegroup-core-tools-debug.bbappend`. This append file adds
`ltrace`, `perf`, `sysstat`, and `valgrind` tools to this package group.
For more information, see [Debug Linux user
space issues](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-12/using_open_source_debug_tools.html).

## Configure and secure boot with systemd-boot and UKI

The systemd-boot unified extensible firmware interface (UEFI) boot manager provides options to control the boot flow and loads the user-selected boot loader.
The configuration files, kernel images, initrd images, and other EFI images must reside on the EFI partition.

To run the Qualcomm Linux kernel directly as EFI images, build them with `CONFIG_EFI_STUB`. The systemd-boot supports two configurations:

> 
> 
> - Type1:
> 
> 
>     The Type1 configuration uses boot loader specification (BLS) description files. You can find these files in the `/loader/entries/` directory on the EFI.
> - Type2:
> 
> 
>     The Type2 configuration uses unified kernel images (UKI). These images combine the kernel, initrd, and kernel command-line into a single EFI executable.
> Type2 offers better security because the UKI contains all the necessary information for the device to boot. Signing a UKI image secures all included entities.
> If UEFI secure boot is enabled, the system only loads signed images, making signing a requirement.

For more details, see [systemd-boot](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html).

Note

To use a secure boot enabled device, signing is required.

- **UKI**

    UKI is a combination of a UEFI boot stub program, a Qualcomm Linux kernel
image, an initrd, and other resources in a single UEFI portable
executable (PE) file. The UEFI boot stub looks for various resources
for the kernel invocation inside the UEFI PE binary. This allows
combining various resources inside a single UKI image,
which may then be signed using sbsign.
Qualcomm Linux uses sbsign to sign PE files, while non-PE files like DTB are signed using OpenSSL.

    For more details about UKI, see
[unified_kernel_image](https://uapi-group.org/specifications/specs/unified_kernel_image/).
The following table shows the `uki.efi` content:

    | Components of uki.efi file | Contents |
    | --- | --- |
    | Initrd = Init ramdisk | `initramfs-ostree-image-qcs6490-rb3gen2-vision-kit.cpio.gz` |
    | Linux = Kernel Image | `Image` (as systemd-boot expects uncompressed kernel) |
    | Uname = Kernel Release | `6.6.52` |
    | Efi-arch = Architecture | `aa64` |
    | Stub = System-boot efi stub | `linuxx64.efi.stub` |
    | OS-release = OS-release | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">ID</span> <span class="pre">=</span> <span class="pre">qcom-wayland</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">Name</span> <span class="pre">=</span> <span class="pre">“QCOM</span> <span class="pre">Reference</span> <span class="pre">Distro</span> <span class="pre">with</span> <span class="pre">Wayland”</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">VERSION</span> <span class="pre">=</span> <span class="pre">“1.0”</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">VERSION_ID</span> <span class="pre">=</span> <span class="pre">1.0</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">PRETTY_NAME</span> <span class="pre">=</span> <span class="pre">“QCOM</span> <span class="pre">Reference</span> <span class="pre">Distro</span> <span class="pre">with</span> <span class="pre">Wayland</span> <span class="pre">1.0”</span></code></p></li><br></ul> |

    **Image recipes**

    `meta-qcom-hwe/recipes-kernel/images` contains the following recipes:

    - `linux-qcom-uki.bb` generates `uki.efi`.
    - `esp-qcom-image.bb` generates a VFAT image, `efi.bin`, which contains `uki.efi` and `systemd-boot`.

    The `meta-qcom-distro/classes/image-qcom-deploy.bbclass` invokes the `esp-qcom-image`.

- **EFI image**

    The EFI image, `efi.bin`, is a VFAT file system image stored in the EFI partition of the flash.
This VFAT file system contains the images necessary for the UEFI to load and transfer execution control to systemd-boot.
To transfer execution control to the systemd-boot manager, UEFI mounts `efi.bin`, loads `bootaa64.efi`,
and executes it. The systemd-boot manager parses the `loader.conf` and loads the kernel image, and transfers the control to it.

    For more information about the structure of EFI, see [EFI system
partition](https://wiki.archlinux.org/title/EFI_system_partition).

    Following is the sample structure of `efi.bin` from Qualcomm Linux.
It contains systemd-boot `bootaa64.efi` and Qualcomm Linux kernel `vmlinuz-<version>`
under `/ostree/poky-<sha256-sum>` directory.

> 
> 
> ![../../_images/efi-bin-ostree.png](data:image/png;base64,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)
> 
> **efi.bin file generated with OSTree support**
- **Signing**

    Secure boot is a feature in the UEFI standard, but it’s not enabled by default in Qualcomm Linux.
When enabled, secure boot adds a layer of protection to the preboot process by maintaining a cryptographically
signed list of binaries that are run at device boot-up if successfully authenticated. This ensures that the device’s
boot firmware and Linux OS boot components, such as the boot manager, kernel, and initramfs, haven’t been tampered with.

    UEFI secure boot uses a digital signature to validate the
authenticity and integrity of the binary code that it loads. The UEFI secure
variables store all the keys. Achieving UEFI secure boot involves using
the platform key (PK), key exchange key (KEK), database (DB),
and forbidden signatures database (DBX).

    Using secure boot requires the keys PK, KEK, and DB. While
multiple KEK, DB, and DBX are allowed, only one PK is allowed.

    Enabling UEFI secure boot requires registering the PK in the system.
It’s advised to provision PK at the last step of the secure boot
enabling process. For more information about how Qualcomm has implemented
the UEFI secure boot feature, see [Secure
boot](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-11/secure-boot.html).

    **Host tool signing\_tool.py to sign Linux OS images generated by Qualcomm Linux builds**

    Enabling UEFI secure boot requires signing the EFI and DTB images.
Use the `signing_tool.py` host signing tool, to streamline this process.
This command-line Python script runs on a Linux host computer (Ubuntu 20.04 or later versions).
It automates the signing of EFI and DTB images in two separate operations.
The tool also supports the feature to combine the DTB files.

    The host signing tool is available for download on [GitHub](https://github.com/quic/host-signing-tool).

    **Host signing tool overview**

    The host signing tool runs on a Linux machine with Python3 installed.
It can sign either the EFI image or the DTB image in a single
operation. To sign both the EFI and DTB images, you must invoke
the tool twice with different inputs.

![../../_images/host_tool_design_wbg.png](data:image/png;base64,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X3XrB8Ub8WSgX33bKl7xP0IIpJ/xeGoN5+dhtJTmcM+jWXmTvZ/x/DmrVtvuqax7/Ojj2febSfUKW7OJJkufN1msWnBFzQfcqyhFJYz2KAtaNR/Qbi7Jh3cUtGvegW2e9N4AsGyeGDWQps1zVD83o6W5vfHfxn/PXGIRhz1tNRDhpD0NWRbMFu1gNhbafC4JKpSFyB7heAb7wmnOgs4YWKiRzhfePwYe9zQIOilLzyl7lOOfW1cojwvZ5CRL4QCPdHyBspSecvaFHODRjicYhW0Gj3h8AWxQOYcJ8KjHvR5B0rl67OPwJKfD458od+O/jf+ebLRWvBysG+99cn1aNz75vJ7u7vO7Wiu+vJx+XpfJ15Vv4yckxtu60tRj8emEcXivJ01bWXxCYRT1/RYdHzd7oU8pDLSGDCg+p5CxjmyKzypC68jx3UvKWvQb/z0Dpl5OCvRHbyu9/uiN2n81LXR71rRT7u7dt18njK27e9UPf/SH1wrfDH/0zWZy96pFv4w4lO7u0/xn363w5fxH3/niRr9QGNuFde55wOLXEWmz3jVfsPiFQqTndVrb6vIGi18qBG1/3vypVwvdMV/dq4Upf2z+0J9NwuIXCxl/7rq7e1ezwhdHd/c9f/AWv1yEzLA/csabu9/SKkc/uXsN9qeu+B0iQvEnrqxjQqs7+87dn1j8LVybP/MltxHFqi720//138Z/G/9t/Lfx38Z/G/9t/Lfx38Z/G/8dIEjij6zuH9C/4L87MkROC8fEKr/v3L3mX7LpL45A9wVOw9vdb+24wqd+cvft+K84gf21EWl3fP4tgavO3bvqvcpf3d3n97/g6v0YsL80Im0mP3i97rG/M0btX7JVgf7GiOL9NeM77O/McP2ieYDW6vSXpv2y4f/675lSDGt2RfVF88Tir4weXzPl4e9MiPb9FTM9ZfFXJozhVE7dF+t7J/SXJgwNry/WZgTF3xq61mEz/NYNgXzQKg/ScLKiG/89LRiyR23tWi5srClez+OLV4eLszuI2VdjuDhrVzO2s4t7d2L2i7NXcFW3eXEWt9+z8RqHxphdMT7zTABYTVAgcQEAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PgA=)

    **Figure : Linux machine with OpenSSL and sbsign**

    The host tool expects unsigned EFI or DTB files, along with
certificates and keys, as input. After invoking, the tool unpacks the
unsigned image, signs the available items using the provided key and
certificate, and then repacks the images, replacing the unsigned
version with the signed one.

    To combine DTB files, you must follow a different process
than the signing process. Use the tool to either combine a new DTB file
with a pre-existing `dtb.bin` or create a new concatenated `dtb.bin`
file from a list of available DTB files.

    **Working of host signing tool**

    - **Prerequisites to run the tool**

        To run this tool, install the following on the Linux host computer:

        - OpenSSL, sbsign, and mtools utilities
        - Python3
        - pip, subprocess, shlex, socket, glob, and shutil Python modules
    - **Host signing tool configuration**

        You must configure the host signing tool before starting the
operation.

        - `config.ini` **file**

            The host tool requires providing the necessary information in a `config.ini` configuration file. The tool reads this file and
signs the image accordingly. The following code snippet shows the variables in the configuration file:

[common]
                # Section - 1: Common Selection
                # Select operation: 1. sign_image or 2. combine_dtb
                operation = sign_image
                # This option is useful for both operations(sign_image & combine_dtb). Possible values for file_path are 1. remote or 2. local
                file_path = local
                # This option is required for both operations(sign_image & combine_dtb) if file_path == remote
                local_machine_private_key_path = /usr2/<user_name_for_machine>/.ssh/id_rsa
                
                # Section - 2: operation == sign_image related common selection
                # Possible values for image_type are 1. efi or 2. dtb
                image_type = efi
                # This option is required if operation == sign_image & image_type == efi
                loader_conf_timeout = 20
                
                # Section - 3: operation == combine_dtb related common selection
                # Possible values for combine_dtb_type are 1. combine_with_old_dtb, 2. combine_without_old_dtb
                combine_dtb_type = combine_with_old_dtb
                
                # Below options are required to fetch file from remote linux machine in the same network(i.e. if file_path == remote)
                
                # This option is useful if operation == sign_image & image_type == efi
                [efi_config]
                efi_remote_hostname = <remotemachine_ip_or_hostname_where_efi.bin_available>
                efi_remote_username = <username_on_remote_machine_where_efi.bin_available>
                efi_remote_filepath = <full_path_of_efi.bin_file_on_remotemachine>
                
                # This option is useful if operation == sign_image. Both image_type requires this option
                [keys_config]
                keys_remote_hostname = <remotemachine_ip_or_hostname_where_keys_available>
                keys_remote_username = <username_on_remote_machine_where_keys_available>
                keys_remote_filepath = <full_path_of_keys_directory_on_remotemachine>
                
                # This option is useful if operation == sign_image & image_type == dtb
                [dtb_config]
                dtb_remote_hostname = <remotemachine_ip_or_hostname_where_dtb_available>
                dtb_remote_username = <username_on_remote_machine_where_dtb_available>
                dtb_remote_filepath = <full_path_of_dtb_on_remotemachine>
                
                # This option is useful if operation == combine_dtb.
                [combine_dtb_config]
                combine_dtb_remote_hostname = <remotemachine_ip_or_hostname_where_combined-dtb.dtb_available>
                combine_dtb_remote_username = <username_on_remote_machine_where_combined-dtb.dtb_available>
                combine_dtb_remote_filepath = <full_path_of_combined-dtb.dtb_on_remotemachine>
                Copy to clipboard

Table : Variables in config.ini file

            | Variable in config.ini | Values | Description |
            | --- | --- | --- |
            | `operation` | `sign_image/combine_dtb` | Use this configuration to select either signing the image or combining DTB files. |
            | `image_type` | `efi/dtb` | If `operation == sign_image`, use this configuration to select `efi` or `dtb` to sign separately. |
            | `combine_dtb_type` | `combine_with_old_dtb/combine_without_old_dtb` | If `operation == combine_dtb`, use this configuration to select the type of combine DTB operation you want to perform.<br><ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">combine_with_old_dtb</span></code>: combine with DTB from old <code class="docutils literal notranslate"><span class="pre">dtb.bin</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">combine_without_old_dtb</span></code>: combine a set of DTB files</p></li><br></ul> |
            | `file_path` | `local/remote` | <ul class="simple"><br><li><p>local: Keys and efi.bin/dtb.bin are present in the same path as the script.</p></li><br><li><p>remote: Copy efi.bin/dtb.bin and the keys from a remote Linux machine to the current path.</p></li><br></ul> |
            | `local_machine_private_key_path` | `<path of id_rsa file in local machine>` | This file establishes an SSH connection with a remote machine if `file_path = remote`. |
            | `loader_conf_timeout` | `<timeout in seconds>` | The systemd-boot wait time to let you choose to authenticate the binaries.<br>This option is required to sign `efi.bin`. |
            | `efi/keys/dtb/combine-dtb_remote_hostname` | `<ip or hostname of the remote Linux machine>` | If `file_path = remote`, then the host tool selects the host name of<br>the remote machine to copy the `efi/keys/dtb/combine-dtb` file from the remote machine using SCP. |
            | `efi/keys/dtb/combine-dtb_remote_username` | `<username_on_remote_machine>` | If `file_path = remote`, then the host tool selects the user<br>name of the remote machine to copy the `efi/keys/dtb/combine-dtb` file from<br>the remote machine using SCP, provided the username is created<br>on the remote machine. |
            | `efi/keys/dtb/combine-dtb_remote_filepath` | `<full_path_of_file_on_remote_machine>` | If `file_path = remote`, then the host tool selects the path of<br>a `efi/key/dtb/combine-dtb` file on the remote machine to copy that file from<br>the remote machine using SCP. |
        - **Configure using config.ini file**

            1. Operation selection: Set the `operation` variable to specify which operation must be performed. The options are either `sign_image` or `combine_dtb`.
            2. Image selection: If you select `operation == sign_image`, specify which image to sign by setting the `image_type` variable. The options are either `efi` or `dtb`.
            3. File location: Indicate the location of the unsigned EFI/DTB image, keys, and certificates using the `file_path` variable.

                If you select `local` in the configuration file, copy the EFI/DTB image, keys, and certificate files manually to the local working directory.

                1. Create an `unsigned_binaries` directory in the same path as the script, and then copy the `efi.bin`/ `dtb.bin` image into that directory.
                2. Create a `keys` directory in the same path as the script and then copy the `db.auth`, `db.crt`, `db.key`, `KEK.auth`, and `PK.auth` files into that directory.

                If you want the script to copy the required files automatically from a remote Linux machine on the same network, select `remote` in the configuration file.

                In the configuration file, provide information for the following variables:

> 
> 
> - `local_machine_private_key_path` (mandatory)
>                 - `[efi_config]` section (if `operation` is `sign_image` and if `image_type` is `efi`)
>                 - `[keys_config]` section (if `operation` is `sign_image`)
>                 - `[dtb_config]` section (if `operation` is `sign_image` and if `image_type` is `dtb`)
>                 - `[combine_dtb_config]` section (if `operation` is `combine_dtb`)
> 
> 
> 
> Note
> 
> 
> The script supports copying from another Linux machine over SCP within the same network.
            4. Loader configuration timeout: When `image_type` is set to efi in the configuration file, update the `loader_conf_timeout` variable.
            5. Combining DTB selection: When you set `operation == combine_dtb`, specify the type of DTB combination operation by setting the `combine_dtb_type` variable. The options are either `combine_with_old_dtb` or `combine_without_old_dtb`.

                1. If you select `combine_dtb_type == combine_with_old_dtb`, create an `unsigned_binaries` directory in the same path as the script and copy the `dtb.bin` image to that directory.
                2. For both options, create a `dtb_files` directory in the same path as the script and copy all the DTB files that must be combined into that directory (either with the old combined DTB from `dtb.bin` or with each other only).
            6. Handling missing configuration: If you missed any configuration information, the script runs and prompts you for the missing details through the command line.
        - **Run host signing tool**

            1. Run the host tool: After completing the code build process and obtaining the unsigned `efi.bin` and `dtb.bin` images, run the host signing tool.
            2. Prepare a host computer: Store the host signing tool files (`signing_tool.py` and `config.ini`) on a Linux machine. Ensure that both the files are in the same working directory.
            3. Configure the tool: Set up the host signing tool according to the configuration instructions.
            4. Run the tool: Run the following command to launch the host tool from the command line: `$python3 signing_tool.py`
            5. Interactive process: The host signing tool displays your selections and operational commands on the screen. It also displays errors in the command line.
            6. Signed images: After the tool completes its process, it creates a directory called `signed_binaries` in the same working directory. The signed `efi.bin` or `dtb.bin` image is stored in the directory. The tool deletes other user-created directories after signing.
            7. Repeat for both images: Follow this process twice, once for `efi.bin` and once for `dtb.bin`. After each signing operation, delete the `signed_binaries` directory before starting a new operation.
    - **Host signing tool workflow**

> 
> 
> The following figure shows the workflow of the host signing tool:
> 
> ![../../_images/host_tool_workflow.png](data:image/png;base64,UklGRspCAABXRUJQVlA4WAoAAAAEAAAA/QEAVwIAVlA4TDJBAAAv/cGVAFWL4rZtHMv7b51y/d4RMQHam3zd7I5u7mXLgTXEdayQQD9LHaADkhsK9Mrq4ZYlL5SvrTpoGEAQnCZQiZlhVz2VKHsRaJ2nnYk3/n9HkuSseL4cOHGAw7QTIa4IDpgw4oonrgSsuOKIKx4nVdlVmS9fvfdy2TE7OPOgtSnQPv3pGwkOlA9HQK1oIf1oE+BB23BM/EWcEQlmw9NAx4LWG6zcGE+6wGEFJ2PFUTuWpA8QKwLlwEngaD9A0g+wMeK4GzzVZ0KD2TH9j4AdXeBpBTixYpkJpZeQPoCjY2O8ACkbTj03GtSLjo4lfzc6GLdt5IiXr/9K9zlhd8G2bSRHfL+46MPtv8rz6D8sSJKsRDnLOaB7CuMTEf61xv93O9IkvbBhw4YDBw4cOHDgwIEDBw5s2LBgw4YNBzYc2HDgsK29LxzYcNhGSM85qap+o6ozYpjkhohAWrE3RZ+yYi8iT0TzNkA+lAHpQ3mSEZ12JMiMGC8ekAJlwcNOAh03RPTsLX1IIjuSCMgPgWPAG2OA1oYyQD7UXuA6sCj3YkeCVESNFQky9yIjnr3kceMU0N8NEYHXioo3QnYUOeDYIZIWlAEyYNjL3/ahQO2tjEjw1l5suCVIuXES5PEi4xD93FCjbds2HPP/tWrhwW3bSJJEb4W6r/OP9Mz+S5RkK2ilQV1wNYyPG00E8wF26v+XI8uhawgTvtDLbKHDF77whRNOWAAMpAE4km71Mvs9xjJQKqrjvHJvl0cFQiIWs+KQl0vkz6K8YZhsKhEDQXhcGkWHhaRgeLk4vBQPL2Lx83IRmIGFQl5wuBLRmKhSQ+ncW/+JuELxEIGm0M1gGIjFP6lHZMTJSh6LOY5E4x1Fbts2Avr/f/aYdKrjwEaSpLbRCbHShHjovwO3bRxJs9nDLKbogD5lH/BQEn18OO9JsvdRdHC/cAUJOqbdlZdHXBZxqT85B3NVdnFFqPlk6Cfn0/6I635HV4j68jClh2oJOmiyW086uVzwhO5Hog6acNbB/XycAQ8gUQeQMZYCnxTwCdv9Pk0nU27mSN6mV7cC/yBbbfGAE2C0MIfqIk0fZBqtycmITG0xavqAuXoQqGpWXNR1QzBVSBvmyyoUF8wVrLGiYc3uY7qoLdw1sUm53ESah5RxfeZhJgGZcTQuz5Dy7jIJGNnvSwlIib6UGYaZBKkMj0kCcjmGBAiQ8pb5+n/XEUAE3BXjItM6IAJzFpJstHwnX9fvCOmQZFWMFTDKcvmFBL38JX6zCJAA8BfcN/QL+q6j1ncLq9/U9m8VIZ2kxHcVM68EyDTqN/IRv11kcACkSQXwfksh5DIM/u18hSYnurs3kQv6dv26fqe+1+9X9HNwPst2CEREwO+64S+guugTkSXTfD3Rb0sRQUoQkQUpLaaC79U38lViDrkMY0t/q3irg0rFITjl0Bt+jcp06oUgp1IpU9ip/XziqUudSty1JEtccQhY9SoTECyKKzG53q8p+pac5Rq5uv2rEuKX5OXq9nf0VQkhflN3okvq5S/mI8TPqzSJhBDfKVXQQv+GXKRoRL+CENsx0bfyNQnxy+oQLrWIfgP8QoQQI4JcnvHrEcN2QYx+r6euW5Nfij3Dsf6OC2s/p61vy645pdrVS/TEvJQVOxxQx2I7+GbEryUXRL/M7E4+4my1Jy4n2ajpXehrb9m2+DX0b7tznvxKcvWj8vf85olSx7oUbnXOX4yO4hfDWo7/omr8C6oduBbU10vEv9vltm/oIAmVKoj4Wrzz+Kyye6w7fNnGhQ1yk3walU+6KU6VU08SbVfOb2r80c/zFSWbiaghxWXkEH8+nG7PCRSLHfxqtK41STV0hZZvHIXUNcFNUQlrdv7wF2FQjn+VvbjI3hGLR3x7GD7foy6viKLiK8dnYry7bKSaqFxDxzMx/ovP+42vpXK+qOXUmY/3L5zQkkae8Iuv9p/k+L6Os2f0GaLBi0vdUcsydqJvut1BlMKu5vYj77wuBuXjqOLZ/uu50JVcPqo7JZ1kB7pAfaiRSPH5No+T5PBAZNVYDEdnopkbi+rM7S+/dqP2IjgfLfBnFobZ88bi0epkaJf+/aLCg5uj4cZNSZUWdkm1z95sNhxI8Dt18oho/quAx3v21TEIvZr2myBnbh/TsotbCXSxxHqXXKYCIpeIqYCVcMmFNNGUrIoFy1BBl1xALsP6Fu9u1k9T66WUhgpgWcYKrL5190/CMkqkD4ZVNFGRbAWQEn3rp3J5Nq5gqfVSSmMFrII0kTDRTKsYTcz1lhHIsLHQfY4kCUAu55CAlPctkqTMxLrLXcjlGxKkALlkJCnK7ADS/5MBzqm3TIN9qoeCrNcF8+HBRMXLzsigYrKNyXASuZRjEF1zyGUYhu8RvFDrECzLSn9nsPqWZYEm22OyrD77naLPGMhUnrK/HFiGrx+GalPo5RkS5ALkoksAEUCAiQB1AZcAsmAZNCTgVhN0Wd1PDIqU4pu1HEOCJlVtZ6eqUfO4N9fJ68XMOcse6FqgKrUm7c8PtX3sUvfY1odndQ6q+JHQs9zkTCeN8BOK84z28gwJ16kll2uinqtHZfetuMhqETiJ2BslybQSfaN4VdRGT8S3nSqI4Whb5BVcr+HrrNdJko28qJPn6+yamPPZMg1aEfs81xyrrJ6+FMfqi/Voy0mqtPshmsW6wKuJ9yI+ek1XN9jt2ClA52u+UgMd5/h+5BXELKcuxcrLZVrBwpq4ygf8/FA7BRFzHugUI857mmFv2OXxz+W1IxrKxeMDBWm5eb8b1vYIvCKCuU/gHb3eXq6tXlXBINGNXDZF1KHVnTQbxJsGnoDHmyNHFJQbmpMn0ET0DmoE6ujj9nKtENTLu+dnibuhpzNRPM/1vsyI124y5zknYcCBz1erm+x4wlHUUec9MXu5TGN1Jm4+bdpDldVOWNPNHV8ETpJNETGc3aSws2pDvJ7lxVoaeqWLCKKzoCD2qKI/D671tjv78nqZVuhdCTGc5LJHnoq3RXRmKPxd3Y7fFHh1mCLJKuwLMbTzKcCDIxHkiokQ+RbRli/EMFaBbi7T7jKtlieTkODFgBc74UiXKPYAJ56GsYNWBwhjz3Um5emnOsshJdCZON1VbxKDAHrEaDuxszzrX5AgIhdwyQ2rJxd5sQaLXKBL6FMXRJB9otX15NXgWTIhyNu0B2B4ftCgLUHd5Rm30vCQMPooXTw+GTnEeBjWA5IxKx/7j/OGweKMk+mzw4zb8m1cgUkfIYj4KrlgPAzrDf2KcGmVE0EaTFldE23WZXmC8GcfQN6T0nL216KMwwbvSWm5/0txvw8fKZdbSLcn94/dcRgtj5Kli6qS77AQGUz2iDD9qpArqpf9QCXXnFRVBmuyUkzliju+bQdSzckEaA0Gy8PO5Qr6IB5LNJcp7LL3Rst7yY6B3WYhU3hvBNS58APkeol4hP8e4b9H+O/avSGpI+afvM5ESOaI78Mn4T8fPAsXcxJCQveTxWKx2IFN6CMz/gQsFu9fBiGxT/79+4s7QDbBd3sCPigICV5cafw4A3Gx28VI6iP0lWIYhqHVEjniYvjcL++9N9StlsDRV8L4+GP1SNyI1Rg/9E/TeaemfXrOOzfd03LerWmejvPuTe80nIdpWqffPFzTOc3mIY8C3Woap988bKpv2h3Cp9qm2yFKqmua7REt1TS95lFTPdNqHj3VMp3mIlId02YuqmmYTnMxZ+qXJvP7NLl20y4t5vcvBZpuaTG/31Ni9Aef/VE3Pd//Sa80mH8/Jq3SX/79mXRKl7mUS3yrkPc8aZQmtxqWgDSzALD0JKXr0vRJi7mE5boWpNGClLvkJAHu1hIdpGVhPhMcBwR5K1MJ1L6YENIKzP6siyq6Nl3SYr766ZMoeh4QJNKJr4uAMwaS3R9wO8XPYdetgybpcKCX2j8ubEdFAilFWB3rGYerFIHZXxG+aIpPGXZveqS/a5VQ+1Ell/NqB6u83GxOiKchp9gsrQKrK81ei5f2o9/+cn5F1+vRIh3+TExtiIArHldoUhPCDtS1nqnOQgj97zmNtRDJyp4Q+TdVK67rF806pL+VSxLUei7mvdY5D2t+pTxM0NRtVdVt50B7lSjvVeyTaSH6hJpdiC+aNUhXV9StPRr5IjnmgbhepR0xa+rSRF9StyR677THeaXJm9EvfSa7MJuZJCx/8FlGM7ii8PTgI603xU+EEGLc0yttEQkRicbFY7jgSo2jNiED4VZLVP7gb/4RMphdp95QxHltuxdtNAvXPe9Dimi/WRj34gsbZKHMrw1kktUd/W1EIi1s65LKVeyzjs4+feGU6FqfTpO8eo+X1BTjcxrUcB2dMi+UUVZz9PdVsgRVfH0zfGPP1DvhD5/VnLEIcuvi6izZ/G7oILqpiYaaRY/X3b68zSyrNxrcfExitbWxWFxU/kIHKg4XFxX6NF8hmu09XzsFhaPFsEcuGjeFNBlmtUZHV5RRlivFCRLEVEC8iz5xxQnocqXIArhiV2eYTUAeNOc9DSKRAABIg4AEICVg/komvc2ZZjVGj5uPSSYZBW4ZB4OKqdG9PV6iL5rJ72W6n0PKMq0n0UAacZASuH+TBDKtJ8GYdb0i4zXEcP6QACeYXWGM1yCjokHAeFOKwOp1TzVFFzl3vpMYPz+mS5LpXtq7JsOnS9OxJNKgCMmelSSD4xn1XNc0objfrXsOIrIAlywiCzKFN+iRQcMlsqTEnykiF5JVpL4Eq5hyPt+wQWDVuzct0U8PCe60PLgol91WC8ScQEKg7IStFuPkWqCw1QoJIKdVhheCwCoC4SCKQ1BarwrRDAt6Ii6EOJd6ifhq9qeq7h8KMXdcgCrJMR/Unghx2POFfUyrpaEQwwnRp76w88mKit8KsecRqJwIIZrnxUS88ptOh2nojdAFUE9EmHM/jeZBXRR298WilxXHKo1+x+divjUXOlu80RPHT5rr0Rnv2MmHwo+jCi30+E6iOVlWODuLPjifRsPeCy7irbziul4P9UZAD0CL+3Ip0sfafiDvYqVJL3JJPjfQXo7sOVkpjho8X8Nuy66e57ZEcXod774/3HQK4jSXG+k4iIIXLwq6QsBuVnN+loTnKhvFhCXr2b/vb78HoiToAKjc2jyWPjZ3PqVq6dYq81otmucGdpfwzISDRchbySGnIOrlwte1mn3V2rdx1/GC7hTESa2WiIADqq7h+AMOfipmtGREn/67d/kdyx9HJ9CFxeb1i8uRPk6qC+669SAP9NVeVafBn9kbm2tmTHknqafZwXM9PHiceIc2iOXt3ll+MCEja5nx0VV42APLcbG+c7M2HF9CT07mA+28P08O7olZIJo/fP+XnjlNMcudb+jOjpj98Ic8BGQaUm9tJ6fqP45TLDH3xuTHagV6IAKtI1UQ9cJQ5M/XdIqjPIO+5NVaCnuf05bYiqPheF/YnvNYX2YjXcHNV7JRuKk9IkC9Flnvpa4dD0TWtZacl3thKUIzeu9XwuhOszp6dZanbA2foFZPMzkp8ItqSK3nr1dplgSq6UeLi1rlaWsY1fJ2SbUGOhoG6EtQ/CRqnrdrkX0JgjSfe2I9g4b0YHMpnBKmCEMAYWi4y2SiwUgQpqAp0I55OHz8iIjCKQgyrY0p4xXSJxnMJqYXm+W6ltWF5UKia8mUSt+1pGVJRkP23b7sW65lueRtP6sl0ZhgeLTcoN1Pb2f1l5h/CuuNTC82CUjJlG4lGB1GQTIVsBKsVx/xqDrYIkuyrkZtybovnTczvdiYAGNK7HqTVzKoSIOBlCClFIGxMdU2uC+ZNzMK2h2kBKSpA4CMfZfMmxrlNAnOTScp5f2af2BDJU2m090NzWYXxuGlMvNp6f/9wY3eaj+S9/raACy3ekB9RqEvJdjifcj/IIcyUglKpz6IwCiYVOBC3vP8Ax2qSCVo5UnyZIcwqK9S6W1yMMo77WHzSTLw6B6mP/HHzD/Y0XtphOHZdv1EzLj/PNdJjl6dCdvZEvqgKuZkyXvLGx5FpI75sdjadbMB1Ya516KdU2/TvHt6Xk3S/9xL3vQoInVMlSs9bMQctaE6q8FVG8mjnWjGeT3ppLiHvPFRRepwHjZuouQlpRmiy7NpAuL7SStF5nnzo4jUnaPrscq1okG6sH80Vbn6pjkZ5w2QIlLHvC4K8ViMeO1JLhDzSlMnjimZ5k2QIlLH3bAeCZEv08mNonUtbD9VECkumNUZ5o2QKlIHl1baJRAqlS7Kk9h764fOqQPEpbAvM8ybIYWkIL5qAURUOck38qLAu7wLUOZ5Q6SQVJo8PTxdrx1d3QmMHpnmTZIqrsfYn/gjELkuWQaPTPNGShnfNEpYlgV5b30K5kgtaWajSTLMGyuVbGdwb7NB6vkW02CSer/FMiREHmm7xTCYJwX9s2hXZJoUmg4Cg3FSQiowX/bmSQ2pwNxAqTIdBHJjpYArFZQbKWWkQgYzpY5UwJBYeaTtNPJgqlSSRhyMlVLSSIO5UksaYTBcCrme0IPJUly6ERiMlnLSULnRUlALkZsu9ZzZJZ95w6Wk1iU3XWpqHXMTpqgOLpAbMEWlLnhFBkxVjQODCVNVq9tDQueRlmVrSOw8Upr5BM8DPtHz/hH+e4T/rsWJpbLFmhZL1GI1wKJcPz4BIM0ShPJComKVZ54BWOUDLc5sHrxh8wSyPIAspYoLspCkWOX5zVcebbZS9f+hvYvI880FQZLHYr9RXUCW5UsvyvP8lfsE5QOVb8gPVqUZsrpmpUVdVyVkGT3O8/YZSgcsW0t0c/5YImuX4381RtpnZqe0YK4rLMdfrDutTWl8L/UYZK0FoGaAJQIwmS5+7C8+aQIgJesR89PXsGZ3qLRoJRVs3MVK28WaTqdb19/RLtac5oB6wc4JZZNVBXNRMDNX2bCcIrWAzhwGSFIs5iJYrP4Eqb0TSgWbosx2uWbmwYBXXjHYGDDXXFQN5ilgKGAJ5WiX2zHY4JVznYo1BQHKBEtoKmYecMdDqjvHjpmL0WQ+h+bEXqwlB6R2rnOxSqRQpFmKpuDAZbvdRVq3wzlmHk1SC+OAFP2Kg4/SkMXKSlgoECzKwOKL8IZswEWDFIbBzgUUi0eticqDFCNm56KWhrMyhUmAxVBAsQZclVhWHKSTigdOxAcy7s9n5gApMiFHqHTMDazSXJiXhaD7hRu0l6ApQCqyWCNYhZmlfRZ3txhwBmsGkIo8LrlrF0tZ0BoGTmSBMsxMAOaBg9KLE6YmRUFa8kBohTZ4+NBsVv9AXQYhHVqtR8TzzCm6RM0c2mexK7hYUnIDqIhFJf4uMeCS0BuklPdLL0NTKT/GWGQxFUs9LnRafqJrJA8p5ZIxYqIhAcj7EplGO1NTyepIKT+mf8m0iaNYzymmKeQjx4ViUI9gY7dknEiYq7EhA+L34XwoAdAqpEGiS10Y4hVEYA5K3jdkL9aha19GPrJOE1DqMoUcJLqK0pEBxSFNj0sRQJ2X8b3C+nqlKSSLUyozR+Eqws8qzCvd3SwpP27MAs/TsVSrJPSCGJ46Y3r8yEHCbWVnLiSm79ZhSUOfJlxnVHQpSMQr6stb4zWJ1TJZn05W2PjAG7pEYK4xPNBNDgk3zr7kZwn3Dk8JLsCYS3mvxH96n0JbLSx243ofuMElQQ7k6SFZ4DNR57AsC1JafYu8xTuO53675fal7Fv/jLmKWJbVl3c3C6xJP23ZDd/W+bFeIfQtq2/AApX8ptq7UpWrnpr5E2IC2rLkx4RZ4Hk6pnZSpJCNFKexnTxokmSEZ6MWgW9EMZHbJQJALkAueVfZHKELdMF++qBul8BouIBlsCSiNIwUUXBUVEadPZ9AUEVR4nCBfheQ94bQUxfnlkuykej8GD44pZBEOyood+qfEd+q6SczHj9Zq+3Fw/VSIqJnDX9Gar1WIYBO3+qkwAN/hVabtcpqwdfDEp/ubfAUqnxo24OyCuzB9ptqR51u76g9X6347boWepQ9m1J4sEZ9eU+I/3QW29nqACrZxbheZoQH7S2HLmo3xNvi+mmgaxu+XY61mH+Y6Kx3qGuj9tEap+EVLFBJ+xtnotnSG4oPazQSB9lnSTlM8ikqdBbVB9EBb0fRRV0vaBZdn6doi+JOVczb12KmKtFoFR8HQJPW+fHJ8KBNJSOjWBWwkvwjfqknuX3b48+f888c3ejo/VyuY2cV/OyuWttERzc4QLON8mfKr6r8c96xG/x4nPssEDvw19KEo63370e21/6ykct9EMGpbqoUL0XxxUzEu63Neq4QdehjgUfgVTq+Z+qpVQeLIqTgxvUdryD0s2cKOdAkGlMyV57tHw4udD7WDUVpPL9OfCfaKkYTggQ5jcGFvcd7Ot7SE+Kn9f1q1GQpKepd7G+nOCpyaul3bRPOi6K0yudJePa2a30sVt+Jil3USklpFMhwY1XAPOQnpta7+UA0rsMVNC6cIUnhVloY7gW6qGJbJ0lSG030pRld+IODdLiAJidRkkQH7jQp1IcuFbRO7KhnWNAgshOdpsfJs0dLQXxLF5KxwscCtMZDVqoPKS1DMjQdZCbFF0pGvt6OQ0XI25fhfvctYt4sooO6k6OzZEphkj/PKeIVc/DvRkd6rCCh9qP29/zU4gz8omavK0ef4UVbN1nidrShXjTsVltf53Kzj+idmlNRQM32O3TPwFpBX8O7kJUiwpKJKBPFCjN1yEI9d4JKyRudSgWnZutUOg6HDepnJFhMBcw1iMhGR61EjAi8IS5eftgOYhOuUlBJ2C1KwUeiUDoUVahA2B0+fey3t2qiB3+eYhLreWl8pL3TyO4FJ4nT1tfq7VV6k9yOGHVcGuX3fCa7w2hABAENNOxKgq8nWieHHo99rTcTrXXpLyVa60FMkBl9RVMEiyqkmXg72tjYKMViO11Bu7x5SJDhPzYB8CH6qT4A7e9tEy0R5cKDqMTR7b7WQsy9n+l3KTbZRd/F9h6HlHC9AyG2T56E5Dze46AdX+ihfSddZrGiCvoj7Ld6cro51CIJnn5qslDeE7FPqnTwc1VE01b2oj8hG1xsEfrNkIWgRmL/chB9/mjaeL2xGb1+PWoNvxyN6vq5QxlIlqQM0yKktijuqlSqRI3dp0qpTpLNHNt+VunQb3aMA5Naj1bzr7hunZq2SK08CSHxCXUqE1A48dBPb4fYQzdXsZvpo5YgTCpOeQKg43XRJ68Sh7GHuIXyZArqVDxUptN42ql4BGfidDsxphUHrlNpUe7y6HOiIhqfyc+QDS62KP3uqMIp76qXes5V7ulekjs/x42fy+XWRTsTGtn/iF5NHlIvxzlRJXqXU3yVWpmzvoDFYrGkXzFerzimHuj6gzx/w2rU1dgSxMaVRUQWQC5knwh9IvIOE5954xq0iMBqps3oE3JBBJfwoz4RWQSQS0T4EagLIoDV5LM8e5MhkrWtPM8fCwousCj9RhzOhLrqMPKoi7MEcFModd4UJcpEEl4RKILsLAhe8sqX81kQtDPGcXVqc0yLnePjMa0H+z1+/Pg54I9eD+sVW8fHq1Sez9uxxytRG3NYUgJghwkwKhKgzmK4QpAGO8DoZKbBlgwaUpq5MeqsAjWvsvy2iKeTozzP81fOqTx1fLzard/e8fH1S/rh1M5fVOxCgWpGAVlpLAvDzWC2nsxDNwMy3KkOLqx0qqmJFkIIn7zMFy8bLwhr41a/stWvOKEerwf63dxydB/1do40MPsaKkjnzB7DYzJEkBl8mTfVYEpmUgZxadAxRLNLtMIu4jqzE+y07AQW2FrIftvjNVja/pwq7B/wni6uGtkT6dTjkLcZsKwMNbuQGp3JpLNaieqdySS+h0XdEMEStft1fo9x0uWD1oX74rYok7Bc82EAUvaRScNl9BYwdhzKvuX2gbSGXEIVgdsRbXJ58xvyx0aavOTN1Cfx4DAkNY5mZosknsQDnS5kgvL+9BQRUSUaKSK6l9UjwKPb2/GTTFoeewIiGgoj4VIYwlxSygxm4pCZvAWYQ5MWIQQnIFP7aP+IaLG3h4jdWtPTMjRSA1024YmvuPKi7AOOjcOI3UYE4F4YAjbq5yaUIAshDL/c4noDfeMQTG/Yml9b2GtDHEyxpBfobb5rSQkUEv3paUU1fM+FibbJHH09Qxm1jJZsOgmpvEtNcUgwkN7tPLcjGhmitm58Jmr5g4ODYiyyBAnq2PXVDGmPlIgYRIAQ0vDJkUZivxlCSgDG/cw/V6ZVeEF3aGmv1ZPnzG3odjQsVJL6i1+vqEUw15ZCwBIiB9GkYNfdazGcPxHDMM3iDYPI56v6qpMJI3hVmIRdz1BZ1PxUKpSHY+qn8Obr1M+MCa099hQJiSYyCVcpRUDubJH7AlJCca6AVaU4JEgpzjlIAeAKoQMorjjAlSLWK1d7kiZ3HcXvXWeqstojM21GT8CIiDjB0TNAVQi8ufD95/8qJEgL2TxSw542nvu+f1EhyAzeqpKRb5sSCXAmEVaJfctShn7nePu6g/yxpZDIBNTc26heTLiTfXNU3SFYyBYuLxzeyx80AVoZVNePC+p04BHdyUY3qIfOxfU/2QCNq/OAQKcX1WZt2LX6dP35T4YNJ1v8p2moyGpXLqrZDrGLql+KiOsvIj8zDnVPIqadXKaViCCNJhkp1n2CItwZduMYKWF2imc9MgzO6ruO8zx/5aaQeNFnsotY8lZN17Se4UBHJx94Ci2u9pw7+YjksSicn76JaonYy41FhdTQppFwPCH8CxwKP4l2chU7ql2JvTQNWyR1T1y8SMELrHYpsWtRElfsInrrpog4yvM8f1KIJ2CThmLfjJLZL9Pr3AaXygAKvVGJWee40SPDhtodf4Ca5ztjEXGJemmI+oC3aKBL562rbeTObog5b2/WnFys6093XyXlvD7NVZJqrpnm4DE1ohR55AJR2FWLRXegS7nYHjKFsa7kPH2YwunoutodPHNei8qL02EQ3dqfjwXEn+T50Z8UKy50ocwa6V7GFRRTq47vFkt2cf7irs4I17/hvASTJai8eaGgCj9eUcNF+Emao/1zPhaFINjQxWSgiIZvl2L9Kc9GzWLwym77A95V28xqVdAlZaDJaEezIKplg9CNPkJCYvVga50geoOyTPZUxzZF8S7ADW5SovU1WAh4gz6MrKVHBCqKl09TuAwXihpCCCF0U49UFwwTMwqKLhivJNh8TeA1I6fcQIHR+sq1k5sd2GL+6GzkP2KW3/YJiAIbYsVpmEIZlpGxi8+AJ4FPkiJmXATnKq9IXeqKMoVfi8BplafTzSr/C3uvpvggYp7LXxnh2WjieE5Y9g84qe0MaDLazjSICUXRqAQQsQDbmY+7WOVcHUCNWOG+JgF8/G5lnzaia8x+XCVuvujYNx3qjVCPPnSbOp/bEu/cmX1iQjuaO1gvUFY00dNn7pJ49k1MvVF4Fs2o99H5eOCB4Ov0Rqw/UJ95dUinBbv49NPAPEsBNJ1HkdieEG2fsERzhdXikYiiAbyFiI6iuXLeisiOfHa3YwUqaBHpEXk3IkoidnEsXipP7L+vi5YyaMc1EYmhd1aAXvjxhWvfUdTBY57FxvEurJfFrQShWLh2CN2tIvry9u6GD20CaLJe2CKLyuNCUKsSedeF2ayIlXE4Xa8QLDotFNoEKl8XSsEWfipBlbFH0+tTfno9xapB27kuNENidxhZT/zwqpgqxiS2CztuCPK4lQBXyoUE52lDCcXeqzHeJMzh8zNueq9xaS9FjLAEqS6gKCQFcy3VhTuMTvC2WHHJUqjlt8PI2MX4GxKJ3Jp1FTCChgrMZFxnkSfTm19LeZne41liZMl9718QWvu4DHgyV4w0rhPHTQqp3N6a9AMaNZaQAbwyzG5+Lem1xD0eafBYUutWJt6ieI6L6T/PL6hmnyEvbNjF9p45TvHMqPv9Vv94gbSJZ58hz2k/T/cMud85b3CZorcwl6IHyW+FzZCxi+nTmXIgLXkQ05qynsJeij7+iP9SPpbdrChpP4ENOxfDbo+0tJ9A8Y/VWOZMQfwFjJid+OWnL9KubHBcTAhK4i0yofcKx9U0hf75GYY8EDuUKbyUJGniVpk7x1X7wWMAvMVIXHPuOYFBTrI0UXsHdxzMjYC3GAosVmCQlCyt4ec4UXs4T+ENgbfoMwsqVuCRqjLezsuCN1z0i/EQFt4Y+FlaVgImOubAI1VtPNJpxuxctBdNrsrUem8QPFIMOZBEO4Ja4FhwquMxR1kxD8JNCPy+Z8mB4MyCh0WZBYoV/kmah6CZEo8CCRD6FTMv+S7GHbpOC6+dTVMLrzsxTSyzYLFct2K5DeZiOGlPlZmEh/8tAgf/dY7b+whzbjBgrqusdYn2POpN/MXiQLHOtYu1MWBmbh8AOIVKj/2NWQr0RxUzc81nORBF1iB48G/dibVYc5TDquharBKBQ+ZLT7bE29aESdk0w+xJL2uGTVm2pgSXnlI4pfAe7Ytj2i7W8Hc+pRk2/RKYB1+ge4CEE5ZtSkQnf5uXQETpPHj0+ng1LbKFhPNRwcpQrJQIr7k5WKzl9jeJvUDSAECL4zEBUiw8TAqWLiqWLJ5TD3GnJMXCY2/uUCyF834JWRZWmRVyRfX6r6wKuWK3keUAzQGBYpkEjzkkC3rGDkG2sN5gedy5LFXMaPtmsstyhfcmSuZlIt8CuQoVaL81kuQ9YyfhO5PsXb+V5HmLRfLvluj/rBOS/OTVravyuz1jJ9lbk28d49Wov11a3Uv63a7KN070I95SmfS7JXuL7WT/j25O+t2u0rc+Jlx1341gE3238Z8k/W2KrsrvtrpH9ir6btZaotblEjq08nKNiJDIgba3Tp05OrU1JiRzxeNFmFaTub8T/+JvAVtkk/pF+L+Lxf+2k+7kmQ0f/K3/L75ED7WsqPhQz7AUaR+h5V8/IoE7FJ3pGDOqL46MEHfDz4aftPX/9XJRcddW0Uy/IC4+MPI+Iz/1n8LHs9Fg/klUGJGKZ7oFcXzxyH/6qSjxdGtrCAxxBZNeQdy6f/qpH5YlnhwNrWZBnPdBJHX0R7qvQSR2M3pOJVsndjN+XoPQdmZcmSejrbWdDzkNQtshvsIltB3iNuxQ1yEuoiB0HeLingah69DnC8rokrYzY/sSCugXMx7pMaNLwIv98ssMdAviG1yOx7OhlC/uASSAXgHeQDCO8+5FBbJqnYFWYbk7LsSzl7H1I+oikuNaOsljfRolAFLt9Y774X4paroUEYN1Fjpka5RjC8pCD9VzTAlQjEplrdmdeFWufcxtauPYo4o3kckQOHS4NEkV17buBc9HCJyUH6djStKnPo2LxEiSxml6BPpHyu2moLa9oiKRlOOYU1NuON4R3wtDj4uHPjDNoCrJYUpxzLUg5l3MOgj1d6IlVLg3luxR2zu1vTFSag7czaXifsv2iXjz4QiQrdGkj954Y6R5ElEt8zRvLPs5NrkGkpfGHMGNSERWEFk7PGxWuRNZcl9RZ33NvcEaJlCqcxflXqTLXT0RyEoLwSWKWmVFzEyoisSI536kPGWmIwiA6UKlMVZ5P1yYTCq9xPd8A3nEjaVI5sGp2/dmbJdARHUj3X6cJN1DtJO7yiPF4WKaOIrduzFHjq5csqqQhVSI2uM4cJ0ccs0r4qf+jYECaAhgKxVz3nIvlpjaaSS2YN6vgiKZqaZMLffR1IpU1EvHvJ9o3WmNZJmY6J4NGW4joFk6Yw4+SnxSoj/0HTsjzvveqOMMB79NlovADuiXTai4dYHzWuMopYQEHmPljDKmaMQ0Q+o7GspM2T365FjHjDEaCcwMYCTDteKRrTWOtTKxEGgcVw5hyuAveJo2BifPL2Dc7hgPHeOFWC8gAIx5IQTXmghOdEEWJMXl2KvaCnD21SUoRQw0FZj+aik4YzRp2wk0FYn4H4Kw5PE/KI+tAxl4Y+X4+4joJWQl7EH5YwnFoBSjWGSKGIr0BwKl4VBLxEAzueODtZD+UXcriy4yJvlHJEnX+XDpKZKK4n84ge9sIuXBH7p3S+glb1Rs5ZBP6aHF/qoUz7eunRIPyCBbYs4jXLGy8XCknJMXvcR7Di4+aBsZ8qSjRIZW0mkvtt0KYNwRpCIjfWjlsI9lxY8AvczkO+rO5cD/SJyfLh1Z5NW849o3Ca7XMMkRjHSOIxjOzbybutVkIdeaWYS5E/GsJDuPd8v9VtC1TB0yhXTu8uoc4mm7mjgDzSTt+PaNW7bR7TZKxE7iXYke6Cv2AgVpinqOuZ32Osr3z3cFknyDN5xtxOXhwMPFBG8c2I4jKS3P+8kDqbSTLT96w1EMz/t23zox9dQZ8bRv6cKZsAilYpKL6YTySNJcMyldtRVZpr1sv1h3C4jUV8iuTZTWXRK+wNCsvIEkXT3SXsyya0po5uySUUcW1d1hieXvB3bKGKPy+hpbdlKKjAtq6Mzy+NRBhphrZOsTJhKAk9aV6COnegn2W5z1HoKaSzinpOk8OYb6TXPS6+kP2gxQAqdS0WDUjWLdRWLUe4iMmcC4i05CEbWqYqChwIgYmNuuyUKFS8muxRiRDE23DAQyZSUJLkMlA+0EkmyjRpA4QFzUo2+CnNv2AFwD1yOKGgNBtEXvtBOYZcv8IJrXR9DIsmCKaeuKuGCy0ucruZlcMcdO3I45plSgmTzZGorYLYuNpAWSYnI4TDhKcrLv7vLEBaRc95Y7qdn2NY9UO8mQxwckh4DS8/Z87oNTvprPLUUhNwXOUdyAUpEmT7UTGF8QpU2QQUWNEYVOZJwJDIo0YS+llgJp/CrfhZnu1DRFumArJfQTyG27/MEPUkKQObA9n3enxEyuMI9IPzFJS2lNtdR7YMNDTdPIUQhHjioZ8oB8mFuO04mGFoG49AiKqpFuA8FIj2A30n202HgRH/fJlZVuwCU2KxHbTlbalwm7itEYKVGaDH4r2B1BYowywKzkSoNArTRbL9Lx9/WTNZBl4dxBVjYD5URWkCkvJiWH60DhOhOb70lZcqKHhLz7BQ9VtzXZKV+a26oKtxRqLOt1JiKnloN653h9JMKXzGdT0j7iji8cASLsrBHBrICIHns9EZQPtHjRnxztvWhB0BOZi/Wiza0XrRPUrzy+iDw/2DctOJ/neT4maGBk9SDP98j2zMhMYj/1l/1eGtl+ZZ6fh+3RkWWpwtKp/A3rBKlmJWrBUsH1SzJBDqd5FchcrL8uov/2MWsscSwkC9o/egZBtog2Sl7EvASTSLM52yOkK9b/9v/Sx66xrCAWTVVIFVX1eq4KuSKbIOKL9U33kkzVBX94pmc7yQrZilX+uDVW1cAKsYxhzbJFtcKSRV1Fe+6nGb9E09nColJgsUawIlgU7GQLCeeDyxTROrxU05meaNpnFRZLFB4cyhZOvvngpkUpgbRhp7xiDXg6R286NDO3vx8LKeU9WmXus3xCMinjSJEAMo+s1i0NfaPSPg9FBBb0QYYEkzKNIAlXUeaR5ZjD3igJziEfhogs6IMLCeJK8a4hgqRZiZHqesVOF3KJy0jwgbRSnStOf8KEvY1h9DGG6izA3c3g0Z4FbRFTUHeJBmXOQCohQZ36cHinQK1qQJAwLclbCR5EYw4wfy1AGipg57j+HM6edjDiYD3MLk4S4DUfFuvhArOgYxJ88k+Gw29kyr1qj/qG1mTPQOogQaeJXtSit6G3t0WwiCy3i66bFoCUWJ3ppiI3rWBUWamqs+d4+Aev/PK//fJXNgh9l4iJQ5fIklJaROpmGxbctC9XK2fPstMvCaokerEdnTnltymYBnXhrrRvgFOJt7qi1FgcrwL4Y7dcRujAmaYFXKR50+yWQwII5TKI+W3V6cDt+Lf87VmbRU7ZoT8GKCw7ZCHtwYc1fML4MD+dTz9dz/iBbufUNyNGCoBFhgat+XM+5+yKUwaLFglX1G1+OtFNhWwk3j6/UBeLCxENQkIK+20iaqdEk6oQezG5GGnxeY/nhRAbsd3gtJ4IXeh23WJN6A243cYb8fbqBryZiM2iavlnm1ew5MOYRQJFdN1u6WuOUSSqN4PVt3tzEb2GJR8YCz4Ww2/HIcVLYrx7KQbNPTFXA7FoXohCmnakj9eTxEFNF47txFNZUW8uomClLkaTyVFDNUW1ORejXDva612I9VxPvG0OxJAHUbW592Xpkf5Jdgd3t4dyoRktdhxSqiLWzwsi36yKPH8i9poHYocgHxibuNf+H9oXLVUSTTcZ8pyTzNU8ae1OkzXXSq8u5HKBKDZFMXc+++hab0WHKldOhr/XMxPxbkUfU22BHM9vOpMxved+VQ1PwpzaXmD4XL2nzf1Q15WCfChvQt+KH+n9WE3EmF89cXOOf8AXtelurEcPDBygck5wqH2vIpqefancsJZX8xOHHJ/lTZOTZ4+yOnRpWjsM9A7H+UWidkRJpQj/cKTAP9in5ytri8WP5/SsTlBPFuXEvlkMxdA7Yv7GD+MF1LkTZHUSd0TT06NzcrarfHEGHtsPDBy7XrPClTqNNuI0Xy/O4mfENE09hUqxyQ0gYnhTOdXJcKhT7DN4STJ88uSg0NIj6j+0iFzQFc5VJap74rqcZppm+ICB4qjKVS7WgxSrj9nCEuhjptATvVzuVIxbUV3lHH+YK4oJW9hGTuUTZ6C9z7i/p878MMdThcVQ/fALd/XhDXWiPa5ynh54YqxOhvRFqmDgQVJYHYm9O1mvRbNJapNjsXZ9JtZU/ipFMk/TjqLLQvLYCWv6uPDsqqwOxeB6EQXngbiYVPQ71fzJ2w8DcXneENnxmTjYLYqz67m44T1xNt6wm86Xr9M8lDe5FGfjQi2atcT6+bqoXu+JOa/dpNAbD5RNxidCbPdURTcVHWtxkMzVxSLFop6C2rU19oXi6h+Kaoe63ZEWtR6RM482On6B0zgRuuBSeBiJtZs9ooIt9oZVUNMX+qLsJY00D+dN1tMNuqNi/YHzghbVx3l+dpDCb1D/wUGXh44TEuCE3dbplLejBp86AJwpcyPZwZTRIjgOCPiE0poWumkxJ4RFU8chC0SO44YOLHIcwAEodBwiOCEe1v0LFpk1qHca8pkeMU3CtMQDpHcJLpEF2SfQnejaja551HUh4XYhb2Xftdyl7jD3idw+44G+a0nZd8kFWC/Lhey7bAXs8cC15EO7b9GkQS0a27UbfdIhl2kXSz5IepYlTLqBnOvqMNsig0f6T8/oZNK7xFbAlAy9TayXUViyFUAyBg9r2D+8oUGLe8PDmIwt8WAZUyRNuoCxqhRn51vjxISWwe92iR5kk1BkghGS2dTgJ0385O1DGwkYogwAMQ1qMHlgjSiTYNIqpU8ZfXLBhBNB3tNZleOe7R7ayD6lEwCX2OSyJtaDZWEc9STZc4ZEd3rxDnc32UerzFw3pq0pzAdHsQqMgwQF+QpBSjgdo53ZsZh6PIRJt1un0ylzgtNhU5kx8UDp6UGxmzSOejK+JFwnqXYtUGtzoCDBd3RxFWD1TBSlwYGLqM0BUC/a4UZ5k2MxVXzoIkHe448QIjkOzzeEEJEQYtBJhBBfzr309ODoX1CKAM5JKYIEqRxO5mk6ep5Cotz2unyVGD1FgKuIFADFIcHHR6Wc4kjbuYpM5BVnBBVXHIBahXwYo58Ue3NR55PezjtR3+lVfhZVizsjMSDrAYEE4UNj3CK3GMSN45hA8XFjVmM5Wksv3E7TQ7Pdbqx7NG3Oum5nPf60EFI47rlIsdkbN2bkxmm70svGnXgEqhw3AqLW9WmhOQ6oG46DhzT1c8UbHxEolauIXk6pSjTKKVX1HYJ8ECDhesNIi+eeuolqkah1VPxY/NiOBqbwptiBf5REYohHm2vEd0TzU9H44lqMKcUHbWsRXZ+vi1mY2Ekkzhw+1lEUFZ62I/3l/HniqIq4JMiHMEcDAj06qhPopbgm0CS6/CJHi+3QfVDA7+RqprY+opDbiwpUFAW1p9t0Ha2Z09MBtnWRGmIr9PeJB7q5u2G3kzmxMfkq9J7Y06Zuw7cDaoiAhmch9uzyypc3Hm+KWe5Sxw9tLDe8OeuaoJ80jqtJQHhgFJyy14r1YW54wnkYjTy7fk7w50tTmyt1qscwoKYL/ThmGOuSUoEIerodXg1yvCSavOy1vHf6ZytHHxSV7bra3iNL3j68GZoSpVKy8qBAwnX+yZdCiI3zYY3Iid7FdoG701omDIjP9LURrgriUEGmsU+JVvSY4RWnU9HMtRdCiKN45c2Yg/aTU3us8NCGHD9PJnyZ7aJzc+XRA6NwKC4/DXTWwGXLzp4TTsyAgTUDdc5nuqnCm+ikRWBY4WomdhjWOL0URSfxm+26ZuFBcnbl0UMb92lJNEx5zem8KU4fGKwOn9HuaWRkxBdJ5zzQhhca7BKRMudkAZX9STO3oYvJGlkprqMsp3lUbpqwVYkaL/jAQBfbYkB9eftQZl/xtp94poyUmr6N4gfHohnZ/qZ49XQ7ISqLw/PTo8i3xQGL8K+urppFsYPkgHggCrmG2PS16J2Kjd0mu9tYaP+ZaDC72QeK2qKp9iL/sRaVUlTgAH8nAo6HMzryr6JkxgHeFuscVBGR79ui8QC5z+D25vOgUaDCO3Kn9R1aLQ3yzcIYdzd0ndEgn0pB5bCCxocu/ZY7bHOszwdbo9J13aFwVMBPQe1RcX9+3aXTwxijD0TxRYmXR/nRrB63sm0CqYZfpocyXef1IJ9veAQJii9OCeRlX+Xzr3bS84PjOQKlSHFwBUARQEpxziEloJhEpFwYbhmC1SRSXUAxdqRIKQ6Y27lKKVJuVxHwaKbrD+uR5FCpxF1IwxPYxpZchXyQPD3KJGnWYwCYjBswSUYjo4tBQZp5S1M7U2HQhah16GGMWbtJQ+vKJUweHGOKpFxqQIA0exLcJBmNTF1YSzNPUztTYYlJ4BHkQ/1XI4wKZiYP0d8LkiBOkMv0X4syOdcuzzGea5f7vxT3+8hxZsb1LAXu5NxxXz367NS3Z3hBfhSZhAc4YMniOVxM54rhLXb5OYorFtcZvsgL4Jcx2q0kiz94fVZJFbsZLsCrJu5EJl2x3v7/shVrhGUvhLfyHdjo+C8kPLCRMkLmYuHMzb11NCh5D2o2oy88HtNMrlnxCgmZi4XH3ixbsXr96M+6CJUf+/sR/nuE/x7hv0f47xH+62VQWxgv2Lnawi6bLaSYKi0mAKzR6leF2qKqMlhzhZLVF3UGYwUa1uxUF1zBmizlHXLrmsekvDenZSRSyowiSeJefCVgUF0GIoGUmVwyymSfXEYkw4AkgmQDc9mHRFcRJKAI0nQO47IRCZhnJNDx0oEKziGXeUh0veMJoesUZl3IdGIjId4cEYy3gQiQZk5W+HlVQVrhuIi7mzRJh4dLr+AEEd2BSqLJQbEYkAWAiS+kONogMKlP63uPCGZObvj4rQLc6c3AtWCSpDRWsISIlMscVkQvRUfXiU19WESqZY/IYjygspGzCpeIyEKfiJO/pyABchkbE99PiIhcGGS6sFhVmZTkN/avbj4lFw2/lrVHnJq1q7XYqWqR9M7D0eOTY7hpl9d+lVmsNVav55c1v+Flk+dN9//g8srfKLs0zfrbhWqg0PD9RtiFS0QOKRFPXtm6ohpisbYp3qmGOJvrbW/kR9U2XxPVM3Gc60Unr3wxT0FOcqBGInlVE8nnAz86pQOd3xMX3B2IYV6LnqqLsz0x4ssnbmj3ZVT39JzvBtEljQpffFYUpy9GNnKBaL5/P7jyajVnd2IfMPhr6lLPXji+7b0oRQ3sB+8/29eoiKzKFaKtiSi8eJ+1O8QuGY3YA+XS8CbQPUUde0RUubwciEBljzw1Ehujd1Vd1JfKhb9nZJS0OIZDovjotaLZqPFEO2Mx4Xymi9fi8PJdPtriyUaFoaUPaXNNdam6vXO0xSm2R6pwFOkvWXhWaK3tWjEqLEnMw5shaKJH/EJHOnrmFKKYKNDFgtBaHz2erSYbHXGouHopCtye55STVFeiRk7F+hL6DLlZGts5L4iJIiJHv+IKV9WMaFTEiHZH2mmLQJ0HeqcoThWRi+XM6ltpoSoK8VZix/RYX3cGosmf6OIkLxqwh/HLJyleRwFa9skszu6jLgpxXeRZ5ksQi41WcfNNeeo/C1YWYitMkiAerTlddklmDTN5VSHEyYzD30yEqIPHNSFqeqSab8SXz6N1darFnewGjz9C2AXX2ROidsQukhR2iucLpqCykdis6VNVuhLRtm7mXp4IoRuh5ZLNt0uE0qz9iAP2q/LsFP8H5Mza5Urcpcms5Jx2uqjMWi557VnMQWF7Vp5UupB9lCbdzukUqFSA6Wkn7R+X22UX8aR1rGdEj9qzCf+B/S4TIMatRJdzTrCg8znOu5AgzokIIE4uZypwwchAwmWd5K0EEYjjRyCCBCdglRNxQv6mkY3OYBlUb4UAjBOIrBi3EgAgLdxkOdvNnFGHgZRYwon1lWkVdjsTzz5mB9q+8AgG1ftCexkZh9iD9veJxLhlewKZ4GIVlu4sNJEwSkqDb7pkomV06hMBRJD3sW+RqLy+tHEvZ+2QIJ7xFX+yoKYDEd0tKx1HfUvKpZXu/ftKn/GSfcuSQPqVrL7xcO8LROOdrwBJEBqxuVouYo/yRXm+uboucCCCBCS6LiAzUbo3ZdeFTM9ELoiAtLm8vY/snzrIjxYyxI42lI/d3JEg3pDnef4YjvBBb6lrBSYTQHHQZdUhSLNrEask5VIXI9MrUJ/yg64lJbofPk/acUcdL8ouTC9Q0VdyHuV5frAjQxydQA88aH0sQax9d54fXXc7u6j/X0p2PS0W6DZ6RIPEI0NWIp0sOluQYfiI2Zamnz7/nf/ctSToVNdGpeTwRT3yCGZa4KjtavVMnh+N12RY0qUmeJAU8aL81Db1I02WIEUA5wCprtciFc1frF7405xishJdrhQBnge4Simu4CpSSkFKMEoSpM7Pa8M0X1xH8Xu3U1aHOgUpxRktpc6yizoZzzj6CpIiWoMeeMgQNL4+ajcJt5KNCeOiSy9HzrhY2Y/8y7Be28rWZ9SXEhSu72dPCdfXRE5hvxAcO/FlpVFfByzq1dNKVHm9H6Tpu8VFNB9Pj2e5NDSr1wMXFL/eb3xOxS5yt/VnwMqxBxLlkvx5yyIqmoiC8sTnXTXQ3WQ4s0W07WS/ctlJpE8J0sI82vwyKvITX+FA2Mk/0F4gkuRIbHB6LWytZ+eTK5EkUTUFbWhx9MoT+y9SqHGkdXT9tOLrZ2Lzuyp2AtYzyFFFrZB/HaOEhZu86gldwfZAfX5GZA/OqR4VVEVfEEBtMcp5w9d08zx3LY65U3vjzUQ1pJskbIvXCv6Q9vVMlY7O0gVV0BXl6WwKp6XzpPaS8LVY+WJn8w+iay8j4+R9W8TJfCOh+cH2saOLT0/OyLVfKbrwQzWt5akPiu0kOyt3sVioeRKSGtneLAqU2njmjaJZqXKxeeqvcVfVhgZKRpqiWak0dLsXDQuV25mdgO8XzNwsCbavD/PNpKNSwF5LcVLmzucpJHgl/0wsJrRY8L1F6HKGIvFs0qmLdLKDzRGBm8EN/HXBpOJ580aLb6oLdomEW649OfGCq5tqlzMMntKFbwDdeELOaXKGm4W6SEDnZnhZfTopxZ53NeekMuFaFOPSpOOUyl1vnD+pMnuRTtbEATm+KChK89WrSqbwgigo5+QGqdU90aDW52+MlGfin7i816R6FKwG+mxpOrrqqNk6hnYlFxz8U2KxOhbHnNZEm9OzBVFe+M5g0+Pl5C0B3Wk10pHeSe/WvRDa1okXiN4q39cxH0Va6yx1ToROxBOGhjhVnth/fyE8dR1FOspjJYl09CPflVi43rsOUel4CnfcBLXevZsG61MKx0UXEoQP2Y0Vjutrl9Bs7Ayeea3GxKVPC4+IgtfZHQJ1GtlZr4m7mwSVGh45xzMVHDsunY6yH2CltY5PV4Z/kWhNuQAp/AiKA6QUSAFQnL09zJUigHPq5NfjpnhFpAisGje5iUictSTVBRSFpICl7zEaPSHfMNxKVgBMBRKMrZQweLnlCy3EgUfGHokMR5kY1DPQcoeGT8C3i4wBY2GUMGgZvEBuXJmAYPTMcJSJQT0DrcPk4j72/ltEZH3fjiHpWfri49xhItfp9STBOzw8vHq1tGFW3o7hTZa3qGrlHRSibgjGymMyzBQXTQN4gzWH6iJNZ95gefhltcWdrVzZTDGubgXcwCdvWOqTOAMSNmSdUMYTQqIOmnBGHUzq3SmlCTposltPOqF+zaMyQceI64Y6orJirpNzcFVSF0TTJP1nStRBIo+rB1h9D96bRB/35r0AWE1QIHEBAAA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj48dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCjw/eHBhY2tldCBlbmQ9J3cnPz4A)
> 
> **Figure : Host signing tool workflow**
> 
>         - The host tool requires the `efi.bin` and `dtb.bin` paths (absolute path or network path).
> 
>             - `efi.bin` with OSTree support contains `vmlinuz-x.y.z` (Qualcomm Linux kernel image) and `bootaa64.efi` (boot loader image).
>             - `dtb.bin` contains `combined-dtb.dtb`.
>         - The host tool requires the path of `certificate` and `key` (absolute path or network path) to sign the images.
>         - The host tool mounts `efi.bin`/`dtb.bin` on the FAT partition, which provides the following directory structure and follows its separate signing process:
> 
> 
> 
> > 
> > 
> > ![../../_images/1_efi_bin.png](data:image/png;base64,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)
> > ![../../_images/efi-bin-ostree.png](data:image/png;base64,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)
> > 
> > **efi.bin with OSTree support**
> > ![../../_images/1_dtb_bin.png](data:image/png;base64,UklGRkAEAABXRUJQVlA4TDMEAAAvVkEoAAXdbNvq6NFbwlcCJRA6dEgJCh0qdKhwQ0qgBEpQSAmEG1ICHXBdv/gOGs942ONE9B+2JLlxm4Ffbu8C1AE5wQeMj7FRljH+1MAyxo9lxv2xgPHTxPexgNE+/vM/E0RQW1ICUJaUA9SW9eGP/3z85+M/f1WIiP88QEgyfQvloVSg3hBkMHiTDZvF028caOYKEB5KAcrDBOF2FgOCxdP7oBHSc5FAD4eQ3gZqPBcReDhA/KeHshNoKzPnRoA/2gyh9uhAe/uStwH+lIgO4GoJSZSJjZ8E9OgheRpMlIhN0IY5gmJQT9YGuDhTwaLM9J2uVL06GXPk6QyNiaDMXCaadfQ4C4qMwzO1fJEymW6WWSeqg6yuMRm7iCZIQzOoZncK7w1IqaqvTQF8HT2CvtiBo42eCagzQOx9Bwi+jOqBLuhpo3igMiSZIxPctPbdtFnVjZUvAGlcqmQUQcod3aCarDbaBpjugPLsvb80ntku/soFE12B/YKvTgf4Picrcz1cn0Zm5bg2/cQzGrANyVXzMoogBd2gUn+aHCUbVJmk/Mo0iKe6O9AFBTMHM4M+lLodPK/OJIfttD1PwbwJHlz8KaMIUtANSnRBjjchHHf2J+MhMbkXUmvqlRJQ5yxxhkYUXNrkzEAM2VWRUQQp2AzqwoOESdKLIq9/YWGJCfv1NBFvIbHD42+EJwmJ8bRUadGM8XbJQBHw8p326xkyd+68Kar8kg0kKHDjFuKhyt/BwcvsXPz5hVWQgm5QKUe8/5IOHC/9Y49jZ1/VTZtM4kWOd0Hmp2R3OOSySa4qXdwTlKYDjW7QlKwdDMKhflAEykuTgHC1IYRp0SHObYjrt0Hs4yRQv0MjUGxj1OTSXATKo6ttiE1QAfbRTpPBAM8WwNau/oYTriKejbchoycgvPhPk7vY2FbPRLg67iF0pjiHGbbsedcsyiDljlHQZD8YDUJO1nYwTrFpzphdtFf/xTcHgPY5jz2FK5GpD+WqdAKp13LafB2lqnIS11GlSzwIzNRo7NqLQ+X5tQq6TLmoGFS/I3vA55GxjfnmgXBtkXDT1uOOvqx/n/Dxn78y0PcFjG8WFjGWllWNj/98amHDppFAj5vVtzQEBI0IGAGiTAHCClGB+mAaIa0QBSiPQI1/ZLkx+U4Y8QIw6qSpM+7N6qsg9q/g/X1jnXxnIjNNnXFrVl8BMs0q3/jNOPnOdAf+HD0CG0ef1acAypPK/X3vym2T7yzwBb8BjWGe1SePcQlw7xvj5DsTnW9Imd3RZ/UpnPwIuwj3y523Gc45zGO6ZL3lX4Q0IN5/yQmcDH1W32pwa/JdBU71gwKoM/RZfYuCcfLdVcSeeRtSRttZ2SKo6bP6FgXj5LtDapoD0+TZTh9Fn9W3KFgn30UHuiQk7OO8NKXB6kzNPKtPvuxeQeP/7WIAAA==)
>         - After signing the images, the host tool copies the *Auth* files to the `/loader/keys/authkeys` directory for both `efi.bin` and `dtb.bin`.
>         - The host tool must configure the wait time in the `systemd-boot` loader configuration. This wait time stops the Kernel loading and allows you to review and select the `systemd-boot` menu options. The `loader.conf` file must be available in an updated `efi.bin` file.
> 
> 
> 
> > 
> > 
> > Note
> > 
> > 
> > The signing process isn’t followed for the `dtb.bin` file.
> 
> 
>             - The host tool configures `/loader/loader.conf`.
>             - The syntax for `loader.conf` is `timeout x`, where x = timeout in seconds.
>         - After the image is signed, the host tool must unmount the `efi.bin/dtb.bin` from the FAT partition. Store the signed `efi.bin/dtb.bin` on the host computer on the similar path as the host tool in the `signed_binaries` directory.
>         - Following is the directory structure for signed `efi.bin` and `dtb.bin`:
> 
> ![../../_images/efi-bin_and_dtb-bin.png](data:image/png;base64,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)
> 
>             **Directory structures of efi.bin and dtb.bin files**
> 
> 
> 
> `efi.bin` **signing process**
> 
> 
> 
> > 
> > 
> > - The host tool uses the `sbsign` utility to sign the `uki.efi` or vmlinuz.x.y.z  and `bootaa64.efi` images separately.
> >         - `sbsign` requires `certificate` and `key` for the signing process. Verify the following syntax where `dsk1.key` is key, `dsk1.crt` is certificate, and the output filename is the same as the input file:
> > 
> > 
> > sbsign --key <key file> --cert <cert file> <efi file> <output file name>
> >                 Copy to clipboard
> > 
> > 
> > 
> > - Examples:
> >     - - sbsign –key dsk1.key –cert dsk1.crt bootaa64.efi bootaa64.efi
> >                     Copy to clipboard
> >             - sbsign --key dsk1.key --cert dsk1.crt uki.efi uki.efi
> >                     Copy to clipboard
> >             - sbsign --key dsk1.key --cert dsk1.crt vmlinuz.x.y.z vmlinuz.x.y.z
> >                     Copy to clipboard
> 
> 
> 
> `dtb.bin` **signing process**
> 
> 
> 
> > 
> > 
> > - The host tool requires the path of the `dtb.bin` file.
> >         - The host tool requires the path of `key` and `certificate` (absolute path or network path) to sign the images.
> >         - UEFI secure boot requires PE format files for verification. Non-PE files, such as `dtb`, can’t be signed using `sbsign` as this signing tool requires PE format files as input.
> >         - The host tool uses the `openssl` utility to sign the `dtb` file. Verify the following syntax, where `dsk1.key` is key and `dsk1.crt` is certificate:
> > 
> > 
> > 
> > > 
> > > 
> > > openssl cms -sign -inkey <.key file> -signer <.crt file> -binary -in <dtb file> --out <output .dtb.sig file> -outform DER
> > >                 Copy to clipboard
> > 
> > 
> > 
> > 
> > - Example:
> >     - openssl cms -sign -inkey dsk1.key -signer dsk1.crt -binary -in <foo.dtb file> --out <foo.dtb.sig file > -outform DER
> >                 Copy to clipboard
> > 
> > 
> > 
> > 
> >             This command adds the signature for the DTB file in a separate
> > file (`foo.dtb.sig`) and doesn’t modify the original file
> > (`foo.dtb`). Hence, the host tool must keep both the files
> > where the `*.dtb.sig` file is used during the UEFI secure boot
> > verification.
    - **Host signing tool workflow to combine DTB**

> 
> 
> To combine DTB files using the host tool, do the following:
> 
>         1. Prepare DTB files: Place the new DTB files in the `dtb_files` directory for combination.
>         2. Select operation: Set `operation=combine_dtb` in `config.ini`.
>         3. Combine with the old DTB:
> 
>             1. To combine the new DTB files with the existing `combined-dtb.dtb` in `dtb.bin`, set `combine_dtb_type=combine_with_old_dtb`.
>             2. Ensure that the old `dtb.bin` is in the `unsigned_binaries/` directory.
>             3. The host tool takes `combined-dtb.dtb` from the old `dtb.bin` and appends all DTB files from the `dtb_files` directory.
>             4. The host tool then creates a `dtb.bin` (vfat), copies all old files/directories from the old `dtb.bin`, and includes the newly created `combined-dtb.dtb` with the appended DTB files.
>             5. The host tool places the updated `dtb.bin` in the `unsigned_combined_dtb_bi` directory.
>         4. Combine without old DTB:
> 
>             1. To combine only the new DTB files in the `dtb_files` directory, set `combine_dtb_type=combine_without_old_dtb`.
>             2. The host tool takes all DTB files from the `dtb_files` directory and creates a `combined-dtb.dtb` file.
>             3. The host tool then creates a `dtb.bin` (vfat) and includes the newly created `combined-dtb.dtb`.
>             4. The host tool places the updated `dtb.bin` in the `unsigned_combined_dtb_bin` directory.

> 
> 
> ![../../_images/Create_sign_DTB.png](data:image/png;base64,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)
> 
> **Figure : Create/sign DTB**
- **Multi-DTB support**

    Qualcomm supports multiple Qualcomm development kits based on the same hardware SoC. For
example, the QCS6490 development kit variants include the RB3 Gen 2 Core development kit and RB3
Gen 2 Vision development kit.

    Each Qualcomm development kit variant has its own DTB in the kernel.
During bootup, UEFI selects the appropriate DTB based on the specific
Qualcomm development kit variant. To facilitate this, combine and store all DTBs for
Qualcomm development kits sharing the same hardware SoC in the DTB partition.

    **Generate combined DTB**

    To enable multi-DTB support, append all supported DTBs one after the other to generate a combined DTB.

![../../_images/combined_dtb.png](data:image/png;base64,UklGRhIEAABXRUJQVlA4TAYEAAAvz0IPAI/iqrZtVVlHnmsEf2gS+kISlxAMPr2Gq9q2VWUdea4RFCcBNCXQS4BDCAaf7qq2bVVZR55rAncgwYtAer69AgUYzH8A//+/NE1FUURViQhVZWZEhJlxd2VZUlVmRkSIiCAIiAhVJSJEhIiI49jz2WAEnKxZsAHcscbrdROGdyzBFEvABHDBDXCid/X9/jweX03TqetaXdfMjIhwd3Vdc/9gwABgdgfcJwPghjvgihtPHAGTDYI94MAIuNj9wR1wwoARbLcLmLF+OC6vmGJ/BUewB+sDO0CibdtpGz11sMzMTZkhndB4HCgFZ+b//yZ+evLTulpLg4novwO3kRQpfYyV6cWDDxi5bi4DrKvLEOv6MsiK2Zaa/HXxaTnA+jAZoOr02HKA9X48Yls6cZqf8x0TYI1fBqh6/dEEWEtnEdvSs7OR/4z8Z+Q/v6156BOvuc6XjGKfxFovCcEaqzWB+z2iZlkNlmvx+EdKRKs1NViuj0eWqxa4lpqXNAtVjji+kVCbpSyHTLMsB1kvcQ5T8gKU62sqxNQC5doSh1sHVEulma0ZidBaOcfCyxGszW4dEPkByrVFQiVKUF3bOnBaalGgGGQjW6vvpzRMYC+chCUVoz2MckBWlh7RW9cLUK6v9WxL4YkvpHVAubYamet9n7mqgGopXwM2diMQu4XUqObFytIsZ6xVTM8LSK529TyA6PqaqkFT7Q2TFCIQaRW7oUKaoDwB5CpQ8ACQq4MNowJMtZUFiEGkCOsl3co4MV4BcnWcbBgdeK7FZ7ZE14GjagdJTCQirG5zYVXjq/ELmqv9PokSGFdHkLWq0YGlWsiCRiSmp4W2Kn7BcXWeK8FxFWlsV5RAqb6mw3AxTdbe8BD9CixECDA9R5B2APBUPaYYxVfaxvrEbMPrFTjXArEtaC1442vuBkxXdQVJtWUliuKHSLF8PgTJVTyqQRtfOxq1VQ9BUi24vraMQApsismJtGzz+UJgri1+1IM0vt72FpbOkFQdNKrR+D0O0AmWaytlRw94HV+cEyTVVlyePB5pvww2j13vNwO5CtOhD5Bci/3VWmmYYo+UH04uncG1FOJmQbCRsJatVdhP1zZL3Lptv5L1Br4AUwXH8ducfDhXvj3xB0I6gFwdqtTWgeRa7BMvdl0FUEtRcH+hWmCtKva52WuaOVmvZMfwBJpqKGyWjJJG1bjY0AHk6mJDB6jrZkkHUEuRSUIkCRbxt+ydkjEOnMHYet/rCZRrwd8J1vg+730f8jP7IkkHjqqDdbArZYgrYKq/n//nNfKfkf+M/Oe3OCuXAdbn0wBVT95dBlhTOxHb0h0Ft8sh1sx8gKqLs0EO70yIrtMLIbZ0ajnEujR/U5cB)

    For example, to generate the `combined-dtb.dtb` for the RB3 Gen 2 Vision development kit, combine the following DTBs.
The following code snippet is from the `meta-qcom-hwe/conf/machine/qcs6490-rb3gen2-vision-kit.conf` file:

KERNEL_DEVICETREE:pn-linux-qcom-custom = " \
                        qcom/qcs6490-addons-rb3gen2-video-mezz.dtb \
                        qcom/qcs6490-addons-rb3gen2-vision-mezz.dtb \
                        qcom/qcs6490-addons-rb3gen2-vision-mezz-hsp.dtb \
                        qcom/qcs6490-addons-rb3gen2-ptz-mezz.dtb \
                        qcom/qcs6490-addons-rb3gen2-ia-mezz.dtb \
                        qcom/qcs5430-fp1-addons-rb3gen2-vision-mezz.dtb \
                        qcom/qcs5430-fp1-addons-rb3gen2-vision-mezz-hsp.dtb \
                        qcom/qcs5430-fp2-addons-rb3gen2-vision-mezz.dtb \
                        qcom/qcs5430-fp2-addons-rb3gen2-vision-mezz-hsp.dtb \
                        qcom/qcs5430-fp2p5-addons-rb3gen2-vision-mezz.dtb \
                        qcom/qcs5430-fp2p5-addons-rb3gen2-vision-mezz-hsp.dtb \
                        qcom/qcs5430-fp3-addons-rb3gen2-vision-mezz.dtb \
                        qcom/qcs5430-fp2p5-addons-rb3gen2-vision-mezz-hsp.dtb \
                        "
        Copy to clipboard

    **DTB partition**

    - The generated vfat image named dtb.bin contains the combined DTB image.
A dedicated partition named `dtb` is present on the Qualcomm development kits. Flash the `dtb.bin` on this partition.
    - UEFI parses the combined DTB present in the `dtb` partition
and selects a matching DTB for the hardware.

## Managing partitions in Qualcomm Linux

This section describes how you can add, delete, modify, and rename partitions.

Qualcomm Linux uses a pre-generated `partition.xml` file by default.
The pre-generated file is delivered as part of the
`QCM6490_bootbinaries.zip` file. When you initiate a build,
the `partition.xml` file from `QCM6490_bootbinaries.zip` is used and steps
3 to 5 are run from [Ptool workflow](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html#ptool-workflow) figure.

To add, delete, modify, or rename partitions, Qualcomm Linux provides configuration files,
which define partitions for the UFS device.
The configuration files are in the `meta-qcom-hwe/recipes-devtools/partition-utils/qcom-partition-confs/` directory.

By modifying these configuration files and integrating these in the build,
you can generate a custom partition layout. When a configuration file from
`meta-qcom-hwe/recipes-devtools/partition-utils/qcom-partition-confs/` is used in
Qualcomm Linux builds, the workflow spans all the steps from the [Ptool workflow](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html#ptool-workflow) figure.

The following table lists the files and tools used for partitioning:

| File or tool | Description |
| --- | --- |
| Partition XML (mandatory) | Defines the Qualcomm internal XML format. |
| Ptool (mandatory) | Qualcomm Ptool that converts information in partition XML to GUID Partition Table (GPT) binaries. |
| Partition layout file (optional) | Defines all partitions for storage in JSON format. |
| gen\_partition tool (optional) | Reads the partition layout file and generates an internal XML format handled by the Qualcomm Ptool. |

The partition definitions in JSON format (used by the .conf files),
existing partitions, and the tool that generates the GUID partition
table for Qualcomm development kits are as follows:

Note

The following partition layout and examples are specific to the UFS.

- **Partition layout file**

    The device partitions the UFS to store various images of the bootchain and the Linux operating system.
The configuration file details the partitions configured for a specific Qualcomm development kit.
The following configuration file in the workspace defines the UFS partitions for the RB3 Gen 2 development kit:
`meta-qcom-hwe/recipes-devtools/partition-utils/qcom-partition-confs/qcm6490-partitions.conf`.

    - **Partition layout file syntax**

        The following examples from the `qcm6490-partitions.conf` file show the syntax of the partition layout file.

        The first entry in the configuration file defines the disk type, disk size, logical block addressing (LBA) size (sector size),
and whether the last partition should grow till the last usable LBA.

# select disk type emmc | nand | ufs mandatory
            # disk size in bytes is mandatory
            
            --disk --type=ufs --size=137438953472 --write-protect-boundary=0 --sector-size-in-bytes=4096 --grow-last-partition
            Copy to clipboard

        The `qcm6490-partitions.conf` file specifies the following examples of partitions.
A few partitions are defined in LUN0, with each line representing an individual partition.

Note

In the following examples, the `firmware-qcom-bootbins_1.0.bb` recipe downloads
the `partition.xml` file from [Qualcomm software center](https://softwarecenter.qualcomm.com/) and takes the GUIDs from it.

        - Example 1: The `ssd` partition of 8 KB is defined for LUN0. This
partition doesn’t require a file to be flashed, hence `--filename=` parameter isn’t used.

--partition --lun=0 --name=ssd --size=8KB --type-guid=2C86E742-745E-4FDD-BFD8-B6A7AC638772
                Copy to clipboard

        A couple of partitions are defined in LUN1. Each line defines an
individual partition:

        - Example 2: The `xbl_a` partition of 3604 KB is defined for LUN1.
Flash the `xbl.elf` file to this partition.

#This is LUN 1 - Boot LUN A
                --partition --lun=1 --name=xbl_a --size=3604KB --type-guid=DEA0BA2C-CBDD-4805-B4F9-F428251C3E98 --filename=xbl.elf
                Copy to clipboard
        - Example 3: The `xbl_config_a` partition of 512 KB is defined for
LUN1. Flash the `xbl_config.elf` file to this partition.

#This is LUN 1 - Boot LUN A
                --partition --lun=1 --name=xbl_config_a --size=512KB --type-guid=5A325AE4-4276-B66D-0ADD-3494DF27706A --filename=xbl_config.elf
                Copy to clipboard

        A partition defined in LUN4:

        - Example 4: The `aop_a` partition of 512 KB is defined for LUN4.
Flash the `aop.mbn` file to this partition.

--partition --lun=4 --name=aop_a --size=512KB --type-guid=D69E90A5-4CAB-0071-F6DF-AB977F141A7F --filename=aop.mbn
                Copy to clipboard

        The options used for each partition entry are as follows:

        - Mandatory options:

--lun (mandatory for UFS, optional for emmc. Expressed as number)
                --name (name for the partition, a string)
                --size (size of the partition, generally expressed in KB)
                --type-guid (GUID for the partition)
                Copy to clipboard
        - Optional options:

--attributes  (Optional 64 bit attribute, e.g., 1000000000000004)
                --filename    (Name of the file that is flashed to the partition)
                --readonly    (whether the partition should be read-only, values true or false)
                --sparse      (whether the partition is for a sparsed image, values true or false)
                Copy to clipboard
- **Linux operating system partitions**

    | Partitions | Description |
    | --- | --- |
    | EFI partition | The EFI system partition (ESP) contains `Esp.bin` and a `vfat` file. It contains all the<br>details necessary for the UEFI to enable systemd-boot. For more information on this image, see<br>[EFI image](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html#efi-image-section). |
    | Rootfs partition | This partition contains the `system.img` image file. This image consists of all the<br>user space libraries and binaries. |
- **Partition tool (Ptool)**

    Ptool generates a GUID partition table binary that the QDL tool uses to partition the storage.

    The following figure shows the Ptool workflow:

![../../_images/ptool.png](data:image/png;base64,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)

    **Figure : Ptool workflow**

    - **Modify partition**

        The `qcm6490-partitions.conf` file present in the `meta-qcom-hwe/recipes-devtools/partition-utils/qcom-partition-confs` directory
defines all the partitions. The `gen_partition.py` tool processes and generates `partition.xml`, which is a mandatory input for
`ptool.py`. As a final step, Ptool generates the `rawprogram.xml`, `patch.xml`, `gpt_main*.bin`, and
`gpt_backup*.bin` files, which are required by the QDL tool to flash the system image to the device.

        To add a partition, make a partition entry in the configuration file; for example `qcm6490-partitions.conf` with a universal unique
identifier (UUID).

        After updating the conf file, to switch the preferred provider of virtual/partconf
to `qcom-partition-confs_1.0.bb`, add the following line to `local.conf`.

PREFERRED_PROVIDER_virtual/partconf = "qcom-partition-confs"
            Copy to clipboard

        After adding the entry, run the BitBake command to generate all necessary files:

bitbake <image-name>
            Copy to clipboard

        After the image build completes, if MACHINE selected is qcs6490-rb3gen2-core-kit and the image recipe selected is qcom-console-image, run the following command to flash the image.

cd <workspace>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-core-kit/qcom-console-image
            ./qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml
            Copy to clipboard

## Use of Docker containers

Qualcomm Linux enables Docker containers. To use Docker containers, ensure that Qualcomm
BSP has enabled the virtualization features. To use containers on
Qualcomm Linux devices, ensure that the `meta-virtualization` layer is enabled as
part of the workspace.

- **Docker**

    The `qcom-multimedia-image` enables Docker:

    1. For the `qcom-multimedia-image` image recipe,
`packagegroup-qcom-containers` is included using
`meta-qcom-distro/recipes-products/packagegroups/packagegroup-qcom-multimedia.bb`.
    2. The `packagegroup-qcom-containers` is defined in the `meta-qcom-hwe` layer at
`dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-qcom-containers.bb`.
    3. After the image is built and flashed, Docker is available on the
device.
    4. To verify kernel compatibility, run the `check-config.sh` script
on the device. To verify the configuration, enable the required kernel
configurations and rebuild the image. For more
information, see [Kernel
compatibility](https://docs.docker.com/engine/install/troubleshoot/#:~:text=Kernel%20compatibility,check%2Dconfig.sh%20script.&amp;text=The%20script%20only%20works%20on%20Linux).
    5. To verify the status of the Docker daemon, run the following command and verify the output:

        | Command | Description | Output |
        | --- | --- | --- |
        | `systemctl status docker` | If Docker commands have been run at least once after boot-up | Active (running) |
        | `systemctl status docker` | If the device has not run any Docker commands after boot-up | Inactive (dead) |
        |  |  |  |

    The images pulled from the Docker repository for the `linux/arm64` platform and tested to run successfully on the device are as follows:

> 
> 
> - `busybox`
>     - `python`
>     - `alpine`
>     - `ubuntu`
>     - `postgres`
>     - `mongo`
>     - `nginx`
>     - `redis`

    The following use cases are verified with Docker enabled:

    - Load Docker images from tar files using the Docker load utility.
    - Build a Docker image from the Docker file.
    - Save Docker images that were pulled/built into a `.tar` file.
    - Load Docker images, which are saved as `.tar` files.
    - Run multiple container instances of multiple images pulled/built.
    - Verify the list of Docker images loaded on the device.
    - Verify the list of active and total containers on the device.
    - Inspect Docker images using the Docker inspect utility.
    - Obtain logs from a container using the Docker logs utility.
    - Stop and kill the container using the Docker stop and Docker kill utilities.
    - Remove containers and Docker images from the device.
- **Hardware node access from Docker**

    The applications running inside a Docker container may need access to device nodes and
files on the device (that is, device is the host for the Docker container). Pass the respective
device nodes as an option with the run command for Docker to perform this task:

docker run -it --rm --device=<device-1> --device=<device-2> <docker-image-name>
        Copy to clipboard

    Pass the device nodes located in the `/dev` directory on the device.
Depending on the use case, for example, in a graphics scenario, pass
`/dev/kgsl-3d0` to Docker using `--device=/dev/kgsl-3d0`.

    Applications running inside a Docker container may also need access to storage on the device (target-host).
To expose files/directories as bind mounts, run the following command:

docker run -it --rm --mount type=bind,source=<source-path-on-device>,target=<destination-path-inside-container> <docker-image-name>
        Copy to clipboard

    Run a docker container exposing multiple directories, files, and
device nodes to the container using the following command:

docker run -it --rm --device=<device-1> --device=<device-2> --mount type=bind,source=<source-path-on-device-1>,target=<destination-path-inside-container-1>  --mount type=bind,source=<source-path-on-device-2>,target=<destination-path-inside-container-2> <docker-image-name>
        Copy to clipboard
- **Docker Compose**

    Docker Compose is a tool for defining and running multicontainer applications.
It streamlines managing the application stack by defining services, networks,
and volumes in a single, comprehensible YAML configuration file. By default,
the Qualcomm Linux release includes Docker Compose in the `qcom-multimedia-image`.

    The `docker-compose` package is added to the `packagegroup-qcom-multimedia` package group in the `meta-qcom-distro` metadata layer
through `packagegroup-qcom-containers`.

    **To run Docker Compose on the device:**

    1. Create or copy the Docker Compose YAML files under the writable path on a
device such as `/var` (for example `/var/docker-compose-yaml`)
to be used with Docker Compose on the device.
    2. Ensure that the Docker images listed in your Docker Compose YAML
files are available on the device. If not, the device should be
connected to a valid Internet connection to pull the docker images.
    3. To run Docker Compose for multiple YAML files, run the following
command:

docker-compose -f <docker-compose-file-1>.yml -f <docker-compose\u0002file-2>.yml up
            Copy to clipboard

    Docker Compose runs and initiates the Docker containers as configured
in the Docker Compose YAML file. After the Docker Compose command
returns, run `docker ps -a` and `docker logs <conatiner-id>` to
verify if the docker containers are running as expected.

    To know more about Docker Compose, see [Docker Compose overview](https://docs.docker.com/compose).

## Setup Kubernetes with Qualcomm Linux

Kubernetes is an open-source platform used to automate the deployment, scaling, and management of applications running in a container. It helps
organize containers across multiple devices, ensuring efficient resource utilization, high availability, and scalability of applications.
Kubernetes is useful not only for large-scale servers and cloud systems but also for small-scale Linux embedded devices.
It helps manage and orchestrate containers and applications across IoT devices efficiently.
For more information about Kubernetes, see the official website of [Kubernetes](https://kubernetes.io/).

- **Enable Kubernetes**

    - The Qualcomm Linux release enables Kubernetes by default in
`qcom-multimedia-image`, through the following changes:

        - The `packagegroup-qcom-k8s` is defined in the `meta-qcom-hwe` layer at `dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-qcom-k8s.bb`.
        - The `packagegroup-qcom-k8s` is included in the `recipes-products/packagegroups/packagegroup-qcom-multimedia.bb` image recipe in the `meta-qcom-distro` layer.
    - To verify the status of kubelet after bootup, run the following command and verify the output:

        | Command | Description | Output |
        | --- | --- | --- |
        | `systemctl status kubelet` | If the device has been set up at least once as a Kubernetes node using kubeadm after bootup | Active (running) |
        | `systemctl status kubelet` | If the device has not been set up as a Kubernetes node using kubeadm after bootup | Inactive (dead) |
        |  |  |  |

**Changes made in Docker and Kubernetes in contrast to the** `meta-virtualization` **solution**

- The `meta-qcom-hwe/dynamic-layers/virtualization-layer/recipes-containers/docker/docker-moby_git.bbappend` file
modifies `/${systemd_unitdir}/system/docker.service` to add option
`--exec-opt native.cgroupdriver=systemd` to the `dockerd`
command that runs as part of `ExecStart` of the service. This maintains parity with
the `cgroupdriver` between Docker and Kubernetes.
- The `meta-qcom-hwe`/`recipes-containers`/`kubernetes`/`kubernetes_git.bbappend` file
modifies `/lib/systemd/system/kubelet.service.d/10-kubeadm.conf`
to add `--fail-swap-on=false` as part of `KUBELET_EXTRA_ARGS`.
By default, Kubernetes expects swap to be **OFF**, but Qualcomm Linux has swap set to **ON** with the zram feature enabled.
Setting `--fail-swap-on=false` allows the kubelet to run even if swap memory is enabled.
- The upstream `kubelet.service` attempts to start automatically upon
device bootup, even if the device isn’t configured as a Kubernetes
node. However, this behavior consumes resources and impacts power.
To address this, modify `kubelet.service` by
removing `WantedBy=multi-user.target` in the
`meta-qcom-hwe/recipes-containers/kubernetes/kubernetes_git.bbappend`
file. With `WantedBy=multi-user.target` deleted, the upstream `kubelet.service`
starts when the device is set up as a Kubernetes node
using `kubeadm`, rather than automatically at bootup as part of `multi-user.target`.

## Configure properties

Properties (`property-vault`) provide functionality to store and share
key-value pairs stored as strings across the system. Any software
component can share any value for a particular key and any other process
can access the value by using the same key. `property-vault` allows you
to define persistent properties across reboots. Components can use
`property-vault` to share specific information, which might be
relevant to any other modules on the device. These key-value pairs can be
accessed using the command-line interface (CLI).

Note

`property-vault` is supported only in `custom` variant.

- **Configure properties using CLI on Qualcomm device**

    To set a property using the CLI on the Qualcomm device, use the following command:

setprop "my-key" "my-value"
        Copy to clipboard

    To access a property using the CLI, use the following command:

getprop "my-key"
        Copy to clipboard

    Output of the previous command:

my-value
        Copy to clipboard

    To set a property using the CLI and make it persistent across reboots on the device, use
the following command:

setprop "persist.my-key" "my-value"
        Copy to clipboard

Note

For a property to persist across reboots, the property key must start with `persist`.
- **Use Properties in Qualcomm Linux C/C++ source files**

    To use the properties in C/C++ source code modules, do the following:

    1. To use properties in a program,
for example, in `example-recipe.bb`, add a dependency on
`property-vault`:

DEPENDS += "glib-2.0 property-vault"
            RDEPENDS:${PN} += "property-vault"
            Copy to clipboard
    2. Change build configuration files:

        1. If you are using `autotools`:

            `configure.ac`

...
                
                PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, dummy=yes, AC_MSG_ERROR(GLib >= 2.16 is required))
                GLIB_CFLAGS="$GLIB_CFLAGS"
                GLIB_LIBS="$GLIB_LIBS"
                AC_SUBST(GLIB_CFLAGS)
                AC_SUBST(GLIB_LIBS)
                
                AC_CONFIG_FILES([Makefile])
                ...
                Copy to clipboard

            `Makefile.am`

root_sbindir       = "/sbin"
                root_sbin_PROGRAMS = property-test
                
                property_test_SOURCES  = source.c
                property_test_CFLAGS = @GLIB_CFLAGS@
                property_test_LDFLAGS = @GLIB_LIBS@ -lpropertyvault
                Copy to clipboard
        2. If you are using `cmake`:

            `CMakeList.txt`

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -lpthread -lrt -lm -lglib-2.0 -ldl -latomic")
                target_link_libraries (your-lib-name propertyvault)
                Copy to clipboard
    3. Modify the source code files to `get` and `set` properties:

        `source.c`

#include "properties.h"
            
            int main() {
                // set a property
                property_set("my-key", "my-value");
            
                // get a property
                char paramstr[PROP_VALUE_MAX];
                // value gets stored in paramstr
                property_get("my-key", paramstr, "default-val");

                // set a property which has to persist across reboots
                property_set("persist.my-key", "my-value");
            
                // get a persisted property
                property_get("my-key", paramstr, "default-val");
            
                return 0;
            }
            Copy to clipboard

Note

The property key name can be up to 64 characters long, and the property value can be up to 92 characters long, as defined by `PROP_NAME_MAX` and `PROP_VALUE_MAX` in `properties.h`.
    4. Build the recipe on the host computer and include it as part of the image to be flashed on the device.

## Persist partition

The BSP software components use the persist partition defined for the UFS to store persistent data across reboots.

Note

The files under persist partition are supposed to remain intact, including reboots and OTA updates.
Therefore, erasing or wiping the entire partition to delete files isn’t recommended.

- **Persist mount point**

    The `/var/persist` directory is a mount point for a file system created on the persist partition.
The `var-persist-mount_1.0.bb` recipe is responsible for installing the
`var-persist.mount` systemd unit to `local-fs.target`.

    At boot up, the `var-persist.mount` systemd unit creates `/var/persist`
path and mounts `/dev/disk/by-partlabel/persist` on `/var/persist`.
To display the persist mount point, run the mount command as follows:

sh-5.1# mount | grep persist
        /dev/sda4 on /var/persist type ext4 (rw,relatime,rootcontext=system_u:object_r:qcom_persist_t:s0,seclabel,stripe=128)
        Copy to clipboard
- **Resize persist partition**

    Persist partition is auto-resized by `resize-partition@persist.service` ,
which is installed by the `qcom-resize-partitions.bb` recipe. The `resize-partition`
service runs at device boot to expand the filesystemd to the maximum
available size in the partition.

## Create secondary virtual machine

This section provides the steps for creating virtual machine (VM)
images using Qualcomm Linux build system.

To use a virtual machine with Qualcomm Linux, ensure that the image recipes include the
virtual machine manager (VMM) tools, and generate the Guest VM kernel and root file system images.

The following procedure provides a step-by-step guide for the following:

> 
> 
> - Include essential VMM tools such as `crosvm` and `qemu`
> in the image recipes already defined in Qualcomm Linux.
> - Use commands to build Guest VM kernel and root file system images.
> - Use commands to launch the Guest VM.

1. **Set up the development machine.**

    - Install clang on the host development machine.

> 
> 
> To install clang on the host development machine, run the following command:
> 
> 
> sudo apt install clang-11
>             Copy to clipboard
    - Enable the meta-rust layer in Qualcomm Linux environment.

> 
> 
> The meta-rust layer provides Rust compiler (rustc) and package
> manager (cargo) to compile crosvm, which is implemented in the Rust
> language.
> 
> 
> Add the meta-rust layer to EXTRALAYERS in the
> `meta-qcom-distro/conf/bblayers.conf` file.
> 
> 
> Open the `conf/bblayers.conf` file and add the layer path to `EXTRALAYERS` variable as follows:
> 
> 
> EXTRALAYERS ?= " \
>             ${WORKSPACE}/layers/meta-rust \
>             "
>             Copy to clipboard
    - Include Rust from meta-rust in build.

> 
> 
> Create the `meta-qcom-distro/conf/distro/include/rust_version.inc` file with the following content:
> 
> 
> # include this in your distribution to easily switch between versions
>             # just by changing RUST_VERSION variable
>             
>             RUST_VERSION ?= "1.73.0"
>             
>             PREFERRED_VERSION_cargo ?= "${RUST_VERSION}"
>             PREFERRED_VERSION_cargo-native ?= "${RUST_VERSION}"
>             PREFERRED_VERSION_libstd-rs ?= "${RUST_VERSION}"
>             PREFERRED_VERSION_rust ?= "${RUST_VERSION}"
>             PREFERRED_VERSION_rust-cross-${TARGET_ARCH} ?= "${RUST_VERSION}"
>             PREFERRED_VERSION_rust-llvm ?= "${RUST_VERSION}"
>             PREFERRED_VERSION_rust-llvm-native ?= "${RUST_VERSION}"
>             PREFERRED_VERSION_rust-native ?= "${RUST_VERSION}"
>             Copy to clipboard
> 
> 
> Include the `rust_version.inc` file in the
> `meta-qcom-distro/conf/distro/qcom-wayland.conf` file
> as follows:
> 
> 
> require conf/distro/include/rust_version.inc
>             Copy to clipboard
2. **Add crosvm tool to Qualcomm Linux images.**

    To add crosvm tool to the images built by Qualcomm Linux, edit the `meta-qcom-distro/recipes-products/packagegroups/packagegroup-qcom-vm-host.bb` package group recipe file and add the following code block:

RDEPENDS:packagegroup-qcom-vm-host:append:qcom-custom-bsp = "\
           crosvm \
           "
        Copy to clipboard
3. **Build the image recipe and the Guest VM images.**

    - To build an existing Qualcomm Linux image recipe, run the `bitbake <image>` command. This includes the crosvm tool in the image generated.
    - For example, for `qcom-console-image` run the following command:

bitbake qcom-console-image
            Copy to clipboard
    - To build a Guest VM image, run the following command:

bitbake multiconfig:qcom-guestvm:qcom-guestvm-image
            Copy to clipboard

        **Guest VM artifacts**

> 
> 
> After the Guest VM image is successfully created, you can find the following artifacts:
> 
> 
> 
> > 
> > 
> > 1. The Guest VM build command creates a folder named `tmp-qcom-guestvm-glibc` for the Guest VM image.
> >         2. The Guest VM kernel and rootfs images are generated in the `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>` directory.
> >         3. The `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>/Image` file is the Guest VM kernel image.
> >         4. The `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>/qcom-guestvm-image-<machine-name>.ext4` file is the Guest VM root file system image.
> >         5. After flashing the images created by the `bitbake <image>` command and booting up the device, copy the Guest VM kernel and root file system images to the device, for example, under the `/var/gunyah` directory.
4. **Launch Guest VM.**

    To launch Guest VM, use the crosvm VMM tool.

    In the following command, the Guest VM kernel and the root file system images are from the `/var/gunyah` directory on the device.

crosvm --log-level=debug --no-syslog run --disable-sandbox --hypervisor gunyah --protected-vm-without-firmware \
        --serial=type=stdout,hardware=virtio-console,console,stdin,num=1 --serial=type=stdout,hardware=serial,earlycon,num=1 \
        --root /var/gunyah/qcom-guestvm-image-qcs9100-ride-sx.ext4 --no-balloon --no-rng --params \
        "earlyprintk=serial panic=0" /var/gunyah/Image
        Copy to clipboard

    - The `--root /var/gunyah/qcom-guestvm-image-qcs9100-ride-sx.ext4` option specifies the path to the root file system for the Guest VM.
    - The last parameter `/var/gunyah/Image` is passed to the `crosvm` tool that specifies the path to the kernel image.

    For more information, see [Virtualization](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-3/features.html#virtualization).

## OTA update for Qualcomm Linux

OTA updates are essential for keeping devices functioning, especially embedded systems and IoT devices.
These updates allow devices to receive and install updates.

Qualcomm Linux uses capsule update mechanism for updating firmware images,
and OSTree update mechanism for updating Linux OS.

> 
> 
> ![../../_images/OTA_Introduction.png](data:image/png;base64,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)
> 
> **Figure : OTA update for Qualcomm Linux**

- **Firmware update using capsule**

    Capsule update is a method for updating firmware on Qualcomm Linux-enabled devices.
A UEFI capsule packages the firmware into a binary format.
When the device boots up and functions in normal mission mode, it downloads and deploys the capsule to the EFI partition.
On reboot, during the next bootup cycle, the UEFI processes this capsule and applies the update to the device firmware.
- **OSTree for Linux operating system updates**

    OSTree is a tool for managing version-controlled, atomic updates of Linux-based operating systems. It works like a
git repository for the entire Linux filesystem. OSTree stores snapshots of filesystem trees in repositories, which
devices pull over the network. With OSTree, updates are atomic and support rollback, so an interrupted update won’t
break the system. This is useful for IoT or edge devices that need secure, consistent updates that can
be rolled back if something goes wrong.
- **Use capsule and OSTree for complete OTA software updates**

    To manage firmware and OS updates in a single OTA system, use capsule and OSTree update mechanisms together.
Capsule update mechanism handles the firmware updates first, updating the low-level
firmware. After the capsule update, the system reboots and reaches Linux OS, where it checks and applies the OSTree updates.

    Qualcomm Linux uses capsule to update low-level firmware through UEFI.

    Following are the steps to update firmware using capsule:

    1. Create capsule: A binary known as a UEFI capsule encapsulates the firmware update.
    2. Delivery: The system delivers the capsule binary to the UEFI by storing it in the mounted `/EFI` path.
    3. Processing: The UEFI firmware processes the capsule during the bootup
cycle, and applies the update to the device firmware.

    Qualcomm Linux uses OSTree to manage the Linux OS. The system copies the Qualcomm Linux build-generated update package to
the device and stages it for activation using commands listed in [Linux OS update flow using OSTree](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html#linux-os-update-flow-using-ostree).
After the device reboots, it applies the update package.

    The following figure shows the storage view for the Linux OS with OSTree.
The **Runtime** view indicates which directories from the **Storage at default deployment** are
mapped to the mount-points at runtime.

    The **Storage after creation of new deployment** view shows how the flash storage updates when the device successfully creates
a new OSTree deployment. This deployment is newly created and attempts as the new Linux OS on the next reboot.

![../../_images/OTAupdate.png](data:image/png;base64,UklGRvJTAABXRUJQVlA4IOZTAACwFAKdASqwBLICPwF+tVWrKD+jIrPLE/AgCWdu+/JcEW9Gc/2OAOcFM/Ulclpcw+MQf/SJ//+n/t0O6c+rp/R+nb9Nb17dOk8f/4z/B903+k8K/x/6V/U/33z1sg/qn+D5m/zH8Ifzf8j5z/+f+9eKfxq/5P8l7AvsX9dPXj+Q/a3ubdK/4f7Q+wL64/Xf2Y9DD3v/x/3r1M+w3/g/yXwAf0j93fYf/k+DR+Y/5H7SfAR/Pf8z+3Huuf437i+hX9E/3/sG/0T/K//v/YDZQYcDp9xocM8wdN+sT7jQ4Z5g6b9Yn3GhwzzB036xPuNDhnmDpv1ifcaG7+ydBWiVFmRPrLC9w0TBNp0N39k6CtEafna5vNIc/JOG/V0fR2DpOA32BvsDfYG+wN9gb7A32BvsDfYG+wN9gb7A12NsKLFcuiHr+WNLXFy1tXseMiSGylIVGarOkEwjuTOQMr6hrJoEtYOf7+KgQgzVrwZFm6O6xpsCEybASyIPMYCzCG4EV/C9o37Ix7vLvtC2BCsRnTf0pQQqbYj+rXqtPlYl3Cbm5TN8iVFk5iQTVrabbNvYoJZAih28+SQfPb3juCHcEO4IdudmSH1DR8hO2btys13bVnjnriNKoYyjzbEcuLLhJn8bZgvbDlIZFx+1WWdLpSkYeSAfQid80hRxJK5IioerKPtPYXVHEfInHIwp0l7Qkb/xxEZqea0q4Fqrp0+Dzd7I8hbm2+wN9gcE3n1R1povX16af2u0Rrv9owahNvQEUrMX+9cm+sdQRmHsItlicRX9pkuEfFDatmDQED1OLQGtDJrDt60LxoCd2EL2Qh+sUZW36dDhnmDhHXsQ6i6k2WNd7H8YRlX012PvRWFGL4uzrUpsKanZCNx7iLMEw0kA0itmG91fTaqOpyXM1YQAlsoWMLl33E1KKm8h6afVYGX4YoScZVYPg051vp0dBwj5FslVWsLza6ZB1n/qWomUEqzoY7boaF7RiqC9xlY5w7+81QaPgVN+ILWIRwtfWPwObT6+birP7l7rIT9h/dfppuz9ldULVJZi19mWJxmWTGFN+8H9nAOPOdhfi7KLhXEmPmn9I2PJJMBpFb8085cl29jZbMakf2gpiA32BvsDavdgQ65FhSaHkaK0l99XxivjFfGKXsl3pOAUfBd6BVw9EjF/sFAoW6t7lyqSCBqo9O6QaV2Lk0TYyQ7gh3BC+e4GqYQizsUQyz3si3dMRbC/9vl+GgabvU3epu9TMbecttgH1Dh8pjHhBbFNuQvLonn4zeiQ9E4NtVBMQnw4CUfSqgdWRNzjFRY55nfVN3qbn7pzMa4QbzWSKIxb7A32BvsDfXSx2JFvtOrTUNxp00BeMwVmSnxh5cynZv3fGK+L/ixUD3BWCICPKvIPx4jr5zF0zfA0Hf/WeZQaEGxXxf3BHaw07cZTNujlQuqu2LRZpEx/czYI8O4IdwQ64ZEBEu1ImKmM8i7cYqDPtHltU7WeqU0bV+HA/5bs9H+nOf1XwtCiNpuQX7T2FK1qdMN+NwR2sNO3EIhNi1KSrNEJhPgYr4xXxivhY2Osdh8IcA4nPhgckLYMglNsij9QhVttw6km1dGj41SxiwSQkhoBz63XEnvJ1mg/hHXmu9JFvlHzMjXfB1eJhktRjkxlhaRJImQ0QgN9wJGT44n181VyXapLMetjsSKoWKVJSXykvlJfKPrHYkW/HIWglDCCypD9VZ7D2TFCPzpJVOOejI6KLCWm8NoSq7iWSX3txje4yCQjvhWZt/mq1+qQmNhYz1D0cqbVGD4G+t8Ut6RJrlZ33TmY1wyCGwL5Ymv+tOcjwKtTXwIj1B+y1+Qdvjn37vjFfGK8LW+wHh53mJEtw1XymRFIcOt3tloL+R4NWFlmuMOA32B67zRpSzYjqiCAAERLvRBuH3OYQ4BFrv7AhdNvFCeTrNEO4IdvOW4tb6zPptNtAnjBCX/ZEexMBm/6Wgb7A32BtU7Wep7mWjxgoWgOxAZUDGvRwKO+YYQ9Eh3M4Uv2HN0XBHaw07dGA27i9T5NQS1J0IryP4ACR4Rs1T8UgtmMP23qVk3enIpwsiABWI9TVJ0d4TG0AtITduwidYcX6r4v5wJxeuAQxb7A32BsbJ7EuIcX92+FjJ7dGA3kJNmyKkRtj90iMTI4HZFLyr7etFfGK+MUvZLvRS/IUuozqRd8wE0vBdpYFY3IX/IVrXFvrozI13hedjYC+wW0lMDizlA3si6lDdQQLzTKGSHTm71S/n65yEcEtiK8LSjopnWBK+IpnHVmwQT/3O1KkXJxDYEciD1FI13441cGBAH6srZxL61Xfe3eimdAvyGk9jnVYOwj8pV4bhlhDQ0M3tlrEy89OmbzIbFFm4ogXKAr3dMiSCqYNxXdY984E4vXAHr9+FEh6JB/vXtOBnXqOI8AnctnartK272vYIh8xJs7vHaVcgQ9MkU4UH9FkQG019u1AGFIba0fajKKLSSjTNypm45aEAQzyf0Ur88Y7HV8HKt/p3G0SK+MV8X8nRolT9uCzapjXDIIbbWco3hUlcg5hXNOEfyfABhL4xXzJuZb7A2sGgZ0C/IaOhSfBDreKU4qRiYBtwngr+CUxuhV8h8Xp5lrPXPcBOT2nWdP3lDcEO4IXrsF2SaI75/PAKYdXRph7c5cUJmUq8r5QyCaVeGQ0ABqxFAPI9R66CiQ9A7Yidjqaw4eAIyoGCdezDxlbxijIorMscHEcmT2Kbsulnjdyjtw75yckxHPw6EWGiwIoiBsV3aIzfu+MV4WghHHNL2tFevQR4xu+Hfevdu34hkZsG0RMHRhtKi76JD0RXEH1E9wUzZpyPjYrfNOV6ycAIZ5SHdE1EIOWbajXj7uTvzeCHcEL6kloIdy5jAj10GpWTd2THXc9ylpZ/G9UU2b+jx1Tb6F3ljWJu6sGx03h+fC//wDqMDyj5hfyWEnPqoJP10PTJFOFCiQ7ovKX41nWo/XzotA4RlcF9Aq179Ng8FQq8QKWN5Jx+1ipjGDjUuVk78KxnPAwM6oQYi3bndJ5fkBfXLeQTtfsDfYEPS/pCOd1YVgHdRBRIQXE4ukezJOkPekCo07+C1/MXbUHNwVqTa4jtc8DPrw7+46TUx7ZpTCO+onuCPDqXza+Bj6Uh7TkCDCWGzIdsUA7FMDa2wLlQRsZUD28ykbXCGHZIhMYmRfqvjFfF/egc4mjn2BrWwmyqS+Un7UQCfYOKrCQVFOxcYkbDDJzhJJa1aeHhZEBEu1SXyVywjE//bYoGYko+OJmQMldRuYFPMGe60pAG0ABbyWqu4GLfYG+ulj5GUiIBetmO5Vpxs/xAJJpjjZ7xrCv4sXZHvfov6JmKMpzd66aUl8pLMgRkB61jG3ZuM23r9qtVl/T1zhywzTl0H99gzZfSHqjvGKcQG1TtZ6oJ6OlvaVWxoYHdhICxCP0reG3/sPN3qbu8I+3ZAE1t82oEDlXnZwvKvAnaipxPhoFfGLor4xXha32BLJhS0XBk1gHqBI9kiiHi5u31rhvRIeiKvynuYP6cQG+wN9gbWDUqWvuLyARLDHGDgFpEhT4Cep+OZgOeZ9GMVmVapgjxRabvU3P6Ydse7wthsAHRSU6AyWWspfZmsRY8d7MchdSREOxXwrM2/zILqJqbGLiuUnGJtkwXjMAjUHdvsDfYEPTdz6MUDRJ9+y/1of1Yacb8wNn23dfSXicndmpGFvorAxXxivhY2OsfHc/ph1+VV4tQ2b0fPUcW3xw3d3K09zAepn86JD0SHoHbHuXg3QTRn0bMnJIJZVb1jX6e+xdfLbooikHXDwFcLxJwYJ+Ul8lO3RgSyZjbziMD6jLrP8sayOGRVH66MyNd3ubU+gyHRcw3QXhYo++Me929J1VaYN39uw9Eh4AFML6kmPEWoBGWTib3cWUagtQQJmIxmYe6h31XHh4G5XoRzr2ydr6G5VueifYG+uljsSNBQO2Il7+gPejF6mFg1ltb3fYG1TtZ658nFwTXzqlfaBVA+fINtf1UUX3MMKOFkjtYihS8kEik21J1N5A08fT7Uiz/ekUvua0uaTy3FrnLawaBfh1ErZE/cXfMgCDg6czAp5g0qGfaNikAXf3zXIszJVH8WEyY6W/hDq89tJLBm70AvObZCdmRmLLPdwM9bKdZ0H0BCVv3sqj6x8d3pyCr9fhBY+dtQD6gbA1Pax/pnSoOutE4S3anKVRd5WNXDswHiTSHgATuIwe7ykmFSOMmfA2qdrPb4GxOcHEokIx62vo4nb7LHBoPA4GPw4DfOXvC5C0LtrQNQUwEo30zL1N9oEuFTOAa9ETkjw7ecSHcDHgGJvbiA0fg2KGLecuBil7JdqPM9NLT8nN3dytPdhu7S0uuGUJGYYCJnyCLjii557qE29+22X4gyyEkVCrWmpyW1Xxtxnm25nRr6L35JqAt92U3tMepLMWvjFFzW5aRdHU4yS4bhB4R31Fr4WNjqGjTEELZER4XsnHGSPCwhBRu0b9gKAABJSaqA7qTgGfaGENepatc5ODyo3lvWrn7pzMYJa2LQYLrWe2AowLzOcfnq3kiP36m7tOGfQMLkDYKSx9nQM6lY5FMqgFV6gaSIiV4T8iBDJKK8jrAHIV+Zd8QLn+bi/nAnGSPCtqATEqZ0f1lvybOjtIoFr5QDeVVsGbkVg7m1iNJYk/bE2XOu/1QDGKqcYgK4cS+Rayc7fCxs3yksHrXtqZx9NBLav6y5xJVUylrd8SxtO5ixGvH2+3t/Ocs6BnUrHIqFESUj9rdPSvxGIZHAN67FvkM54GzfJTt7cRKTfdFmCxHM3mD/4/wyeFnEEE+ee8ctfzY9ZmMNTG9AYHsqkvkp7eN5QFw9SShliBcnONnAhl6GIhjZvkp2+Bsl23qIu7eLj37Qd/S/h5ufKd+cPNz+miZXcIDWsAwZPlGPQx8pbZB85x5IFz0eoOZsUarH/1KOeBO2d63ehHjFLyPDt2I8QkOAE9g6TXijtKdujAlkzG4IdVr+pHjEnjKd6uqbIURV+U92G7vCPqaUWTni9QrTBQ5kXPpZycWPjmL70wOzrZ0GQXDaaYRST5BHCu/d8GpW4w0G6kcDQ1d/OXVmsc4WOxI0FA7Y93cGuGH89PdrgSjzZDVfF/OBOMkeF9RaPAIWHT8e4J+S0XjPFBqekJ70EcK79y34j5EN0KYwqVUTOENqUKJDukIhaHV1JvAgeGn17OgZ1KxyKhREdM9w11dnuA3yGc8DZvkYBDh7HMnqn2nbkAdJ7zjS41wsbN7dqksusYxZA1HTbRtH08rnFLpCoPbhWXAixgnph2x7vC1zlMDjc3epu7uVp7sN3aCaHlfuI2iIOmygYXdFGdMAYo5X0rcIQDR/2310sfHMX3pY9ykXBVAWEoOh4SsE1CRjepO+kvlJfKS+UfWOxI0E+t4P+sUSD5j0+Y6n99jrYd864/YG+QznD85h6CGeYOjr6GADtUPrE+qEnDOSgeBf7KR3L5mMDaXeXOg6b9Yn3Ghwzy+NeFNKddjjoaQvNro69neZY9DPMHTfe3S/UQ/kmtkjabhXPQChJfR44gN9gb7mVeBsouFc9AKEl9IPiA32BvsDfYWI+W+wNqbpTOpVTocM8wdN+sT7jQ4Z5g6b9Yn3GhwzzB036xPuNDhnmDpv1ifcaHDPMHTfrE+40OGeYOm/WJ9I7i1PAAP2IEUDRNixBG2jDc4AB/1gverTznhwIAuzDtxcD5ovXBLLbs1AN7ltqPR9Qad4Tj8yyfpyugANtJIS21LgztAZnEUStzP2Zfswk8CBkuPqvPsZdRS0nUV0y0JhREdmP5/uyqggfslzEM8dw/MV2ct2y++kL3AAjmWT8IAOXECfCrHavJ0sKy14Jy46pO9ovKGqWYr8oiQuUwRM0IerjimEPOjXUGgiGHf8GozeYXn5ctGkO9pRdnKiL55pj/T1FWn2m1Cr2+kEanabBit92k/Iwn0RuRFHVotfB7E0ubVz5JXMu4By3WAndnDRYAqIqz01Cu9CJA7JZroxQLgJLVb+q4f8fD1rCeyR+0VjykwZsJ964u4eF4YM8MbCIM78NR1YZVFwB/T45DbcybRrinrwNjpA/gcl8T39PUv2ueyj29RWM2/pgzR5ojXj9Ft4BX7xWLXXcQdLwLlC3ZATLTURQG1sd1Uv4YW4C/bo1EAM6+ICKTo6UxAiSMARWV/clFKle/xfzP072gNx6hm0pvX78Z3eQvHkv5zt7aFERc1zfbI4jsQBFPMKq+f8WMOHQe3ZASbAf67H+fHs9ShJyq0wJ9XEZwrE9RYTA881NLo8yZZ/ZsztbzGIOe77WlYLjnxOa/6CA6P65xZGPe050kgI2UwY30huH/u7FRAeGBq0a/F6xiyIy9N5zNqBUwx3RnKpxTezeuvSw2nG//Iulffrf1zyq44WTlJG5ljuZkAgLm2Wtm+3nK4SmluKRbhoQ1Lr5ps/eFZ73H9iKYB+VWuIvxoBMi2d263cu9bBsWWod134tr8r1yznysmS8uG5iiQ9AeIcj916crqPy0KDqyUoUwar8+zSVAN7bZxxsHUcD6dBLhgCE7Vyst+b3m1cbChIOkvz2z2emmZWEZB1sYr3ea1XHLz0y5XQpEANg0C5vocUMuqtTdJQR6AsXFdIh7RxWyDykc1xxX8IN7HiyP7FhIeR6CVqDMaIeXbpgzAmN7zmljEg3CuingfEBQFOnoQANkCSDc6tFzM/3Nf8dbrpWVf7dbkVgUbAyw+mq0A4emi7yz5B9dBmo5/27E7glF4xgOUX0v8eRY7CyLRQr1JVDVL0keVPWiIBak41DrvCpzGU8nOR4uSFdJOlBz98HJ+rsw/wj9Q5byDbutYSosJA2KGPfph5LgugZlTGpS75VLPvD996rTz3u1G/i5qUXkyanZEUUyTEGNMUTfBkyRJsPgrphTpVZqgcA2N0G5oBpjijj0HyIlc6uftVFbsYNd+cpjDvuqBDh5Q1c4gJ0Yz5FxXtC/kUm4GlbFEWUlDgSpUVFpT4ED7Z7PWAQ/gOmlgc/ifYn4rwyRGXv0Ks8lq87ntAH/FSlOT8SJSiHWF/4rw82bWY1iPXoUJRI6fbZnrYVrkzW2ZTMtXgG4QUfvjwjA7lTnRztlO0MW59PbRDWK2SGdew/7H3u5urQswxImPyletWnB22izIqNfXgvCruMs7enRRXJFxvumFFhvuSRlVEKCokuJfSugXEkoa/29+FtkjNPB8jFDYUTVKO04+X3GuXAOaTlmEoxB1T3rLW6x4+BDjgcJ/kveEyFxGAX0k7WBYsfeDegz/G4/DsiaCN+RIrU3Chv+5nyqL+2WMzrIfzjjFDm5EUzgUDCKG7PIiflnXA/aq2LQtAVQGaqc2J/Rn0XG65hOpKVmgN7yhDZYv+NsQdD9FIqDtp4tzk+iY693xE8EzSUlRcRLFN6JTUpDAqAvwqL+zX6MA7UYJhBTIuPKLNec8xF0yiuYV//BXVrS+vaTEdJFe0bbCoysKVYieBJ4H/p28AIJNy2zWvckDJ9Ja8pKgEuFIl9HE+EMdL9I5erWZjyFhIoabChf2vO87Nrc9u3MIWM28DA24f+QtbxZtVXCC+QwvpsdrC68mky7MFO/NsuZYX/y9WOu2y79lO2QXenV6NYZUTDCH6FutG152M6oRiBzFQ7b6/iOMTX12VpnPQd71pbqHwI3oBV2dIgqpWAGJZJFBRKX3IEIXrtM3gj6hxm1L2amjr3IvlsLO2E+BgaSNBKdoHyELBqvY1EfKCh5nwNqERwEJqyeLEAac73yYRTQfgUg0D92LpNNePwPa2sOwMafevyjvYHeJEQX+PHORyPohT70qsdynRv9rWXyXuGFeuVIhW0mHvf1XCdIS+3Vu/CEVUTOS3KOCPXvvm29QllamaqIWtK2yWgnqCcZn49R6r65/PpxeXhmrLMl3+xm7oLHd4gQWd8wRiYKocDSZlBlDIEODaKJKXdM47cUfcHATQncPzIcF8FSpduFmrZYyrJTfn8GoEi3AqyN4mS8qnFPHOK1RKUSteLfbg5drH6RayCWVYgnoBVQbjKA47zy3B6shFVvz1woQQWpubxFLH4VP16u4+paARr25cECMN90SzyAQbJY1AKfLyWPHV6T3vwd9WvL1WigewoFsXcd21fysu+ob4bTjTKFXVa7IEIUiL8JdpV/rEXUe3yQa2sjScux4q8p4rqYqxQQkLoP9i2msbpHDlhDXjivC2DjXeTxnj/nda4byWnCqBaZZuGtskpDcq5Xy3GRKoHoXHoE9q/IRbyLhBsJJvnBYa4T9oXNFMZR8vLBrqFgfRgILUA4CBtBOsE9hUnp43qCFGMXQroG8gkr5VX6jeKsn5d1l1Z+IuaJ/paKUHjpSf1voT81n0wD27+AUTUNCDptKOTw8OEGLFnG/NydMcuo6dMWV1LldPdvf08nsm9t1U1+q3/4Fe/cf2Csi4AfcBlguBYEwNJAr3HePxL6/RlBW5+vPE5ACpsNtiX8XSzwZ02Yfx+WBgACnyQQ4IO6dzApha4E6a3d5ChPKardJd4ofCyHDU6bL+ykI+vW0NyCWH2ALNQRXBjt2RUwEBFuFE6ScdEgYxrj/1Ki1LN/QwUCg/1npvOzBqRkqywhOSQg821LPTxJWMdSlbaDhwr6ypJVgNBt+yKCO31IND2XPw+zQd25TjYCFVq6f2CKOCMbfF9x6h5zP1c4jc5UG/0/ehXLgaIE1LcUTbwMryB4tZ1FIvnxdclgRuapNFBd+oTbLV6NfPKdO3uaRqw0ERFKxe6E0wJTsi5BwZ2NHpBMPPQ3ewjCrmiyo2udiirkBVrBsquI2KCDdCePAL904GPk2Nc+Y1sFKUBWpIJdroK3YOv0bVkT3rZJkXKCGfeVLX1nTkeBKKYfeFA571m6RsnMA8fy1ONttbh2YbtsfIH+lultOS6r3wPC4/LkAiBGfYrZsKwD4t9vd6q792B5QxfUhzcdnngWJ6zvWPeEEhtEX+7MaicQCcNM8jM3+Zj8x3+JLDuWe8N4z4ZZrL92Dzt72OFA4rFmGEh591bGUbPkZfezV1vpTP7HR2yYTtaaqNmWj3I7nBRS9aHtgliuo9HbsCRMe1xzWE/xdkZdc6o5DlwDU2YFTx08a5hCky6iRS41vPN3cdHZ/hVfW15iINDlHEWqDJqJOwvniyoUX/89f6g8PhUaIFreqNvP8hs75iZ3KC+rJpoQHSfrODrf4EMQc8OktMtc0lTgVgewVOix4So4LxnwnqPx5VGefpyFG2QJtCAoSHAMAs221BsfZaQ4PAJqktUGOkCikyW16KVNL0WJzzbWFYEBfXVRBHVQiyCXz4vpZ9+XwA52JmNmxEc2aTD4PLLIRdWOQiY+xS6Ue9PMeU9SsVeT8H7B8ZG5czEExcLwr+i6hFs3p9kQ32M8UI3isALDeZzr/OLpqTLlmojMKTi+blURR7879kRMGxHpmkWqKsLj3dA1k5jwuNVc0tWvm7hzCEGXKGUZ2tsXe3pK33VhzvKWkJMuZPJHqzIIsxhVQH0M8nXS8wNtRvqjlJiamXo4LD/nupuw2ZzIvNDEYPcE77w5V1m/0D24kbbLKGAjpiR39nm6LP5O4ZDQNMeciRp128lOjAbaH0/NOkUb08BBfL8JUcJVwoRuA3xHVZ3/ZBBE+4ke6OQ1gLvKgj36/KrYeNbEZX39Zzxobo4eVI2GSFX89gGerCRUgBOyRmuR2nU6CIDW4+yGXXo+uCQZoOtNK9tJii1Q4OELqxFGvDywSEdh1RzBZfzUp2uUqn5uk+pVtvj+a11TC/Wl3ZKuXvMVvAq86I4WQhFckATU9YaGW+LfOW722ruCDhFU4KyKvkOlWKUBDWoarEzEf6630VF9oBBVv853UjueVe1ZPmGvRHwz8qhibgkZ1YzOZwuJWTbphaZ9torNJdzaWxkVHBK8zzit04BBTijMLEl5QeBPwJNYVITpNlxiC4bKEHAUFTHzlEQhxbgwu4EGZxFQNi/fSerkQXtUs8Is19yNzlX+wASxf6DHIwq+p1C0g0Fqb19aUN1K4/x5gzlRpnmaYbbD0fBctMvYET31oUdmeWzGAK3eFPsC09QjYOHj34QBdfcxJeTpddUcs4ryG6Vrwdc0fMwtDiKg+SYhbin1kX2MxGXirlcAXARCZ2A/wIZTsGmiEcLJmXggLu0CdrC8E/0+9vx3IIlpOODzzGDFHN14EOCs7i7r51tBmtSqkA1fjUe+9zWTooTvp4ja/MuIYPQk+aKGVpPjUIlTDNNwjKSmP/fneCQXJqi1qT5xmp0Zt88mHet7OpPwBisM/E1SQVEs/fjSSeGyUduFsYjFWhdKZSHK/Wd7s3s6v0h6IJIbSaKCw1gGW95hSrMQF7t5n2cb7XCQsLzjVo/E1ijJ/z9ZcAg0Sff2VefXTm3SYiXOQ1Gkj7nr8s7LNqAJ02QyeG08ZaOjQQUE8NZeii+AWxq3WywDmU+q9bj7n1d+LMPKFc6X4zmnQgbM8v1ax9fceBV8ZyB8VRrSSdTcV+ZA7VXntrV1ZFpn73Y3BXLB9VbcZJPkhf3P/sKiM/miuwjjEMR5EZzbNUcHImZYZjAA0I8C99jsvLiB/wPjitqVm6zE3KOeY3nGHsSRZ9lA+HJw+QZ6LRnvmsMs2basZgbrEFe5qYHRis81LNLj7Kj/ji0fAPiY4/YCnsP8aHWgANmhbQS3va0cpZdSJaNmLsKiQvDnJWtIrhWDkcBTK0ddoGGiS+kMQ0wN31ejnsGb6C7TCVVrPSLE5pBOeFY7rO2vw8IxiQsSXk5F2iRSLB0/Vios2UgCqavBfT+sbQPSdp0jPB4L1x5aYuwPGoMplMLwUpq7H1+Netl7BHgnXaSQz8pGtNke6MwwkxZqOO9SrBVpqf+1RSYKc7sf4T+got4GgZ05WOhr/apxOrReEkd4KPTtFl1wJkYi+wWlXLrrl+eed4O3EG2ItCaFPHcIxmidtjYpVWOxSaO+CsOy6PZANvBKNvy5gJmsaWfZTyzbmWmqG+95MK+UzaUMXPQJ35TSGQlVl0iXkgreidUCHlF5Vbug4V2EORFLuPspNhVGzZh7wvOCMBEUnuquS5IhCnX2pFAokTEX/J9FULka6Vs0bPzBK2ImfQxKcbOtS07+XnonzowzJYRcdA1suzPSPiN8E+Wujje3FMLXAg3aZB55AqzByws6J2hS2XOBvseLBx8O3pVDXi8V0mIOwL/JAN3lTYa8fP9UY7uDlPQRLuvd9kd5e3nwLYvtqmEDybgqS3Ry0f+/3q1/qGTNa6CSbylW/Ew5GrDgLAq4drPcZZAK8vq8o1rJkmQZiw+uvFjMCZ9bxP4qARfcuuCbxfQnXBru5h+yKykgAeCKklGVtwKqBYyR2v4zjBnM1oxwgT47O4eOsWJG0lf1iby3qcE/kQDJNnoYkSBw8tuuuYtcb4X5M7DIPsCNwPLZE0fQAE690Jf5ec1oxtVWOEmllSJ+ZaDTxKqADmEeTYDqVAWnr2NOatD+GZM5Rdob+zSzjpzRXFYVTrRaLckJskm9AgUr4x9AhN4wY2JnvBr7SBvu7MNk69/2yZLKcBxOjgXhO9LMOWOEZh17gMiU1YDVbDBvG5VpBn7rvWEZpKe7khWFkhCp2W6KdrOZEzbisNkfgK1kPB+ayV/gzGwRnQJ8wQ9NOJAKiyleTPU8bNfXQ8p/eZzMmV14Ys6hk50swIGkissa6agYAt8UIAOEr8FWCzRuAV2rsuZZSPpvNlPy0oJA9p7fEy1vYvCqIrN19NICzplOqnu3MEqf9N9quZsfsVaWMtNh8ECzDVRCRhpFbgcybgNv3lcNghJ9c9LkoGTApeIVi1xWKhKL4q9yJ359GBEWOw/xv+zFsm3h/m5Fwhq48NJ9MG+TWunLD4jVLmNov2bH9nWLvOTKMxysO2HN5VyX6ae6SLfsFp0R9biMf3Fq26/Oj+yKSdoevofJOFhuwWiWk4dBDdeOrnuprBU7ogAnhBbFF5w4egxl56ci9OSgFOKVCCKTYxLJDWagK3DQ5QGdKTkvSgJcibVV+m27X/+I6mBuJ1Nigmz922cniBO7Ztzwjnk8sCkSTA0ES8Khq1nZWg/GCdQZOkf6wUSC2TuLukAmo6LMfNXOUcxr21pKDZ5TA12+JhNxyYrrOGcCGA4T5iea+5Eq5JuGF1OkE5Yuob0A+Way5O4cvXXHY9OHPk8nSWn7/b4jwLw+gvynbQUN+rpzJdOGg8B8mNl23GMbsXfWX1tm5heQvRAet8W/ncBQs6a23XoUTOVKncIoIFoRSKOjHZ8tgaElGfyGCLuxNZ5O5+/Gd9Mhyy/AlNjQYqYmIVb3PuwbSe75Bd94HOn/lJotEH+xbNu9wUgKeLXBOVyLo4V8WJBtC7ia2acoPAgWr5jKpWc3MA9TFRNGC9yyvhoRsgQz1tJXfQT1UV3cEbHHR4WQewsxwYuMTyTJ23nMQ1z4S617Ce4BOQ6op7WRfZYD4/YQBrIj5P47w0NeJ691zP0tsi7qjUfQw17uitIXjMrWdDr6f8WJxPajkRFyJ7rMzunheLUblIDvnR9JGL7H+0rDb1pmvZQ2LaDurzE7DJOcD4Fub4b6YNvOTFmrWhIyHXTlhEgePq3lj8EY4TM+sIXR2GYzFiHs02bX7lj9vXbaY8CLZFhbGTjFqNNaDIo/PLylVMwbnkeq1vy2rQYf/UpjQgMdceXJNaHBXWd3K2CAp1CsyY8EqlgSVbGTbbGvkObpqOc4tyYshgcAlTlCg6DbX3kFLbTWuefadCttBD9K//COY/qc3spSLoBmNTYt74rJUQ+mhMDtQD/1/tNmqtNfwP1Iun4/Tpuo6rsowaSdIYge+9vP/oxfDrf+jFnMXbgNfg5egKtscD3iUJXc2G7kBGr4ZKXLt/P6mBKOfW8W76XQcjR3w4Vo72JrX/06B9RnBv/TZdmQISSXO/AIQzwiEqltxHdxsg5ckghtnPKT0aaAbcKVj0IBUC3SOMpJ3RVc+ZnkbdzNQ3lw5zl5RgDFwt6KCNLC61AdI5BPZy22vo8hpFWBeFiKo0EbAoosJDoE6NC+AyDDB744DqeJuZr+/6ENIdkhVax8LWre07uZ/yP7LOkZ/4P1Tevg8v4BhsWYooJxyWV8vDrQXw49wDzX4bx0NOu6ZtU/YOGlxT4ja+Vvh9QRNBUU7wXKWoxNhbJVGLaUVSHvR8xL4ApP0vxyMV4LCnpWc3GTcqcPmBBmcFdHqMP0/g1WVPnxnlhQgSulzBs/nmzBFNQBmcTXuVJdLOuAhT59nKsqQskSW4dbv/7Jz6nbzBOTffwHf6hMgoPEtdH28DEa9DEvxA/NLSVjQsaIwWpZukMfEA1NhtyCxJnsdVWuNas8izI69jfzcN5T7fUIA1Gc8xkj7JZlXxBYAU/j73dhEpEW/JWFltltgEmbtp45cvI1IYuMpio08aGn7tgMIOCHyUVTVaXl+gDS2Zv6wUYsMAfvpgu40Z3SJ8ak4SR5YOy085bFseFv50cAaV38OdIKAkyilG+MyY9Tp7fbiRnmzIJMi+0/bR3I3Mbp2J2UcNvmTPm+IBzg0Eh72HB4iF7Oaf8m+xErNI3cZzqi6mX1da6ubz/KcBvAUCCxlmBnFuDerqjkoZ/RIg6Yq8TD1K0+v7YkSI9iq6h+8NhWmoNBxEs7t4jQbgQ7TQw1ixYaWd+j5eZoA/lVm7sALRqqfcHkUk6MX3Y9ZuUncnjtq8HuwkACEJMIpjuQSd+ZU6XHybGYwm1HslXuLPpYVrPpyC/fWBLwYVVNzJxy52eWN7PG0Zfbr7XtsHi3uWUgl/VJ2aZWSa3O+hlqihoswOj7NQbEArirRAGq9U4lKIKNUbzZNjoAGOwYtBjdakOL1poW81nQrmGTVlQWOQMEe+rKxMCUB2F/w9iImGcYZggdrsmyQDbGvCroAcHFTKatKwARceaEnyoeu0DUdS5hqLsDmbdTzLV5NwhfjeFmmUNiTCSOZLQ7ZRchvddIEUoxCbzEb8Mi1fmXVTgAtCF7t9bpLak3PV3gAVtMUAkhWjPvwEIY46/NIeiRHKSxFC2T/4PH/4D1lL9LziMb+24AuHivPu7c+DzDC/fXBbJummAqyeegpTR2esWF87B/Y7b/FsiDEew5m8gmBDaUyJq5Xihi59LXWF7ii9HqEZO7p2uDn/4H/HkQi70bg0JQTAROo2RrOYaxmljNXQiHTf7KbfDNDHLvqR3dKa44phzEVmupzCebsVTdXYsRjCtlFJ30CoFzFZPphsYVFUgiVaSndjY7jmFBN0RfzmUCcUzwc9U1TmJsM5QPBxMkyuVPk4h7+IVMiNJ8wW42FtZZhZ4q4FFnV8uBVsYiSCqEJSOxHTNcRC16VeTWbKW36kbzHsxRQVyh3Z4x+LVJAcaZSDvCHlgj1s3CGrpL6ssuOYvQQ9ETtu3i2jdJyssBvjQiDiJVAuW4QQMmwKwDsbC/rRPaGL9KVL3/ikOPfM0rPt5yDpVyn9tYYoogJgeejkNr3EDZtko8aixpPX56OtaBCTIr4Mfgc6jEAu2s80SnwETTpwESXUvMlBXmP8RjO/jUEirvUZX84U+1SADmi9ztAT5Q1sgfY+8gxyTsHyDyBvzVP5/dGg9SZRYdGerauE8qftUGhAyzc9COg1ICrNN36R9DrWNlKyC97nh1DO6pT58EGeOVpMkbHmWezl9zFG+o29JBqgcpp5RNhOtDs5d2AkzPFXyivFGrYQB83YgL59qs8cHUgw1gSuL82AQr9lmuNAtYEPznG+xXXLWXh2Z2S/mjSDHWZZ3V4tK1Owjvyq9iJZI/25Lt95aUAR0lAN3vhcP22/04QtBMPorQu15SWp+mD8yqyylN8GnhCAYeJzRPRiL3aYNijYi4xH1K+oCQqKfJDGig7lr4ix7MmLvDC+5k45IAugfYV1YiRCFI1vdV//Kt1N0HOSX5Hpa6JPU9lzEf7IxvODWrOId01q03NlT4FJBaaogy1rqRZFgw/GlmmaWnotvyegzgQarslDno4FB+wyEPq67GRTdkEElxZWMuFhxooYBWJDnxwtp3lWbc6RvdKKwJcTLCMIcqq1XcNbvjYQMI4jDv4yzWp+15WTGyxo3ctgTsDPvy9xf6dAwgaevpZ066CLONHocaiiiio7bKHx9lL9lTSC1HmfsZiJCeLN8Umzn/4n48FgqF5qzDtl0HHsT9PKeiCbpP8bhdGo9z2MIUdsyW/o/+DmRaTDteVj67N6dk8X390ht3eAObdw9qxg/uLtwuUpnxat8DYw/f7YW94DeH5Q5n5Q+QABk5kwOYwYyqQMxlxvMMrMOgTn4VOe7KcmY2M8caIoYPeKciv6SfgoSrNgMWZyZL02eWnE6rJWSxNpinHx/7y8aiNdGkVIGOpPX4BaG+ZdSq99RzxtEs3qFiZVf+SFEDwY4l/bwb+Pls6B46vuWUF5OJjpTgOkWxIEetOrY21vr1K9nDlB2QbNkSiBQ7E+haWv134Anuz2O6ZChLhhTH6PhSkzOfWrBVb0esZgf8NgKzlzK2GSi2yAb1s3wFnfrrcQnca71j2rftx1lO6Ut7LZT1RmLwQYTG3TZ4+XdsMblRSaqSxgOfd4LOIeD6OuyzLiHT0dxyulVaMugqgMrVN1TV7TRt4lHEbF3G8Xh1vhvU7QSfikdNK7fdLx/zBVqBOG0ctSawLMmBQ766i3ulgXwUyBYoQX2bHgdq8ofwPvR+XkETWy4HHI7adMXKFjRf4QalGeCv6z20I13EAEtGqZ4nX0UcwA42H8jZTDGr9PrSFeKMyrsxvKtirjlvj+ZmBGdbsIAyJAznuA1pXqWsyMpPmJCJyY3ZYjcbKbul00it5vr2Yt1JXJD05JtYL1qOXrXoSMELZXJDADu1HcskoDxELqcgHi/JVLAkq2MmJtRhC/1d6BEaRrBdRGR9CygkBJkmapW/hIRf7I4LBRgTKS+j3nb7BuEO18jOhj/lmMDt9Jm+HAx7HqhddF1n7xx7sanGRni5RU1YOfaSSLGHXHhVDb9IXerwiwi+1LdzrgfrlxW6sr9OyqwhlLEqf46IvQ/CO7uxNwp29NZkxD+jgIJ81uk1wAMdSlHV6mIhxAWDxuvq72Edsk8Tnd8bYyZw5qsiMEFg7S4BlKi2+RLOzsDpkc4H7LgN7SlJGTCtIBPEAlFwq7+WTIdHd1wJrFkTsVhaXlNYJHqJDY12I3FnT5AJa1sh/L1dkxIqVt6s04/a7J98p+PltRPDDDztc3Jgx+M0LDyrBwhV8sarCRjjlvYDYJlm2Q8OC1BB0a2ur6jDBT7NP8d9TXRukUi3gXoc2iqJL29dZrdTUZbfXfQGR3Bvig8DeUUfjXHCyiMKuunFsmJt14yoWEWunG25HAxDynMAzdOys44L8E2doaIym71qy9OrzO6ywvwN2o2+m2aEUUmvZ8jB66GsqGyzwyFfBk4xdZJ2TZYh3XAw95NM1hfPqmiCMy1r9r6VVPr7y+3GUm52D3DGqBsd8ysBbDuUAE9/iu8n3N3+ichj0KlMFQnr7a/fJS2roLEV+f5bUnjzR/EhYJYjXRTboqmA3rYvKn5O32HGAFu3UgbOJ5xcsxU1jsTTykPNhCoa298uvmG04VlYDzZxVK9UtiC+O3RZsEeIB3EIVPt9187vMtcxYRM52cygZ83mDKYf/gpE+GAkpRBY79te+Rm2vw1r9+NOuelKL5Z/lOdwABvER1FwbALHTIhbRg1Tnce45cpxP4ou+KjrCMxzYU+Ine1yPBBZu/boN2a9H5s6RgTVJqH13VjsCdMuz/QRbSaprLBS2yF3IU0+3t+Lgvn7bVlqdAMECLC3RIIfIIuApo3jsU+BMZRwTwE0n+oWhFyPINI/G+gOyczDMWUU4elIx6tChRpD9/qPzgAi5rdXfjZtqSJ7acUC9qTpbDp7YMuz/k4W0zDCwdAvxktkvKg7gaO4xz/VEX2N/wCuL+vV/rtqgL79hR92tVcqUMVIZt81pn7cXeI0uLxcVcJ/26kQl+Y9HQQGGq1PBxDRMK/bg0U8FKTsNaLkmGuCvtw2xAB2kfIKQ8f4nnQgySd8nEtuYhCIWbvmMm4QHvz4Tg4lql8nl1h98T3bxJ8olUH0/KKrlI/PNDUm9DgFy5kkycG/hSq6W8HFaMZAasabgzSlSZveH5MQ9/zX7vtWdzIFsI6F53ZX1q2JM4RGQKL4Kz2e2pRqgN+dGeKlyGof0zQXTxxMO4qPPVZcb/9mGPJVj1YgjmMwxFAkeDRECk/ztFWrGtp8tCTbi+MBXNn0HO2/PyFkHdil8JhLXkYdQukWRBHtmPxaa5EKGZNFPfXQy+PFmrcOpo2ji1ZkGZMwdYgXXotFKDQrou6PVAhXD4m13lir8AH8QHrUEjf49X1KxOS/EXZyS6VUpchNuceXjohjVJXhgfUibF816NjahjoKfqaORO3Vk9ws6I9g5utK9UXdKliJtW9cihymFUxuHgwHOko20dk/56YhPrYS30GpG1fpBKeXRID0wfUEHZ51YrhYi1CvXo12n/7ezKYbowvlPyk2BslJgOgKzFT8oWkOPeB51AlJjPFIMIgz1oI3HBgpvVIvrEmQ53qYAz+W6xX9DVbUReGtf9YdOwngEDWqs3WDnmk1v4QHSdr9U5vvprPMEf5RpnUOWEv7DTLzthXGhH7kCA8ARim+cAdmGQfoSsyprXLPJpxvXtRM71D2Urlc1uk1awPFqKj6lO/bJ6I/kvcTik3PIF6rDcfFIIHmWXD4bxVNYoqwzOqJoPyLOR6LeChPCfBqgvghDYIsri6DCAnKxq87jrfsgo5+x0//Je9YaNCTcpYe4HIZOutAoeHExAS6vNR281TyZACCDoLQP3T1EoLojWIFTDfsONVvmGX8LsGCTr8O9DzzvWchgNHlbFDrX5H0gqzTFSzEKfW2sl1B4EJpfJ21JdvxraUothq1nOB72xEe5/DLl7fmyKpltCFITWjfCo56U1B5LM1eDOlmbKD/XYKQJGMCL9GGl9vRqUf6LAw48Wbv0igIw1y0gAAYHGOBE2zv9mho0oq3ZlnrMJvesykkUbv+5Od1fKy2pgtO4eHNyduYmq/iz3cjzNUKQVEM4t+OZDdcMRJBkdX01AlI6aJigt8/s8bNc51zhbl67wSel1bmMCeuoYvHcORX32pHJwsXcFUTj4kcn/y0DmUkoWPOSVebIIQcmXvChuNKQwlcCnx4VV8k3KkjkWSFZ+yc7mz3yyyu2/6z3Hn0lgioQJ54sTa7/f20TZW/6BM9RAkilPYsZxmWqxa3u+TDk9J00rJ5bI8ZfnZVHURF48DLmusGt/rQH+UHlPQyRBCb6/NN1knEWQNd4XfJGNiu8134IE3FhnbKiAiS5c1U6uu6vxOSDUUXvVclQR4mDrmFZ+Zp3mD1uiyjrsUtvZKNHAEruWSmrIsVZAb6OtkLBWYqqWj75CKMVrhO3SbxVgp//c3Ev9b2yR1BfltwNR4wlPuMQX9jHrNGF48DplYvZ3cW8cG07HQ3iPckP60VsbiRFUhCsgOYk76zKdepz2bxlg/eG76jZNpb69sWfnLJkT0HH2qjcdQ3ZYsg1cMZ9MzZcjDBW5RBQsMsT3m+4vzBzaNLNbw8Oog05ZBAIBrVgvled098KkMMzuNjhj4+9IMexCYInCDcv2obtNy2k0HbnAmjEUvWjtwGM5GJ6p1g33j4RQi63StKj5HD7ijNCiH93sQQ7n4F+F7/nAw9zBm1FV4aPRxButKeqknRk5S7xCSGs92w+QJaJZpkwU2ixjUrlbnPL27aKg30lIL6agqoP+CZO+oSL0u9yYdnWMMFi0rjECaD1+/mwG/9YsxyUvP2BWKmoy3aabilGAeEB0+YHh+L32CoPhJw6uKd1dd6qoG46HxzbZEHm8QuL//449zGGIN7ija5j6LqBdEeBsYZB700i/ACBqOJJW3QnEAue8Ckc/2SxAlCrLKMcJyF0nhJDMOTckb6A4Cidocubltx9lkPhVa+TU4khczFgBp24QPZR+mEopsLZE+UjiQ1blOm5Dhayyxck34Hh4XaTW8nAxqU6o527Mwja2ToIN6dV2BgA/zydGIBbXHtU2/2n3xqQPA53OInpJQ57Kz17n5rgwUd7na0chkXrsmddanEcgHRBoL/RHCi5zjRCJwTQEjLaWtYi95PL2w51LkAspbGVSMTy8FRKV/YSGQMyil/YttCWNX2ic8zRkubrPowfRlehJUJDTzYfbdnKsOiQ8OKySr79wFs223x3U74lU9pDDmPtyPl6r3izMKmbbN2uVNw1C/gVx10DmX2gAFNbagU/WEBZI7e0uXmL++vv7OKfqxiq6S+ptyTT40U3la5jhMAUioAdOHpDSy+96S80kPf8n4F7Zgg3tbconTQgdYYm0HKP+ehdgjTNqwLo3j2yPcmjhxi1Ym9+EiV8FuXOexSb61qLOogtwhZAJeYfn9+F4c7tyf6WGKJnDW7FfuAyrk7IV42xVpiGk/ZHcCU+My4KR+Sdlz50FObNP4qz2mbYpCDexQQbzFDG8SX+EsoCUKFShRfISKiTY+eNQeeWvxLRdvfNOkrDS31fFXWWABHl1ebLsReG5N9tQ5ZNs2OLlxJjLg6qfN4nLxqAIx+Ag9VnU2EoqGuWLdFZHOFOe5rl/g8YEMB3ke4Lbu2k1ste362BprusoQDuC2mSYdFV08PhDpK2CIa5c0shegJiUHMdKVwXpJE0n2DMvUXlNdLYJA0LWPYxb8Kr6TEDYDFMbDpJs1djteXexfHYDdiFSksyk+xZgq2DQSXu0N7cO1SkLtTH6hDrw6ng1AASO+B4hI26eloPfWB2TsURjRu8q/vSnRMi7689o+y9qe+ehY1u1aLPQDzx4kenJ2NDswbOSVLQCYWK3t5g7IP5w27kQIRuPGe4GhkhYjdTQm5UUVVffBW5pWMVxXvJgULkYkO0KgYi1rH9PmZjoRkkJQYwxzzC2wAlL8XQ59hGilHOop5b4LSuGezJfkhFKVqkMr2hoFhgCJ3WUeANmHrsApUTuqUEIP5L2xC8rX+eEqosf4+PhH6Bw3pE19kRHyfNpDYua2djAv1o00i7S0t5lRpRvCy5sIJLX84z0kv8qwi2kk/BtDtnlAEn3MgvbM2as8fa7gjd6LxozrXG/RsgJh3vwhip+rYAFONrkz9FlmIpJpcsnhfcHxJs/SBfZL60rMzFIE4m2Gdhlmv9imke/WZ7LyD4QkiSK1caSPSugAfjHOvYE2e1YwiMSGoTbZSkVL11XTXLMdVssFRiAepWAty7pyg2YfGb4lvcUI4wI27JGnnMmeOCcq4vsO+3gTGREYWt+NqoCYpqOjJ325qissm4VdKErlUUvIFlNHtPe6791sgonNqzsxtbS7rEKEjfMTe//fE4olLUu8fdIIa3Bpxk265n13UjgRkmcBP+9o5PZ8FdrfaRRM67p0AOophWvV99mFYtnPse9W4M9LmeHVCRTdP22dLvV7UJ2e0PUxiQ+yKFDYxogDDo6p6XZogr7+CK28bBjo9bswtmgm66/anw3snowesm1FOrKMK81WHX5Yjim20mRUe6jbY38/x01pEBExnboefshOdIx3UllMqeYRwwu8AL9yfXGAos48uR3Ev5lDU4Goic5ebjzczIFHxWfoZGzxIVKQbogmNde6LhqHaUvulhFat1yW9NmaTGqPYHIXwZCKqa/NlOW5feZ5lihhaB8XwSyUgqDnQyVMxrPfJ9r3dPISQknRS+V1G6tk1MYdeB3nwOpa46GE28lTONTXzmb8fDQcWQ7rQbzbmIpGGmLAIs09905EuPeJakSSUI78BTKqSM4DytaCMLQ9z/Xp/El22YW52u01n19PU/ZyQkfR46PjfZtPOQCT8lhk4mlYsgtw9MddclqO4GXpnsrhB4hPL8zUvIRhfkfS/ogQjzfNf406IraoQrnskWlm0FHKpCHCynSj0/Bcw2mPqwULb0smFKQp6gN7KCrC74EzCUTI64PKI6DoPaRdD8QbEe86WkKTCqP4stND28ArSsrcVyoIhwqkvpdLq7YmFGnuv2yhd9LWPHzwDSO9BqA/6OoV2wFBTQgcRpur0SlwTbpXNh08XNTNvchW02nDEtxGj7ifoUMInAyEn2iXEEn+iArOO8xTxuqSaU61hHz0TSPWgQYQqUN80HczJmlVv5u67FM3hVkGvz3Q1zcalk8CtZ0WkK1O9qcAu6RwiXtNTY6C6aw0mC6XYFsGv6rx73CooL384xRSRZOqM06JxCq1bKPEEu0SXe52j4hO7/p7e7yNIcehqSXC/BEpseTIDbUADg3WV5BsZGabKn6XdrUei3+/eQG+H55eHOH7OwLIC5YYNBt6wMm/9eY7mls/9Tl2bD6QVYNyJNY5jRg0D9tD8xVyIk+EuaPi95lIMZa+vIqHmr6wqHr7uURcDrtupv72c0v48pftvoxDZ9tnJgJISUegNvzOpbWtkd4tJk/+A3xGXh/hHRzJ1vCY5MYjaEY7IXEHQMG9hPUZ1UyAsnCYXkQS7OHPI86pr5T+Sgie43WcEL/pYRx3A3ti1sj/Kfhv98DMArtgt1O33qDvaS7exSM9Cs441M+FJPv/+O4ipIeMlBzoM07q+JcrIeG+1jYglI+LDHWbmVrJnSY5LXf0/EK5cjDzPt0kKn6DpayqfvWPjExihfdtasAc6cvGAxtDJaESMqWycif6VMAm74seZ8TttVi1qhvV4bNY4aFN72BfhNfbvc2thlPEllELS7QJgVbfKn1pvLG1nNZgwSbCv8s5oIGElDF1kOTfNZTVYuPQENGj3+CMYZCveJd3HarX6ej6TlrtjJ63zrmMrk45YU+MMRDqfy5xx7q/bgmS2uNDJ4AGlUTPiBWDwnmx+YDxswhcZl54oRpeIf8ykJj22EbFStpq9vnS4CSVfzNkDvX1ZYWsfh+ryCNgfk7WMOhd/CFq0QzY58/zkn4IVGZHTxqPLeXHJOK1MubTh/lOJ1yhpk6m9dceVVqs0szjky0WXVTSAqpMh0sXb847dSfsvg7eeS3HG7lAlHimLRDmI9+voMLvJQFr/+OyoIqG7dM/MC/BJd6bE/ynvgEeISWEK9BPjLzLlukg5nmJHW2A2UipyvfisregfzlTTpnzWZjdYSo/Isjadzn+AsvKEVziADhleepkAuUoIGs0tAy7N89nE0eH6vNUR3FjRpNp1al1L3seZdTS2GYQEXxs1fe1TV1AVBNSlqiwJGbn0MMZhb73Sot5PjArWCefrMLQAXw2hBoBcp30ASPIRVZSTccikiusrHFHVmXas7eRj7H4NyiURwz3SXFOFQyDXtAflLged3l4OJ9FftdOYq0+MGH58oikVYsqBNoetzMgyXKkJM/XGX4Nfgo6JwvhapX895c0maHTsZnwy2+1hbjIdE+bY7oo7Gxny185A3BnZE/gLAvSZgnDCKkF/44NPc+F0Cn2dP2TBWdebRMsU5APF+SqNRMhhD/OUW1iM6JthiQ+Gkq4jI3tH+mdkVS5KwIAOCijNgluL+QUQ3EzAveXMDiXqTQb1H2u41PdGc8+aTpcdhqW/yWMyn39e8iJVwy7dHE8DSjEaZ+cTqZJzt7hlzLsY8CFk0XbJM19zszuRGnCmiubQkEoCVox4SGz1Yq4aa9VE+JE4XiadxvkkqBW3wXtVZB6ACJE81ZalJF8xEwF0Z90gBZJAgKnkQR2moFcS6FEohpWxQTXESr0XFpMenOIRdIhBIhPaL5vJXvg+VpeUVJUnj/QcWf67EsPxrm3n1ZEJxmPHkSDOGq6yym8pN1HEgjqZGizOlmMgILcQ2nUHmW1b0jKcgKsYTq94TW8IFevhgjvt8cx4pL192Jw8VYwLxtrX763UXYEH4mdbjaEDkroO5yhu5Ls4FVTta5xlRG3yIL7nwxP/F/SlR7BDn5MafsehxInU9rIrQnpH4/gq5x2ERS75wxVjYsAo3xHXLIbZgbrMifKFQcGT2qyMO3OYIRpp8ibZBYU9fWUmGQ5HeWzK1z0mQS2I0dMP5RA0Vohl+jF+cb3jBoC8PX6gN5bwpVqKoph7lxPVE3WP9OF6KIwjMliItiXmyCm2guBeYowSErn50Sz6HgvePeo+/deyByYHrBqQ0Hl/2/v4I2c44aEhKbEXNrF0B/uzUXiH7eteSo8oLlJsp9r3pBUg7usDRneLTpXJpWJG9/jZd9P7hmiY8ki1tb3ZATP03EOLEVxQsbtR6l7KKvoRdpMXI4SkIE5fimYeCVmX/4u1gHYcP5M+czh8C/rZ5h/oMQxUk8pZnfCsg13V1aSTjFJIShv02zs7eziCEF1xxvTp0DSGFXTOhA13sgEdwjfSTaAQx4k7gn7Vl0ITDfXDC70uB+AZgMnSQoWP5yjJkwr9hvViWNSM+mbtusRYj1ZZsrl2301zg9M4bcXf/4HdcylZlAkyjEwl60oP9XYaNL/74i6ydmmHpUjKYOg2Vv/oHuiwdYu8DXMwohQxgzi6ew49nx4owe6gPl0gZFRrSIFJQwy1Zv8t9jMRSdpHhAvn2ybu+ivATtj3fpOyzXJw9x7Jtd8abpvY5DBo3Ftpl3IZiQYlUKlTAaAIurE1PsUBGOrOnlMYBKkXU2FaQVIg9n43LPCT1XhuZZUReTyatJZl7xxhGIrUX2Xk61khorh/jOs3vdLKCo/B8fj0cDhNISDVf1jYq6hauRoklPC8N4CEDkq79Ly1/ixhWInbKewyrEfByQwtNWoQyV7YE/2LHNbwqrFkWFzPfrLY+pxf5HlZkJMEZ2zHENSgbQj2LRemLF/mHX89rSl75VHGaevoxBCd+m8DN81l6sQPd6AHgtAI2PIkpwwYovUnbAcKE8v4uuDuisDGC4b3d0Dpk6edAAEofVlilvtAQjw5LFllN982GynSQqv8fr5hTzY4ihqbXFSzhlK/oLIxWO5O7xaweR9Z9d5YRw4d/lb8UmZGxh4EmRzqk6VM4D+SosN+SdoBSaWOu6zerIlu+XKPffkgJowIsv/7vokyZpOVP/keRqoJ3FYIGcxo8RAsQkLWLbif8mepIqHlOjIai8S2WCmkbtJcsdRlezgWDpZ89cu5iLTxN4ni8ljNjwQLFvCz+7NFzH26rJFLXZC4qDKoBnwPRmXVkixgng0aAGcxpEwhHC6BRoQSyBg2Y5thWu/XN5YVuKW0G+C0RUe3V7DMGFB5qvW9ksa+f4iI+xFeATpQgcP913XVDnDTQi9M+bTA0tik79DiWJnd98UdqvayAa+QBpNARZCUAGGpkaGF9HS+LNQ6mInlFlGm+VcLgeldjTThd/5tbGNv7UbN5dokqRAjV2bv4ufPlJNHabP2QdFs72VEGImcEsvB4UJRUcyQe4HEVWMmOSKSPBaqh99Hb6bohHP7Om6jhltoWUM/9HgGvXng31c6n77nO2/5VEuaAJPH0AvHnSpeF5VaFOB1ADCuU4UZrr1w/nXjbWzGt3FUHf0AyCgVoDJHvfnbUMHX4azbPqNBN1SYZ5Rw+7cNeDYJ7F7SIAT0EroVrdeomgY+/m855Mkk2DGtFASkQLEuQwI+QAxghmWmxzpBao6LoIVFT66L4tL6eKtTnD19lBXmkdEmNgcQzUjZ7fWn5z8Zq5ndULiSB+k25v0VNB766Qe7c09x7149ugyo7YTrw07+wZ6kG58sI9RWHUqi4TEZa7VlwBaWTMhdo7VQB41M4sFRIRERkD2Z6Sc6PtJ0plWg53r2BFFnMahRHYRSRzvaflBYajAHeLath31hZSTDr3iWT0Z0HHXkCgxD1yrri38N16dQoWlAQKVxre0PUR/FSFaoSWzP/fMfE3WlZwIobSfLv5Sgk8y8VtVo/XoidKUOBQtj5Aj0+ph9/763NljY1qtjDwJfuDu+mhNLW0LzG26rc5gLCbmjCeX3yw8dxa08ro3yXP7hfo7ldOSP1xgmwGM46Un+KFvGkodTT+pItDzmepYW+RXzWr1GC7iRTtvouEVkuANoFqfPBPyf6NPyB4iTJXnDOeIdhx6MhmoFLxfSat7UlUEXPNR/f1CiAccGiR5vxAQ22nEG2vXlmnNLXOMjpt05s0qfEzPHNIkGXiQaKEbaZuyWK25q+I65wxG6l/1Xf2SL5BvgotLDmLh+Y6y30O6HK9ErQxH7dzuVhIvKpldxilg6FU8Y6gFblFod1ZjZdcdm7BB94P3EjIQ8OQG4h1SvR/Tk6EbWoG8zrH3b1gpOWXGIChDS+IGe6iQWClDyIbLxu2lxekxiTNbpNx3U+UX1zRwfdmm/j1gylbGUkKebkrGBxfMBduTcg31frPR4miBLfafG+XRuBcWhl4+hXgBAqFqeHs7nbdo66v13K6pFEQxV1k61UVP3z8Ewss8aq7dTfoQjpfNuQ4Y4r16Rw900hxA/g9GtZzX+EFpRoD5SZEBlVcv25dltlvNvUlaU3rLkAH/u3EPF8jp46g4G78TfHVOEXF1jyBrXAK4riVkuUisC4kjHZcw1tbt3GCqgF5/G2TRngwBtCPDGOuzxgPTd1oG0Nxx9FvdKu6S+zRx05YXRPAUHZkB5hbTUK9nb6E4Nxe/Kf5qxSs84/mYK6L57ozekq0QRv09zoRltPu4LF2rpuk9Q2Lh7H2OXOWwrqsoQ7xD0ikVF7FqFn2zfVARYgw8QJmaEP1OFhURY5NkwhibV/e4uXSNMkApH4NgAM0c/XyR4hVgZynOYrG50SDd+gkTGz4srXvxytV8YvK79A2iRJT/R35Lxo/tt5KroH+6iCCGJVUAnUs1CoYLTmFokMjNAb+shEThGXBPPAREtBQ1z0xhhxJQwdfn9uffX/uF6RsQaBpmmUROmA+HqjOFSop2a0m76t8LEZddrWDcaaJTQxJuEF/9+RUdkya2IH5Wc2xSwed4CNOgJtPGTQKHYzK2Ypev3TuUMKjnCZEcWwyIPDqFaGyGOGQKaHg/HuT23Q0s3RCDc6ym9ysHj/pEvl51nnt+P9Mbb2PjZ8MGfPjj0PT0Hq9vMZdMAX/yuBFjqnfQlJxtCm5PhmT2BMmRFlps8NR2509b8xEOFVnl0CPb3PzOgXlvDR/BoOCJK2bQV6hjvzMY4Wx3O6u+2DtZ3lLMsq3OYSuUPcyXiFnyPMNZOw2T+oadrMPLQimovhAbYeWvKXgTDoF23s0cMssFNGt+cu9x6e6Bz1hYbo2vlEDusMsOkE7m3aaMFuPLm76qqafqBa7nHOiYd+uCsMcLASAk2Rj6q5ZRG0XRf+OUj+LThfLepGliCwXJKn/xcE87M1KBJoc66A9Q9RwOllIcOOOGQ+JabXkGlQ19OLawt7kDEhYXvFitAR/e/kR1sSbr7cbd7fF01haETSw+azONrpoubV1xc3COCVjJt7XrFFE6Ybg1dqJr0ouPAnolj2gzMC2UkH6icZjfmd9S0lYJXncHFZ0jlylhLzzmn+4Tsj1F0viEeGqoOJSDYfV5D21n4Vn8C3Q7VAipceVB/LowQh2vRtjCiaBjvrsnB6/nfF4AR4UMUb6X3NfSnnq/ba1nZxNONyClHYk1fherMX/mcm9w78AVqF2pGqbpsyvOz7DLAL8xDm2ToUAXdN2zLiz87dFfA3aACkJybjyJh9S9hDiZ3QaJ7sk97u43MqDtEwB7Qv6Tbb89+kY16ZpaLhHffNJOkJ90jqx+t3E7Gkt5ArUUBgClorQcJkr/2Eu0clczDPEP6kbfquTkhcCbf+JLzOn3Y8HgnvtimsvTpREzMpP4UsXjS0S/W+J7+7pJFb7S2I9nzGLO0OhafqFC7WN2FVOh+z8rtuAXDJ8FgGvCDZJFyBaX6xhk0npqo92yA4n69hXXQFOC6WagAaOHW3CbYvmr9ZUgIQUje8wvzNmu4UhbBwOrHeNQ1j+EvkKjexXx4ngNVV6xtLpIYA5GMy5sY7/i5gr6VlvQ+nYzvpHQIK66mAXzVEmq1KY8D9OkTH6RECJdoVqKTc5NSCcd5Nc883xCXDV2TE/JgW5JcWjJpitlcVGhzRb7SiWUMFKoNi/DlSIhX+4Xwtf60BcSEWkSmTfVUaf25nDSJjutZ1HUWYfKKOvvCI5hCtzKscixoa3leQJt43mOA9H+fnPz66kxpEaJ1VeSiHzcXkqzq2m3csmSimYlmOaTIle+QCeczlhEz3kx3mvsR8hM5e+w+mnI7D7ZrQxHB8Ftrtd9jiXLPrNzaUNpi1IpR0yNe+3vU29eMC/2mCJ2uCIrGuPnCWUs6xal+mKmAOiU1gnN2c88Yp1++oijbdCubB6IMcHUPByo2RGR2Gqg8hQ3PrPJiLlGu/Z0fpcwG0D5+Bgv0emwS9pMlggcVMFeUqIis+37oZ5Ofhgox5czQdoxFhm696cQF3FEsUiRUU97sxXHUUOrgACmUHjssCnlc+N6j0Av80fT5s7GimvjTbEJd45x/t23CcRAQP1rsMb0vSZMPjW1eNSx+c7waKvquOfbmdFDJO6+0Px3v5RW3mAFB7p4bbyYtU/QvYL3pzxviK0aI7mw5t/F72n0GYxqhl06Sa9Zj/QIQF/xU3vTYbelpbI2kLC1ba9lVcdfy1WKzPWCvT0yr7Xais/aKTWodig6sv+XSvBJTQfei38uGJ2HeFsCJ9IRvupQbdoJVnJGXc9uemVnJgSBp3FDeMVGxiZ1gSHrniy4UdA2jgomp4Ecr4BdzBbaTDJ4SVNP0PemjFsM5GWIhqwnIWAPpgE7llErNNypF9VeufPEqdl/bnGnKF5wsoqTZD8qlBoa+WMD5TF6ueyzyfVsgIleAaUMPJHicO9g2MvbTFnY2zv2RR8A2C8WRBv+Ji+IvTWRYw3XK2xe2bYQTpumMbIz3tC4yevz0zOPN29YAAqzQJRVMGuwZp/pb10hYO9377nvFIkfcS/ZzeekO2sy9Uzh83HJFcyGHUqlTrtsMFa02hb8JgFYYF1nKBuWmff8k8IMNNjk5fbQ7Y/+n9OgQl9wXOyV+MkAvYZ1Co/OMUv99Oygk+pe9Ji5+zS5iNMFYTAShSEZQraM7UBpGOmuQ31h8qlWGU5Kx0XzkIWFLpNK0Xmwjve2xJnf4BJul8UY53guA95hkfgbwiSb/zbP5YJdoR/YzXiVNlZ22DEE2yCreQ3w33AsfIXx4V/n5q/vqnSMsYhl7nRdtxCIBiKAmitD1mcKKPfD4X5K7yd/vRoIJTcbanHmQzLc2jsa90oxV9m1wWu36Bq4Umr8uuCDYqR95opjvDzUGmJEuoltPWbwwjAoTgywpYW9ofH3WyBRnaQAnm5GrSPOCIZ+0GxRM32xUif0obxsNJ5lTZrYVvDKiiSZCt4gBJDeA654o4a/1fd9IWZcTLXLR9TSzmmVX2OBFFgKrQo8ZBuBH9DSYUjgSlVWfY44e4EwclWlzySSQQjUy6a66Boq5zklyEpC6gagOud64W0DXaoLnGfigNrYoZO37eF0gOghMESkubCbkIKIjbGLwyRA697gFLDcFDXCjKeCu2gRzMyJGlkAQdcGpnx2ADT1N/9Yp/2cANfufOBrP6ut7/4zuAzEyXONz8qQlqCJvzXuh0UY3x+lIRWAAAHZKITl6T5cAAAAP2qHImDMAAAA)

    **Overview of the storage during OTA update**

Following is the list of Linux OS and firmware images updated as part of OTA:

> 
> 
> - **Linux OS images**
> 
> 
> 
> > 
> > 
> > - The `efi.bin` file contains the UKI, initrd, and boot loader configuration files. OSTree creates a new configuration file during deployment. It lists the paths to the new kernel and initramfs images copied to the EFI partition.
> >     - The `system.img` file contains the rootfs, including key components like `/ostree`, `/ostree/repo`, and `/ostree/deploy`. When a new deployment is created, OSTree updates the filesystem tree to reflect the new version of the operating system.
> - **Firmware images**
> 
> 
> 
> > 
> > 
> > For information related to the list of firmware images, see [GitHub](https://github.com/quic/cbsp-boot-utilities/blob/main/uefi_capsule_generation/FirmwarePartitions.md).

- **Capsule update flow**

    Following table shows the capsule and HLOS update flow with the description:

    | Workflow steps | Description |
    | --- | --- |
    | ![../../_images/OTA_flow.png](data:image/png;base64,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) | <ol class="arabic simple"><br><li><p>Copy the <code class="docutils literal notranslate"><span class="pre">&lt;capsule&gt;.cap</span></code> capsule file to EFI partition, which is mounted at <code class="docutils literal notranslate"><span class="pre">/boot/EFI/UpdateCapsule</span></code> on the booted-up device.</p></li><br><li><p>Set the EFI variable (efivar) OsIndications flags with <code class="docutils literal notranslate"><span class="pre">EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED</span></code> and reboot the device. UEFI identifies that there is a capsule available for update from OsIndications flag. UEFI authenticates the capsule and updates the firmware images from the capsule. The status of capsule update is updated in the ESRT table. If there is a failure during capsule update, UEFI rolls back the firmware to previous version.</p></li><br><li><p>UEFI successfully updates the firmware from the capsule, and the device boots up with the new firmware.</p></li><br><li><p>Copy the OSTree repo to the device. Create a new deployment for HLOS update using OSTree commands, a new configuration file with count tag gets created, reboot the device.</p></li><br><li><p>Systemd-boot picks the new config file and boots up the kernel and user space from this. The device boots up with the updated firmware and the HLOS software. <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot.service</span></code> marks the new config as good.</p></li><br><li><p>Reset the TrialBootEnabled flag in OtaStatus efivar to indicate firmware is good. UEFI checks this efivar to commit the new firmware.</p></li><br></ol> |

    The following figure shows the firmware update flow:

![../../_images/OTA_firmware.png](data:image/png;base64,UklGRsAcAABXRUJQVlA4TLMcAAAv/4dIAG/CKJIkRbP43RF1/mXcCWCsPjDBKpJkJ0eGr3ei8C8DBOS0s4zaSHLUG/47FI7LQT4ixyN/N3TNfxcs1CwKscAtg0VOxCInsoHIJkQBgBkAZApBsAoIssgmRAaGGQBZwJAB8tTBpvZLrKvcTqmpcrvktkrNlNtq3C7D2lgU+wML2x/Ixf7g/OxWdv12/cktXH9yC+cngPNLAMcr6/Xrl1NqDp6hlcYzeIZWGs/Qzbv/PINSHLdtJElU/mFXz0733s+ImAB/0N5bv6WD55y9gMorD8PtRWi0nZ6QOoCmdXOxrKwPOCKz6kBS9dBNZHdLg1tmpRahx1elAW3U5aYe3oVcd5eWcuVyuJle86JQNlfauoqi3Yblpge1XfsmamCT5iGnx5s/9jF77mfohXy/9em+wFjY/z+K26i7xL3v+0ymlBI6MWxhCSGUeHvfff/vB0n//08MnmFwtCPpH9F/WrRtBW2tRft67UvsJjkFVIRd/aNgW2/eNtpR53/2v7aeEfk+ACQAMxnO6ET0XxIjSZKkOOeMdiGT9srkJrb5/evfifOfLv5z8Z+L/1z8B+XFNz/8dOecp/ihf3EuXv9056yn+PocvBp3TnuKwZp3d8578nbc+3incf+DN165csyTl3h/p6WP79l8fr5TfPbGlaOe5LOdSt7i40Ml68E7wWFP8kC1LD6EeVv7fC047SlqH2+jow2Yny78x4sYnyqmT+f9Q/uhEC8rQe9fOfDpfZnSy+hz7l858SmiT3mgOiS48UQReYCMN7ybeMmNJ8qUXsUGHP7kypFPERt++EPz0a78gz/E1vqGK4+olV785+I/F/+5+M/1Hx8efrWC0zfHGnluOSIXxTfffnezitPT62NcgPxnJUdkvD7GXK/liPRyjCPy6UqOyG9lMXytlSAr+R8PjxcNMPLroxuRT9dzRMavjy0PV3VELgT/7GZFJ3+8tiI6YOTDI1u5rOuIPLIfsrIjchl8d7Oq05PjytN1HZF+K45IWdcRGRfB9c3KTl8dq+OHLTDyehuOyLi6I3IJ+LXN46O6CbFhROTjtY1sGBHpl8DN2ua7Y8rN2ubZMcWv7pA8psTVHZFnGOFY8YXEyIv/XPzn+s/1n+s/13+u/1z/uf5z/ef6z/Wfb2aUiTQXyxnqXBWhVePqUyZmKnoXn8EnZOqW19ao3WfUZ9Zoq5nYB+eeOqHaBr1PpHTtGX0iFaGiSURGx54mET8yrZCW2iWRqQMRcSCYdAw3UT9QQey1KMgDGDVNQfRmpOhKpUPJ43KXRWeXNJHAyagNOqLdUJM03hCT6Q2VRKQPhITBGvMMBz+a9Ka62Du6FObOAuoBxmdCpZKATKkppSJ2QfhgSwHkpKfysR/cXPBTDUdvrLfN1T8pCqWhKcToRRCnRWqXhfW3RarhJnSe6N0gk36v9Neqx6NbTJWI74nWhh9NCrLBYLZPOnN5tKfVFAxKAbuvYpj0B6cYL9IAnREzSkxnNjNKY9Grrgg4lEBOP9nYqBKpXWL6RDy9D6LkCYVIazRA9sZyM8OKWDk92VWhnRZdYhr6dAQvkpGw3QyMRS8yzk8jTMpcYmp6L0AnUgCUJpV2PKFV5y/OT2Rxdld0aHptsUqkXQCO8LhDFbaQ2ywEL9JNy348AA17sqGTS42OO9zN8BAv0hLSq161IGbGbNDcXUNPN7I62LM6tpqdefMO+RFbUYRXZIw44NXyIRiV0YG1ySHLh910FkWy52Axj/03yLzD0X7cIa1eoISJD3PD5y5U/aZD75N40ujrQhutu95ggAaRrzcGQi4iaacKtyqhDkIMc4w73JJ1hEgFN2qKwYpBKY4qq6pg7dYfkezDWY+nC3yYzBPGmFKTc7RbDmTwbgsMhZCpvwnzzTvEzVHQYbT6vMMo/MgD+bgqUY3FtU/YwdDcntZCfWjVZw0izQHQNSs4C92syXsyVguTKlBUppqMC7wC3qlhTej2YmZkDGsTKa3xX0ywnHI+GAvT58NYa1sGmw1mK7ZSwRs2BULoaq32j/r+KEvfIY3hO4SR6NFlVVSqKE8xuNxJ1YWwEjHeby2SmltKGV4kZjC4QXX32XCg3eWdLRypxADu9V3G1tB6hKyi8nXPQk8M6tSXrQbuXPNtidEneegDTJ+P8YyD65MDu+yySL/rHW3tbV4gHXRjTQVpr+2lyiNgGEYLB9ek1P7CQ9qNqzmjuZgxu4J/R0YRdbw1ayq1SDxHCCIS+SqKI2piIniwCRSDFxMoB0wruxFkCtWApPKjVcVJHjCC5agdGvNgbjdMyQ0M2tbRI5bdSEqyFy8pkGodalrYfkf7nkUJBzfkdP/jw9qNqzhBRHoIZBRSx12z/oH2+R7PEooJuyqqzsken5DZREyMOeoShKhMUdUELnVP7XvPE2l5PFGNdlhut0sONOoxy24EBdXrFBZo4oUgp3VxCB2OkT4B6dB24xrxETEK6uyuWTdRNYv6erb8x66KImsO8GRTUIwVZkuQAZiIKsOkchZVRnUE1QTS3mMF324pkBE9IctuoLU3ocCoYqMx3ydNqymAbJbSDqlD10pYp/bmxEPbjSs4jVIBgYyCOntr1lLSm7OEBv69N6HHlWpAs4mgmMmsoSPIcAny9GZ9WBcKXGpPLNYiFcugtJsyCyy3uwUa0gOz7IZZexMKLI3hwMyvDTVKGAnukCiBCNnVwe3GlRm6R3KKgYyCOruny2smtbkF05NXyyyrKN8T5YtHzSaCYkwwXIIsKVEfjpavWi7Smy9ExxJF/GjIhAu+/YNZdsOsvcEC0aAh4oMEd8geDenq2BzcblyZoc9I7jCQUVBnd806+i9Snh1QQ9RYVlE1Wd30oNlEUIwJhkuQYySzGCcspEaRaCwXgYKayoraK4EVfLtmII7hYJbdiMqDDgBWoKlvJoQOteFEzDfw8HbjKv73DlYBAxnFdPZPl3e0AEYXta2iyM57oNlEUIwJhkuQgsgiiYXUwdDSiNQsLSlzqGOLFXw50LCWXUBYgRhe2xYV4YGFM2Mh1+3ssE4KThNApkZx/DU7ZhQdXHEQ0OUGaDYRFOOHMoLotgaNjVTR95SkifQkwMsEv/AbfhGIej5eA3r1RBShwzCkho59cwDeymPsVEABRkXhPXTkhJranpoqIEo6DwUoxpdXp6RBpVLrHdWrS2K+TDz1cSfj+vXVC2TYy0EIoTfPWy3PJaiYxiFGHVmoI/gzUh1hRq+e24rEEwYZFDlEw9b3IKxAAHV+WdWC3x4UruYhaGaFddIHkFEQd83O2IvUxlhQllUUXW6AZhNBMX6wETTXQgnmr1fL443tApjbzdKpJyK0IvkMPAvE0H85LMiocOGdevOzWXl20hOQURAXzc4boRCpyIrDEo+bTQTF+MFGkO1DLKTqj58ent7wdJxMIrdHed5BKoI8B2HZzZ5BgRKDGmwAhhVOtO7IXVGzMvg26wEpFR/pT5BRDKd0eQ3F3KN0thCpzcnRemi4Hl9RBMX4YTKC2BXZSZ0WW5GGBpDp6Tp643htZGjyjY2QZTcUVCAFGXUDoVCYqkQoXBK6x2d+aLtxlaciz9v9CTIK4q1ZazEPirFSofcHoxWHzbhDkR1iCBTjh8kIipyvRUwqfThen+4CGneI0t5ABd8+cweRESS+HokJlSrMshsIK9CE3q8RW6UqF4qojUwICzfF7mvTV0QkoFWjsE4KTysi6ThVAmWiQEZB3DX7EFAl4lcug1aS2FRRuhZz3GHQbCIoZjJr6AiimIyggRt32E5qr/d4p4G0RzC3+80dmDEZ9UZjq2G0gBUEKxDwTroaqRpJpLDIYU9KKcaD240rNuhMIRpQREHcNTtdME0AyyqqONS8Q5PFBBdBdktQ+RMCCkup3hwC3XLeITC3G84d3JBUIWCW3bAKAhb4hFxsr/RFxjAclENgLsp8OLzduMrTe/PdV+EBRRTDPV3ex+MBGeBrj1E9xa6KajO6gp8PncpaTA7y/38CcATx94X6NiaVVujR34DWpOjBOnrPb3dAnerve1RqIMtuYAXBCgQ8A0cX9aj91VGMYTggh8BLUTYLsBtXdJhZCNJG/Ro3SERBnNPlfRZeZKXCba32VlVUfyjfIWgxAXKMlqCYO2QQyeykKmEV/Bsw6oct8Do6JFvGOUT1MPKzwkZVVt1wQP3XsRYj6U7Nw030xA5o3nwiPEYVhXU2SfgHxTrKnx7ra4ffG+5GgvqvAyxGwtcSEDCfaI9RNkmZkugTzgK44XMiQc+/QixGkic1k+0DxHyiLSzZHSpehBJYsiAnvrmQYP7rWMRI9FoCQuYTLbHLJsnAXC3S3waN7zmQgP7rWMRI8FoCso0ML1JZYpdNkoG5WkSo2IFv3UdA/3XoZyXoJgaxf3+EzCdaYpdNkoG5WkTYU2pG1YRyHwH914nQHqcg84mW2GWTVOAaGwyg8T1Hkmb41gCwiJEM9DzUrPnEGbDJJukIaHzPkaQe/gB9GjESgqzsAfOJ1lhlk3SCfgVJlxMuJ4OXGUDMJx4EUnwoHMwFFjHSYgEynzjLwvS3A6DiAz3I3UdA/rppxEiF4e/qH8fXEbHLJukEaHzPpVzR8E8CPCNGGnxBKHwiyKhIY5dN0o4ZVhTvumgO3bLXhhDP1g5HNP7OtRYpzF8nRIzMWK93KHwiyKhIY5dN0pPyDBh3aCTINtpvDLXIHSAsfx2LGIleS0AUPnGeUZHBLpukHbSBPdT43hlNv0/iuUUrZybn5LxDMGIkOO+QECsymgJZzLJJmtNazDt0TlMlsj+3yIwNmxXBo5XBWo5IlL+ORozEriUgihVJMioymGWTNCd4cN7h6jSWVRst1F+YsS7468dHqweyysnWyB+WG5Egfx2PGIlcS0AUK5JlVGSwyiZpCOdr7zT7Dvnrn0cIy/59N2Wx0dJ7pkdKhxhE/M3a4IXff94seOH3n257RFIrOoJnpJzgiDxdHEDz+UWxPgjhz19XEykbuVUQwh+/3h2j0j9fbhOo9PeX2wQqiT8bSTRLJDnsOHC4ELjikSeW8DvzM5YVfzH1U/wziJTJjCPxMklYn1mg7vQI4cdHq43aGWmQ7xTn+aYKGL6lAny0AHNKpyIDNdEEUfRxmud3QXOPJJYlUgKyC0lf8cjTi9qR+DPF0uIvon6af7J+zDgWLxOH1J2gkb//vNoonpG2+U7xrYqEtKJiRIKnL45UTbRAWmtGA2yHZJYlUgE5XZjCy2kmBPnNZHHxF1A/0T9VP9G4ghKDl3+o7hSN/HWjQOuYcmsgxx0ymTaQVlYMhTep1FL11T6REYYMsB2SWpZI+rSdXcjSfOVOMSGY5xMtLv4C6if6p+gnGMduXiS2UYPrztHILzcJjI4pt+Hb9LgjxnU1mFaxgRLKTGu2YKrELI36RFJq04fWDAfYBkktSyQFtgtpUgw3pxjzZ2gsL/7i6af6J+gnGMfiZWLwupM0cqXNLpOkkY+Wj8Fxh7cqANQKG5AI3vgfXgqRxijmIgwbYBsktSyRFNguJBV7pxvzfKLlxV88/VT/BP0E41i8TAxed5ZG/rI9QHVZWjz4uLMSh7Otx7TCBjRSPQOSiN9LaiqBYQNsg6SWJZKixYWMC46U7184gsk8n2h58RdPP9U/QT8L48gCCIPXnaeRv60w8jTy14VjcdzBzshFWkwrbEAjikRNnh9TXa6XIsCwAXYESStLpAKOC7kaCOGH/y0i/mLrp/on6CcYZwevO1Ej//nf6iJVI0ODjzuDlotphQ1ojLrIXFIl0WutlurEkFiWSAr8RupEivXA7z8uI/5i66f6J+gnGGcHrztVIzcLfvfLBh93jXoC0wobEL+XkIuMqrHRqGMUlaa6PTFkliWyULArXwZR9PMB6Fc72JWvL1I1cjdUC6JS7Yyo9YrSFlPx44lZSC1LpO2DnOAU9yFiBx9YRvzF1o/4Z6SfYJwdvO4sjfx1a3gIN/jAwsHHnUHLxbTCBkQ6kSr4JNMF90Gt/sSQWpZIjY5/yKkG6Fs+sYz4i60f8c9IP8E4O3jdORr584axoikibwnd/A/Btf5t9SJUiZiPuqJRv4HV8dSQWpZI2y8onnTYyQeWF3/x9EP+2egnGGcHrztDpog81sREslutP0kjbwH4uEsl9vCKXtiAAFHqiQy6hFxJODWkliVSpGRHnznpsJMPLi/+4ukn+qfoJxhnB687NYjJB7cKZIrIW0Q597hDYBEDGxiChpw3clGLFOLDqSG1LJEYGhfypMNOMb+4+Auon+qfoJ9gnAh9oStp3YUysku4hInJqLuZ0h0M8wHLA553etwBevlj6GowrbCByWhBGLXsUBIqBvp6Ru6a1LJEMugYLMNphzUftLj4C6if6p+gHzfOiPafPaC6MzRyo0AzH7RE8HlHx51R0MUYpJUVA0YLn3Ju8rSOgdO8Z1LLEskBNVbhxMOaD1xa/EXUT/RPue2U2DgZzmcmqjs5JvOBKwdtwSRo5DLB51097vRWRYJatQZyAOKw5wwXEzLfOJlliRQguUNOOIi3nBCWFX8x9ZP80247JTXOAOZCV2abO0SmiFwcM4g5izAmKV8o+LyD447SH8B3CBktLMxIg8Oki4PTvFkWfUfQhj9DhDiIC+HWh18vjNwq+OMXuhZbO2ekbp38/dNV2CrwP4awskjWyLtjQtguCOF4oEVXLCd9kMk7UwqIMDuGG8ACo43++W+Ddl6zyr0BRVcE3SJCt4d5DiALjKh+KPdTyP9i9TdT8lnuZDY/FZUhZEpR/az7GdBdrHZFQdEVrUze9dTt4TABs8AI6mfdz56G7mK1awid6nkh0RVBk3fI7WG2ALPACOpn3c/AbiLzRkgZTSnpDPkIQKdhpqcNIgKavAPmknlNnyZfnRHTz7qfANqhdFnBBnkhfOXNCWiBkdA/L6AdSucQsjFijxRdEYdoIxyWVKTG9IPuIY0wKXMZsf82ja44E+VhKSlKmnH3CtFhZdjLLWfQ/bdZpOiKt3QBdM8flHREupyw6Iq34yEefsi4ewRpRNVF5Rld0R7CVx4KiLGIrwjTP+oeQl/bpG0U3/v2eAogy6XiM1of3vK0l2l0RVtKchChGUKMxYyTCuoH3QOgu1i9NvHdlUWkTsSk90mzwfI8MO16eh5dEQexvTiDxVjELDCC+r3+G7RXJr678rEqi0ebUFSJ7DdYngem7HBpmJuGET1i2M87BGIszjvvEOx+ElkPUZaPZwBtovNYlYXA9749PncDjK6Igdwe5gkwxiJmgRHUD7ufpFLE7mL1ysR3V9YOvk/NCVwgy7LiIV/ThR/0ChxdEcPy9jDjGIuYBUZQP+x+kkoRuovVaxPfXVnCBwPfbtt+aNiLpPSOWFGLjAyxK8tH4WRR/L8oqB64xACb0MV6zNRhniYjjDlGXYL1dRyEjEWyeUIsPa6cJ7J0IO8pu1eHyoXm8rBKsVHg4iTPHBkWuE6WUGaPHaVIZ1UG6RuM70qXVSl3aL8qc6PWKhLEweNgSvCj5XUchIxFsnlCLD2unSeylLB7dShdaCwPrnTPXADD1gS6TpZQZg8etmWQuME4TqtS7NBjVWaGFxJPKIwFJYFz4tIq/cS7OdoZi/SiQCw9Lp4nsqBMDNUuNJUHUspavxnV9oMJpL2HXGMeN+Yrg7QNxvFalVqHLqsyjacJoIv1mJkioheh/77T0XjrUmqjcTTemNTWWGTRgJYeF88TWcenYXxM9UJDeXClPbFYi1QE2PWRhKLrrDFrGSRtMLgrD1lVSh36rMrEKIYbijhSLa4WuOZz3vgBUaQx3rpoaSyyGGBLj4vniSwjMD6meqGhPJhSaq+heXSR+IUBr48k5Bqz1/8iVfmZtwxSNhjkoFWl0qHTqsyLOhBQInKRlJzry+o6DkIZFDJPsKXHxfNE1pMfQ3vkC83ksVAaRaKxXAQCckgSaq8EFF1HjXnLIGWDQQ5aVSodOq3KvGjg2r8mJVhdx0FLmgBbelw8T2Q1mckqX2gmj4XSwRDTiNQU4PWRhFxjHjXmLYOUDQY5aFUpdOi1KnPH5joOIsYiIZG19GQH2ZA02xo0oOkZuOnaIl9oJo+NUkmkNzYVWBrqOCUe2icQOA6EDRYQoUOvVZk7NtdxcC5jkaE+NCVFSTNuWuGtN69OSYMqpdY7qg0AlhrZEKjvIIHjQNhgARE6NFuVBaFS71nUugBoO3FS8SNlLHJNBk13ldGr57Yi8S4ZYYMFROhwsCrLRSdShTzJdOV92CepvbFIpq4hU5gHoOkZuOnaIl9oJo+V0qjCO1WnJNss4KF9AmHjQNlg4VA6dFuVuWNxHQdnMBaJWnpcMU9knZEvNJPHQqn++FEVSjwdpZMO7btG2DgQNlg8lA5NV2UdsLiOg3SuIKilxyXzRJYZ+UIzeeyUeslbfluA1+knMaZrzLtG0EQRNlg8lA6HTXEGo7AMUHr3kptHZQqqXdYnxPtZctBIj4vniSwu6oWG8qBK6YDMZT/SvzDgdbJEousMgiaKsMECwjt0W5U1YEyEbk5KNYuxSBrpcfE8kZWDfk9R1AsN5YGVkqWDlIEGuz6SWHR1gihcwsRknGmhRkQGNtT3w/kFGwd4g4UEd+i3KktA8CLSUxK6mYxFskiPi+eJLB3Me4ohWkblESv1Ey0DpL3Hoqt5jHu9tKPjrwznF2wc4A0WEtyh36rMHfr4ALkhMJexSBTpcfE8kSXcLrkFmmVYHlopHd4YoTUpejCzjcOM4Zwul1SnkvMLNg74BosI7tBxVVYAfdQmKiPpXMYiUaTHxfNE1g7mPcWQLOPyaJUqYRUHdJ0sscy2gxnEUBCyeu5IVzi/YOMAb7CI8A69VuV2coen9m6i1AxlyHbRu6yBhMKouCgVtyUit4q/O+wrLrW2SHcSd+0Z6MVKHWOcwSwee9uqXW6IfsfkchNmMIvH37Zq15uGPGtI1NhTM5jFM0ehIj4cb0afSCSWyzCDWTzotlW7w9Cpno1QEi0L1QIhvjbUmYioEb2GkFjd7RJCCHfc0GmAiOYoMS026MAgIuwoc8htq3a1od1GmjsgbGkU0N3LdokhGyMzUhsTSk/LfZjDLB5797IdZsBvYwzTImEAYw6zeMDdy3a/Cdm0aJqSmcMsHnL3st1vGpFUmy1+DNZm8eC7l+12o6/Tj9pDg71ZPCSlIpnLDdWk0J80m1k81UihMla430SRTPOKMZ9ZvJ5xoZQ72gB+5KoQZjKLh9y2ancYLg1zUiv6EGYyi4fctmoHnEG0owczmcWDblu1A07ItKMHs5jFw25b9fNunA8jL/5z8Z+L/1z85/rP9Z/rP9d/rv9c/7n+c/3n+s/1n+s/X1f4bsPg2THFbxjEM4wna5v/HlMer20eb8MRKWubJ0vgem3z1bHi02JkXNtcbxkRuQTC041gE6IBPyUlW3FEPl7X+KtF8PDZqg6Ub44r4p93jshnD+cH/VjRofLkm6sjm+TJ880R6R9eLYQQrh+v5IcdtSPLnxgj41qOyOttIyIPgGOeLv5z/ef6z/UfJ9525YkY702878rz/oTneXPiC1eeLyY8z4sT8oobj5eJyCP3Jz5w44kT9xOAtyceOPFfvOxEIsI9pecTF56o9i94BHl3N6V33HdkN+ETiHv3dy782ANR1P/3GPKyQt5x4P8tLydoelNT9ZnDvjIvO8WbiVh+yEevuelEL+an/Yfc/+j9t95wylN438cd+4k+Ie4c9xS5Z2A/9IHLzgOfzJHuvfm5q45/814yV/Kvv+s/dcyT96/eS5z/dPGfi/9c/OfiP/9egAAA)

    **Firmware update using capsule**

    To update the firmware using capsule, do the following:

    1. Run the following command to create the UpdateCapsule folder on the device:

adb shell mkdir /boot/EFI/UpdateCapsule
            Copy to clipboard
    2. Copy the capsule to the device:

scp -r <firmware_capsule.cap> <user>@<IP_address>:/boot/EFI/UpdateCapsule/<firmware_capsule.cap>
            Copy to clipboard

        For more information about `firmware_capsule.cap` capsule generation, see [Capsule generation in UEFI](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-4/tools.html#capsule-generation-in-uefi).
    3. Create the `data.hex` file on the device containing the specified hexadecimal data:

echo -e -n "\x4\x0\x0\x0\x0\x0\x0\x0" > data.hex
            Copy to clipboard
    4. Write the contents of `data.hex` on the device to the UEFI variable OsIndications using efivar tool:

efivar -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications -f data.hex -w
            Copy to clipboard

        For more information about UEFI variables, see [Update and recovery](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-4/capsule-update-and-recovery.html).
    5. Print the value of the OsIndications UEFI variable using efivar tool:

efivar -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications -p
            Copy to clipboard
    6. To save the efivars to RPMB, run the `uefi_sec` app on the device:

/usr/bin/uefi_sec 1
            Copy to clipboard
    7. Reboot the device:

reboot
            Copy to clipboard
    8. Check the ESRT table entries:

cd /sys/firmware/efi/esrt/entries/entry0
            Copy to clipboard

        Check the output of `last_attempt_status` command. If it’s 0, then the update is successful:

cat last_attempt_status
            Copy to clipboard

        Check the output of `last_attempt_version` command:

cat last_attempt_version
            Copy to clipboard

        Check the output of `fw_version` command. If `last_attempt_version` and `fw_version` are the same, then the update is successful:

cat fw_version
            Copy to clipboard

- **Linux OS update flow using OSTree**

    The following figure shows the Linux OS update flow:

![../../_images/OTA_hlos.png](data:image/png;base64,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)

    **Linux OS update using OSTree**

    To update Linux OS using OSTree, do the following:

    1. To check the current deployment in the Qualcomm device, run the following command:

ostree admin status
            Copy to clipboard

        Output:

* poky 643b332dd72b345b5040a1decbe7e04bd2d208a04ba59417aa667c901c485504.0
               Version: 1.0
               origin refspec: poky:qcs6490-rb3gen2-vision-kit
            Copy to clipboard

        The \* shows the current deployment that the device has booted with.
    2. The `ostree_repo` package is in the `<workspace>/build-<DISTRO>/tmp-glibc/deploy/images/<MACHINE>/` path on the host development computer. For example, `<workspace>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/`. Copy the `ostree_repo` package from the host computer to the Qualcomm device using the following scp command:

scp -r <ostree_repo> <user>@<IP_address>:/tmp
            Copy to clipboard
    3. Pull a local OSTree repository on the Qualcomm device.

        Following is the general syntax of the command:

ostree pull-local /tmp/<ostree_repo> <branch_name>
            Copy to clipboard

        To find the `branch_name` for the command, run the following command:

ostree refs
            Copy to clipboard

        Output:

poky:qcs6490-rb3gen2-vision-kit
            Copy to clipboard

        Here, `qcs6490-rb3gen2-vision-kit` is an example branch name.
    4. Create the deployment on the Qualcomm device:

ostree admin deploy <branch_name>
            Copy to clipboard

        This creates the `ostree-2-poky.conf` configuration file in the `/boot/loader/entries/` directory.
For more information, see [Systemd boot counting - Successful boot](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html#systemd-boot-successful-boot).
    5. Reboot the device:

reboot
            Copy to clipboard
    6. Check if the device is booted with the newly created deployment:

ostree admin status
            Copy to clipboard

        Output:

* poky 1e8a01bcc5cd9b3b34043db494ddcd01ec5c1c84312479a55253358a92250fa3.0
               Version: 1.0
               origin refspec: qcs6490-rb3gen2-vision-kit
               poky 643b332dd72b345b5040a1decbe7e04bd2d208a04ba59417aa667c901c485504.0 (rollback)
               Version: 1.0
               origin refspec: poky:qcs6490-rb3gen2-vision-kit
            Copy to clipboard

        To verify the newly created deployment on the build host computer, check the deployment in the `<workspace>/build-<DISTRO>/tmp-glibc/work/<MACHINE>/<IMAGE>/ota-sysroot/ostree/deploy/poky/deploy` path. For example, `<workspace>/build-qcom-wayland/tmp-glibc/work/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image/ota-sysroot/ostree/deploy/poky/deploy`.

- **Systemd-boot counting - Successful boot**

    Following table shows the systemd-boot counting on successful boot with description:

    | Workflow steps | Description |
    | --- | --- |
    | ![../../_images/OTA_systemd_boot.png](data:image/png;base64,UklGRmpPAABXRUJQVlA4WAoAAAAEAAAA7QIARQIAVlA4TNJNAAAv7UKRAFUL47aNHFnqv+tN3gv/iJiAPBw6tE2Xj01QAUUV1cHpkbN9vExfXp/ihSSfRoo82ymQXEjiKa5xintMEBUGlA0Ovj3vp/+4lybimWgno+0KcixzyVNn5TOuJoXkQsoXKPCFzlcJuMTrGVyiwgyEgRm/mLtH6fKldCuAktw2rTtc3wg3ROjbCBUiRKjMDBUyZOj7WMJ60v86f8KqFDKj820A702mMlDJVqULLaiAQR+ugaGv7YAlqC2GqgTsA5UMK0EDjn+yFagEVIF4m/CFGE1MpPe2JE8lDqcPNIAWxA6Y+0AXm9CVbFE66/D1XYfTSJIcqdkZeP7zh/m6XgC4kWy7iq7HRbc5wKr8M9mQlNF/N24jORK151000e30AyzV/+9KcrMVLEPTspeC63W/e//3VvXUmzflcBc9NJyUePTR8372Dkr3HO8NoJk0BzGJKByU1Sz+i1FC8N89h340lPrScGocTko80sMxHATgcRCA4TBIlKVG4RwGRG26aSjVpeFUDih06pzG4aTwcDg1AgFoAN55r+HgMCuDyCiyPaLRs5hmUac286MhDT6Rtk3Z7l/tYf8hQZLcthlQ2RZ3F4AoMOnPtdq225GsWQV/+MMfNmzYsGHDhg0bNvxhw4IJEyb8YcGGCzZs2HCfzyfYsA3YKOY3pxRRlWtkY8mNIALhR4yhsmIfRN4xmi8D5EMaED6kJznGSiv2IUCEHQ8IgbLgY0oQ0w0RfftUPgSRHUkEwg+BaUCOZUD4kAZMH3IfnNgoLEmQMcbvRYDQPoQRcx9CbihBvG6ICJQVRWRHEgHZISILygAZsFjxVT4EKDsCVFlRIEHIjZkg5MUaIvG4oWW0bZvA/X+tNRUwbttGEp/a2/0Xu+g/BUmSBClONDsSq0NkZlX1zszCPeC18/uj/Xy0IfY2XPX2ZnV7YkvSHZi3ZLVdaY+PF4KuaRCsnj3Rellt1jZr2zFB9yk0cd7I2ztYb0fOdQi64XBvbOIpxle91R1N1L1jPjbB9JzIqKPf3RB18+/YC8zTLP3u+oWuj7nmAE3ix46yDZebOQMypu2rZTj/cXKhMSNY+v2Nwyymuf7Tfo1IO71EbK2huz0jaN7fv5N61QqvmrorW5pLo/WDRDupEYife4RWGRbVjTZYX0AotNPdkl+8xWhN6sjK/7TyXYqLYvUlJKvb+Q7P0Grz1u9EcVkxOt7wn/Mf5z/Of5z/OP9x6WHtr5kQ/gUb662Hy5Ylrf31kawl7b9QY+ktu4r5+wLasvx32n/SSPvQJfvvLOvFmJUmVdpHNfhczFJFs+w06xsQ+3nbElGNaION/iv6tP6pItqHMNnsNpMfeF//SEL7KAYzT/g0pdIXWaH84/pL/lbt3atsPiyp4pyS9vO1tfVZ/b3a+9v5R6W0gY+/XZ+ktfUQYSn/pP4he3sNZeyySNf+O7v5N/JnmTnaRy14xkFNhvfPJNYWi9Y+FC3Y+vMC8PfiTKwNnAbpfKa/0sk/kSrt52rrXgDggZwfy0j/TuEfFIsP00N/1f4GAP5OXBye/Koi2syqZumfZyy0j1aw4lANmpHm8Au3zhiWjCJ+8YsvqEZ/Cywe1K80jwyCTjIsdVT/iwBI1g8/xw9L/cdK0Zu1/2nFQbgG/i76H+zmw0R0i+oD2vNI3iDpaBYf/8zuF/YY0T5KwcMvKm/2bAXOmisbGZZa+pv5W5krLSGuJaHtshMggrbnZ8Dwn0vU93DOr0BHPWB51wP+Jh2lXY0tac2W+4eFv6jQSeBD58mfMxZfnlk60CSM7GagebUWbGl9awNo5kUpnwqLshlrkDLLWJf4z9wjFTz01ppcDDhLFlcWrc0ow9f+Yw9BUvL8gOjKAKF1k0seOznWshggw3BByRKEJqodpW+0/pVq3pfn1UP+YZCc6D9rMnuLuvjI5MMfVou2/n7h70bpJePH1fEP4mgzScwcl2ijcoGeCAzWYWld7VaZrcsukrmSliz5Lsp9yRnmLN1noPpPm9I+MsHqvrGS+hycpQpHVCFtRhmUf963gbT8tVAQQ1AEQTRlXmsSpAzj6pdAOZYUHZkyDE0hVrosQXz1TrBgXkxN2knxzK1gGU0T1PMRmX+Pxeg/kM9ZoA/nt1X5qmmir7Ru5dQMI/JsyV9f4u+Rn6iJaS1BW2gzSsyUoqAKQc05qBp9iLT1OsSmqQItuIkeikQ6F3tCYonNZGdIyv/c52ipX098QkU9nWqYY8QunrlHK1o5lm6o1ECzlPlf1vfVV3e7+ovZSke5v1nVneMT/YU6LNSB7cKuIm4d21o5GBcvecBf8clxce0Fq0mvUIU+Vjy2+DPTZz7lV/wDFtXH9YrZoL/oX9X6TrX2/lCM9n3mc4/j4LXF+JNbHohfnujukyT9QnMlE+tRxQNWsCuU65clpaWcIDlSP4aP5t+tanWvH5q2YnP8qyqKb0wcIkTy5vBp56i+qNY+ZaT8gZuFGrqF05nS+v/5DGc02n86OC3PvRgbIzVj77zvVv9GLZ7skWR9fFkD8YrPPRMhiA997hm6q+L8bxTFkeOhCZ49uLsoPnJTlUiMw8LpqHT5qrosxP/BInWjcIl0u/DzqKil0yaLK0KLunlQre4Pw9Nn05iWLoeeFh9NsJ+hCsTgLN2wCmPVo4iW0tqBsS6jSHow1q2jNIE9AM+F0kzgrcVYjR179gre+gtmwsATYCmk8FbSFFpG+gLGeuWp49Y+bp+Y4o+Urg5jVVm0pB96pmh8L9J9NK8pAx78+8BY3YrnQztLGGvZUVLDKv5+zDAPGBfjLox1ttfJ4zHeOBoTneDSjPE4imkp7YUZ11CoJWAopLvEghGjaRUNR+t/hL0gr5ZS8dk7HimpY+DFn2GWU0nXh+kmVPcBi1FES92GsS6QmMKfIzlU2kenPzJ47vFkBme5VUnw/fNO5RroCxmFN6jNOpVLoCDazK0D3+Z+VsomkN5jfjilzFKsVzqbj7HHmNRxgt67znDPuOjzLWvoXC91Wj2kJSUlB9RXxJ4h+ScoqU+BpHB42EhRF+ow10Ny/Zcq8AeqqpSraOZV1XiSjFWdXOA4+J/yBml/3mkuUBtFjLhEUjg6LCRYMlrhMXC2Wx5/C5wI+SzX5fG9987E/QqCqllgYFJeALVheXxnbCDUoyqWrc7sFt8dKqMlPjjq9AZoCaWNdK5B7BtenyU4UBoGFs3O/H2KO495Aty2yhsXQFuprdwB0m9zjRHdqRGVUZheq9O+AhYGepRiKI9SzHg2wLCObsepTHJIx0oZIh1PVFwPT5Ty1xXzaYMH5FVJ1nCgopNKghNHyjpqdOrKCzQcY/VWxJg1HIuoYw13Qq2keO9EXWeBdTFI2nnV/CXOWDSefsW8kCx3OuG4igI7nc6U1jujCsvl9j6q4+CTl3GKgqd7I8FHoQyQDj0Zz1M8cwa1qVPRLuqOdH99TT8tiFsphuLnbzNy6niDN46US3RDp27aRd/R9XGhlM8aYKhoYKlFv3YZApue101gJpRtfFeZqOYLwFAMrtSp+/It7uHoe/prRz/F6BZ7dOp030c06qLgHqmYgQpsuMGEpIav8MFRNpFW8hrreHPGf+dPysyYPevxZ3WkpKGkMlHVyR2eiqH7eV5V89t4onHY8VZIaSFtC0n3LOkxdu+xGKkhA8mRelwZqgaohhEpDzC/TL+spisLSL11T8YgyHaaArW5C/yn+4AbGj7ukr5Ql1h3JOnW8USLKxitTXmKfaGlPOWPRFCd1N8OVNRPwZHUdWM36CRoGik2UDMyTg7V1XH3SdXiWC/QdwzgErdbJGNdJgOJpgtsT0hGuodLk01HxtEtcs6sW+IV0I+OUzSdcW5oYot8gtwjL3KC1Hfef4cDoXaq6A6O6JwobSb+ZAhoYPGnztHR4TSHW8bSRNIuHx0dhQXchJP3v/XWpboCFqFhh+WQRb3AnbmHjxMMxWNfi5bSxE4GwkWyslZIVlbBpJ8kKaoFjWl9FHUd62KcYE3LIfWw6jshch/xtqwenmbqNY4DyMnvXx9AOg/gPobEpx6yi3RmpDjAq45GowU2HW/ScQ0brlPFOzGxLHIP20YuDMtT36WFYb2PMxYNhLYYXWSLNJFWDB0DP3EPl/qoiytgZxoZbKPGImW4AFCrt+WXbHmDgFVj7AoIWNXO5FMl3qqr6+MsKlpjIiIWWUPfGXQWKBgcGDwgA5YMw3A0r+KZegJoPD0Kp/N+ir4EEfVQd7Re9TSmVlLMzIkcIt1Q42BwmTUzwRQM7gwGCFjJkVIukftDG7f5HBr5GRbTyE8UdlEwrUdKyi5+azqRAaod9TjxiHtZM0C1nAVPH4VZGDfiKO99l22HjWUCoM6I2VFHWjXXq/0V7gH4ZSzLOpp6a0Tpo6YGJK1Hw6S8SiyjKDL/SBRFRWvPo+i8GEWaP0UyV1ofcQ9vHH22qBsp2ibf4LelNeHS7HkWlGKto3QnqLk+Tv/QwnLSwAtv0AMJsi7PkXYCOFwjXoVRFoetR95PfLcUV3iBJ1qkqjjtbK4DOcmSHGrkyFyk3OeT7HwZJKMYeatIuQduRrExNqos8hZ1MThK8KCthj9m/h+NwilJUg9TbHo9btxWLeo+Lg0VVFX6T1d8bwesBXO3A6UsaSLpBKVI7STpfImKjBZpZx8nQRRHNfSdz3pEmfmduAYWo3j1mA41A7xFTh510RIwdLSMtYYXjpxvdKKiOneJxSjKjmeodiSOolhdRPOcxcWRp1VpbcD/y3wNYBRuVEi5xmuNael2kW5srYaM72pp6eysojTf1z1xpi9rnMYtDR96uHHEIrvImU/n0GVxNRj+LSv+E2vht63AFIvaQy6tRXR1fFhkeKdB9/2XQPONDrWT4Jkz2MeFcg3QNjATj4/+L5s+Cn/Z73mGY1Eyv2nesjvAhfNkPADVshrMM6DzBO8nSko4JKnhAk+dklvcHZl7vvVNyod8RM3X0VO6TWB3QqpcoUauij96JBj4tus5cI98ZKZSMvy7LZqnQK0JKVrDB6GrY9FxpOu8Qk64akaS4zHu47Li5aiLfVFS492pMTMFJOg7yhBVXAXt+KaiI0dKWEVTqF6gQn5VSlCQtSAadXH5lVInuQz3+R9FMT/Em5GTYRW9KKYMgHvQufkeenpOaQObef03dgdg/ocGncwvUBDSFYBc6KTzLXKBW668R9pUFxVS/CyMeYvqN1tu9AZoyqqJwu3rttL63oVITtRp6TF6RisODj7qOWMu0S2JC6+N3tV5gtu5c0c9JHNdCzB3h+vsMGJ/ETopv8C1nlvjUgRtoU4XQMEFouHC8No5wCJU872+snMbZ3gc6lpA10BaiFx8n9SHDJF09JGL47HJbeAzFiQHLK6WQPdIyZjHQPeilyJpKxmFC1QvcqScAGMD5QVwc/UkxU1FyVgvgVcXvQTfzQJOMHzqaldnQN3cMLvA8mAB5JTG8PQMBkg83CDo3XpLqu9Hw3x6awdLoFpRUqdvUfWEbo0XwO3FDtA0xuh5iqR3kSDdFFLDKhpGa9/hymCdv2EgDNClcQbW+Q73cB7H2De+Sx2oeikmQ/Mk/sxQSPcCqCgDtcssQdLzFM4MbwXgu4seUG0LqeNPLjQNlqgbnAAmDTz2iNgDvr/qwo/bxpUW7R8fsaimrRwD2Et91gVQve4IreUv/HADIL0oGTJktwpcaVFbe0+O1Dyt4fYCQPKtT6je4zGAZD/wx9GC1D0u6EtDf+fbBMD3D9Ai7bn293IeOtzbD2NSdvcOyuqTbS3pl8CtzmUVwNu7uWfyXE/3GtG55+NoPQGwHIqRhbR6KZBevBNaRuH6XlM9e42990pLz6aB2HmLmSnxeO9EzST6usJLLXQBpFcbPkOFPfM1Z7b31Egj8GPjwvBa8inc3AOQrI8NmYe9vZmuwDc+3a293pGHNPcuR0VrqeFlAqT1U7zqKBmxi6bjowurGKQJ8O5vS8qotTs8FN9JS+TC1u7uWLdMGXK4u3tEy1iV/o1ewlmg0FimK0LnqpmaMJLyN7uzkcSmOt062t19NxKak2qo9LsJdOX7F0OCz2RnGGhSNUDAfHe3FIkvC4kqu7sVNRueqlEGe2oOxeXw1NFmJZEyaq/EbgrNWrp/B9CKpzDAOktG/H7rcRYJGwIif3JOxis6v36GRbiCDLEYRY9ezJihJ3tYy0hE/F1uacoo+mWoiPpvwvjnUrMSeh7QhMHqItIGyohN8fac59ZUc26t7xtkbrBsTWbwoWRQFgFhWXtO+u0FfwP6JkkrQpuNRBsYe6aEaDNHUtRghYyDArKGzsy6/VGbSbfiiXNOerjQImPtYSC0j8J/j02mvzvDZpRBkjbDb8fZVQpdrboVFav/3bvVyg/y4TObQcaqbRlevtVfaIOlZa7CapLJ1jpXaT2DIOP64m6s0rkE/gch3TNcaPxoiu0BsUYZBhXtEtoedW2sonboNcpprytBHfvcB9mspyifKQzWUncToPt9AuSUjJfyJasR0q06/6TgH9jHt3tIBxuXoxcLAMuBFm0R4wevSJ7rVjESRKyt1pCONi5hZWNMb7h+wEPKpTsFMZgFpLONU1W1SBvw9092sxgJIB3WsO0H1/4Qut/njQ+8mhbptv8miPMf5z/Of5z/OP/Z8J8LjM05z+hcEesGgRivNtsUl/hEF1AsHoZVYhZKaC5vdQzGYhpXLwWvl2gkobmW0QWMzeQ0Zm8fQ3O5uMBTaB1jpomuAlB3uGz4z/mPewF9GON1SK+7SHTsUOuQXMPhIR7t9L0eYtUtmmtZx1i0Gx/R62SPBomOkcSuR7BTmwC/6zQQi9srE3qdPylyk9pnC2/4z/mP8x/nP85/nP+4qhAxypAOMbstqxxJUra1JEVkBxEBxCQD8hDMkwDS7mhAF50Aangi206SAqDzJ5EsiD1XpQ0MPPJ0fNGGOCsxqrRrHc0ajqilOueU1tRnqRp/XkmushoP5274aIG19nN58PAopA0iPOrQfoHcWsZatFmbXStLlqPDoyltJiurcirhfdXrbaUxyit0jsIvAOWe1U7HFjWiNc/lfl3CL17jqBduTz5D2c/nVd5SO9W0KbQBLZpLn7C4lvoNt3ZV9RvNSZvZbLmbPkBo1yZISx2/TYdCm8nKKpxulW4AbH/F6PAwpi1qLb2HfG4jEliNbyCXzr5wPipa37lcOsKKQw2HV1jxGcmSxmnD50GCBwTzBntriqU6t6qeL3I/vVbazOxgsMLaBLlCJcVnBFHksWEla7XRtIu37wsl1VaStLZY1C4a7nMnLPLuzsaeaz09iIvWUpxQ0hBW3aovklZdxbCsuXwSAqRkkmQZhfWnJaUN1OrT7V9BFgIEZcmSReNuSkbjWQZBbT19M41pg3MKsG0Zjbq4NfGpMVkYGAFm5S04SI8Eu0K/6Jc+K0FqMw3ECdJh3inlBDhxGTBlZlvYLFILrk5QasMcfVY1zkb2GrVAtmJJitrDgkV7roWnA4WkH8yNMtZYY6zJmAFZS3MFvnpan44MkrSToul8zRegJ0gcGWghQFC2xEHygt1l1GHg7gtpqIFY0gbHUXk2942E330QAQES3kj0KMWJCyArKwFqM/ABZ1TDfLM5ovUTWI4sC2ttQGpZpG7GMkhrsGzLbGSvUQsEis2+CvNnG0pLucC+S0FYNbC5SCup5FsS3QVjSRXnnMReZUTM671YJKK1PklqSHDTKoZfK61fq6ivKSU29ZGRz4LREaYKlxWx88sL0icBL1dBQXgavj7BDl3QhxdOBtvua6EN1EsGQTUCDA6XalYurGL4B6WJy2wlyEnEwPbXr/vY23K6QvyHfBSIJf0BZiqseJbEaOp/a2em1AK8rRPoYjQSI0Prl0lr6mFQFoHRZN0Cka8kwV4zVYGqzq8d/60/Kfk7XH7t8a6Ug3fmqZF+N/q4iO2BMQaqvX11VR9GSoat1qHRlNPWrBOR0rnP8dX6A74UMj5sf0bySRqVEn+w/EXab64O7jEXWnvOUothYf/qeqgyHRxf3TWpZkfw4/HVi1b4XWae6PDyat2QZyiZNu+u9gsd/7DIuHFwdf08Noa7Uunju2H7KA6Ywem7dzrvX131DduMK625OZDyJ0OvKv1QO63hPCZrf+oP1XAJ+fFhe9MLcsNkxsL+Vb0dbMVS5qcHV0+bo+AZn1cu0W21xyuErXdhEJaqu5dXx4NQMm3WOstdXb2Z6UtaT2tLO4WDq1xJfKmX3lztH18NTMxbRzy9upxGpMw/1dVVri1GEuPWoQyvV8x5WQQU6dsm1dcCo6mvBUYf14NaIJaN7aurDxXxqTh18NvffvKZms4zmrfGZNgu9XBRub2EpByqa63NAvFz4tSYigdwdBvG2g81Cm+wLrR0DwBKShnuwFuLltD1Yawqi/wlrsNbbzeF1HCBNzfw1j2OavDWASNaaucW3rrL5o/cwVsXoRqtXDHV7pyYPSCFxJTVURajMxir7gL20Mrv0E8N255QyhPUxdB/n8R0XVY/cniG7lzJ+EMiXE1/QJALFj36CwBIB4aVHl4Y3+Cj6aQ2DhrOrWOYqSilZFTHDzXch7e6laAPSx099UVnFKMNFKoA8NNfYaZ1mhrWVkgEco1lD0BZKQPTfF9pi7qOO7PmvZH5ot8wVT0pKxmFN3jThbcahzUzHk8eYzUrlQwMrz4V/JEyQnTctzhQ2YC5XvKQdKNGt5XptA5HvzGG5PXmJ8G3z59fAndK9x5vO0rKMW6VOk9Qaw4bVVSPVJqvaykeL+9W2HoB5IY/15BsbK3wGLgZDAcLpFXkhpv7wD2cxwV++2L3ZB8wMJcBcLe5+xRYX4E6X6DaGA66wFBoBvGkOdz+DWpTPY9fLBdIa6+fSRAJUBsMP1WCZENJ6RlQPgK9Fb0peoxNpFzDzaGQcj7z2Wq4BP4gn5qgWpg9WyA5CrBCaQG9k+H7BN9PI5/cc/1xuYPf7L3uG6QbATDiEySNYWGBm+Du1X2kueFmDygIV0iBxbNZoYqqUeFNf4gmXgBpf3c4ojSB483NdWAgLOodUny7u7sOfDDCPgXWN4cvUhxrcYWuZ2r48QbpjtcCxzDnX/rA9W7zCfCNkDIAH/3AB/7EvI/mEvuq8yfLBN8td18RU45oddWYTKLLJJTP4R5Y/p41XDvnJn1grP93KUXTUTtvUXCUPhbhV25SStFwjFxYxW5eSRkCD5g4xyXWZYUuaiPn8uMEaOadkwvcRkWjf+7LOef6JkVvnZvcw6enJaTcYTGeODda4vFIqYcJ7tS5yewnbDtS803/00Fc0blJO8GdBIyEhlVcinOT5ylOxCAf7mHxJ0cWeS33tXCvIKbIeDqvpEet7Fy+lOKjC+JbLCPn8pvAiQvyne9jT50yM66BpJ13k6MFfgySKUPg/8k7pz18z6LBcupcfgZsOsasYTlybv1nYxN1JLOJE6MFXohzro5FqB6//eiccwdYapFaTlB3zuXfI62oQS10Lj9/62uBAyyjIrUENJxzeoAnWixyz6zCQbUWKI6VlMkdLvMRkPR7I+ZZpInJpc4EjIYLFL5WaqffP1TqLdaF0jT2Vqlj+dUWqYP3QyW1U8Wmo+XWPg5cRE42kXTU4x6OpFxhqRHpTrHgCut4rRGp5cSDaix6fB8rqaMFco46TjGYkHSlFCdC9yOqX26R/CqHRaik+xnVDHt05ScMHclJzhPkx31E0hEydj3UDZp6i+qGeWpziN+mhPufwR6yv3be4rmjNThxZMQa+gEU9Qp3Xysjnr4vBW++fdSo5zYjvx918T4fk5M+anExwFzpfYER6Z5hp6MGQ0fq6MbYyFrwhbho5lZjGkXcCYWUwwS7whV6EpGugMU0onZ+7HeUlAowFIOG0QL7qKkpb2cU0b3Aa1XStYCKRtMulvRaMGGkuY6nDiLpuMcCB2pg2m+hHhT1ADvN6ZasLBplSToqT7EvpDwAae5QPUlKa3DiSC1XMZhEqnKYYiYGQnuu6+bFhgzwisVo+hh9Z8j10HHt+5XV66jxZUVrlPVCKT8bE20tdYm6o14Y6i2lneJXGOOTFYa/GdAOQC5xYcqft8b0+HiHnbaj9cJdoMIlHRy+xaYPw0qRT/A+AEof6WlZRcT44gDeozb6PTOjbaDtVNUNUQ3s3kicoeYjXhn8Du+2yJejGk5XOMXCCxVh2kxPi9YW9QpPnXqrhobBsRYt5SMWYUTSNCV/SgMQWk/evtCQVx1FxdEZPkxUVadVNIV6jOKmkqgFW0apCJcvIbmd8nOPNzjUygJ4dXGPijlJRwkeMAkX+NmRMdeBZG97SKENpJLgVddYwGYGjg2eYcGiHlbxUQLYKgEAfjoyoMF71BhLH12vvVa4xJXqqIa+M2weVtHMml0xMgI2xUdR9/HU+W8OGiyAF3naLMIdWbJrcIt+EBreAm9v++/UU7t65ARYdFfW2QLJODAo6Zzur6ipYuFjtkLkI4eaWYR7zTyJitYYxuTMcJMiZ7AfiOUWB5cruhbIloGHHlZRPfM1ymCF8Q3zJXotpDlcdmXLpqEg/8O1lE6uCyC9DpVGxvv5IaplT8Qv0eDJ7wAs28JASikC1mesgnmCkyA4LXmrMmIQDYP3qCkNrtGLdXqGgklnB/dZLWkwB3jhzJkiDQCku47WF+6XiHDbhqWOTl8DwMFcadeAJvwrEEtpVmGsLKnjVldFNPoe/pUV1EoNxlolR1X4lgG3OhcotdAvYzpetXYx6RD0/Bx7Hqsble7T+yToMSZdE8koh2+F1jJWp/OTS/OmS+DhJwzmFXOFzJ7ODgaB0HjFVgaSw94KnyrgcIf94MNRsupDBXgexDHuxJtWW4xMks0LvDpU2oBwV9RwpV0YajlurqfGfNi1OKTDccVco/MAc6UUZ6ftyryPV5/XoX7kM9NhMSPR9AzV7WFlvpmu+tDwiy/TV4Xz9VpIQewvdWTL9IclM9yV5Wg0YqTOFYCZ75ZKoWY2H0cjUsVVdlB3gXSqeEBeveWE2VPkGbadR9lAoBRJOFLFnoBj7CvlBMlcaRnzDDnHrWMcmE/PgNLqng6X8uapUftyb9hRTy85mho0vu4s0FNlhnB/4NuHkXus4oYJTt0aoO+AklGOLSeBKt+gG34lmm9mSQHVsvm0HbaoF7jMi1FjF2WBbCJt5UXdfHVUzWNo/MHXKDFJXxUmShZEqYj9xRuT3i8XUXeBWMpJtdsRUsK35iy4OhbmTRjt1HaajozzRmmDvkwvsKdKUg4ZZQ/dNWqqpBz9JvN9/kPN/01Kp2o052GCTzUh+dXQKLorIJk7MnLfojuKsmVmHajD0zxuaoITpBVD79NqXzx+Fjf8HbYdA8N9gQ/TJNhdDVpZ7LQcqW6JuqwB0WiBS6dkrPOoGBTTPtYdyfx9svtkqwKcfEXW1/QtoWuYZaCEX2oWuP8MCyrpKlgV8H3cjISkdKZK2aw+VmqhKXjNkm8dIOlHnf5e7rs8X4/hvqgCvFE3cQ/4Ld4Jza3cfFO0GC1R67jJV/MFco4Ghb92pAyBF3QTN1scjKLs2Wr9FjmduNE+Mr+Hy3/iZBLdIR0rKXUkz93EjW+wjGPj1WDZcRN5BuPCga6JtPNihBD0+No9YT3ctMkXeOhEoy6ehG4iA2Bo3ucXuj7QdEHh/n2THyfpVPHsrx2zJgpf4WLkJq79Fs/cGkDXAE514qRZzem5DTpU5/mJtBbYyQbqBRZzNwkPbdqinapRBtdZduea3eF/mExcpwfsroZ4aor1qZu4SndZVq0Ai1GtuNutuENvsl5D0m5vtPlnVvKbaX89f6QY7D/c98Be/8djYN04AYlYA2YelFaCar1Rf4vqXGlM3aLfCGNKDui+/3AM3MVFDRdoKCzwgrYRtmDRHKfbfm4BYECzyJvc7fdrQN/oiOkSWG/UE1QrW57s4U+ovmkcAMdx7OnaAHoHH6r2CwX3FpfewPzYbIS+xwJllmKR+3AAvNmilqseke4jqShlQIdLrPXlHhb9e4SxVjZ5RuFlvkDlhZDSBBa5xmWKs1ADyeFMh09NOKQQxwde0P0e8CFwU9hIUc019gGkFQ/4ODOpJEjqPy4w827jHgtR0XoKTlIv5esE3c4K67gyGKAaRsasppeN6xTAM8covMEHg328ovFCUwH+FFjkfrxL0RtFRhWuHSy9gXmhMu2xYNBAej04OUJSjlB+T8TstWUbBAITa6MKAOnlVOmV1TXQZWxIkFkN3npdMqdumAC/CZWRNr4DgOS9vqSGe0lBod/ra3u1fMkj4gtDXOFJ0qT5Ye+TE6We05xGnh0N7+CtJxUxjX9TM/T+b/zF0KFvAD7bg+DdfMFjzMzXvqLYXOhdoA0wvjf09vXlCjXPrBdKejGNAsMloewmQBJGOr6k98xcwm97Swn7kpxhqfkY3uodZVD7qZInCvHkXnFFwstK8FTWUwCoDiRY5uYCAC5OqsmJUEvfJe/U40lyH8Pb8MaT9YaDvRWSrVxyEBWtofszjJBxXFYW9Tp5atBMzqYRqfPXALDYXCZvhNF0GdACRyMUeY81VSLgvl4ZudfpyfFX4ekyktSTpx5argE849OPVnw/CuDK7F86zX6/UFHjscK2cVVrdghn/f6HGYVmwUsf+ic892sdzCWiJcPyVOkO5WypzKDRZvBS2x/693UoYXlEVJkirwnzQr9RCfjxWC3dY8VdrH63o91+vzCXX0wdxWizPzi5ovgb3149NBg8hEjZDdA7OJTYDGNkjPCofDg6zxAuvUAt9fubPCdnlWhEjZBKUMLn/X7jXZRJ7bQcQpGF2VlAhAj+Fxk/6/ebHclkrvxzvz+M1DDjsxhYLfnyAf3+S7GaLQ2V45NhmN/t909LqrSZamvkyhVRzVDC8pfZt4DqrnzS799n7NXSZleFQK36ZaF//GyddsyY5yeL4c+rV6NxzB8kKAVs4LFk+AF4dU5oM2uN1OzyKqrdJo+aEKohLtKiGJZiuSbIb6eowT/lbRkFmPL1mQsRQr9R8IlQ3W4Nm1GvpWrRp0rPbVBQRNsJDtKex7hfUwnRrWRKIENw5sgrcongA4IWzcacE9LYxjJZDJSVx4om1ihjGYpGInHm2sbinERmzX0tkI28kQ3OPasqBGj1B5E8nXYMFifrLsKeKesVUb+SbSwD2iTj79ZYQ0MGraYaq6qiBNhARzZza0MXZDM6D1BmygrWYbGeHzDb/eOqwhCjlwyOMqgUOsEs1GZhVPeYXYAZYrTBIn1iM8uy8JYpzixrS39tabNvAWOC2VUhm7AlBdfznyyU/bDm755e3gbe/M3ylyr9WoM0+LVQQgyyA2QQYjRBmZ1nISODXfNWLaHtrjKMLLzYODKqTeLNTm02RomcV6vTzDpjIJllmb1lZyabXP21tWvRAqvIxyrs7d55bDzcwPebBr/W/m63eIU6duv+nH/SMuoMBnOh/TVXr7ce19qeqptCa5NxHfrrrmAIIbl0ewi4MLK/9iomSjbdGbK+Wvz19y/Sbf+VBOc/zn+c/zj/cf7j/MdVCdO60TAQybL6EhTz1EqpGK022xTXTVnbOI2jiN00lCrxuiI0l9n8VRdQbKaxPdHglYxpLh0tH0AWL5JrnVgXiApNrkVrB1BXuGz4z/nP6w+C3M+rP1v3THVIrl8PNaLY6V3EVrcjkuvtRjuNJnb37jNi94XmstH6QaLdvbJc3MFqUQ7l28sUl6DNsdHul/sl4i3xzSij9tnCzn+c/zj/cf7j/Mf5j3OehwkR2b61HG+tImwR2UFB9PLFmxwBINu1hsNiMYtcrRG2L/MdEgR6sfYLNjmCEOJ2rKlZiqrGtJnL4lxMa+FDhGRemAeDwV0GJYhBKRKtyfwIYvtaj2DjoePaqiDbqW9clrq53+0OhTZTM4Uff+5EZH3p4ZMrSMaFleKo6H1wBPHUNaXMpmsxP4J4xdorbZoE8bYeT+TbiuR5Lil6v/FJAAxcRrQCtISMh3g6ZF1Y3e9N07TK5ooBhQtYLYv3YeBMWA78kOM3fE/MxbgI0GWYWC14zcNoQFrQIerXuLYtX2zltSy6HXGN2iRKoJUUV+1KyEy6qGOgLTyP1/LAZ1yYM7HGmj2b3lcMaMB/O9q/vOsC34+F/gECzCs1ZLLkeAOfrV6JUEMMSoYNANmRzOpIHZLXbxgvBYidCzoAIQIx2jCaM4s1OBXbuERaESWUKIH7gJ3QeU8HOssGOqusCavM5mK8GLHpFVjjuNM5bi5wEyqt0V15jDm9UkMTgLrZanJRZVQx5kpr1mVUgFigGCDE5ZQM3V+l+6t28/QkorsgTOmioRkmAjGaJc39GhCjWLGwThrUcjCKKkYaZROawgv0lKTN4CwzpqyyJlf61viXaj6sjNh9xZDuLisymlQS1GUFS0osS4SortTwEGLNDsKLmozom7KsvN6M4lxZbvgIMXBcOxMDvtbE1b4uy0ZTp/rTdAiq9Z3f4P+cEqCYnSvLMiamDKN4JZQ6hEpb2xJ12XSQVUBZNiFRo6VGiFYEIIlUT8JH1aBQOcBHUtRU/KJiAFUZf13HQX6yRUsNdMaMIGj2o5JVduNU3+S9NCi55NSYigfQLOk+IOkoLX/Rk4skqX2YKn9goT80GouF9zOlNvufYfbZvP44SS4eoL+Y3Vx6Wk0W12OhDabZukiSvUJkilPeVy9JurlD36D+os2rJFnUx0LqvN9fYNn4UI5JaT2tJsn+if4+0EapXxgVPTv9/pEXyM/9ynj9bfJ4O9QMw8h7LJOk+7/NhZbRZv9Eaant/umo6MXVyZ0lyW2BviGc3VWT6t1MDBW/bG1eJUmtHxqiinpykCSvvm35pijs1zxRnS3+wOanqmHR7+8qddYf8AdLHff75SgTUaffbxm254MLfhYh2fKKQ81DmKMfuG3MFIGljn+Dn4WM9AWQpsBtqJQ71LRoudUGdoVuiTuh1547prY7Rp6MByRAAlTbQhvADpaGGjzVmJY6ugLSn4BFS4xXkehbGLqSTaF7DnNVlDJITb1vNAhXQDKNSGkD3wiL0Wu8TpACqJUD5em0Zway094it/ZxICu4Bv7sCiNSNm5MVVdTpaUUfAYbnrhY35ii9jwj1P8N+N1PQDrwRGmnZop6PNei1mCsdaHk0NWipZwAFc0Ib9DzcH3e3JM1mf3PzHeYA81TsU14Bu6Ptsguco6UPtJ7dMLBW1wKpYW0pPTk1SLSXeGFkHpUxd4sPOwDH4SUWYqn8+mshsfTiDYIXJWm86dAwXmsI210wt0uqkdGj78Bto+ms9dIN7bMw23jU5Vjnf8Gx3+aju+AZtDQygALDy2lmHn0gNet8OgNcBeIbCMZhOHJAmejiPoUdwYF7Kyg4WN0d8POaYq6kPIcuKtMK+vAUEhpAD92wmbV00rZBHKd8FcskVaU3HqK6klYHrxFL37JZsM4DJXSx9LgOdJxRugaSI6URe5x30Oy6FatK1eip43cr8EY9BZ3jjpOcY+8ar6JdKxxVMOPjkXW0HABuBwWoVPNv8fbUBm/xoGIusMqBi6YC3WRyBW6/D1lCAzyqpOjHVwLqZUU/YmqC7u40sCnXQHVkVPRGi7d6qiNnOpXdaQV9Zt9Oaqh/wfV/CbSkmTGneLtfKKaLwBzLUZL7IuobPVwodSjBP2JKXlDKZfouS11hwkKjlrewX39wVCcHKnx9JX39GrReYpnjrqR8qVZFA501Pax/lF0QXGBp84T0lWn6qIunonXmXtxUUtIx+onmi7Q+IqkzncWFZV3SDfyqpq/xrEGUcUDHEk3BNpKd4maRiS/amAnVLptLEZK0jWRzJWMbrHtaA06E411PKzEq6PuSG7NEwwkiDPU86LRqDUrxxkpxnumVg271dmWloCZEczmTm8UuVMs6NSY7lPxWKrTmKVv5pERYiMvquFsFtIaMxiRdrVw6wAXStfAuKkyKQeJNbmpGEvPOBzg4Gi8sg5fI2fsi2lJXR8XWrQ+tJJiKMY182hESgHV9nw8rnRy2OPvaYMQegISfHQRa8gZWqWdoq3UC9xtGdcpRwk2hUU/Ok5xNhjTOeM2z2q4Ni879vBGgoYxBzydddQ5ITNiXK8HxvURf3511C+jqOvozY28e3ixwgnQ2zyicxLRUu+Q1ltldU5pfRTt6nEfkc63tId7AySL7rHwXdpKKrkZh8IRfY8XLuYSAetaSL1Y+TTew8DRj7wDKuppZRSdU7YRsG5GUSADj2i0QMFpuEDBGVM1T3AiMfew7Qy+XKAQhKWcVAHU6iWJ1gR3gadBRKM7AMnFfUKhzcw8wVC8uGwxOvfELFi0K2rPo5jFuIeAdSek/pgC6bJ/ZLjT8gWA6sEDKGuKlqso5OdeUhkUbu+lktw2LcLT5t5fWGEPSffm5maxeNz90dwXa1JB0tEMmHfyLGns4+mNtxY33X3vTa8s+XKBQQBNg75JuMA9gvAm6vD0SRVIc2uD9HAngV+ow/pNCnTfKTMzTjATX1wMhKQtxk/MvG8Wj7vvlZay0a8lwNuBGulEm5cLAHtj5dph6a7Ryw9QQ509YaUUDwY7gZpY8SEYXBMoKdnDGxfFxiIttfwd5gXjZoYf3TB3Sa/LhJQ+zmINUPrHP2b8pJxg4KLR9+gbbJlzEjAmevgWzeCDioiWd4/hDZ8NZJQVxeg1XgTJi2RlsVJYoNrRzBxWceLhxRV7TqpfGhMUibKoV7gOztszoEfN18BMSDX8bHyqxLjHtIbILtLOHfoB2XOPhTpZls0X0VdlNvdD+P9wKdMz9JTmZaEWi0Wq2ZHuGv0L7AYTVnFfjpbkbBZSmkjmQk+pizLwsydOWsBsi3KMCyEt3QDJodLVUYsjT8cQn1ylrQB+YHvW0XN1coClFgN4hkXoUQnghdC095/5sIw7s19BFjX/LkVTqHdYN3hm/BH6B53vZp14q4V0w1MVhbP2iFJHLQrIm2FrFsZFnYQ3qDvGR7MSGUt+E5hJMO+xF3GFYZZEo8fI7aA0lzlhdZD8bBuUquSpMf1aX6AWkRNxnSukJd8N7pN8xMiVhhGt0UBv08U0CoJyhz0VxvlNpEeqne/wwinpwuYokB1cOqVOrrEIlW6AdDaJKaxhX0kZAs18RJUeaizaYrTE9oTnL3mGy7wyzm+jRj/mKDtG+U34uRBllL8HflsKQE6A0oSUqXH6Ji+wp79Q83VjK3FvcDMScvIOKGk0ukF9otR8DrXIyOEBnl9XGUbUeYpCPqa6C1wKpYDk0JHuKMVuBhp4FQo1X8gO8w0tLDW5ZM79c7zJpVevbmXEAp+x8N3JcHhSryI1LoDj+AmSJh03q2ipJ4RdmD8lHsBWO8W3HdHhDi6FlA9ALnRa6eFTSYZ3td6HLr4H8F7IiDW8GqrrHOO3LePV4ArJSeTCa2BTaNx47amOKH2k90WnwwXqLmhoxyku6eLdagCoh06bCS40SF34CrdjdeEbpBWlewBwH3WjFeuLMKLOExwcira7uFJSCkCDjoUUAyH1Aj8N6Li7wHCLuo+dobp4kOKjMxTvH4mUnyLpaDAzYFsdmz9li5R+C5y6LIrK1n8iKrc+LMi3bMO39sz7JNTDM6C77AJ3o6I1BxFtMbk1brwYDfp2WQOWoZJRdAdUPRndsQZwmKCL6m0XWE6VllvzG6C2TJA+MxpQy3tA97YK9P9vmtszzl5vaDTqATeei7OOBl721oHFsos0gATJ8gxYzAPVye5PSPeWVaCvpI5qwPfLKlIkYURKM0Xy2u+IeulZWQB19f9Qws2yC+xPI+r8MfC9oYIxKQ9I8dPeMoF5xe/usIyMoug+0F0ukAIVDfotksfIOY84eoJkrhmUGfMX3lpr98wU9Lz6rebFRa/Xu9geUmjNTi2/WAA4u4eqOXaVi2vSGir7FwU9t143LwEsclOltfxFT2sAXr0oB16nlu8uxo0qkFyHpn7pXFaBtDcUn4nwzQLA0nfFGo3WYbbqqN8FsHNtPPz8wjee6v3Z3UVFzT/ygAWQXlQMrwEf7f0EQO2jEYjO91PgbW54cTeNjWuXXgrs1MtbZlyFMwC1gr40RIb1BYBuI1JP4qGR/uM+DQcy9BRjuSmGxMLF+/jcILxMgORytn91uMLRxcVYea71i6YZtmsYr3nZ9JipUF80qaq/uqwYdD+s+Fbgha2Uf0WrNAr4CeFIgs6LRM0RkajSaoV+FbEblVrvOhI8FhRRKbdac1GffpVOq1XRABOGrErAdGtUalV4bhm5aanVCnThc3/Yas1VxMvD+CP5abtVUaOHAz/0KMCMpWrFcCBCc9J1HODIkl5cJQp9IiVst0ojF9P602+HEvmC1nmwn6AwPT1HPmekkYqlBNTnGAP3aMqMWbXFjDPrIHhAVGQr8iuxhqZMEiyLKqIBKljcCpDhk2g48okL9KPFFRPZ6bDklpgbMSMJdJFBJUnSGlyLBqvLZCZDPKbWbOKyjMQciyDJ4uUdpEKDgs7gJzDMQGfWEOTXZX+gm6dJRx8BWd0bW1N1HhtzB4EIJY1USWsTMSo1OzLqN4mzkyUWLkwq1YQ0TOpWE4gY47I4CNciPdq9rR+xiCNYkBIOUG+dpWyOuOiYUWbX9dqirQ1KEzVGGa3KMruwVKnS92jBa/usSmsypDUHbdAjCH8fb/L4tpjtSftqI/jt5ifT7sNa3Sq+8rPklnqMBKtbq5DUy6bZ2lIG790gYqzSr/1KHpV1AV0gRgKkYfsVZfDeFWIkIukYTrf9VxKc/zj/cf7j/Mf5j/MfpxqbV3hG54r4o89kgRivNtsUF3zS0VAsbu6XmF0Rmqux0S0Ui2k87X3ewyp7ktBcq9voAsZmwk3TXC4u8BRax5gVNJcuAHWHy4b/nP+8nn7O1l0kh5rowqQdxXaIR7vRtIdXVi1JrrCsYyzajbslYsGlKyKe4kKiYySxw5/aRHSDbHY7GoV2myETxPmTdDejrNt+bmHnP85/nP84/3H+4/zn9eIikmX7jWQ8JClTrtuibiEdGN226aZN4h6qdM2SZjoESZGp1m1tJikS0T6U0Vn7hXNjP39xX7wcLFVpH+EQRB9ChEyh7i3nHGkzPD5jrrQPVXTOiO4L9lJmqaq0n7+4L1wO1NJMaH89wMxw0mPRbBHLic4++6G4X6ZKd1Fn9advvoxoAx/3+CQN9xBhKYeNp09bSqrSfpE4qnTWgk5l/vDQqRyR7hJNR/trAOayLPn0TMXy8qF4bH2JmRcCpghLfQ8Acw3A0g3QfZgOljKrAug7RuN5/MWxa4t8gpys1oaly2HJon1I4r3GRVTUjWr6jaN96OHJsKqqAz5TWMbGeclDQHUW9wY3fTlOEZayCVw8oBkGPqSSJmN5mB4aLrAoNMe6NUzTltB+cbhdG/4y2Ht4uEQvKtLNsOgo7UMP305sUikGJWrJRoalVg72D5U2QI1djdC1shMg4o+B9uTLzDftND69RrJ9HOC1Thz/ZWDX91BwNOStwoEhKuM3WLPkjEIEV8g9AGk775RyAgxNrM2qJAE5rDZZcwVgCMm6Hsbh9QprF9kfM0e3VmKttX4s3TUu5aGHywZGxPZgCdRiM8rwkCFQ8bD0y1mN0LWy4xdhA324m7hYjQbp1q/Lrla2KaOLvguQ7QvshhEN9XYVuRrCM36DtUguSEVwdO9RY2yY3B2aWnzSsjDjS3T1yZJkADYg5KxSzAIbkFE2MjLkmsFr9jkH6whA5wlKQvtQw+qKhyeIPilKGyxjy6us/qGEtJNXWkYisYjEtH5lkV9o5Ne9JnYiWlOE0i/LUr++icfNuiexpBiLtJnNWcYiVF86KzKcdvGffS0RbZDpC3wqR+uTmG0AhgRDuBqqLAPCzBhoFkEaGjUWCSjF19u4FWdU6Ot8TBuQnGpwSf4lg3KgZkhWg5NV0UhE6YcqvmyYIQxTxSQTlkGtEVzDTJcxllsiYvgzvWbup9jnMJNFE0tZx7V76Kms5MAEfmNtYXnbr/iy3vJkLLdLW2S8MWsAg282Ysad3RmbvWVJSSkXesv9B1B9QkeDq+VFIczwYSmH9+ityCn77MjG++Xy+OeROReV3bmerC97p6GS8Xw2zb2bnnkcB8g+qpuXy2V9JpE5B6OPx8vb9xUxJifcHeq8v1xet4SW09ln7ODb2W4npvWrHqdpZYuWcXl3qOMVyy/e+QPoNJ4s15tUMqrstiNaRuPdw4iW/Gb3KODDUtlcXy5zJb/gcuFq2WvMjcH8ge92yxxcLQ8G/IX/OyutY3R3hxUaoYReOi91985LtrxbCgjU0otso75cvmiLjLeXy7sTfUlr5FG4WD7pz81kK7vjaX+5HqoJNdzdLMU06nG3vP1x7g9jdrm8/TDqB2P5Utq55XJ/MFKzaLp7uVxePo+VNrgz3r1YLvtHo90Wz439qJRbGhUxLSn/h7vlMteWl4aOog6fLp80WPfhTlAtK+1DDAf6zpj0+P+SgxL4n13LSUkKamyOc1NG+kEpFzBWTygn+M06gBNHad3AW7dlQ6iM9+Cts/EWbfAFaxXeWrTEUHePFN7aGxsb5Dr2L00doVJyUCUip1r4dB3GqjOipcxNcz81lJZbLeA0MdJ5gFCPYK6mBCAF1GjsfDOkpuW0aQYwXJhZhkpXQDWMSK3hhSO1AnwTpF0PezAEN8x822bcyUehZZE11E1d63FMNSXgSiktoKJkrC/gre46eloMMPMOqJt2djfNUrwxbT3fMW1terbkErUlkJZ96HSJ79pKanhsyts1U/xgaF/0ArGMo5xpadlRWka8g7H2p8qgUZSGIa56icU0ImPpm2Jvj8wG7Phiz2lk6MiZMd760KMEu/Iwwzvz1MpBKpCSMMdcHFt7swfclyNjvsbOoL35BGiKNi72gOVFQymbAK5nrXKslQR7J+1Ggiulp/sGj39u32fxSWqjiNa3KO9S7DXbD3iM6pGSUgAunrcb32HRUVLvANRbrWvgvVCbV1/izSMr99LsI91uzS6BvpBa7iJptHcvgIKQW+9S4KxZ+rhAtaPauev9hJurXkuDuMOdowlQOykNFtgpKyntBLeb7X6CO6WOU7SEWklxM4qMe6WMTSyjUQ1J491wH/gopI6/w+I+7ZOVQmwKV9gDkg/t4YEx3dq4WiDpXZyu0EZaCYr6NAGuAmmnwPGwXUiQpIuP7c0lMBMadVoa8SRzJeUFkJy22qOXBjrqoVpxZBRfITlt/xU1n7wTYHnSvk/1k2RA3gPXs3e5FPtatJRto4bXwLUGitsEas32YAGceUgD2N9tf0jQDZXU0R6Sfmt4DGwbcz8AepteXgbea0wN/Ycb1bO2x31g/pNcXLEubmsdyaEaXdnKi4tqeKJBTxs0JiLG9rk3cpIfphgKKddYdCYyGb/FM8cfisay1CdY0onrLFB31MME34qTyUaCF7LCU6QnE3GTddSiIvXrh/jujfU5kE3AFOb6SI6U8gZvSxNxcolkrgYXdJJ/l2LTkU66uEfg07YY7aEvfg4iJ/kZsCtk9Bo9T/Em8E4YLXHq6AoAWkK5Q90FDKorIGl7Xr819lzdx+PDibi4h0UYrfAaVS8KreHOkfr1eyzFKT2SFbRcxb56UVdxkIm6M41XPR/hAm8cqfuoeXmUfsKprFBH0s6LmE9Poisk7xwt3QDpLC9uVMMLYcQzPKGTrw5vgrDUw5/Qz4vk+0jHSg0Xngw3ySHtqD/XIvdQGzlxnTMDHaeoi5N8K0HOka6B3wwn4lwOackUf+DFOF74oNxh/WGGVV1iU56DEsTVHh/bOkjpvEXBUU6QdiYRpdVo8gfKzCiU2fZHSnKrlKYzx1jlAi+cofsB+TiOJi9wofQvLaX4xpGcNPCasWugWt4i+VUD1Y569CQm3TPzFMYd5mLVsHRfx4UjqWGCTdFyFR8mJPXLKhpuBWDmSJ3eoLBCPOrig2PQkGq4wCCAtqOh5JkzciwZqd0i5+j66Cn1Nr1Azmm4g00J6MJ4D/WvSMoYKKlWUjSN+ngCxKDuSLo6brVozdsxEa0fd4K0JCTd00z8Du/EzCFn6F7HvmORzUZbGKvu4Y3JE/V/2Xt3jGToaM0w8lEc5wdYhJG04KtuLpioUyiEGseuZJwR6mEVD/S1Ug9PC+WAS9+tEnBiaP5g4LaxGClpCAi1yMeoG6Vm10tCdv0xXgawjWVUfGjhBbdizVEZCpj/AG9eEZX2uI9joc4T9FojdU6UNgM/zQ0BBWNPJd179BjLJpKxkpQBuqG7x8JbOXX3hZ0vPZlxuDFmUfdxbJjbqqRG4Z/6Xtub2PEQA4IqfIxT5wmNxxtlyhBom0NzhysxeKc0TnIKjrZoEDikelTFSQAl9Tgz6ONsFJvDcaCUFt523DyttXBGeYek7DNvjQJsGtJZKYWUAZJDIzpdou48fGcW7wMp2gAkh+7ImLosaG15PDYio1xi39FS3URJcunDuMiwBv0c3hoP6p9SbApJLSHdUDnFIlR6pjN8QnFODXGYCYvREyyaoTrnhPQHIM+QHBmaDYpRD98KjdxStEVLwNDQ4d5gT2Pp+2O8DqBvjKd9WCkza3plyeue6ksxEG2AqJDDHouUQQrsrN+nI7QZ+ZNBDumrVzs7O4sENcauAFQXpoydcj4Hb92p+4AujVpEqsbJ9bbZJp0FnhkcGDwgW+Jh1bzWtVSNPVlJRw36+H700qPlMc2eeYJm0MGga3AdlNptXIymCwy/HuCNO0Mpfw/se959lFK0t3zWSen7g9RvcaVFj5zBdtZc40KLNjtmBjc4zYBuXp/tvHqVBhy8s3KDHeCJqJmiv8pVoCWSM+4BZMQbgPB0f2GImwm5tbEAvnvyoSKBpZUGuqMogGh6hobZGkdv0RR5jnRuei1gUVZvuMwYLwPphvrwUsdvSe+gQeZzM/2iC2kMNbT3xvUtpX25AFAtKLOkDv9Kb1e4R5CMm46Wx97qUPqoGa1lzdOAGhom5QUKa8VnOJq6zROtUWTwqdANNYjVHbLk26CYLuIi3SVy+QMM/7CNH/PHeOYyUFHTujlMNaWB12ZrgV5iX7h2UMN9mCsbvPXBGQyDYkvaInUsNQtswN06GFhK530NQHo9VdoAjAn1o2EXBZPDKgYim0g7JgNUO7r1FBdbfFg55c+IGGttvi0mqfh/qAcDVH13MI0TX8YqEpYaNaAgzI4caodHc2N1aLwmjX0yDslIjWXsWDQoasQil8gFlLC5Sqz1vfR8NA+RktL0H8xddC3oLDDIkmvcdub+1CzlBMtysjN1LdzyVTrWICopZob1c9VzyoeAwzqOBa1f+c6B1hC5RvpiOD+a17IhbW4jHTqaKQ79uY0o21kd1I+yRaN91HnuQ8VxPDgA9qNiAKd4PA08jGrom8wTbIoMgYqBO8Viql5XRsVM/FBxPepU9hNrLbytFtAS33nwpSPD8oiqLt5Hl8XsKGAxcqqq4pTmdYQhQ50ny7fkxH96zfKXpDxFTwOafnVYktYW6a95FJan5omvM+hhXbhqkrb5PRpZ8gFdij8142Z19Udcu5g36c+oRUH7snaq+Gh4jcPyyAjyT1u0jPgY264duIb/XP5yTdBOgh/zoiK32XCd1x4WHU/tPMVm3qzyFn3bPVe4gCbcxMlGXtWNzU+m5ZBFda4BlJTWxyaSuXo0zC/b970Gul2kFfUcNp3BHXrKoEuTFwH0eSX5GOrYB739qKznc9PK/kuA0ekC105J10rRFOp68q2LyPzPqHbUYJ4BraQo5Ekqx0pq5y1yk4j8RSt6HnCbX48SPPPU5X9MriLjR7VKjozcU3RH0WqwdM6oZR1nsZLSWSTfyEt28dQIp5Ti45oA2cdllrSAn43URmNj7PUCVTwXuhy6eJ/hdekKF4bXjeTtWLWToD+JyckmMFubQwt4PiHVXawNFd/dLa0hl5ltkcMqLqKIxWiJnigZy5hF6jhFM09G7mkDS3xDJSdtAykkZ6GS7ijFrvjRowSneTKe1M0vKyAZO1LdMWosFnWJC1HSzRM0hNL2x7jvJ57F06GT3yhQFMxbTA8bQGFr4uZd1Bh5J+TppptMRgfY06LRK7OvlQFYbq0jOZGJG13/5gFKyjbS++jEsf/TBz23AXauP0m15fJumKDhGE27OJu7vBSAguMqsOQg9yelMcv1eOJG68ZW5um9h06+OqqhO9K1oeHFlg3GVA1l4sK75MQY53sCdspKmQFoSSCyCzR04jpLLKMiJYe0KXlXWqCnbAfUJbpzN9EG1oawiqead9M6UM9MTuieAzlHyglQ51cTbSbrLBZ1HzslN5GPmzR+htOmy7txDRgK9R2wrW4iH4wdM0DdU3zXcnlpJuYhXKB25PLaAD46Uv4KT+1k0nmCakdJ7WExdpOtAvzv4ZZjfqizt2q19ekvAhPrOnCbu0zwXUlInb4GDnL1BfBcSC1X0c0VzPL6duFOF7jIvVggmSmp7AHLXL0LNJVBJyDlM2A9tw8cMCal9BbJt7kecBfFK7yBVxTW+MFJiPWK1BKwbjTvPYDam/oC6TdCxvrUM3edIGkJudXSeYw/pzDmgYk2kiNlMAsUPA5vvFwvq0jahtENwygj3mAxjYK1a93wWkW14s/3Ivc0xWJucC3fqzDN9ygs8rUqt/MxniClBMll7jUy8ThrjHlJ4Sj/NoDSB/ZyL3aQ4sLjGksT361Q1weaQm7VgW79zS2wrefUeRXpXe4JmK+lqJprgePcMQAMHLmVA2r13BLIBXdG5xXS9VwP/vdwZ0ZOS+DS6C/534Barl5F+tzIt5J4nbNE6r9wuF1tK51+zNQVgT2v3lKZSwCgtyHGEJWf/gYAur57KfeVArdKGVZvjA3JUjrHKQAsS6bQ0bWhuzbM0OfaWU8BJPWRUTNXugWA5D1/oT3XxaKv8FBxrcJJtdYxKPeqAz33DD9gYbiZGeZ+id4b5p60xZjFu4tTE5pJlT7hSHE8/fEmZM24sUNtV3cqSkbhk2rT6Jajg9SIeSw0urhX3TT09Ku5TNJfasP0WvHn+xOA3x3MhXaSjxQHFZaKfUqE/yk+ojB3anFIHVkNuwBQX8dVIKeOiy8rORxRIkOcLvoejCKj+snHfnUZRtx6X133se75Y6R31dqRemFUAWDxzGyLdg0ALo9XTBN1vqdn1uxJ9b2Qv/dpfduPXga/aFb2AGDd/MTStV4DQPWD/rJCgMO9mZjt9o0ZY6N6ZxCmeV9SUR3OgKMv7kLumbKM5OgB9yi8i7ZojRLJfHB6OgzFJ+Pd6WkpJjkdkdYsolYGp4U2NUDox9PT2Sgocr+6wulgLj51wtbp6c+Hvh+lbDaaZAaaG9FdWcac+oWGmytu6LMfyeHPp/9ZKxaf3A1VbrMBzQdMrt0Ae0qblUTVyrPTQjtSM8UifXqYSbqXgXSap6ftoIL8aXBaKKkaMvXojDMYERn+S7qweVqo5J9iP/DUEo1FZE2iI5Lxs9OPHcdp+F8xwEWQrmI0Dac0wjg5Pd38UnzVGW0aWSQyyTqPZqenuxQvdOtpLa9obR5KTBtcG37G6Wk730Bt9NIYWa6obXY8dUGxf0PxBSDhyWlhQyMzh9iM+ZkOo4V51ADdIWhJdc5tkTZQhkR+GVvmL/CfRxGtT2hRnXNazEJoVnY0wE4sQTJsXuXKDPZXNUSfgekpOvcJVXFO4kzmSJ9cRZ1o+gV1shaHJmIXm87M69wn7dznLCgPM4LzoChWmRwD4xY9OtMMqFBskYfOOZcf3QRfRJI5kHpJk0Wvvv4UAnVZnyCa9VB/GJE4p9xvCE1As2bFiD5P/qIHN/6RJ8bJExyrKS+WzDn7Ku+z6AIsCsL5vBIh6XCuA+Dd39Zm+tUYm8VvzvhKZVctdLV2GCxD9KqjqtT61WYUmtlFJplG2eTLQ3SnShvsLHMeGSOw2Rck6yDFRjfh0J7rm0WTzoV3SEtbiifrpCG0K58ey2xyoc26LWiNoUmgnGCtNvg1v1C9x8i5UQ44EZ/XrPspC4sWfrXo/cxDUvk8Nhl/VzKL34r0lWqthGZUl72bSTW0m0BFWbvJGIZJpYVr4973PmPaIGfZp5bZ8GrzXYVeQyi2qC+A7v5+FbiH0CDeHB3tKkBPVv5skL4sQhTbxGz2nWHef1jsHy+AF0qbQd1qK29XRFflEWWDd3Y//6QFkV6iILQPr/GiPuAMAB5/FNp0qhgdLlMAi4a+pF1zzWFR3ad+h4E/Wv6in2qmtA+zcWHp5KQ1WvWjo3OJKicn34QS034OEzozka93KPijJSV6iBs84Dp89d5TIZfPIxiL6BO5mR/zENE+/Ma5au/pkIv9nLYwke7DeeOD7hpsf05fLtJt/00Q5z/Of5z/OP9x/uP8xxXO6LKgGd0PxHhR3pXVl6CYp7QsF3ewWpRDWW5TXO+RzY7GUcQuvY95c19ornpT6wKKzTRa3WI2ornmo+UDyOJF1Do01y5dICo0tZb8GaCucHH+4+TCjx1lGy43BpZ+SdqSbkUz8kbHdG3XfN3sHZoe3nIxUd+d3zUMk48NaPFL7Uj6yV3D+QMNzIdDjcUnY03SLc81WB6ay8h4byxBl/SmvUOb8ufSiifoEA/8cWhbaPrBsMteXKwMAVhNUCBxAQAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+PHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj48L3JkZjpEZXNjcmlwdGlvbj48L3JkZjpSREY+PC94OnhtcG1ldGE+DQo8P3hwYWNrZXQgZW5kPSd3Jz8+AA==) | <ol class="arabic simple"><br><li><p>When OSTree deploys a new configuration, it creates a configuration file with a <code class="docutils literal notranslate"><span class="pre">+3</span></code> tag in the name, indicating the maximum retry count. This allows boot counting.</p></li><br><li><p>systemd-boot detects the <code class="docutils literal notranslate"><span class="pre">+3</span></code> tag in the entry file name and renames it to <code class="docutils literal notranslate"><span class="pre">ostree-conf+2-1.conf</span></code>, indicating that one boot attempt has started. After renaming the file, the boot process continues.</p></li><br><li><p>The <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot-generator</span></code> creates the <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot.service</span></code>, which is set to start when <code class="docutils literal notranslate"><span class="pre">boot-complete.target</span></code> is reached.</p></li><br><li><p>The <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot.service</span></code> marks the new configuration as successful by removing the counter tags <code class="docutils literal notranslate"><span class="pre">+2-1</span></code> and renaming the file to <code class="docutils literal notranslate"><span class="pre">ostree-conf.conf</span></code>.</p></li><br></ol> |
- **Systemd boot counting - Unsuccessful boot and rollback**

    Following table shows the systemd-boot counting on unsuccessful boot and rollback with description:

    | Workflow steps | Description |
    | --- | --- |
    | ![../../_images/OTA_boot_counting.png](data:image/png;base64,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) | <ol class="arabic simple"><br><li><p>When OSTree deploys a new configuration, it creates a systemd configuration file with a <code class="docutils literal notranslate"><span class="pre">+3</span></code> tag in the name, indicating the maximum retry count, such as <code class="docutils literal notranslate"><span class="pre">ostree-boot+3.conf</span></code>. This enables boot counting.</p></li><br><li><p>systemd-boot detects the <code class="docutils literal notranslate"><span class="pre">+3</span></code> tag in the configuration file name and renames it to <code class="docutils literal notranslate"><span class="pre">ostree-boot+2-1.conf</span></code>, indicating that one boot attempt has started. After renaming the file, the boot process continues.</p></li><br><li><p>The <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot-generator</span></code> creates the <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot.service</span></code>, which starts when <code class="docutils literal notranslate"><span class="pre">boot-complete.target</span></code> is reached. If there are any failures during the Linux boot-up, the <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot.service</span></code> does not remove the <code class="docutils literal notranslate"><span class="pre">+2-1</span></code> counter tags from the configuration file.</p></li><br><li><p>On the subsequent boot, systemd-boot detects the <code class="docutils literal notranslate"><span class="pre">+2-1</span></code> tag in the configuration file name, renames the file to <code class="docutils literal notranslate"><span class="pre">ostree-boot+1-2.conf</span></code>, and tries to boot with it.</p></li><br><li><p>If the Linux bootup fails on the second attempt, the <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot.service</span></code> does not remove the counter tags <code class="docutils literal notranslate"><span class="pre">+1-2</span></code> from the configuration file.</p></li><br><li><p>On the next boot, systemd-boot detects the <code class="docutils literal notranslate"><span class="pre">+1-2</span></code> tag in the configuration file name, renames the file to <code class="docutils literal notranslate"><span class="pre">ostree-boot+0-3.conf</span></code>, and tries to boot with it. This is the last attempt to boot Linux deployment.</p></li><br><li><p>If the device fails to bootup Linux during the third attempt, the <code class="docutils literal notranslate"><span class="pre">systemd-bless-boot.service</span></code> does not remove the counter tags <code class="docutils literal notranslate"><span class="pre">+0-3</span></code> from the configuration file.</p></li><br><li><p>On the subsequent boot, systemd-boot finds the <code class="docutils literal notranslate"><span class="pre">+0-3</span></code> tag in the configuration file name. As the counter has reached zero, the entry (configuration file) is considered bad. The systemd-boot reverts to an earlier version by trying the valid configuration file entry.</p></li><br></ol> |
- **Usrmerge**

    The usrmerge feature in Linux simplifies the filesystem layout by merging certain directories under `/usr` path.
It combines `/bin`, `/sbin`, and `/lib` with `/usr/bin`, `/usr/sbin`, and `/usr/lib`, respectively.

    With usrmerge, executables and libraries found in `/bin`, `/sbin`, and `/lib` are placed in `/usr/bin`, `/usr/sbin`, and `/usr/lib`.
The original directories become symbolic links to their /usr counterparts. This unified structure makes maintenance easier and reduces
redundancy, as there is only one location for binaries and libraries instead of separate location for root-level and `/usr` directories.
Symbolic links ensure compatibility, allowing scripts and software that reference paths like `/bin` to continue functioning.

    Linux distributions are adopting usrmerge to align with the filesystem hierarchy standard (FHS) recommendations and simplify root
filesystems, especially in containerized and embedded systems.

    Distributions like Debian, Ubuntu, and Fedora have adopted usrmerge as part of their system layout, making it a standard in recent versions.
The transition involves creating symbolic links and moving any remaining files from the original directories to their `/usr` equivalents.

    In summary, the usrmerge feature consolidates the Linux filesystem, making it more manageable, modernized, and aligned with the evolving
needs of system management and containerization.
- **Management of** `/var`, `/home`, `/media`, `/mnt`, `/opt`, `/srv`, **and** `/usr` **in Qualcomm Linux**

> 
> 
> OSTree considers `/var` as a persistent directory. This means user/runtime
> created contents under `/var` remian untouched by OSTree and persist across OTA updates.
> For more information, see [OSTree Overview](https://ostreedev.github.io/ostree/introduction/).
> 
> 
> Other directories that remain untouched by OSTree during an OTA update are `/home`, `/media`, `/mnt`, `/opt`, and `/srv`.
> OSTree maps these directories as symbolic links as follows:
> 
>     - `/home` is a symbolic link to `/var/rootdirs/home`
>     - `/media` is a symbolic link to `/var/rootdirs/media`
>     - `/mnt` is a symbolic link to `/var/rootdirs/mnt`
>     - `/opt` is a symbolic link to `/var/rootdirs/opt`
>     - `/srv` is a symbolic link to `/var/rootdirs/srv`
> 
> 
> 
> Any runtime data stored under `/home`, `/media`, `/mnt`, `/opt`, `/srv`, and `/var` stays persistent
> across OTA updates.
> 
> 
> To maintain a clean and consistent filesystem, OSTree recommends not to install any artifacts under
> the above directories at build-time. Any artifacts installed in these directories during build-time are
> not packaged into the rootfs image generated by the Qualcomm Linux build command, that is, `bitbake <image recipe>`.
> 
> 
> To handle runtime creation of files and directories under persistent paths, do the following:
> 
> 
> 
> > 
> > 
> > 1. The process creates the files or directories at runtime when it’s required.
> >     2. Paths under `/run/`, `/var/lib/`, `/var/cache/`, and `/var/log/` can be created from the respective systemd unit files. Here is a [reference](https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#RuntimeDirectory=).
> >     3. Use [systemd-tmpfiles](https://www.freedesktop.org/software/systemd/man/latest/systemd-tmpfiles-setup.service.html) to create files, symbolic links, and directories at bootup.
> 
> 
> 
> OSTree creates a read only bind mount at `/usr`, ensuring that the core operating system files remain immutable by
> users. This approach helps to maintain system integrity and security. OSTree uses the `/usr` mount-point to deploy next update.
> 
> 
> 
> > 
> > 
> > Note
> > 
> >     - OSTree allows the installation of files and directories under the `/var/local` path at build time.
> >     - Although OSTree preserves the contents installed under `/usr` during build time, it doesn’t package the contents installed under the `/usr/local` subdirectory into the rootfs image.
> 
> 
> 
> In Qualcomm Linux with OSTree enabled, the `/etc` directory is managed in a way that allows for both system updates and local customizations.
> 
> 
> 
> > 
> > 
> > - The `/etc` directory is mutable, allowing modifications at runtime for maintaining system configurations that need to persist across updates.
> >     - OSTree supports merging configuration files from the `/usr/etc` directory to `/etc`. This allows OSTree to update default configurations while preserving any local changes made.
> >     - When an update is applied, OSTree performs a three-way merge for configuration files in `/etc` using the original version of the file, version of the file in new update and locally modified version of the file.
> >     - If conflicts arise during the merge process, OSTree retains the runtime modifications. This helps maintain system stability and ensures that critical configurations aren’t overwritten.
- **SOTA distribution feature**

    The software over-the-air (SOTA) distribution feature allows remote updates for embedded systems and IoT devices. It integrates tools like OSTree for system updates,
allowing devices to receive and install updates without physical access. This feature is included in the Qualcomm Linux reference distribution configuration as follows:

> 
> 
> DISTRO_FEATURES:append = " pam overlayfs acl xattr selinux ptest security virtualization tpm usrmerge sota"
>         Copy to clipboard

    The SOTA distribution feature is found in the `meta-qcom-distro/conf/distro/include/qcom-base.inc` file.

## Handle out-of-tree kernel modules and device tree using recipes

To build an out-of-tree kernel module, see [Add kernel
module](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-3/customize.html#add-kernel-module).

Note

Qualcomm Linux supports out-of-kernel device tree overlays only for the `custom` variant.

For device-tree/device-tree blob management, see [Platform
support](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-3/customize.html#platform-support_0).

## Boot Linux operating system from SD card

You can boot up Qualcomm development kits from the SD card.

Prepare the SD card by flashing it with `EFI.bin` and `system.img`. Insert the prepared SD card into the SD card slot of the development kit. The development kit boots up from the SD card, which contains a backup or redundant operating system to ensure continuous operation.

To boot Qualcomm development kits from an SD card, follow these steps:

1. Insert the SD card into the Qualcomm development kit. Verify the device node for the inserted SD card, for example, `/dev/mmcblk1` or `/dev/mmcblk2`.
2. To format the SD card, run the `mkfs.ext4 <sdcard slot>` command on the UART shell.

    In the following example, the dev node for the SD card is `/dev/mmcblk1`.

mkfs.ext4 /dev/mmcblk1
        Copy to clipboard

    Output:

mke2fs 1.46.5 (30-Dec-2021)
        Found a dos partition table in /dev/mmcblk1
        Proceed anyway? (y,N) y
        Discarding device blocks: done
        Creating filesystem with 3889536 4k blocks and 972944 inodes
        Filesystem UUID: 069e04f8-0b72-4a94-aa93-f5ec03bea38d
        Superblock backups stored on blocks:
           32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
        
        Allocating group tables: done
        Writing inode tables: done
        Creating journal (16384 blocks): done
        Writing superblocks and filesystem accounting information: done
        Copy to clipboard
3. Use the `fdisk` command to create two partitions on the SD card to copy `efi.bin` and `system.img`.

    1. Create the first partition as `vfat` type to copy `efi.bin`.

        To create the partition, run the following command (for example, the dev node is `/dev/mmcblk1`):

fdisk /dev/mmcblk1
            Copy to clipboard

        Output:

Welcome to fdisk (util-linux 2.37.4).
            Changes will remain in memory only, until you decide to write them.
            Be careful before using the write command.
            
            The device contains 'ext4' signature and it will be removed by a write command.
            See fdisk(8) man page and --wipe option for more details.
            
            Device doesn't contain a recognized partition table.
            Created a new DOS disklabel with disk identifier 0xa5fa6b03.
            
            Command (m for help): n
            Partition type
               p   primary (0 primary, 0 extended, 4 free)
               e   extended (container for logical partitions)
            Select (default p): p
            Partition number (1-4, default 1): 1
            First sector (2048-31116287, default 2048):
            Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-31116287, default 31116287): +512M
            
            Created a new partition 1 of type 'Linux' and of size 512 MiB.
            
            Command (m for help): w
            The partition table has been altered.
            Calling ioctl() to re-read partition table.
            Syncing disks.
            Copy to clipboard

        To convert the partiton to `vfat` type, run the following command:

mkfs.vfat /dev/mmcblk1p1
            Copy to clipboard

        Output:

mkfs.fat 4.2 (2021-01-31)
            Copy to clipboard

Note

In this example, leave the `First sector` field empty and ensure that the `Last sector` is large enough to copy `efi.bin`.
    2. Create the second partition as `ext4` type to copy `system.img` as follows:

        To create the partition, run the following command (for example, the dev node is `/dev/mmcblk1`):

fdisk /dev/mmcblk1
            Copy to clipboard

        Output:

Welcome to fdisk (util-linux 2.37.4).
            Changes will remain in memory only, until you decide to write them.
            Be careful before using the write command.
            
            Command (m for help): n
            Partition type
               p   primary (1 primary, 0 extended, 3 free)
               e   extended (container for logical partitions)
            Select (default p): p
            Partition number (2-4, default 2): 2
            First sector (1050624-31116287, default 1050624):
            Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-31116287, default 31116287): +10G
            
            Created a new partition 2 of type 'Linux' and of size 10 GiB.
            
            Command (m for help): w
            The partition table has been altered.
            Calling ioctl() to re-read partition table.
            Syncing disks.
            Copy to clipboard

        To convert the partiton to `ext4` type, run the following command:

mkfs.ext4 /dev/mmcblk1p2
            Copy to clipboard

        Output:

mke2fs 1.46.5 (30-Dec-2021)
            Discarding device blocks: done
            Creating filesystem with 2621440 4k blocks and 655360 inodes
            Filesystem UUID: 9e470d01-77fe-4382-a273-ab8b022bdd8b
            Superblock backups stored on blocks:
                     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
            
            Allocating group tables: done
            Writing inode tables: done
            Creating journal (16384 blocks): done
            Writing superblocks and filesystem accounting information: done
            Copy to clipboard

> 
> 
> Note
> 
> 
> In this example, leave the `First sector` field empty and ensure that the `Last sector` is large enough to copy `system.img`.
4. Verify the partitions created as follows:

lsblk -f /dev/mmcblk1
        Copy to clipboard

    Output:

NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
        mmcblk1
        |
        |-mmcblk1p1
        |    vfat               1EAC-8FF8
        `-mmcblk1p2
             ext4               9e470d01-77fe-4382-a273-ab8b022bdd8b
        Copy to clipboard
5. Copy `efi.bin` and `system.img` from the successfully built Qualcomm Linux image on the host computer
to the device using scp command.

scp -r <efi.bin> <IP_address>:<path>
        scp -r <system.img> <IP_address>:<path>
        Copy to clipboard
6. To copy `efi.bin` and `system.img` from the device to the partitions on the SD card, run the following commands on the device:

    - `dd if=<path>/efi.bin of=<sdcard slot> bs=4M status=progress`
    - `dd if=<path>/system.img of=<sdcard slot> bs=4M status=progress`

    To copy both images from the `/tmp` path on the device, following is an example of how to copy them to the SD card:

dd if=/tmp/efi.bin of=/dev/mmcblk1p1 bs=4M status=progress
        
        dd if=/tmp/system.img of=/dev/mmcblk1p2 bs=4M status=progress
        Copy to clipboard

Note

In this command, the dev node for the SD card is `/dev/mmcblk1`.
7. The SD card is ready to boot the images. If the EFI partition on UFS is corrupted or systemd-boot fails, the device boots from the SD card to ensure continuous operation.

## Use of efivar tool

The efivar tool manages UEFI environment variables stored in the non-volatile firmware storage. Use these variables to configure the UEFI firmware and its environment.

The efivars are key-value pairs stored in the UEFI firmware. They hold settings for boot configuration, system state, and other essential parameters. The efivars manage boot entries and firmware settings, ensuring the system boots correctly and maintains its configuration.

To interact with the UEFI environment variables, use the following command:

efivar [-n name] [-f file] [-p] [-w]
    Copy to clipboard

Command options:

-n name: Specify the name of the UEFI variable.
    -f file: Load or save variable contents from a file.
    -p: Print the value of the specified UEFI variable.
    -w: Write to the specified UEFI variable.
    Copy to clipboard

- **Update the OsIndications variable**

    Following are the steps to update the OsIndications variable and verify the value of the EFI variable:

    1. Create a `data.hex` file containing a specific byte sequence `04 00 00 00 00 00 00 00`.

echo -e -n "\x4\x0\x0\x0\x0\x0\x0\x0" > data.hex
            Copy to clipboard
    2. Write the contents of `data.hex` to the EFI variable `8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications`.

efivar -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications -f data.hex -w
            Copy to clipboard
    3. To verify the value of the EFI variable `8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications`, run the following command:

efivar -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications -p
            Copy to clipboard

        Output of the previous command:

GUID: 8be4df61-93ca-11d2-aa0d-00e098032b8c
            Name: "OsIndications"
            Attributes:
                Non-Volatile
                Boot Service Access
                Runtime Service Access
            Value:
            00000000  04 00 00 00 00 00 00 00
            Copy to clipboard

    For more information, see [efivars Manual](https://man.freebsd.org/cgi/man.cgi?query=efivar&amp;sektion=8).

Last Published: Apr 09, 2025

[Previous Topic
Qualcomm Linux metadata layers overview](https://docs.qualcomm.com/bundle/publicresource/80-70018-27/topics/qualcomm_linux_metadata_layers_overview.md) [Next Topic
User customizations](https://docs.qualcomm.com/bundle/publicresource/80-70018-27/topics/user_customizations.md)

Source: [https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_software_components.html)