From 62a01d8bca62c3037decd28fe5d34258920fecb0 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Fri, 3 May 2024 12:51:00 -0400 Subject: [PATCH 01/47] add skeleton files --- .../integration-mobile-client-server.md | 130 +++++++++++ docs/guides/integration-mobile-client-side.md | 130 +++++++++++ docs/guides/integration-mobile-overview.md | 204 ++++++++++++++++++ 3 files changed, 464 insertions(+) create mode 100644 docs/guides/integration-mobile-client-server.md create mode 100644 docs/guides/integration-mobile-client-side.md create mode 100644 docs/guides/integration-mobile-overview.md diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md new file mode 100644 index 000000000..88c522d92 --- /dev/null +++ b/docs/guides/integration-mobile-client-server.md @@ -0,0 +1,130 @@ +--- +title: UID2 Integration Overview for Mobile +sidebar_label: UID2 Integration Overview for Mobile +pagination_label: UID2 Integration Overview for Mobile +description: Overview of options for mobile integration as part of your UID2 implementation. +hide_table_of_contents: false +sidebar_position: 04 +displayed_sidebar: sidebarPublishers +--- + +import Link from '@docusaurus/Link'; + +# UID2 Integration Overview for Mobile + +This guide is an overview of integration options for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid.js in the RTB bid stream. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + + +---------- below: paste of SW content --------------------------------------- + + + + + + + + + + + + + + + + + + + + + + +---------- end paste of SW content --------------------------------------- + + +---------- below: paste of legacy content to be deleted --------------------------------------- +## Introduction + +UID2 provides a Prebid.js module that supports the following: + +- [Generating the UID2 token](#generating-the-uid2-token) +- [Refreshing the UID2 token](#refreshing-the-uid2-token) +- [Storing the UID2 token in the browser](#storing-the-uid2-token-in-the-browser) +- [Passing the UID2 token to the bid stream](#passing-the-uid2-token-to-the-bid-stream) + +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as a JavaScript SDK. + +:::caution +UID2 is not designed to be used where GDPR applies. The module checks the consent data that's passed in, and does not operate if the `gdprApplies` flag is set to `true`. +::: + +## Generating the UID2 Token + +Depending on access to DII, there are two methods to generate UID2 tokens for use with Prebid.js, as shown in the following table. + +Determine which method is best for you, and then follow the applicable integration guide. + +| Scenario | Integration Guide | +| :--- | :--- | +| You have access to DII on the client side and want to do front-end development only | [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) | +| You have access to DII on the server side and can do server-side development | [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) | + +## Refreshing the UID2 Token + +The Prebid.js UID2 module can automatically refresh the UID2 tokens. If you prefer to implement manual refresh outside Prebid.js, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. + +## Storing the UID2 Token in the Browser + +By default, the UID2 module stores data using local storage. To use a cookie instead, set `params.storage` to `cookie`, as shown in the following example. + +For details, see [Unified ID 2.0 Configuration](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html#unified-id-20-configuration) in the Prebid documentation. + +```js +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'uid2', + params: { + // default value is 'localStorage' + storage: 'cookie' + } + }] + } +}); +``` + +The cookie size can be significant, which could be a problem. However, if local storage is not an option, this is one possible approach. + +## Passing the UID2 Token to the Bid Stream + +To configure the UID2 module, call `pbjs.setConfig`. For details on supported parameters, refer to the guide that applies to your implementation: + +- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) +- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) + +When the UID2 module is configured, it manages a UID2 token for the user and stores it in the user's browser. + +When generating tokens with Client Refresh mode on the client side or on the server side, the module automatically takes care of refreshing the token as long as your site is open in the user's browser. However, you also have the option to manage the token refresh on the server side. For details, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. + +## Integration Overview: High-Level Steps + +At a high level, to integrate your site with UID2 using Prebid.js, you'll need to complete the following steps: + +1. Complete UID2 account setup. +1. Add Prebid.js to your site. +1. Configure the UID2 module. + +For detailed instructions, refer to one of the following integration guides: + +- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) +- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md new file mode 100644 index 000000000..88c522d92 --- /dev/null +++ b/docs/guides/integration-mobile-client-side.md @@ -0,0 +1,130 @@ +--- +title: UID2 Integration Overview for Mobile +sidebar_label: UID2 Integration Overview for Mobile +pagination_label: UID2 Integration Overview for Mobile +description: Overview of options for mobile integration as part of your UID2 implementation. +hide_table_of_contents: false +sidebar_position: 04 +displayed_sidebar: sidebarPublishers +--- + +import Link from '@docusaurus/Link'; + +# UID2 Integration Overview for Mobile + +This guide is an overview of integration options for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid.js in the RTB bid stream. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + + +---------- below: paste of SW content --------------------------------------- + + + + + + + + + + + + + + + + + + + + + + +---------- end paste of SW content --------------------------------------- + + +---------- below: paste of legacy content to be deleted --------------------------------------- +## Introduction + +UID2 provides a Prebid.js module that supports the following: + +- [Generating the UID2 token](#generating-the-uid2-token) +- [Refreshing the UID2 token](#refreshing-the-uid2-token) +- [Storing the UID2 token in the browser](#storing-the-uid2-token-in-the-browser) +- [Passing the UID2 token to the bid stream](#passing-the-uid2-token-to-the-bid-stream) + +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as a JavaScript SDK. + +:::caution +UID2 is not designed to be used where GDPR applies. The module checks the consent data that's passed in, and does not operate if the `gdprApplies` flag is set to `true`. +::: + +## Generating the UID2 Token + +Depending on access to DII, there are two methods to generate UID2 tokens for use with Prebid.js, as shown in the following table. + +Determine which method is best for you, and then follow the applicable integration guide. + +| Scenario | Integration Guide | +| :--- | :--- | +| You have access to DII on the client side and want to do front-end development only | [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) | +| You have access to DII on the server side and can do server-side development | [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) | + +## Refreshing the UID2 Token + +The Prebid.js UID2 module can automatically refresh the UID2 tokens. If you prefer to implement manual refresh outside Prebid.js, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. + +## Storing the UID2 Token in the Browser + +By default, the UID2 module stores data using local storage. To use a cookie instead, set `params.storage` to `cookie`, as shown in the following example. + +For details, see [Unified ID 2.0 Configuration](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html#unified-id-20-configuration) in the Prebid documentation. + +```js +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'uid2', + params: { + // default value is 'localStorage' + storage: 'cookie' + } + }] + } +}); +``` + +The cookie size can be significant, which could be a problem. However, if local storage is not an option, this is one possible approach. + +## Passing the UID2 Token to the Bid Stream + +To configure the UID2 module, call `pbjs.setConfig`. For details on supported parameters, refer to the guide that applies to your implementation: + +- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) +- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) + +When the UID2 module is configured, it manages a UID2 token for the user and stores it in the user's browser. + +When generating tokens with Client Refresh mode on the client side or on the server side, the module automatically takes care of refreshing the token as long as your site is open in the user's browser. However, you also have the option to manage the token refresh on the server side. For details, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. + +## Integration Overview: High-Level Steps + +At a high level, to integrate your site with UID2 using Prebid.js, you'll need to complete the following steps: + +1. Complete UID2 account setup. +1. Add Prebid.js to your site. +1. Configure the UID2 module. + +For detailed instructions, refer to one of the following integration guides: + +- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) +- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md new file mode 100644 index 000000000..e51429d70 --- /dev/null +++ b/docs/guides/integration-mobile-overview.md @@ -0,0 +1,204 @@ +--- +title: UID2 Integration Overview for Mobile +sidebar_label: UID2 Integration Overview for Mobile +pagination_label: UID2 Integration Overview for Mobile +description: Overview of options for mobile integration as part of your UID2 implementation. +hide_table_of_contents: false +sidebar_position: 04 +displayed_sidebar: sidebarPublishers +--- + +import Link from '@docusaurus/Link'; + +# UID2 Integration Overview for Mobile + +This guide is an overview of integration options for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid.js in the RTB bid stream. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + + +---------- below: paste of SW content --------------------------------------- + + + +UID2 Mobile Integration Overview for Android and iOS + +This guide is an overview of integration options for mobile application publishers who want to integrate with UID2 using the UID2 SDK for Android and iOS, which are summarised as UID2 Mobile SDKs. + +​​Contents + +​ + +​ + +​ + +​ + +​​ + +Introduction + +UID2 provides SDKs for Android/iOS that support the following: + +Generating the UID2 token + +Refreshing the UID2 token + +Storing the UID2 token + +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (which is described further down on this page). + +Client-Side or Client-Server Integration + +The options for integrating with UID2 using the UID2 Mobile SDKs are summarized in the following table. Choose the option that is best for you. + +Scenario + +Option + +Integration Guide + +You have access to DII on the client side/within the mobile application and want to keep changes within your application only + +Client-side integration + +Client-Side Integration Guide for Mobile + +You have access to DII on the server side only and can do server-side development to generate UID2 tokens on the server side, or you are using a Private Operator. + +Client-Server integration + +Client-Server Integration Guide for Mobile + + + +Integration Overview: High-Level Steps + +At a high level, to integrate your mobile application with UID2 using the UID2 Mobile SDKs, you will need to complete the following steps: + +Complete UID2 account setup. + +Client-Server Integration Only: Integrate server-side token generation on your backend server. + +Add UID2 SDK for Android and iOS into your mobile application. + +Configure the SDK + +Check that the token was successfully generated and pass the token for bid stream use. + +Optionally, configure UID2 GMA/IMA Plugins for integration with Google GMA/IMA SDKs + +For detailed instructions, refer to one of the following integration guides: + +Client-Side Integration Guide for Mobile + +Client-Server Integration Guide for Mobile + + + + + + + + + + + + + + + + + + + + +---------- end paste of SW content --------------------------------------- + + +---------- below: paste of legacy content to be deleted --------------------------------------- +## Introduction + +UID2 provides a Prebid.js module that supports the following: + +- [Generating the UID2 token](#generating-the-uid2-token) +- [Refreshing the UID2 token](#refreshing-the-uid2-token) +- [Storing the UID2 token in the browser](#storing-the-uid2-token-in-the-browser) +- [Passing the UID2 token to the bid stream](#passing-the-uid2-token-to-the-bid-stream) + +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as a JavaScript SDK. + +:::caution +UID2 is not designed to be used where GDPR applies. The module checks the consent data that's passed in, and does not operate if the `gdprApplies` flag is set to `true`. +::: + +## Generating the UID2 Token + +Depending on access to DII, there are two methods to generate UID2 tokens for use with Prebid.js, as shown in the following table. + +Determine which method is best for you, and then follow the applicable integration guide. + +| Scenario | Integration Guide | +| :--- | :--- | +| You have access to DII on the client side and want to do front-end development only | [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) | +| You have access to DII on the server side and can do server-side development | [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) | + +## Refreshing the UID2 Token + +The Prebid.js UID2 module can automatically refresh the UID2 tokens. If you prefer to implement manual refresh outside Prebid.js, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. + +## Storing the UID2 Token in the Browser + +By default, the UID2 module stores data using local storage. To use a cookie instead, set `params.storage` to `cookie`, as shown in the following example. + +For details, see [Unified ID 2.0 Configuration](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html#unified-id-20-configuration) in the Prebid documentation. + +```js +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'uid2', + params: { + // default value is 'localStorage' + storage: 'cookie' + } + }] + } +}); +``` + +The cookie size can be significant, which could be a problem. However, if local storage is not an option, this is one possible approach. + +## Passing the UID2 Token to the Bid Stream + +To configure the UID2 module, call `pbjs.setConfig`. For details on supported parameters, refer to the guide that applies to your implementation: + +- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) +- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) + +When the UID2 module is configured, it manages a UID2 token for the user and stores it in the user's browser. + +When generating tokens with Client Refresh mode on the client side or on the server side, the module automatically takes care of refreshing the token as long as your site is open in the user's browser. However, you also have the option to manage the token refresh on the server side. For details, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. + +## Integration Overview: High-Level Steps + +At a high level, to integrate your site with UID2 using Prebid.js, you'll need to complete the following steps: + +1. Complete UID2 account setup. +1. Add Prebid.js to your site. +1. Configure the UID2 module. + +For detailed instructions, refer to one of the following integration guides: + +- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) +- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) From 10d0c94845100dee19e0cf86e3d305ec4c93378a Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Fri, 3 May 2024 17:20:57 -0400 Subject: [PATCH 02/47] starter files with few queries marked --- .../integration-mobile-client-server.md | 383 +++++++++-- docs/guides/integration-mobile-client-side.md | 630 ++++++++++++++++-- docs/guides/integration-mobile-overview.md | 212 ++---- docs/guides/publisher-client-side.md | 1 - sidebars.js | 3 + 5 files changed, 923 insertions(+), 306 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 88c522d92..fadb278ae 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -1,8 +1,8 @@ --- -title: UID2 Integration Overview for Mobile -sidebar_label: UID2 Integration Overview for Mobile -pagination_label: UID2 Integration Overview for Mobile -description: Overview of options for mobile integration as part of your UID2 implementation. +title: UID2 Client-Server Integration Guide for Mobile +sidebar_label: Client-Server Integration for Mobile +pagination_label: UID2 Client-Server Integration Guide for Mobile +description: Information about setting up a client-server mobile integration. hide_table_of_contents: false sidebar_position: 04 displayed_sidebar: sidebarPublishers @@ -10,121 +10,368 @@ displayed_sidebar: sidebarPublishers import Link from '@docusaurus/Link'; -# UID2 Integration Overview for Mobile +# UID2 Client-Server Integration Guide for Mobile +This guide is an overview of integration options for publishers who want to xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -This guide is an overview of integration options for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid.js in the RTB bid stream. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - +This page is intended for the mobile application publishers who want to integrate with UID2 by generating UID2 tokens on their backend servers (or server side) via either a public or private operators and then pass the tokens and user identities into their mobile applications which will in-turn pass the tokens for bid stream use.   +This is called Client-Server Integration because it requires critical integration steps in both client and server side. ----------- below: paste of SW content --------------------------------------- +If you want to integrate with UID2 via client-side only changes (i.e. all integration changes required are within the mobile applications), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. +This page provides a high-level overview of integration steps and links to additional documentation. +## Overview +UID2 provides a mobile SDK for Android and iOS with the following features: (**GWH__SW are we now going to have a combo mobile SDK? If we still have two I'll fix the wording.**) +- Takes in a UID2 Identity (including a UID2 token) and persisting it in local file storage +- Automatic refreshing of UID2 tokens +You'll need to complete the following steps: +1. Complete UID2 account setup. +1. Implement Server-Side Token Generation on your back-end server. +1. Add UID2 Mobile SDK into your mobile application. +1. Configure the UID2 Mobile SDK for your mobile application. +1. Check that the token was successfully generated and then pass it for bid stream use. +1. Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration. +## Complete UID2 Account Setup +Complete the UID2 account setup by following the steps described in the Account Setup page. +When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see API Key and Client Secret. +## Client-Server Mobile Integration Data Flow Overview +This diagram presents the data flow this Client-Server Mobile Integration requires to be implemented by the mobile app publishers. It is demonstrating using UID2 SDK for Android in the client side mobile application and UID2 SDK for Java on the server side. +TODO: Add Rita’s latest diagram from here +## Implement Server-Side Token Generation On Your Back-End Server +The first step of UID2 integration is to be able to generate UID2 token on your backend server to then pass it into your mobile applications for passing the token into the RTB bid stream. +There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the table below: +Integration Solution  +Generate Token  +Refresh Token  +UID2 SDK for Java  +✅  ----------- end paste of SW content --------------------------------------- +✅  +UID2 SDK for Python  ----------- below: paste of legacy content to be deleted --------------------------------------- -## Introduction +✅  -UID2 provides a Prebid.js module that supports the following: +✅  -- [Generating the UID2 token](#generating-the-uid2-token) -- [Refreshing the UID2 token](#refreshing-the-uid2-token) -- [Storing the UID2 token in the browser](#storing-the-uid2-token-in-the-browser) -- [Passing the UID2 token to the bid stream](#passing-the-uid2-token-to-the-bid-stream) +Direct Integration (API endpoints with custom code)  -For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as a JavaScript SDK. +✅  -:::caution -UID2 is not designed to be used where GDPR applies. The module checks the consent data that's passed in, and does not operate if the `gdprApplies` flag is set to `true`. -::: +✅  -## Generating the UID2 Token -Depending on access to DII, there are two methods to generate UID2 tokens for use with Prebid.js, as shown in the following table. -Determine which method is best for you, and then follow the applicable integration guide. +Regardless from the integration option, you will need to implement one of the following: -| Scenario | Integration Guide | -| :--- | :--- | -| You have access to DII on the client side and want to do front-end development only | [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) | -| You have access to DII on the server side and can do server-side development | [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) | -## Refreshing the UID2 Token -The Prebid.js UID2 module can automatically refresh the UID2 tokens. If you prefer to implement manual refresh outside Prebid.js, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. +Call the POST /token/generate endpoint. -## Storing the UID2 Token in the Browser - -By default, the UID2 module stores data using local storage. To use a cookie instead, set `params.storage` to `cookie`, as shown in the following example. +The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response, see an example here -For details, see [Unified ID 2.0 Configuration](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html#unified-id-20-configuration) in the Prebid documentation. +Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Basic Usage of the UID2 SDK for Java or UID2 SDK for Python for instructions -```js -pbjs.setConfig({ - userSync: { - userIds: [{ - name: 'uid2', - params: { - // default value is 'localStorage' - storage: 'cookie' - } - }] - } -}); -``` +The Identity output you need for the rest of this guide is the output of the following 2 methods. -The cookie size can be significant, which could be a problem. However, if local storage is not an option, this is one possible approach. +For Python: token_generate_response.get_identity_json_string() -## Passing the UID2 Token to the Bid Stream +For Java: tokenGenerateResponse.getIdentityJsonString() -To configure the UID2 module, call `pbjs.setConfig`. For details on supported parameters, refer to the guide that applies to your implementation: +Note that the endpoint and SDK API above may return optout status if the DII (Directly Identifiable Information) you are generating token for has opted out of UID2. You should save this information and should not call token generation endpoint for this DII again.  -- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) -- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) +You will need to pass this into the mobile app in the Configure the UID2 Mobile SDK for your mobile application section below. -When the UID2 module is configured, it manages a UID2 token for the user and stores it in the user's browser. +Note: that for security reasons, API key and secret used in token generation must be called server-side and cannot be stored inside the mobile applications. -When generating tokens with Client Refresh mode on the client side or on the server side, the module automatically takes care of refreshing the token as long as your site is open in the user's browser. However, you also have the option to manage the token refresh on the server side. For details, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. +## Server-Side Token Refresh -## Integration Overview: High-Level Steps +Token Refresh are automatically enabled inside the UID2 Mobile SDKs and is not required to be done explicitly on the server side. -At a high level, to integrate your site with UID2 using Prebid.js, you'll need to complete the following steps: -1. Complete UID2 account setup. -1. Add Prebid.js to your site. -1. Configure the UID2 module. -For detailed instructions, refer to one of the following integration guides: +You may decide to do server-side token refresh if you want to keep your changes in the mobile applications as simple as possible. + + + +However, should you decide you want to do it on the server side and not client/mobile side, you can do so using one of the following: + +Call the POST /token/refresh endpoint. + +Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Server-Only Integration section of the UID2 SDK for Java or UID2 SDK for Python for instructions + + and pass the newly refreshed Identity to the mobile application by following the rest of this guide below. + + + +## Add UID2 Mobile SDK into Your Mobile Application + +For installation instructions, please see the UID2 SDK for Android Reference Guide and iOS Reference Guide. + +Follow the UID2 SDK documentation to: + +Add the pre-built UID2 SDK for Android libraries into your mobile application here. + +Learn how to instantiate the UID2Manager instance in your Android application here. For iOS, refer to the Usage Guidelines. + + + +## Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation. + +For Android: + +For Android: + +UID2Manager.init( + + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) + + + +For iOS: + +// Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( + + url: URL(string: "https://operator-integ.uidapi.com")! + +) + +On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. + + + +Note: + +Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different subscription ID and public key values. + + + +## Optional: Reduce Latency by Setting the API Base URL for the Production Environment + +By default, in the production environment, the UID2 SDK for Android makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. + + + +For example, a publisher in Singapore can set the server URL to https://sg.prod.uidapi.com . This is still the UID2 production environment, but the servers are in Singapore. + + + +For the list of possible base URLs, see Environments. + + + +A publisher can also set the base URL to https://global.prod.uidapi.com . This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. + +To specify a different UID2 server, you can change it in the init call: + +For Android: + +UID2Manager.init( + + context = this, + serverUrl = " https://global.prod.uidapi.com" +) + + + +For iOS: + +UID2Settings.shared.environment = .singapore + + + +// or + + + + + +UID2Settings.shared.environment = .custom( + + url: URL(string: "https://global.prod.uidapi.com")! + +) + + + + + +Configure the UID2 Mobile SDK for your mobile application + + + +After you have instantiated UID2Manager correctly in your mobile app, you will need to pass a UID2 Identity generated from your backend server via Implement Server-Side Token Generation on your backend server section above and pass into the mobile application using the setIdentity method: + + + +For Android: UID2Manager.getInstance().generateIdentity() + +For iOS: UID2Manager.shared.setIdentity() + + + +## Token Storage + +After you call the setIdentity method, the UID2 Identity will be persisted in local file storage. + +DANGER + +The format of the file stored in the local file storage or the filename itself could change without notice. We recommend that you do not read and update the file directly. + + + +## Check that the token was successfully generated and then pass it for bid stream use + +(**GWH__SW we have to make this (heading) shorter. I wonder can we break it into two steps? Just an idea.**) + +In your mobile app, you can call + +For Android: UID2Manager.getInstance().getAdvertisingToken() + +For iOS: UID2Manager.shared.getAdvertisingToken() + +And if there was a successful identity added into the UID2Manager, it should return a string like: + +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== + + + +You can use this identity to pass downstream for sending in RTB bid stream. + +If + +For Android: UID2Manager.getInstance().getAdvertisingToken() + +For iOS: UID2Manager.shared.getAdvertisingToken() + + + +returns null, there was not an identity or valid token generated for several reasons such as: + +The identity is invalid + +The advertising token inside the UID2 identity has expired and the refresh token expires too so token cannot be refreshed + +In such situation, you will need to follow Implement Server-Side Token Generation on your backend server section above and generate a new UID2 identity and pass the result into the mobile application’s UID2Manager again. + + + +## Best Practice on When to Pass New UID2 Token to the UID2 SDK + +(**GWH_SW can we make this into a Best Practices section and then just list this one for now? We'll get others I'm sure.**) + +The best way to determine if a new UID2 identity is required by the UID2 SDK again is to always call + +For Android: UID2Manager.getInstance().getAdvertisingToken() + +For iOS: UID2Manager.shared.getAdvertisingToken() + +On application startup/resumption, if it returns null, it is time to generate new identity on the backend server by following the Implement Server-Side Token Generation on your backend server section above and pass it into the mobile application’s UID2Manager instance again + +## Enable Logging (For Android Only) + +The UID2 SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging during UID2Manager initialization: + +For Android: + +UID2Manager.init( + + context = this, + + isLoggingEnabled = true + +) + +IOS + +UID2Settings.shared.isLoggingEnabled = true + +On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. + +## Enable Automatic Token Refresh in Mobile App/Client Side + +(**GWH__SW could we use tabs here?**) + +The UID2Manager will perform automatic token refresh, after a valid UID2 identity has been passed into it. If for any reason token refresh should be disabled, this can be done by: + + + +For Android Java: + +UID2Manager.getInstance()setAutomaticRefreshEnabled(false) + +For Android Kotlin: + +UID2Manager.getInstance().automaticRefreshEnabled = false + +For iOS: + +UID2Manager.shared.automaticRefreshEnabled = false + + + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + +If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile application. Refer to the Plugin guides on how to install it into your apps: + +- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) + +Note: You do not need to explicitly retrieve the advertising tokens using + +For Android: UID2Manager.getInstance().getAdvertisingToken() + +For iOS: UID2Manager.shared.getAdvertisingToken() + +and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. + +You just need to ensure calling + +For Android: UID2Manager.getInstance().getAdvertisingToken() + +For iOS: UID2Manager.shared.getAdvertisingToken() -- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) -- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) +return a non-null string object. Then Google GMA/IMA SDKs should be able to retrieve it via the UID2 GMA/IMA plugins. diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 88c522d92..fcf123ccb 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -1,8 +1,8 @@ --- -title: UID2 Integration Overview for Mobile -sidebar_label: UID2 Integration Overview for Mobile -pagination_label: UID2 Integration Overview for Mobile -description: Overview of options for mobile integration as part of your UID2 implementation. +title: UID2 Client-Side Integration Guide for Mobile +sidebar_label: Client-Side Integration for Mobile +pagination_label: UID2 Client-Side Integration Guide for Mobile +description: Information about setting up a client-side mobile integration. hide_table_of_contents: false sidebar_position: 04 displayed_sidebar: sidebarPublishers @@ -10,121 +10,619 @@ displayed_sidebar: sidebarPublishers import Link from '@docusaurus/Link'; -# UID2 Integration Overview for Mobile +# UID2 Client-Side Integration Guide for Mobile + +(**GWH__SW: audience? Is this only for publishers, or possibly advertisers also? (advertisers with apps?)**) + +This page is intended for mobile application publishers who want to integrate with UID2 with changes only within their mobile application. + +This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). + +The page provides a high-level overview, integration steps, and links to additional documentation. + +UID2 provides a mobile SDK for Android and iOS with the following features: + +- UID2 token generation +- Automatic refreshing of UID2 tokens +- Automatic storage of UID2 tokens + +To integrate with UID2 client-side, you will need to complete the following steps: + +1. Complete UID2 account setup. + +1. Add a UID2 mobile SDK into your mobile application. + +1. Configure the UID2 Mobile SDK. + +1. Check that the token was successfully generated and then pass it for bid stream use. + +1. Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration. + -This guide is an overview of integration options for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid.js in the RTB bid stream. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - +To follow this client-side integration guide, it requires v1.0.0 or higher of UID2 SDK for Android and iOS. Follow the Add UID2 Mobile SDK into your mobile application section below to install these SDK versions in your applications. +## Client-Side Integration Example ----------- below: paste of SW content --------------------------------------- +For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development application. +#### For Android: +1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). +1. Open the checked out directory in Android Studio. +1. Run the **dev-app** application. +#### For iOS: +1. Check out the [main branch of the UID2 SDK For iOS source code repository on GitHub](https://github.com/IABTechLab/uid2-ios-sdk/tree/main). +1. In Xcode, open this project file: + ``` + Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj + ``` +1. Run the **UID2SDKDevelopmentApp** app scheme. +(**GWH__SW I'm not sure if this whole section should be the procedure, rather than just steps 1 and 2?**) +When you've started the application, ensure the **Client Side** checkbox is checked, then enter an email or phone number, and it will make the following UID2 SDK API call that sends a request to the UID2 service to generate an identity and resulting token for the email/phone input: +#### For Android: +`UID2Manager.getInstance().generateIdentity()` +#### For iOS: +`UID2Manager.shared.generateIdentity()` +Once the API call successfully completes, the application will display the resulting identity and persist it inside the UID2Manager class. +The identity contains the generated UID2 advertising token value which can be retrieved using +#### For Android: +`UID2Manager.getInstance().getAdvertisingToken()` +#### For iOS: +`UID2Manager.shared.getAdvertisingToken()` +You need this value when you are making an ad request, which will be explained in the rest of this guide. +By default, the development application will use a default set of subscription ID and public key stored in: +#### For Android: +`com.uid2.dev.ui.MainScreenViewModel.Companion` +#### For iOS: +`RootViewModel` +And connect to the UID2 integration environment as specified on: +#### For Android: +`com.uid2.UID2Manager.Companion#init` +#### For iOS: +`see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist` +You can change the credentials to ones assigned to you and connect to the UID2 Production environment if necessary. Read the Optional: Reduce Latency by Setting the API Base URL for the Production Environment section below. ----------- end paste of SW content --------------------------------------- +## Complete UID2 Account Setup +Complete the UID2 account setup by following the steps described in the Account Setup page. As part of the account setup process, you'll need to provide a list of all application names (Android Application ID, iOS App Bundle ID and App Store ID) for the mobile applications that you'll be integrating with the UID2 Mobile SDKs. ----------- below: paste of legacy content to be deleted --------------------------------------- -## Introduction +When account setup is complete, you'll receive a [subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll be required to use them to configure the UID2 mobile SDK. -UID2 provides a Prebid.js module that supports the following: +## Add the UID2 Mobile SDK to Your Mobile Application -- [Generating the UID2 token](#generating-the-uid2-token) -- [Refreshing the UID2 token](#refreshing-the-uid2-token) -- [Storing the UID2 token in the browser](#storing-the-uid2-token-in-the-browser) -- [Passing the UID2 token to the bid stream](#passing-the-uid2-token-to-the-bid-stream) +to add the mobile SDK to your app, follow the applicable documentation: -For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as a JavaScript SDK. +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) -:::caution -UID2 is not designed to be used where GDPR applies. The module checks the consent data that's passed in, and does not operate if the `gdprApplies` flag is set to `true`. +(**GWH__SW not sure what it means "Follow the instructions on a draft version of a new UID2 SDK for Android reference guide" please clarify.**) + +At this point, you are ready to start generating UID2 tokens using the SDK. + +### Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to initialize UID2Manager: + +#### For Android: + +``` +UID2Manager.init( + + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) +``` + +#### For iOS: + +``` +// Must be set before UID2Manager.shared is accessed + +UID2Settings.shared.environment = .custom( + + url: URL(string: "https://operator-integ.uidapi.com")! + +) +``` + +:::note +Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different subscription ID and public key values. ::: -## Generating the UID2 Token +### Optional: Reduce Latency by Setting the API Base URL for the Production Environment + +By default, in the production environment, the UID2 Mobile SDKs make API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. -Depending on access to DII, there are two methods to generate UID2 tokens for use with Prebid.js, as shown in the following table. +For example, a publisher in Singapore can set the server URL to https://sg.prod.uidapi.com . This is still the UID2 production environment, but the servers are in Singapore. -Determine which method is best for you, and then follow the applicable integration guide. +For the list of possible base URLs, see [Environments](../getting-started/gs-environments.md). -| Scenario | Integration Guide | -| :--- | :--- | -| You have access to DII on the client side and want to do front-end development only | [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) | -| You have access to DII on the server side and can do server-side development | [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) | +A publisher can also set the base URL to [https://global.prod.uidapi.com](https://global.prod.uidapi.com). This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. -## Refreshing the UID2 Token +To specify a different UID2 server, you can change it in the init call, as shown in the following examples. + +#### For Android: + +``` +UID2Manager.init( + context = this, + serverUrl = " https://global.prod.uidapi.com" +) +``` -The Prebid.js UID2 module can automatically refresh the UID2 tokens. If you prefer to implement manual refresh outside Prebid.js, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. +#### For iOS: -## Storing the UID2 Token in the Browser - -By default, the UID2 module stores data using local storage. To use a cookie instead, set `params.storage` to `cookie`, as shown in the following example. +``` +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://global.prod.uidapi.com")! -For details, see [Unified ID 2.0 Configuration](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html#unified-id-20-configuration) in the Prebid documentation. +) -```js -pbjs.setConfig({ - userSync: { - userIds: [{ - name: 'uid2', - params: { - // default value is 'localStorage' - storage: 'cookie' - } - }] - } -}); +// or use a named environment +UID2Settings.shared.environment = .sydney ``` -The cookie size can be significant, which could be a problem. However, if local storage is not an option, this is one possible approach. +## Configure the UID2 Mobile SDK -## Passing the UID2 Token to the Bid Stream +UID2 provides the publisher with the following values required to generate the UID2 token on the client side: -To configure the UID2 module, call `pbjs.setConfig`. For details on supported parameters, refer to the guide that applies to your implementation: +- A subscription ID +- A public key -- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) -- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) +You'll have one set of these values for your publisher testing environment, and a separate set for your production environment. -When the UID2 module is configured, it manages a UID2 token for the user and stores it in the user's browser. +To configure the SDK, you are required to pass in the public key and subscription ID that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number) into (**GWH__SW this sentence just stops not sure how to connect it with the next bit.**) -When generating tokens with Client Refresh mode on the client side or on the server side, the module automatically takes care of refreshing the token as long as your site is open in the user's browser. However, you also have the option to manage the token refresh on the server side. For details, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. +#### For Android: +`UID2Manager.getInstance().generateIdentity()` -## Integration Overview: High-Level Steps +#### For iOS: +`UID2Manager.shared.generateIdentity()` -At a high level, to integrate your site with UID2 using Prebid.js, you'll need to complete the following steps: +Once it is configured, the UID2 Mobile SDK takes care of the following: -1. Complete UID2 account setup. -1. Add Prebid.js to your site. -1. Configure the UID2 module. +- Generates a UID2 token for the user +- Stores the token locally on the user’s device +- Automatically refreshes the token as required while your application is open. + +You can pass the user’s DII (Directly Identifiable Information) to the UID2 Mobile SDK either hashed or unhashed. If you pass the DII unhashed, the UID2 Mobile SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). + + +## Format Examples for DII + +The SDK encrypts the hashed DII before sending it to the UID2 service. + +You can invoke the `generateIdentity` method using any of the four accepted directly identifying information (DII) formats, for any specific user. The DII format may vary per user, but you can only send one value per user. + +The following examples demonstrate the different ways that you can configure the UID2 Mobile SDK and list the requirements for the DII passed into the SDK. + +- Configure for Email Address +- Configure for Hashed Email Address +- Configure for Phone Number +- Configure for Hashed Phone Number + +If the `generateIdentity` method is called multiple times, the UID2 Mobile SDK will only use the most recent configuration values. + +### Email, Unhashed + +The following example configures the UID2 Mobile SDK with an email address. + +#### For Android: + +``` +manager.generateIdentity( + + IdentityRequest.Email("test@example.com"), + + subscriptionId, + + publicKey, + +) { result -> + + when (result) { + + is Error -> ... + + is Success -> ... + + } + +} +``` + +#### For iOS: + + +``` +guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else { + + // email is invalid and cannot be normalized, handle error + +} + +try await UID2Manager.shared.generateIdentity( + + .email(normalizedEmail), + + subscriptionID: subscriptionID, + + serverPublicKey: serverPublicKeyString + +) +``` + +In this scenario: + +- No normalization or hashing is required by the publisher +- The UID2 Mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. + +### Email, Normalized and Hashed + +The following example configures the UID2 SDK with a hashed email address. + +#### For Android: + + +``` +manager.generateIdentity( + + IdentityRequest.EmailHash( + + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + + ), + + subscriptionId, + + publicKey, + +) { result -> + + when (result) { + + is Error -> ... + + is Success -> ... + + } + +} +``` + +#### For iOS: + +``` +try await UID2Manager.shared.generateIdentity( + + .emailHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + + subscriptionID: subscriptionID, + + serverPublicKey: serverPublicKeyString + +) +``` + +In this scenario: + +- The publisher is responsible for normalizing and hashing the email address. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +- The UID2 Mobile SDK encrypts the hash before sending it to the UID2 service. + +### Phone Number, Unhashed + +The following example configures the UID2 Mobile SDK with a phone number. + +#### For Android: + + +``` +manager.generateIdentity( + + IdentityRequest.Phone(“+1111111111”), + + subscriptionId, + + publicKey, + +) { result -> + + when (result) { + + is Error -> ... + + is Success -> ... + + } + +} +``` + +#### For iOS: + +``` +guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { + + // phone number is invalid and cannot be normalized, handle error + +} + +try await UID2Manager.shared.generateIdentity( + + .phone(normalizedPhone), + + subscriptionID: subscriptionID, + + serverPublicKey: serverPublicKeyString + +) +``` + +In this scenario: + +- The publisher is responsible for normalizing the phone number. For details, see Phone Number Normalization. +- The UID2 Mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. + + +### Phone Number, Normalized and Hashed + +The following example configures the UID2 Mobile SDK with a hashed phone number. + +#### For Android: + +``` +manager.generateIdentity( + + IdentityRequest.PhoneHash( + + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + + ), + + subscriptionId, + + publicKey, + +) { result -> + + when (result) { + + is Error -> ... + + is Success -> ... + + } + +} +``` + +#### For iOS: + +``` +try await UID2Manager.shared.generateIdentity( + + .phoneHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + + subscriptionID: subscriptionID, + + serverPublicKey: serverPublicKeyString + +) +``` + +In this scenario: + +- The publisher is responsible for normalizing and hashing the phone number. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +- The UID2 Mobile SDK encrypts the hash before sending it to the UID2 service. + +## Token Storage and Refresh + +After a call to one of the methods listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 Mobile SDK refreshes the UID2 token periodically. + +:::warning +The format of the file stored in the local file storage or the filename itself could change without notice. We recommend that you do not read and update the file directly. +::: + + +## Check that the token was successfully generated and then pass it for bid stream use + +In your mobile app, if there was a successful identity generated from the previous + +#### For Android: + +UID2Manager.getInstance().generateIdentity() + +#### For iOS: +UID2Manager.shared.generateIdentity() + + +call, subsequently, when you call: + +#### For Android: + +UID2Manager.getInstance().getAdvertisingToken() + +#### For iOS: +UID2Manager.shared.getAdvertisingToken() + +it should return a non-null string object such as: + +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== + +You can use this identity to pass downstream for sending in RTB bid stream. + +If + +#### For Android: + +UID2Manager.getInstance().getAdvertisingToken() + +#### For iOS: +UID2Manager.shared.getAdvertisingToken() + +returns null, there was no identity or valid token generated for various reasons and you will need to check if there are any errors from the generateIdentity call (read Enable Logging below) or the identity generated has expired and you need to call generateIdentity again. Read the next section to learn when to do so. + +## Best Practice on When to Pass DII to the UID2 Mobile SDK + +When this is the first time the app is open with no identity, to start the token generation call you'll need to call: + +#### For Android: + +UID2Manager.getInstance().generateIdentity() + +#### For iOS: + +UID2Manager.shared.generateIdentity() + +method with DII. Once an identity is generated, the advertising token (UID2 token) that you would send to the bid stream will be available upon the successful completion of the generateIdentity function. + +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call + +#### For Android: + +UID2Manager.getInstance().generateIdentity() + +#### For iOS: +UID2Manager.shared.generateIdentity() + +again to generate a new identity and resulting token. The exception is if + +#### For Android: + +UID2Manager.getInstance().getIdentityStatus() + +#### For iOS: +UID2Manager.shared.identityStatus + +return OPT_OUT status and means the DII has opted out of UID2 and no identity/token should be generated for it. + +The best way to determine if DII is required by the UID2 Mobile SDKs is to always call + +#### For Android: +UID2Manager.getInstance().getAdvertisingToken() + +#### For iOS: +UID2Manager.shared.getAdvertisingToken() + +on application startup/resumption, if it returns null, then you should call + +#### For Android: +UID2Manager.getInstance().generateIdentity() + +#### For iOS: +UID2Manager.shared.generateIdentity() + +and pass DII into it again. + +## Opt-Out Handling + +If the DII provided to the + +#### For Android: +UID2Manager.getInstance().generateIdentity() + +#### For iOS: +UID2Manager.shared.generateIdentity() + +has opted out, this method will return null. Calling: + +#### For Android: +UID2Manager.getInstance().getIdentityStatus() + +#### For iOS: +UID2Manager.shared.identityStatus + +returns OPT_OUT status. + +In this case you should avoid repeatedly make generateIdentity() calls again as UID2 token will not be generated because the DII has opted out of UID2. + +## Enable Logging + +The UID2 Mobile SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging by: + +#### For Android: +during UID2Manager initialization: + +UID2Manager.init( + + context = this, + + isLoggingEnabled = true + +) + +#### For iOS: + +`UID2Settings.shared.isLoggingEnabled = true` + +(**GWH__SW in the Word doc the para below is in code style. Just confirming it's not meant to be part of the code?**) + +On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + +If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile application. Refer to the Plugin guides on how to install it into your apps: + +- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) + +Note: You do not need to explicitly retrieve the advertising tokens using (**GWH__SW not sure how to put this... let's discuss.**) + +#### For Android: + +UID2Manager.getInstance().getAdvertisingToken() + +#### For iOS: +UID2Manager.shared.getAdvertisingToken() + +and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. + +You just need to ensure calling + +#### For Android: + +UID2Manager.getInstance().getAdvertisingToken() -For detailed instructions, refer to one of the following integration guides: +#### For iOS: +UID2Manager.shared.getAdvertisingToken() -- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) -- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) +return a non-null string object. Then Google GMA/IMA SDKs should be able to retrieve it via the UID2 GMA/IMA plugins. diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md index e51429d70..1340d2b39 100644 --- a/docs/guides/integration-mobile-overview.md +++ b/docs/guides/integration-mobile-overview.md @@ -1,7 +1,7 @@ --- -title: UID2 Integration Overview for Mobile -sidebar_label: UID2 Integration Overview for Mobile -pagination_label: UID2 Integration Overview for Mobile +title: UID2 Mobile Integration Overview for Android and iOS +sidebar_label: Integration Overview for Mobile +pagination_label: Mobile Integration Overview for Android and iOS description: Overview of options for mobile integration as part of your UID2 implementation. hide_table_of_contents: false sidebar_position: 04 @@ -10,195 +10,65 @@ displayed_sidebar: sidebarPublishers import Link from '@docusaurus/Link'; -# UID2 Integration Overview for Mobile +# UID2 Mobile Integration Overview for Android and iOS -This guide is an overview of integration options for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid.js in the RTB bid stream. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - - - ----------- below: paste of SW content --------------------------------------- - - - -UID2 Mobile Integration Overview for Android and iOS - -This guide is an overview of integration options for mobile application publishers who want to integrate with UID2 using the UID2 SDK for Android and iOS, which are summarised as UID2 Mobile SDKs. - -​​Contents - -​ - -​ - -​ - -​ - -​​ - -Introduction - -UID2 provides SDKs for Android/iOS that support the following: - -Generating the UID2 token - -Refreshing the UID2 token - -Storing the UID2 token - -For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (which is described further down on this page). - -Client-Side or Client-Server Integration - -The options for integrating with UID2 using the UID2 Mobile SDKs are summarized in the following table. Choose the option that is best for you. - -Scenario - -Option - -Integration Guide - -You have access to DII on the client side/within the mobile application and want to keep changes within your application only - -Client-side integration - -Client-Side Integration Guide for Mobile - -You have access to DII on the server side only and can do server-side development to generate UID2 tokens on the server side, or you are using a Private Operator. - -Client-Server integration - -Client-Server Integration Guide for Mobile - - - -Integration Overview: High-Level Steps - -At a high level, to integrate your mobile application with UID2 using the UID2 Mobile SDKs, you will need to complete the following steps: - -Complete UID2 account setup. - -Client-Server Integration Only: Integrate server-side token generation on your backend server. +This guide groups those two SDKs as UID2 Mobile SDKs. -Add UID2 SDK for Android and iOS into your mobile application. + -## Generating the UID2 Token +## Introduction -Depending on access to DII, there are two methods to generate UID2 tokens for use with Prebid.js, as shown in the following table. +UID2 provides SDKs for Android/iOS that support the following: -Determine which method is best for you, and then follow the applicable integration guide. +- Generating the UID2 token +- Refreshing the UID2 token +- Storing the UID2 token -| Scenario | Integration Guide | -| :--- | :--- | -| You have access to DII on the client side and want to do front-end development only | [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) | -| You have access to DII on the server side and can do server-side development | [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) | +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (described later in this document). -## Refreshing the UID2 Token +## Client-Side or Client-Server Integration -The Prebid.js UID2 module can automatically refresh the UID2 tokens. If you prefer to implement manual refresh outside Prebid.js, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. +The options for integrating with UID2 using the UID2 Mobile SDKs are summarized in the following table. Choose the option that's best for you. -## Storing the UID2 Token in the Browser - -By default, the UID2 module stores data using local storage. To use a cookie instead, set `params.storage` to `cookie`, as shown in the following example. +(GWH__SW: Sunny, can I say ) -For details, see [Unified ID 2.0 Configuration](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html#unified-id-20-configuration) in the Prebid documentation. +| Scenario | Option | Integration Guide | +| :--- | :--- | :--- | +| You have access to DII on the client side/within the mobile application, and want to keep changes within your application only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | +| You have access to DII on the server side only and can do the necessary development to generate UID2 tokens server-side, or you are using a [Private Operator](../ref-info/glossary-uid.md#gl-private-operator). | Client-Server Integration | [UID2 Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) | -```js -pbjs.setConfig({ - userSync: { - userIds: [{ - name: 'uid2', - params: { - // default value is 'localStorage' - storage: 'cookie' - } - }] - } -}); -``` +## Integration Overview: High-Level Steps -The cookie size can be significant, which could be a problem. However, if local storage is not an option, this is one possible approach. +At a high level, to integrate your mobile application with UID2 using the UID2 Mobile SDKs, you' wi'll need to complete the following steps: -## Passing the UID2 Token to the Bid Stream +1. Complete UID2 account setup. -To configure the UID2 module, call `pbjs.setConfig`. For details on supported parameters, refer to the guide that applies to your implementation: +1. Client-Server Integration Only: Integrate server-side token generation on your back-end server. -- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) -- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) +1. Add the UID2 SDK for Android or iOS into your mobile application. -When the UID2 module is configured, it manages a UID2 token for the user and stores it in the user's browser. +1. Configure the SDK. -When generating tokens with Client Refresh mode on the client side or on the server side, the module automatically takes care of refreshing the token as long as your site is open in the user's browser. However, you also have the option to manage the token refresh on the server side. For details, see [Refreshing a UID2 Token](integration-prebid-server-side.md#refreshing-a-uid2-token) in the Server-Side Integration Guide. The client-side integration solution includes automated token refresh. +1. Check that the token was successfully generated and then pass it for bid stream use. -## Integration Overview: High-Level Steps +1. Optionally, configure the UID2 GMA/IMA plugins for integration with the Google GMA/IMA SDKs. -At a high level, to integrate your site with UID2 using Prebid.js, you'll need to complete the following steps: +For details, refer to one of the following guides: -1. Complete UID2 account setup. -1. Add Prebid.js to your site. -1. Configure the UID2 module. +- [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) +- [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) -For detailed instructions, refer to one of the following integration guides: +(**GWH__SW should we also include these guides?**) -- [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) -- [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) +- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) diff --git a/docs/guides/publisher-client-side.md b/docs/guides/publisher-client-side.md index cf9cbce06..51c26928f 100644 --- a/docs/guides/publisher-client-side.md +++ b/docs/guides/publisher-client-side.md @@ -357,7 +357,6 @@ If there was a problem generating the token, find the request in the **Network** ![Publisher Workflow](images/NetworkTraffic.png) - ## Example Code: Hashing and Base-64 Encoding The following code example demonstrates how to generate email and phone hashes in JavaScript. diff --git a/sidebars.js b/sidebars.js index 076b7c35b..3d51d05b6 100644 --- a/sidebars.js +++ b/sidebars.js @@ -145,6 +145,9 @@ const fullSidebar = [ items: [ 'sdks/uid2-sdk-ref-android', 'sdks/uid2-sdk-ref-ios', + 'guides/integration-mobile-overview', + 'guides/integration-mobile-client-side', + 'guides/integration-mobile-client-server', ], }, { From c085167b09bf5adc242efb4cba56d942481fbd37 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 7 May 2024 14:16:38 -0400 Subject: [PATCH 03/47] incorporated git branch --- .../integration-mobile-client-server.md | 95 ++++++++----------- docs/guides/integration-mobile-client-side.md | 82 +++++++++------- docs/guides/integration-mobile-overview.md | 18 ++-- docs/guides/integration-prebid-client-side.md | 2 +- docs/guides/mobile-plugin-gma-ios.md | 2 +- docs/guides/mobile-plugin-ima-ios.md | 2 +- docs/guides/publisher-client-side.md | 4 +- docs/overviews/overview-publishers.md | 4 +- docs/sdks/summary-sdks.md | 8 +- docs/sdks/uid2-sdk-ref-android.md | 31 ++++-- docs/sdks/uid2-sdk-ref-ios.md | 62 ++++++++---- sidebars.js | 2 - 12 files changed, 172 insertions(+), 140 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index fadb278ae..d248ee650 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -20,21 +20,21 @@ It includes the following sections: - [Client-Server Mobile Integration Data Flow Overview](#client-server-mobile-integration-data-flow-overview) - [Implement Server-Side Token Generation On Your Back-End Server](#xxx) - [Server-Side Token Refresh](#server-side-token-refresh) -- [Add UID2 Mobile SDK into Your Mobile Application](#add-uid2-mobile-sdk-into-your-mobile-application) +- [Add UID2 Mobile SDK into Your Mobile App](#add-uid2-mobile-sdk-into-your-mobile-app) - [Using the UID2 Integration Environment](#using-the-uid2-integration-environment) - [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment) - [Token Storage](#token-storage) -- [Check that the token was successfully generated and then pass it for bid stream use](#check-that-the-token-was-successfully-generated-and-then-pass-it-for-bid-stream-use) +- [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use) - [Best Practice on When to Pass New UID2 Token to the UID2 SDK](#best-practice-on-when-to-pass-new-uid2-token-to-the-uid2-sdk) - [Enable Logging (For Android Only)](#enable-logging-for-android-only) - [Enable Automatic Token Refresh in Mobile App/Client Side](#enable-automatic-token-refresh-in-mobile-appclient-side) - [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration) -This page is intended for the mobile application publishers who want to integrate with UID2 by generating UID2 tokens on their backend servers (or server side) via either a public or private operators and then pass the tokens and user identities into their mobile applications which will in-turn pass the tokens for bid stream use.   +This page is intended for the mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their backend servers (or server side) via either a public or private operators and then pass the tokens and user identities into their mobile apps which will in-turn pass the tokens for bid stream use.   This is called Client-Server Integration because it requires critical integration steps in both client and server side. -If you want to integrate with UID2 via client-side only changes (i.e. all integration changes required are within the mobile applications), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. +If you want to integrate with UID2 via client-side only changes (i.e. all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. This page provides a high-level overview of integration steps and links to additional documentation. @@ -49,9 +49,9 @@ You'll need to complete the following steps: 1. Complete UID2 account setup. 1. Implement Server-Side Token Generation on your back-end server. -1. Add UID2 Mobile SDK into your mobile application. -1. Configure the UID2 Mobile SDK for your mobile application. -1. Check that the token was successfully generated and then pass it for bid stream use. +1. Add UID2 Mobile SDK into your mobile app. +1. Configure the UID2 Mobile SDK for your mobile app. +1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). 1. Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration. ## Complete UID2 Account Setup @@ -62,14 +62,14 @@ When account setup is complete, you'll receive your unique API key and client se ## Client-Server Mobile Integration Data Flow Overview -This diagram presents the data flow this Client-Server Mobile Integration requires to be implemented by the mobile app publishers. It is demonstrating using UID2 SDK for Android in the client side mobile application and UID2 SDK for Java on the server side. +This diagram presents the data flow this Client-Server Mobile Integration requires to be implemented by the mobile app publishers. It is demonstrating using UID2 SDK for Android in the client-side mobile app and UID2 SDK for Java on the server side. TODO: Add Rita’s latest diagram from here ## Implement Server-Side Token Generation On Your Back-End Server -The first step of UID2 integration is to be able to generate UID2 token on your backend server to then pass it into your mobile applications for passing the token into the RTB bid stream. +The first step of UID2 integration is to be able to generate UID2 token on your backend server to then pass it into your mobile apps for passing the token into the RTB bid stream. There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the table below: @@ -117,39 +117,35 @@ For Java: tokenGenerateResponse.getIdentityJsonString() Note that the endpoint and SDK API above may return optout status if the DII (Directly Identifiable Information) you are generating token for has opted out of UID2. You should save this information and should not call token generation endpoint for this DII again.  -You will need to pass this into the mobile app in the Configure the UID2 Mobile SDK for your mobile application section below. +You will need to pass this into the mobile app in the Configure the UID2 Mobile SDK for your mobile app section below. -Note: that for security reasons, API key and secret used in token generation must be called server-side and cannot be stored inside the mobile applications. +Note: that for security reasons, API key and secret used in token generation must be called server-side and cannot be stored inside the mobile apps. ## Server-Side Token Refresh -Token Refresh are automatically enabled inside the UID2 Mobile SDKs and is not required to be done explicitly on the server side. +Token refresh is automatically enabled inside the UID2 mobile SDKs; you don't need to manage it explicitly on the server side. +You might decide to do server-side token refresh if you want to keep your changes in the mobile apps as simple as possible. - -You may decide to do server-side token refresh if you want to keep your changes in the mobile applications as simple as possible. - - - -However, should you decide you want to do it on the server side and not client/mobile side, you can do so using one of the following: +However, if you decide you want to do it on the server side and not client/mobile side, you can do so using one of the following: Call the POST /token/refresh endpoint. Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Server-Only Integration section of the UID2 SDK for Java or UID2 SDK for Python for instructions - and pass the newly refreshed Identity to the mobile application by following the rest of this guide below. + and pass the newly refreshed Identity to the mobile app by following the rest of this guide below. -## Add UID2 Mobile SDK into Your Mobile Application +## Add UID2 Mobile SDK into Your Mobile App For installation instructions, please see the UID2 SDK for Android Reference Guide and iOS Reference Guide. Follow the UID2 SDK documentation to: -Add the pre-built UID2 SDK for Android libraries into your mobile application here. +Add the pre-built UID2 SDK for Android libraries into your mobile app here. -Learn how to instantiate the UID2Manager instance in your Android application here. For iOS, refer to the Usage Guidelines. +Learn how to instantiate the UID2Manager instance in your Android app here. For iOS, refer to the Usage Guidelines. @@ -157,9 +153,7 @@ Learn how to instantiate the UID2Manager instance in your Android application he By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation. -For Android: - -For Android: +#### For Android: UID2Manager.init( @@ -169,7 +163,7 @@ UID2Manager.init( -For iOS: +#### For iOS: // Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( @@ -191,21 +185,15 @@ Tokens from the UID2 integration environment are not valid for passing to the bi By default, in the production environment, the UID2 SDK for Android makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. +For the list of valid base URLs, see [Environments](../getting-started/gs-environments.md). -For example, a publisher in Singapore can set the server URL to https://sg.prod.uidapi.com . This is still the UID2 production environment, but the servers are in Singapore. - - - -For the list of possible base URLs, see Environments. - - - -A publisher can also set the base URL to https://global.prod.uidapi.com . This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. +You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. To specify a different UID2 server, you can change it in the init call: -For Android: +#### For Android: UID2Manager.init( @@ -215,7 +203,7 @@ UID2Manager.init( -For iOS: +#### For iOS: UID2Settings.shared.environment = .singapore @@ -237,31 +225,26 @@ UID2Settings.shared.environment = .custom( -Configure the UID2 Mobile SDK for your mobile application - - +Configure the UID2 Mobile SDK for your mobile app -After you have instantiated UID2Manager correctly in your mobile app, you will need to pass a UID2 Identity generated from your backend server via Implement Server-Side Token Generation on your backend server section above and pass into the mobile application using the setIdentity method: +After you have instantiated UID2Manager correctly in your mobile app, you will need to pass a UID2 Identity generated from your backend server via Implement Server-Side Token Generation on your backend server section above and pass into the mobile app using the setIdentity method: -For Android: UID2Manager.getInstance().generateIdentity() - -For iOS: UID2Manager.shared.setIdentity() - +For Android: `UID2Manager.getInstance().generateIdentity()` +For iOS: `UID2Manager.shared.setIdentity()` ## Token Storage -After you call the setIdentity method, the UID2 Identity will be persisted in local file storage. - -DANGER - -The format of the file stored in the local file storage or the filename itself could change without notice. We recommend that you do not read and update the file directly. +After you call the `setIdentity` method, the UID2 Identity will be persisted in local file storage. +:::warning +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +::: -## Check that the token was successfully generated and then pass it for bid stream use +## Pass Generated Token for Bid Stream Use (**GWH__SW we have to make this (heading) shorter. I wonder can we break it into two steps? Just an idea.**) @@ -293,7 +276,7 @@ The identity is invalid The advertising token inside the UID2 identity has expired and the refresh token expires too so token cannot be refreshed -In such situation, you will need to follow Implement Server-Side Token Generation on your backend server section above and generate a new UID2 identity and pass the result into the mobile application’s UID2Manager again. +In such situation, you will need to follow Implement Server-Side Token Generation on your backend server section above and generate a new UID2 identity and pass the result into the mobile app’s UID2Manager again. @@ -307,13 +290,13 @@ For Android: UID2Manager.getInstance().getAdvertisingToken() For iOS: UID2Manager.shared.getAdvertisingToken() -On application startup/resumption, if it returns null, it is time to generate new identity on the backend server by following the Implement Server-Side Token Generation on your backend server section above and pass it into the mobile application’s UID2Manager instance again +On startup/resumption of the app, if it returns null, it is time to generate new identity on the backend server by following the Implement Server-Side Token Generation on your backend server section above and pass it into the mobile app’s UID2Manager instance again ## Enable Logging (For Android Only) The UID2 SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging during UID2Manager initialization: -For Android: +#### For Android: UID2Manager.init( @@ -345,7 +328,7 @@ For Android Kotlin: UID2Manager.getInstance().automaticRefreshEnabled = false -For iOS: +#### For iOS: UID2Manager.shared.automaticRefreshEnabled = false @@ -353,7 +336,7 @@ UID2Manager.shared.automaticRefreshEnabled = false ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration -If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile application. Refer to the Plugin guides on how to install it into your apps: +If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile app. Refer to the Plugin guides on how to install it into your apps: - [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) - [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index fcf123ccb..0f00abe56 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -14,7 +14,7 @@ import Link from '@docusaurus/Link'; (**GWH__SW: audience? Is this only for publishers, or possibly advertisers also? (advertisers with apps?)**) -This page is intended for mobile application publishers who want to integrate with UID2 with changes only within their mobile application. +This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). @@ -30,11 +30,11 @@ To integrate with UID2 client-side, you will need to complete the following step 1. Complete UID2 account setup. -1. Add a UID2 mobile SDK into your mobile application. +1. Add a UID2 mobile SDK into your mobile app. 1. Configure the UID2 Mobile SDK. -1. Check that the token was successfully generated and then pass it for bid stream use. +1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). 1. Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration. @@ -44,11 +44,11 @@ It includes the following sections: - [UID2 Mobile SDK Version](#uid2-mobile-sdk-version) - [Client-Side Integration Example](#client-side-integration-example) - [Complete UID2 Account Setup ](#complete-uid2-account-setup) -- [Add the UID2 Mobile SDK to Your Mobile Application](#add-the-uid2-mobile-sdk-to-your-mobile-application) +- [Add the UID2 Mobile SDK to Your Mobile App](#add-the-uid2-mobile-sdk-to-your-mobile-app) - [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) - [Format Examples for DII](#format-examples-for-dii) - [Token Storage and Refresh](#token-storage-and-refresh) -- [Check that the token was successfully generated and then pass it for bid stream use](#check-that-the-token-was-successfully-generated-and-then-pass-it-for-bid-stream-use) +- [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use) - [Best Practice on When to Pass DII to the UID2 Mobile SDK](#best-practice-on-when-to-pass-dii-to-the-uid2-mobile-sdk) - [Opt-Out Handling](#opt-out-handling) - [Enable Logging](#enable-logging) @@ -56,17 +56,17 @@ It includes the following sections: ## UID2 Mobile SDK Version -To follow this client-side integration guide, it requires v1.0.0 or higher of UID2 SDK for Android and iOS. Follow the Add UID2 Mobile SDK into your mobile application section below to install these SDK versions in your applications. +To follow this client-side integration guide, it requires v1.0.0 or higher of UID2 SDK for Android and iOS. Follow the Add UID2 Mobile SDK into your mobile App section below to install these SDK versions in your apps. ## Client-Side Integration Example -For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development application. +For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. #### For Android: 1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). -1. Open the checked out directory in Android Studio. -1. Run the **dev-app** application. +1. In Android Studio, open the directory that you checked out. +1. Run the **dev-app** app. #### For iOS: @@ -78,9 +78,9 @@ For an example of how to configure a UID2 mobile SDK, and how to generate tokens ``` 1. Run the **UID2SDKDevelopmentApp** app scheme. -(**GWH__SW I'm not sure if this whole section should be the procedure, rather than just steps 1 and 2?**) +(**GWH__SW_from_meeting: step 3 is the checkbox, then enter email or phone number. then that's the procedure.?**) -When you've started the application, ensure the **Client Side** checkbox is checked, then enter an email or phone number, and it will make the following UID2 SDK API call that sends a request to the UID2 service to generate an identity and resulting token for the email/phone input: +When you've started the app, ensure the **Client Side** checkbox is checked, then enter an email or phone number. The sample app makes the following UID2 SDK API call that sends a request to the UID2 service to generate an identity and resulting token for the email/phone input: #### For Android: `UID2Manager.getInstance().generateIdentity()` @@ -88,9 +88,9 @@ When you've started the application, ensure the **Client Side** checkbox is chec #### For iOS: `UID2Manager.shared.generateIdentity()` -Once the API call successfully completes, the application will display the resulting identity and persist it inside the UID2Manager class. +When the API call successfully completes, the app displays the resulting identity and persists it inside the `UID2Manager` class. -The identity contains the generated UID2 advertising token value which can be retrieved using +The identity contains the generated UID2 advertising token value which can be retrieved using the following method call: #### For Android: `UID2Manager.getInstance().getAdvertisingToken()` @@ -98,9 +98,13 @@ The identity contains the generated UID2 advertising token value which can be re #### For iOS: `UID2Manager.shared.getAdvertisingToken()` -You need this value when you are making an ad request, which will be explained in the rest of this guide. +You need this value when you are making an ad request, which will be explained in the rest of this guide. (**GWH_SW_new I think this means, save the value that's returned from that function call? ANSWER: YES**) -By default, the development application will use a default set of subscription ID and public key stored in: +(**GWH_SW_from_meeting: above is what the SDK does, below is additional info**) + +### Testing With Your Own Configuration + +By default, the development app uses a default set of subscription ID and public key stored in the following object: #### For Android: `com.uid2.dev.ui.MainScreenViewModel.Companion` @@ -108,23 +112,24 @@ By default, the development application will use a default set of subscription I #### For iOS: `RootViewModel` -And connect to the UID2 integration environment as specified on: +Connect to the UID2 integration environment as specified in the following Android object/iOS file: (**GWH_ work with wording**) #### For Android: + `com.uid2.UID2Manager.Companion#init` #### For iOS: `see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist` -You can change the credentials to ones assigned to you and connect to the UID2 Production environment if necessary. Read the Optional: Reduce Latency by Setting the API Base URL for the Production Environment section below. +You can change the credentials to ones assigned to you and connect to the UID2 Production environment if necessary. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). (**GWH_SW are we still using the sample application here?**) ## Complete UID2 Account Setup -Complete the UID2 account setup by following the steps described in the Account Setup page. As part of the account setup process, you'll need to provide a list of all application names (Android Application ID, iOS App Bundle ID and App Store ID) for the mobile applications that you'll be integrating with the UID2 Mobile SDKs. +Complete the UID2 account setup by following the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of all the app names (Android Application ID, iOS App Bundle ID, and App Store ID) for the mobile apps that you'll be integrating with the UID2 mobile SDKs. When account setup is complete, you'll receive a [subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll be required to use them to configure the UID2 mobile SDK. -## Add the UID2 Mobile SDK to Your Mobile Application +## Add the UID2 Mobile SDK to Your Mobile App to add the mobile SDK to your app, follow the applicable documentation: @@ -137,7 +142,7 @@ At this point, you are ready to start generating UID2 tokens using the SDK. ### Using the UID2 Integration Environment -By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to initialize UID2Manager: +By default, the SDK is configured to work with the UID2 production environment: [https://prod.uidapi.com](https://prod.uidapi.com). If you want to use the UID2 integration environment instead, provide the following URL in your call to initialize UID2Manager: #### For Android: @@ -162,18 +167,20 @@ UID2Settings.shared.environment = .custom( ``` :::note -Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different subscription ID and public key values. +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- Subscription ID and public key values are environment-specific. You must request them for each environment separately. Be sure to use the correct credentials for each environment. ::: ### Optional: Reduce Latency by Setting the API Base URL for the Production Environment -By default, in the production environment, the UID2 Mobile SDKs make API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +By default, in the production environment, the UID2 mobile SDKs make API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. -For example, a publisher in Singapore can set the server URL to https://sg.prod.uidapi.com . This is still the UID2 production environment, but the servers are in Singapore. +For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. -For the list of possible base URLs, see [Environments](../getting-started/gs-environments.md). +For the list of valid base URLs, see [Environments](../getting-started/gs-environments.md). -A publisher can also set the base URL to [https://global.prod.uidapi.com](https://global.prod.uidapi.com). This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. +You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. To specify a different UID2 server, you can change it in the init call, as shown in the following examples. @@ -208,7 +215,7 @@ UID2 provides the publisher with the following values required to generate the U You'll have one set of these values for your publisher testing environment, and a separate set for your production environment. -To configure the SDK, you are required to pass in the public key and subscription ID that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number) into (**GWH__SW this sentence just stops not sure how to connect it with the next bit.**) +To configure the SDK, you are required to pass in the public key and subscription ID that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number) into the following method call. #### For Android: `UID2Manager.getInstance().generateIdentity()` @@ -220,7 +227,7 @@ Once it is configured, the UID2 Mobile SDK takes care of the following: - Generates a UID2 token for the user - Stores the token locally on the user’s device -- Automatically refreshes the token as required while your application is open. +- Automatically refreshes the token as required while your app is open. You can pass the user’s DII (Directly Identifiable Information) to the UID2 Mobile SDK either hashed or unhashed. If you pass the DII unhashed, the UID2 Mobile SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). @@ -461,7 +468,7 @@ The format of the file stored in the local file storage or the filename itself c ::: -## Check that the token was successfully generated and then pass it for bid stream use +## Pass Generated Token for Bid Stream Use In your mobile app, if there was a successful identity generated from the previous @@ -533,7 +540,7 @@ UID2Manager.shared.identityStatus return OPT_OUT status and means the DII has opted out of UID2 and no identity/token should be generated for it. -The best way to determine if DII is required by the UID2 Mobile SDKs is to always call +The best way to determine if DII is required by the UID2 mobile SDKs is to always call #### For Android: UID2Manager.getInstance().getAdvertisingToken() @@ -541,7 +548,7 @@ UID2Manager.getInstance().getAdvertisingToken() #### For iOS: UID2Manager.shared.getAdvertisingToken() -on application startup/resumption, if it returns null, then you should call +on app startup/resumption, if it returns null, then you should call #### For Android: UID2Manager.getInstance().generateIdentity() @@ -578,7 +585,9 @@ In this case you should avoid repeatedly make generateIdentity() calls again as The UID2 Mobile SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging by: #### For Android: -during UID2Manager initialization: + +```java +// During UID2Manager initialization: UID2Manager.init( @@ -587,18 +596,21 @@ UID2Manager.init( isLoggingEnabled = true ) +``` #### For iOS: -`UID2Settings.shared.isLoggingEnabled = true` +```swift + +UID2Settings.shared.isLoggingEnabled = true -(**GWH__SW in the Word doc the para below is in code style. Just confirming it's not meant to be part of the code?**) +// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access is not read. +``` -On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration -If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile application. Refer to the Plugin guides on how to install it into your apps: +If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile app. Refer to the Plugin guides on how to install it into your apps: - [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) - [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md index 1340d2b39..f24ae27d1 100644 --- a/docs/guides/integration-mobile-overview.md +++ b/docs/guides/integration-mobile-overview.md @@ -12,9 +12,9 @@ import Link from '@docusaurus/Link'; # UID2 Mobile Integration Overview for Android and iOS -This guide is an overview of integration options for mobile application publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. +This guide is an overview of integration options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. -This guide groups those two SDKs as UID2 Mobile SDKs. +This guide groups those two SDKs as UID2 mobile SDKs. -You can use the UID2 SDK for Android to facilitate the process of establishing client identity using UID2 and retrieving advertising tokens on Android devices. +You can use the UID2 SDK for Android to facilitate the process of establishing client identity using UID2 and retrieving advertising tokens on Android devices for use in the bid stream. The following Android-related plugins, and associated documentation, are also available. @@ -36,13 +37,17 @@ The following Android-related plugins, and associated documentation, are also av | To use the Google Mobile Ads (GMA) SDK to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from Android apps | [UID2 GMA Plugin for Android Integration Guide](../guides/mobile-plugin-gma-android.md) | | To use the Google Interactive Media Ads (IMA) SDK for Android to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from Android apps | [UID2 IMA Plugin for Android Integration Guide](../guides/mobile-plugin-ima-android.md) | +## Non-Mobile Android Device Support + +This UID2 SDK for Android can be used for non-mobile devices for Android platforms as well. + ## Functionality This SDK simplifies integration with UID2 for any publishers who want to support UID2 for apps running on Android devices. The following table shows the functions it supports. | Encrypt Raw UID2 to UID2 Token | Decrypt UID2 Token | Generate UID2 Token from DII | Refresh UID2 Token | | :--- | :--- | :--- | :--- | -| Not supported | Not supported | Not supported | Supported | +| Not supported | Not supported | Supported | Supported | ## API Permissions @@ -54,9 +59,9 @@ For details, see [API Permissions](../getting-started/gs-permissions.md). ## SDK Version - + -This documentation is for the UID2 Android SDK version 0.5.0 and later. +This documentation is for the UID2 Android SDK version 1.0.0 and later. For information about specific release versions, see [https://github.com/IABTechLab/uid2-android-sdk/releases](https://github.com/IABTechLab/uid2-android-sdk/releases). @@ -99,7 +104,7 @@ To install with Gradle, add the SDK as a dependency in the build.gradle file: ``` javascript -implementation 'com.uid2:uid2-android-sdk:0.5.0' +implementation 'com.uid2:uid2-android-sdk:1.0.0' ``` ### Installing with Maven @@ -110,13 +115,16 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: com.uid2 uid2-android-sdk - 0.5.0 + 1.0.0 ``` ## Usage Guidelines -The initial UID2 Identity *must* be generated by the implementing application and then passed into the UID2 SDK. Because of security requirements, the UID2 Mobile SDKs cannot create new UID2 identities. +There are two ways to establish an initial UID2 Identity: + +1. Generate the UID2 identity using a DII - email (hash) or phone no (hash). For integration instructions, refer to [Client-Side Integration Guide for Mobile/Android](https://ttdcorp-my.sharepoint.com/:w:/g/personal/sunny_wu_thetradedesk_com/EV4SjPzJjCZCig_kI8lGjJYBrLLhiiNh3mHq75pAtSs2qQ?e=2F7aMb). +2. Create a UID2 identity from your server backend and then passed into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](https://ttdcorp-my.sharepoint.com/:w:/g/personal/sunny_wu_thetradedesk_com/EX2dEa2NAcRPs3Pfchwua40ByY0g0DASgLybKJs11TLHqw?e=vxRjFa). The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -131,15 +139,22 @@ This section includes the functions and variables that are part of the UID2Manag ### Functions The following functions are available as part of the UID2Manager API: +- [generateIdentity()](#generateidentity) - [setIdentity()](#setidentity) - [resetIdentity()](#resetidentity) - [refreshIdentity()](#refreshidentity) - [getAdvertisingToken()](#getadvertisingtoken) - [setAutomaticRefreshEnabled()](#setautomaticrefreshenabled) +#### generateIdentity() + +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW add fragment to link.**) + +Generate a UID2 Identity using a Directly identifying information (DII). Refer to [Client-Side Integration Guide for Mobile/Android](https://ttdcorp-my.sharepoint.com/:w:/g/personal/sunny_wu_thetradedesk_com/EV4SjPzJjCZCig_kI8lGjJYBrLLhiiNh3mHq75pAtSs2qQ?e=2F7aMb) + #### setIdentity() -Sets the UID2 Identity to be managed by the SDK. +Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link**) #### resetIdentity() diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index 15992559a..efe299cfa 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -11,6 +11,7 @@ import Link from '@docusaurus/Link'; -You can use the UID2 SDK for iOS to facilitate the process of establishing client identity using UID2 and retrieving advertising tokens on iOS devices. +You can use the UID2 SDK for iOS to facilitate the process of performing the following activities: + +- Generating or establishing client identity using UID2. +- Retrieving advertising tokens on iOS devices for bid stream use. The following iOS-related plugins, and associated documentation, are also available: | Purpose | Product/Documentation | | :--- | :--- | -| To use the Google Mobile Ads (GMA) SDK to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from iOS apps | [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios.md) | -| To use the Google Interactive Media Ads SDK for iOS to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from iOS apps | [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios.md) | +| To use the Google Mobile Ads (GMA) SDK to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from iOS/tvOS apps | [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios.md) | +| To use the Google Interactive Media Ads SDK for iOS to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from iOS/tvOS apps | [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios.md) | + +:::note +Although this page refers to UID2 SDK for iOS, this SDK also supports tvOS. For the required tvOS version, see [Minimum Requirements](#minimum-requirements). +::: ## Functionality @@ -42,7 +50,7 @@ This SDK simplifies integration with UID2 for any publishers who want to support | Encrypt Raw UID2 to UID2 Token | Decrypt UID2 Token | Generate UID2 Token from DII | Refresh UID2 Token | | :--- | :--- | :--- | :--- | -| Not supported | Not supported | Not supported | Supported | +| Not supported | Not supported | Supported | Supported | ## API Permissions @@ -54,9 +62,9 @@ For details, see [API Permissions](../getting-started/gs-permissions.md). ## SDK Version - + -This documentation is for the UID2 iOS SDK version 0.3.0. +This documentation is for the UID2 iOS SDK version 1.0.0. (**GWH__SW question. Android says "and later" do we want to say this here?)** ## Features @@ -74,8 +82,9 @@ This SDK is in the following open-source GitHub repository: Minimum requirements for this SDK are as follows: -- Xcode version: 14.0+ -- iOS minimum target version: 13.0+ +- Xcode version: 15.0+ +- iOS minimum target version: 13.0+ +- tvOS minimum target version: 13.0+ - Swift version: 5.0+ @@ -93,19 +102,29 @@ Add the following dependency to Package.swift: ``` javascript dependencies: [ -.package(url: \"https://github.com/IABTechLab/uid2-ios-sdk.git\", from: "0.3.0"), +.package(url: \"https://github.com/IABTechLab/uid2-ios-sdk.git\", from: "1.0.0"), ] ``` ### Installing with Xcode -Add the following dependency via Xcode: +Add the following entry in the Package Dependencies for your apps: (**GWH__SW is it correct re Package Dependencies, wording and capitalization?**) + +| Name | Location | Dependency Rule | +| :--- | :--- |:-----------------------------| +| uid2-ios-sdk | git@github.com:IABTechLab/uid2-ios-sdk.git | Up to next major version: 1.0.0 < 2.0.0 | -![Xcode Dependency](images/xcode-uid2-ios-sdk.png) + + +(**GWH__SW should we remove this image? No longer needed? In which case we can remove this reference and also the actual file?**) ## Usage Guidelines -The initial UID2 Identity *must* be generated by the implementing application and then passed into the UID2 SDK. Because of security requirements, the UID2 Mobile SDKs cannot create new UID2 identities. +There are two ways to establish an initial UID2 Identity: + +1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) + +2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -120,15 +139,20 @@ This section includes the functions and variables that are part of the UID2Manag ### Functions The following functions are available as part of the UID2Manager API: +- [generateIdentity()](#generateidentity) - [setIdentity()](#setidentity) - [resetIdentity()](#resetidentity) - [refreshIdentity()](#refreshidentity) - [getAdvertisingToken()](#getadvertisingtoken) - [setAutomaticRefreshEnabled()](#setautomaticrefreshenabled) +#### generateIdentity() + +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) + #### setIdentity() -Sets the UID2 Identity to be managed by the SDK. +Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link**) #### resetIdentity() @@ -165,13 +189,17 @@ The identityStatus variable stores and returns the status of the current UID2 Id The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 iOS SDK. -Set the initial UID2 Identity: +Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md)):(**GWH__SW add fragment to link.**) ``` javascript -UID2Manager.shared.setIdentity(_ identity: UID2Identity) +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) ``` - -Get the UID2 token (advertising token) to pass to the Advertising SDK: +Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md)):(**GWH__SW add fragment to link.**) ``` javascript UID2Manager.shared.getAdvertisingToken() diff --git a/sidebars.js b/sidebars.js index 89176f673..f5cf3def9 100644 --- a/sidebars.js +++ b/sidebars.js @@ -144,8 +144,6 @@ const fullSidebar = [ }, collapsed: true, items: [ - 'sdks/uid2-sdk-ref-android', - 'sdks/uid2-sdk-ref-ios', 'guides/integration-mobile-overview', 'guides/integration-mobile-client-side', 'guides/integration-mobile-client-server', From 348e02495aa9356fb85ded016257c1d1c578f1fe Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 7 May 2024 14:20:09 -0400 Subject: [PATCH 04/47] part mods from meeting w/SW plus incorporate his PR 547 --- docs/guides/integration-mobile-overview.md | 2 -- docs/sdks/uid2-sdk-ref-android.md | 11 +++++------ docs/sdks/uid2-sdk-ref-ios.md | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md index f24ae27d1..417ffe689 100644 --- a/docs/guides/integration-mobile-overview.md +++ b/docs/guides/integration-mobile-overview.md @@ -36,8 +36,6 @@ For additional flexibility, UID2 also provides alternative methods for some of t The options for integrating with UID2 using the UID2 mobile SDKs are summarized in the following table. Choose the option that's best for you. -(GWH__SW: Sunny, can I say ) - | Scenario | Option | Integration Guide | | :--- | :--- | :--- | | You have access to DII on the client side/within the mobile app, and want to keep changes within your app only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 74a5105c0..2fec648a9 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -123,8 +123,9 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using a DII - email (hash) or phone no (hash). For integration instructions, refer to [Client-Side Integration Guide for Mobile/Android](https://ttdcorp-my.sharepoint.com/:w:/g/personal/sunny_wu_thetradedesk_com/EV4SjPzJjCZCig_kI8lGjJYBrLLhiiNh3mHq75pAtSs2qQ?e=2F7aMb). -2. Create a UID2 identity from your server backend and then passed into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](https://ttdcorp-my.sharepoint.com/:w:/g/personal/sunny_wu_thetradedesk_com/EX2dEa2NAcRPs3Pfchwua40ByY0g0DASgLybKJs11TLHqw?e=vxRjFa). +1. Generate the UID2 identity using a DII - email (hash) or phone no (hash). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW add fragment to link.**) + +2. Create a UID2 identity from your server backend and then passed into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -148,13 +149,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW add fragment to link.**) - -Generate a UID2 Identity using a Directly identifying information (DII). Refer to [Client-Side Integration Guide for Mobile/Android](https://ttdcorp-my.sharepoint.com/:w:/g/personal/sunny_wu_thetradedesk_com/EV4SjPzJjCZCig_kI8lGjJYBrLLhiiNh3mHq75pAtSs2qQ?e=2F7aMb) +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) #### setIdentity() -Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link**) +Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). (**GWH__ figure out more exact link**) #### resetIdentity() diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index efe299cfa..11440bb18 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -148,11 +148,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link. Also verify which function should link to which doc.**) #### setIdentity() -Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link**) +Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). (**GWH__ figure out more exact link**) #### resetIdentity() From 0f875bd00a0b4a03e6362951d58c2eb96ae8ba50 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 7 May 2024 18:37:58 -0400 Subject: [PATCH 05/47] work in progress on mobile docs --- .../integration-mobile-client-server.md | 272 ++++++--- docs/guides/integration-mobile-client-side.md | 537 +++++++++++------- docs/guides/integration-prebid-client-side.md | 2 +- docs/guides/integration-prebid-server-side.md | 2 +- docs/guides/mobile-plugin-gma-android.md | 2 +- docs/guides/mobile-plugin-gma-ios.md | 2 +- docs/guides/mobile-plugin-ima-android.md | 2 +- docs/guides/publisher-client-side.md | 9 +- docs/sdks/uid2-sdk-ref-android.md | 10 +- docs/sdks/uid2-sdk-ref-ios.md | 6 +- docs/snippets/_sdk-reduce-latency.mdx | 7 + .../guides/mobile-plugin-gma-android.md | 2 +- .../current/guides/mobile-plugin-gma-ios.md | 2 +- .../guides/mobile-plugin-ima-android.md | 2 +- .../current/sdks/uid2-sdk-ref-android.md | 8 +- .../current/sdks/uid2-sdk-ref-ios.md | 6 +- 16 files changed, 550 insertions(+), 321 deletions(-) create mode 100644 docs/snippets/_sdk-reduce-latency.mdx diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index d248ee650..7c636814b 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -8,17 +8,27 @@ sidebar_position: 04 displayed_sidebar: sidebarPublishers --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import Link from '@docusaurus/Link'; +import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; # UID2 Client-Server Integration Guide for Mobile -This guide is an overview of integration options for publishers who want to xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -It includes the following sections: +(**Android tabs: 9. iOS: 9**) + + +This guide is an overview of integration options for publishers who want to perform the following activities using Android or iOS apps: + +- Generate or establish client identity using UID2. +- Retrieve advertising tokens on Android or iOS devices for bid stream use. + + -This page is intended for the mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their backend servers (or server side) via either a public or private operators and then pass the tokens and user identities into their mobile apps which will in-turn pass the tokens for bid stream use.   +This page is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their back-end servers (or server-side) via either a public or Private Operator and then pass the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   This is called Client-Server Integration because it requires critical integration steps in both client and server side. -If you want to integrate with UID2 via client-side only changes (i.e. all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. +If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. This page provides a high-level overview of integration steps and links to additional documentation. @@ -47,12 +57,12 @@ UID2 provides a mobile SDK for Android and iOS with the following features: (**G You'll need to complete the following steps: -1. Complete UID2 account setup. -1. Implement Server-Side Token Generation on your back-end server. -1. Add UID2 Mobile SDK into your mobile app. -1. Configure the UID2 Mobile SDK for your mobile app. +1. [Complete UID2 account setup](#complete-uid2-account-setup). +1. [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server). +1. [Add the UID2 mobile SDK into your mobile app](#add-uid2-mobile-sdk-into-your-mobile-app). +1. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). 1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). -1. Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration. +1. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). ## Complete UID2 Account Setup @@ -69,7 +79,7 @@ TODO: Add Rita’s latest diagram from here ## Implement Server-Side Token Generation On Your Back-End Server -The first step of UID2 integration is to be able to generate UID2 token on your backend server to then pass it into your mobile apps for passing the token into the RTB bid stream. +The first step of UID2 integration is to be able to generate UID2 token on your back-end server to then pass it into your mobile apps for passing the token into the RTB bid stream. There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the table below: @@ -109,17 +119,33 @@ The identity output you need for the rest of this guide is the content inside th Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Basic Usage of the UID2 SDK for Java or UID2 SDK for Python for instructions -The Identity output you need for the rest of this guide is the output of the following 2 methods. +The Identity output you need for the rest of this guide is the output of the following two methods: -For Python: token_generate_response.get_identity_json_string() + + +``` +token_generate_response.get_identity_json_string() +``` + + + +```java For Java: tokenGenerateResponse.getIdentityJsonString() +``` + + + -Note that the endpoint and SDK API above may return optout status if the DII (Directly Identifiable Information) you are generating token for has opted out of UID2. You should save this information and should not call token generation endpoint for this DII again.  +:::important +The endpoint and SDK API returns opt-out status if the DII (Directly Identifiable Information) you are generating the token for has opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  +::: -You will need to pass this into the mobile app in the Configure the UID2 Mobile SDK for your mobile app section below. +You will need to pass this into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). -Note: that for security reasons, API key and secret used in token generation must be called server-side and cannot be stored inside the mobile apps. +:::note +For security reasons, API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. +::: ## Server-Side Token Refresh @@ -135,8 +161,6 @@ Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simpli and pass the newly refreshed Identity to the mobile app by following the rest of this guide below. - - ## Add UID2 Mobile SDK into Your Mobile App For installation instructions, please see the UID2 SDK for Android Reference Guide and iOS Reference Guide. @@ -147,97 +171,94 @@ Add the pre-built UID2 SDK for Android libraries into your mobile app here. Learn how to instantiate the UID2Manager instance in your Android app here. For iOS, refer to the Usage Guidelines. - - ## Using the UID2 Integration Environment By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation. -#### For Android: + + +```js UID2Manager.init( - context = this, serverUrl = "https://operator-integ.uidapi.com" ) +``` + + - -#### For iOS: - +```js // Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( - url: URL(string: "https://operator-integ.uidapi.com")! - ) +``` -On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. - - - -Note: - -Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different subscription ID and public key values. + + +On iOS, you must set `UID2Settings` before you first access `UID2Manager.shared`. Any changes made to settings after the first access are not read. +:::note +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- You'll have a different set of credentials (Subscription ID and public key) for each environment (integ and prod). Be sure to use the correct credentials for each environment. +::: ## Optional: Reduce Latency by Setting the API Base URL for the Production Environment -By default, in the production environment, the UID2 SDK for Android makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. - -For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. - -For the list of valid base URLs, see [Environments](../getting-started/gs-environments.md). - -You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. + To specify a different UID2 server, you can change it in the init call: -#### For Android: + + +```js UID2Manager.init( - context = this, serverUrl = " https://global.prod.uidapi.com" ) +``` + + - -#### For iOS: - +```js UID2Settings.shared.environment = .singapore - - - // or - - - - - UID2Settings.shared.environment = .custom( - url: URL(string: "https://global.prod.uidapi.com")! - ) +``` + + +## Configure the UID2 Mobile SDK for Your Mobile App +After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 Identity generated from your back-end server (see [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server)), and then pass it into the mobile app using the `setIdentity` method: + + -Configure the UID2 Mobile SDK for your mobile app +```js +UID2Manager.getInstance().generateIdentity() +``` + + +```js +UID2Manager.shared.setIdentity() +``` -After you have instantiated UID2Manager correctly in your mobile app, you will need to pass a UID2 Identity generated from your backend server via Implement Server-Side Token Generation on your backend server section above and pass into the mobile app using the setIdentity method: - -For Android: `UID2Manager.getInstance().generateIdentity()` - -For iOS: `UID2Manager.shared.setIdentity()` + + ## Token Storage -After you call the `setIdentity` method, the UID2 Identity will be persisted in local file storage. +After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. :::warning The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. @@ -250,25 +271,50 @@ The format of the file stored in the local file storage, or the filename itself, In your mobile app, you can call -For Android: UID2Manager.getInstance().getAdvertisingToken() + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + -For iOS: UID2Manager.shared.getAdvertisingToken() +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + And if there was a successful identity added into the UID2Manager, it should return a string like: +``` AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== - +``` You can use this identity to pass downstream for sending in RTB bid stream. If -For Android: UID2Manager.getInstance().getAdvertisingToken() + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` -For iOS: UID2Manager.shared.getAdvertisingToken() + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + returns null, there was not an identity or valid token generated for several reasons such as: @@ -276,7 +322,7 @@ The identity is invalid The advertising token inside the UID2 identity has expired and the refresh token expires too so token cannot be refreshed -In such situation, you will need to follow Implement Server-Side Token Generation on your backend server section above and generate a new UID2 identity and pass the result into the mobile app’s UID2Manager again. +In such situation, you will need to follow Implement Server-Side Token Generation on your back-end server section above and generate a new UID2 identity and pass the result into the mobile app’s UID2Manager again. @@ -286,53 +332,79 @@ In such situation, you will need to follow Implement Server-Side Token Generatio The best way to determine if a new UID2 identity is required by the UID2 SDK again is to always call -For Android: UID2Manager.getInstance().getAdvertisingToken() + + -For iOS: UID2Manager.shared.getAdvertisingToken() +UID2Manager.getInstance().getAdvertisingToken() -On startup/resumption of the app, if it returns null, it is time to generate new identity on the backend server by following the Implement Server-Side Token Generation on your backend server section above and pass it into the mobile app’s UID2Manager instance again + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +On startup/resumption of the app, if it returns null, it is time to generate new identity on the back-end server by following the Implement Server-Side Token Generation on your back-end server section above and pass it into the mobile app’s UID2Manager instance again ## Enable Logging (For Android Only) The UID2 SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging during UID2Manager initialization: -#### For Android: + + +```js UID2Manager.init( - context = this, - isLoggingEnabled = true - ) +``` -IOS + + +```js UID2Settings.shared.isLoggingEnabled = true +``` On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. + + + ## Enable Automatic Token Refresh in Mobile App/Client Side (**GWH__SW could we use tabs here?**) The UID2Manager will perform automatic token refresh, after a valid UID2 identity has been passed into it. If for any reason token refresh should be disabled, this can be done by: + + +**Android Java**: -For Android Java: - +```java UID2Manager.getInstance()setAutomaticRefreshEnabled(false) +``` -For Android Kotlin: +**Android Kotlin**: +```kotlin UID2Manager.getInstance().automaticRefreshEnabled = false +``` -#### For iOS: + + +```js UID2Manager.shared.automaticRefreshEnabled = false +``` - + + ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration @@ -345,16 +417,42 @@ If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assumin Note: You do not need to explicitly retrieve the advertising tokens using -For Android: UID2Manager.getInstance().getAdvertisingToken() + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` -For iOS: UID2Manager.shared.getAdvertisingToken() + + and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. You just need to ensure calling -For Android: UID2Manager.getInstance().getAdvertisingToken() + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` -For iOS: UID2Manager.shared.getAdvertisingToken() + + return a non-null string object. Then Google GMA/IMA SDKs should be able to retrieve it via the UID2 GMA/IMA plugins. diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 0f00abe56..3c34ff60b 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -8,11 +8,14 @@ sidebar_position: 04 displayed_sidebar: sidebarPublishers --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import Link from '@docusaurus/Link'; +import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; # UID2 Client-Side Integration Guide for Mobile -(**GWH__SW: audience? Is this only for publishers, or possibly advertisers also? (advertisers with apps?)**) +(**GWH__SW: audience? Is this only for publishers, or possibly advertisers also? (advertisers with apps?) 25 Android tabs 25 iOS tabs. End tabs 25. 48 tick sets 2 missing**) This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. @@ -32,14 +35,13 @@ To integrate with UID2 client-side, you will need to complete the following step 1. Add a UID2 mobile SDK into your mobile app. -1. Configure the UID2 Mobile SDK. +1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). 1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). 1. Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration. - -It includes the following sections: + ## UID2 Mobile SDK Version @@ -62,64 +64,112 @@ To follow this client-side integration guide, it requires v1.0.0 or higher of UI For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. -#### For Android: +Follow the instructions for the operating system you're using: Android or iOS. + + + 1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). 1. In Android Studio, open the directory that you checked out. 1. Run the **dev-app** app. -#### For iOS: + + 1. Check out the [main branch of the UID2 SDK For iOS source code repository on GitHub](https://github.com/IABTechLab/uid2-ios-sdk/tree/main). 1. In Xcode, open this project file: - ``` + ```js Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj ``` 1. Run the **UID2SDKDevelopmentApp** app scheme. + + + (**GWH__SW_from_meeting: step 3 is the checkbox, then enter email or phone number. then that's the procedure.?**) When you've started the app, ensure the **Client Side** checkbox is checked, then enter an email or phone number. The sample app makes the following UID2 SDK API call that sends a request to the UID2 service to generate an identity and resulting token for the email/phone input: -#### For Android: -`UID2Manager.getInstance().generateIdentity()` + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` -#### For iOS: -`UID2Manager.shared.generateIdentity()` + + When the API call successfully completes, the app displays the resulting identity and persists it inside the `UID2Manager` class. The identity contains the generated UID2 advertising token value which can be retrieved using the following method call: -#### For Android: -`UID2Manager.getInstance().getAdvertisingToken()` + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + -#### For iOS: -`UID2Manager.shared.getAdvertisingToken()` +```js +UID2Manager.shared.getAdvertisingToken() +``` -You need this value when you are making an ad request, which will be explained in the rest of this guide. (**GWH_SW_new I think this means, save the value that's returned from that function call? ANSWER: YES**) + + -(**GWH_SW_from_meeting: above is what the SDK does, below is additional info**) +This function call returns the value that you need to make an ad request. For details, see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). ### Testing With Your Own Configuration By default, the development app uses a default set of subscription ID and public key stored in the following object: -#### For Android: -`com.uid2.dev.ui.MainScreenViewModel.Companion` + + + +```js +com.uid2.dev.ui.MainScreenViewModel.Companion +``` + + + + +```js +RootViewModel +``` -#### For iOS: -`RootViewModel` + + Connect to the UID2 integration environment as specified in the following Android object/iOS file: (**GWH_ work with wording**) -#### For Android: + + + +```js +com.uid2.UID2Manager.Companion#init +``` + + + -`com.uid2.UID2Manager.Companion#init` +```js +see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist +``` -#### For iOS: -`see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist` + + You can change the credentials to ones assigned to you and connect to the UID2 Production environment if necessary. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). (**GWH_SW are we still using the sample application here?**) @@ -127,7 +177,7 @@ You can change the credentials to ones assigned to you and connect to the UID2 P Complete the UID2 account setup by following the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of all the app names (Android Application ID, iOS App Bundle ID, and App Store ID) for the mobile apps that you'll be integrating with the UID2 mobile SDKs. -When account setup is complete, you'll receive a [subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll be required to use them to configure the UID2 mobile SDK. +When account setup is complete, you'll receive a [subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll be required to use them to [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). ## Add the UID2 Mobile SDK to Your Mobile App @@ -144,68 +194,66 @@ At this point, you are ready to start generating UID2 tokens using the SDK. By default, the SDK is configured to work with the UID2 production environment: [https://prod.uidapi.com](https://prod.uidapi.com). If you want to use the UID2 integration environment instead, provide the following URL in your call to initialize UID2Manager: -#### For Android: + + -``` +```js UID2Manager.init( - context = this, serverUrl = "https://operator-integ.uidapi.com" ) ``` -#### For iOS: + + -``` +```js // Must be set before UID2Manager.shared is accessed - UID2Settings.shared.environment = .custom( - url: URL(string: "https://operator-integ.uidapi.com")! - ) ``` + + + :::note Bear in mind the following differences between environments: - Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- Subscription ID and public key values are environment-specific. You must request them for each environment separately. Be sure to use the correct credentials for each environment. +- You'll have a different set of credentials (Subscription ID and public key) for each environment (integ and prod). Be sure to use the correct credentials for each environment. ::: ### Optional: Reduce Latency by Setting the API Base URL for the Production Environment -By default, in the production environment, the UID2 mobile SDKs make API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. - -For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. - -For the list of valid base URLs, see [Environments](../getting-started/gs-environments.md). - -You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. + -To specify a different UID2 server, you can change it in the init call, as shown in the following examples. +To specify a different UID2 server, you can change it in the `init` call, as shown in the following examples. -#### For Android: + + -``` +```js UID2Manager.init( context = this, serverUrl = " https://global.prod.uidapi.com" ) ``` -#### For iOS: + + -``` +```js // Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( url: URL(string: "https://global.prod.uidapi.com")! - ) - // or use a named environment UID2Settings.shared.environment = .sydney ``` + + + ## Configure the UID2 Mobile SDK UID2 provides the publisher with the following values required to generate the UID2 token on the client side: @@ -217,396 +265,457 @@ You'll have one set of these values for your publisher testing environment, and To configure the SDK, you are required to pass in the public key and subscription ID that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number) into the following method call. -#### For Android: -`UID2Manager.getInstance().generateIdentity()` + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` -#### For iOS: -`UID2Manager.shared.generateIdentity()` + + -Once it is configured, the UID2 Mobile SDK takes care of the following: +Once it's configured, the UID2 mobile SDK takes care of the following: - Generates a UID2 token for the user - Stores the token locally on the user’s device - Automatically refreshes the token as required while your app is open. -You can pass the user’s DII (Directly Identifiable Information) to the UID2 Mobile SDK either hashed or unhashed. If you pass the DII unhashed, the UID2 Mobile SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). - +You can pass the user’s DII (Directly Identifiable Information) to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). ## Format Examples for DII The SDK encrypts the hashed DII before sending it to the UID2 service. -You can invoke the `generateIdentity` method using any of the four accepted directly identifying information (DII) formats, for any specific user. The DII format may vary per user, but you can only send one value per user. +You can invoke the `generateIdentity` method using any of the four accepted formats for directly identifying information (DII), for any specific user. The DII format might vary per user, but you can only send one value per user. -The following examples demonstrate the different ways that you can configure the UID2 Mobile SDK and list the requirements for the DII passed into the SDK. +The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. - Configure for Email Address - Configure for Hashed Email Address - Configure for Phone Number - Configure for Hashed Phone Number -If the `generateIdentity` method is called multiple times, the UID2 Mobile SDK will only use the most recent configuration values. +If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. ### Email, Unhashed -The following example configures the UID2 Mobile SDK with an email address. +The following example configures the UID2 mobile SDK with an email address. -#### For Android: + + -``` +```js manager.generateIdentity( - IdentityRequest.Email("test@example.com"), - subscriptionId, - publicKey, - ) { result -> - when (result) { - is Error -> ... - is Success -> ... - } - } ``` -#### For iOS: - + + -``` +```js guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else { - // email is invalid and cannot be normalized, handle error - } - try await UID2Manager.shared.generateIdentity( - .email(normalizedEmail), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString - ) ``` + + + In this scenario: - No normalization or hashing is required by the publisher -- The UID2 Mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. +- The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. ### Email, Normalized and Hashed The following example configures the UID2 SDK with a hashed email address. -#### For Android: + + - -``` +```js manager.generateIdentity( - IdentityRequest.EmailHash( - “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” - ), - subscriptionId, - publicKey, - ) { result -> - when (result) { - is Error -> ... - is Success -> ... - } - } ``` -#### For iOS: + + -``` +```js try await UID2Manager.shared.generateIdentity( - .emailHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString - ) ``` + + + In this scenario: - The publisher is responsible for normalizing and hashing the email address. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). -- The UID2 Mobile SDK encrypts the hash before sending it to the UID2 service. +- The UID2 mobile SDK encrypts the hash before sending it to the UID2 service. ### Phone Number, Unhashed -The following example configures the UID2 Mobile SDK with a phone number. - -#### For Android: +The following example configures the UID2 mobile SDK with a phone number. + + -``` +```js manager.generateIdentity( - IdentityRequest.Phone(“+1111111111”), - subscriptionId, - publicKey, - ) { result -> - when (result) { - is Error -> ... - is Success -> ... - } - } ``` -#### For iOS: + + -``` +```js guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { - // phone number is invalid and cannot be normalized, handle error - } - try await UID2Manager.shared.generateIdentity( - .phone(normalizedPhone), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString - ) ``` + + + In this scenario: - The publisher is responsible for normalizing the phone number. For details, see Phone Number Normalization. -- The UID2 Mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. - +- The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. ### Phone Number, Normalized and Hashed -The following example configures the UID2 Mobile SDK with a hashed phone number. +The following example configures the UID2 mobile SDK with a hashed phone number. -#### For Android: + + -``` +```js manager.generateIdentity( - IdentityRequest.PhoneHash( - “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” - ), - subscriptionId, - publicKey, - ) { result -> - when (result) { - is Error -> ... - is Success -> ... - } - } ``` -#### For iOS: + + -``` +```js try await UID2Manager.shared.generateIdentity( - .phoneHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString - ) ``` + + + In this scenario: - The publisher is responsible for normalizing and hashing the phone number. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). -- The UID2 Mobile SDK encrypts the hash before sending it to the UID2 service. +- The UID2 mobile SDK encrypts the hash before sending it to the UID2 service. ## Token Storage and Refresh -After a call to one of the methods listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 Mobile SDK refreshes the UID2 token periodically. +After a call to one of the methods listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. :::warning The format of the file stored in the local file storage or the filename itself could change without notice. We recommend that you do not read and update the file directly. ::: - ## Pass Generated Token for Bid Stream Use In your mobile app, if there was a successful identity generated from the previous -#### For Android: + + -UID2Manager.getInstance().generateIdentity() +```js +UID2Manager.getInstance().generateIdentity() +``` -#### For iOS: -UID2Manager.shared.generateIdentity() - + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + call, subsequently, when you call: -#### For Android: + + -UID2Manager.getInstance().getAdvertisingToken() +```js +UID2Manager.getInstance().getAdvertisingToken() +``` -#### For iOS: -UID2Manager.shared.getAdvertisingToken() + + -it should return a non-null string object such as: +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + -AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +it should return a non-null string object such as the following: + +```js +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +``` -You can use this identity to pass downstream for sending in RTB bid stream. +You can use this identity to pass downstream for sending in the RTB bid stream. If -#### For Android: + + +```js UID2Manager.getInstance().getAdvertisingToken() +``` + + + -#### For iOS: +```js UID2Manager.shared.getAdvertisingToken() +``` + + + returns null, there was no identity or valid token generated for various reasons and you will need to check if there are any errors from the generateIdentity call (read Enable Logging below) or the identity generated has expired and you need to call generateIdentity again. Read the next section to learn when to do so. ## Best Practice on When to Pass DII to the UID2 Mobile SDK -When this is the first time the app is open with no identity, to start the token generation call you'll need to call: +The first time the app is opened with no identity, you'll need to make the following function call, with the DII, to start the token generation: (**GWH_SW why only the first time?**) -#### For Android: + + +```js UID2Manager.getInstance().generateIdentity() +``` -#### For iOS: + + +```js UID2Manager.shared.generateIdentity() +``` -method with DII. Once an identity is generated, the advertising token (UID2 token) that you would send to the bid stream will be available upon the successful completion of the generateIdentity function. + + -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call +Once an identity is generated, the advertising token (UID2 token) that you would send to the bid stream will be available upon the successful completion of the generateIdentity function. -#### For Android: +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: + + + +```js UID2Manager.getInstance().generateIdentity() +``` + + + -#### For iOS: +```js UID2Manager.shared.generateIdentity() +``` + + + -again to generate a new identity and resulting token. The exception is if +The only exception to this is if the following function returns a status of `OPT_OUT`, which means that the DII has opted out of UID2 and no identity/token should be generated for it. (**GWH_SW should UID2Manager.shared.identityStatus below have ()?**) -#### For Android: + + +```js UID2Manager.getInstance().getIdentityStatus() +``` -#### For iOS: + + + +```js UID2Manager.shared.identityStatus +``` + + + -return OPT_OUT status and means the DII has opted out of UID2 and no identity/token should be generated for it. +The best way to determine if DII is required by the UID2 mobile SDKs is to always call the following function on app startup/resumption: -The best way to determine if DII is required by the UID2 mobile SDKs is to always call + + -#### For Android: +```js UID2Manager.getInstance().getAdvertisingToken() +``` + + + -#### For iOS: +```js UID2Manager.shared.getAdvertisingToken() +``` -on app startup/resumption, if it returns null, then you should call + + -#### For Android: +If it returns `null`, you'll need to call the following function and pass DII into it again. + + + + +```js UID2Manager.getInstance().generateIdentity() +``` -#### For iOS: + + + +```js UID2Manager.shared.generateIdentity() +``` -and pass DII into it again. + + ## Opt-Out Handling If the DII provided to the -#### For Android: + + + +```js UID2Manager.getInstance().generateIdentity() +``` + + + -#### For iOS: +```js UID2Manager.shared.generateIdentity() +``` + + + has opted out, this method will return null. Calling: -#### For Android: + + + +```js UID2Manager.getInstance().getIdentityStatus() +``` -#### For iOS: + + + +```js UID2Manager.shared.identityStatus +``` + + + returns OPT_OUT status. -In this case you should avoid repeatedly make generateIdentity() calls again as UID2 token will not be generated because the DII has opted out of UID2. +In this case you should avoid repeatedly making `generateIdentity()` calls again, because if the DII has a status of opted out, the UID2 token is not generated. ## Enable Logging -The UID2 Mobile SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging by: +The UID2 mobile SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging by: -#### For Android: + + -```java +```js // During UID2Manager initialization: - UID2Manager.init( - context = this, - isLoggingEnabled = true - ) ``` -#### For iOS: + + ```swift - UID2Settings.shared.isLoggingEnabled = true - // On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access is not read. ``` + + ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration @@ -619,22 +728,42 @@ If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assumin Note: You do not need to explicitly retrieve the advertising tokens using (**GWH__SW not sure how to put this... let's discuss.**) -#### For Android: + + +```js UID2Manager.getInstance().getAdvertisingToken() +``` + + + -#### For iOS: +```js UID2Manager.shared.getAdvertisingToken() +``` + + + and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. -You just need to ensure calling +You just need to ensure calling the following return a non-null string object: -#### For Android: + + +```js UID2Manager.getInstance().getAdvertisingToken() +``` + + + -#### For iOS: +```js UID2Manager.shared.getAdvertisingToken() +``` + + + -return a non-null string object. Then Google GMA/IMA SDKs should be able to retrieve it via the UID2 GMA/IMA plugins. +Then, the Google GMA/IMA plug-ins should be able to retrieve it via the UID2 GMA/IMA plugins. diff --git a/docs/guides/integration-prebid-client-side.md b/docs/guides/integration-prebid-client-side.md index 79493efe3..69f3fbef3 100644 --- a/docs/guides/integration-prebid-client-side.md +++ b/docs/guides/integration-prebid-client-side.md @@ -198,7 +198,7 @@ An example of a tool for validating and debugging Prebid.js configuration is Pro ## Optional: Reduce Latency by Setting the API Base URL for the Production Environment -By default, the UID2 module makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +By default, in the production environment, the UID2 Prebid module makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. To specify a different UID2 server when you're configuring the UID2 module, set the optional params.uid2ApiBase parameter, as shown in the following example: diff --git a/docs/guides/integration-prebid-server-side.md b/docs/guides/integration-prebid-server-side.md index 30f271bf9..a7ee83d23 100644 --- a/docs/guides/integration-prebid-server-side.md +++ b/docs/guides/integration-prebid-server-side.md @@ -384,7 +384,7 @@ The following sample is fictitious, but shows what the token response object, re ## Optional: Reduce Latency by Setting the API Base URL for the Production Environment -By default, the UID2 module makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +By default, in the production environment, the UID2 Prebid module makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. To specify a different UID2 server when you're configuring the UID2 module, set the optional params.uid2ApiBase parameter, as shown in the following example: diff --git a/docs/guides/mobile-plugin-gma-android.md b/docs/guides/mobile-plugin-gma-android.md index cae05f60e..f4cd55ab4 100644 --- a/docs/guides/mobile-plugin-gma-android.md +++ b/docs/guides/mobile-plugin-gma-android.md @@ -52,7 +52,7 @@ Install the UID2 Android GMA Plugin v0.5.0 to an existing app with the UID2 Andr To install with Gradle, add the SDK as a dependency in the `build.gradle` file: -``` javascript +```js implementation 'com.uid2:uid2-android-sdk-gma:0.5.0' ``` diff --git a/docs/guides/mobile-plugin-gma-ios.md b/docs/guides/mobile-plugin-gma-ios.md index 6dc78d322..f4a7c80bb 100644 --- a/docs/guides/mobile-plugin-gma-ios.md +++ b/docs/guides/mobile-plugin-gma-ios.md @@ -45,6 +45,6 @@ Prerequisite: Install the Google Mobile Ads SDK and the UID2 iOS SDK. Install the UID2 iOS GMA Plugin via Swift Package Manager to an existing app with the UID2 iOS SDK and the Google Mobile Ads SDK installed: -``` javascript +```js .package(url: https://github.com/IABTechLab/uid2-ios-plugin-google-gma.git, exact: "0.3.0") ``` diff --git a/docs/guides/mobile-plugin-ima-android.md b/docs/guides/mobile-plugin-ima-android.md index 3944942ca..ed482ab5f 100644 --- a/docs/guides/mobile-plugin-ima-android.md +++ b/docs/guides/mobile-plugin-ima-android.md @@ -52,7 +52,7 @@ Install the UID2 Android IMA Plugin to an existing app with the UID2 Android SDK ### Gradle To install with Gradle, add the SDK as a dependency in the `build.gradle` file: -``` javascript +```js implementation 'com.uid2:uid2-android-sdk-ima:0.5.0' ``` diff --git a/docs/guides/publisher-client-side.md b/docs/guides/publisher-client-side.md index 95949ae4e..fdfa93cb8 100644 --- a/docs/guides/publisher-client-side.md +++ b/docs/guides/publisher-client-side.md @@ -10,6 +10,7 @@ sidebar_position: 04 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Link from '@docusaurus/Link'; +import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; # Client-Side Integration Guide for JavaScript @@ -121,13 +122,7 @@ Tokens from the UID2 integration environment are not valid for passing to the bi ### Optional: Reduce Latency by Setting the API Base URL for the Production Environment -By default, in the production environment, the JS SDK makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users in order to reduce latency. - -For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. - -For the list of valid base URLs, see [Environments](../getting-started/gs-environments.md). - -You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. + To specify a different UID2 server, you can change it in the `init` call: diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 2fec648a9..9f7331aaf 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -103,7 +103,7 @@ There are two options for installing the Android UID2 SDK: To install with Gradle, add the SDK as a dependency in the build.gradle file: -``` javascript +```js implementation 'com.uid2:uid2-android-sdk:1.0.0' ``` @@ -125,7 +125,7 @@ There are two ways to establish an initial UID2 Identity: 1. Generate the UID2 identity using a DII - email (hash) or phone no (hash). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW add fragment to link.**) -2. Create a UID2 identity from your server backend and then passed into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) +2. Create a UID2 identity from your back-end server and then passed into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -196,7 +196,7 @@ The Android implementation expects the singleton to be initialized before use. T The initialization can be done during the creation of the APPLICATION instance, as shown in the following example: -``` javascript +```js class MyApplication : Application() { override fun onCreate() { super.onCreate() @@ -211,12 +211,12 @@ The following code samples provide examples of performing specific activities re Set the Initial UID2 Identity: -``` javascript +```js UID2Manager.getInstance().setIdentity(identity: UID2Identity) ``` Get the UID2 token (advertising token) to pass to the Advertising SDK: -``` javascript +```js UID2Manager.getInstance().getAdvertisingToken() ``` diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index 11440bb18..b6e753eef 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -100,7 +100,7 @@ Install the iOS SDK via Swift Package Manager (SPM). There are two installation Add the following dependency to Package.swift: -``` javascript +```js dependencies: [ .package(url: \"https://github.com/IABTechLab/uid2-ios-sdk.git\", from: "1.0.0"), ] @@ -191,7 +191,7 @@ The following code samples provide examples of performing specific activities re Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md)):(**GWH__SW add fragment to link.**) -``` javascript +```js UID2Manager.shared.generateIdentity( _ identity: IdentityType, subscriptionID: String, @@ -201,6 +201,6 @@ UID2Manager.shared.generateIdentity( ``` Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md)):(**GWH__SW add fragment to link.**) -``` javascript +```js UID2Manager.shared.getAdvertisingToken() ``` diff --git a/docs/snippets/_sdk-reduce-latency.mdx b/docs/snippets/_sdk-reduce-latency.mdx new file mode 100644 index 000000000..f8aa0cbdd --- /dev/null +++ b/docs/snippets/_sdk-reduce-latency.mdx @@ -0,0 +1,7 @@ +By default, in the production environment, UID2 SDKs make API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. + +For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. + +For the list of valid base URLs, see [Environments](../getting-started/gs-environments.md). + +You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md index b87c24794..971f735d8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md @@ -52,7 +52,7 @@ UID2 Android SDK と Google IMA SDK がインストールされている既存 Gradle でインストールするには、`build.gradle` ファイルに依存関係として SDK を追加します: -``` javascript +```js implementation 'com.uid2:uid2-android-sdk-gma:0.5.0' ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md index 3f00b4e85..d39e6f62a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md @@ -45,6 +45,6 @@ UID2 Google Mobile Ads (GMA) Plugin for iOS は、[Google Mobile Ads (GMA) SDK]( UID2 iOS SDK と Google Mobile Ads SDK がインストールされている既存のアプリに、Swift Package Manager 経由で UID2 iOS IMA Plugin をインストールします: -``` javascript +```js .package(url: https://github.com/IABTechLab/uid2-ios-plugin-google-gma.git, exact: "0.2.0") ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md index 32d08e006..237ea57d6 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md @@ -52,7 +52,7 @@ UID2 Android SDK と Google IMA SDK がインストールされている既存 ### Gradle Gradle でインストールするには、`build.gradle` ファイルに依存関係として SDK を追加します: -``` javascript +```js implementation 'com.uid2:uid2-android-sdk-ima:0.5.0' ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-android.md b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-android.md index a674cb4cb..6aee8d4d3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-android.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-android.md @@ -98,7 +98,7 @@ Android UID2 SDK をインストールするには、2 つの方法がありま Gradle を使用してインストールするには、build.gradle ファイルに依存関係として SDK を追加します: -``` javascript +```js implementation 'com.uid2:uid2-android-sdk:0.5.0' ``` @@ -182,7 +182,7 @@ Android の実装では、使用前にシングルトンを初期化します。 初期化は、次の例に示すように、APPLICATION インスタンスの生成時に行うことができます: -``` javascript +```js class MyApplication : Application() { override fun onCreate() { super.onCreate() @@ -197,12 +197,12 @@ class MyApplication : Application() { 初期 UID2 Identity を設定します: -``` javascript +```js UID2Manager.getInstance().setIdentity(identity: UID2Identity) ``` SDK に渡す UID2 Token (Advertising Token) を取得します: -``` javascript +```js UID2Manager.getInstance().getAdvertisingToken() ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md index a8fdc6436..d3ceb0b7b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md @@ -91,7 +91,7 @@ Swift Package Manager (SPM) を使って iOS SDK をインストールします Package.swift に以下の依存関係を追加します: -``` javascript +```js dependencies: [ .package(url: \"https://github.com/IABTechLab/uid2-ios-sdk.git\", from: "0.2.0"), ] @@ -167,12 +167,12 @@ identityStatus 変数は、SDK が管理している現在の UID2 Identity の 初期 UID2 Identity を設定します: -``` javascript +```js UID2Manager.shared.setIdentity(_ identity: UID2Identity) ``` Advertising SDK に渡す UID2 Token (Advertising Token) を取得します: -``` javascript +```js UID2Manager.shared.getAdvertisingToken() ``` From 5b92d9f57410a1a4b9100f3d0b78a091cbdbf180 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Wed, 8 May 2024 15:54:01 -0400 Subject: [PATCH 06/47] updates --- .../integration-mobile-client-server.md | 8 +- docs/guides/integration-mobile-client-side.md | 134 ++++++++++-------- docs/guides/integration-prebid-client-side.md | 10 +- docs/guides/publisher-client-side.md | 8 +- docs/ref-info/glossary-uid.md | 2 +- docs/sdks/uid2-sdk-ref-android.md | 4 +- docs/sdks/uid2-sdk-ref-ios.md | 4 +- .../guides/integration-prebid-client-side.md | 2 +- .../current/guides/publisher-client-side.md | 2 +- 9 files changed, 90 insertions(+), 84 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 7c636814b..6b619aec1 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -50,10 +50,10 @@ This page provides a high-level overview of integration steps and links to addit ## Overview -UID2 provides a mobile SDK for Android and iOS with the following features: (**GWH__SW are we now going to have a combo mobile SDK? If we still have two I'll fix the wording.**) +UID2 provides mobile SDKs for Android and iOS. Each SDK has the following features: -- Takes in a UID2 Identity (including a UID2 token) and persisting it in local file storage -- Automatic refreshing of UID2 tokens +- Takes in a UID2 Identity (including a UID2 token) and persists it in local file storage. +- Automatically refreshes UID2 tokens. (**GWH__SW: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) You'll need to complete the following steps: @@ -377,8 +377,6 @@ On iOS, you must set UID2Settings before you first access UID2Manager.shared. An ## Enable Automatic Token Refresh in Mobile App/Client Side -(**GWH__SW could we use tabs here?**) - The UID2Manager will perform automatic token refresh, after a valid UID2 identity has been passed into it. If for any reason token refresh should be disabled, this can be done by: diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 3c34ff60b..291972f60 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -29,9 +29,9 @@ UID2 provides a mobile SDK for Android and iOS with the following features: - Automatic refreshing of UID2 tokens - Automatic storage of UID2 tokens -To integrate with UID2 client-side, you will need to complete the following steps: +To integrate with UID2 client-side, you'll need to complete the following steps: -1. Complete UID2 account setup. +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). 1. Add a UID2 mobile SDK into your mobile app. @@ -45,7 +45,7 @@ To integrate with UID2 client-side, you will need to complete the following step - [UID2 Mobile SDK Version](#uid2-mobile-sdk-version) - [Client-Side Integration Example](#client-side-integration-example) -- [Complete UID2 Account Setup ](#complete-uid2-account-setup) +- [Complete the UID2 Account Setup](#complete-the-uid2-account-setup) - [Add the UID2 Mobile SDK to Your Mobile App](#add-the-uid2-mobile-sdk-to-your-mobile-app) - [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) - [Format Examples for DII](#format-examples-for-dii) @@ -64,7 +64,7 @@ To follow this client-side integration guide, it requires v1.0.0 or higher of UI For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. -Follow the instructions for the operating system you're using: Android or iOS. +Follow the instructions for the operating system you're using: Android or iOS. (**GWH__SW is it correct to call these operating systems? Or...?**) @@ -72,6 +72,8 @@ Follow the instructions for the operating system you're using: Android or iOS. 1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). 1. In Android Studio, open the directory that you checked out. 1. Run the **dev-app** app. +1. When you've started the app, make sure the **Client Side** checkbox is checked. +1. Enter an email or phone number. @@ -83,13 +85,13 @@ Follow the instructions for the operating system you're using: Android or iOS. Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj ``` 1. Run the **UID2SDKDevelopmentApp** app scheme. +1. When you've started the app, make sure the **Client Side** checkbox is checked. +1. Enter an email or phone number. -(**GWH__SW_from_meeting: step 3 is the checkbox, then enter email or phone number. then that's the procedure.?**) - -When you've started the app, ensure the **Client Side** checkbox is checked, then enter an email or phone number. The sample app makes the following UID2 SDK API call that sends a request to the UID2 service to generate an identity and resulting token for the email/phone input: +Behind the scenes, the sample app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity and resulting UID2 token for the email/phone input: (**GWH__SW I need to understand the exact difference between an identity and the token. And, should identity be capitalized? Not sure why. "sends a request to the UID2 service to return an identity including UID2 token" maybe?**) @@ -108,9 +110,9 @@ UID2Manager.shared.generateIdentity() -When the API call successfully completes, the app displays the resulting identity and persists it inside the `UID2Manager` class. +When the API call is successful, the app displays the resulting identity and persists it inside the `UID2Manager` class. -The identity contains the generated UID2 advertising token value which can be retrieved using the following method call: +The identity contains the generated UID2 advertising token value which you can retrieve using the following method call: @@ -129,11 +131,13 @@ UID2Manager.shared.getAdvertisingToken() -This function call returns the value that you need to make an ad request. For details, see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). +This function call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). + +(**GWH__SW we called it a method call line 113 (discussed in earlier meeting), then a function call line 132. Which is best?**) ### Testing With Your Own Configuration -By default, the development app uses a default set of subscription ID and public key stored in the following object: +By default, the development app uses default values for Subscription ID and public key, which are stored in the following object: @@ -152,7 +156,7 @@ RootViewModel -Connect to the UID2 integration environment as specified in the following Android object/iOS file: (**GWH_ work with wording**) +To test, you can connect to the UID2 integration environment as specified in the following Android function call (**GWH_SW you said this but also said Android object. Preference?**)/iOS file: @@ -171,13 +175,17 @@ see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist -You can change the credentials to ones assigned to you and connect to the UID2 Production environment if necessary. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). (**GWH_SW are we still using the sample application here?**) +If necessary, you can also change the default Subscription ID and public key to ones assigned to you, and connect to the UID2 Production environment. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). + +## Complete the UID2 Account Setup -## Complete UID2 Account Setup +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: -Complete the UID2 account setup by following the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of all the app names (Android Application ID, iOS App Bundle ID, and App Store ID) for the mobile apps that you'll be integrating with the UID2 mobile SDKs. +- Android Application ID +- iOS App Bundle ID +- App Store ID -When account setup is complete, you'll receive a [subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll be required to use them to [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). ## Add the UID2 Mobile SDK to Your Mobile App @@ -186,13 +194,13 @@ to add the mobile SDK to your app, follow the applicable documentation: - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) - [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) -(**GWH__SW not sure what it means "Follow the instructions on a draft version of a new UID2 SDK for Android reference guide" please clarify.**) +(**GWH__SW my earlier question: not sure what it means "Follow the instructions on a draft version of a new UID2 SDK for Android reference guide" please clarify. Still not sure if I've linked to the correct guides but I hope so please verify.**) At this point, you are ready to start generating UID2 tokens using the SDK. ### Using the UID2 Integration Environment -By default, the SDK is configured to work with the UID2 production environment: [https://prod.uidapi.com](https://prod.uidapi.com). If you want to use the UID2 integration environment instead, provide the following URL in your call to initialize UID2Manager: +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the integration environment instead, provide the following URL in your call to initialize `UID2Manager`: @@ -220,7 +228,7 @@ UID2Settings.shared.environment = .custom( :::note Bear in mind the following differences between environments: - Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of credentials (Subscription ID and public key) for each environment (integ and prod). Be sure to use the correct credentials for each environment. +- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. ::: ### Optional: Reduce Latency by Setting the API Base URL for the Production Environment @@ -256,14 +264,14 @@ UID2Settings.shared.environment = .sydney ## Configure the UID2 Mobile SDK -UID2 provides the publisher with the following values required to generate the UID2 token on the client side: +UID2 provides the publisher with the following values, which are needed for generating the UID2 token on the client side: -- A subscription ID -- A public key +- Subscription ID +- Public key -You'll have one set of these values for your publisher testing environment, and a separate set for your production environment. +You'll have one set of these values for your testing environment, and a separate set for your production environment. -To configure the SDK, you are required to pass in the public key and subscription ID that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number) into the following method call. +To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number), into the following method call: @@ -282,19 +290,21 @@ UID2Manager.shared.generateIdentity() -Once it's configured, the UID2 mobile SDK takes care of the following: +Once it's configured, the UID2 mobile SDK does the following: - Generates a UID2 token for the user - Stores the token locally on the user’s device -- Automatically refreshes the token as required while your app is open. +- Automatically refreshes the token as required while your app is open -You can pass the user’s DII (Directly Identifiable Information) to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +:::tip +You can pass the user’s [DII](../ref-info/glossary-uid.md#gl-dii) to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +::: ## Format Examples for DII The SDK encrypts the hashed DII before sending it to the UID2 service. -You can invoke the `generateIdentity` method using any of the four accepted formats for directly identifying information (DII), for any specific user. The DII format might vary per user, but you can only send one value per user. +You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. @@ -385,8 +395,8 @@ try await UID2Manager.shared.generateIdentity( In this scenario: -- The publisher is responsible for normalizing and hashing the email address. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). -- The UID2 mobile SDK encrypts the hash before sending it to the UID2 service. +- The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. ### Phone Number, Unhashed @@ -427,7 +437,7 @@ try await UID2Manager.shared.generateIdentity( In this scenario: -- The publisher is responsible for normalizing the phone number. For details, see Phone Number Normalization. +- The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). - The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. ### Phone Number, Normalized and Hashed @@ -468,20 +478,22 @@ try await UID2Manager.shared.generateIdentity( In this scenario: -- The publisher is responsible for normalizing and hashing the phone number. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). -- The UID2 mobile SDK encrypts the hash before sending it to the UID2 service. +- The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. ## Token Storage and Refresh -After a call to one of the methods listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. +After a call to the applicable method listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. :::warning -The format of the file stored in the local file storage or the filename itself could change without notice. We recommend that you do not read and update the file directly. +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. ::: ## Pass Generated Token for Bid Stream Use -In your mobile app, if there was a successful identity generated from the previous +In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity, which you can then use in the bid stream. + +First, the method call to generate the identity: @@ -500,7 +512,7 @@ UID2Manager.shared.generateIdentity() -call, subsequently, when you call: +Then, the method call to get the advertising token: @@ -519,7 +531,7 @@ UID2Manager.shared.getAdvertisingToken() -it should return a non-null string object such as the following: +If successful, this method call returns a non-null string object such as the following: ```js AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== @@ -527,28 +539,17 @@ AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4l You can use this identity to pass downstream for sending in the RTB bid stream. -If - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. -```js -UID2Manager.shared.getAdvertisingToken() -``` +Some possible reasons for this, and some things you could do to troubleshoot, are as follows: - - +- Check to see whether there are any errors from the `generateIdentity()` call. +- Enable logging to get more information: see [Enable Logging](#enable-logging) +- It's possible that the identity that was generated has expired. If this occurs, you'll need to call the `generateIdentity()` method again: see [Client-Side Integration Example](#client-side-integration-example). -returns null, there was no identity or valid token generated for various reasons and you will need to check if there are any errors from the generateIdentity call (read Enable Logging below) or the identity generated has expired and you need to call generateIdentity again. Read the next section to learn when to do so. +For more information, see [Best Practices on When to Pass DII to the UID2 Mobile SDK](#best-practices-on-when-to-pass-dii-to-the-uid2-mobile-sdk). -## Best Practice on When to Pass DII to the UID2 Mobile SDK +## Best Practices on When to Pass DII to the UID2 Mobile SDK The first time the app is opened with no identity, you'll need to make the following function call, with the DII, to start the token generation: (**GWH_SW why only the first time?**) @@ -569,9 +570,9 @@ UID2Manager.shared.generateIdentity() -Once an identity is generated, the advertising token (UID2 token) that you would send to the bid stream will be available upon the successful completion of the generateIdentity function. +When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: (**GWH_SW again... existing copy said function. We are going to method throughout?**) (**GWH_SW also, not sure we need to repeat the same call again, two next to each other?**) @@ -590,7 +591,7 @@ UID2Manager.shared.generateIdentity() -The only exception to this is if the following function returns a status of `OPT_OUT`, which means that the DII has opted out of UID2 and no identity/token should be generated for it. (**GWH_SW should UID2Manager.shared.identityStatus below have ()?**) +The only exception to this is if the following function returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it. (**GWH_SW should UID2Manager.shared.identityStatus (Android) below have ()?**) @@ -609,7 +610,7 @@ UID2Manager.shared.identityStatus -The best way to determine if DII is required by the UID2 mobile SDKs is to always call the following function on app startup/resumption: +The best way to determine if DII is required by the UID2 mobile SDKs is to always call the following function when the app starts up or resumes: @@ -630,6 +631,11 @@ UID2Manager.shared.getAdvertisingToken() If it returns `null`, you'll need to call the following function and pass DII into it again. +(**GWH__SW instead of the above, the below is what I'd like to say, and lose this extra set of tabs. There's too much repetition I think:**) + +**If `getAdvertisingToken()` returns `null`, you'll need to generate a new token: pass the DII into a call to the `generateIdentity()` method again.** + + @@ -649,6 +655,8 @@ UID2Manager.shared.generateIdentity() ## Opt-Out Handling +(**GWH note: reviewed this doc up to this point. Rest is partially unreviewed (and the below needs fixing).**) + If the DII provided to the @@ -693,7 +701,7 @@ In this case you should avoid repeatedly making `generateIdentity()` calls again ## Enable Logging -The UID2 mobile SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging by: +The UID2 mobile SDK can generate logs, which could help debugging any issues during UID2 integration work. To enable logging, do the following: @@ -711,7 +719,7 @@ UID2Manager.init( ```swift UID2Settings.shared.isLoggingEnabled = true -// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access is not read. +// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Changes made to settings after first access are not read. ``` @@ -719,7 +727,7 @@ UID2Settings.shared.isLoggingEnabled = true ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration -If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile app. Refer to the Plugin guides on how to install it into your apps: +If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Server-Side Integration Guide for Mobile](integration-mobile-server-side.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: - [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) - [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) diff --git a/docs/guides/integration-prebid-client-side.md b/docs/guides/integration-prebid-client-side.md index 69f3fbef3..68954bf13 100644 --- a/docs/guides/integration-prebid-client-side.md +++ b/docs/guides/integration-prebid-client-side.md @@ -60,7 +60,7 @@ Complete the UID2 account setup by following the steps described in the [Account Only root-level domains are required for account setup. For example, if you're going to use UID2 with Prebid.js on example.com, shop.example.com, and example.org, you only need to provide the domain names example.com and example.org. ::: -When account setup is complete, you'll receive a public key and subscription ID. These values are unique to you, and you'll use them to configure the UID2 module. For details, see [Subscription ID and Public Key](../getting-started/gs-credentials.md#subscription-id-and-public-key). +When account setup is complete, you'll receive a public key and Subscription ID. These values are unique to you, and you'll use them to configure the UID2 module. For details, see [Subscription ID and Public Key](../getting-started/gs-credentials.md#subscription-id-and-public-key). ### Add Prebid.js to Your Site @@ -76,7 +76,7 @@ To make sure that the UID2 module is installed, find the string `uid2IdSystem` i ### Configure the UID2 Module -To configure the UID2 module, call `pbjs.setConfig` with an object containing the **public key** and **subscription ID** that you received during account setup, as well as the user's hashed or unhashed email address or phone number. +To configure the UID2 module, call `pbjs.setConfig` with an object containing the **public key** and **Subscription ID** that you received during account setup, as well as the user's hashed or unhashed email address or phone number. Once it's configured, the UID2 module generates a UID2 token for the user and stores it in the user's browser. The module automatically refreshes the token as needed as long as your site is open in the user's browser. @@ -116,7 +116,7 @@ const baseConfig = { ``` :::note -This example assumes that you're using the UID2 production environment. During integration testing, use the UID2 integration environment by setting `params.uid2ApiBase` to `'https://operator-integ.uidapi.com'`. Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different **subscription ID** and **public key** values. +This example assumes that you're using the UID2 production environment. During integration testing, use the UID2 integration environment by setting `params.uid2ApiBase` to `'https://operator-integ.uidapi.com'`. Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different **Subscription ID** and **public key** values. ::: ## Storing the UID2 Token in the Browser @@ -183,9 +183,9 @@ To check that the UID2 module has successfully generated a UID2 token, call `pbj If there are problems with the integration, here are some steps you can take: - Check the browser console logs. -- Check the values for **subscription ID** and **public key**: +- Check the values for **Subscription ID** and **public key**: - Make sure they are exactly the same values that you received from the UID2 team. - - Check that you have the correct values for the environment you're using. You'll have different **subscription ID** and **public key** values for each [environment](../getting-started/gs-environments.md). + - Check that you have the correct values for the environment you're using. You'll have different **Subscription ID** and **public key** values for each [environment](../getting-started/gs-environments.md). - Check that you provided the domain name of the site to the UID2 team during account setup. If needed, to confirm, ask your UID2 contact. - Use the browser developer tools to inspect the API calls to the UID2 service. diff --git a/docs/guides/publisher-client-side.md b/docs/guides/publisher-client-side.md index fdfa93cb8..e8b29990a 100644 --- a/docs/guides/publisher-client-side.md +++ b/docs/guides/publisher-client-side.md @@ -60,7 +60,7 @@ For an example website, see this example: Complete the UID2 account setup by following the steps described in the [Account Setup](../getting-started/gs-account-setup.md) page. As part of the account setup process, you'll need to provide a list of **domain names** for the sites that you'll be using with this UID2 SDK for JavaScript. -When account setup is complete, you'll receive a **public key** and **subscription ID**. These values are unique to you, and you'll use them to configure the UID2 module. +When account setup is complete, you'll receive a **public key** and **Subscription ID**. These values are unique to you, and you'll use them to configure the UID2 module. :::tip Only root-level domains are required for account setup. For example, if you're going to use UID2 SDK for JavaScript on example.com, shop.example.com, and example.org, you only need to provide the domain names example.com and example.org. @@ -117,7 +117,7 @@ __uid2.init({ }); ``` :::note -Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different **subscription ID** and **public key** values. +Tokens from the UID2 integration environment are not valid for passing to the bid stream. For the integration environment, you will have different **Subscription ID** and **public key** values. ::: ### Optional: Reduce Latency by Setting the API Base URL for the Production Environment @@ -136,12 +136,12 @@ __uid2.init({ UID2 provides the publisher with the following values required to use the client-side token generation feature: -* A subscription ID +* A Subscription ID * A public key You'll have one set of these values for your publisher testing environment, and a separate set for your production environment. -To configure the SDK, call one of the following methods, with an object containing the **public key** and **subscription ID** that you received during account setup, as well as the user's hashed or unhashed DII (email address or phone number): +To configure the SDK, call one of the following methods, with an object containing the **public key** and **Subscription ID** that you received during account setup, as well as the user's hashed or unhashed DII (email address or phone number): * `__uid2.setIdentityFromEmail` * `__uid2.setIdentityFromEmailHash` diff --git a/docs/ref-info/glossary-uid.md b/docs/ref-info/glossary-uid.md index bf83199e5..6d7fefe55 100644 --- a/docs/ref-info/glossary-uid.md +++ b/docs/ref-info/glossary-uid.md @@ -336,7 +336,7 @@ import Link from '@docusaurus/Link';
SSO is an acronym for Single sign-on. SSO allows a user to log in with the same credentials (usually, but not always, ID and password) to one of several software systems, such as apps or websites. SSO allows the user to log in once to multiple applications or sites using one set of credentials. With SSO, websites/apps do not have to maintain their own authentication systems.
Subscription ID
-
For server-side publisher integrations, the subscription ID is one of the two values issued to publishers as their UID2 credentials. For details, see Subscription ID and Public Key.
+
For server-side publisher integrations, the Subscription ID is one of the two values issued to publishers as their UID2 credentials. For details, see Subscription ID and Public Key.
diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 9f7331aaf..d8b21520d 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -149,11 +149,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__ figure out more exact link, add fragment to link**) #### setIdentity() -Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). (**GWH__ figure out more exact link**) +Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link, add fragment to link**) #### resetIdentity() diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index b6e753eef..d30efa90e 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -148,11 +148,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link. Also verify which function should link to which doc.**) +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__ figure out more exact link, add fragment to link**) #### setIdentity() -Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). (**GWH__ figure out more exact link**) +Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link, add fragment to link**) #### resetIdentity() diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-prebid-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-prebid-client-side.md index c98d3b530..0e6a244ff 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-prebid-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-prebid-client-side.md @@ -116,7 +116,7 @@ const baseConfig = { ``` :::note -この例では、UID2 本番環境を使用することを想定しています。インテグレーションテストでは、`params.uid2ApiBase` を `'https://operator-integ.uidapi.com'` に設定して UID2 テスト環境を使用します。UID2 テスト環境のトークンはビッドストリームに渡すには無効です。テスト環境では、**subscription ID** と **public key** の値が異なります。 +この例では、UID2 本番環境を使用することを想定しています。インテグレーションテストでは、`params.uid2ApiBase` を `'https://operator-integ.uidapi.com'` に設定して UID2 テスト環境を使用します。UID2 テスト環境のトークンはビッドストリームに渡すには無効です。テスト環境では、**Subscription ID** と **public key** の値が異なります。 ::: ## Storing the UID2 Token in the Browser diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md index f08eabb35..4ee768ad4 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md @@ -144,7 +144,7 @@ UID2 は、Client-Side のトークン生成機能を使用するために必要 パブリッシャーのテスト環境用に 1 セット、本番環境用に別のセットを用意します。 -SDK を設定するには、アカウントセットアップ時に受け取った **public key** と **subscription ID**、およびユーザーのハッシュ化またはハッシュ化していない [DII](../ref-info/glossary-uid.md#gl-dii)(メールアドレスまたは電話番号) を含むオブジェクトを指定して、以下のメソッドのいずれかを呼び出します: +SDK を設定するには、アカウントセットアップ時に受け取った **public key** と **Subscription ID**、およびユーザーのハッシュ化またはハッシュ化していない [DII](../ref-info/glossary-uid.md#gl-dii)(メールアドレスまたは電話番号) を含むオブジェクトを指定して、以下のメソッドのいずれかを呼び出します: * `__uid2.setIdentityFromEmail` * `__uid2.setIdentityFromEmailHash` From 31c76061f30aba6170ffd503757caaa9ee07e0e9 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Wed, 8 May 2024 18:28:24 -0400 Subject: [PATCH 07/47] additional updates --- .../integration-mobile-client-server.png | Bin 0 -> 421719 bytes .../integration-mobile-client-server.pptx | Bin 0 -> 168927 bytes docs/guides/integration-javascript.md | 2 +- .../integration-mobile-client-server.md | 76 +++++++----------- docs/guides/integration-mobile-client-side.md | 7 +- docs/guides/integration-mobile-overview.md | 8 +- docs/guides/publisher-client-side.md | 2 +- docs/guides/summary-guides.md | 13 +-- docs/overviews/overview-publishers.md | 5 +- 9 files changed, 46 insertions(+), 67 deletions(-) create mode 100644 docs/guides/images/integration-mobile-client-server.png create mode 100644 docs/guides/images/resource/integration-mobile-client-server.pptx diff --git a/docs/guides/images/integration-mobile-client-server.png b/docs/guides/images/integration-mobile-client-server.png new file mode 100644 index 0000000000000000000000000000000000000000..360191bdd2539c6b11c5372f9130098d02862a8c GIT binary patch literal 421719 zcmce;WmHsA+dqtf3P?yvBOx8qATc7{lG4r4-Hn1EEg)S=J9IY#(kB2*+KBy=fBQ6(g#XWB?ePdr{c1OKukv04cJ zK(Uk5a704FXnXkmD3%d}82saNCn-6x=bOkc@R9hVc`~?>klr9ki3+Q@rR>hRx{-{X z9UdK6DIbi*8RK2ddluLD(f^J|qWFO%*!H{35JP#2kl2UVS>9B(gW^M?7)Epcbm`&u{n0KU>8{vE^jP*ai0?MIvlf-Xc zeEpwac7JeCUjN@uJ5pn_{O?EKyx5SW*8ZRCg1-(#N!I+I>%K{$in4q4e?H7BLAgZv ze?Dv%A^KPBfA9F|5=n4C=>OdAn-_oiu>b$P;keMoNB>!h6g_4Za%XfF%~>H8)mA7M z4v`hrdnTlEjlRnN-n-e#dCw?UjhTa+A{Tn-l&Iv7@XbRcE47pMd4c~dF$>#&pI)0i zA`NEPTIAIr6g%XfsnMuUrxq&trecV*t1Ev=?|{T$r^PUYA?eV~gtGN9K_XE*rfp&m z%-z5Adse8hB9{v(v&qI1wy~Je_U5C4gcz4n9+`(*V9_8e{u?-Vm9;UdU!GKJrN*!l z)ULbRzpbX|PBrLj7j{;E+|69I;&k%@{n)7M*9#jhuD}Cr9^qLY?{3wx%EOL8St3$0 zY(tS6^DDZqj|*OVma~Mw>hR|mQslztq^ykJOfZvz4cy#5&m@c$P)z#Ycg#XaZr#5& zwBeFrPBhYiVcb#kg}Nb^ z?LHZ~DlKg0w6BS&onDY(n^AF2ipz@XM{=mlktI%yr!7Jb$VEmt58a z7p7fHr%Ip3zt2$N;4e#P8rHl}%A`FbPMV!ep5xUKn$<-{Dwm?9?h*%Yt*ZnH!LrN{ zLR23!41;==_4sYR!Cv|JBg>IEh?tZt&HLnC`W_?r8b#HO#Xsb%LJC@5cPgX2mv`hm zrS=Ms(#8j${VEy~)2TyK9lJc|S}FZ5#-e9Y`__dFv7^=?^ey502XV{@=z2{+Xro5s zu^S$050ROR$5FM0q|8eQt5imcAwT?fLY`qq^LxY#YIl7CMrdfTDAr>AINuk5;7ULJopQmQ<2c#&dwPJ-Z&lqX$q8o@nR#< z8Uli~BSPmrs7X2Sz)q@6x?A7I;`i|q>tN5B92_~Q$Wi@U_`4eQL{jc$>(;sbt_l}- zKH&)8GsPxZuQF+y(o`-j$4QsG1Z8ArmC>rj^BzfT@TPwxVGUHUJy9283{PCasq;=a zyPS?>3>ul(gI7W_zt;Pfrzwj$i+)2s46Qe{zekTL389mP(}jrJND10n_ZiN#7?y=@ z(-+(Sf)U;M;Dh}Kmcev=@{4x0)l;LuHtk(G{A)YP;yCc_;B-mKy;!NsruzO8r`!x) zba%F|=yQ*-0ULK1`>*>F4`U)f+fmAsi+F}&g(Xp4W=q%A(hE02_qXUO__bvz0e$ovA+hgM1&H*?!W0(&5tfqey^yyPRtBYFSYJ z<}7eM%Oa0Ao;tL^Rq3Yw&g4ge>ZC$;tX#odRM2!1Z_P@NJz_g;>gn_8Pq?ub^*G>s zG~egjZ&mZuy5HRzHPo#0B4?w!d8Ni=Cq2tn?f96V z=I{4yEj)z*CNc7>s-=D3$Yj=ijrZ?Y*10DYRV`93QKab#6zl?iQS^%HO@7$kA+V$K zju?TXWiqfQ`1>iJ3GzmNHl!_X8;H9VYbd3NiT9}w(OAJ@HCt5VV*89=Q8f-4Y*Uub14jYoqMq;m`6q`nojB7Oy{O5 z`nJO{DBxTUJ6a?NQoK5u*d`xW0RL8$-N}m*W^yeZ3R>v1l zhY9HsYq_CP-_eD~I5ks*EQnJko4)d7B)V53HWiZTnQWh)2Ad>b;2q!T6;ZITZ&KRM zO^CP{2!buai4NP7KhKG`pIOT+)oj}~e<;0Qi^WGl&s-we%>GIgW*j<2?VLE5{U{`3 zc=>o}`B-sbl}0c(kcTH_H7+*u5}usP{*L?dtIfr^$lKYo&G#1DsaZ6EC;RC|(BE_Gqi>BFs+C^Lx1uM~6Kq&>4GDty<%~AXBgo_IzyLm-5Z1`JQ zM%oZ+$BBWh2jRrM6?&x$?a-@7UUvt{g#0Q6VeiSgcl$Q(Xt{^~?Lv(;IS(MtT&>C( z9=FNAkQixV0$>*E%uvw%^y<D5y;}z<=o78$Ex{&hYQwYl+LLzJTX9F`RFHeqpSjKhq+BY*++)}C7vBF=fisft@uElw##9WXN z*7!x*ygv=PqdM*}Q7T@M-;T)$EpEtR71^rK$QWVC{m<4V-gsG;m3Gtin=L8b9K8I5<2q48!|F$3s$G`+-{P?I! z8^c&-@ql)~`?ssStLIcg-LrT$5j|d40L^S7!*aef4$T?Wjz#R(I55FrU`rb=f9H+s zm%WvaE!ho)Sv1sA#7Lyg$=jQ75b1L#CvdVyB*#S>w(oKpQa%YE!-nNh^fKJA_h^*A z4cZHm?qV)g)>-)IA>WTIQ`08#-0?mu^KB zDf9m!1912sAhl^|r^I`)z*{>rwIj!@>kzW-eo@Y(d%4KVbT+32Tu|p+aD%`rg0!_i? zhR2ciEt~i52OAx}BwD@s!QXu$<` z8aiM33|f3tQ?Y=0%@p;&j_JG z`si;p>(Wl(<8kBktUc(wM$>jJrG+UuQQAWu{r;9N)s@HOmD{7@1+~y%u=>k6Ynd#Q z@GBFFUYKIwm<1afFB^i=cIaE_jTs^B$r(GmHJU0ByeUx3+IEyDJxUV(9zP4jxb~n< zXUPFw9C1Y(%6blcpcQ&Qigh`~L0Lq@B{DWT&T|vT3`m(0V17}*59E2IY?qC{TG zi020>_EOv_xGdJ$s&aI&rjIRF(M{3W+MwsSuZN3tSQI@P5=I;ap{WZnXHUS(HTnTa zXan^v!sIiDhutaiq$cR}!;bmpF5CUlMwCx#z2<-DnhuBuBA2*%^dL`v1V!4>)Yjpo zGyXhE_1E)KYc&qY^*X1I-3Tt_$J-l(XXsR0+bjDpB9eZdxR$ zDi*_}(@+GJ=Y?lEu~al@O;O2eVaA}BSP*Nk;?7Jt7Nk_PeV1vnf;|u0Y+HjQBsy(7BvppgT-=#->LOtviX3tri4d1)Lw{frj$g3=8) z!rFG1BoZ=eDMNj$cT~!m8obU}na?lgIBS2`Hdg4Us3ZAsbJ#@o6&YnW)F0uB;e`YE zTy89m`ao~&^zUUH{=hnDXHL54$9D>o`)O?S1mjFNl-VxI8BdxM7Rxb=uZ&}_XGjxo?598G=r%=l_KqTxEhLo zYy~@+p||RrgM2$j^pnIoc}YUab%j~eTeG@}!#z+T$fvfJK4}I^(ykD3rv!*mU`L6Q zxJCL#W{x?y){z^YEVk&k=Z2LDcD#*VP4Mp*Li}RZ{-KwfZ$L3#o6e?cDp}M7y)&lu z$pdpC?o=uw4|6`IkKv4p)#Tq>73?s?)}6Z*EDf_KE>ZH&CcyEjo&6;ypE35 z3+ko9!6R!1L`CC0RrZXKX4LPy)S`0hixB%j1u3Z;)fXTJHQ_LANe1YuJP2BM)yU*70Dp*ECed@Mp+%<~xmxQ=Oo&0-gFpE*{ng@>egqER;9@e>{`U16t zosui$O8FUpS&xMu=|nEvS5c*b@kAxpsNAKSF&{*;vHB zU2!n2V{M>Qo?xz{)!Yxx? zl6c`<`}`?8_W>hiZk{eAH-;*apFX&KBxcYI&qY-S?Pj=l3Um#`@G}4yN89Z16=a|- zKZS4SX$5r-c8KS^s*3$0tJkV@4@4dgO8)DYdk#7(T;Vi9@w*vy;~OFGd-9VX-JTFf zpWC8Bvbojyk2rz>#z>uk1PZ|k5s1d8PISzo-vEf_ zl_2T*E~7%jcIx5ZCvp#OHZBeiE+QT;9`(=_e)(#Y3)AqrAeJn|3;|W{zTN~CUT5l( zJ7HJT&`{47>f7WPfa6|yee}yrJQzJj>aXGWlhz3)qK;c0d8o0)V0cWr`^p<%_cJ8! z&_s!Y)Kd_}X0>%D%$3zchhr z*bbS0-`6;yunK27KaR$JiLX}VjBkT;0&!gAYW;+q@h2~{ z>S80?bGv&S;wvXtq2Izj4cC`=VY1=NQNFv2W0kaK_E-Nn!BQFymO8`@${P)qvNv7z zD%jO{J*YLSPtdM9qL;jFP5|}xx{plGD{_sF!x~_O!&6Fg!_ifp0c5`x*40awGOO5AeGBMac{#g~3)ZhX*PRjezw$t&#DP7a7(&$4+p&>rM<5r@3t z7?Dw{bMd+l`jMpErD4bQz0c19+q9YB3>acDhaPbnv6a$Syi$6<3q85}sBJ@7d)C06 zEQh#h%q&QQ1c2Av`%gHv_{)K1 zd<^XkEyy!V60*G83)cYTPX{~xj+-NLmLnPb#MI@~dF$KRo5|c!t~zx#(|5%Xdt@z4 z{G;ZWf%9QivoE+KJm$fB743%C<;2q#~@B|CCUpnkq8=Zp{&3 zxiC`f)?RphN(I?IIp>?|$^V>T&-7G_J&G}(0{^B)?)*eHk&N1#BouAmsTUvp>u3t6 zh5T(HbrFRd1}Or{&fzTcGhRIj2rOd4HrL|h$qnPs@}t$>8@Ka95i=rfxYbhyp_04_ zYlXo-OUZCV!09WD2s=Bz-S z$*5{E`MEZHVafea(twUVywNi+KO8ls+HWnR}RONqhKDr(C^W zFg_@KO59wP!(qpJL}JE)fS)rin?q^fQqZ;H!i|si*y0gE6n1-7l>JlWNp&vQcUtGK zGcAa26n@5NS(zdZCx!G5fJD6#{Mwa@;%G6I!)k_@9!11n&u2%fimIoY2ngCk9`u96GB&TJdHTz-l0DSsBvL~`- zXG<%E4UK8zuq83v&!XOM^r4h7%{u4ZS~2z^y+GJJ(LiE%D+`dbs242b1X=RbV{mFT*hFb$F*dg>! zGR_FEh=^3rm^mxmHuq~Ym=BG;4vrO-ri{Jxl*alZ)2>s__)m~-p9#`6OZ%lG1GKEj zsi}R<4bGXH^Bf9*p{8Wo(oUimEsLy-s$=T)RFMy_5vp5w^k)6Q)I9YSZ0WcQd|f}Y zF84nD8>;HS=pLH=dLN}+V-2$(pyXwAFSYDN0i==F84#LbvCF3>E@i@zlw;3SpOh*g zO_)eDw#Q_tIyUK^6;SZ?J*ONMz))UJ_iFldFaS9I43a=@ow*7}UYe9kWt5E%ZMkj} z=?L5*$aFOwXA=_XrLbGRsP)m{z+l76aYxs<3>G90q9RZl-L^YJ69hbv=DzX4c2WTa zQtzX22-$lmY2YQ;0E+kYTB{UU)4uNPcK_sTE}%9uI)nxzy@0*S5j<0ecJr{le6hs=jeNyA1t!}}2L z$$X&1JFe?XF{*%;0w|1fT%D13UApjZmj+(&1#)i-0lKijRr5!n_t!O~0fsYPRZ%n$ z&8Mo~8KhO_zT|HNI31vkG*TJuYprWTos%_rZ>XinaY&eT=NG&}@?WFxc&{Z(K<5So zj-`oC{USu;@ko%@!V$*@Gj6UU^bJDD$z!rkqHkIrsf~`0d7RVmn2hxc+>9H5k6)fB z;5#QfMVZ9*yubCX6+}fg2}f+j-Xc!+sCeguzCN*5@59E(ohO-_pg44E8so0XvvvBN zM|5R^UN95Yd2rX5yuvq@&`PTM!uS9!Y0P8fI%h_~O zi>x1iBu1etG80u)mCZS46U?0)5K*vQTd}Tn)B3F37I1?@pf5JUnUpF74n1)G+_q!A zQ<(DBiXl25dzwpZ?&qEm;&~ll67&7kK-s)Ne$t94Rqv~r6#@{Hv)Zj5kvd|v%^m^v z(kLgdxy@0uj>;fV+7YL$T9Si>z%0WdTaN6^_0`=U50G>WjZeRIMmz9!fpPINzS^{< z5DcnxrC)5>gAv!`= zWJONv7_u|vQxiaY@43FRn)qJhQ*R4SY{x}t&RY%>6@*5knjZU!nh z41pzuy}xy2hM8s5Wc-;4kZ})hb(;g)FEfi?HA+1A7*Kc^i;D+2quqVfI3C@p;i|T8 z9Y;lJwJO{-e9Om2-*M2JjtPWf`g-mm`Fh^I0egWaMpQHpLh*&035tUe|JpM%xdV!M zU^_s=0gs?1SMLhpGdFE`T;9EuT~vD0cE8o>tD2g2Y6I-k%L#r7_vLoM(aAGQqnWGm zDy6ZdMN853l&WuRGDIAq`34GoVfaIsfJzy|sYNXBiE zR|k6NUb%p^vo{*L9GS7$+v>IfAZ)pBCKejwjT!-^_?ddtzfLR-MRSXxPFJxpxAWg7 zg7au*L{^ijgP7@vu-Wn0{+w}7mC&iM8Ak9#Za`?1U!N%RlGjW>SfI^U8LQMgC`a9K z_jTlE^|B+;;Jfu;%^bQbdCSNEmS{bG(1x~pGGhE%`_-ap%OLa-CxB*=3crVzmSXm5 zNd}A7f7e4DCdO9kN%crr$W6wsy-j9rH597I8J2E*XWNc;Ej~c@fyfS|c7ehh!@US? z2bo=MZpO-yDzpct6!f1^K}u#Y)e1oxw)s_#H_Q}afJVw!M~2O60$fS(oP+T!D1({rLA3)&^sgZ|1x2Zw2P$ZMg*@xbBs~RI z=md$0TtZRb|D8Wy{e?taPD@R+Fu_&B>jFasfY{EEw-=ht4hZibl%=Pa8o*8hPqlP~ z8R0;kPo$xCWhaAiLW8-yZ`q-zlfVH!Hy!p1~0p`;`X|1tXdbd&uOl3lLy06?R zN#ag!NWg<{gIAK(PFWf5x1F=U4aqp3<(F{VPo)z7Kn_rw|_C2!Gxu>6m;9hhHnNDFyH_4eTvzJJRxOvfc@!TG4u33GFe;k9 zThA2F09PV4G+f~gJxjoH4~?qS4fV zI;{YktyH7mcy(N#ExAOqj~erZ(bA~!!*jxN?BA6~D~p{q7Tv)LEDc8H|Bf4nwv7VD z6Jn`=#Kl?fzIrg@?rDTyR)9@P)?8ggGzh#HHg;yz^a2OU>bS_NwL`>Br|X^@HC=CPbopRs+T5j}Fjw|>oex9-p)VYd%@150z-(qDpJ5W>wkX)950oYTX%pLCnM*3< zL+n-hgQBA!P2GVJPQlDZ0!gkN;ktI>I%7ucFVypTz>>hm1HKN)NXJWHB#U{-b18Rj zemQ|%=YbDe3r8oq@#Zf{P+Dpl*>gb!TU&9eB4-g(Q~_e=Vr(SG<(cb- zzKzbSDnl2dwXuFWm^8qB5@j%8TY^$tPD_J5Z4l>cR-#w^<>rnKQ2!RVjmbr+5~mzI zPL4djdHYI);62^r{B~KBLjSqWo=Z>(fHV!N+#uXHZ1vG^uY->6#`#FPkRC?Uck*{9 zdjp`$eNqVr^2Q(QfBpxLeDLw*WP~yu65~--M;?x4L+w&lsgjwfG;XzyP@tlJCO{Iq zGOQc@=(K-I`Q6WA!i0L8E3XDUCET}TZ-G7o^vNO(ffQREu85;nBY>=;wG2%+qLl8g zr-hHDca7I4jyE0o2@~<1I~Y%BUPi73_KGjYr~+gWCi-WJy3`5E@THKEh?;s`PM-4D zSrP>!1CSBAjRp_cqm`E^?zDw$-=XEaq@p3Em@A_y<&^y4hMbV z@B#7zV+1w%xWBj4iJyWVfXD@b>X?S;bM~?a6$rFzpgAjP4|OFm^F7Fr;x_02teIA@ za>^M2>qKbg^Y?D*QbTbfo@(8L5l0v}t{t}t&mQ#Y2R0p|)rK?)rhA?I-=0S0oBZvlbr~30Pvu6;tj_IVB@t~HEfwH= zuFJ|UM~tmp0@Vd9vMb7uexmf|pNdDbS38v;)%AvvA>FEXEzOc<6Xi9^x~!xzqC_1$ zU4I-&Q+hc{u>u8ebI0I*%0L(fBkSoH>K^7T5V^tK{yqFD2{uevOYkclqJROCT-#Ps zxTXx$hZ(paKtZoHS<55qmGPPy<*B>uy~p^WTtKV!R|Mg&i4Yq+xMXN3zq6AsGscm0Pbe>gE+E~##;_}+;P&n4Gs$c+n}wuUQc}q zLxpXpWYIXKlImy=wM8*`S0(-7`ZB!G#0Sa>P|ys|9yez74&K$p{>6;^O$YSDmKaQ? zUEF^dsAdrSDiXSNa$8dFXl8Ks7lX-}^v44N*;qEUYKew#KUEL%H@dCrBzL;<@nvh;J z=%QF540zb}^r2u=DyoEUf-79Mew(fFGR_qpTi&9VCFAk~gh`>Xj9f#}eP<+Qw!%=Q zSlBSVpv=Hk2)yb_pqh+EzK$Bz4A~_P4O)s-Ex^aYFAoQT$Aje!q&mQo&vWBBDBqTK zUVt`{f>08CgG->l2K&|;wxG%tj#<5W*nO^TtnpT$Eq!4Q5;;>$F!Lv+yP;c3mf)3) zonJWQ&XpB>Rfixl;MC)m?>d2J3l31c78EpXfwLH~Fv+19kKevLpV=} zfKK|Lov3r!ez#|C@S4YhM#wDI!x#Q(%FC?*yx?`SeKc9%Ayq`5xqP+3$|5qx3CcNV zhl$izy;;G~Zqn=A%6_E%&B{u`f`zD{g1m(EVl_425dVO7<|WV_sol+^M`8;vqV}UTxCVyIMUMCuYLUuUJ7ojGG)D2 z8b{~bcSf@xn$C8d!Gh!rk}bpz`nwLip=%BS<;Y1Km7@b)bcFNnq8o+X;q2x|i9W=~ zdC;l@!x|G`CVJHL{>MJ(WcMBiW;<<9y=ChzuB8O*c1BqkzuTw_g-qe#xSyu;130#5 z=Wzvii3Yo1<-`$uhnLUafL<}Rqq_}k#^Lw!acW$p_O2}&Z?(P3{tgvb7>$*})4xek z)g3Ik{^57ahz6N~?fg7Hl-8C12oyZ@-7gY+jk@g~+~Wtb>bB!;r3X}q+mbJJlQZu+7YHV31S_Z!;*$4_V6vD@_2Cxab0j@ui7a-0+dehK zIq6c8P-fxnFu9mzM-yoUUwCm^U1qVbFEpp)H?p^~`G)~mdDyQ>NB2V3_ct%fiIm0B z7o$9(;GMuq?~63w{iHW~W_Q0r{0C+Ugcdg=ZyFwL?y}whYH+x$_fUX^_S^jWcHgx) zwX1a@O-ftk)6UIMjZ627yW4riG%t6(NXBiC;Wdx@7_kn~3`=}Wj%(pZD&y}jPwvl& zyW>Cs@HtDJ0&q(u*Wwvao_c!}5i87%KZ{0~mDTnZw}VG`7YH6?bID$SlC>!GuGh;=WIX&s$) zVFi+MJWYSU-o78JCIfk=`#T#v%muC(Me`w@XlCnTh`F%<;|2z|Pn@!G=MFz)4XUEb z`nI zzhxV@?1=&E04br|lLMUJi_JB2hxye){|qK(ycPjf z+}2hgc!tr4T}r#&>FER$+5BEDKH2ghuy8oPhPB7a0b(6l9Uo0$E!;T6Lf#(((QNCg zpj#n{*OXD2tMy1>TluWU2`bIrDbY1sCOI)F#5P8Xk~8as4M28R@h=7YlLgSbgE)Ha zMze${TmX(h*IS-}YYbY$FB3jbr2VR!H!nEdmI9og)%Rz_3?r44U2llutld&fI(j*~#dk zX7R6Q|FBD#MgE&vmqBTVCRE_sK|gA-F-)L3%eJ=<=*iNyK`u_#EspdjL{W zrH27!4}+tlov+kN#GSNZ;=i*O)s9Tx_?PvfNRK;1@VolNN8LYjm-nOxtnc@6q=s+m zQk!fCp;kay=-jbXAh>k^L5#I{*TL;7Z7s7O;UJB+4u}rn#zz->L2}!j8@Hf{6=SD( z`{M{k1!CIBxbstoMkU;C(JLZ$2M8ZtL?2CX zEHE>G>krgo0ikbPGY%fit)ry*?V{>4T!$4a0+bae_VefWGuIL(tJ{n(L2l5;Z3nkV zhrOZqHmsYP&G^&PNFP@WWr>}Y2AG9c1#{<%$qNvu0*e0e$V{#yNPiePr%`XAM3rx8 zjO6^D>d&o5v-31D(i0DKW*MwD(_{xJ%0l>oLH~G>k*=+ZmtsVJ|I0hM7!5wx?~3xyol#2X zWUP>ty(f)9<8`F&ZVlH7JT_)8A@z>$pJe!lpU6a?&MQJ1oEgCL+Qbj4g4u`~-v5l4 zERjfIrxIDf80N-c85Y18S;*e_Qjli_(SE$ya$3=5Cri_ae_E7jqLZXv*T~L~ z5x;1+Rel_pEAEUM;G>AzORQyzzCBa!u&)ndCfoMVCTb~JLP0+u-w=JN%glv^v12~e zzFF@xH+%(!Eso9M*K(Q4f3pjVZsO(Cgh{swA0-~@Lu_=}U=#Z1%?ViRPIPBgtc?wW zx8z40y}`HEjQ#{Zc6ot6qHxxyJwcb) zpi>OFRDb(T0e+0)a9(cOQ)^%%?86O|atZrii->-Q03nwKq(*knHE~JwO@>B=J8oR7 z&VTWegXlN!RGktFfTy729ymiJ0M7L61DlUt2%43Dv=kR|u@>FAEQbzjc- z`YyQ+&V6P4Eghgr99y?P6UDvod-=#1PL?>JO@m+s5u=)Twiw{&($$?Q;Lw^XQAW=5 z2PGWN%Vcr$H+t3agG|GN+A{1x{|Z`}px&sTXD?*DUU^Y*MaefO1ROxK(LSHQ7 z!#15wpbz`AfXJF!3OF<_74uZ*P!M(ndA4!7Gv_9t6O^&)U|t6WU6&iWOr+74MhP>e z45wjDRpkEYsk@`CFa(lVd$lQ>ftz;qh4+^`HI{V#Hp$_w+xEJ+$BcBAi=vhpa~5pn z7W<3xZ+ZDqF)EHgk3Rww{nV3xCg9oBgBuzqy>sPp0N^R&LsaQkC{Sl?w1vu)|MZNA z1wOZ%fenen={;jYnV*MTlT_Eme4hT`V(+O@$p~^drD3{$>EHN^i5~E#vsRAW!&xqA zlVk!zFmFfftEzH_c4P-wzXs?s!o!Cnqp?hZS2U6waDJ?+b0Cn9#{%-Ww}g1&%`Tuj z(S&c;H*{8%K9Q0cCD-SC!vV(#Di>VBCR*)G!Dt!t-ohK@amG+l9jhkDrUx@hHA`ht zmorRxu#P*NHJz`4TxaqasiXcSAe;g?rS=aE^KT~TxD|2SsHi1nR^k@L!V>@d-Fu-~ z1cC!Ltg?R*=xME;lw|w9amMl zI7r=3TEkXtB4_Bgq>ifmfU(69?)?+%A(y)o7tXtZC$qso!~TO%kXmb+y6qeGtmfmP zy{J;2RL>8ps$A?R7U7N*0+W$aRGx5du%=;TvrW-O1=GUL-Z#Aa=X9K$TQ@q<)L%WN zb}jXPt_^YatK*F%11?)#OxFAB(s5_zUsN}>Gb(oa!H%b`rnbU;|L%?gv4{wmIgoi5 zx3Cs556er8Jy0LOEJ$)1xjGz*zWv;1%j)g8tAfr|xYia(D`DSiLgjAWZ=YgA4kl%Q zkxht&V`ZhFC>Hao8Q>O&slHJTAGoQsnhKzDgxv)|z-?8&nZWg)Em41rDCE^7{|Zou zmjBM&!BSU=A1l+B(bdCWUfo1r8A8Ne6g}_Bd?9F{pr30x>cpu!gv{KFVJWzE@vuo-6;d$aU=<5mM^5{8TLRZ#DnBCM-xUZ*+-|s|c z@#vB9a|VJc<>tkne!#k11S%cF*t*lrq{FXC^=@vcq-^{fM;rT_8}{V4fPiOY!7gIM zX-{^-G?tic^wNW`CcEA&XI?KLF7rDW8G+BHlHhH?hjhfJg;nk% zJ%CWCF<**BpBftj?XqcH2$Bm>KW=3l4trvjQ1O>v#V$m+;-ug$gL=13ti!9_ zBp>q{XzX>rq~aogKMjTz!w-~k{z`t|@)`G#$i3KgaQFJD!W|><%d+|MV~pQFePX;q z)dLTHOu6W`fLHdM{Pl5Ur`Nb(j0smvOl?%2(F*<&TnMIhU@J?5Lv`)G@Gm|F*}3D^ z78H9hw!(eDx_xE~5)+rWx3*yXX-9K2Wmw=Igcrl{Fn$YjgPn2C=uS$sDq-=FAhr?% zSCvDp?d-Jr6~$fZH6)D{%&h?Z)h{CtWEwykSlrlb;)dhT83Abu0XPX3U{nx{iX{f2~9wM+Fwg9B=c&T=0SCCviV z_ZQe4B)vsBU=Rcw45NJEf{fL4 z>|&lTbAoqb*itVGWbh##+b2SwiJ4N8`c@T>0)m{M2})mQ;2M?uafR;pWZ?S z2RQBSRWs<4*j&EMOPI8K+on&2rc~WfqjbECplBWp0h4F89(+JnNEkBU3cRz;-xW}j zhFS)bfa0(cbYa^7i5ctzdhgyR6fo%gkX!~~CyfM{V8_!t|RZG|3l@Z?Z)qSqyH>Z7itB+q=p3_v9vNQf$nBLfq z<9_6`E)UmQ*aSJdv6TQyscXaefx9r&6@u{K7sk^Gk3c}*6-VHi=yMKRY3#(SN-zQg zmLK;s_gO7$#fz`eR8Q7;k?*W%OU~DWMs0#WJhqocYP+;zYU^}NU@!O#Ru?Dq`CYoa zqDqhDbZ5YKEMH2Gnrdt?ZQkVdUrMEI?h)=&c-GQx!4@^#-`Cp^{mkcfkhEYSRzak^ zUS{MBjiP#T-hf!ZoBL1G=ucJtFv7lO!m)SzlTPz%QGB;6QiNC?lN4;mug5d#7(655 zm30n`0b+3uw*fRyLXqq7lfFKZbU%3i->>viz^!>9Hv$CZfaf;JV3y+V&PZ~g|J^5U zUx#SLze}N6d8z&pV2H0WIdEkziu#W-`Ij`J0AC7f0<1Y9emzAlX;@Nt-JKqCG&P&k zr`7l}9`sF);QHiR-}lLt_cP?1wkDu1^rii1z8B(aA=jNXda4Pq#>r3>$$p&&!X2%u zO#+!P8#eG9Ow2`Z(LZFm0JN6QPvUdS_-Zd=6mC85T=6r*!P`Ux%oO+5|4H^O0>&~+ z*X5Bj&pVo|-hxArOn=Z%hLlxt<9LpHO{-64Zr0gcBww}&bMJ<;RFN>PA8oj<9MMZ+ zGbONp2N(6Y{5&8JDt6?p>1z*WbmKT+t)PUs&TRlWm$fdi>3ziST0(W^7{rRqw(KnsHznh*rn#;GV2IF z`rk?-?!kXd;Wc`8`}}a?!jsW8ezoj^8YLM^jex!F%ah8CJk<&_yik`ZwVCPnmU~Jw z)8ps4e&gSsko=3(Rf}mkGAM1WdJBTQi!&NZQ(?4sRp^#gCL(<0=xlchd=x}0(O+K? z>4U7wCtT!YOx&fjF^T71#Ls4Gd0M2&r#XNM=|=3Fx;}}NwmZ55ec2k%?`Ysy6P5Pa ze;9@@`qVSCZa&0FLlwy{fX+8849!nBw%%KTk^;pHGW+; zBi0la6t!eDy}h2+zn0=}euWCJ{xNDjYP%h|R+)>!+6(G>WFr?XAV82Ah@3%Fh#p;_ z57KwD&U0p$NoRI4?A*J|pJs3d(r~?7b|;ToMGi;AVwNoTb?%*okqldzMKT(PdAe)b z^byxBTd9xtUPoi?x#}{O{6ON!p_RznxVH`pDc$U@BzU!P#q@cidP&6wohWG!>**Vc zX>v$|B_-37gzVYT?PiYq`C!*3USuh?Un3!s-_e`#a5CPpu)Sb2FkK)H8fH8!#vEa> zZf;23xL)2J^zOdcO!!3^^0+VO_bdHT3(>IMf6JXv*A+8yybisuA!EH_YPc#BT5J}6 zTEtgZZcAH1rl(ul>l-`Y7?miW-)d$-*zO~29a$Tp&Fj-=YI5Gh+~jmB5Zm_HemDE8 zdENV_0y_0_=I1gtGFzOUyGrI}wGEF}9sOm!>xwt+=8xHkuLVU4o4Q?e*$G~~Lf3g& zgZ1i6SyTM&aR~8fI&Ij?y$UlJUGv6_!{Jzw08(1P<_$b1jFvnl5Uh-oW~p+=&o@ZE z-md!9ig9>eWpB}TT-H8*F>P61`bK|w<^AUc8mCC^SYDwZu9&b6rXx{c*`*{}1*wf0 zQIZG5sy64hTq6bgF^@ALQeqs*BR$(ER(t*_)#NN4S&9a{iOQMKbp_Jb7|Nbi?uHc* z!@u4`lZFx^<)lIKs`_9HVx<0m?0tn-RbLk^-Klg72q@j%B}$5Pcb9ahbSOwSsI+u< zi*$E)ch}qZ`~AM}{SoioF<>wT_nv#s-fPb}*IeuDQ>cjeMGDRn^QJ@6l_O`wB05kj zR!PV1P{qzxMpbd%Am3g+>o(S8E-b*z{}CJ86g!`^cwa+FX-Wpzph&} z&VL7Ks%%vIJX2OS>1jBij-8*(atxaH4Znx3=^M(}MZ;_6mme=!& z#%l%PXPk8JFfG)A%jAgF!_B3 zT8lyzNB=OI#H)r=3%zE6*A6Gc#|^=-gJHz7TR#4!W=ZI?ma}{88(CdVxI02Y!u9aa z?N>o&?>=uQV`xT=>?g7#-hY#^mYS;Z*~#CGbSkg>2EJUJwXQa zRKryiw`EQ1kL9yCo4ZJaa??bih=Uv7i@ESYk)$W8GT7j`?{n3x4i-E#m?CBkPYfj- ztflOfzgzZHd3D*!z7I#n8`C*0;uK6wW1nT_K0sx3Uje|u!rg=5>${2o!QQ`$ic3LV zy4LqUDNw}n@XRJJZ5FT2@_tK(+)*%$6eDO4G1x<8I9m1YeVyW>)huCxyVbcnJa|`x z&FcCdts}5WNohVj*pwgK($xi`?j65Q0aKH7@SXlu*A7$QccpBh5lhLsMYa@8(nRBo zsoE$hDksYiGho}_U6rJQns`&?1X~W+Nv_obCcW=C?{uL|;nAM_1cT258tGw>j zZ~U}Zh47nUX_gNLw?Z5o^GfsPoxi-l)KR{+9GTAu4;a~P(pEA1GPv6FWym}b_xtJf zWk8HfOt7iK3T;u@QAaCW+ivW{dzZFz!R6^1|CFoi0YaBNV$iU@U0ox9S)?Bt8XS}z zhxcCM0{vohNZYH4RlIp5lZ6dudiWp>{^)Z*U8#kVZw4FJL#$a{UwFV;VdXrFvo#z{ zqxtx`-1g6D%5v{)86`jEdQS5LNjw`5UBuG_uP9;76LR=&O=q%p>hz!ROz&4x1ZEqQpoZ zOyDg$2L6`t35&ZuU?ko(*C{Q2Q(fyThF!6mqH?yDXq~6JkOWb0st~S(ZwR{4Pi7OW zol}{(qomsM4b14{3-?Os%zYJcHYzO~6FPj764i!IU?%5qqSULH7Uw#%-tKVm{ zj!i67){fT}C+fT9NP*N=_d}mrLT8K4nES!2`76O;DOq4_A>Q{-H5U&bPO4=2?F+Sm z>0a*zwn|4xLO& z=gv$37F3PBv>&yQl>N|BWuvIDJ-z0ZuuWnzVrAbSFH`4yWIvEf=G*>!lrD_dX#`8r z7Wci%K@YlcAMr`hn@I_Wg_23+vHs^^Sk-vE;8S!l9Z!k|C*AzI%@~!?n4^5WF(GY5 z(Wqgw{g?6bVoRLb=fh!YH9~anBH7V>j(74XN`cy3A;h#5Rvr(el1g8d$5<#bJt-;o z$Pu(dLzx05w>t3o9Zws%ukyJme1s4L-1cwe8B>RL4j*&p8FQ=lI#97hwp%)EW$IVt z3danTbd(y7#SWbM@`)%>lf6y2c3Et+gBr5ploUgp8_zrjDxB&~AVej2^wfedkU}tN zQfis5+7)^F4GH6ydE+_!P=GC9pRcT|A|LpQ7c+nlsDRp# zuShOSPCnb3ev}JjD4Lbt*Gm3{8*8f}_)5<6exlRMBLQcBlfOx!@*1v*0j0Bk{CorF z_Vp$V_ZI{pJKJ~0vjcl+Ea`f_Fqv$=kG%XMMMdc>TbEL@2$-co$33wcx91BI>2DYv zCX2R8%Ej2ojx(B>gXW?co(!F+wJU3VXc5Cm-@Fy*OdrU9}nOG#|mR z-0yT8_7#Nhup*jUIqDV&iXL7~*nrl6;|5}d@-+$#^Kg!lgCx7E&EHREB+ilvxYjdT z06{V&rNEd^DzEF0V3yFJyXpxO8NC>y(Xw9B3&l@7Bt5YzD5J1*KCS*yA*nMWm40r@c6|}<`#}?&Ca`f_xyYl_?5J}DGAzsdEwT8VK47EW`=_R zQG1YHprdlE&sjL^)zgDP1iBc(%26d}hgU5V*?yM9)~lMobiRv1MirtuAJzk_L}xRg zBJe-<28&|}Tz|G8R7p2obNV@W)RC832`YaDD456`2AZFL%r(?AQ;K_I5$)7(m(6L< zlrgu?>t|Ba1G!`0CUh+!F(C|*xas0bbFeSAA86@OH0RPFU0|(lCa7c{NA$*cZnkwz zXqpfDt8f4rLeDc4u!7_Xy)+~*b(lmN7T8qnhPwKXNe(7m?zEaF;G25z_@m8KTs7bE zUh8J9cbKRuc_*UE$tMO)rm~&((Dr&%ql-r+>P8ToVkqNJ0!F^sMzmNoZFv(OQ0lV1 zTEa;?@jk3zosz}%y>)HrY9Gbbr_n0)boFN5mmnJr&GGxbn!Q~ujeNmQ$=k;+GQAsn zGL;gyhkjG#fUSeDgP<&1$NW2)D9?0)T)wo;SCw?PCeuf`2=@7o0^Ncz15G?vG@|i0 zvAf3H=%8FwH@X^{vhNV1MVrEN6Eg7?o>Qt#QJb=JnY-_+gqAWgg$Enr&mV{yysUkZ zpn9kginzBh@`5%q$$EpE;RP|gR95O`e*dn$sypE!2zZpUT&bxTnk#thPPW;Pfu-$t z80;ipDNp2HH{?B#&MKNjw(EuuO{ zuB9~Z(H?p5RA*{Q5-_*@{<});%FkNNoGQVxL^eveH&kMckBc)%s9R3v!WXAKXvOo% zh>4B&*PY3ah1PbpXEr#bd*cRI1Z9oQ)$4@YExx_fa0Yuk3MLuzjO&Zc3P1!1B1#VX z2+a@O4^`a|V3BV1-IZFHcTzFiwiz+o^hESuuf@<`fke6YWC%YG@>6E1OmjuTC~0D| z?>DrJB`J!oPluwYzBI9k#swtuXSZ8WdBI+YTEdBL^KQ6k_jKlJYT*rQD9R-X zdoA^PvvXeAv71I>rh$f%JzX=5ulIFU!=TZNK!8l6QEINCh*YC!@#O&2|QS3OGmEJEs9CW##OBidk1N3rxDAgKHeeG1v zAf#Kz$Elj`{^`?b3KGMANePocIK>WxdvTRvb^s@$Zh3|3FFK=8sev?r&q=bkwYzj(XtT?0m-CQ$NbbGatdl~GzkBC&Vm zJtie35eyi)wPfGpJ&tSfSi$5ucoVRHj=7kPQL4wP-6_|KzgFC7|9xKjypvCTU7~Iv z@FU9h-@U<+Y|mESbi3|Xt}|MC2d5dC0sW)81TYQP)7_EicePp(oFG)w?=;;voohCV z_g~n91t$w%XYsCv2eIg(vpIMrFO9V`uEV{M~Ba<6*aRl4+)F2AsmkY6x zDZyODbKk=fpFN>)IaSR$3}YhT#3zBLqHaHF&v3uN1Kv{=`JUnN5#eE{F^+|i7iNh@ z&{#v%I}Sb5uD?CiN8zVYNTC%cWsB>%x>r3rKIo_ecF2?6Br7O)t**{1W4+u$ zEl~~XfBmYp82kBYhpuHI88t*XfC7qp=zUv2QLtVD*?x;DY=*i3E^jwFk5eH`Mb3(` zEjpQxfgqlCe9(L;Sy+<2UNv8zr6brjgDlf}r~~j@esN{Tv^7DMs<}TNRl))n85kW! zo#o)zLQ{dOG1G^OjJ`TkO%fOeDX?3trDJyYURPh5rB^d8x%=y=oB5Y&Mjd~S@V5}> zl7c8e+RCHzVj(tQT8&)XI203xK{q4e1H5w*AJbY+pp{$+#`ozO!|uG^@-|1vA z@M`GN+Ch*k97ob0NP57oO{aaV*8J*llBaM5b{XlR`}}azP{TRXV_)6?MHO~O!~eHP z>oiW-rUMgCzKzlG1-3q`SP^bE9m;_`@?Z&uG0ud+;T6e`?a4Jgg`v(3QKCO2*lSV1 zm{ZhtAcC@|&V6Ak6D);ee^})v@x{p(tvQNMph{ohiiBPqXkAO9xs%GoT8i2q(5R)P z$in2X7l$^;hw{iJs6NZl&FeJl;9p^Da9h}PR2qvw;6~JPl4D|kLamnE2UGbV& z?T5rG)*f@?xBP{=Tki!IwrHMsJS09ir*Xp zF)&4YGnW=(7GisJ(RIji$&u`G<#ld+tOjKwLs2Cp%DAmDxaGGe4P_0N=MyEr+^uzcp5*<4AHahwGj4Z7 zBc^n0G+!|qR*oiq7!2(`f0j#A2wq*r@ z4cK^*=F>$2nA&}n&eNj?Wu90i_*!bCO|{(<&V7gD2i6miD{6hTr)(th^*qLMA!q!; z(0{_Z?`hroW85Qpep}12?EGChQNE>l&H8<9w764JDUqTR@KR>A!Hql}S5=1Ab84ZG zBuC*Wd7;#MA6*oS#a9(Z)$Z@7zz1@>0TH7J*q9|=XrmVaS>qNIeHm{rU0Zp+U~(I0 z)laf(S&Z$lFf=&GW}3NO^!mr)TK0=8;n=Si2Qkstda^P6#RQ)4{Bs5h*alD(Y~mty z!D>IQ_6nM2f!~)QI_! z4D4sTPO1`>kO+){#;3fSdI@D-ZDuFNhPro>$9EgchdK}~Ip|~OG&1BJhxv3{cY)FVm0xk)UMs#4_-&ZIwTXHeds!D=q z%p>8ix|V}@*Qc8`4Ac(db!yL2S8&)K!wx< zuumcqYggh1laqMfqA{w{jF(BIuiRUI5SOJ(n?A?#st6)wtnrX)qMW`(cFTA1Wo>`tT zK}ZGm`@nZPKuq~I0`qUF82%IwdDl&VazmH$2h){A-{s)Hn)I6UX>P~;%E0O+?#y`r zvyeTz2ay5R82C8dj-5h2Zb&}&BWRp)&mUjHQMkJy={|09-t=X1uPb`+;=t1tSoa7E zzv~PimZxCqfQhKZ$DyMuvK5t-qhE+cleDnA=VT%YQwprqr$uUe&5p|EkHBn&%2k@uvN2((5jCU9Mx<Cr|3iy4Ks$OP5B&V9vu9ZtFpN#opW`R^WZ4Ke!j(i@XzrW(FFSqRE zfLp|aA1b6iO?f;$0dh@2U?raG&*}!Xgq2Fh*)smcy(e|ACKjuYPBDx>;Y8cwl?_jC zu0NhW>^F|itcd^s&$zv2D!zH(d65e-OT<+L?p4&6g2Lxi0W&qpd2n#?BiOVCvjL1O z`e+317sCXy4{!o%<_!t5l8<=}-#0Do7~q^oFAH&q>zJpp^CHA7^27UTmtz9{0x`eV z=X=n0rl3H<+Jm_yHSF-az)sx485P_c_o_dmb+bNGA&O3awVJBzS%PrsW`lrQ(qEOT zaN7yMUh=Y{@o?GUS&C}fKta!Ms@HCpiPQRjXHIJ$m7inw)Od!<)f<_x{xMe;A6zRh3AADp3kTbf=HsrNlm4X zlV|{yC(0-u_WTQOhI^$QR*c;fho|vbS6kdRqQh>w>9t0!ogu7}xGdxsua_zHDIZg_ zSbhVKyY0xSGi!Qfs-6l=u2J_kt%uJNi=IHE6HUUykrgO;0i5;c7UB&bt}!+GwKjrjCH^grP1f-x)t(Y1A#SO&$L2P6+(+F7zz0 zdmbvaGYWhJh;Pd?5uj0qA6CNU8T%0ClWnZZJz9t<#l2Vrc`JtdXh3aETaXjuUjDmy ztTE_gf!q^B-3^DfhbCMuxNA6AW9?N=rIy}z^Jvy8W>`h;CF=q5t=ybnxF|S5@X6&n zJ*+cTrC79|3lY6ML5Mz_`CHJ@S#|j<;{pi?xS;(h&V&GOGejf;nW=W8fW^8>R22sa zDgajYW>B2{ZjsMzsftHim}ZFb?!UbNRAl6Ke}fq4!ESB6ovrsor{8?aZU_{W#>3ab zO@YA+B}|34$b$g5cJfwGLc+;zOMs7P|M05e~Ec%N2lW?()-ssO-Ln3-9!g@O`;9dxsAcUy2jeD|<1 zoC-EQMoL#b;2Iy*A6cVyRS+{3CB^uuR%NE9p|rTPCQ>?{&khe3GDwplhBYvKbvF_? zAmD)RiCSiGJZlq*cG?q&+OwWO9|x3K4Mk%6yN=M4A>56J zC{_4Z>fHce_H@<2Mmqv@;N*O;Bkw9$AOcX6QX)^%&)52x0@yTli+b(!_@|+^r)Sk~ zu%Jkvgc?LswZ8Ik!Pq?>Nj==>Qh|Mh@PAG+g6IS$`>y-;b^Nr2WS5kB*+~kv`e!Ya zjzE4jVj!=p3kRkbobhs`sPbXwtBI6sNc9`%@Lou(0 z;@};YKs`ETjqDNQ{yv~!}%z<`aA))Y#CL*A+>>H@T9T_h5E5tAKJ4zfw*2_Kf z^d+oC@P~JJGaoiG`hYKXdbelv$40mXq%n&Kp@O~KvZP+~-$tI&0#-COSoMtY3h9s_ zoD5vMf=N3frM8VxgCwq_j=)%FP3#Z03jQ$~F}^-ugU4^Hfm;Z!iL&&^ez${N9NC*r z@vj8q-9E@Lk%!yRl1hBl-%053>=ZVm#$UH*jXT{7?);o~drM;?BPe~*l{KE9$y@^B zkAB{GVigfp*`BQy!80aNEEZ5yRd!ADM-d#sLjiu<#L=v71$?<+5bjU6qC`NxtRxt3 z;7o&J(fzdohyl3Fm*!VhUGIBAk(Htk1%^>dz{?Y*hX!6e*5uQK`s!yH#g$~W*aW38 zFiJdWFEBFR_5#h^-pITZ)OMxH>9_5vHJt%vIAWDGt#fmph(qkREWiUh{J3ljQkM23 zC!>CUF>7AMe4(D@Y1HdwHjLIA-M0w>&zzuNE_)Pd(I>=%`0{49Ss5&;(Dm6#5G$LU zC7@WL5|ca4yS$0ejK^1k)Cem$RDxVZaC%QZ7(AQb*-Ol>s4|TpbM^@#jlWZ#3MDk= zq7$=~9~*Nac47UpGucu}31`J-LXYL^|Oi5GTc4 zYKhYnerCe3kC92BSOPXftx?_|h_2Gaz8)eE1SJJP*smrys(@^Opj&?P$7@;1^YfSi zP|6T>s}x+xo(^MiRr-SN^mN4K?(EGVA=(D2w^DJF{=UTmkpPxJ9rPHjP5F)2vun@l zXd}%kuo+&3!$^qkoRV;uedI_G_JnKkLQBC|zHTNqWQNKZzKA=AXlA4J78pP~AnrjcChX3` zV)nEJi-R$p&uR0g1rGl5`FkFl5Kqc%EMG1ndVzgo4}L!uO?ZM*7Tp)E+2sJZ!I1&3HDU0Vq*~3PMP-mwb;tjB>-$iotDYaD2B756Gm!oQw%+^1&_{zx>_JZ5?eLGS9Rbsi z*}XPU1%znTTA3K2+&~4VK7X4pT`%G=L_jp6%iLF+pYiuRJQYYk>dP$jpj+nRL%=G5 zcuT2^=uvbO93zoG)P1$ni9(LGlYd~u9-{;I&)(zb9M?Ng*Xp@>2N>b#%JjUg@AHrJ zD}kjCrQH|b-$fF)`F#Mp#e=))0;v1ng(J7c$K^5;EX3l%L;MdzX$-Jiqm-@%EYML| zbQ#3kJD?&$fE(;SzV6To48%HfPlh7!tc?UHD5)OAwZDC=_>V2S=s*m%yfm4qtAz?t zP@`v=>{S$8Xjay)b7$7d729oJvf?x-k_HD-ecM#v{EvGrJkHovg2r8hctmls1 z$?uacAJ*?*D780(BmtMX z?DAeoKs>iHVlR6#JV}rh6dVFPizD9x!2vkjzQMRlQr%uI#Q#VK?0Jf0=i>u|s1To< zGlfzjC1D)O{W~2mMo*XrJsbKlmHpGl$w=?s{<1?wR?tz9mEVLMby%Vb^B5V5a@xMZ zYEb833S%nI!~dy~HkNu_LLMD5DT}@DzbR|Sq#zI*Yxv94Q-XQ9c_)k(bJ=^b@eUNC z7B^3wd0vA>9x%|sXU<9aD<V|fs3HDq)FgR4?*UkRt>V~#6G*Fgsr1ZeU;NQqUEgR9O%z-<^C+v=KbJXg|~ zM*+siv}^=0xfE(+gcDSva5G7JfuR4xd|owxQb7Qu`3nUh9@5+p`1EUjaPdx}q%AYw zA_T$3>y70PEnve#gZe)t?stMH1_;Q*fI)?YJLgV}kx|&@>U+tH@;7DW=k!`1V%~b# zeV)s`27QTTd*$=&PbR-iCT5oa>segfB~g7w~UG1z68Fr~|{g{$ufvFFysj(+keT&aNegxqA68Rs8xpp>Kp(lW5| zR#o-z2|MUQKs#+OqZ0;u00da9Q+?y3X;Lc*0mm0wOo`&0uW-0=dTmK;1M-zv!v}}) z0|~F=t@2RxT2SjRyA^r$Il{9gLm)#XN~ihZD8U$h9s_rEJt}#|u^7i>lF@IiU`~#d z*dJotRFALek63{&x(L#c2*562VH}-R&M3Ld(N7)s^-cv!{-Mj4G;n{J#-#8?qpTHs zRdk5}8{aQ1w*$D{9KfEqD0*Ml(iaR8j803(SCn0dsK1Gpicku{h!xMrhm;^j*t6v! zfMnUe!Ni<1BRm1r(IM*;Z-Dgo(B-Z?a5G#;n1Vasyy9BGKmXP1nmRJ7#T8;^t0U@8 zb)kv=JB`F~6qgII$JFr~5zw>=Cn^H;$3PlZ30WR!I+*dU!m*W+0)f3H8@d593RHrn`L1_fC+%B3lK^FzE8X%@5=x&1GHj4lk6eu>QUg2hy zH6a7m0=-Hb?*8H-${j;g88zmbQK4Y=zAf|~-0hXJkK&p8HKepzFNet~Cbjf_<$g8F^a;?Irf;ic#B_(47~KJg=+f(#oo9 zCBR~5akp5V?_BtbTF$#*Ue32_?_s+Egd$BYM$6Xk%<l(=hmkYHR@Q?KvZu*zpPf1#;B^DM%2ro#XV$5UK+9uF6M z!^=;G_tCE1TlSr%uI)$PCvFvqqVij&x=9cY=bo5! zbud2Pn^g>sy0<#;@j_&q3tIPRFM)OUa~WrxUJg?Opq;h3%t> z`{k_bPl_pMngkbf=XlPqHQF7YXQS{Fk3qLqC9TwYZtFsLSyo119LPjhf037pdB>6J zA~5QDekN=2wL0rQzTpL%tPQFn9$*Z+ri1RCou7f3!`*s%Zdw^0lk!K4{>&V!XtEY|H$k;~Zs@>JEQ4APoLVwXl#t~@QlYj9X6O@&PtySHzc zz!=gNyWndd_ClR}k|hFVbz)}iLFwjPx{M!*Tp_5owF|lhYxQQkaw>QFpi;bd8JR=p zw^CoqvR4h9Tf{@VQo0N)vZBX>a+V#zYqsSsD^kjwXA=SXm)JUn2+arx&DeEylrc<% z_jTq)ww<*>eIKTaif`@cqv)KHlb__W$HNa%!^Q2$t5UKXZAf*(+cfotm74)F03D z;pv*+(SzEbo*wjC$wos1@>DjVYA;{HK`+rf`XO}R8?p>-i`@GVIxh}MlDucyK7HoG zhI4D#zQ^VvGf$)^l)-Yd5s|o%J3W-&eN72@?ZHa=Yeqr4X})xRsHd;Ufpo$FdlL%E zl$lgYr$cm30`hXQfTZz|*Tjb$3a6C&>Pvm>B`sH!>Zls|l0Ka7@uOnku+z7`?-f=h z3ud4PGzjRfH~%KXOcM(myhgb(%|PKD^16)8p#ysiAzcesV*FHLgc4v(_!WsP{r8U| zH7K$H;};-UZWf+2dyze86$5FjUmpBy>hNNyOl~LBw(UQMqtFM78S=`<1f9V}TqghN zPEek(Z%;6UTCw8N->U=A;6wwucR%NILB4kMnF7-B0(ss20WHbjbfPYS6R>X2`ZkxSomHcaSzKtU>$qox|N?g1MyXK#fJ*OZunR4Vhs7%Bqx!Q9M;`aYX7>j2wbxcTExBl}>NtpHD!T#s}6AF-)h5!4yde@Ey4fuXw)29B(!pW{)AUiQ7M~0G`F-A)6gK)X2Nf3ZU&+CLXJcbyIr+iHh7nHGFEf+;mqKQ=G`Tm9nzjSHmzNiT zTlTYtv$OM`!9htcF99(zF{bOSe;2{yFoeiMg9Rj&6!r9C;_1~4yTftcDJX=<=ZVY8 zqWx~zdpnRJNQ{h(jD&#^+}bL9;UT!Uzdt%L5i~aTF^$Io#`Ef+J(`q%WMl+NPfu^b zz7zfCcGx$1Vq&7d*%RNmayE+&MV3Z6@%hM}XT^!nfGhP?IM^K|bGT5W%W+f0)zjmJ0c7bQXb=kY_@oFBMgaj>j)NLui%h;Hjl8TDe z=gTVO!dy=rP(1pjN$y_6<=TZH({aP1t zv3fZSnE3Rk!9$mI;pbb-r~Bn+!`TXxBsP=3CUbu)pDyx*R}X8KgQ;bpppLPqu<-|ZrQzLBIlqG-UF7jsbVz@VL69>C4xg$p4F?Q%Zo#D?|b6uXsQfD_b5Y5icnp;>vuUL>zkBs;|Ja|n^ zP3ivD*;V!M;KO6o3<3jx^4SjMUywn^E(Uk)wS|iX?Em5m&dJ z;i+G)&UDAih=*$1e5neqXl*wyv!^GD_%wC-0Rb-p9!&D}SM$Eh);4P{qtmr+FxYRQ z+BQG0o~(AdZ6%wX>=l(#GBBWF3f)jR@hzGxjYUxPvl(lcULyT_0tJw}hH_pN6civc zw?42Gj3_>U2=3|lf{JMEFZB8~e18IC=X#8Abd1m)(y;KeKu%5$i`h^bwEI*4 zpk=k;^lzP;wFqWKUES!QAh-pe`$KRZg+!k|^QFK0@S$_A+Ui?!GBQ{k+TNFwb(;xV zE8E+MZ7=EE&j-1cz=s--8c@l7ZeFpmv6Y#RQZ9V%XB0%puhJ~JyB^zhO5(J_`%ics zH6Hg=nDn#wK6yztoAB7V!v z#DpT?vL?V|(#}T+f?5Gs6yU8=5qdhrf2@DLHR!hb1^?^UuUSIRDV$bi9+#F3It~AU z8-S5dXNj$CAne%9hPoh-RZ+nP`ERA!Fap%Z=H}}8uy8Lpw^!kmAC;9IK;%*}G0A)D z0svA}^sBa-Hhg}19NE9DJFJ;+C=UG}xOQ^rg2trJ#u`2IcCAq+{R!>*EGuEO8EqxC zOMF?ASOF9i0s$fRqM7_kT)_nhtf8Fv=6Raz1kAj=PWK$ z|8TC_+}vD5QW73Va(A2yIl!+kj@D>zqTtV;KOzPO2Cdi1vD6HDEhM#zF2q8Q7s_C5 zkO=#bTrc|y3q3zLLbZ+NO8+N*!OWeUp8EG0cYp{fcRMvaSZq{VjM>|>^t#i28+4U<`4VTgiuIG2waGtYSEW=eGz+m7BO-0)x$&d+WDx? z5KN=TyG!tqy{eKt`E_yFOZUdw#q=?IeG~YIHdiQ&GXSw6uhR0)Kaa zXg@veCGRxnfPq?aTSsTmsDP`luirbz!^K?<5q@~3>vbymNmVtcstPAY_=yMd9-j0e zA9ACAr)ZB<6-cYmuW@m4fnZ(Ys}|u3gHb+xJoeSou_rU{3`Xxf_I>sg0GBaSX@&_I z8-cr>+~yQi_D{3cTwW*bhy?sD3<-={!TI@Mvj~o?U%#YmdRaamLVNU(liFl*@E5BW!XfnL2isRv7TevsfbqP6LK4h{;ZC$PP z4p-OvQU$^nF@jeFzvR;)Z(~p|gHjN@{N5nw(x`*J;)MT|@A{cs$cun`*{f3X(2#>j zNk!!gzOEZ|OH0cQpqA*<_1?}y7o+{D67>pWWC+`=735_Es1|kqji)cSnr0Gsx>2okaOjf;^>uxuX$Nh}@#fumAVD>wwr(H*M6>ua6 zQaDk;Gs&4j*B*eCi5lhQPvJR$YB;#KasZHn1w}ytMI{vpwNg+#Q)5G{si}Da2$qtK z?FAG-un=O~I_MlaN=C*KW#^z->z>MCp@{F_ao`XUsVFE`a%#XfE|-_Zs#dMnjv$61 zl1RsO@k=th86`OG>FFtCg_Sw&euT=X7ku;P&B^t3h*YjWxWw;ol(9%jqtepSV!o_bpu$5`SF7~C^)zSfDa-j znFJsl+r~pK*)$%AM$*;QO%n9vGBh+Sb3NAONtXvY%6hH}SxHIBZ6`Yfi-;(^tc+#B zaaa&Ctokej2wt9H|LBZ-tAEDw=Z_z75S#`B28$`+S8mjcac6}R;3pY@XE2z;2>_rC zz~RY^QOqSzrZF8mQIvXv)0+(UEy4xg=f@;&J2E^5bw8Onns#%Jj?K^6`T0m7>TY%w zd{LO0nJ--rUHIS9(<|xdpy!PvmrOYptZZ(6VKwTxXgrfv!U1a!1_}t!`%7)Wv^hC2 z;G&FrqYtZWG)q*`QR)|M(*)dKXw}+w52f=fDJ#P!_J0BNOHD(Qaoyza@1G8X3)Es* zSQtbHdV4n$u@KP#yb28q+r4-W4-Z$=(u#nnA#&e`^1Ejf4Jj!p1PH7+@l9qbfBcAr zgY!d3K6jLYj&3KX@aw;Nd1viE$*lO_)y|M_iHQ*IWYDft)Hxxy29i;|Odnc4o$rfW zDwhFZXCySVChF2fVn#;BMGR5b#zio>HuyA1FfI3s$CP}0L`7<)Jpisw0n-_R_d^&w zYt($jr4dNNuPG_vKx4`ey8_lU>WL(@v^S*yjo*=xXrVbX7FiG7LWvChBbL>BEv}bI z&7RkWeX*}c%sC+R3D*DW=lVO2(rww3!;jS|;L$Mw6#4^6tOUY7UU|NNfA_KQ@ezTh zzq|9`A&G`gxBG8Oh#vw;Qi<58WjcU1FsPhmv6f zdc3t>n+Y@vKp+<#9UX%2td3i<1W{5GlamI3t9697lb88lYJW2!jE|281H_Unn@&dG z|2eN0Mlp~)mb&0sLFu~?=?8Lha*$YP`#xTRu(hc5Cj&Yb2Pf$7-}iOeOx2n)N;m-T zZMXmYn>viP-J4#$2jb~j2Bb+mE(Zh>N?i}P=Rk-u@9rz4a3Di~8ZcM3cnH(3l`GhI zW+0gz5x_E#yV4+^qLv9@=(p!fpK0;tud!Q>h9CnaC5#^}(uzF~MSsN{$^npX!Hc%i za&qWk2x;WgkQx`GFZZWAO)CpZX=TRz7$^EGil4SW*MCh-jo8lgB?FmO-Tv=JtQRlF zO1GzXo!-gI2U8&3Y{V&m^rn<7kxDum!r*{G!8=dR&pSi0sX(&vO6EmHMTMe{&f?~| z4-iNYxCEz1EyLq=!-7F35DIWDC?uq)lrfz0?c28_Q&YbXEUGja4ULSz`uLWSfguwM z!W8@w&8Ss#;js)N&Y)bq%wb*XlbTwQZw&jrD^1cmSk7SeXP1>>0et$T$IQP%Ar}d~fIBypgKuDQJz9uZGEE%}2HFhJ zD=bqYDhTYECU`8;b`2y z-T$2<+<3It5a8V%{`*N(ZF)&jNu=;%2^l)}>(?b(o4d4gU#v(e5s|`!#|9>H9$v?m zYhGIIKF-XA<@=`d(C~1>yNg{MTwLgrZhXCwi3z6xE#J$%$p|oor(3CZpMf}IGw6V` z<|6+2^CyE=O(amY?CxjA0RaIJ0r4S$VKu|^Xf?&^x9B)W%iSJ5NGe~E@`@q73c`Z? z;&G<7#}-3!n6l>~0iZK=_+6e`QYkbhMtYnB1eyH(o%9PlydE%fJ0sb!=i9^Ex7(S$ z`)pR_b-^Mi)ygDR_O48NTna|i=L z26}5SwHGWwRsu9*V`CQk6_Jl0KWYw}RnCS+Mha}*z6RVtfQA6k!&xTtMO|GI;QBl3 z9M%cgO=VNFFFcwv0K9t%=~-ogMsBXuD8QH2T=Uq|DCp>$K#5b(&;%d1K4-X}Z+-jz zz3b+5y?*ysDhpARw(FuZ03%k{Bkd*cYaKq9gFoP?KoHm}_r}mDWB|9g>2gX7=#JR< z`0hYVp+8{27d$XQngvs}qFhki1|bLPLP0H95JtAgD2F7e1rYbM#*TJi?##jf;j{WYxPjrj zc{m^59m(#r(9u&-0lv$SQH)?uzEUpm5S}b_p3NV8gaO5ate-=!)0hn#3(Ni;e&8<) z0H`Ucsiz*z0JtYDU-R(Xe8s$K)@23&UZSOtJZK6715>8XP_ioK=*S)w6$MgXGUfEa z!NG~?>00+eaN9$*CNdhDfVI6*?L6?CBqSxPU0T4`9JufUK_h*L296EhyMF2h#vdrM z+F))d+uGFNV1y=JW|}x;u$<=)d)7~@hW0dStO;Mz%5V51lC4DZAGO)m)(%Mm^5*?P zC9R?Y4rp6T9N0cW^ZlbrJotQ?yqQ(j4>}ZppEfYv8l~?Z#|M8X7YC`V{T$?X4cq{~cE(hqWJ_l1Q(*G}e1> zUm*lS2d-W`hknHQc`1GuSH3ve_iK6|oXsn0>J7D+dsh8&%@S$Byis#&bdqRl7M7Db zzUb&{H}l<3w?8|-$VdY%9R{L#ZF0BW;RTQBl(J#_qM8p zeh5R*6Er`^zHV)pO!^OsKz?<7dlwP`LbOs!TbqQG&#CSBx)R{10NJpGj_-Vp4Gs>D ze&y`WWYM&Rj#ipGUphwW;1pl4^#87P&F$R^Wf0a{F(56l+R^YLzJOIcIy2)oH>Ii) z50L+(mevPTQyP%7=GoZ%3t*7zzNhv7&o}>FX%9q3Ma`|Kh=oVR%d(iW(5MA}13Vxr zo$iPH6AV7%KFa?-8tNDb#{|xO=q(^4pl$qndZbJTQzYHpZ{O%C1Hio9B33O{7X{`- zqK*rpRPO2bQcnRdAKXm6$4R4yUi--ZU49S`=RZiQij0H=(M>?}RsdoYdb%-c(mj5o z;|O5#0pw61;O#+LJ(j1Csob!1dR9cl+}!%DF;i<{>oP5X=q%zezc3hVzW=Pl=`E$59_NGmPxz11J) z^2~~q!hMp734R5w>%{+^VRY0#*UATUsp;4c82~&WUl~5z>{po81gZ?;Rah^#qz??p zLTol!n(;SU$F+2C?N&P7XN{>ts#~TuPENKhP;YvP=^fm?cAQYs=OoMMOH(BGQKCJD z8W8aH80UMdYE>PVBY(W>EIy-H~x6X%s zOFIrPGcT%jY{^}PTa$dBJaOfQ)-fqbnV6r(3FMLgJGajt{w222{Y!`&hDOX4d3N?0 zA_Jz1H5|vL9e7B9_znbiS}2J4r{m|RnBwB%xR#+X&6Zs#@H8zcjCVHY4a22t*UuNL z?#BZJbF^PhA5$JVcm+sgTzojW1@0J?Gc~#vHtVeyRC@3uu0PMeJg>jZJpaR7^IX-_ zenfbw*6}@FE4+SVXjr{swT)FT?w3W990H|SNs`>1k&oWIW0iI8mhj+w{_O*ij|#ta z+YgJCb5bv+Jc{X)A|lgVf0k7E+|?VOs3I$ShgBPLR?i`>Sr7UDt{EP9G_wXMaLH@- zKf{>`;@RunvTCd*Hp-`R36UErzbeZ_gv?e^ieM# zD#grNuefE@_3rm>US&fgG-E`}`srR*TAdd0EVghN#KXWL5U}nzyLrF0jlpa!%!ZQ6 zB`dnUX=N4=63(CzM$u>6Wli;Iz-ZO$-aK7DFES@elCzl}sY>wNKQE#S7xU}(6D_40 zu{7>^q+;1~R+kN)GF!L5#}G=*JUV4Q1`oWAX#P@tz+BL~v_siuNZn>=UDCUIRqfK6 z6zRc0153M_neyKyb}GDnaQ8_Dg2AAFw!vw)BThl6Pw;x76QtyIKwY>Wl=p&kPXNL` zw+p}sl+6@MR}i{|%N&L{IDOzJY}8yJOwIl?c;?B$j9NGO&<85&KVB2-o-X05<;lPX zFQH{*z4%&c_m|1+_7~+*#zLZuQ69)@lJR06@Bc2>Q9jN-@a&KwDUW0p!VX?pW z+*MgoGp2W+mWnrxpXSn3J=1t(Wp~y}qqQ>fIz{+4(2l;%{L0u& z4Ntl|5VPFZX}Y{sg^bFMzlDI~G>a487dxLno6DItt0Ee(eCcAUn$)#Aqk#tA%5y;~ z|KnsHwts2$gA$HZ6j8VD(>Xa)(}@@gDrz!F+LeFF8ng$%^Q89*-FL2^Dr##Fd|+rHps0uiz=;l0Bm#0O@8rEtBZx%sIGi6{U#fzsT4@+x!D(fMMa`OoSi^3e z7g^6Mhk*?S-(_xy58-1Qny4=ur;ucD&4(W{7Mt|liP^R^5i2YR1wFoYA@kTpd}~Fj z%_R`1MSDR(Bj6`2x6@vP8D)6je(2EP&7iF;l6XOv(d@~iAV(TJez-|qTKc1@;q{*~ z?mD_6O9@yG4lpWSRTQb+`zSZ(DuTE3nFy7pTFB2Hu7a0xN4dI<{p;&LF}Y5b7IYT8 z+_`l<^r<`VY1ki2CcVntFbfOIJ+zQxni|rE4yoKvpS~^d7GUbO{srM~Po@=rV#Ko7d1+>*rH_*~b3PWgTa+~$pX`U7ACveBm_KlltR&Y?8`?Ro zpWfZtnvgZK8M$x$UKJ2@CUCxFBJ;9%b17$=lCGQKX+{eF^HRX^n&qguMfi1m)C70U zLg3#y)3=tX&@)LoL+f_M#uCr}hpO+6=eqsB*HYP`jEp3!LWFElQHeq#MA<6|A+sWs zq-~GLh(y^TWhP{kjI2WT-u%w1zIA_o|J)DV>HU6<>w1oJ&huPn^{?CRahEE8b1-}H zfs2b->11O>@s{-SImYIsf}MvR>6ST_8#kt3obec4XrYD8JaGfkE^XJ(wz0NP7128W z&}5wwCI6R+hW@X%R7q`V$i8Br?>ZtHuM$?)V&GW~cH$8;+o{05ea8nnPo^Sl z*a7<6a2ZxI6EK^}qUF9fd>k+Sl%h$ z$w-~`P1DFo$$K_Tb-ZM++SEROW91SN$qW3}t)X7`Ny=cP>t|)2{Z!7g1D7slZ#-wi z_j5^fiRn-bXWo=mS}5hI+_yX(Qb!vKj?fzjw)vJ?@8OVSj8N?!DHkkqu_YHYe|c#p z>k+3-gQNHe-I0*1V_Uv)`NWWvZl}y&SU7hwnYrSme_xZY;w7P-2X@XRhAQF-P`}T( zw^Hi(sMmT}=8Te#0&nrs3mO*lp8DrZ+Ep&$a;^d-OUlDJ1s3)9GPHO zKOJ0M)Wvp(mkbAC3FluSQ}m*WGB9ZlYCC=>ed6n7uM>C3*X`nv^s9{b_@bpeSH~y1 z{_#Y1bt~HDKd*Q-=uhG5#33US!C>I_a4Q`*LHfM~C)Me><}SO?M+f`_05R8|J>J0c z?(#Jyq~2Zb0KXpk;G^hFTFcPO4m<+;PWuZUfgOi!NV2!VwWe z!)7RBT;@{|&9is^jmcl}N4~_Z(~tVLxLSPGbs4#nJMm5c#U6g4j2RhL4bB4t*ZQ_M ztyqq*rG8FI;d<42PT{iGW0_5v;?!T5B_0Kjlhi*hs%332+q+l#h7UKj{#c!Fem{Mq zI^N%6L|pq+Di_JT=F^zFqpdD(eB)aUofG6CQ5TD{YJg;L8QYs z7gc1#-d0-JIiD{`!4YOMujQw34Ss=SHU(yQ(Hh_TxKRaEWgK_&cxtkfD$Ue&tEeLn z-Up7EDIVbxuPyns`m!oAJwPh*{HKz-5Q@R44qsc36{H)UxSKigb!cDfQ?2S8a!D4) zeYu=`DVDpX3PUS>uI=J0YhHB8rmEXh+WOTg8ZYkY2lR1&8XIxa-~G^h#};4%kCX*2 z0m1+Q7hLMkknXYK;yC^@_}Av|-+Jpp>Ztr- zhq+>R$!k9cJ{8~K~uXEo#AzRs;4GL4P&wP8Mdqx9=L6NVe*LkX~#o#a>* z6khM8|6IwJk^Ul5*SmP7%!LO9FWx>h*-8C?k?vG;jZfo}n`PMRCzHQSmy=EoZ_C=W z;p~RdUvjY&Ldg>+Z73ysHxr z9Nz0^1uhxrmEGQ;9wIK8UM-1|p+;56IR2PzWzMMde7&&#k~tm2v@(Z8b6Fjh+14~h zi8JR;r#C1^H*Gn5`v%UYc^ z4f?puwjXC5HN!36Y`e)w;WAA5S}fHnv<%yJqc&y9(T!O?0{W?U3qBsRHtrIf+ChKp z`IR7X7l*suPpJ=WW48VoGu5y)`}`-qL=#kS+HZ3G%to1;2}?g4Ce6#&7`65c}>cQm|EHz-i_M#HtGbNZIaM_6F0AwO(&(s#Mg}* z9{-qcO?vJ09??#pc=_2?%TuH>gB6$NH3QK5${J+&BFxC2qg&vbK>_!0AdMtnRxXtE z;q!B+xMgyWU9)b}y|X4h)R~riZ|vMp`_?oHoO$e)w>$7PlNu%|(_K9&(M^aA3hkVE zqIu}eu$lZ5ltdqYt?1Pr3Ku>-@yIL}g+DnO{@o8HZypd~ zr$jB_##Z^)%uRRv zeKUBH-S?2U?C5g1o;&8Fjl$!DwdG4L?%fZx*zz9$HW^{I(Wanr?Cim%V>G`X*v|I+SS*aQw&EQUK5xA8uVO@T(I4B-PF0CIAq}wErWvMNk(1!z2;H$ ziVoT&sWKvW*~PZ2X^a_Hb98+UY>p`_D54ZiwEez^s>-?ImqYZ+@Ngb3w zn2R6sI`y~k?m2rVgPn(rD8vhK=ur2J%hkLNpx*5^hh(Fu3-kkHc)?JE!;9L9tzBV8{R+4_Qm@lYmGz5-{9aqAMuEa0T*E=qp3Nu;O1PQ|GBb~ zkC%5B50CG=caqG^%!w%}ac|x{1o4YMKth3P5OTzG$xp|}Z9zal^~lY~cZZ5q^1;K0 z^3V_hJcpj}T+MZfLM_7Y-Yr{rOlw2XjFd7T;JRm5JGiVR?sXle>yT2MS}2k^o zHG$3-X>_c7Y%VrwFNsS5TWpo?`(rnUf)Fh|{jZI91oX0PIky~?ncWub0+7!wpwm7@L3k+}g56HL!8ZSby z<~C8v0NGVIfJPRo&7@v8AtOZPf8zA%1lPGy3O4EB*^xG*OdVj712ZlZq<{{nyt>B& z!sHx_uq<#9J3N&S#*z#6 zC){M&OG`_KzZWvkP~`p90z?JuJT%$i^!?4{HnBf6k@xM}b*Tn&uXBGgD+aQu96egH z&5QNFM=?>T{Cg24JpDdq21c1s{1Bur$jffWJmBk>#=Ac1L9|Ca1~6b%rUzXLRx_G^ zI!IzKTm%pTwU_s`p=QWNyh;r@4jz2G?{&^C^io*#SDUL{{`FhfN%w!>t13CxtG+%P zNKiI*xAAp&R#=I+HG)?r6sH6YVVM~@sIJ@8+zfru4k#ch!zJu_`S{jFD+dX*JGNbh z;t-<%Tej-|_bk2te0l+1BOws$yx!01INE+EDT#vd03n?r^t3>uvPQ^x9RCZ%mD=2yz@%_!%FBmUypQZH~Dk1RIWdt&WI~ZSDaro7EhxqI}bUd`|>=**T{@HDUnBoG^Y@xZ`9 zyX+(XFIQ@!N4Ey6@E^1W@REySS3puO0;uBn;#vI#TRK-VOXu0qZtsn(%rO#r`Zg>5 zZq1{-&o8*~%1D)t&$W@#vDn%vc#kY4InRz{5-6V$X+q}0x1^L(umGZ`mw&h|8kfG2 zD)iwoOZl0k7NRFC!djR#vFzDAF>+TLU;|LvUxRI2_l3Ob2ihd43f})%Xl~A%x2s@# zZ=iw6Hcp&#NMyBrg2Ude4)f!mfGg`X9mN6O^5=T5UTEP=UH+g|IV&{xbl-^p>IMF6 z#eV@KA$a&E!79CI5FykmY@W+kU+0YyD&V7rhP$by$4R0*7WtgouWkmxSD0t3klOM% zB%}g__xx~r4FTGM#mry$8Aj-43DI^`jZ=K3G)GeWo6D!Ut{-zm5G&u#;Anh2bHE6zPBO*zv1EnfkER?pIsRsPcLOt$PBPQ7HWDxtLKdY^SEi3oIZ2Ce?Nsd^Q$ z*_5&`S$Ag6sN%84Wh4zgNNvIinD`BD-_1m2bWQ3r?`w1O6wi@aS{wmU78z8A6hl0) zV^-uji#Jn)Wz2T!N3q|iVHoR95zN}gWEtn#;!O2K)V3wv-+8Pp!rA@TC9Afy^m~l}C3Vg;J!Exd3D4;SNUiJ8;eO4qpo5O^;Gs@uPJ(&>h0SAWLWHqyp;0o^4T zcV6k+(X@@(m_t@_3yEuNSkGP3eA%btG~{=L#HQapJ6t)Yg~mQ6zVps41?R-4-UGWF zl(yuHQ0`XXZ@0D3LOG5zrG}D1oqvvG=F6B#xu^H!IB1u3fA=R<`m}McWoT=D-ukGT zz~Ub!bF0ktv`5a+qbE7JFD&u0ZHxur-`zrzjLC67w6+Jel}8ro0RDhYQpu0mhmkCb zH-5}Z9{bi9zcP9I*+ovi=CXjGYn)Z4@|vRDfg@Gl&0Z4_V?CG5-J2bBjB+s>VoBp^ z>9+Y*M4M?iN(6PzFd6W7lxxOHUJ}Vzkrhm~F~lX{IIBMT#&|hW5E5HY?N~3ar*B8y z_>h)e!6@CAIghSDpF`q{5C8bw+7h2|c7 z^m50w43>au(_ZLC;_dst}+kb9pgaJ#H5Td!RSp@6dwD!_mwHwVgvqMmMj zJ6|sx*|F~sgPL~pjmnYUyJ`{hK+H39cl=AB%VK}ndkZo$vYfH^ON1hAWoga~N|A7k zIRu~TAANA;m>Q$F?XD~N6QsnT0?52R$Z>e2rNawXXHt3GMm!3AY7%;;)-qI{##^9E zjPz>L<=5Bx06u8mbB$3sq0x3n%0BasSt|`krojBk4ZTVZeeaatb_Y8B?A?803wQ{H?_-q4AATYm;JILSBZ-12cM?5r^0p52XRXoN1XV3zLbGscq+&LmRy z$vD!CZq@(BZZl6x)$BkU)|dlK)Dhjn3o&23NyDzsKV{EZ`t}~7|7J7^-QAe+&%Qes z`j%LTrOCONaOQ01C(zAPxPZY2%&G~Ee$7+P(jLH44ifxQci3j(7y~l&7|1)OLy;%- zJ;oIz<9*T%?Sj8}zb~oB;V~1T7f`+X^QS4HQGy=qG!zMhYKKA3_M-%A*0LTH!k%kO-*b^VupJ@$ z0X1v?xn(AqnX;M<5%0m_gNS%GOy9k_-8FEyRc_@JxZcNtzfKvRIxs@3kh5CRz`wwL?MuRltF;+Z%pR5(vw-74={@H8YTm;;Cl4o%A}w zk|Z}*im{l>_|~LO4#u#UR=1WlS}oZwX%?gfQyTYcrCS%TBQ}S82b~`o`NipIM~dMc zHAR`5mc?gF&1(;O994SF8g|UmZA-7fz+rP+<+%rYV=w)!fc)sVS^qriTesE|LklPv zvEQSZFe4EnFqo0vYE1~Gq4a&=zBG%%+n_d1nZeCw3BV+8T#=4 z`b$g{!_RK0CZxG~isB$Q8+Sul7kA~&UTwVz@9R`9S;&BX?+JfUY~kR%h4Sr1(Ve<^ z=BnN;36CPQRIsqbE^x}P<0hJCD^-)BC)*43pSzYb-t%c#o7-&@$evnr+B}UZc_G0d z3UAoyedou1^11O3DjNnOw!7-}r=&QkgXt_VIu-UMnCj&vAY%wR+3(Mt?fjq{bvag9 zksj~=-e{NozL(Z7K9BZ!UC-0be;++F4??5p$SXLzh961Qz%gk@Q?KNDx)j_eNuD@# z+w5P9DgNY7$r>DQ@k%H2E}odn^uR}xpbI|wo&yF8Yl40O0YBoyYrPM{XO9~Jc;>5`KkCswYuaQ#~|y_~-> zQM&k~y&%ojM>~ym?%A^^y!-AK7O#&`BoafF7ctv|f<5X?R}9PYuFjz)3m;{~`!Z9f zu-zFy8PnuVCgFHg0HW)lU>N30j5}gEuXf~Fl(HXHQMA_AwB#pp zl9F`vwY0(uZhMEEp3u^p?-39l$g!MGX2$)-zWeeKFtHHR48r%?iX+eIYW>RXoKkjc z0UN0Do_?*{xG8uG*?~9NX;~`SY94P`gW8nr+E3S18Q0o3_^rTACx?o{VhUUz9`CbA}Az+Aht zJPte-AKq0&8%;-x+}+1~eQN6RlNJ#Tou(4c_nq<(KuvH;X4u@kwqG6RuFn3lTU}}0fdb*Rt?Rk7-9w7gJ~4A7e3qx)W>cft_)eLGljg8j0`gx zXrBXDeGDGbn)RmAxlZ)G64kToH$x1W9->uBt2L9q^quuM7 zWD;4OF0=)e1Ye9csT7Qe$rwzm9da0$k))?$|1{vhU%vLW0@`{;C;82@L0=bYTBPQ? z@-9F?TKb~@iYIeP>5+Ohl8Aacn_{&h2GA`sEi=VK8VmDFET$fBH+kuE>@WEoS6mN? z#k!O>+ZFA~nhiyVlOLiZ5$<~Dq;}>&*z}&Go9!D+I&x<2vU#`e$AOb>Z+H2&Z@9+7 zn_{+_v>eqT#hEHAa`!5OgZPWA`!Boi4M!DWg;Wrdmx;GF?N?Q<5Tcm9d5_mzJ%pZr zGzDIN;*D73J9~30@fUL1$?~bSqB3{O@DpltV@Upqa{C^u)U5ZH{)xqkFR34)DcbYt6mZhq z&A-w%g`QBRC`CV_dsfLL1qLOjks2rJpme`SBo-ZtH zqw^#4ce@T*DSF)py@9Qf7VJTm0q!8o{xb?V4$$hFO$0OQTd54j$+zGcWP0G>2OiKW z8fzaO8md+mM0CD%#o;+G4Fl6r9Yb@g5A}WHX%Y#yY?#zgDBO3c2@PkPr26{O%HcUl z_w#f0bj4|_`yW_Y&l1|d#(5e;PNFjlzoqjzNk`I?eiIscG&Xz6zv=X+gV-s!Eyp@% z?^2-9pYchoW!7Hv8rAHM=AJ1lhm({%+%YB{mU)kt4W)1)=hAOBdgJ5P>-JaovATHx zUH~vKv3OQ&cyI9z^B4g0q0M%qx9VL&S=g%ZEo$-^%3I_Uc!^_4ziOS(F=VXk=FiNP z@qj#pW+#(#<7@W6rJDjv#Ge%TwUs7kf2-cH2Tg~+SEbnt5c2oGzhoxYdW3kb67s29 z<1Z~M9i0CD4gRm{!QY%`I30bQiPZl8`HL?b|L-qA2crPz<|oRQ|J&$26#vHzb)Txa z{6F8c*7gV9Q9VO{CNB3MWlf_H&he)W;2F3^h7TL&<^C5kIR1SR4qt27^S>Ww=JWgJ zzHB8exFwRa{GMJ*Wb*qJCpGm}=XmA+zE=Fw|9vsk5_$KqL5~omi~-sHp9>0 zIHU3+bxR-@Fw0T+dkaVtX5tN-h+E?E(ocxCtnaZCvoyDxLLkyUAee^yh9XX@Fb&x*|>ys=4N>Le2s6Esjw(w?{2Mgpstrf!Yk>BXg?P-vFSn@V{IIFEX~b+Ti_SHo5h2rJB(uz^B=yC=p`g-$U&`7E_^9Y zT|SIG`~(i~&(+STpI&=Ckw1|w$+04YPWN3)q3B@o7^N&TB1F>x!H#0aCFlr zz;NwrJ?g8r`mX0L^C_xDyOx{dv7wg=gGNNViWH#VV57jT7B=SFxYedC!=zsZAIg&?wQI)Glq%5sovvvGZ8B$riU}#3ar`dy4TIGFe9^53`SHnX!z2yvK?2I zr*x7{e-Jk7U}ogV6iRyAWQJlatcrZ@-Y((&T@-Rc|JK!V>ZAW-O(hyOh3}p^_ahx_ z`kL%@zJh~Bt?#oRC67iG^Y`W*eCxRvB|BS0?yWxUou@m6yvJ$wfwDUAeQ*KWVh}CpGo8uUS2{)r0?Rn z0c)1fRwTu%Y4%6w#5|;qd=C-8ZSR4LznJw-Ee+9-Is}wk3#U1|uOr0R&#Za-zR5ZK zG+1+5w_UV)V=!g@T4Nj|rOPQrR@d2<7z^g4B>aacTSro}rfS-1`a^}zM}H_McO*2? z(}OIPBU&>G4bgSoTqs(sr~_k;*ohMt>#MI{Mj7M?kmX79{r^yPzlIY|@#NwyPlJLU zM??e^ch5KVVqCmNc4@zs{&g;-9VwNjtsEs4bPNni>gu%X)|tf@A5PUe({%9dGzSO< zAt52?E-;XAdO(jVh#|T4czL5O2wHG;vW0isdX-XJ-U#L08_u^RK9b()@pfewbwaEASGW-R zn*(7K!746K3|{O841kR_*e-iFS<%FhT-bM=jUX` zmK~5EIV1X2<4l9_{|*vRh!3&~2n6|$v}F@QALvm|sH&Pm{X+~RMT~mx`wk*ddS$vH zf9i`ACXoF>GO$c&7k)pDX|SDQ*3r+OcZ;0kL%jQ9E;0#Mg`OFg6Dle)oT9vBDN`z6 zGCqAe9_c=NJ~T8G^FUJ1?M?Rh)_ooRd6P+b@agu-NtI*46fRJUuRo*S>fJEX3)O5e zNd1(t4xT_F7lQ6D?clG31Eu$uk6jF6u`;P zDXC19E8)(m+3Q1XaMpS&~ZU(Q9hkdD7 zRp+Hc_B9Sx~H!$bVRYw&HTD1 z+0Nz}W|nBdte?vMSk1G&pYCs{^#)U7+4UB~+{B#O;@lYQ)@Bd&^z?kHsOa_=e7{Rd zYROZ;R*n8Prsofse13B9!d>LsscDx@g-JK#uf9Iza5cxxx`K~K;!7F%-2Gj9KHXDI zh;HFyq$Z_-3h}Dziik+=-~-zGb+z>>zh+);&eOi{AqWll;E7B7&wEB+(-kt`DkUwu z{c-oFOTGnlrLzT^6a&vbus&YA(Of?0<5B@c`;e%Bq_%W$;Q(-kkYt zvq(B>DTLZU7uJ9GLt|Edf?V&crU^JaaFQ53JznUsLUR1%NkdR+IUS=%?x!XuMn^}J zfbxS{7|R_{VE#-ndp3{%{rlX21ux_|c26z9Ut^D;Aob&lqd@`}z6}SCIp(zjT~v&H zXw&fylTo!I0Yya$82Y(U)6cnk_pRw^hxHpg7yUbca%EY!D!^L=(-JTd3cPWHFM1|N-8NW#r$!zj>h%t5(^6p;7zwNGk;rrk9it9d;2$SBhZP# zN+vMJr@WWr(4ipA^P=OatE+nv7YE~^`xAqxx^ho<54Wlh8w)Wzpsf4RaC?aH>X2`6 zfXl7*r=ZQW8~M6laauVJU*^_ZzqO#4-d~2>;tY=a0S8G!N7Axv>{%_Xm+?2)G_UiM~`TU5kvT3V7_dZ zh{zLYCDn9vTs|?In3xa)HMm9f^R2=e;$Z&??~Qhsp_GlA*F0xOrKFRDSJvj2PDNF` z(5gSaejV+W0y19pqiQtX+b>+Z9R2z-zjpKYckk|A*#GMFdXJRooLlSb{Wm?hKOL%g zVpqYbZ^oY`3gr|P)9LwcZfQ>)nxy4UkoILV4W7ClxkP2{ZHBp+FP=*0a`cWr#0&{1 z2e;q!6Wh_k=j0!6ntopwo_XOX4vJ0GCPUDlrmHeN^z8VV z8&`VdZ!{g%PK%Sjo|<-%oVug&sadCPg}Wd>$5)#ejW9;Zgwl)YjQAHi6zy);bl*}v zJ2;!W$-$DYdTEXEUh4~<-6cM)#wen5e%3!b+w^X}D~x~tg*@sT=cqeDZ;@Z``uj79nA1S+0E?p=n1GMewaLAWpGneN ztH8E9_XZro@MSmLPf9Nyn4j|mSc}s6cd_0g%CRpq;Gswj_FyTwm~f8E#F#K3Ty- zNT?HEz3RghZx`16ZmdMLSjC95xr`j%IkoU>ND`ajW!ADd#u`=CTGpkkjtPdrftmLo z_SBm82(ASyd#H(~JT9_$Nb@HE;E*UWV@t;;8BsH3fP@_WncxYwOt zw-jzP`BjdTMz>s=H>nD8JaMsEm-A|~E9Cp$q~{5+yrVyxmU&>QJtLTM*~FZbb1^%n zb7T``754^tN4j?gvO_Lefkqt}x?3q1XVS&Eci+&A>coe7tMWwM`IkV9Oxoa4?EM_`h_35$dBKgkzUw=Hzt4>Bo_y`?gK?%dLe#h{Am; z_(Nxb>tJ2%<}Px1OfeH=??6LB;F=z|DV_rd9)RDlgIPgr!(d`^vJq4q2p{%?aY5=j zI-e2Pj-xmrJXV&wD`31*ij`LN>U??*>MoRIv+ReUn9uHXN&aY5u5soJtcy5gT&ANj z+6-Y<*?m^mB6nn^515otA&6$oVBhf@e|mPXHJu0J+(Dk($vrMV&3j z=mO`Id6)==U@5_A;R(@Vka($r$rX6P1=Z`xW12Fqb3qSX6Ce4}?Axw6^XlspCF>Uv zCBeJavP>VdrB}FA^)gbvi)H@4@2-OLr@FSb6vg3ly=s9Q2CjWpE1zH`zqP(<_342d za>ENF3%5p0Z;en^Iw<;zN=Jg2p*8P5dSBEhF)fz;e=3t8W>H&+ejw2GgNlo=M>yy@ zYfS{wM_kH`*n$Lce(cyWB+g4B%;#Z>CbzbHuq!z)3VtRHgT{cYS3hiuhW=;zS5xxG zTu@56%afJo3xSb14)5aR^co(v1^`ujIlDs<0Bqi%MkctcpJ_-#z32>cxqX7OJ6CdvbKS12csAqe(ZFJJ!rMa<$tSkV?9_lrL zz?i3$wbPzTDP@>_ZqdzITut4Q5t4ZA-B!xC<289p4_G{h-|zjmU}<{Vtr|c4@PqZz z==&ub#e0k&VT&~1Qn*?gcI7=GHo%-YM#>+Dg;ip-KTs!P+s>V?XAe3bQ)Bk#B7u0y zV`Y(Wv3e$GpbA5&c|^f8^ta!;FBuAl5N=|~bq%NG-aus(TgJ3==a7M@UCEjc*N-1R z@*!JTy|`tUq+}=|Z3qtjBsG>_ye~Ds2wxN;VnK`b-rw!Z9*>#i^5t|sK|u_ruivmC z@SS6XYD?Fg(ygbQ-A!wsKYbbx+DoV4=O3XzrrT||j^Fm9b^Sp{VGc;Na(2K8@~H|8EmzkE?8q?>Ra8^k z#=*fsd5ct~p%zYZ)uvFC!1xY!0kDQU4Oha@SVif~+qnd?dQ2?fTXj z%)Z4})%!&lDef@}-2%W*xWA#~g8|u8&@VD-YBRK>uP)?0gPe@;ENU6T{(K^8)l7K$ z9eno_Dvr0X;X~DjQqXHNwcY&qB^1yg1SEgTR#a3tjC@1VWH<;TASlkxzcJi&T6$t5 zWOr6)BvYVlL#IoadkQ1UV2BK#0S~=5w%rOKtk?3AjUk9Ke9rsHHRc~sdJ`S`TnT2Wga^2Qya#BEB4bp-{AZ<2QAueE_3Q-F+053LhN!_fBpBp>7dL2P6Acy%~cH#_EapqlU{^oXzoEHxyqetNWHDN&yv zvs>_Ddx$lr{>MxrMK_xpAsCZg7^Fx_x{KEzikWg4ta?=0zta=gA*f#kN#{UYwjgHj zWs{iPF^xUcl4^#+8hYfS;$n-2cuJyugH7ZOyeYycP6*y8l1`&;jY9Y1^7F%q1!3Q> z3Vkc)$l|VifB)jei+QaiICqBps0=!2{q+EJkIPG=xMtKp#1hVWRV zV3!R?SY69Pd-h7dAQbrm>$N)U5D!0pfaA!wg$;X99DQwSa$T@p^%%{U-0J_bZinqZ zjW8aTI+7THC5PT^_+j$7edS(3yu^;jt8-5OEh3tjZ58wv5d#=D7U;`sno!;R@9)f+ ze?y`F{SN}{{*9dL(M(HjN=@RpEqwdm-yYTY1DtOHyic3;FG?!-asQ!s$$jKgyB^B^ z?~B{|M+9~2c>`bK|9+Jp_paZpFu6~R$jp}i;PjHxlfM04aA4k-}Tp0f+5$)b{ z(|`WRAC>mz?6!`^BNiXvgW)=7!$PH`L46G24TFM#S|{)RhpYJ6r>boTA~w70n9R?r zkR$Hy?nZ2j`HvzZs;yEB%8Y8CM^ch7OlgSNhgvz*MI3nh z8T#5iSN?+Jg&iF{j1qsP z{;(2J>BUOuf@!8HdN&pEqA3k`cNsW3C1e(r{;+!kHS9@cTum<7Rei8Uen$MNl7RB`2q$Fsh9V9P!Z5JSc!xid0Hj9{t7xLjI zgYTYj#>4!3$-ggNKsbOo2gX!Wr~+WO^Z}MQupMKObnqhpAoJQ?gewmW@!%u{j8qs~ zNGH?sHma>}85W518{ruOry@dDi+O#b>&P&#TYm#c38BX&3}9Ufh%gJsCA!}_+#7;h z5ScG^7u_~CH5JnygbOes0z&^qbkF#I!q5#9u>k*m06P;K-2|i{USY-ed>LWkM<_fR zlC=bZjO;u2stelTJuv6GQO@qkf=22A#}P(p=L4YYf2&dLt3~x3TTND{q*$n63Rez2 z*wL$3g^(!`rNU(07ikz72fo|DNSVkoaw~(US)`pG+$LvG*V0mgs~#*md0=PbUE>8r zMoKCSe}kg(h`Bj05vq|vAW&Zu!=rJ7nHwVE<^uiGIy%f7NGUL(T3?C=Ss zTPV!|t%adTLBLamsJ6AWl>k*YY^H*8`yesNlA9&UGl_xL7YX|gSBZ7lNC4=*LAt!kr88`gaKfBE2D^c?e%Tz$v8el zYmA>%`HzjjYD9bk&UGqGEP(j;BbhCz8hHf;&9EL|iyHJN#ovt~-1lIj_yO?BY1mW4 z#(@PknwTY!mtTh&2#gv0`t^&%AUDyM&BYH-q4w4JgCw}}8my-4=!Jn9Z@36YoOU?V z0zrEi9)1dDJGxocAFah23OzkxD7kJP`*t2eP3=5K{;)$=xW&a8!>S>>m&rj32ZtHL z788mVD8dPuGU3xo%noA)6Xt$lp`pwqfZbp&1ve(7B#dREmhy$@-m^;`Ad|*vnNnN} z+Gg%uyKbO-C-OaEP;jtDx|foIolA$pCAu2^bel04x`F7&wD+72Y!ax&4txG&Nx=H|{JApTMW^GI#*!p*G#@ zG!{9P?{D`NiJhaF5TDTud_ocjJG z?78sT=y&XhX&Hj;C&#{h{&;O*Rzl<7STu06xsA(XM&}Ox9Xf{UL*IXQY*%}Zq6AyV z%gfufx-{00*Uuv>%T}OYgEs5L@#Eqng$xRQ_DTsF<6?HyJpUEKkP9~Zp-#<&P2`B6 z=Ysz^P0cuq(D=*W-(Rrm%+KAy$e0+wDs`?c*FND{L_~@VK$_4d%O=7Vc5M|%OYJG{ z$Fs9-R}P8WT)&>{*r0L<^x-Ci0UU3@P-AVQ!QHV7bD*b4Z=h$9_?UaYV8WOv$M;kw5>T`y7U}lBUNq-P&B7ns{OZ-Kp{>@nPLK0L> zho;KiF1L7~bUE^0F{S72(7(G8j0hV2NtkXwc=k*Y5uH%-V^3qGs-sZ7&l%Mr(#XCX zplUgI*=VDH1(H&;Ay8h{29`|ayCJZ=c(fxA92rrW!oLq5jk$e~ls{Eg7I)i46{M4ABb`3RZ`qW=gPVAaIa*IYdRD0%2GgjatJ~A}|2L z!W*F2;nWs7M#fKwu`1X=gkK)QC*m>^(P89eJP-~zhhR+;O%Rv|&pBxYzxV`{!s>*z z+uv$VgG2WJ2Wyp0JB6)02)X_~o+n79qlCK$4yP#xf7iTDe}AqnyuPMAQ2wt87N!~CXdLh+zOjKw## zUQ&bW2allySAq z)dL0+0x!#X_}--QAUnX-8NE16?xlXNk|0t5gqlLCNyELa^|A%}qPSfMgbgdiUh!DR zlqbWPC`kGExJ#}>^f~^!G5K4YhJKLPs(1fbDlpTC_Vqgh%Ta-SG)-Sv%4QKl4GO{% z9)abcUQr5~)0{^wKAGJIXOub1FbMYjgWHUhTAxRsOXm~ zFD2i)fW_-cv}zuj!NU?!S?cH-^xP0@go5?!h$GJ4xW6#P*^j=P@)qs*CL^V?$+jl3 zgr4kmbz^Gun+o(ji!R?6Nv5Wxl=+o=`sB$NG{IoBmPdtPAZe3LM@QGN%lPE+&Fvahlah z4r>X6l>^^0_u(0?!N?qj*l^io!y<0Gc)M(38QuF2B-(z&xvs1>8&0f0l;tXiI!f@K zJe*#YBY{JFhAIn$8?!ep7A*Yz3G(scrrJT_uxdC~tDiYz+gNi}6A(TW5pcSL`nLi3 zW35JpjT&VDrfu=izc}w-a~)lye1hT)N581+y3`md()`=2%ol+W`$Y?OX-i0gX#3C`9daQx&hn7jY&Cyn@28w~WNXPFvpNsRxUX zV0X~8D*El)`ZZ^qJwVPNP=YlE$vh@iVP9`?W^t(Y`4K`+48GlB)!GwR?qCy!;KQtqKK3rhu762 z|LbJiRP$%I7ZHdocEe}6%Y8(E#W3W>cmT*zH&_T0M)~MgP~!pKNU&;o zO~ESp1QWV+_n#x&6FVEA+q(DB7a@YTZp%uMUwaCom3V~UuD&1@C?Ue4pd-d?l~@lV z%CyKPZGZa z%qQM+ZIv*VSzDbegs1E6Z{KuWW`5xYHm%`k0-|llps1Y}8+U-brl#qa@DpG{h(0VW z?E$eY5Z2KTzw0FxK&T~<96+Ai5R~!4;CIOh2ohVd4vPec`MUY_K(85*J(PfegW3oB z{Rjz&@=*H+4Dy}8K@BYzoLGUtvWVN>fRS}W%rSDC+#fsOAq*;JAHGkHz!I~+d%$%y z45op1mzS4gPo{0^_4z9Z@-AaoMvAb5Se(P7h1 z0NyaWBKlbjvtnBkArN(*(Zb{pLb-#Du~r z*&uteYC8em5A{T>y=USwB3g$*O}jG)znt0GS9Y@^O~}LbL%t0mu!O%NZpdc!3PMfnpPv~fiLgjiJZ_*X2ax49(5rRBfTx4-p-_#FL+ap;5aJ-7%}RVp~PB9-D~g5C+j z3%$eUO6|0srskhk6m`)2mGKskH$g#4ILZfP4I0ul71X*aKPd~8Ua&r+7+9(#f@dq=w&k`#KMW@EuvjmU;)1kzf4Y!O-#g*NPGVzViuNR!KK-@2{s@*xEh!tpnF<9lY(^& zlnQa31j!aaG%`N3w=M*6xPKh(fW(hmrU0gd(13Z5#SS@Fj-w6d-(=DsyD7`mU0C?$ zf0B1VqS~)?nS#GsfDJ+Mvvo@B6WN6;0l+cgsGdC^)}*DWNgR0fZ2x&8C0L+T)1aP- zvD;%yu&~%q76jaPb)9ZO>^+z4lZE%U{r^nS!-XR=wh|fu!#Kge;bYYe3{E2mzf4In z!J8%uyLO!Eg+g0w<^V9_a4yM+E1RPJ=PLWZZQ7ng1Q#@)= z3|a)1Cf%dq?nvS|po6XHF^0sM!{k$oduK#u4*V^U5z>wg+}g|McoavO;XML)`q1Jn zi^D{K{P(ousDQI)&*Gqty)`#sRs1a{`Y({smviNKc3y%=-d8P`F`pBxAeM+ zvG*b~p+Rx&v*oXz`l>bg*l%|1lO#DqKk%LJ5sClw1KPh|h8ivC^~=q>@b%$TvGV0l zJ7QIH?6^LezVPfn{>t<>O855OS&!n(ZcI1-^;So48&BO54!~uAGH0? zn)v^_!k+d6A~PhoLcfF0HRuJ#SU%PV92?%3xaossb3>}ep655q$HxA^)+OvWwVG;0 zC{;G7GyqZW+1zj=QFSw8=h(5l?^XsPfe;57Pv8bSs}2k z?T;YeFaCwanKL>nHXdA+huDng-m83$?GPWSrb zliTVGb?w)0cwu)#+&(G3dm<60(TkNyvK*nepjp(Qhp5r({e;wO-q2TCs79~e3@(^F zVCDF1;?oTO9SWgCGq&C|{cox^{K%jGXsJkLU8?D>6WvllDS$O(_CZs{eM0vALTiQV z_u)&uuh(1tYA^3RH+7?JU8K&LA@{X8N%<@5y;vQ%Yjr=+Y;;*Tlq&A3;I*Hk;1$;# zrG;XUIQ8NK=PlNxcQd?q@YD=W+IFRRjhruCPU|LFqS919qkhD~gf(ezc3f$$iSVyG z6q$AVci(6}(XIDQ;%4K|=X**vit5b&wq)`n_la#j^5r=*)|Ud$Oo=y50$*y{-SY3t zk%Rt@by>$YK8}3)3_Ll^dF?>+vO zp6)e^p{E6Z8@Xj&-rW;qwltOww3jsRq$w0IkXh1CTBY(x_ImJmc4y(_pKP~g-CvU*4mY&Oh=_1F8J$$ zzT=N)Id38*S-6HG~IPn7SH=PaJsv@yQM`sM7q065v04jC8YV#4L2en zNOzZXN|$su2t330IlsR>hjY6-JA2LSyk8eTY^LTMe(49PuEPDYOOi52gA9|I|Hdzb zYHGO0C|h|OQZKz9V8UGz3mv^-r=r@d zi~Ha7^Ew%cS5E)#=vWvOTh)sjSUOYKsP->!y?sHzCH?GBFlj^vu{HX>=9J!7;iC8J zZ7wW42E@it^NHVaQaH~W3SYCKYBcTuK?-Vbv|}`MCPeu}Fq#LP2&i8A3in4*It+fI zMu|7gL&?&#impHsmM##Vu}@2XZtrO7N+E!xM^FqyXrWH9m9p>rFb_Jez6Bw%l5!@1cza2@_$m5kcK=Eb(9 z%dMn3?XNLNP8BP?`*1!`SgzU_`@PC!%S3@)apZH*je@xOlo#^M{G_6ZxRMvaeb{}Y zP0XYhnJyX$!b%l%E#yAfstQFJ)6+@PQs=Y{3LO{WGydq-Yj$9aP>-% zmd&yilIa2mA}s}QNvx^)-Xv4C%+$XwZ+mM#llby`yo+zUCzrAM1qD(l<&g80J%P+C z5UT%_(^eY)FSB6MS~VAaEL$*}@B7eK^QmQ))E^?^Rw=a`iXW7&e|x(UNVs7LqDr_t z2B*j#;Gqe!08e;4G1vhUd%OmN3j$Q7cH(4lN)xup58 z&w43mZVzuS(*`=|s+Mna=0vLl1(wF>dy__D#L7eU%oJr!9XCI@6H;nA>C~5@e-&IXmSG^I2Yx!lC0Dq;(ZJ0SoR8G?q;m2_fEGXTHsX zC(#^buw9?39wxig#?8&yt~(ZGq@q7oX$er)D(Xd>oO{!JVmPa52RCy`W@FsdD-_Gs?Y)Ah+b9 z{Wr^cRZj%XuRG~N4LqP|!Rf}rA*2JawnU}WGu${;{=E$y!xpn5G0rBOO}0H5A4mNO zyZOpZ4;jaglDxX`|AYvC`m1JXpa88AWU8=m%}N!#(N>oDX$S4Q%@avuC9@)RW_6nx z(tJz|6_t(Qp*}Nj{JT66^{xGa$&-2l4%LClhN7dAF@9}T>e)D(`8O&b>&8Swnt6>!-FvZTKT}OR3>VDACZDCcTp#?9+W>=g+G4uPjTt+4c zS{a@P70i{W1Ehaq*9SqGOUYws^Iu{9`prRErNG7&(V1t!(<+I1g~f+Q#T?>a8QSG5 z)HhaK{k$92eUxfVJwt28M#G<68ekK?ux|anazJ)I`Pi**O$oo{Et&r7d~E-!b99Bv z?%h{wSPP*+bUCMwS&*RHo9pe2HrVou^f!mXt!Lt56sJ4`*yffzSaP#CKJ3SPi+t8XEXnBnyuH}?qLYCkzWXDEvV89{jTrn ze6c@80mYtwYOFfQZg6igZl=i5yLYc<=n2P(L{rP+DXvE`yCJ05_SUJoGic;kMvG5# zHs&t`O6AvSfBZZ$1oeu4O^G^tQQ&gUTJ|75y1$629p7IlI~efp%pB=KB8fyIg0c2? znL~s$)NvL&CBi4f9SP)%^ia}ai|Kd0R6s%c{bO1E#M52$uz?c6x57B5qk+={?KJRS z)22N#+_0(olmP|PZY#GI;fIif zQ!9h?vr<<6&F~25tUQ>=elYWBVxlm?oLp9m`=z-2?`#S%RHOFmFFBO`XCnsLQ%=fn9m_8}lUG=( zepKdLZxJjT@JlHD<`kRt{T;hZzs?Tp!M=yq?!Y??9+`p%(I+)=4PUil$lVDJF}o>J zNT6VK*bpz8(??BwVG75VuC4x#W${TfBvkqW70wf~ss9Gv5hHW+9jo@;cNI#M6Z&k#X=JCB@LN)(cS+hpUt1g=+^90L78zQw1rn!YTR~~5)$FxM=q6N`b6c>)eljFN8R{P1kbolJCF|#FH-Xj1c18}+ zf;dQfvhUwcVr*TtgH?Yp3e0yB0nDHrVpFkSDgXS9@o&h37sWci7CUaGI6hWSi{&(W zrf9;SZRJ?L{sFNQx&E!$d=1`*`ac5!Cu8)-KdaQPrgr7-JcU_q+v?JXcm!Y_<@Wq@ zqF;iU4_Sy4j!-4OetH9^#;2QtxTVwGX0-8NDmSWOmMD7IsXRC)UP8(QX}~q*yBJFf zX*~XOqa?z6j#$H9n?4yoZmwg`EF`l985CK@dtg8P!C_$}iY6cQ=|M6rohS3I0Qz3* zEEoN3bsWq3g8a4~qn(0FG7A|!Ov@^2xy=sl9i#y4@3MN+pD&_HMWKn@b7Gc~HI9nq zIUT|v(z9y!oE*24{#iFD-+YVaE`A!;sfrX8ylx%&1sZz86dfiBeWFtf)eWPJIb_qY zj5+8J*qMOwp_Bdmct>_YyrO+-iy98&Web$@hv5T+=rxNe)*(iU%s8g zvlmK)-TB49VGpVXpyf;c_05gC6`=2-XsJZhcIm0OQPswQ^lxX{TH!+9ipttbt zr{5be>;`;Zh}f*O;jcM3$J;v+k#m3a9jnRJX`dNRrTPB!rewwF-g6~d!~73XVAV%8 zmUMLms_HvJ48^lc3a4(W)@Z>S-_-f2#|D#_9*h2uZ!T6}NJo`G3^{ij^(c7_Uts$k zvq>$5yWORqEp#VzDoSJ|R1$K5I(5DXoJ}jW8ciZq4epFiNFmZiy`&lg z-cjhL;s;VBC%fXAbU`-++65S@X5zXp=yrd)a>x^!P;G4Uf21C`+3HRF8P3)JXqw<* zy=8->0H*-8r)(}#Q6j1I7VlG6^S+}a zKT%BHZZ0)9{JjvJa>mWbaQlOIS!K{uQ^GG&7FGbOe|o0I7&916!%quJ?d@Gf=q}C; zYW$!z+w8gD1M*inu{yI{Bv;G+c0LsCO-pKKsGWJnL&82PCOMvmK468jm~AkO>+sYG z(lUx5aiQc0zuOSoWaiuY6IHq4biCQ&(9pQUpW~f7nR!1B(L0#;=x_?OsedL9{aCH~ z*HE{_0!yFKIYpp0aGE1E@&I$Nx!#1W0Db2uqqA%*vUVD|et7!x?l4zqWLN;Yvt%U< zFZlry6iNzN$jVenmazCz>VjJz2+G0<%>|=_mN)mOU09~V0=oo+6q&0^RSB?cY&J4& zHl~+3G#G?BNo0(aMT9NgQzQgW$stRH1z`FKJKAnBLe%re3NP+fNRyJBIHlaxgd^J6 zIB7Q#>%hq|!eFLOz@BZ~#U?DJR`Y43a}`64F;F{n<#Ac00IPGQ!0YW3@zB%yGU(k|8lMEW-{K7vI48H-Ooczq3a;zYf5;p-pQ zzX$(^!nAbCI)F>Yo*yIVCzQ?U8>Ir5x#H2YtQG(FMzyXZ(4C#;gB+3!qlRYR8|%*G z+~{<^W1qSL7!$qfpXjQ!*v%&BJ-K0DsjOAFJoVX}VTwMDD;Pq9c8`pW_;}uq6SHHL=bc|qQ29N%N211X_K&h*VC!jAjEYfP zgh1(!-8GXhMIaWVtk$@hNN4Oyn7qpG*av6qp5fT zgJxB6@53ozM;qS}kB~gm{fvV2i=qWiHye>3zw^L%!2pFnsj6t~ynXn-v>sCVcNKu!JJj+T6B*(tMMU^vs*@=)qg4;`079RbE}v zx8iWhpGRP*FnGzQ=wXWgC^!U(k=2PC6r^a; zTE3U)O;qCo4T($19W$n7)D-x3(gXzNC%Un~0&&mKQ$7PvBExIV`DP}ziXDh3^Frmt z1CA^!N7YXD&|12?Mptx%gopNS2nNqHaTGi*Ipq>Yzz zg;l5^fy{Z>@86qHzX|y(SY~F`cgr>&6f%==7{Kt@+;sNI;I-hX@~!)C*v7=9QbDNy zvcD0!P7z6DL(JmZo7~PoT3uajpnlX`*f?br)+$+Z##t^x@QDBZ(Un`dzFKYVjq|Ek;O$A3N{j_=Nl!G}5Lkba^i{y||oDN_{ISPUydW~&- zeAf)}!?sZ|7)7%0zkheeX49*Ur?+)hYcpQ%JG|HUXKa7y_^+Ma7`+~^Tg*Q+m}D=> z(Y5e#rTFYBo{JIJd1RwBX~bH0 zqK8aJ#bbOqppIfF`b_c~Gs7gsfJ(4l7+4*3YZRd{ZYM*ae5K+ z>Pz_M9ju4j;WTB!YG}`y`+G(CrptM4n81TV`adc`GVUM2+G)Y%*q<(l*e6QF>N*fc z-I*3(Ge-PsUBU!$qhaLO^DJ~s7T=iup7Z@%HE6#X6eUKZHLctHk+NcLH+TseUV(ZU zrqJZFa*v1qB3aj#3(XhlhbLaDQs_=nm&RJ-E*2qWExeFNggbecDU_1byXyE+_QiH% zX-Pvmu=rSw{$l*>$Y+(Jj0ZoZLF0KIG_p6r0$Mbs%Y^EB-BkGz`FpWM7l1wScEiRP zkB)yC`lXLYCcR$D)28?1h)k7buz7Zd)FD&#=g&GUZGU>eX&Kizd$@Xgj2AN0OYP2K zrQN?-o88m3eG&)_OQ?Zh#d@cKVc+0ekK(8~zjaf#&O&RvGJL&nD$@VmHXg+bBmF1x zs{U>ZwVuz{_@odFlc6jq+SUMk-#0Mrtr-2T7st29#%qdaTg1!V0*^j!##=^(jd!6$ z2NTTgg!)RAq@^R%y|g$=O0YLCQ(IU{#bsQXttgB-MV*mz?a1u*RSxjO?6n)QeATr? z^@QXv=@5iR){Uss^(s`~Q-e&DxTn=JsC{g%`XmRoQ#-hbWl8KW7+->)Nd1E1u|T`r zkQsigT&QSCrR>ad7Y|ic_30T}+yE~69XG|CrVQ|Ph)MsXLW=vr&3ZMgcFv;DG&rtj zeVEa7nr)#;6Vz;fzcQFiEVHfN`ox1jP_JreJYTnkvq`4k#+UnP%|LF0lkXZg6aMmn zHf_38;~z6QBUo*^++JIW$NvRX&9yzJgNniUKyAZ@^T^|MRI>KmPwx?GVPkxm$!9U2 zTXG7mUwn>t9wn9^r+kq3u2v=XshEO|)!^DtqP^i|dKJ`uL`z5?={5#$M&uRfs-8iZ zWWE`26J0Z87!>2> z>uPfIFje0C4`w2AD_D$`oRd215g}*W&Vvm-MJE&Of7WsfA)8*>gu-hwyg3L+e4W*) zj6nj(h`c!CEA9x|C8>R=Nswlw zwpbekY)dB}&7aPdqLhakoibW72;$!E*n&ShT@VV)^UQQ2D@}f?J<`@g*X>~n(UL7f zWpLw4u)w~@<+Y_JpbjEO z%?DS#A^G&W2-0O8{I^mjp3wC4+m|_eF}<#k#G(q?dtHnup821Tjtmf#Z)WcqME_*? z8y%*VU8y96GOdzL$7sj)qUf7_OA-)W>7BYB81~*vkymbyE&O~B1-BC`mN0{^}T*>F34|}4ka$CA#fmAPD zYxUqz5FWAPx3P=nygj(^b(;Xz5EtcauJk{+46ebUTyK8g9g@^9B9CaS*CSv(rhzV< z`MB(pD38=l@zye&<}wty(Dr zhX}igPV@Ou?%NH!Tx4?B^}DHROY-1jEkzjXBQMEL@*lDUH?ifq}_2hb|z$|Dh9)!)%?#h{9u<%;tiH~#hJ-e;>or%A>nNijNirDFULE?Y$U?}|;2_EQ=;Mpa1c+5Q}joG$(&A0GGRP6}XzsexPf7?ps##7x~i-uWw8Y0VU=P$PodOU@V zVXpKknriV?R_5Dhlur0a!rpoFucu6kL`GqqVj`-$+>Kw&9tpW-bkAs|&z`VgG&Zgn z#}#k8T%u#)o;<#FMl~CIS^rDA5#=M@NymcL{3|FeH<0}iRID%kZnmEUGmsxGgA+Aj z^4}v;zgOd0-MPWLWlE$Ic2^b2!))8ucy7M&tU*ho^)jD)bAi*+TBxMTig#nUQ8`c) za?s@{&R`~&s5vLB%_OA!A#kwd9pemCNM>73UB-T!!nYTH3>R8&4y{5=b)BF zdBNRPp{+;r&=5P^q1*&3uP7aLN5${83XUz3(NH;1+y(Uznrm;P-^#toz1) z4OE!B3^Ghj=|M<&n>WXe=-v8ZsG&`pdzBqx5n$>Pe8O~d3&hK?*_4~GnB~-oYd-}q zDaH_CL;XMs^4>F)x{6)&e(ztB#1f}+`hZayu{?@Pqfd;5!1v#yKYW#Ja@S%lo^}9K zL;zw#q2=NmD(`-{_kk;HFan91B+)QIU41X3gTIDL9Mo%QTsVkj1;jr{arKE8#X}P| z;QIUHw?ATjea|h%)8q`mr0nLd`{1&z_h|QZyA4$!5GV%35dPHW(PA zdEdBf+;05eXas7#g-he4HQvK=LMLmXk7|Yf;us8Utam@gac9S=L;O%42yFPTq<7CO z9x`*i8@|#{iE7xRbHe60m_0icY(Q)^Mrs~>=Bz|OgWi1mJaM>Qf>G_yh&QwiCzm)J z-GWrdpeo<^?4(_`3nQX+(#wlC%$8t%+)P%O*pfiL%`_DWS7?3iJu4Xrw!~rSYZQm!Q4_wlrJgQ`a$` zy0Ts1Ty|{XK%`=I7aGAiuO`3jq2L}yX|Fc{*1Qwna|W|&MqZ2(=~Cde@SzD~zfIi) zYGV6g!EoR^H56R1!p2N%gIZ}8={4SM*Y;W-)yj(m-zlqhsPggoi>{o|npgH( ztFacsf5q~Bhgy1VJA&W=8yG@6e_Nw%$dn}OUMO{W=iKHFS}|zk9!ZR2`~sVpG?_6k z{!J-*YsZ}%$@JmR@)i0~v6@fD;a^cgoTSXo_3!NIx3{Itu*u#cy99*t$L2dQz6@A^ zo={^ZA%cl?a`YwWFjeGCMy|BH;+9389GBmI9|V7(yotbXl2(B?+E28nlS|}q8^RYY-@HrR*sRM^3gZhFy&Fc%s`7U6bR?+TV|2Gp3rny@iiK6c&~+a9n+5*- zE=YNOH|RhPwh8%*)0fD(Yi@X@q?M<%Er`CBXB4TC;EUS{&BHsiGDW5}sCS?^BjQdCSi z1+Ovdxf*>YiiZQ@7G>azKYV;E9IZ)MK4&Dd`=%oj^2JM*1j8gQgU-orB3(Hf6N)vu zIlBz|%BR~qQ?7S1)!XLF#^+CEtZ;^!RJ9-A4C{6tQ<>z{wFXHM$~?Q%aI zIS)xg#KDsTLPlMOfq^*5rW4lGRApCs>;d@MP#7_T&fn5zC z;-G8&(-}#xU!5A}hb7vR0B~id;HS7pTdyWhj|7>#t-=uC&#tOTiJT2wTy>l(j9N;Z zTHlrs#vVu)KBZ@Yfr|%T{IAg(&u}D@iT0mp6CJ$RzVY_ICL?KGySa z7!(osnVovUbDH5$-*yt&O9{ci$FEdNCgrf=ck<=ZH8kyz{%QFQ_2O9d2}J`Qg=v8lsnQotO3) z)@&uvm8%brj`sd_l#0v^+uFX@=-S>Y`L1eg zu`_Wkz5v1k_|$-v+5c)VU3-Zf-QIcF@S;35&u#6ft=!*cvJQ^^az4_eND?(v@Kxmc zeJE=(dv2J7M-D0IQw#1K976Nlr?sAhD)|~3sd`SZf88A|ww@9%Q!*^laOYuMrK31u zl|c@s$FB@ft;%XPrFaLS5b2>WhnVb*7zjv1rBb>@zr z-?c9q{JR-1^2zfdTWi$wgn(p@L&8SZs=)f(oQig!qo>vQ+hU>t675O&V6|9B>15<8 zyH9-QGG(5JY$VF<(=tDz?iZ}%fj3~-rQu^?lz1|+7=>FjVn5JzMq5lYoP?of7~>}@ zi?29ZyN5Bqcjn(-%+vZ(9!@Klc;z94%cMWWPSZ&0S(lo)hu2QY_HnH9(E(RouFVK@g0hI6c^92KbQCarN zK)6JIi(g(`NQcKTXUKX}h zuXlVnf)S^+{t0258l1s$Tp~FbT$)3mWD$M#XQX6X2%kLxBtmoDkFjLNW(|=N^M*4L zbfIUz07Pz=%Fze+cN`6ADFI}khGh@EcK26%Wm57cKUn2kJF-e-4Nb1A@O*B;^3f-Tn^qMH!^oM8+gH>M#5DFiRfvgkkN3# zsO|;Edqj2)z3qZ_{D~#H%<%j){&Aw?ITt!Dh579G8C8thTl3C2_s-`DX;0_$6q+y| z#XvbmEK}xjK~^epI7kJWFo_upbW~MX+^badGR(84UZ>emluIm9cNQcIg+r8*t9@DF z_^^V&=n-kGK|((Bne)Vmg3(%Dw?K`MYHTMZHVuq_u<-{!f_c`@n8`&Lr5YshE z_4MaMvqn1J>FySk;FZ_NaYU+zBF&5DDK*P7r zPsG{Cej9Xr6Q+Ijfldw*8XOWbG&~lb*zXG4vr)e*out@8jKU-Hk~&Kn`P2L*osRqZ z-;R59V2pOa&MtUXwVX*kvNx}rNI|^}ljr~2(U^E8gjBy*=WLKeQ-mRXKIcFpzpsn) zFmC-CGWz%#6HMM*2dg()?%ZVvb32_;P~6UTy^p$|HA=(uXH5qruvPDE9i_E4&YZ9X z%Z+~D)_As6ix405hSVJNcY>D)W;m028~VNX8o%)oM)=58)D)9>TEi~q6XuxT>GNOJ zcbZ4f#_4R{HD5chy=R(T#X?->vIBh)T_Ji8Y2dAW4FY#_$6#prEv5=|n@hE9*s~B0Rw{?C<1m?OW5GkBzqkT*gvb$@Fp% zI9_P!e!fp`2mIl`Li^L?I%k+Bn!>FyDw_uJdh^0oktZrst;s59BRfY^KC*^k+V zUPH4Pl=%Q&5+Maac|xANUEf9R%>oE`InA_9!0EMhqt91=E8&*%*|Dm{a+l+?DV zpEQ?aH?!KESBisL_~K88&o@=08C@{y%rCyL>0Qg(^kIAtCW=M*eb{voyY71L{*%cs`Z|@_2SK!MMT8-o`#O@+S8ck6^n?#uK3QOE={It@x%A@Ui7c;fO%o<0VQNE zp9rL6!?*%N;RWY*s7j^|i!Dbmqe+{=uR3*yR2^!$FLYYd=(Nkb9kZu6@JE&TUu|iB>F?9-=F$og-XWd zQF?dT#GxwC`mc&vE^W&|i6k4D7dlV_&WJ_-ubMdaB74w9!v}~yXxR+%NFZt+3*@1s z#6(FTGXWLr(_jKM2v>qUQgD}P=hnHZre^5>KXwm7ldsGJfRaFmmK~sQFfcG66r-@8 z+(AJ4sm?|}ExGbDmTq`hoEARH6m@I!iv(^ws`@jQ9yk5|3k@iOvRT=j&sP8a_Psrn z5H{xY&JKTkTb+P2=d~)V<0G zF>r;tlHDeFNgig{wKmLikA_1r8@k$*WK>|^9wyP1xBiL?NeDk%s z0!VSbcCC3eG5~h~lF)P<92iMMnpv~XZ?c8lUX53f)d4v({xe`H)B@L*!gC$kzU^8& z4D+MbU)B#xuO&E>xr>Ww%|ydl%AwsCB=& z>*ss5f&ngKGz^#mO^3@)dS#4E^a7y0*)h?rhsqUsPW@}(Tc&?ElQU+3x$snU`mq_A zA_YDKI(!X&Yb~tHFVD;GB@S~!icjpP-t+KAs8>wBt*!NZ(e^G_UNqyx(mYgI>TUdv zE%>+b+fBkinex!%Q}^LvzJ?polp%+>e4?ux+`+n7w&^DXHc_?*ZF+ZDi?_e>jWS?P zpP;>C8|_0NwH|WK;rGv5_FrKyksa}a3!x;t<=tf}DY!91YC>aL{<77)TRslGE1`cE zL1z>J7CiTRh4H$;ziRWoeuW-Ec(G1@&3O`EMxtt7qs86MX8woLTDza#PfO&>-El^s zqwVJS#F6mX41P(g3dTBAt1pZGA`^&OWdUW_o)ssZD~Yc*wo9d#fBc&!H^?t#2NXWJDH$gOVxqO-tiB-M)d;4pWNh<-R~=QO-pznyZ= zU3}^#ib_se3ER5@|a~s5olHgIfG^LrY8BUVbMmLoRFVCzL9q zXfm^kYpGwY4Zd*mR1^{)_xa=)nMlUKf0c}mf+C~${)C{H-&f*4LE;v(kx)eFXICLy zH+G(<3hBItU>T(XL1BFfyc?o{7(iPE6{NVwCsB3EWf{fz=NNR&*Yf)(_A)*FI z7f#yz0s;y6N6mk~`0f6@swhC3kuo*SLu)q-Rzr-h4-zuta?2i+CZ46R2}`xlSJmn( z*uq5IShDoYgI}J;gQ@5@h@z95PjDgj8+Qxq<>NBL&#LL%!@x2|7$H`UAN=BVBOsW} z`t$C+2b{)RtH}?E9slmsG&?m>4ZR%yLRpdpH-_IC&AtB=SdF6`$Acl|&H^VJL%!*c z_=Rr&Aql7ky-~OzRJPG}yGlz2@$<2K0s3WVY46yK^8XO%=*wzLkKPAff&V zTT~@zpgbvShZrr&`j(MuSCA-JCQy(GhsGun>Z_P0zWWPIGnDnzNQVWz+yiOaNMF8G zgl?TRHVFGs0ks(1Auf;_N;3w-d>D77saRu0e$uqvKGt#7s~NM<JjQ z7e5oa@}EC-*}j`}wtkVNk7?bWRj<&yz+@9sZ5=#^fAU9=0BngI#D+*qOACH3hAF;JtztbsJLqA5@-t z$&c7yt!ZK2)$A-VzEAwOV{)WI2~*-J9_H5(-6=bvHGJQI-x)Mp5U-f+jztgvJ}b%L zGXW~-)dd3K+E;1@oXZ&A5dzfJt7!pZ?j=f@?a=QwFT#^ z`!oqJ?umY0w$^mjGbk5!{1U=}DY19mmT8d4k_dskK94{z1VqpWAPBu;q97c7R<5WE zKnS1^qXN1D6jPv`o9`>x1Pse2(C{!aG66nhzx&MHF2Dk@Oou1SKxnp-yDPB7ZR1y|=~P6*H`J|g zNk!rp{kK`wmLj8fBqt}ZJ@$y%%jnER7nFaXAI7gRAt09fAPeSk1FbdDv*`+xeK zx&`9A)Z!y$K1=5ddHg91pq%Hhv*EfP%K4gIpQw@XQ8|lweR1CwDc5p4oIuN>@LNG- z|MltDi21+W)2H1$J$YUtOm;XK5J_Wd-x@gWFE}Cw_NNRX?1^vyR(p+HgV*_Ps)4;3 z_&@$H&$}M56%T&!s~QU!^&!CY{01waR~8jWD?pAYB6}b3#B-1r;J2rbTVL9fSjc68 zI=TwIfq?BAg^JVCP-!n{LC}?QMN=cy`jKgQjm*9b*o~|k21Q_webYvOz!&7barR80 z>yF02*!53jq9JFn-mZmWt#P+f6r+PI=t+;}Y^st#coy2eoYhBD zZl2+#lt`!$=_i>X$8hxVh2+Rmr>e366PZjxE6&e2NozLVwx)kS=;h{-w6tE~7x3h4 z0VtS}ntB6bIB&|u<^RuNcIl^nA9==1}no4+sJf?_uJxp-S{lBub^G^%?s5Q z5}KFEYoQVfyiq`6Spp^r7&EaT0E>mE`LI?Bo_BEbUUh(1odCp}Umy5opmbYt9YEOE zzU+eSgnREre{h;ezp~q?jpWTqS6oVcRn&X6#>IWip&h^?&pu(cdbXL?bT^Zq?Wlj-xH#&WsH|KI z`$i8oYez=5YR5$_015$8^WngxCO2ZH{T5yD%0>W;X%7V8L9(6}s2RYQgJ>l!{z=2J z2{d-=r5!<$y(;#;3H+ado`@$iHwY3_ zl?rax4raY%AyXtW-jk6eth6fqI7Sn{U@B%926p6UB4o^lV4qA0z9wNBqaOJixnUv} z7|M46!QU+k8pM-~v2dg^l#STlR(lZRWkI(=|95rM0jLk72(Z?EMFc|-&CPKG-9= zM`UVc#$O%<=v=P7EQ9TkiD-&VEnG@;jhw*PmW?FJjc;k|_4X5O?7ZL6Yjh&T7Reoj z$=%5U9drVx;XQ6b-+4z`?EERB3tIg0_jR0tob~HZA+>MJR}?T{j+O-S=>LQSV8vz# zxv>D@f?G{Z&B{IYFr1nQrm*wBt?6kCn7%>{^mB&>LSf?xYiUQBk2N0>T}4o)dc;Vg zJ15~e;bgemDrh2H2e&$(dgL@E$cXLQ6?xib-d;RcM|78P6c^e=$zXK}b z>lWYiDzML&0h-hUf8o`|1N`eGc%+@1w5|T$c;0{X;(mFuVI`>0V4LHs=zsn4nCCvb z_YIfi%X-*`5!276yX}aTMiFCwJ)dNKr~K9%O%+Lq>Iz)8Hk_^yZ^*ADvmFM{{THeU zBz979OCsqA3E!`G`Z>f?wbUYr>dF!apOG-bo{jPY2+Ocp*Ock^$y!#%zR??&BP)g(6*m%VbD5-YH$l&k9qm_e`f)Xb0uz|9p60( z8OnYpaG)zkV?u!&kW^GzAVT>h(Dy-I4h}Ig(7BW(!69OrfXOjZF_ngp=oif)=L}Ww zxRV6;1e=kG{Buqv6AjdqH`LKR{1{p2@mh@00x~&u35E5)-}kqX;v?U#RUP%O?8_%{ z{#$`5fz%eNK>mOS@E*L|Ugvp$mWh&YoqN8Th=8C$25#2+5MyqyDOW;P)@XMaD)1^d zj~muX023~ntx`IDJ|Ttq3Kzsth{%I^M&UA%B|cCb8wxo(wAex13}IQY=t$nLoW+tX zd~G$Nm6zy>WM-dACjv~auLT~kvx$Kd2KW)C2GfzZU`-Cx7RU8Y=+}Dc)kMGaGsFSw z3#)^p>uvl$(AJ4qLoMT1`9{-?C=`pc`1tml;C>E{)m~^!VJ}l~=KibByh}Ij7n{H? z%(r20$v|_o{nS_vi>GU9zk+1c15~E5x3n?66CSL9G*Xif5s^cSI--|hn+>Jo>cGxv>#c|f$yX!C4yvjtv zq`vX;7j`b1BG$Ds+6L-@eEsMB)sSJ7at{)N zVzdNQ6#}@#oc*fUzHe`#uno_>I}Z^eWRe-)HKC5`Z8H3rjryMY=UALG;Iar}0r(ZL z9D5~)atRSv>;=H!Zv|*2P*n@=4na9x2srZB1{J=~_q$+OQ853Q`falAv&Nr#yOGn5 z7YIi< zUIO4e;k)&abVZ#~JS~7ng14O_pf()Z@54)TybmCT4crUOV%c((-*@(ggrOiZh&=l> zKU{4MYJ+99-`EU9TpVbK3=KEb*gwjBcPBgzXi6ce=|X#y9bqAk0b3!8a94*k6j1Jr zy5nQJO7ABQr9XZJdztP>3vXV{3sauiz;yaRz?sSa@ok}_^m`Q|a}D=alaeN1Qx{}!)y~P%O7rYElqGK6LC9g~#^yWfX9&kNHXj1Ce(F9|pjWjHfW{pp=-dGSKx5Z5U9g&ZRjMm=s!Hu_D zF-y=XxS)XMb$3WoGI*RmLE;Ni%YI2_x`+=yKy%t{NNK>=ilT~MJYGFKwE9`zqN&eWA#>WqP#?ulp|mLlLE1 z0vHAoY_I_ersh|}KDxk^KT}OB<<;8)kLU32Z#^(Jf&Z2Z zmKU#LHRx)sHkAf;hUttdc!iM4{^V{ILw=v;`p3dl7UH`bve1jGQE?dxL-@k`1)>to z>LtHjn{(og^MpmKTa>8QP?b;KuU*O{%1c0dYicyUm2~+HXUNUN1MI(IK=@htuL1_P zqgK;q?z^0+DHTA4xYwPTNwNp+_g~nqh@d~WtlzmWT;VTVbp3}3%^;2q{V^6naiaiJ z@o8-0NzJKhhIm^sr^L3#bABL~43{Fne{hIDNVm5*+LacELP> zbq6}?q>qc#LH+}$W*WrSMpfiwU%wj&d-}LAfGtAmAZ|No@zPmG*?0uY9sLYJ+9+^x z0Wp3TRNi!=e)sMqGjWan4a}bvvEGq%k12GFBxO{U{p(zFhG3))*PQ_At`ISv(~(t722^`Sy|kq*0|v*znY4Bhb`pvq9&p zlA-oapOfohWW>AKDc3dJ?5J8ge!i58MpECe6GFPK)KPwuMn3N`o`)PK>GR@4!{zcu zne<0)X~A}JK4}9SRJ`nr%yqec{YbcNmnZMW?Buh{pW-T7E%|5~mYJ+?K){AaB>-BJK;HB|puMG{#sFOU0VrdyyDjz&Eu$yLDM3qH zJDEE}t=IdM>6PZU$}Jyf(}jPM@@-j4ZNz{rWnw1}QjDU%+^3}?o~9h6Sp64#`k9vmOcWA8YP|!SI9{Nf z@Ec>RR4YUPn@+nxUgHJ*4dusqz;Fhi+zsW0FXyu!h3Uiy<hEKbqbHp6kAS|8EbPN_%P;iIApfsH7n)k`ft31F0mV zT&bj`2rU;bAtV)1qGcA6kd{$WX&4O@{?FI_{r&I9_kKL??^PF{&-?v)o#$~L$8nx# z%fQO(uab_nyD)O*SAX36u47`)7MNW#{^6RpfGKku5`vihc=n?!ya7R! z5ouz?V5nDns?obojMmg@Z=S$bkuWhtc#esUlhW$?XK}l%Yu0w&Y$SWyChNX~rSZR8@PE&H`g`5;6W32LGM-v+ zcJ=a*Ikq>-o5lVaHM@Rd0O;^JE}LT}tE`EYPB1B5QzkdS&U@CG;H_gCK7{9LJi3b} z%PdP~J&IZ1#}oSxVpEO=L$5VMU)dV=dN$=?kNL&DeD2-zTY6)vn~!7H_gfw{bxMo+ zwbQ;%*J@t>qUqruY!Wu9%XRxaPO;Ou#d5(b%GNx8ZF@t|%Diyr*WFmb{`bTKm*mdL#SHOb@Z#|-8F>Brb+wfK zB$m!(i`73|5K)LS9Qmh%!7fc>V{#tjc-O4*Rzg54zO};wN^~g`2G#5e{$mm}bK?)k z#l^*{9%A%$69Z|Rjc5Kbvti^XjGW(4<@Cxrw!%5RTf)@#;_3}c%SJG-^_;pxu$Gsm zQc!I8VM7}mJG(*B#@ExG7~XtRv-Jq*@>!H#sOs>O8xq(_(CvJ@>W4us-+_0^o+&35 zW$)~Kq>q{^u>AEd!$rflHY_T3D@s%UHrZ_EQDBqA)P9#e(+*gajt;ExglauLa<*&z zM&B9d83laZ?WcWtN5N9&STYLq2K7aCVFrT-xx$XjW0V-PzJ>{@ZEtT%Nl7gPp1;WO z>R3F}C+12XvP4cnL6&_|>#lE1(EGA`U(5$hkpN)=M}$<#z|t+&7jt^69L--0eYEt- z6)^((=9c14!B8Dc)l@c~XU)SbER13*WctsZG1Y_)loSrwevpQLNXRlKK8qE2gb7v> z4gOuk`0N^HKSnZk)P?D%&7+u!OBTN2T$5LQu2c|ASQ3KLzLC7j38g3J{Tc>Q!2%h? zqeppxQ*v{1#OgG$QqsQU%6i9(gpx$2$(|UiwTktADYcjOMLTU+ri$tUJQ0GZtllLt z1Qte@T@Gu_X?`q?7aNW!{1fd<6h!i3>^f^0iYv0V%s4Mb4I^UIkkA0~#qsNAZol(& z27_g(>=5#Xi-DpLQ}rmaQX@w`reb&myPnM?^?T%F5f^(&NLY~*#K>!o1%v)XmClLl z!{|{(nq?XBxPQN2?3FH&)o%PNo`Wn53%Jqh3to)N^y2 z!?p{tW0kp}PdV>wVwt+nEkNaDw&CA>wcqa+vKW`K+y0j>6|f)SpQ6o*XS$DLzU==E zzBW!DTKY**5?A!nXUT)26}t88F|9TImxi0kl$&O$J#)rNJWX1;^6ju+r*j4~`W0`B>C;Brq6B(C7o>}vT*^=IGwkvzSMRgMu9k=CfWi!{hiD{AD?NE=MPqabn&9kSi-X z+Gi5=D>;EkEfy{pz#Ud7qdbuVO!{P_LIF&+s4G`R-AMUzy7<$h?YD%2$c$g+bEc(f z5X%|P$wnrm{G)rud}oJK&#~^O5E_|`Pns3!oVk{RGcGZ}Q;2GWW978^E)c9T02Dry zD!VCw9$9Qo6SI?vZDL7G=AG#mkpS2w!vY4e^AF336LKB{hI83yptEe*{TgSn^p)Kk zJZ*n}sNAf&pH{bC3Ctum!W|7i6&hL?Aa6Kp_m^NTEwj`8sh$bjA2)aW+5eZfz!E}b z2$d@DO6x6KlFXPi%8*|9U8y;BYY$}Jf8MdK@ONy#>V{}JiPw7^3@_bIxZ5W=VBz44>jBK&}P=F6M z-Q0Xs#zIg{k0Hz1g^cRY&b6fG->>R^!hq#%&Gy9VHrC_EK(VWc15zud$O19!2veD5 z?4uA;1Irf%Ymt|-paToUwiEc*3RUG|R-D4dp@< zsORTHd{iu0#p<+hIfm6X@4E0~4?|(a=x_3CooewM2Kfv0_CT$Cz0y#J(l|@Pa^`O* z=51GJ`gP3M5vv0nfj+oFn6KVD{N5Gg*cUhKPCgkyV<4U@_O~c#O)-*T31lr3pBwfy zWhLouj}QFMK?mgkfmfIU84(?Na_5|jB5ocz(u?gc#8)5{oFx1jY7OM3W! znd)5$d2I=MAU5|PELL~-vHrc)<7uDF=L4Ga4; zann-4!1d@mLK{}A`EOI9-^p#P3KH{}Ej(K$G4ovhn@^SFtYDBQ*H27-Mp}!wq9Fd1 zsmq%%U}erdHo9L=7T$@?#)vG}?Fz@R`QiyfZke)d-r!Xs0xw61mFaSTh)yakbIPKMm>!C}_i|vyb z*Suj`LmJ$b*gh5N*(%>(qh9R1QY=;+Y;26<<>0}CM&)0I+$hQ2XR)=aICS?r$GuPO z2XFsm9`uOjxX}Y$YX<2A4gR;R@#DQU?}xl_eOJ8l#pvxbzG~)6s-13jtd4(vqJR9y z@n?@xpvld+4zG-zj-{bw7vve(ZbXNPS(pSS{?;-ZU1TLtxXb zdyP+KFJjvC?mMH8FZn0eT1HOpqjxQXy))Y4nApr_$|VsEJ3_bc_u&Y64ee9ceR`b= z4pDAB$9gIRN(>zvEMXWZB6DiX)|aw|!IkZZTT0`Gi&HskRxm5Kzuo=4L422YC$%=9p#)q6f{ea`M<;At}9j&ZGJ*)mj5@M5sC!`Lsl=;?c=jF4H{dj4cWVRPup;+F; zZ=2$@?x2J3YXdnvLa@0cS+O$e?;ItflJt}{j*J@*+!FB(!c%J0s1<~n$6qc49xt(H zrISCx|FgD^^10trF8uE3s7R<|h`{&NzNe2JTEFDr*5Lye{+e?lKhb8?tHe*0AKwL+ z-_c2~AERIN+Ko4;Xo^EQ0{Iij$^b;g#3VtMA$ zleRxT7A?-ZH2Bcr!#&f}(}#^1A#)~|>ZxmKX{mX-d+H0bMphS2U~3DH!s+|ldB=_& zi#AKT^7276OH!I!Tdg*3+<*0|(p0mXVh8Tb9dG|Nh;eQIJDchDL@LMHg3+r&HH8)I z^5x5bz~0Z+cjA8?8>Z4_-@bj*)zu{fEfSNGGVk9%z`u*QmBl8Fr^UsCR2QTlCf_3H~P%9WIw(S5wXPP9R!MAWK_ z9L6K4+?)<$d-LW&PoF-$_w*^-7!F$5ok??VIZYu^_3hg#M&f6*RvRe=iLG|*yCEE&UK|z;S!dxNT>b!ZsRyp|5X>~=u<>!)ig87 zpIs1#38;)tzenx37M+PNk^Sn`T#Fe8Vq)aQLc0eCdkeV2`$}Yo=ZcjpacV5^AHFa( zHI;or7x(Y))cWhISl;UwU^u1b)uMIlMkbn?Z=T#(E1m*0P8D~*xur#gtyR=D2ZMr! zvUg_K@ZmLTFTGCOyg41~<+N$d$rm45_(4P9L^*onhFW`j`=mUhTojJS!=@Y)sB8Nh zT_`8V-MfVZB=%jiMDp+3P*newMTg&y+jBpp@_W1`!lCubT zqe(?!Jo4A+9(Qtnb&S5Q+Ian|MBeQ`b8jl2)O*$Zsj2-=(v1LvPGXHyY0%&wg(W3{ z96GD9hDt$RiG8aaq@<-YS)NVoo1*`;A}XiGdHd^>`;=ZCr@vHdEu?Vt5CWfC&c3Z|lTCLXn`QyjciB^k2CVun6 zDCq|AwZ(2Xs#|k&bFqV(b2litsI+v=zM+i;L>zD3NEsz1@yx|uAj*B8ujFu*nKMoH z$xfd>eVVFjYn)08%UnbO(zE}VQx`8DH;9=yW5%!kHmfJG_6UnOSC1k^s{JY#r=&#s z`ilMTtsOG{z1FW^&x?G1VeHG7FMUSTX&uj-LUwCyZDlPHv+|8M4_>mt=pzd=#Q^ys zLxwarH&@oxt-E5+}Cj>o?fxSc%$|@>KeA=Lf)q*uv1jA|5rw`8h zs_{;H!RF1Idu<9dQiy~B5Z8xILNMPez%fnBG8GudabebdRy#TE+GT^dANuu1fbJv; zD**+`j52|`TPo7$fhn_da*lAY@F%45czJgV!&Yy!v02QQ5F40$FTSF{ASO9dEm34U zy14wO7pfV#U{YXG$p7yJSTJe6LZH>wt>)EV>hy}9KYx^$r@QUjq%XR*uMgOomq5AV@vyXqjeSg3zBJg*AO5d#V@)oZ* z7c$f%`vn>3ww$l}{5g-Bj8zX&B&^J%M+%-ip$PL~L5#HhkCLZPH}X?cQd6a4NAnT2 zwY8^twf~h$>ZmxREptCNH|FWh!iu@8b&+v|ah+vmL*{PEdi3a^kZ-UHFIcw^^Beyc z@j}v!f}D&d01~uo-tT?OZm4k_g*BetST;ycAeLTz`}U=PjQ;RcUcN_<9y$}HXvD~5 z5p(10!8WSpp=XUxvEKqpgeiF5SLm;I(3}61* zk@f7^X%>F)TaNxrFN5NF>bWY$h_zk^7KZ(6`S8%k&!30L7wHdRi>UXF?-f~*>r_^3 z*mWXkhvt&`YlA-}ZgepmQ7RW0^H)u7Q}{m>(`JTO{O8nQ+vihAYTOIYz7sr#FS=8@ z@N&zx<$k;!D?7Vvs(@iCR^12)4|ed*YCzAf`}Per{byN>k=Pjxy7U7N!1K$ZumWqY zv#?h@-jQuc6 zGy+6Dj1Mnoog5o}gF`|REg$w6Kg@yt9>|i(p%KOtrHUZ^K9|N%x!J&y#)pN4CrRk6 zQF_P`k}&tWVx)lc;XX{n$CB8gJT9gDb5kM%yyPie9zA@xsJVkzlH&GL0b|Z;$qUUx zY`{W49QW+$Sd=}$SKHLoG&+A<$5pw(5@GEdNUQ z3wDmWt5&fdysNLajJA}+=FK84+S^~*xSAb{VO0F0$%lQttM9t)dSs=-T}cCd#I7=f z0)9xN)fUR#PGG(XKyprAM11_zValulgU;#7N8{WMmJpf`>qS;Wep;&z7Zz^U`pVd( z_<)X+++X17>pOc+LK}PS{-a=gW$+d0OHoc_ydky}7@s=E7&DY@*^n>#bVefyS~r`Yym7W>j=sW>ZM zzk{cLa%tXqaw#CuI4&m-tb>%PgJV;x?Z+V0u0=6M&h3BqdV71XmK$ukZru$wg2u(i zt4y0VUvbDz&~n<{yXXz$_^VTPpS7bS4kaTiKmRz2dw6W@asvY?R<%aGBLO zEq-D_?I~S0VuFwb)lRLzRb1ZmAzxo1aPifljh}~qu$f!)W{;tvp)g8RYFZ_l&bmw{ zp}ryghyp5kYxzQ!2_8Imc<+0g{CLyEE;DD&q*C1wr@qbd_arJ1AP#w5&LUldka7R< z|d2 zU83rQD6HBK_gUZfnv=UiU^gNH& z{|6a<{Fz*0!aJ%X@rL+4d?${6INYVri9KZr7IwI?F+1t!ocs0rw?Hg?M$I|}apELi zSVW&T)_iwU?+;K!r4R>;o4+X1py=NPU3>H!rNg~BxQ)EBl0GkD^h8uHA%vt&Sdc${{8;(%4H$yL=MmKCI1uz@FD>ds(3s z+~s&TGc&VeBWIrA-TxaA@sP}Z?bfZrnes|`Ij2p6@9G9B0NeQm-sjJ+^B?r1Vr=2d zm**%pZa7vg6psRVsN3E^p6E_CVoELk;^5%$uDW_5s*fTthe;j?E_Z~)>6piBlT7^4&n5tT3o4mHTULw$ye8jM0hl-_I*(lgtbXJx%KP)@g%crq!`(SB2TLYOjhFJ}Yp@sk61R4frR4%RdJeqc z%Af}}+1h4N!R0=AqUf(^ET5VE=ux-j%a<2~YU$Cw*dFC?AmQT;TTCEtld{Wlf1Kua zChLd#&=mJ6Jvwa*=`pDFwrWmn4};@7l%2n>Tc{{i^?7TqxBjNc* zws4bu^va!OM|INmqx>icD8+>o!D%fmUYoHBphzk_9k6ZyiFL}9Des;4re|&i zdGsHnF@N2FlB|cQB#?Aq=D17*R!7$7YkmGWtW*;1Nuz_uNfa7e{CDv z?%*60*WVsIa^%P>Mllbl)@Hl?kfS&P{S9>+vs-I zp+JwewwF(-r?8as8#sel$2NE2804)kJ>{R~@=1!kYX>(V@NwO|0G)}jYtA2@3@6Av z{&&GY2P?oAiwGkekEzphrm`###O~D5?!nJmO6?~q8h$CBroPZttQp=P897NLY@#DA zuC`Bt1*9^(yh1+NC5f^hDgny)DTNZqN}CJ{eGyJX?6{J;Mc&JcauZl%Lq7ZX>61P* z8UFxs_e(`aDF50tPH2~m;^)te*frU!U%wC8W4)*vB?5I9vpO0%o+KPt2 zma`rROrX)GFXd`np~H9Y&Le8S|L}oAMBGQ9AZK>t_U)@EMNjEW6kT;2?|0e#{q6BP zcji(BR}*{1I#cu;q-{kV&VBl5EiEko`GhBL#Hz@S_BIpOGwqrIbIhr8cO3EY=}v`P zgBl9wxu8D1Lt4nNs1cQwmHT63>nxlLc1QysV1%wECo4JMfr7in8RK{6ldHD8xvehP z_i^LqPgQ+fP;i1jhK_jv@^bz2Ybr;{2I&JXRJ!@&sT;R$nT(8{s;Efr9Xx6lQNxC0 zMpW(sJw<{32|1q{6k1jv==&r;zvS5TLx&Cl;g_4bKekpC5tsstJ0bv2jP{2*n&@d0arxR&_N_CRr4RknX*XMEm zI>cf;VnFT>jx;8}&G6DAK=W*GI+UHDz!lXCfg3y}Dln>SNy+&kD-PYbal>EinH8q@+XLcBrq&RKjL}nu$iIuTXplq8pdV2e;&P1_}5Cj1HBr1e)`i-Jj z9{^YgKzaJinHV?>N^76Ir-6;xTgtAE?r16W5(Xrbz-l>p!kqTfrIL+{I(nQgzHV9{ z+9B0iVJBy-Fg;T0kXxD6itlb8Ke?~n7Hgn;NLw-7W6<0omuGHj%-fmf`TM|7rbPJ=gw4$Mc%5`-b_l82M@xe!Cgq-$%m?NZ>~SU>yBBr`9q1yAYW}R+u%7T>^E<& zgrNqDslJ=nGL* zB;qW7%HO_yTWlNV&<=tm=i`1Vzah(minPi+nz`E@&48@1itGWi7S5G;u!FM!Unc?^ zv7^LZ=j=fZ*%nB@wdwA&FI~E{+1{SM{z8@_Csb|n#EgscGk55k?}!O7Xx}O-Te!%W)nQ%uqC>qWvz9%V zJ1!pU7M53QM!^lMl3y=q>@{#4wRy`Hr?%EzrB~N4CrAg=Y{yT=YO#}j@?zV)AcZhd zzjS)j!QEhCq>jw&1P?YH`E!{HTdD&mT8Hsu8=i{hf8p}}JClfN(o zSlXItVvAW5KLVYj&#-CxQT(TY1Hnsso9oAmB8I#Savzvzy28pTe1IZV1)bgFG&C+? zClhirr8g%;U|QTH67S}Z`Tgz9Cg45@pRnT%B>*ueEKS5|Rp<9Qmi?|6#0WmVo_iiazUmmSrXIn;mb)zY(|ksG)PE$^gN^y%BT z1;sabnx*$Ot#Pw<;ADLM?QzssxG`0nEde7tMhnN zdwKn7n=yIvWFGYT9M!x(9$x$}PD?=681YrJ7XMJVB^OvLlmAn~jZ~ z2EhVU2|jnO-9bXawpOm!EZ6g+v%f{GzH;iwVpsKBcCD3%hK&r^s^R~*h7NznpP!8{ zY3yBy)r@?$(As|4Bz4WjVXMVXF_3mB7*%ITyd)1q89nObG0UC&!8e9#eGp|mcPKPFE`x%DBXL9>0 z$<5}sU3{t7t+s6O<$ZD0G4Kglg5~vc!#)d^m6#JecaIWuo%H8NZ8Y->Q8}jx&Wx}7 zg3(WW7b`H5XbA%~s9*`i{kJ~u`?5ugx)R`w6r_P@_8F68Wg`%PO*5!10P9rO}MiF4pC?KS=$eyW=RbAk0E^`+iT*yZ};-U5S@S@a&N`g}0 zhf6CM-OI{4L_!Q-EqC}PCg}~AaEgv*?82=Op`*g_F;WAL2(oLaO<9wVd#+Qdd%aDIe_=q%)CLy2g)16SzHKiu(lxSGBX{ zU{$^Oh~$Bh!fnM^2A}kYuvTOWF3<>`-IWiHj1aTsPlRj>Mi2o2_NQA&G1-S?doUzq zI6>9B?-GST=Rd!;Aq{q4dV}JcA0TBU*Z5%@54RewEpvAY9QQ=2-bDE-pa;w;`dP%; z7*i>j>JSJRB_$E&98b!x7wk8qs z)R{g+Z|rDG4{gtg ze%Ib^nmPMd?Ms8_nxS{HPP<2BZga5QrkJPSFk5!XvI4{B>K@tt{0^JGM~qqoaEpHxGK8A7UI#gd7a|qmD8&u{?wV+O0B~(EnAw5pQ&jT zFq%8j_E&vYfcn((pLRAjqVr3XXl7<3c(@Cr|gBXKIW&1Le2(k2@lO)JFFW2@6`M_xp zqWUEaDqef5cJl003GauOthNrwI-Qs=x2bVkdJxBS)|@%c)C~|0DPA3#cm))nId0v! zaX!@=wU_bE)kwaCes3d%d|BT!fq{`99tAzFLDL3x>4$4(-n-WcF!i}Cp^!Sgqkd;e zQBjz1vi$jTCLq8lEuquL<7PIiU`NOq5-4m~m;8F?+o$8ZQg)r=+S-(7mSO#YT5%|}k%q`TJvKZB` zTZmb+++5RCXB$X`itd>Efu5?o35<|lqrpYHYdcPj)_1B+dn&{Qx3H$6F z8afs|2Uf!C*D!u$O3JMJ zc!3r@>G`4+dU|y154W?cb+4;Qo6S{x&jG=dE_rCZ&%yHhnx;nFfhFz{G4m{()puRi=B{H(sUH;5s9 zhN~Wg*?)%UN+rMe7WR^wN4hQR8u@vYN7QoHU#5%;)D=3tjK5r{N;?mfY%_f6(xq_m z<6ngDbap;+{CEu#JNDBh+ooPNQsB+^B`7XX3X$h2(Kf~RLWnah7k)0SkY0EWB=466n5?PtBlW86s0#7=Sv<5hNe$ju+1|`j)hUIW(@(@Z29JXy+|E1H`NCSDDLV)RpuPrqt{r0uB zs@FHn7JiN~1C{Rqe#u1If$8zMznOy4tWs5OGhYkg* ztl;53KXI3XT6HmJit{=23QmMUMiZ2+V}tz0Dm%I*svTlbz!c5lU{H}gQ{;#NGGFP>NekwOg6eTb?x!)97o7)HQOim?%(eW%Y*jg#}N^> zET;7c_(IzlH>`2-{mvB8uuan{9)!yY73Q{!Je5;8IH=Fa87q!__9Xs-(5E*50OL{ z!qth_D#%gQ`nj`b>nCqrE20VVZsM(5OG(N4r854}tJl{94E)cYUBZKZT3SlvqJ<_m za(NI&k(ME`I9!e#T@zyjuA;(fVG2U0k6?{3zj7q0X%3}|6tA*_&remHo4~J{HFqxd z-{An~#eCvU+)Eo`4B5jQ0T3LLn4G)>lK=>Uj|Xa+v|)8^$)#L1xw&)Zh=v95k*=++ zt?voryrr9-BH0KJF}JOy^qUU~z|*3lmWK}h)Qs2g3kxak%dS?f5U@0awy&w8E#H^| zz4O=#D&>kZ7cQ*O(K%A-n5*`;tw{YkB@22T9E4$v!6b|-xp0@8%dWn$3w7F%97VT{ z^~t83x-+nJf+D~!v(rZ5zg{zj1xm zSweUi!V56(A`e|?w&&kj_*_G$E=l0tEW6>&>7Il`=>r$l)y++SDe}i`myZLKH>Anw zk8BzhM^G019;4>&K1P18eE04lwVUomrO3bWIg*ufn^#R7;)g{t=l2_izfgn>Hg2233E^4$#mWDkRJYV$N1LpacC>kJR1d>8>qa(OSk|_I=rrVG9~}F=H}fCOl?R@z>jkdt{U^pq!NAZ^aB{HC z58#g=jiC)^xqLh|z(al4XCuq&o*WqnA#6}n0nWme3iAQYvmYc(3BO1o(DT;_PG2g} zfD|W~T^wnaog3n(!3Sdi{m0+G$Yk$FPEgLcB@iofRflpvRA{;+0{KbI$67$S+|iJAAM;ahJ}KEYQMmDUf&=u1|BHI^Nw_$3L)~xk1Gvzx&&Xm%DD-yv4K;iQo zInprROx<$9u6J2|uUcfRVi=F`4<0k`J7T)rvtih5rtbdsdKtl-!=HLCLN;MNBRwu? zdYnVgp@{729yhwNv1YmX`t>Epo`A_Fsj3RYCl!lr|ZhLIUyqnWArutaM7#&3o6o;RufH5d7N2aJg zvC@NsAT0X$FNBmp^94=;L4^~n@@L*MPzWU1_dv%NgcH?>-X#r7Zfj`#n_u#HoQ1=P z0$23=Vg;0glH*MhpM0=Fs6oPZxe+{8%kzoAxy)`5_2%Zmvz%lQJS^{fcPDud9Tu|E^A#S+0I8zR+lDEKSUxeukOpYkxuc!69IXAHfjkE&FKF5C)}IbkVMvduj(xGj{4YNy z?=`r{hm^(UN||01zE~0xkN==jRQrv(Ws?^W#y=PNwZ7gFc69*^p606zu5JS*HSIAa zt!)}xB7~OM(r9Cwe=d`T#KXzSGx!$dIOM|h)w>^Lf81kdXD9kbPET4+=Sxp&kIVQH zEL_qs393z-Hmwq|uBCNGpzfp}UH2v#Ha#sV5mK2*&dxQuU%r0zQFH=i@kIgi@n#oe zGP*!RLRkqG8s_2ek77Lnz(2g50J%Hq6VceJU~9PMsSxo{BhsI&1Q_;c?TD+Qgoc(Lv9%b$DR?Wi+&R#uk%=FLU2 z!n;qO96Ma}XHO}F0M!_D1uWJ?<47XJ1JPU3y*t7e; zI7LBYj&P#xuSCE#Fv!Wt5zbwVBq*>tD_0tyDQ*n_5%EWeZgi&HogWqOKlfvA@DG}& z;}gBY^YjJk>Po8*Xrd=p_X z0+KiN6;3WRTTA^{u_nr5ZUJnV4sB%cfhhggpYB|bZ4YTs(C7cps&up@%d0B^Xk+ea zY|Rs=Sw83{!ZB5Q`%@J)RaKN@Yt$f8IySrMSkleRZbb$dNZb=_(fa|qEfs)*%_Uc) z1&ripP>HpDs^y5Ar@8ub7M{^|>^`umL)&xTr6ZwU!}K<3>fS%AR$^1SXS>T*v*Et~ zy)S-3L}`GW{a@}}-)ZX9sUVue>FJtCp98#SU%+3980Zq`s~>(e!iGD1&Y{8D+PEO%@0mH<;NI*-K2GP ziph0_Y2KBR`tCK>bqR30_aUhGOi7#5i6zCicR6g`x)qgwjhb1mwJKz2><77NGiPR3 zRD{A8;>ybhWW2!fh*gJVh2SzaX-_`>r{F*BVh%0i11WiLAdaU0`8M}{a8yKuu^?-2hf~<;}#UbioD50xYulkJ8nY;T-4sFW&wPh^9sEVf7_H%;7 zU@$nlNjd)_+aM6+_bSQwZqqJ z^bF{wA3uNk*il;|*~C>|OQv512QWVaL;PcEzlQpHA=E@}Y8o0I8JUUyoSS1ywc_Qv zUVjwuUsy$ny3k(9({Eooxxfz-B}zfn_wRa}H%GtBz!!6F=8gim$`r)vPI$EzK`Kzj zoCcY4bvYTLZcB^ zC*r+;9v<8}YUPR*!K55&ebKb(-E=DjTS(Q%k2x?NbV*FW2?iHVAP}!w%J(3}7aq%N z*RM+@=SyCpv9yYE3(rLW*bHli&uvxWIC{A=xlH-$&~aySyG{6pN&1Md@BN1lBXU0O z0x^oQN-$p(gg5K^V4cdxA}U}mC)PW0){aqo8>+h_)J*Y@8|Z#>JjLGz#}61$E32zv zai%&=4JJh2*z)qGJYFf1q973Ncj~|@J8;w}sFIcGZXSCZ&A1I&fJSs>p`ZYoG1^O8 zH#JQ(h3^wI1DzSMv3+Z}Y+T1d@AE`|hDC-Zaww##R?P)Lw^&>E`guc4q~es3%VlQH z94d5Xy0UmTP?ZBp<#i(suBiYZsGf6l^mJ%uO|Eyi4*-hKNzP_+7m^X8zLUc?UhO{;;pD&n&wXRD;LwpM`3>rWjw*CU&_t z*N2&P%4Kev7_0$(7q{W=2%m-bMRz18_}a~z?{Q#nqWlwSXUnsRqGf@ix%1IcOK)7i zE^Le@CPC1xgUx>DVt#{76EhjeS@i8FOz*0Zura}0DVx^?bI|*=A&-2}s7_wf@6;ID zn@oA^t-rFxbAg<)m7#0fx30xy8}7YWJ+gn<(Z8cB)?o1xlN6RLIdo3r02rE+Wk&#N z3IEY3G2Cm!d>JXs`VuKYSQGzk>Eg9M$*- zBR*)TOrI`%ru6^nZ1V!IpFO+g!2Ri( z(HZD$xc8YI`ruzwB6r3Jcqf9|`@;b6HS4#Z4-URY^Xgy;AIGs5FI*tT9;)vk(o}!{ zt{k_#@||}_;i>YrnU>qP7XbLh2oT_%^o4RSVe$F$=8j3P#w!Mqd7;jib{vQC1Ztxv z+{?_IRPi0f!R6!A12`|8svq@+8rFl7fcs*VKrf$#2mbj-Tq~?n3-S+`4FK|pW-A1Y zr)YNYD?VEbISs1JkxSBC6=@)*;D>!EK)&cjJVnxF=r42S3m5+B<*#!P8_TKQK_+v5 z?cDa{A#O_Aq^B_!1ECddcqrn?1ud^jXlAN-ad`z2?oXzFWyCpNDnX4vQt`$fqR)2w zlu4O!gWo020VkYPWl0Rh9THQrO-@P1{|Fb+a>xH%gmO435SA4UY{Y>iTkb^A;^y=O zvK*mLlDS-{T*7Qi<`wUd+Rj`1J%5pIA%(=&rIa6w4)qD+z(8gSF9a4EalS-F*q|O{ zkQXY-LFVF20Pc#W?djWI29TBR_h@CBiuAeJ!qH;6T?^;df-Wh*DB%1^z$8=wCrUU4 za2syA`1&vbc3nlT;#0aj4OWpjeuA1tJ`&iy>wA$t6NyBTgXm|HC^{-Sf?S zjF#syKR-!wlVHu@XBqyYdu2_$F3;u@J$wJN2&vijL5iRS{V=;&`u6PEGihAXj*C08 zs!ks!p5uN1UjmUVqW#5q3_QZ`Dl1pV`ED{b9Y%r>-IHg;wCO5}sIUEHH&Lwo0PwK^$!LDh}h7lvYjE{e%@B3AQr{ zDIr0b#Lv@fq+G)Vax_gDk|mqkk7ur*?!Fhly$bxdzj+AUCk}N>vI9&@?amZVUm`tp zFqn^^L_kH&*&}1p2V=yfBX=dJRq$9)BKLE0dcg?bh7km#LZF2HztB=X3&(30;9|Xq z_o5zXht*e@*I_XVqB^hrUxe3Nfc25~ob@Z^e@xR8Nj&=ib@Sy1JTv*#>Z_#(IPm8Am zrfs76Aa4sqLGi8$)tAY#!kcAld&pD~M)HoS>KwoX9s?+oqZbV6>Fl-S*Xbqs!$*ve z=;xDG9qe@|*~za}Iz%l^Ws}#Om3e;@FQu)pZ9Uf%cfRP*?ULo&9b2bRTuxnmF5y~6 zS07E27$Y;q;XZo5mGeGDhK2cmH@8Ymx!2^ES*?7f=h@om=GUH!-<*6P_hmzl^>r(c zkyeSrJUrSKW=Qt!d%R0w!@i!Y7yNGiU0X)i=oE$Zd1Y7+LO4^ZRDhQ>Juo5~rn{9s zC5yedZX=1ZD7;?8j-abQ+fPy;s~~m7{HU_BAYOR&moHD4LnAVuLCjz}r4ZMNBLhy@*xR2|-ZWgZhxJ-h)4_6o z&Mm!U6h!LfAn}p~*u~n1yzE-pY&F^d z4}1Vpa{Rg=9>X=FW0=KQ;w`1D)CbtY?O4-70J&o1AiXz`o5D}J^3&u5<+8FeWyiSf zv{P}2>^Nv*dLlX`O?HVlZoI1v^|B>_fS;v?4Ld?`fdIX^?bVv-^2tN|0AvzCVvq!r z1r`YQ5qgzi8n^z=ud!-Nn?Jh@zZya|e>&_cym@2rlb%y=(BZv~kkV2Tv6(vom%Kyq@QWkAI zVmt@rkBVdEd?wk*tM&h}Zoz3{cy!Q~P)yG+mY*8vBMHZPPp z@b;^BaBFo$^q1{Qd;V(0$b0CokI^l0+V-Cl_I*a-K<1Txwsr>O(N3?pWXbZ0Qh)_2 zo4cQ;kNG{tIV3=KZjUpk*FJe2_(#6vV}#Mv$%h9v+V zQT@+KO4hn3URTRY?A3|HU8fD2%z+maGcl%dSFx<_L@AKDF1D)t54QAZ!I+8p`7U!t zdyk`y2yN}^WQEzYW{E{Vmpogy@CSGr(4R->Vwc%V_a39%j|6|te)-aD#a_c*+xSIX zhs6WB6}_6vUOuSOvXtFdZ@M6AA2+CRofmktx6Y<1W34BsQYY^E6pK3=+Ty;2apN9)A=F0KJw z$rY7MlV!_#d$qU7f-0@Y}zItz(WJ=OB-@JY;m}@$i{tXYWzAV|+W&&ss%_pZ$&8K%#(5cGG{o~gxU%PfV zups>RRo%!3Z{Lm~`}^fs-S_tCn8;%lB@?oY7&V8398fq5ZD;0Jr|r{6$SW$or-jEZ z^Qbfgm!+u+IXis5)A7e>y2#2k&MIHG ztSmE(D#mbNylLcH*BF?|#4M#Uc;_E)w;qwrjEOw10Z zM+s{=50V~geLI!Jk+oWdM~s~v0q$jhdR%F4Au zk%z-$#ECSmdPPmoun=mgylt<4m715+Yg=THsq2xs-;aNvuk+6pz^JFzN(z146 zdG_Y5ocfbC@4SMe4TZ_$rX(CQKCc%(GuZT&`tXx(ztVm_i+E9PdQ6SfT_%h|#4wky zF9QkLN5$|r6a}+e+fgpJ#>Zr_qfxZxVT`t<3aq}ZG-F1o!H(<)i*gA@qQo8S$0sTNcmVMLzL zkz-?HL!8zQ=qASGFxjZ6?x(>2(b3UnCr!-E#HK8HWo0|M9%xt5{`(4n6ur2LgLRo_ zpL8Xz!#u~Nw`|Acc|FD*N^MuW=rgXDRkQIniJGrEK9G}QkSPVXjI#1c(bE9>DRa|X zIe8ESJd;A%yK0a>3y1wMU@(u`5-~(*(ZZ`I+s9BE!ED>e>3wQQ2cv6G^gd^iI% zXeyim&2+o&tL&snD$rt>0xSobEB>`3jaa$v<+O`w-F!S7L`K2V)78!4XGj+eDJu)L zX<>nvieyU!&Fkl;Z+U?F#3GOGXvzKaUDu7A+t1wcW%j;hg)wo1YQNXy+zc8sN%6(k zyeTQE*j^X-$p+6iUC6|;72$j4md{@F_ADRclu zr^KTiS*z+B7+94in=2*gR}SoU05ahk1v%((5zK6UpDEts9O(rUt9q#68R>NXg&h?O zHxx$L>d`8KHujs?(p4opjile~jB?tQZ1b{yX>Nh?rpMoh%9jmq{_;mV?Tt~|YvoZs zf7_2gqv!6y#RUq1$WSXG8(7q8O`YJ*giQCwTv^PzG|xCXIo*HtY9zM<&H|lC22GwL z1GHgAM^*f-w|F?Ols3t`jQzD|}S>3R>xMQ>pA(|XXNccYWR#;ix|AwLd-_TFnfn$d% zZ+K5-P>ZhS&fX}f#jsU9PT_DBEdpaae&~~Gu0-x{{v4a|B6X)M^$BBPq6<6%btX~^ zfg@5#8s!xXD|Wk^zH0n!_z|kP{~H83ttpr`y&9~mWW$nSZ@L8f&teh)hK26OmrPjI ztxu1xOyW&Cx?oAfz!)QY+b^qQjI8zogfev%mUaPkdpnt%C z`4oPxA42T-)KbtW=)tQE3`FxJsRY+K-eWO)hj5GUyHAqY`lutmhr4&4Px@Arv~&6;bfR?}iSCwomo@BNpGaeCOTYuQU`1vh8)ULUbpEK%~>sQK6m^_e2b{oHoq$``zDi3JT#|itt_$Yhn|xU$^3%(cUl|qyW@Q7^$i3uOrMu zdYUa0neRDUl%c#H+!h1Gw$vMtS7Mq15rihF$dnzh0k8w^JR)3M6j^KUx~cOq;!0N; zhgCs`6`^RbAQO7_dF-Bj;fL)Xlok8m+F-xZeob%Lf|}K<%?qB`WW3wBBXj@umDdbR zhtv=)hk~cV@UgIUhXQR8H8NoY<>?e|I?BmM0h9k9fjDA>E}vRZWRuUd*`@mrX+Mvp zp7i*Tp@!S{zMcBI>|>wF{U!}{u3o4zb;R6a^{k7wolo?STol_~^7o)y`EKP`*U#lW z3(FE*E$cmd0Gx@UrWu|H;a{qlHGE~~LBFES|HZ}i;g6WU$Rt(Kt4=^JLSG?YYA>jP zgAi+iL^({n79(0XUMC}s6da!PwVOTyp;Hpd5E$6>Xpo-KE7}oM>9B>Z-eu@b|2wO^ zdGYz&2l7&1jw@gG8p|og=ro3A#b=AY$i(b1n-J#Re-teRw{^jp#^-Eiwrwh1aad;;Bl^!s^*D6GJC9Z{4F2pg2hj8X(exeQT(*7xDJ3*yL}XN`NM$8OMkpgI zD?2+fQrS|Zva>>H7}+FQ*~-dFqB4_^gpifu|2gmH{lCZY9Pe{H_nr8;uJinUKQpB6 z;+k@T+CkH=Nr}5pL{n>ZuXDF|+M?!a@7$Zrh0Bwq!eN8U*30)r$`A<>xWl0(oEm=o!n~1gOUIsM~ z?^qdtt&^BU@S@csA}m-RS&T&X0*I=y<>@m#1;mI4Py;E7HcL#oXy{Sz6P^1lo5I$`dM!{!XVUxjfyV6@||Q@gPy5K}kyq$kd` zi>NPq4*wgm3;=D1)-3Py40$iw{p=K#mCf-K5w#Y`E!Ordppe86i_851PQ1AJvSZ|8 z##GpdcWBpfCs^e7fa2l6FATd;%bU;%b~V1}S%5R-f;qMHWdqKiFie0LPe>{e$PMj@ zkA)2{ii^oX^%tKtVGlqUUKENWI})}%NObgv6uIef0+3Qvg28o+Un7_yGqbgh zR5dK|I7HuL{Dc*Uq_yI3E?j5^hfF{&JiM5SxfS+rqNJn)j)=P}vvmwTIKvXn8pZiUBs_5Gm+fU#PNnZ@SQ4I0J+tfNny%2?+q12Fqak%C zXPgVu+@G&V&iQ^A4>_Ak|4k_4v*S7)nq3N!T&rt^jVbhkC(amLJi3DId2hw&ZAuyG zG_i2q6!|?dUw@j~cN_b+-Me|SF#2!a^Y20=p|(Ee;^PwlB1lUaXXH^uzlqiYL^Z}*>i8RY11M}s2E!R{`*I~GJwj`yKJu*z@ve(I=j)WpP?iqn?LEG#RGwK z>Qf|L1z0)cKobh#K#GZqjOY;%)Qgw+_1m|B5XroQfdiNXufjHWH@A1VKi|H63su}k zP{sa4$cDod+;Quhoj0*mkmm&7K-~&5fEw5w%WoOyjX|`4ANGU(laAWgK~3CG4z79n zsy`K*>FwC9YIrC~n?ck_zl7ntrK?)GBeLdN;GI4oAV3-&2rF8se-7_1P9uD<&_+Qs zjJNtC!WF~9wqw8j$fUPX<_p5-AhzlR|D5j-rIST6_`vbQWdhklmX6q0AhdXuDKW3% zna3`KSrLPp`nk);SVO!}E(uxo`*QcI`BK`Y_Yk-KZereQ1z4rw@72S|8pl_|rVM!z z=|TT|T+7g~1)?9oU)=cZAgc(J3C{Yiwn5XQP6%oQGJ7;m1r9%`nH;TDB+k zIwS{B5s^z69~}>5nv@|zA_;e=m1yN}j|w-=r|<3hVZhvdWZpv(Lnn5}YigV}L3zdkD!-dh_@I8sWoeGj%b znAsVL-#KjT9ebYHIaaDjGUGy>%BrbYoV#VzrE85Nno&9kMJSIGOxmhReT}VjTe6~b z#{D7V_E3kgP4CLQ=|UHjC}qBUX;RsF!~G_IT-{k7`XpA*qYH61eSuOy6(`4*AVc@QD_+BfADK5JORbHdZ!n{10l!<3I_4NYYZ1b4V8Um4G#pt zX9@=M&Kayn2KgI|a&{69+LEzII06XziEW`6ZYZ2nJwL@T`#~XxtG%lzuX!0QH^_x{ zdOeBLAh&mIq61P?TsGR1u1Ag>Iko&PGXBH^|GNyg-X%@cFK05?8h>E5VnYpRMyZ4kDblKt`2D&Ba*|2LEKh(I_d-biY+guq4!m>p0mL6-oNZoE#JgMCbhcc z7ZE|fe!~V5%?rj*n86zR>|0P($f~5Pc!gCEe4Yiw=J4l2G(p01EQE$eN9#fS5*!<< z;g)!@FnEISPY)b9vLB#6#!I?gyQqo1*&SPT9J(g}R*ivT$CL!wHZjk+Xo5X{T zUBL-CEF`%eM+FuL?4`RAwm|yhu&Dx1mB28 z7`Q<<_+x`1dQT2XR*aOOyYv8>4tmXDgXT!?xQ8JZx(6!^Q2!(95b;6>wA%_|El@(U zAh9~Ce0&i7`-V(vh;Msy3>vr=(inhGid-)MF3_!@rxK9yae@T+;zz}SO$7}L)@uBo z(r`Nxy&U)%l#NJ2S%7SJ@D~K z*j^>>yKrQv?A-0`k#~w}>zbZDs1T62hsj}+i=*spwAZPnKSvcJ1K6o@k6s^l7!9)v zOAGRzq$&;BEPW&VLEm11TG0o-zGectLVC1BJK}Z9(DU}2g3m3iT@Pv_Xr6hM#BVYVZQ1pYWm#U| z>d4?-=bVI6bB+yMdFstiBjbLaNRaK6)(z#cF0dcusbz~hNf}2;5vd`)H=3&~bl<%u zZc`!ZvzGJ)2jcm*)V~!EQ{l_$_+lsWkgodB`i7qmsZB*dkK_(g6;vuoyCj+eK6rjU zS2)mISx080$=`@t&i!-ayC)S4Z6rTz({Yu|{NU?fiREvFY;NfwdXy~x%%oFyZhs8fgwZ>QY}^DjC=8-wxc5)b`zxM-Ny6+K)M!U zY1ADZ#qLYA?wCC6M+=R3ijdQ=4f`yPfIGx`n;cGb;D};_2%mUJKnz&nzmgXcTG4<8 zl=BeWh%8>fDB^JA5}pLNGA=rj4tIGP?k~dbzo9UR2Ma99fH$QdiZ#;EAPLzd9c;RCg>-;JSSti& zB|aBs$l11&)2I|s zz-p|1&rP=+0(RYekLF9ee@3_L?$}f~{Ew$7gFR=Qp7|zM_0N$N8^$lP(=IYyMYIdLojiwc zs^+lLeHnfe&pBna7_Qa#p(rYbjb%|qq-Hg`W9W>kb^e?>&4p#lk}Q7zH4oKeKgFG+ z$2`Q$=LTqxXJqHUdUiwO%B78E+tQqWm>mW^wU-S|k6&-SSGx1eu)Rb0LP^%-ajz4R z%9s2_ez_zmUtSlQ`PRn0qDJoP=gX^S%a!E)!?}D!1x{BuFx5W_fpl zR`>6TzRhP=R`|V>HqyGXQoPfN%@d@gXnXd+`CvuxpxU?2w2=Mh*p8dJKK>B;(sW4X zS&2$}=st1R6y7Ac*_hL>6VcvYcvN2xqhtnFt#N5TFug|z3c8s1acs+Ax^U|-Cpudlz&XhUnn#HH*YYbdSj!#Tvhg=v`Auh(c zm$!YnNSFkz8kffy87Cr>x5|FWx>;*V)uz;n3 zY{eIXna&**C!`b#@}R0XC*U!p)f8c^#PEg9wE&|C5Hq>|7&Ryx;fj<-DPl>ULh=w+ zCAf~aV9XNH$<=Hm>=g!z*i<91iQ*8Lnq9dH z0~X0;!Q_DP{!Mc;E$(_a8NuILW$XioUl08aayp>f6(3}#2cXb^O&S=iFMet=J)zV}4)g^+b7udCz?C1umzM}itn+8wcf`B1cyEZ7 zRYPHz`!efM+iJaSnn6z|Wn>I4GB&jTHDfn%RI^-b@&al;t9O;zFfnSar?bt1{?qE1 zzX zB-gJh&d6U^Tuu9`ZL*`cPtAh;c$cBQ;gqp!)L@vAWuLIX(o*YT%5K+9eEZ5~17DV$ z=>2NCxcG_XbEDtiy#i(1Qk_RNIRs=S4|Zxj8#u(5^JP+P;l+x8pPbD9*8({4<+pm{ z6@6~@`ifPs&FRJNTZT;sMn^6f%v{kO%6?Hlpi^T#!Jt@~(0;o{@Ia2m-@hyJ&wO6Q zC~W;P^wr|En1LDt!;iY8fEnN#Le5I=mQyZ=)0lU3ee#n$b6(twFA}_=>F-Vr8~)$r zD^*gTUrwyY55M&9yY{Jn3oM+K9Rc5YquVyP%j@5%nxi##;G+p@&KR@s3yR!Y(JM-M zXz-S&zpCRa^NE|DqQ-++*9^tX8<{9?1x_6A91mH4rj5yY!S-M)=am%eg#Aw`wrvj? zLU`ssf(_vAlumeU9EK?wjL5ca+rWn6zaR%g5coFGDjk&$yBb;h+nbKlf46M#|1IPk zcx&js>4h~i1UW9B*TjWPS7cRO;#J6D-ZPk1+ctoOvpBHNw zy->#O(D2-sw%N~~Xu0+`Emz4n(v>jZI$U2ixk*<0741`1PW!}~H_yD|QpTb`zOwfp zc=I@o=D2&t?P2D?dtuJ|8XGwH>-x8j9OUOmggUjW>!PhF0Yo6xfh|shu?!y>0L>9# zK#;tvWOq=IfGN<9P-~+0LGiCqatE41fF}BXo`E;A)s_duY8XJ7g2p@0U6ULPIP+U} zDnhV?7{ip;TC9L&u zlCo^sWV;V+Aig66*pZl(y1}5JAV@&6UF@^qR3d^PqHHCE4u*G9Xaj9D&Ls?46sYfe z=IQtLp#bKrsF<~XyCE9;KLBWH$qk2e1Hh>O`;~~;f;y}z6P$w!R z!==R>qG0Y)Zf8e9k$@s2fLxKN_PX(OXNt}jZ6m!GPHTHMM~|zmF8AVL%(b}m$%pST zW>ETpchu37Icn1phreM1;K;RN+VDlAJ=9g9DAinfZAItut+&@wT+PGhO!iba1eBWh zXlUuztTK#8UE-fub}Q?dQwe*vnBvkiDSL_Mb4;WfPsPI-l|^1X{*mnEWf9s+iRyr> z;v(B!hVLehl{gjNv^-yi(I8q`H;Cm|y+XbZRRr{XqH)W^Jsqcd!myFlw+y!FN+mLG zjNwaQkMa^J6`oJHEKT>kp!8&T%}(3VU!P@H&%Ujiyy_f~BGlT}&ry;}f4`Z>^`GaS z=(7%dbECdqocsbXaoz#m!$xx$FBnKIQe8n3 zTov@!z&Qa;n|;fl*Y{v`v#+#=#|c>Ocp*5VqN0K+!&WC=J-LJADiw%^$Ud!xbqiNW zLSkapt_q-O$I*iTJwN_u<-cV*S(dnE@I}B^*RcleoH|5L{f%*4@6`~!?$v3P5C8f( z-KP?(y@c%tm42&P-4Gv~RJEQCka$%*`@~*PQsP6m*kF^L9%#q^^YVy3Fn3c&(8_35 zUL{`D;oNL_h${#I9e$Qu0=UIG5U?P`^l{a?oUVan4O5)|?<6FYfL((S!hrc?qVha%Fs0myzl>zuUxq4*mV0>C+9swGOE8XP5M7BYc&$xHa_p6!W(&^pHZ5TJNF;a ziXpZK0svB^hq0b=)26^)T3>0XQ=ktk{+y2yI8mZ>qYPagyA0hY$Vb&LOpo`}{@&zA zf&E=GgA^P>3Q3xuu`2DOIgF_vq&TGBnmPB8eayIGB!6z;l=jCbnH=Y^^8hEvD;g}U zJ%0{l8To;sOhv$J;sGvuh^bZQQ!@XMfq_893#i)T$46<`N9vIqB+GCU~L@$VmH z+482LLD!Rzb@01cRsEaez`R7#)0N&{E0>sH#=c-WsnOgeG}e`}Ar4<3MAa1|9Eao=ub)o)!2qFMm?}n$QNBb^D_ubgAlo zS$O@jKX<`usD|t1Q~s+BFU>#wZsj&M~>G-MWYJRe%$Y{#Z+bIL%+Yc`;dxwG=Pz zpG{P6`T53zmH2nb+^|hx=L=zay49$ug}=^*{(1fb;pd(Vp}f{Jyx%MSn;sR}@CP?qMx30r?_%Sh*wk;oMWNG3ZF)oW`0@{D_Kg&W zcTIHH;C|lfDfDSk*E{C0;MDOf#_j)HHRvdj6_%M}ooi(9*8l`J(6fE;prG|@EA+?^ zCSy4zo(O_I-NZf*80fZY8be}prmfVe*~WdCoP&`YQ&2h&$GO{hYRnS+X#~E-3#X-} z^$VIjA@lkzkK9M&SSM^{M_zpgh-8Wjic~B-?2Pd@IDI(M)K1{F>cO!coF@$v9el2( z)*LX+9xn4PJNl3^e^YONE%(jJ(9r6GpY?_2>|9NAy6-4*l|Aw0^l6u-qkLpD=|8(O z@dETlV1hBp1lK=2U;nWlcMs{S!OxOm6%ycj(z8XXH%pll0;wfz!_Nx}%(2Xp zz`d_u%?JPoCXTR>zzoZ*?PlXg98Bio>-LsFb#;bD>352S-8&tYnd=4e?o>1ZyMkR^ zpX{VO$~t|c@_eLet=8RTEcRWq{2!yUeQ9op-bh^@zu1;`2G=F``2@ z3k(8K^=JvVAesCQl#Rq?K=Z?zBwqe|`Z-pRe!&0=QcE0K&yeZ+9X4`lodJ9A{f}0`SB2GV;%7f^_*oRz z@gh_lFZK&Gcatrj=&BGM0No!*e~5P+E?uz#;STvBVIT1U)B60Kp~B9^-1#)4%N9Q) z7!}BVC{kxfck*HSB(8oT?GIEjG9}ARi#5XjKTkbs7HEskQ%)7j{Wjn>Jh1PGY27)- zPWqcK6WBZ{A6(kHTjG3m20xEPcb`9oJj#_!zC1eti;)Ouif!WWWtb-_ue7EIq}x-1kJAxSDw7c z*?l_l$jD5OFT04{_qQe1`X9chbX59tw)*woa~yBa|8{w1F~L{JIIb)af9g#9iuzzO z$6Zyc?&S)|z4DGd{#Gy_@TU0p{zlypL*9|bIF&1G$xXL=YFL-A%V|~A+-o!as;R%H zTPM2tq{)#p`p4!ncMs;))M)07RMwtG64IXGUZYDEqq==A9rAlKM4SgEH4JZT4^%vz zdbdp0m^tn6yS_K9uemo{e2bnN>DB_LnP#5CHd$-r^wQHUc^}dq3AvwFvA~M%x58;B zS`y;`I1DPFSY(9(j3t^CFF-a3J&|WLghmIj8}f_-H3m0s-1xJvG!pK8k_m*BnMK0w z`SFipaVklE%v!k{@npS$uU8pl0s038uik#O)32r)gaUz!z|<9PK3q(#yPxN^$5L`< z+_pkk(>c5ntIrYcz!rqLs*He#%-7T1+20tvqm;7bY?3~IzYYtl1 z)XMm+I%4CEmNz60s!7f>l6P?={RN)#Uy$|8j>bCz z@*ik?m3S%Pm7(+bh8QKD^vmBUKNhE*PT}7wF*$Wl$s{^r0zf6ti4&}GDkRy9)CZAZ z5&W=LFh3#Ck0=w!oNFE?sX%1m^ZSvzgg-+fNecky;rZQ4!sHQmM|yklnjnjs0lY3W zgM>}Mf%D|TxyT-pV2D-zBB2R#qWLm!Ct~Rt{_!IaGZg4~ylIeNaRQ%|#!^g59|#7B zHjec4130#!3`Pd*U9hEJzkhd2>~4jYB?aR@Il2j(fR1($90~}igbF4FI&9?K%-(5$ zEO3vM)MI?Q(9RH_81XUWt$BXUMI#N~bd(t3X+dn!Y0N%Q@FsyTf@g;wJS>J2#KaO* zAGZQ2NdI7az3>DU&oIhf1;BG?uvl5m?8<_cofE!54NHt4->~2gfwS^ zcfR5PAPLto6yb5edGIVk!FG?~Jh&zTiJ<;mmf#&wG=VXNU6gbj5#$9Q>%_I~4$)u! zEHtjZ4fon#ZZ+?E!7aDel+jk;fP3!_zVk}m8zZ^yN1I&DEc4NPCi>jchnK3I@!i3< zAz-SUu4@iBU3?I&Tc0odIqB}B5KYx)tAXR6BqhWj2=qxfmqy)Fm~wm76KSA#aLGuC z|69w5m%iv?Y4X*b)L*_{Zmx;k#Tcz)YMl(3LPVUwowOiH+XjQHvY#r~gyKpq=1e_RbC!r_%fSjjO}sUd3Oi_p-U09(}kp z5~lo(`J;fPQiekN;>ou6yh*1VD}En<`-amsacqU%y3W4ugUer+Uo;!*MxYHe7l})M zw`PCHMY}i2<+)Yu{RfnPv~CPGzx3dye_mKA{u&Ua+LerLy4D63+ueSoQ2GC?rEy_z z=E-`p-oWlNdw@sYwQH}M2Z}#bq|e#g7l+#a*eW(1?jVBttSD!}9D*lyRQYWWmr*U8 zcH4km6mEuERAu6Yz_JSp379(4ii!EXP#-ZF?7rAd!&^5YKZj^00Zo%66OKH7hlH4 zT>I@{)?>=Q(Fz+e9VG?ALm?WbSF~jR@ZyCK4J|FiG8iF%yFq05v7&n?AG@B|bo<`2 zC%Yrp)meJ{?X%AqGrg`Hs>XZ1b$X`1ara(zZ9nBDe$NJW$M;(*WYP=L6C+Y{I!g|O z-;6d?@)lz|Ay-1r^ffpvtJPjPSR!JlR3-l29h4MMVL@s0 zW^ocz$hWbv4bj&fCMPHH_9S)kXjPVhr!Zr61W|&2$@V(ED9aYcoja2{Y%oWIW5jn1 zziHQkXq*cEEW)ybq44i8cG?Gp@AC38*p2))d+orP%$E}o0%9=3`;Ll&XFx5Bb4Ek- zbLuhO!-EAKEn@tMN(s9NH9{OwE~vM^EUw1%3j~T#(?RA5SGWQlB^)$$m9`?R*st)R znR&QJD_OeihGG*g7pM!-9uI3ymBHH2hQfw|!onQhSl!fq*K60ZT}<%Xg-0bBfA{qw z-TrNde1kU9UgyR{2lxnfkB;$k7`0|Ht-YHsMk_?B3z!rDS~jN2%k~K}l@-ZsvWO^q z6x45#*(=w`y*Xv1FM+DErzTM6+y{vst#jr+RN2ulP9CGcH%97a|4(Fm3*r^Dtr#LQ zk5IM9&@%(!N&I(1Lo&F`Am`!(DlMIQ1?yPQ8V;s=MDxA;jRAiGNsaqqs@r4=mpi)N zflh~lssbRAQ?vx%juj^_+}W#ELUBZs&cwu&RQ#zB^Au!oz8yB)e0((N*{!5L6;o3^ z)H6_cm;+MAe0Lw0L?mPvcoCr8K?`tIkKC8X42<{-WS^!dL@A{rSrw8TS)DxNa}Z_{ zDT${i1Eg61zzWTcJRML4NNhu7X=gTeqrkm_cM&R2Yv>uj7NPMBr)LBP&KdBvL<4}B zjeCKCX2>nYR7b2E&r}oP21$lk0CgZUuO5lv&j3;rhBFvZj_B|r8Gz9GLDvEX>=5)K z;L#%R`t04j9+DeCbg}FOKL$SD2LBA1QTgJ4Cx*M4L))_o3q?UALCEKet4dYHawjaW zcuiX+=y>Rxssd$SaX7RorD#$E9L8bfu)eyL>*;&8MTfHbx0Z{IY{jABhke({TV7vW zFG3wXn3Gp*G7=WK{4&fb6@m%X1yQNqbL$P`{(AA(SCsiBAZ{V&(dXvH9bfZ!Uq0=X zY}K$I8qhG*uPKlAasFe*L3C!X|A>qQEXcU_$;bgP7OW4`mg31@nmB#Uw(F*F%{54^s=U3! zZheq13YIy0FkMIO*e8cRjEIcS19we8$Fxk@6OiV-QByaqtwZ2N2x9L{}HFz+j`Xz1j=@mTX=aZ*Z(U zLxfH+VtWxn5peYnangb_i6x#H=tn0Wowl+9w0p=DTq|H4xEk&OSVY@BX+-_luSQ21 ztdOi1|H9TDf&9S*SLbII9^){_W>kkAC067Tz0}`dr$c<3@p!uf21ow{Au%CznczU; z;y>~pLCyE1bNoAoHJBT**MfxbMePx6IYfR<1k;Fi!p2Mz)u7`*j31lbgpcmT*Nb(h zbG}9I-_R1grrA^x=OgvKFZgOt?RDm}?PdAjleEqTY<5nvG#AZzn11DX5qYH;+m9_vNFl$#Z<^6E>5DNk&jeM^#6#|gDjtjZ87~p;kP$iw0R@8I#L_BOW5i;wnX%UxPvi9HVnx?7u(I2$Aerhq9%k66(8mjI5G?f zBsd13F(k+CP~m-kd5Hn~K1>ZH0USbYd4y&I%8G0vvGD(?5>eqqN~l|+P28EHJ^>IG>0?zI!!xo(~n#>j^WZUAC+G6zT8U&ckNCtvnf*7Fi0!UyV0|$;fpU49DUB({&2_FnV z8LLeTtN&IQn3)ZsY*D*$&m`7HvbBXS|=t#FBhL1}{z zn>aW+@2#fr@&?#hB|1;ZUIOvMkgqaF z_X&tla88cBsNfzEkto~;5H#GXF|CHg5b8!4QYa{VJ~ETD0h0P8X)PuuMp)pX$b}A3 zbWZci)vH-LEtP@zbm({OI_NQo@elnS0*B4mQKyY8Z77hyxJv()`~B+|-E<7%G3>gt zclZ}SO!vsm?axCd`gUZ~G!cpRDF)0wC}0lk^>B0h&{JQvC+)fKzciZ0gW1xSo-6ym z{rbq_-W#TG5ML`fQ=c>8mYrpuJLdSo?uOO#BC?Ft@ z5|aNFl?kv<-;gnIFs+H9TDI!Fv_*jd6a0-twwd~OI%Wb9C(jjdiCKl+2u`&Ndk*cv zwgn}S1Al!M+D=LY+Ws4U94FB9Y*CeF52frnMOj(u+XLZd8+QDvWs;%PlA~afJGeej zGlkZTVty};QrVMhrG&gqR(by?nD>ZyfpA+M*4lMq= zG2Wj`u`aGO_4211;lKOnFXu#Y_a8EC@@c30{3i0=VCz>ls^bM~S~O?c2C6>~L|pNE zJ^pdeX4=%?;6C~nb4vMIZ$CXBj%dnH3%)Gh@ZiQ$Nw4-wMal8>^fgZ&#Ykyp-Y}aw zpCS{B=>Ur#E63jz*n5kd*r1A6xok zbEwM$5y$U$4$yq}Q46J}y)xE%G5qqUD*+p-p3!}oyqVX)*?z~=$9iXFe>79PkNJ-z zzk5m2&mS|`KaAg`;_JnpuinjZFJ=q9e$JyL`mL5si-QI4R9f%(-b~fJQ=@*6-F;Gl znl*7qt@$e`^kT`wloX7CRBH}fSSOXJ{+C&0wFu zw4+`2p;ZsFAZ|s-r$^f#hamw5nOxE!IB-Oh)gE~|bdu$dk;^2jiT6AcaaN(p29D6K9Wp_EjWr-#ei5oa95gkS_42kv4 z4@JirWUMS^sU+uJ(d1#+nDCSF_R{AL(b{N*8%3Wk9OTejr;^sG0h{KfOBqc?$kPSa zDTg=`;w8X!MrH}3Uxb~M11~y4<7;sr5wAD=W!%S)vmi8w$SPqlK_~(#`y`SC*pixU z4oLxS2KNb7bB^d!>@$&wls5Jl=K)%vc<$T?KIxI4%txMq4XttkSGaX1iw{y+dL{(b5Dt5CG!HA0wMa$ zw9gtFRQe!-6;Y%Nm}wO36shb&r6oXEa>qMX%;97a{7~9 z58JJ6o3*UsyBA+183{A@h+eI4ooR~@-@YDJ9`M0g_RR7-0OuqxDx5>OvQF7}@8{1u zcI~>5V}$o6X9Y`C*XpL~*4C|1y{seEafs|}!`ZH9-mQ&~30p^CAPop>UoO}uYw^Rv z6xRT+#HXUnH^s;B$*Ks^KXI0D*y^i=hGQc1FU;ml*S@1nM+uF5)39|1eOz2m z6qZHp>?TfFJ4=rgmh?7b63U)2bo}?%WqV>Tw5t`##=rY38L$Ka)Ek^(@!81iNxP|N zG3BLUSk>6S3r;2MiIooZ#fy<=B0~7P1lc}v&CJDJzESqjr@etro?^cN55*%L*vJRe zuO7?QJUm>tKR)7qL_>t5YH}yr(y|==^pO?+Wyfo^bwhc}XC==sz;<^kIha&&TdBT%0e7GYXE66m{uVGPiWF z*}%MdvdX8>)1T|_)1gZ1Wv1r;DzU|MY`Gx!`r46ol6^o{ylu3XHMs!D!QK|)_vXI8;abDvb;1RzYF(N zzh>ocmRh_V%}qUd`dG;7@RuiDY^!>Gp0Rl&nyH5_8NCqQ5+T=P{#L%+@X+|~ zQKf6b)_v>(!Bzb${;FxO5e$YQ8oM>780iRZ^nsBQYlJw7=p@BNMLh>G33h|1Au(+c zSrrl{z=^jYd;r7i*$52dlt4+%Fz#TCilr0+ecF76(_0SObX*Z=AH=Zv7QK$j2qc`~ z-lr2SUXGWI45Y|^3qgi7fC3D&q)~yidK|qd8xq|Qe-`OxM)vQ0xK#>pln@cuT)UJS z#G`gOo2uA>eB%;oY;Bd#(TOiV?TBU?V5#Ifz;`zN%JdRCdJ&m&3v||JUzq6`CK&SiwEI=?UsZ zuwd25eJ1hHIOK_&4}9kDm<>ecfIBVXKe^7vojZ4yFOSC8-z?Y9IkssL6&OArtMj20 ztXLc%_2df6#kgNzAg73A0w9^-)`37o8t#e=a>b7aAre44SW;_`Pia$x<3@9aox$9) z1&hft42Y!s92ZIb=g-6di{wS(B+NfTfSiB7J4rhM5z63#fny1LodxzpJWp6Q{i;N6 zEWY)oE&Z-S3RHuzd`N~uo0zo3MX>?zHZ#BvpBolFb)ufc7u}lFDuy( zZ&NDBm@`6a8)=Fo#ZUEAB%O?uVY*}eM;4YshE_yeT!3+&H3%8kExY5E$Mz`Fdz`ks z`Blkz2ep{e(X*O~EuZcBIDIVM=S_LLioQQRqnyq+%6s)| z$sKdyeibKN>A-hr`hNd5(;UrT-Bn4AEdm!i)pXz4%wO(vr#7(T5w3sfX%oG5(HDOy zI3i+uBT-$}kG;DsWJ&PlfY;nPTyC+Fo<&W28}XEN*oeR^zd?qMgo*!$<{=XO_m8e- z3lnUPBn%tV&QZvzk$jAVD$IDKUK5-IE@EqNF2D+!msA&Bm7a8rZ}FO|(zD7r5%|aT zLe{gbeX;Ylp61#OujT0Y_+?rDbnPyAWx!P3f5XIe1=&a?|5Uj*KdbNa<@#c37vMLU zQxzt4DsP;nc(M7ttb<2rabJ*G-pEn+4w*-rU0yeL-SMk>_GQZATwh9n$PT6 z9X~V$FJ?pykDD1E@QOX&dvKg{ayh+hCQLRh=J>V4i=p z&d!ow4`4?!8@s8<&~4tj6%`o~h($%Yj*A+#kyVSt0q!S;=f#^|s0S{U8g%6Q(+c>p z&p79oPuC1f`TZ}@s(u9pQcM6$1o@o$sPRHTc@}J(S)AKI;?*Fx1M_{>*48$Mf?0zx zWR(-bN6;6^TH0M}x>{OJ5V^p)h|Z{jD-NVq5`u-#@LRI4>|$e6wzcI0tWpEzVhINW zE32(@-hJ)>1iG3_gPfwm#4|fLEjcvhlF4Uv3WyUabpT&S%1)rpLE0XP#>GyKQ>?;# z_InO_yCJL_#^LM%^ac3sag@;I+vDUzunRz_Et~xEZJxq{fO#8SK{z)xEQ9Xur5!

fa9jn525Zo8TIika>brgK@1pg2}4ogM#Jg; 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

`NGr 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

-Kl!_N`3vKxQ8bXKZC|a{5i92) zFqcX5T1l3M$+I%H*S!>owik&){x(s>#+RxRYJDaeGO=}^TTM~{l zx$rDx>+Tu?%?jL;yj9U&6G}XgVR*MzCCy`5-BE1%r-btdeOir8Ho*T-b^6FSkgUdh zI|N-!PDe^dpQG{G4H~_!i4!h)E$iQg#rsRuOZ;3`cZCWBK2`)oVXITrUhW&4{24SX zW;xp=rk}G7dr8V=j)9Zp>3kRL9y=X#rQP&ujzQys(~|H;3eWfF5@tQ>j@~9(ro5u+ zPf>cq9(+`_=y|w55QewZpOki{+Ph+g3O1CPDmL(6n@pEm^~FvhfBFdSjxSwZh*@Ic z+FGJmC*#ssKqEuL!<{`nKY#r?D%ra8p`?UWHd(NDeK?cHd4~u`s#);vZMfdC>}+3% z103*Y>R3RB9mU7PzUHbjSE}W&#l}RJ{Np0V!sPwSFK_0n&@UMq8ykOg{HBHG0QDlh z+bWxpY~zgIjAFljyPLn>OAhD%+CoS4YvI+WbR^G%u{3i|En*;mKo%1I|H%V7CPwtaT*cYsBZU&0% z_Y*Tt)O+%s%sP|Cb6TBi9&NI2XyT4}J4qg^G?!d52+nvAsJl5Hb53pZnf~y*3CU6(0_)+KW^U`yrLfoY63W z5-BMhZ!8R}&REtsasYaKuz36&Gu1!V{Dk`8{VL!%%=&VlGCsC1W`D1ytDfzjCgxY> zo6t+9r#50Fl@UA*ogKRaSZO^Yy!M}{LgF}`g>;XmYs5yps=g+;`84fjir-Q&8rg)kHdAdY=?D152x~d9qHvfOY@0ttfb*^0w zjk-M=SR-q}a+=8eIqNM`U*w4GP37`sHA5ohDoR*BC*L~~bGZv&J)ji$nXQp>!)1rl z@J%@W&kN8X^(45t*5$HbY|YUeu~&`=SjlHUd1I?C7kEBGK;NV57}4=o&bWaC6|>I& z6IGubyn3Heloe0wf}&rKi{~wd_HE4Y^s&)lM}}W+zMGu5uX<0ce8LHN7GUQ zM^?w*Yhg6dh3c=CnGug(XN_i>67^@ala*#ycf@;})_M^>8#9lP_AE!)AN0D_*Mksk z6S>-1K=SdLD}cq#x|f|i;YuAnAtw0V`mqRnBWR^*XmgE5wDWBpl=+e~hfTW9oF?^2 zswuwT)TB``(zdhoXxM*qKj*43zLgJBX^l|;m|y=6tDdKhXY+hlZxXmU^Ba}G=eM_T zSS6_tbqI@5YeJ#7PpksQUBuThJ?o1XxSF3?mo3u@e$16l(lN!V=={DR{9O z`8aW~k{a%OZ>3!MLEDn{zF;zbWTa|is71&}@?uBbhrpQ55x=;7>NsuoFoF8d=KiNQ zLHn5{Q$3&eb5G4??KIkvAjijGwof{#u7M#G-7I9%Jk6{{U$V=at_;ro#IsjKe@9}8 zi6wpIM%7)Bw0JGN56oR`-QP!mtyum|CRLg%zqi6~Q&b!;c9knXqL0KGOsNZTh63HS2-;Bu`Cl z0Pe5p<$$U>XY5pwIuIcedKlB?i`qG)OgQetli4XE*@e+ZpE2Lv-5n@S;_8b*$jNLo z$FEUg-HWIozf2!j%(>Bdo*&)*@$;uIB)UYj2I7V%CI+kIrh8r-^Pl|yA zFxV%|d~CO8aa6A2V6xJyFQ{=dT_v~bWX>HXMe*i64l(W`qyK=!B~@(`u#@y8@PsGw zIV&hB`GUX=BU~mh$^bIvUR;0X-tNl!dM6w_pPh4VmD*i*GAE_3jt_$X zX#P2*i^<8!!GJIc35jW$YX9r&OfZy-XDcm2B?CISzkipMm>#Bd5rc&@Fk9~3eGM6g zFm#?#dpWf%f`UQt8Yafx(neNRj_3-i|L11$X4=meePsO%1Thjf49WC6a&`Wi?rjIx z&NamvgepU?Qoik-45bY7)^q=|B>2!K+6e$nqXn7W^v6}xOD9hwNpNPIJAGZubfls# zWF36Y62sYh2Y)1gU-VNv*0oN7=}3t8g=>{T$wUI%erN)1YHe4`7Dd1}ax_pb9P|BP zJ&#VRx_m?UDJ~1JxF!936`u3-Er$(fWwCx&RqMU`X=&fyIRX>bs+f8|?ikqF=FVxq zjLF=^XZeLtVFFu26rO7rXG*@Jd4l!zLA%Sk@SS#9TzMTc*nZRAg!#6br{%QuG=}^2 z&EY|{0}2_Af!nhmUrbR|RMXI0<)wZS#@3N)`TMHjM@}11))av9m*~HbanC$RKd7)G z;!*Y;Gz6)R>eT3v#!x-uM`c@V@4b*!nimtz>Pttz)hVI{ubzMdv)Sg4OF*b*89?y)RrZ55! z?La+f0=71pDHs=jQ9?bvSe7X&T%Dpv%l`8Q0UKCLnRGYhrca;!-lvaNCQ$#iLmtTW zlc!M8C>Skp)E`s?xpvfgO($RI)!v(vh|KrN-@B;dsVG!>AJ^=1@0XWcqwYeKZ z=2}?=99-P)I~vta+miiB0_x?K_@VpKkdNP^$>pZ29<_}1}H*<(#ZneA6Crj zXIlYR9u=3UU=fxk91etC)w}Bq?FK#Ahd+k9n$Oj5^s9P)9?io6K3w{SE!gNDJfY>v|#qkludlW$4407 zE2g4?1KABCDQ_R);;z;filu$8t>uTHp2XYa-rhI7!avze`t;ZdzJ!Fpb?|L!5+Rpp z8Xu2_=uh~A9y6T6C=6~d0JJcxr9}JGtu84mE6eSZ0-)Z!Jo-C#Aw}z-<6JJFTgVP& ziSKoBae0J=^`a{n4bieTd;`I(2}3fBoPTB{1bKnm|F3udBY*HjHXf~_Q&(q2@H^;g zPEp+}b(P~3vf*xo;W=h=H4Fdwu~gw{pnPT=&9%xxLb>wAI%lsI-?z*Cl?OH!2*}IDFHAmH?epZyzO8)=&XF4h<4yu(>4`i(r;Oo;&f)kEb?3e@hQ5ro<@&`4NQbW z9YnZmKtf;TE!k2NPgCIyO;L|vvWi2(0;fyoOi`FBIF$~UEv~o$7`-aIkp!a9Ps$iZ z^Bk1ZhI9J7zfrGG^L+iRhY42!Xf!lAClhGaE$5y6)ukSS2>-WNUb|{JBgX9{bGRDV z_F}bdY6ecjSl(UrGRZHwW9fYtf6c*OwJSItn1A6gkr39L*NT#z!*O`t!HB*!g{SW1 z!D!AwyXyEA;{@2Xd87V>QA&sHZ&_QYZ>}XiHNyh}2{=VY-8dQ2u_DIClmIa7j;$x_ z+_~mGPl$nIc>(59c<~ukz;PyOcM}QLN89NkEG9W>RtouOO zgjF-&2`5i-IULD--&T?B`iu3<2ttf}r59;uF^f_R|AZKj}Z{Icd zYg^t>*ZwC@{R9zYNFfzf1OYz~=OYO#gHf|jk9qIkxGsR5UdU(b{r3D7Z26FYgoTZb zU|kMZdeam$W&4D!giW(xeK1?kaC^ZR?bpCSFioQ|)g56u&pJjs*v=W37Q;lE;Q1Qa zLn7{%R#ps%uSCKh!}6}}(c{NFf|LEv1%)70Yjq8w6cd&dEjxvIpa(22DI$7;VS5;M2Sy>6Iw;k-I?WQZN717cnx&;Y-FAK-{`Zpy*hUssE-~8omBL?^$E~7vlC#zkcU2G z3&N$GaGe)|%UfAELSeHA!pY-A z?7N5|0$OxOf}xwoNED+U7u}Do*B>{ZQdP@qfDii2{dBSYil3P}1+0{q_Mqf4$juHT zGdVN-=SOgio6-$Vj-~_p=OSboWNK>QqN(%0fs3dwFD@4>myP{W?e*`F&^HMKz%Xg& z%1|Eof*Yt37x$HiL6n4~bt9RwoIZhpVdeY6m$ldTz+=;gr3#(o;l58@Pdxu$IkZYJ zVJm7`|LN4vPprd*_P~@Q2RT}`2HY)ReyGeE`B$%_WAqn3ntV!9-?I<7VxqucU4%T{ z>v$yoGUZp(=icLK$NTW((|zTw_;)IxRm$_=K}in(?D_w zH7h4X*V2=e3$AfQ>j|m>xVOO96n6h^JDa47t!*vaAsuf|U`5iJ*v7g6SmLO_9aov@ z&88%YRG@)dEAZ=R9k26uLC9o-N^auf{ktCpc}>Q;%ie^gZK;-;3b~cpv?MHxuZV>Z<>B3RiUCkGdj*PVOTZ^Ei%QPhpjYh2$g2saXRmNr%od|j6n?C z9~i%>uha=6AI#U}vaVXj!J$|C(9j?R5Gc#R_y|g5c7A>aF} z1RwzBIH8R~gxtk(*~sqB!Qqq``E1Rn3MKTVwCn7^uYH^}So-%}8>o;x)bh)~f0pB) zxx^h2gmNr185*e^!^y+X4F%F|4Z)HE~;flT#!5Dv}`Rk5YzwYc~1 zU_yKdp|P{GqgN}sB_t#SnR(5?R{1Mr8v^XCtQr-PPlfi-v1@r2;#Z>?Ko?f8_uzpl zz6hG(Gl-{wru7h#0Dg>b;zQ^h%z_66p+i{0D|2&NOo5|E#C%Ra0oa@!t{#GVkUD7U zvXPw$)gG$F-eMq={mu*zqHMi*@j|V^O8|=f&&r9x2I;iHfpjU{`pW~UC`N5b2*ppt ze+uqvB0i@ekSQ_ibV4Bls%kaKfy5zKCEs*3XH>b+3V>2!?ZJKMEtg=1ISs-$5Pu&w zpGVl(&7U8Wy^)k$oHR)mjWSAd-{CQM_YOEalbx9=h{8hV;^Kml9bb`!Q$hRVEp;8w zf65x=mYsaNwXcMQZzp?S^Vrm%QKF%tv6~I~Rsj>@vTq=G`sXenVu(na@exTu#A!qF z3t~`mEMF6m=es^tM(5|}=K+7Lg@kRykUi|PtDZdee^CqT&uQ!2{w+fMFU$h_O_rLl zxgHoA_rwT8#4DXj-XDm`G3kxtfCQDq(^HrCyxMh*IJW?1PFl8EIvM^MhZtqJpl~L7 zBUJA%K|zT8I{>+(HTD0wjc%s@r-Xt#f2EKg_*D^T{iHZE_7C1A4wxy&Ji)SxM=Cb3 z;Qij16w?zzIl|F4U!rR1#22qva`t{f(C6xiUM*1)7$lR!HE{HU4wjME^t&pI08viJ zCD^|l>FbS~0)whvcEvtgh7)2E1rY^j=7YDvd0h#t2$-h{6-y?Z`IE)1tv&`yHfFOe zLrXQ59IOx;fK0`@vCR>5!}{gpY$^>cTM;aXv>i*)P^aL6DzAW+M{%!D5yJ&1n9@JS z4D}Z_-toIgy&$nBfLaeG#;~L%Y5^r^pBLhm$Vq$BRWHPVD>ix)iZ^#*&GoU~8s2Dc zv;2LIxfk81e~`|XHxbnr-mFndRrWz38|e)eOdbyAnB9Vo{u@xsBZbcPAUx(+FnC-q zc~w_Dr0N(4LyYmlhSGg0i%B5VQWfr&;*d7=j`{)h@aS)*Np}(v=v)r0H4%#?8c~+~ zoeRH25c;TVo>237YcZUCR_Ik741f8px|MP3m?HmssTZDn;vA>3_xJ1&%|6wG<01Mf zOiV5gu(R-X_o?SOfpfLRXSDs)LraLa;(f&af$cDJrTaUCTm;5tO3Imd$C?uA+{^sV z?LRxgXRcQglpc{S+MY|`%0PTU_@DSrUN0}r7gIgf<|u*qf;8m7yCL!l8rq{(My zUg+HE%S+8g!?2~IYY1cVo|04hff9dW>~Jovp16fYj*2l*YAHn^lqcw47#&jd(wUbW zd6>Q{T4$RO9N$l1dwuQi687tc9w=qREQQXFDrU7yWpaF6W=f|2ZkFkV-T`WK1js5_i-nmcHK+sut}K=A=-@<<&^N;nuD2#9=9bDI z?1JrD`;b7Z3obMY3f11N1xN%^j0i|DXg%4 z7W7djeh`lrKxLe z(xlqyi&V+AcCwaEE|KbebB&J2`~hYU_aKc-t2}7bJRL{_h>_A&sqY*eja*wZ1)q|C z?^sa~zi_46$Iy;oU8^U)Eq0$a!$PmKYOGPs#2ztgXcSo}sw4fRo7$8z&=0ciu#C4iEvR_De6owEVL;zG=aBN0})T|Vssfu1p(R&fsV5J2#P zkufCkrhm>eKwQ}vljvq{og$odz3wFz7V7ht&%V9&Im)2Mxu@FdZ=tQtSI|+=pshvs z^_ju$*E^Eob9@Rvkx{>i-CuXyxVmCtW+qReF7P`!T!dQM+R`07#-Pu?%fEDNj?4Mx|8me+IIoX6sX&7y!l!@~l zG&KYqO(f)%P-Zc%pr-alPwyG*SUV(KFfE3=CGJ=N#0RI%To3Gpl^Z#^%y{UqH*1{+ zBZQ-8m(Ra^2z;g`ERBruP~Es~oX^y>#IAo$c7~Z5&5t}~JjX>(8h3*rzgEB<#p=b? zS~Q7_zB+?jK0%p+aA?Q^m?fQ7BUo*W9u_~Y=jYC#6ZS$j#6S3Ip;o<5U4m{!=4obH zQfxRZ5BlgU)}^fM(h@I|=M+z2T5l8hb&l!7FX;QmF1zLTPB&Z+J3k`cX1IPLWSA!W z(YuvGuJ>ZO@~H~6YY9)J8n03 zQOtNX{nCq9sq6ctWSGH~M970b{vWrgb1n7u&&lxKo3rxzKkxpN?kuyXY4vcb0!?rF z+Ms-w30W)lE_|W22)x%tlO2B>ju&Av@DSJtu>5GbE8ki2cYK+t3@T`;vAdujoPnFj z3hGVXR8l};bkx=n^`&Rx|D)+Ept?%CuT?@p1xaa82_*%j+n^)_Bt<}4TIp6m5J~B7 z1f-<9rMp48ySu-0=l%Y(W|nI?3P0|Bo)i1*z0bK-sjpsizym%#__EU$E;MD|6#t5y z{KTacPy4HNc~)W~_^vQOS#Z)#E;muL#IT&&D!+)1qE%5;1$8=ZN{N9)0tw^`gMLmmr%%^x2z$!je;2z) z&BGkX6;ILvcGk2{D9(|2HYsKsBv%TOimthy*k5{*z z{3ux`qJpw>2 z{5{lGPL8IV;-SN4WVh;nXEL@Rx|?wGMVQ`fa_708-A!Kyj-tEtZ1VLJkx!;ib4q_Z z7FNuw%V!DE4@O=-o8a?crOv!thNk%J*{C7uO1lrX!QRY~qurj*2FP3B$n{rP&Swbn z33k}&-z%t|Xmk}C_kA9;97R@N#bqUEnT3g_fqplhdHnS&>qn8X5AE#Km2I~-!)C}q zf9X_lPIchN`S0cN?y8P54&LI6;6WLu6v}E1wE&X}U;hs;|VFfQfj!yET~c|FHhGxC7a1uelM*4nZoRFcARvdBt+8Ygx$*e2XQc22_)6+OEyw~^C z5OgCTNNb|PRxF5GQd0fm0@{|55_3uo4GkoO0ahGv6wm$14F*J-_!e^Xp;l`{o#ZCh z!TR!-scr-$`-@ z9p&QmU~icP2#b{9f^%|mg3x+POSw;vwzhU08JL*-02v1+(Zc3OlpL?yW|cdlM=!1c z2m<*v`7J$<{q8&(yA+qn$QKxa85NbgOHQ{P53C)mPgD%+kbd~^Vce=;dh-r#m4+4fUFDfHX|6Y@9Tf<-@6`*ywerd01UaP2|cC0J#Ro`7q`Y2J=lqhQO*Wd+R zQ-uB2N#YW@j(m(zF24-{9Rum7HnzG;(IcV@=Yz^~L!p2Jg@5R~JGUQ=3o(RZdg?Z^ zCWzgkSvWYh`?$kqr_ZK7DBzh{-dxD*dHh)DmmuqxqS8TSd7mZJA4eiC@k)Rsv@iKQ1Pm7zg*;=9E?h~&yQZ2_ zOUl(V0+-`)Uf4K1Yh197@FfY5*L!r<#GY?n+3Xlsoh(+ck*ATa{2p~}yTD2&#Pn_b z?zMEKClLqZkz1tSo^7)yDH)!l|+lRz%Xm z$vn{?6^V-~k1B~Lmr|Kdow_+uZaoK%dwQ@-2@HD!YJW(kJ_NT)FqBo0lM^vCOm`dw zw^AOvZ7SF(VVGA|N~PXX7W@y4o5h3Xxcj2>wQ>ALyM7&pDpFGThqS0z-Bp!kz7B~bN85>^*Nq)U98^@XY-gHsHk>_JeBxxsbL(2hmSvCGP;r=CM|szngCNJEO2Ru zc=K9Ag97GRFc_-{kKJ7P992?M(#*jZ540w5QAVbHQB0Phyo#I^SWBDTFi6io&_YqJ z)r0c5a=ZREg6Wn_xkRt8n{1Y^F$V<)v#eGBk50YuUs?A7;$m&d0mki6`I%mYlp^bg zZrwFqEQx_BKAU;HQ9eBWdq1gNde5$(cViTulhrNW=2E(%36Wg6Pnq`o0Y@~yP_$^a z32U@rdmLUzOjWQy#@ELLm|^BTU9}W>h30t6ps;%>UdzIVJt?}uvg&NP`Pb<+wFK|h zQvGmB!_oa1qhL8pIlZ2)rEve5=lDS{m+fh_LnRy0=+>Pp3yC=tK^RP7OPzTn${CdCZ1Ynu3tFIN9{Ez%t|ol zn3@4$W+VTk-nU|Mt9Od89$dZ6N_Msvz&8! z*RTGSQut;kmuFj%0Eyqddv{Y0@)j~pfsD6{09)MxM_}|K4jBjx)Y#xpK!a4NTE;3; zN(TC$#5X;#lnnqRcf#;^v$w8gqZ>BV61&F&@~Wz%+F#OuQ14zheVH?4R5Y@2NLWzc zML2ZcQI@#JmzfksSrLJwviI+d;c^MC1i{-Yq<%>u*oz{ovUqPf_aF5Udk?$NsnR%-T~ z!Cj5|c;zp-aeTSbsR|WBO&%|#BCxxqTeJ^~opiTb@H?2&XBQtx=%$HX(aUDVO)ie6 zzPkno7HM&=&X_a_<$AB=%jw4a38p>mO(laK*!jj zi1nvcd&%9t!v3P)6gBcLnC#Pj+;EEy#mCPf+v(N6+|$zByj*%H7+2%<=Nb#`Wb7y- z-eKX;<^}Y;W;GW!h-M)`LO)if88A|AK;|f&wy!fN=lpGM_JXM@_<)wp`SX>+t-4$a zPN@&AgXwHw;63<#==Welg2u6QxOkWzGMh3qv@l3Pg39sshx+>Z?VV4dHByq2+Lz}i zu%i)|!1|Yg{Kt<^91qtMrK34LyejfP1P2F?mVSC97C>Qr6#I#r44;6&9`)IEn397T zwBEt$pc8?y0*V&d$iFo3Q|)CJa)hVHkrP z^pO#E=V6%W9mB&z+(jVj2^n8uc_ph_&;z9K>lZEj02r8<m6BAo)jz>}msO!xDqtfnlC2h3WloYmPz+S?g4)$)C zi+@$h1SEGct7YbDa^ky4+AQUfE-Td|r4YWd`X|)hn@>KRPoX%M?w!1<+-bCVj#5SB zD&4G4>V^DTOF1CS*iJzKZoP!Hdm`r>8au%m5)rhM#_ZeiUayv2}Q0B!vLfz{ud5w0kr;ImvYQDCsU4 zcVHyD0h{Hb6hPb`$BLPNtk4m`>JErMvT+Z})^0GLkAUljEqF`?^(Q_){&pKf?i;ZA z1|)wxD`mJ5#)RClGDEqVvH&Y12m9!UJ?t)u;4mfxL;4W!O-lPNm55;SLwX-9bUm6-3Cj9=587t#8YEnI)_n-cA z`|Lj(wr@bWDw2E_P2l1RP0#EQzM7-_<&jjb>7~Iyt}_`#czEvFje76~_xJY+U#G_` zZftb^&qCd#Ku;#EqdXSvd@c6wz`#3u3#t2N6hY@+m7MhpbP`Xg9)-D%$F~0cXbk!y zQVeWP)=Fj4fG;tUsoDeSa-dZD-MDdlaCxc9%*WBztn6@)}ErCjTJod1uEj9=qxYx>6_YK_v*>pV_DH!ll9F3RZ2 z46Nwl$`}+vj`8@RP3A4S-K1~1-QbzL&i&@On*387k;(7Wk7wlZl~r0=b05*GbpLV= zeTlw`u`?_ur;}=&L`lEUIPpeWS{lywH<(`A?I+$)cEtxPCZIL(OL9Vfz6LDsiAXHC zX7Cm&&NS^E9fJb{Yk@Y<4g$|xw{M?~M!KY(6(UP4q4G>t%EZ9J(uXlR|LJlvg>*j$ z$z2!{ra=ZV#K|k2IT#cg`U*_Gz*Pt`&mO?EPi@v!U@NACgoM@V zKx@_I%C!b%Fy^=u!yY;+gacSvSiEkhev~+dRa&Qp9 zI1j+&<^D8m*Q>KBWGxhb{;*8=gSEj-r1{fy6iMs|V z5zaYsB_N5bJ0A=d8V~0*S^}R6T6kT3eOyvfpHY)vQ2Q<)IKZI>Dggg}&x>(LbV*#H z{{fL068VhnH3w9vBFE1Etp9|3Tl0T<8Rd_9rdb*yCL+NE_8*2{dM~h>D`!atBpdBX zKWhGNi=y52F-|xAgG)Rst@7pmZ-#jclQe~2fJL1)g+&LWN8OEJN&2}{(vJO^yC%pn z=XFE#{vK)I6)r%KZwFPPswl`8{bVfdai7M@Lr6!e_3(zclJzcIAM zI33p;yUnozaAlj??Pj0f85t$_?r*-f3tUltlB=X(Fazc>Gjpj6lWYCssbA=gqmG;R zi>O~lMp`&WwHTJ(ScpxZF=t^~su=VtbrI&%a4DorydJ*g`0m&;<2R`MxQ3qYMaKem z#kyAZpwQ>SUVzAhp}(tP(5WUdA`72A*Tva`qE(-_@ysGU!QWA|DM`_1>P3wwFg7NyG>%vlxzq9HxpQeR=vbErM>eoFiDR1p0lKsh z2_GEWd+N9*;azjQm}Pxe=~rcqHw|gPjW===-{mu)jCU7JoxhAOe>!toc-zcisZJhw zctbc(j_Iqz7Y zez%t8L(qqffD^z8dFj5L&$5yO$*i?0d7QIvup%L$Ff2_2_VJ$i?68#@MF;`Tplr~r zDPP?BYvR@8P~4S`7w^=~Y`IT#XEbcc8TD52E(A`Q0dOw0eu*htSsa9Aiqaxev;S|g zo>Ey=59P|qK)`2+JW))N`>K>r0rj27-Y&;Vgq^bN4@u+5n!~5?cYY9eW8oh8QJwq4 z-tIlv$cPIAcYXa|w~GH~WpFNu3|>*O^Y0YhRSLnx&>ilcj=ZHjtkt*@vcqP`A6H+( z69ZAH-Zm4fjP8OQi;gg}VeSHUHJ*x+8in4dQkq~K)0*3SSglbWA95@l@a461Rp=E6 z&OB-P;?JjUfw>#-C(NwyIc!gNzW?(tM#{xeU{ZsGqPz^GQEiVZUZImjn~bc(y5*wg`6^%E{wJ1Z zKawYA_EoxPLNbj1B*{JLT~oUZ?KRBPDdO!}QxhBp%yZqwpkP5p^_Ok9_%HtPVVw(0 zx^)@N*M4fF+TFgE!wOFb0Ah#n!ue4H6JXyv%bMj69Ry`+V_@JrgmJhRy`2dsRAt>eD5_tqQ1+_lzSrvjHk*QmHsLHnM7d_&~r0TwST z3bMtCl&`1Md=cz7EHu$%aQo;djEh5R4ro|Kb?I;2CnT9}w8YB?*hjDT^wGKHqQj-N zYrIceK0fM89k-SiayhGD6LND51Zp<*%vO>#@EM%V5-gqGM#PE^=-Jl6DlXdCO;LNgm)b-oMfC z>H40qj*zGCu^E03U@Nf`YRm7)iIGRX@EqN5jD7Z}`r>Tw;hDx^Vyc>AA#M&EW2nf0 z$q_po2c{(rI{l;NN2oC3fmd;__0#nhwsCe|Ka4B2jvc(gLZ6+bwbYw|Ut{J7$hvZ= z`FsA3B(_>fSq$FQEZw~I?l4AcPnK?*EuDwlzQX$DP3?yFb%9Cwywz&?@swa&K9ET~ z&h9S~nYVeCk(K`yyXMS$!b@`Js5f~qo%o;lZG@;4bpWf{W+ug3!kizDk;mAnP+ z%;H5Hg4s^nOl%lbvFlr~VSe+Nn3$oe5!G9fZv=xHu*cYrBQDeIspH^#P#;aO$RiSn^wO>X-4630$j#m8T<$cUr!G z%C^jkIlHO~ftPV=?ept*vA39}M&0FjFbw>nUFl~>KN_pT8+t+tNVXl~l=hl1;XRY;2#o`^n*XcbAC z!s6W4(e`QDn7Hpjn(VN6@wt_oYv(^iV}_4x-OtmbcHX02>aY_2RU9sk7b0=;3R$T;TYYmkG{|KT3_Rh!FFz#+6kJ*NTabZVUSzbkHZL*|uGoiA) z_d?UOYOrd(HVPTL)eT{eo9Fhj>P_9(lPGi4qTCb9tRvy>UQrLgwxfu|ON51Gj zDi)xYN>!6W=&tn2D2c)Dp~O83!+PDGe1^0T+RRu8@bhIQLjZ!O6y4UJ+q@CyY|Nw= zdiRxW%csjzUA6!dEJf#fc(CP+kM7%huIvAQ&#H(7xUBK zR7sCbdIf{DQEojWRV_Xtk{PvTS-3x(@aD1jcg~7}bTB`G8)iAZERn^j9BA3KOJ>U% z)VQhz=M((Ht_y#O|LS4Lu5V8Mb&>rjI9_6D@>l1k*1{0~zn7VgX!p3M!#o#*>tdMn zk$Y{{)J+i|^Z&s_pVhdFIln*I8|&Z!?|@f1Iw?;x15qzs+&$OivkQ&`La2Zwf-KtD z)@T}oGrbHA|3pqqRFY`opBJ0$D=hL^l(LT& z`OWtKs&gZdFtM?7sXo|gtpSxX93U-(j}Un`Miyqdlq@3+=`I-j&SKcW>@T!=;OlC3 zea)8eDU76yqw_mfP3@)5cE!+-eCIA%-}e~5AHB~|Oh&h4helcT)a~%o^=E49Z>3b* zO4=<;R|kre=n2$^g?^6ZZr&<&Q=DS%p85HX5n5Nc8+EU97omlCdbZrUj$gN~cN5^% zGIaWeruVPL56&MRjZ~z1?96WvUvsK9qy)A4($znoZ7RG+4kZg+OZRtn+ywSFaaTTd z<+l1St?)TIguGy2%1vuEI%+v*T~>_njbhii=3sSaX=jYR=XWUVL)@DVNi~^L?wIc2 z<}JCMXjyU3WyB&R@S0A6agl=~MTMoLy=~tcD8PGkixj2|7usoV5)D-_odv|{j{ef& z|NNS(Npp@@mL$~e+uG;rk24Hw&5ju7eg#syb)ZLeJ!u?{8t|Z!$8%FDNxt^&xe=$R z#e@({*mbS_g)QSW#NdU)DR2yksZ4ji?JAXj=iO1pk(jRPDAuyF|8biWRNw^Owcr$H_0Mq-Y^S^u`XG}3#>*d5uUizcZcpQ_0 z3Km^BQwbnNPbkNFt>_tMokD)F2Y=;^4lZM`94Rk}75r@wCFRJi>Wj*XoWztEYOv z+`&#?P$=POR$Zl9w#iU*v%ami&=M~+bVmvoz>nxz8z5u&Ex5%aXxcp!40lB8%E7C` zqiZupo-AK#rG#m~iJ)euOBvI?jMV*dy=jv=Zf@}{iMQwSC z!yq*qg(fvhJ)Q|@UJ3b0oiQq4^ElTHI^M=Q9RjIRK|inNU-2bEK~(DB)l#*_dk*Ip zm01t=Or@go!n9l;Wng?wVlDZf4qdT`(Cn)DMpTx~ z5%=6frxj}@^p`dJk8NxGZvV6pSco5eQlFf0n*B)O*7n{VtMt$x`a0(MBlZ^sri@cg zFb1Hn=%@9XLZJ>r|QSfwRT_ z$AFB~mS7hu9De?sOg=*@6n#yB35EKn%Y&P&sHeo+eVXc23BYyImm=$EdjHL2O0(m3 z0p~qpli8x?vkJGzxP?9kOXhQZ?*y?+d|H90u zi#}CJ!F)ki5yhJ|r_VmzG++L6sFo$K-Vu+f&9nS9GQ)xFaB{p$?!(16-R?v-Goq0$ zazj3sq$q<)^#%ZV?`#c*HJh)w)KTS7so!C7_oQn!u*m=YQ6yeUZ`|8v>tk{nSL%Jt*50@N$icZfFMk1B{{GxkT_rW8!<~X4~qm9WFqR zI%RqEpq_h`5!lk23HsNtCBjSV}WclKdYRz`UD|a~xLGNT^lZ3p3+y z^3Lal8Cl*xGR840-{q&2M=6&dm7-C`cm%Yx>zzT=zSK^M)x$g#4~IfXi8l}`^si=>g3X7c?* z;t3%fiJ%sybR+8TH%+`M^e!!(R&DkWj>+$U4vmG}C5?hVZ42-yAaow*2qoEd}Mo$LDGtwU8!K@S3`1E_`kc9ho9p)AId~YAo z)OObf`IYTMNt&jZ$B^a`9O}0(byqA+4wu+OTSo$xf1;#{zJl1P^saqW{;o7<7N=Oj z7jM*KhZS!5H{S*q4G&2Ekz=irnpjC-R;61qo>!ZWE4CE$59J@VNKjCW5md=^f+vmM zBkhcSt!}G5^(1{`s#^2b=;!?6O>7di?fyc}M*T1K$932`qwG)5&VfZmY&zY3_UiJHAl|PG518RzcaGd`I zy?fJ`FWqdnUTk(8*@gOYw%+-%plWwJrTK#gZNBjVacen}R6X6b?p(HdyJKqr+4M0t z#n;mt%b5hbh9QhkO$NqG=D}G|ebO4u9Pk-j$BcT6qlgR)x z0?%=j6>tEpq;63cD4+rzhbR!I;V;+l)8Cpmu2(xKnYBNn?eJQ*`&?2&1$)l zQgpE5y8!k|+jnN#9OA#@Krkb6KRlJ)LHJ>2G5OMH z$xvT~CH2@5f#tRePk$VRmE4x>cTV;!Wm1h3JBH>Tzdv#75@vVnK?1mOe&-oy*=ecC zX~uVDp;5_%_^-0}H&dlkD69JTw?dB%*)^FbyJ3w_eS5;EaPfATfJNx;?RF0ok&DLI z(3ai25>3%rHJpY+xzd~vmj{g*=dR2^f+7Q`Ff^QG^q5zQ=r=3!*t?}QedH6V;GkoZ zewHw&loV~Y2$4hsN)fxkE39CHEV`Dd7JrmRCiH8;v#|MdZ{vKaN*eYRihtjo`@Pu< zE(4OOR8`KmjBW9?3ix`9a9y*q^4`3Wf2~$A?Zew#zoi^Jh-BS1`ZfENWTyG>fqQ^% zjcIOC^N;*Z!BDj_B;9_8t#FL@17mMy3VVMhZdJ5er7}QRQ{bvHmkWxxV8y$Y2MchC zAfX0Y%VFcdJZEokXsB;wMEuR09<<>i;M@!i&026jCGoSfe?LBDTvG%lU9k7g#if(- z8Xsj^zr?FoXbx2r$$1MMOH-0C*;L9rNXm)+FDcguwMhiiN}p!md;o=>zsKL|M|zN| z(rm*Y+diQUl^5|UzAhg0H%x%;&nWqwbz-sSg^|$C0@xEYdt-ZVDDRWnnVBrpj0~fZ=uR|(Ctn{Suyjk^mn{Fm5GOP?ez{f!P z9cQujk5jZ?YJ8W4r&Vbhf3Gq^ebrCf*FAS`G$8q}G3sOC$Y^y95o{$Xzx0M%r3;kk z60lSAX1#nnq&D*Dk4KclZHc_=e?8BDIz{)53gz7q{?A}#5!h_5<5fggJ3P&-vuM=@ z1?G33?L=qwFMNB?fq6$n=>ZCmg9^+M$CQ{3865s+#hDem^b0`?wg9X;z7{%*6B46U;yv$_MEajiVY{xow4P$AD_6X(T4urannM%o_ z%ZPwniS{Y;4Vi!ei=#X>Q>?a3^--#&Fee3i0xQWoqN$(tibIBUJaUptR5_p3cgVsubmlS$$H#VoF0)MXP zK#6mc{$Wi@nBe=Q(vKFn4%wLCZX_R5(|pk*^vDx3B#dW}+#Im~h_U6bzdH>XuZBp? zz9B_vS>~CBx8HVSdjg;h&wsBm-s$pv#NYC=d*Igd8(mWO08HvL%-frDQ5L2ZYzqL_ zQ0i8KbNLK>r;`SkoK-?;Ee4ttB@>=5Ak>sz{bHt|Iq(pQ%m0BsdAcg*e}8b=f*T>> zLUX>o*UP$)SbeAU$KJ9J&8=`yZhD|QAQ1#o?C5?!#<>)4$0YA1k0lDb!Bz@DQPJph zn%fW1XSy>>>z~WGkjvFMaBgH$v%Qi1UgQ6RgyB8j#hWLu4*M6j7o*KTkC~SARyo=x zB_*l7&&|p4N2m^nLuk0BOJqz885=vhtL@kCmdF5PK3I0Q?k1&0C&zF?ulo5EGjKHc z&$k;8^6%xvS+dfVV0C~AC#mb%*c7ri8T8%)w81Se2_PwY2$4vHE%-3KWw})!|1udd zNhumht6K?yxmrU1@9_)%F2yme#uAd9h1EKjuZhO8I zut$J!uD#F}O2%t-D^&7TiP=Oc5Y#Yk-)>m3+HE2=-v)Z;4iK37v)`3WZHssPQOh2; zoAb+3$#Vlf38IIZ;rbtIpyDBgDZU3oAPm8*KzN-z@n_bH0Gyj98?zev7yq_&o z?-)*)kS8$O5SwaURnf#ZPqk{V85tR=00&AbvnaIcf0I#l z5;<}#{tRB%Hl`pvG7dYFAX6A^Yc{S1SmcxcIw}VE**7k%kp(^)JWH2%c-rw3q9!OZN-TTo`Jo~c|1^~O^GvqJz+v8ut zXffL{+5lS|H(gN@FfybUlynL#U98VdDxPd31;a{k@A{OVZ$I<}v`~<`Ur9f@6g-{M z@~Eeb?bO#<>WVcP`SUd@iln}w0ikr{<>fub$Hbx(>_F^*K+8w`RO`zbct>pLfKE?W zPY+fs z5mtD!Pa~yLe*NmJay-&^mIa!o3b?QG*>1iJqGn@bYiVgofTRJm*B}sw_YVyGrHgl} z2me@Lj?KWe27b#;)iB_FAQCzC}psD|ga#LfQ zpOAoH2Y52b?&)hVcUKA(ToLm1dk;xaB7e@XEaEU*oGJyK1R8TMg8!h8_2f_Su~`~ z%$Pwi2fi8mZVMfUn-lH8=2_`Y_7aN^hU_PJGLHx5*j*s!TN9KuDvAO&Xn?6MZ5w;AnPxu@}cMKfnm{k6J`S(u^9gD05*is{4 z`vKy8(5yHdu6s*b>tn*o3V(9GCge$UchkXE`t|ko+ZtT|J6==&5e!6*6%6x7p#Iz8 zSQ(d<;)DET9JOtndet6^YsjPgI(S`s_M&@ET!f&JZf!z{K_)b+9nj>#(VhJ@LTSS< z!}hP2G3vW%+S#C?0owk(=+53%2fDV^RzA5$H<;^bj13K^LzOjVKoKOC+zYb~LnEVE z*bS_`JKqY=1|L?}!M4?AV4c5y`4SZ#DZ*d`dyhXl%~-&c8m+Kp0V}Itd3is<)d<8m z0d-nbyuAO&E$lB2hQUPS0}%M1J$nY){1@OQjF^c4QRr2wJQ(_A0dZKfhjMRbyzqpjtJh)^v z0g2a-lxr6lqi@vIerV)2>lc7G%pFlbl15<40`2lT73{rlrf~EH-lFzXqBj|D5xG7z zOZ}q`CoMp33uAiM1n(a>kXk^;MMXuuM@cCQL@mS;065to>dymWCwSh0`4e)e;FKc! zKjHOx)@jwwSOBY147NIgOZwvP%$(;z)Ib(R7~!A_tv4zHLf&f~ok#G6fKz4(P6FG& z0sR>q{6awi599!hYK7ks{cS=*f>N^!aB;y_0v;WOh%em5aukXs^wh3Y`3%FUY60M6 zK_m_i3$vMYG~1bNG%U)I2M3N&;4mXJ!Z_zcRofoD$x3^W9fgN7DCe6^@WOQhR~ir< z$GKkGo0YH79@%l3jknAN2+6=5_)q?D0=yznI`D3lq9Ld6*tvquC>{E`3N2gikNg}@ zTn=3i_x5o{9OtR`l*mt|9qs~zJHT;%dJv4#52o~FLUPj9v8k%9 z;qAro3L*iT#%I&?vIy+qRIpCvU*HfNqRh49x@D?6SX`-TI_0+QxHng=-Ihrzmx&L` zbM~3jXOr>#zTIi+og2!w)Vu>?K+)0kqn1bk91B=59p}yWawvPSgv{R;B-px0+!Z2c zp5yvGOMNcF6DtGG^qt_;Qwmv41>6@&xyt&UrzLD>Fm@4 z#v*8Wk>~>ItG~eVkpat#QrHWK$dV!OBXVklMrX63*5pUJG^q)lDiWE1v-<()-muOa z4a8*-eTCrW;%6 z{7e4|{LiPr0CqW^xrta*Kw>+AFSjy~fd_H=?~I|q_9*aiA=&{mSZDk2a1kDb9{5d+ zTQuC=vMbDNc?C!13K+}W z_PZ&~)rdXHgqZ<6Kja64yY^pxtUfc-RsHWN#UlPDm9zJerAy9d=cYe z{Q~)CdST(4Qsx4CeQpvsHGF<{R-g!l(jdv9-B_=-LP0{us8SBSijA9kTe zM4lHSYX)Yk`0Lkmz?q%~n{tXZ^RZ$-MDq?kNf5)5?jha0 z5PEgF%uwI;u`mRz5*e<1aJ(4*BckA;mxzEi%gC2Y`FR)`(R z)`H?Ts6RQ3^_kl(0AXUC5oF?&t4YZV8Q5KZ%>a|NyCr^7C$GlJRg|LLyYFw!f$`SF z@NCpNsu}Sl#h$7x>HV;B2WJnoOCiT2atg&r0gH3TC7IW3ttm3RAB8c$_85nV;@ zHJWHM;rL|J;Lt_)v{d%aO0(pN_8hB{dFP^v49F4i(i9%dz2s4jOI1}^CQ%3DG2%&S5HMVeV!TGHTjI^L!o``gsS2E5M0(c`JX7u2@ z0^0=yI;lC^dsOv0LCpE)#JzC!Tl;641vCL7!N)DJP$TA zk}4H8Oh9qfgQEr9{TqRSfx;m8@*!m6-4dwk5!eO=#GtZfDkvZ}t)Ujv0{=(;tMfg6 z@MnNZ;u=y=g606RgoM4Y=AYxiX90;M5c>h(0=6+yT7!F*URMkc@V^1@L8$yloPlc4 zmy9RBk#)?3lb)Ww$EfJ|jO)S#))0z8h=MHC1WPY_4aaH5CheEVC!O}Bp)gyjCIm+v zFffE5$Gao|cCONr{a-V$+Q9^J1O!L0%L7=vT~&y08)Q|4qz*+FCb z3I`0w^=)@cY`KDmIDXs|wKB|SW<`*%4H=hDOu4S-k1iZvezMFZQu}tC(9fA|ux{}< zT^FWub^o4A;CeN9fA(ipH;f_7bmzLPa-Y7&5=YTr)ks%GgK=u(m!eaN;qFyDdOEx7 zK;fXru~owzky3hJSljBaPI=j>n-Vup$c8_b@QLsqIa|0+rN@hULFOuP>6k& z?H{ySkTrwShW2RrGYBI4D{QxDzec#<#7-K9WouOx@I`ZkU%*FKt+Znm^C$a=YvCOb zfT&EIV<7&62`01-V60UU9xX)+CoeraTVN>y3ZsRE1^8(}-xr-dZ1@a7h%mm*Qgg+0t!Sij9j7QGD zB+b8vYB=1B+517nxc~;%w)Ti$Hf&m(k8eNheexgzhl}H)UUkY)XU?At%OD(wP#1Uy zIiuVKdzr^B%FF~De$nTL!2Hey=mRuS(${6JJ?z3F^N$xx?n+w(*)MO8S7MybMm%XTryB@4Ak?NyqG zRyp;zQg1yhq@&(Fwr5)S$pmx2`gTR5+z zO4nYm_`83D`JBb@H1$Kbs+A!8=OQ1;n?Ezi;eYEGr-#q4<-Dzf*TiDzJSp#L@b8)VlOu^hDkC zBrDV8Yp|f^L#JW0pQMeeO!EQ8$uI|4>4&ET-Zp=HtA-Hb=8M!cK3t!5G?4gUx+-y@TGD0hL zqlX3LI#9kMtYzpMo4G*6u{TLQt3?&12VoulL2)>eR0rl}I=hB|C0I6B}#zPbf> z6x03xBKto&B(h)2x${krlZKbF|&P zaJC$aE7R19>B9d;_~jo4_UCfb%_wPhE3uu197aIKQ!QM)79l1TfkMYyyz`nMWz zUdh1ABn~B#rVx{3H-6aclR@3U5PTY2W-tfL;=HNMv{3PXTmVOZ{GXcYFANjDl2*J7 zdiS;=n0<)#WJb`JVwIlhjl5j&%N(_DRi;;6mN5-ZNnWmBfDg`{#~>Mcg*q0GAo+h zZv3Fv=$|=i$Y(^9?*1)W<}j%rEx*Elar$?5A#tX)qM}c$I8k0gH-^!mebNc$xYtGs z>F#64dJ1b|+t#KcAmU|pRI%J;$Xm{P%WERy3HM8|zBdCw_990e%&cIUu)huuK~{vo zk2rF5+0Y>l6?@Y!fUf>EjnZZbhjJsJE^`5Pz@bWf`U>w0OD`0Mc-^vYSQzOq7f??f zp5|-5y9^|;mBWTP-^Vn%98k%smVKrHQ|P7fA;5+g!ZkmGa37pOM!?q=@iIXck&#IE zd$EMPHl(!z{Vk~1#K1N%lGmCZx_l550|L>l6Cg08n+592)qyAYuRaDn0K*xU2>aQU z74Kfdc>p^;v;;m_8kb4#g+AmJ^xp->yqZ^GSJ0BAR#wKq_tRekp)Uxm!|{7c--6lU zmoL{$INudWMSTB$D@)0^;4D!ob7yxKd_?kFjpabz2IEXtRwkiRlt3`Mg?sGn=eGc@ z77ZsSAvnQ;8yNU6uIs&b|4%{)%&8dAWlgBc|0jM^kNywoxdvmu%BvF%GxB@g>_-PL znO;|(ooEocu1Ol0KO3{RZKZgA<8I}l>qm%nNDh$gQfU@=5wzSh^f%T$nCMe*EQ)IC zomGPNc=IjPn40zBNH$A`$Qrg-2^|NEqaGXBpP}Jkz^-Z^dJVdoh`kl&qG6L;ab4ayEH*)?-IG(n$A+%(CCb*ySWaAQnX!u{XTqwpSEdAhKz&v3 zcIW({Zqkq=pYIH$1kuBnEO#Mp`k0$TW&bLe)d5DQYwlGrSX~&)rnB2W>?$;$qsL1O zqMl8@APypF-@Qvb9yCNk$wF>i90Tfn9r5^5%dn4p3ZLu+G)=o^Wl`|#jI6k>O`hxC z96eDS;2LRp@_TVA6Ki{Z;(Zy!dKmdf-Y#Z8DtHg6WCII}xXQZ2UjN$lY6_g3aAOYVx8);-Q0xJbk!>`@Og@?L%;k(0oM3lucO^yA;DU%IY$EB28{ zt|Av{job6U_?uhj2l`G`2akWag{Ki>*craXJeuf>vmTS(-X|rEexKH#kuaQLzqjJz zflfT)SQx<<|GqVGF4Y6oA#e9g3QIqf^=iwNDmB|X_}ifG*%+6!|AzuT?x6QgomDzr zXM*f@M#y0FN(ICH?61Z)2V9DKF7~|Hk7;PtNkEPW#T5_K+06lzbUZvKF=P6=x=$Ss zO&s=@>!9dHMr??Peg)uM#Q9ma940M*Iu_)=S&~;%lLV{@KwDZ?RvcK4J8A-;6BmXB z)PrC*XfQ{98KwumH&9(kcLjs84fv5?5DOM#9$xXG7rn33Pz9;ar31+OL~;f}m`KMhMw_3H}9}8`(+>`UPdJ z`2{e0L;z~&^Pyq8rhYwpe0;pU+7kraPymjWS<=DnJw82!3l1iqOP~=BcUJ!&eCmi4 zYB#R=>64D8{kB`^CEdQrz*njm5w?AC?AFKYuN&Ua*%rUB#(ph5r{ImEF|9y>$NZ2; zx*ma=pReTSgWDf7xY|y1W3s?JH_^7);tmA~{L4#&T7kl>$f4gC5Zc2|6Z6X0pXxft zfzoG8WA0DC0rkYdczREt4aS-n`v=rL!|vw~hx^U*9ewHF1{wPr_$vg}zDN_zR7w;O z>%NyQYQuG`n5igzIBYz4{!y6UHLf@;`%I>nfhH!GQxEy&?}(-APd@iB45K zw=+9MpefiSiSY;sCp32t6A=6HliC~BNx}}i?SY0K(m9pt9U`bQH-prB6Gh!F1b*rf z{CprdLWb4$o8&r-l-U>ZNRM^?A5m`^R#n%v4TFRl~p^bKC;y+ z*}fIaNaKS%8gmp*lw{G#LXGa@2`+)G=5yAJgYDn1O;fJ2g`?|BU_#J9X_7e^FfCM4 zd5tY*)Ik}mqGCT-^be8)F4NIXd3v^IAKA|gkoFf%^NOgsL^wAg&{p*q)!YY zwf)f0g5}5@H0DT;PD%Onm)%{SV_#q|5dN z-4Y53a$fUDp%HEni-B%EBDyzP^7;l$NSX%*A~G}YLg4}RJ81Ijm1xRBn+YZvU!lL? za=P6Lg#_ZqA}k`(-q~pg`sy$oc{?A(Peeu41toMW^tM3`gbEptLOUGM@mp9}IPDeD z(hQG|hH(YX#rZ)kJS|XqG%Qp{)DfXMX>@wH&A`N@v%Q-Law8xLXcwa;qy$6K6=>pt z0O2hGfmrw&O3KPja7%nap%7Ym8&k~wsn3;_B|!@v?`S-2Ge@77Y@w+;;@=z=ociVE%4vHmy(o15>I*RGsut^>6aBwW1Fl@}atG-SEa;ip4s&9`2 z?eU)2#86jK*vjMGf|`Dj@;;#Ws5-M|x@-4ja>5En695r6zn&$sTs>rFoJczy@P7L0 z4kRGo+`f})FmAis+bUfzT`OV-to6)SoQfChumJ(`qvlS)l$-?K99@eueX?gBSUd zHr+6U2a)*ay1KpKOxgx3C#2axqF|U9SnSXECw-*T^g)sy>BWQIdIC`6QIJuO$iYM- zGS~u8L_35b5G)Y}ITz@2_+%tH`GbMO`Mk-0%=#L4yy1LzH z4(RcQpg@h3Ffg8hErQ6OT37Frfxw9!Elm1B!q}6wv)Fq2Jbu|9bc~_zTeUy*5=PY^ z5+MT$*WQ@;2GE&)wlRK`zu$G??BsMG;sZ!9AsQQ-wHKl=@SJ!*Zs`C&fHRL}=j;h` zX!__TA?6pG&jIWTk^A7L2#1lzL$=PZucAYVtYHuXp~(K(YgkC`X^A!3^l?0;SHl@n zP)h8`s;Y~-nSQdVo=C}g@RL%_$l4`*h;N{F@b3E>RmM;*Kx?&d z7PAF(_nUm7Ool2%p}d_EdS)hKYrGM4j|#v;nUSw@K3+owTCQIvWhHUr1Yk?3J$zRE zVJBPqJr%3bMIjMR=byXxtdr|q-WdC%&pv@om?j|umBK8O_3>Aqh~I+O#H`O4U(xCY z!59q0CQ@MKfu;yZtU&t_w7Eb$3(^P%khzBS6doEnW5u+&xY&$zRblb_1qPyP#Z|!w z)~MN^6kJtc4EHG{=;nMP8l>e8_XuXb?erKpFQ;RL4ueE{#=EVeKKtH89NuF(Ivj zy#B|CUKpjv%#0pLaMwe)hzBR14n)$!kN6IBrC_pT2%WxbmTxX0pxSB z2nej+;srD}!2DGPJOQCKCAeIH-22wxML3ph5Aq&p6IsCRfN@t#^*Xf79cDbQf;^B7 zhY~2>P(26-7gQeXzleU2NDpjF@V){4ofK%(LFNY99!^uvmx#-TL0RA`&)R>h$`13* z$i3Cp>ph(GXPMxqgR}YSG`;^p%tmADQ(v8&C0$*bEF|K*nbRFzL__e5m9#KjbbEV{pGuh9wbQ{0xDLM(Wp3kwNOnC^?GDtU3# zS8=v~z5YaSkp8mr`B*asbh&1N+&7c!Ez;^OmLm!X=a$#AtEpDj>bGk0jvNLh0;dE8 zi@Czwa((hn6p*U>M#3TpxB-^^*sUFqfr9Ok}Fp|G5!1{PBA`*CTrY5;9lk*hizrf#;8eLX$JAXsYFdq}c|5 zh>aD&Uvy(*p-@OrXYW%I0|$vwUm0UKG5XN42PA&mUp>@QRQ)bD5FsCRa91VUA$(?)xs3H(6g z`J?5gnE)I-{FUq7zAXQ^mj|@*R*5@P=8Y{T-TfmElWJLC8Ys~Oj=!Cy=bw% zzP_7ja?qR?D)SBTPBX~KmRZ@p^_!Z4SP@hcmOoBm6TiG``${i@(!JZn|~in$M$@Ek%c5j2W}6Z<*Dl0Ou(*%d@RA9QX_g58PP5ZCInMj zm8Xop1%XXSpL(3-Y@#flLIzjVD@rdWRx9fP24$d>f`yI!V3P|(vqk{A02X;1Aeyy2 zshTrbdMNt9IrmlVogRJ~*>J$V#L7K`QEsu^l=yCn5@?r1iMwgu^V#0*a<5u!?BNxlJpFD{f_7iFF_}wPFl$a(rbt*SmD%f}8))v9{Ia`tkQOHw`9zRmmiDr%dXAt2&zW*taqJaYlIF+5F?56haUh z%XKTLB57kT-JU<~ZePl?YYLO&_z9}t`VD{^05iJ!1cQYXC1P6Y8G_SOGrcQ(z7ZU? zokpV{@gS%i?|)j_780Vr*sFP-qcXwE;FnwV0~Tl|NxiHW0h+(dO|$8TP;J!g|9NaBAbKW~Vf6;F6oq}34m!lE>D5mH(!oCqb!e^gH`ER`@PItJbk#{8Dtr$JQ|zIBrt7=RN=d} zGr*UT^xIZ2%48hSPN59;bhBN%@ofdrhV&?l>8YODu;FvRee?64+yhsRfQ~g&)8gwU zJJJPqgRfOdK0s;TqM*_EY%(=g;G1*N&@K6lhrsHE5*@}Kro3+>{G>5#1mhP-hp$|t zFf}a=>fT@|`%XbvjTuq}J^)zDo6@4~P7oEIP4ixvG7xQRS;7KFZ)4`%54n zpWV`$oR&Z3Ke@V4)2{pOAe14osxrqJxHy6|aX&sPp3UEMe!6=+4#Sg+FBQ<>r3DAn z<>rHo3e0;RkB-dP)fDgMWxg6c#uL@Gk93s@FykDzsb*jkw&TF6y*<2%H{9#wp{USH zFgvm9`+j0V2-7=*K;vg|cw{Yevwzy(>0F&6k5}gd5rGZj@f`}D=1~#in@$g_I}4SU z-wEfC>)N5NH#}X9%xoB6S?@3ns}>*n`9tfkonAp&VNIgtDv`6oN4=rqxoavfs183}9cg)N;zm7h?I)2@;dY^lt0oUaO9jy*1~5_qOgWYHW&j8E zOAU>7sFa`&3rW>X_&)?pjxHfU8#a3ztCl+)UBWG~JDNY%66v9z1d|P9D4|2cUiB=r zJ;6KtvqeET12piuy?9^k{`*C=Iasy#yIJo2T8a5wn!Eg(S^{bQb6KKuQKwVa&mj`& z;h!ztO+04)?lQFSaZD$Rw*Gq+!JtOBAZHSgV>^^h`{Vlv)dU}BO0(!X1QiG%o@`ZQ zGfp^K(JGR@H+vo3U^1j-)M-rBL%=S}Q+p7OPUFNY%QoT7ZN|Ivpz~A0rcQhIl0^QJ zp~cVhu4GjcD@KLhvB$opOsS17htObvb5)}HOLP?$Hs{vzxX|vb|Cz1n>(qG#kxzA` z*EFmCVe#6jZa5}S+JQRu$jfhA_1Et>`&;~`74cuJLzQ2Q?sF&RW#<|q8#C$5v`}AkfPwbyn^Gd0CRer z(e(UU70nWFg6mQf{g#9^FUUHF`Sk30-cBbFU>?Q2t`)VUcEI*J7WsmYg*f22h!7HeE;xZ@TpBiai%=bkIGjt?gO(&Sj0 zIwM^#vGzWo>qFN)tn;!V<)R2eaDKoM+B@EL=YQ}eB!mz=f+WF(F1!J?l2_1$BQicV~2%SH*&1iuiL`DKu-gvFC^oL6-pUI#RyE=gzRdi;5knPbN$)IAfVV9xAb%i<>!&bv~O zibp7=s9w8%cV73L@Xix0)LoQEXoMN-ddeLHLzdYKCjV6PpCn5Max zY=6SLaoHF}pLJrq#ASdJhQ$rpx5ggD%ItCi{8FAjF^3t-VltLKTR(B;h1EXtmjFs& zZQL^h`F8>&U8GOnP(CMY5){m4KF z3+oEWT|sn>mop3OYRQb8n1Q$QJ^Zc7Gwt#hRWg!)l4s-ATYXqz?TR96R?)~j$rJdu`GMZI&gz|ZRg#$PDz;)F-P7lv@r7y3+Hq0~R4jrIUoao7IjF^b58Bo1zmPEG z4Rj)vmiG>BtpB|v3>H<`Ri|`?VtAj?30ZBT$j7(HSY0u32rrn2?`SPo;f4OfIR5Hc zMu_t7r;~|G`3IOx)vk}Yy=Bet>aBSYIJhJpKJ#zmDtXiny^@$s_%-|jF^s&2ZgKC* z%rM^F@$@AyalKNqU)$yAGwplLkeY*F`td_kY!t>p3Q^5Bp&tX*4;cR=8(=j&Ktzk- zA6oO!zsP(dw(=(cb%qv2#2Q73Q+cWJ&#)F_)5i;Zs|3`rd&&Fg>|C$K!|OP%d=$pD z?|HNTPUAe4#Zda%xmq~-8_VRE)>}6FGVN_yGijtJ1^#|BDq==q3Az~KEEmjHX0-v1 z0Tzc2_4H*D9$~u0w)&4zV%lZO_)xJE@< zUZD=;ywqd(K8x-j_6iER-h7zmkHXuQ&A)FLj#D|={$u|pRTuNgGv7g=n?bD$>|r9# za#zf&gk)iHxEz6K5z__S!6P;fZ>VyoQK#3B?RxHMCGq_59{)*AcR!iJ24lmXhPi2$ zWL@O{KA`(8Bs3r&@HOZ7;asJhIi;I99}UgwpV1d#Xu8in^hv7eF>o$*h`ALEN&G?M z+`4zTK`l_e)Ip_zc3x8ey&6q#hZUI{`W?$b=mu^na792%){rvwr)5zUm;(`84{wx`Esx@(04fg zD&mZWmyd4;n)TdZ657!LMOJ=6!7>2OK;iq`Kdq9l8hVKn?iXh;K{(}qP}?}0oSFFv z{4hzR(C;JPZuUSDkz<3uP(-UKHwL4L8JA@$_wik~u>0=Deu)0)qP4#BB8JjK^J=?y z%36}%B$a^OR*X>0)`|Y!I}8FwY~Mx%V6%$a%m05^000TN7tKa0^E`jKnLV4X^l~Id z=ZO}>-r9S!4@V>z_upwV*3-mc&g*!-arf1@`1q?MK2Cek-oJ6#-iIx&|MFi_YWBYj z69P=yt?iG`HXms}z&povz&PFU4jt?}V}D$ZU6X*ZzgT?>Y|+ zJd+3mtDB=1UoigA^6C5`Xd88CaKr5=Od-o*m~acWJ?x!TR7%h+C9!=l`#eObs)Kh)93CsHkz7x?t)HG;Hy~RWj#{B ze=UgSSQIZwl%O*D;h%DrVGij-*Bve|X*4o!=-obHp>Qiofk)2uQVTVvr9*hku5^HL z`&V#S6t0q}hx|6@EDhG)Sp|uPdFxY_r{7*kTv%<*;*3NSG+I>^7h+v0pL*x{G3kyg z%j>RG-%b^|aE9~4RtO_if%rDvDJ<~kN5XdQWSqe&@Ij#lQ`b6HfZ~eF zmwYvC>7I%t!o5|j%HX;_%6yjqrr84twu|_FV1v(6#G>VAX3_!010c76 z4>)E@rS+GW*n8S+4Ghx@KTEDw5{sj0WSOt_&P1Z`fpcv#OdYF;nh=BxvW}(}G zFqve-`_}fMXFNt-2kQH2<>e#VL#%XkC=u zrlg<-Nqd8pIJ{Oi{QLMiu(S|H0!lEgSPzVPK!h1k%6yL6y+eI{;$TP#=t@v%zfSgk zD3(QdO0q z!>9eJ+?@w(lpQ4`cntBBxD5bBM&Xo^OL*9lWR}g%2`cAFex8pefvnKR-7DM(fx{!K>pbeVO~>OSA_x48u7=2RRnw=kSK>o4ro}IXd^)mp^Qybyh98H zz_mJa&>SFyH@OVZLxgv*;6p7_se#D|*cdIt7&E=RJQj#+2qYKq!GYjt>z|51lt8f? zM(OylpaAVR03`54mmOIEKHX(yU8p(PFa)X=Y)vNl_)kyLQ{fgOQ&9jKlJ#mUD%Qgt zY@cfm0N5;IhKitXcXpN*pXKD_IKmL}=ybQYy{il0B!D(SsKDjWWS#UZKzsp#XoG}s z)dHPvIHiDWl?>NL5b?k?iv;ay&{BU0TvIU4gJH-u+3=N#3T|Ndfs#DJXNAsPJ#gg? zcRD%#Bg|+M5&}a91^h*H&v$MJ+OE_A@V67Pf}`4t6ES;_9;-5L*JE2Sj)HOO(-pv> zU`*3ro`|Ra{@;nXp%*ac5pUTiLh3cou}){Vc*S{{SrVrh*xW=k@Ch*&Vlqr_T# zc)X6|^jFJmtPI(3A=#&jJq`sI(X8nXlt!8|I%8HZ2efbAn+z}bYcnSK@RqlAaY1|okyKw<#a05It#i0Mn< z&jG-nn-T2`1Rf}?+CNF4B@V2jrHw*>n;~BjAP5Krh7Q~jfe>a`bT;8|kDEIJM%CfK z5k(wk0q2ZB8xV_0gqD8@{#R0uA7epWLTmysaLH@{t$=WNfgM@*EBz@rSTW4bE?<0E zg#$;ORXtDaYBH(REf$u5LH@U`oJ4GJ^L5pG05aT_VdJX2bx3fay6-LcZfXvy@^izcmfwcZ`@G z01$&wNazbJi;7l9!0#ox9h(8!^l(l0;tA~72Tpr;!JBgF!wsF80R=HeU?lg7o*?GG zTd*p2L)=fj;e!He0l2+vQ-nZr7CYZ2Jl_s+=Y)e6Hkvd{*l=&KGjMYk$%eN5$DTqk zgTQibf>;SI&&CL`3tY22`y4%| zDjh#|E}9OG@;=gW(n8#z1FC6^M1DM(dtuH&ErOayU)PG8ZGKCH*!&OO1UlDj{tLsH zM;RDFcy?;mLYNYV%?QC3Oez5z116OKx!>)3M2I97!1#Bss;-U`b#;nx1%v{!nt*?K z&)C=)#=Q`I+q$|I5G_i8+CL7L1Z@4}2^eWcL`5|No}vl7<+iuBkR86U4+f(^(fV$` zsdK)YbirxVb`1rh12FxOkd9Buhb%>#y%j}deR!avA?#gnE&y~v5IoM75L)-qgH*uO z05P4*xP#>M^wiYCf&pT@ac4AmPDy}o8Vs30v;ZZaNX^eLUs@TM-$2s=F#=445{Zz0 z?Df(?v;grhMKVW-jn&Pp#E@(Qjr0>BHV(IDB_$<8BO{yOmnK?uf$9vx&hrWOQ~G~L z3Q=IJ4SZ?!8L%x(>zG;PuGfp z!Kgw+4Kr|;5oRC&P!L1xpPgT&q@}|X6MMWcaLEO1k}EA@MlF_L{nA6@i$Oqu9L!1} zA9=Ujvj}({Fj_^7S;6S@2W#bpD?2FpLkcA1LQ!5lhDSG~ud#-CNTJ>Z{L>-|CAyX**leesC z1=iJ;V!dp5ZFsy~Rwdf246wNC6VtXJ`}ee3oMiG_6R|XUYSRenoBVNuwknQkI9XblwNc@P<{}7s|@E?S>+>02qS3 z1UOD0K=&lvEHWElGSYbeYU;8DVq4e*O=A=A(vj9lR2< zIj4r9kXv?CD^0EVvx3P2bvjomXthdu*x4IW?mkz)uL#t4PG`?rebFEpy-t@hw>prh1M}sCrL_{V;iA@{+S#biFx_@q$_<#a9kK5p@0jD*9`u-Cx>AcQOhvXeLBHxESr#5%I zn3goRwopr!aPXzCY|>@25Z`2Pu#-e(c+PH_+HL-BU%kES!@)UDR)YAxk{*L71=GYj z^MilAi_qjeUScEak!7s#V!d4{bxkXd!ao%@8(@sUQ)w%v_7nqBL>=dK-k-LsUOFHH zUgZeKZ)0^5Bytd^5$?L(nkqu-{h#SQk{>{MSy7#woR)?t#qF42bMMSb?t62&`%-++LRgg|t zd;n`F6fQ`<%~m$?Yp$9Q53lO$uC6Sg2#^>K9w|{kCPQj1ASOdZcZjG9`7g?eA3!@|YuRw^1aofBqvg0l`VWij};9X?r2HQ0%VYl|8F zd&{2g9-xU&BWQX9SDVP4pfrAI6OI0t-k41OOjkO(mIXm(uAOm(meg*k*H%E$`1-=~ zGC#H^qW%EI6mrMqGwA8*y&+`)N-2_1psJa8Ne`UPUIA^O-CaZAOhQz61E<~A^u>7$ zyv`n_8HjQ~l18eCJtq;Mi6UABU||OkAOV*{PRQ2)-?J1y9~=}Ul{5Gjs*qgO9HF-7 z8X92Dbi`qk@mcqdxT|Zma~y02*l7@#-U2lO;8>Gu0G|Uk8!k}Up{$EP7=fZXGLi(& za#^6xdS0bLv@4!bbPW#;=_qp$NhwYk&-UCA7N!D79+;HMXAC3^zJU4?#8o0J4Gj#y z5(TPj`{^haiS!rxKt~$2xKXVDKP{RG2aBb?WC?`F4aEW$TmW)S0HIq&=h0stIfKtm z7s)Q4OTzrcXyxu!dB>0K`RR8iy7$}Vm`=u+EF(%aehy%0nx_1{jfItZ*B^^RPeMY% z;kt{iyM=N89Lp!1)ETej+d}GmDdJ_tW?%TsKD#QIFcn!ZpPt9I!%gC=H!yP*9gf2N z4B~^G4BWl08z;dYMCS{rF&&GXhKxoF-YqEFa{{SI*a2d1Y(va=7*+$OB}p_>2F4OC6I8t({#VVD1qii1&X-wzHDTpr&Gwodeux za!w9QNiU?#)Nl?$QqvA)ri8scf93o2Ij}M}24G#h{gmU?NJ`4teJ4b_1AK#T(S#5a z_^xhjfKbWXw{HRF2f_0SAkqM6Cj*G>SsQW{mDRt0jR3v_@10)C|DqJ^!=_S;iXvKC zTD&oJ{r&wB5e6jTRS?-HNk~XQywkx1JqhkkFpe^`Gl1pR44CZC)XnaF+OBMEiHBn^{qrb&4+c#dK%VYkSo6-p+zux58-UFbvN z0k>{G#g}FdR2%M)% z`hXxu{E#4qqz$iaI|$1tvf+Wy0-bUF%&pFT&X%@Vy5ni{PD! z7}N_bym=ZPc|3ODY-lVV$Xc}d0}{=2u+jt_7M~kB4xX^fky=GHSG^wYeg_~WyI>Im z$CrT|@7MHnuRkdZBCr9P6^6l3#(#oxJ=D_^6%^nK)dQoW$^KVz!>JS@FX%^mzU4as zC`PUKqsCcv3IbHpiX;g4ePNUEHn+iR#r37FRk6(w*-65p#ex4p}a6&B`}%Zt%fWaxLq2c?*WA)E5Hqece}W+YF&LC87(v)$c<=0 z9f8b6Fz_K$1K8(4Cl8YjfX+odf&s{xBTiTMU^(8qp3}2f=CUUyO8mc0La^Nr8V0t^ zd5%|a9#gQ9^nT>F{&1(jXL7SKw^zY}G7P2Zww@hT92a)OD^D(8@yDsvS33e)YRAGg zwg#rXUz6|rdwo4QyRYxc`3e)w>z|L>2S2ytp)I@T|;>W0z~_O z-3{$Nm@Lfo2yG%e4i6tcy_DPi{8V`cXsboQ6+ku=oZXOa6GDCfPwBamQX|yys1OIV z-nKI$X0%ZH&TTsY3f36H)Ndf`C@OkRx^3OCg$CL5@laVT_bd57&WQ8@h(KN4qeX~% zkRJhY?*4u?^aE&I_Y`%URvEqO>He$Ai8Z1tAP-mnu7`R_a9Uqyg!2?wv4y7nsaz+& z0s$I46D+hb12HV6vXT;RiTl~G`EXh&yUfLy8#jn;wt=snx(Lx;N4=7 zB)7?cE1F&VGft1TZNF676JIkP3S?nIPZ#kag<=)f7t8)T*>H8xA%ofi_)yUtx^8{D z?3ZWftC+9y#oP&(`AyQz8n72XumVEt^I-gC0!6BLKTB~mT-)rqwGk-EZVan@7&IGH%5p3^(KukCHx zSLbzWD`{(Xrs1z!QAHA8T*P0hq~u-Aue_?t?vukIXOtW0o83T2`#}%O&1G`R5~o4Z zWkjn9TkI#Mhi#7M$6A*Nt&Byb>CGi3LXN8G#&G7Vgy&}bxEVs33E}dFz9Bh12|g0` zTQ?dC+|OPk2I@!$R9?*W3WubG049<;Xn_SXvbH9G>+*j=TO!r>a>7eRXsi0^*>_Zs zwXyX(mT5dA*5xNcDWWb;9SXCd3N!i`*EP0(-?Q&ft@BL-?~R7}-p1af4?|X1A7;JT zw$75oOVQZXxz6=)8Gab^@z%|0+#Ufczm4!G>9nf7Ur*tXg-68f#devf2NE$h!-;`D z>!8<#W_?4_JNb(q{U>j1f=6{2QoO#p?{%|rs)PJ$I4HJN9|_cu-}fIGq3i#C)kKZP z&GB*MncxXSpD9s#^Z79uxovXh_j1g90m8RT>aLqfcGvtGPFIOV0m}3(Xs}iCTJY7$ z$w|lxqG3ZoFUq~x_rHwk4ugrr|2{(;`g%dV-pf?VP|e~?{HoAqHm*2Jq@u?%Nc5pS+iavHlvrO*&U|lRxNYlQ$z7P}a79C) zhaBHely%w}OElZ}NX76YD=wq^P}>xHNqRGS-HMwnPhibrNc!gyR-E>yqiHTF)w-Z*(M z#GNV|M`%h8-TDWU`wzqGKE37svfnM(Cw9?=cU;>#j}O+JUlX5h+m-*#mHZfZxwDW5 zzcu=QBXHqRhS(aSvBalF8OrRm(@qspTj{)gH5jMfdOax4w?+c$qA_;RrG)>K1 zyIgHmHY8qW77iDFk`Fl61U?J3-50pSSaYtjO>S|Ht6r4+2aieBRQ6ghTd-~U>f6H} zw5^pSV$@g#?v-DgUcBxjlz)%x(H)Sra{0%{@48CT<<#5Z#XCNqs_)wsl8y!LH&i|Z zvwc5%roO|=`R(lF9~+iTd!#}6K90jan!}2jjdRGUs50q4+lIW?L=rKT`5(Ii>1%2K z@1p3lx|g(nWXlvT)^%($IaOG=u1=Rtdzv^{^2%x8MJ!#M{A0nA2}6&6j&U%JGX7vz`)jH_C)(H|XJ39T9)} zIP-VBF4E2D;1*Wvr&Ox)`7c{7GFutLvqvR18?rVnbCTHK8~0)6xP?jN`I%o-F7jUI zfwk)4|6u_hdw=2Z{V=Gz4pHyt7Eor^D8P;De>-6 z$u67vd;A4?G>zT%vbEKZ&)hwa)l&YVt2>d#uFF`Acx}Zot%^qw;8EL#1@e@iQXNj* zU-|1xSk@3NZMyzZpVpKoIqU%QgO(s8e0?mLI+JHcKgsv}Vp2?~IQ~n%E~8`7rO_S| zs_(Riic$9*S&!^;xtuyX91DKGQTIC{`8%duspO2LwR|pd$U_DceX%{>`k|P*fe5Ub zuCpt0FELBw)11^Bw!5u7JXo)bj-ibv4PiTqc}>xw^LrDa{C<>wTedxyjBfJtA(2no z(<`HRKU330uKjO~3FKdX;|2jKLmdB9gFf0S5+$B*$(hWUleN$Dp_E{A;+A`fvlx)# zEL3dekzn0;Qj5wx^_-7K@+x-*xe@;rmN#W}B&PERw@%`Txd$&DoAJ0CHhu>Rx zke769Cr08c@z6S&94||fkoO{||DirFiE8~s0Nug|b*xl3Lt{rFBLBuvgFdT1H2MK?_qklk4Po>q^6;2jQtbPB zlXR?S{Cialxz_QOCu}Y#jfA>{-=Ez4`VwFHS$k^MWb@0l@xz@_?$(LuVcOaLSNw$; z0}-s;^h%KtE%$bx#;Sw~Z5*GCe?EC|Fz&vT@sv`@BjfZ1<@8S*GJfqE zkB~o=6^pZFE4v{?R(W=jNyxZ^9L;4xLLQmpshH{%Fud@}bzM51*($ z>#4P)r?sm-*>ttbxgzCw1tU>RQmTH48Y30$re^8F@TbB}Mu|iFP{uZ%CtdF!7E191 zT}r83uAyMI|2;Wtw~;4wB*tzkqQ6A1hdF35(x@p8N}ipkPVg-Cb}esi^1SIci!zL+ zedqY-bcf^R_s_Phx%cXBeA?RU9CuubqMmS{Z;$86AP;gmG;49tl2TMA*`LY6d&5{L zC!9#0BvEjSqtn09L^AEcp6J|@RN>F5R6qIa-NPUA^i0;Cdz1~AZU3Ubk^aL+Sw%{b z#9%w^rD|KMxA75CXA@6}4b`<;=l}nVF$}tVNL11S6w8y()?pz;-Y}+mtC1ty+wkYg z`KAJ;nFXbRiQ`ag=RN-pGu%7dV#A3(*$>Y)+}MAva^xPJVJ^w_HX8Na|BD+@p^)|6 zL92cp->`_HZ#^b%j!+u=qoJu0c7UvXACVrfQjz0A^uYHFN+r)U@w;%79!1v~{no!9 zcs_6~=w5mCErU0tX%Yd0JU>Y^g!5-`CH-1Rd4Bkeex)32Y~iJ9FdrfgZo-n8i+y%= z1C5SMX$ynCX^z<`A+X!v@fj<5@b%!PPtAi(qJck^IXii&9u^D)b_l;vCOxnrFOm&V zERa$mZoP@q`W!VvLde_^6i_i!CDYy*X~2bPZGz|hpVYF5Up)7S-q6R?lE_^mUo~q% z%a^)K^(dV2SIdYzU1YgxX7aGv_s@1|UJn1QY_IQPQnJD$^qnWwGC|FKrp>>DkrnTv z`l+@9Ug6u%zw&B1Q6f9TB*Kc9=Kax*fzZb6wP)-3-k4hd7(0m;rQYwvtByH+^lK#* z&0JgXr>$v<5EBe&F8NURcr?3qd$3pK-TsH77i-p*6ng8emM&F!lv0Wh-pStNcXJf2 zknco285u2oKSQO^xJ{;ZIPe-@_}_B(9^PTUnX&v!9zV)j;iOYm78>1H zj>#Q14Q-;6rldU+=p$3fEYO`@aY)r*6Spz@E876e!)PD_XdT(^ym zG0!GWngpi`)|%Er=sJn+^s>x;D`2m);(oh-QRAPTeY)fO>YLNrUn~1}v-U~LV^5d1 z_IJ%k1_j%y6)RJXp;5x3FfAiMaDGgLUE3}LTO{epUwD(pEW|VnezMb531{t>yburByuHK>k8iZ z!dRHFfl6zCVNPxBGUAn;4a;6@|AU6h#=^ZcFXhW8OC{28N&*lee_4xJ?yp5@XpA%& z<;6Vv-{l#IQYx~rU#XJySW*UX`-$SN z$%d)NyQ!fZ*qHu4u5~vSx>1m8)XkQ$-SU%+=BN>Krzkh~r^OWN2@d=M!O=EGDvI#- zaNg;BnyOXhTP~>zzNzE#C~eDp<+}8=;m&c&F}RNuf6b&fT=qn)+!v_NkGC+s#(@w` zJaX*B~)4O8oye*#-`mkakzLyvOG5OJ#sig z)z(&i8K-r;D)Tdp6!!_C`#U7DZ*ZqmQ89aMb_+Uz#$!A@pPQU>N~6i3fqd<|{tdtVaquu3B|;>nKfiHKTb+ud3Y#w()!3lkdfIQ*CeL^z$w zOOMpd-36UucvPdh^mVlP^i<)C<8GsBc7_pg(7mct9qwI|1+MgwddfA;5s14AHDzAh z(UIx-{l5E?Rb^S;sallX)K)m}e#P>06Mku~gCmpr+TDRQo-S7V@CdVdqrSHf?dmgG zsb#&CZphEM=WF|Sr)IqU5pn0DGzwqHseJ1<&XD!y(xx?k;nL86z-DBYsgYktyS$E* zJ^yPltHrOQQoi^-|E<#7aE1{O&J&_bySk688JpT%Q&H?Q<@uVPK^!1$_S&-9lqWnP z!h6<K~6aIjcoPmtZeV>6{8D~iZE&3c^4!)t^;N+kQFL>db2B@I7q z{I?$YEbigAfd@Hg;%FG6 zYyJ4UWaNEPt%#!$-PZZz*Cq~4vER?^Y~-PR<5Qb^=4{3kGWA{%;#!=ISjgurjVw7l zc!0&Saa9%h7$F=kBX+%lg@I*5Wp5`Z3*Pmck;Xecyod3?EGsEPV-FJTTTh98NT=TA z4>Fb0ZzFCn;rgEDh$5v}v07h}#ogC06gW)#t;9L@UNZp-6|FqHu{_4Bm_B*_(l!eLo1y_6hSjfwY zxhnH9=PC#O2+(06|7?6N!~yEDb5H40>-^sSzwpE`E@ny-NgWAP z=z*%UO21PguB4=t?QIiRB&pKj;Lgcu@92?MQE6zWd!{Ih&7_oCkf@rbZ)y_?Q!#gI z>)VDVNe5PirX&T!0ljNd8N(6!Wg*M~Bv|NuYqk#6I&clL0F27UFdTu*>?e20o94H# z1xbD%vw)#&&}YdIpT=@6_S7(})%QXGVyo6k(u7IHsVHqD4WVX2FkYpr^1tpjQ9#qy zKmVj(MkyN&C_GAgae69(`8O5NNBlaz-qxO*680{oX&%OS!dCo()ijlp!J-d7s`ES% zpkkUinBR5UK5=RL5jdqMo-qKJqKM8;zt(vOtPsW{%?6|syr19oVUU$fQxs;u0aNm} zuBPw36##E_5T=1ikhHgFplb_!YAoNzL)V($kZAaghg&PzNjC6rn${shk7};=cr~sBtf>Vgeou$mvMb z$0iX&ryH=p7Lz|dh|_s=n@|q($|Yo|vvNr%5xVXqP96v|`#xcS30^8cxlN@O`V~|_WITqa9liLw_pJS-du{()i;3J+5&Z#!xP)Rq z>M$J@&h>z1m~~|h-(c{P4QIHHgDDX%T|G3vEdV^nLXNQO&^z6tmAXXBonzcI!<55Z zj}2NXp;%3>CzcI|c3<4-fl2_Vn*>QeEQktuyla~yE2E|O{I~b3;XnbycB3w7w%(eW z2q9Y6kUP2~9j^TGU8iwJzS?SvD!2OuR#oYH@QB~O{j2ew`%VwL!HfE-jB%r*zSgL< zVw>rpjIGvTio+A3XToPYeECpNLPdy5YqdU?O`g@rM;E5GJy4Wa^K`8{j$N59{3b{dH=4eyE8y zJar}rhskzdH_P3ggpsR5kFaItKms$^mN;(p+wX%~Co59i*EpP%V&mzokVuw02=@>x z2ur}g0=NT0$-?piR7)_RWVnW9GyCBNVu(QU0j9sc2y|dIJtjOZ4qF_o2@nY@Vq>dt zm@|Rj6Qb<{s!0ECgtVGjSRgYanE8f9N4H?#i5CZ{(%N;|Wf--TT8w&4Z(fxBRk(Jp z0(gVDUoQm5#@|#ZatI*>&QI>uv)1VJaN1ydUB4c_JO+VMeL>`3n$F zC2wCZ7Nj2J<;{Al1V_z2t=p%1y~ouic7oIZ;hO(U{_n))x8;~*-Day1AMtoe0OU3k z7`Qej#@FFKm|1-*NykX57Z)Is$QV%Meobb^M@bXnI~f!Ns~Ps;_}UtbI2%%L!?{IR zd7;kJQOfob3)4I6*BiImBpCB#zkUt7681j8cvm;q8jbE>$HU}`lT#l2tyiddlbk%c zx`ed0S4M!!q_xx%6fSpga9$Yaj=g+oW@Y{`rtAGD$=h-Xd_i8Rx91AU*TjzR+6Bw> zJcSU-os%7E^q^!i#S=BK{p6Miz4uKOm8@DcOExy1&8Z;p>7WP#jquF;yl2LKFwWAo zwq~AR*2`^Ao)CAx@VUYcnj<+Wo{9PSP2`Vm?O~#+l$88`OuYv@*8BfHUZ<@s6%r~d zWM@YbvNMZBGDCLAY*AMB%F4>h&WZ@hUP;JGva%_g{@1&6KHvZE@#vgKr<|MneZOAM zbzRTv>M|?1JU-N{@WO8Ta(X+Sz}A$s)QW%zY1%`#mNIXG7;&kB_FPjFB&}ZGxg!_B zJN2OasotKam(03LDZ(1ut8bs8_V!)95ue6K`u*z`S7d4w=QfB2wYDA- zD!41V<4m%eI#=pz*7F|y{o0Oi-_92GZ87V4d-Opnd^ftL@TQwCx{2BxXMJy`Ae`9Q z+0(GN>WJr$oI<^Ho)}?1clkSsu_Tv#cPv3Wk|`lSmPV_1ceMJ)mji2qJd`S9_B;5k z)Z4ZuB1l73rFM0yPwReX!}^H3qhTmb+4w86Pw4AG#ncf`UMReC%+0K+LW&ID-&n)2HW0qBwEh?usacFR?-^ONsopgG$Lr{Cu zi2H{9Z_b3qI-lGRPdqR5U6y?DFe~Op(|W{xz3CpL^E!%ljbdXi_R{tbzDwnG6Eu^9 z6R}woOUnltdvuXn%bXYGLK_9w_0i1K9EfeHIceWpL17eC0fy#*@LTha@7BK`FMkP! z2XN(}urMhe%HfsK*wMoBjdPHzlis04sLc}#2Y~27Z%4Zj&yCZ!@8wr21fz&y}A` z>dV^R|3z{l<^mbnG1Mhurm}mtmdF0o$iprch#I-~7Dhfl<~8?w8roNKHipNuvhq@V z8`F)6pT?$lbXOZAQXj|&Q!|o!UR6^Ga*&}>e&{Z)q!!Y=Xm=^@(D^(=U0KEC^77bo zk$mFT`%qpu+07VQ-xpYMcYpFotl(~+%nef(?zFUQA*#>KG4lA2zMD5yTVA+JhPKJk zUVP0YW3rCbkhr*0KPP@#7Hj<&8RkR;wXo;oPD{7aH~hZf*sZP8g5!QHJ!CS9YVyD? z6jD|tTB;pi;$;mDFP?T7p`?sYNqmCPM5dOc+rz85G)@AP=GVOXx9N zt0OfLjq_H91}En$Sm8TRr!UjzJv3}rJoa-kF+Ml&brjVrzkapi?!$SckwG`>Ri zfstWS<3H+{>Nc61O6-GTVxD)H7&xjO-L|p8W7hLA7>f_tJpuan!C3}l9cg5$BVV0@rBUwJzY62LI@xFqd#u( zM5G{m`1Le>c`L{e77`E=9bH?h*l!b|0GWT*_cKd*1`8wGWVVkSC-aAW&&HPw^a(x@ z+*_3+1o1K1zA5DH8t^Mlqzkyy*^Z?y$~;A14Dc+Sg_h-B;x}6!G^H_eS6v=x9eX>t zc`Mk>xvO62#MeDf;!|hrm)4$L{!TXhDz4onS0_)R_)en6zS5k`9c~;l*UJ5BVteFT z-n%Luke&TJFtL(S7HKRuxbaqj*K9_2vvIv@F=}qdnf1+(lateydR)e5*>m-{##$$M zp6(;_&DPi-#h?7_V4>aI*IiD#J@nASOkJoV<{wx2?Yiz>{GPY+@#Fa-)uU#ux_~OCatf3iGFQ|Dv+Als$ zcwye|?JnmJw@I|!p4jsiw6{%E)A-Dz@*y?&^m?b4^{2qCZ?=hkmI=K4w!{CY8v0)! zdvmM)MlJLTexf>3MzLYnoyuGF5ZDj+W zRE;MVChxl8xSH}hZ(m7t_rgeAo5}e2w4w2>E%ekiqrYEiuQB_>xCtzKhP()TiE-|} z2-b#R`n;PSJ9mL9$3VW1)bp}(`H5a}asDWUC|H5Xzq))UNxzs|O^t$*oHmn*{FkGL zhsP{~Y$UeKl4KZssie%csWrO0v2xXTtf8p+8V{v`vGHzw?Jt1O0Jxn z4vqNZ$K>)1CWb8xSc{9enOX6&Ga=vz#mE^w@`wkWmMa$SW4Z??eu31tfmv|9HX-))c4`0}b=&n}gb}sH-1i zSmx=(!-jug|NOuerzl(&f_uN_xSICx=9~ zN@4-C`?holxzM+DhK8m)JTE?Pr1Oz0cOvWuhJ;8+IXT7u3Lj8(a}&iSf7&QVN|XhP zf4L}w98}{B)?DX!CMhl}b*O51o>KIe+RO%0x(%(rbjTAEGn=^f`rxD8QXwz9!dRuB zvgWA;n+^qXzgkG{JkeE95?d6n{32Gt?v=prQx`+&KQ%hy70dEgX|6X3zFl)68%by zth!vr#XtAv^W+y31JJ9%rkGBBqdvfCVJMQvZ2j@x>$J2_UoSNJQLiyJ`+RsJh8Sbv zT;}mz_{1n%bfu_>$?$}zbAVaN4hz~#{G^JD&C=Q7wozpcTznU@Lovu_R2@!kZjTx- zb{<+dFFaT1_~q^tU5~k87mZkQ2r*>~Fz~F|ERBd2$)lEf>$w=CdrbYf<=6O6+digs z-nq_|?r)^s-<(vq?pwEm!gH+a4w%*I<>mCrhx^YKswHQKUJ}7>>sW*H9j7P zglx>?)osQgDk>ThV8aA@sja;|%nD`HbK7iKk0pSG3Q8DSRFk4qd&Z@6l%$uD^Pe25oHdq2_38UHLE^X*0I{ zygfTDEnMzZ4Yh%t{0fQ5|wqi2hKNd5G9BfH(`V)aj7S0W>m5ST5UT=+BR5M@kv z$;fGKtKPHfA*!5fvtgbrr5C1DWyMva#lwG(0;a8(r>T73~bgmhV_Aewdc`lH7C#^R5ycVK9(!}-V zdPeHP=iq&%Jtq&;*Ec-8JaR?&SVG>r3n3c`%rfyU^-mUUXXieCpS%3P?1v)*_l6Y4 z-|;!*sBaQ#Zsi>Eo^~0Nr`(7e-tA+)j!6q{;b)8P%5U$tpq|4Xu7H5RpD$JfIvl(I zzhWJocsrv|YEQT9z|{x6jUSFYP$-FrEPuNNh+tpnGDlKccKW?%zj&%rs2SFBlPOmE zk1}56JiG8RX=|h8$wD_9&b_Adccv&`z2 zN!L*1pc-109Sxj#^HTImfgh`ERB@sYYe|Is{&zs4(ySTL+P9kMhc=%Zxn>_z_w+^y zZXbq@n6nA51+%mp>x;P6tG=P6c-mC^qw?Koe@f?kbi;AW`BKsXp2fj~l2(S{5jP{M ze7G2yXBTK*{{VWs@BXD91{xY76CC5((PwQFMt=L9QoA*#k49*UDFqDvECKU^kVHj0A3>gwGaeska9!-FHQA z@6FNMMHpCvbiEELFas_-R#`qTf>ZyHP8!;?R&5f;tzfDf6u??SETWgqhh)v>#cucz z3}LuvA1UmShwm|8pY0JHbW7Dos{TC0kRia5TmnOOQjM$}W1innHW@iv2QW3SHp&0T z^TD?(76Cu?4|;D%)2$k)(ywvx@SUIP)8>-BRZ;1lYW6fB=HSp_PmJd8RG8&(I8AHm zYrHBfiQFtJdp9bUE`NSnEE7yv?KLpZ7tpUaXy+nHI~=o_Xx znq#7wy_ckCl5pV*Ne6 zVrut!LxQOE%-NgbM==aPX;+S!VOe(k?axbWqDC{00ujf`?u*5j+1$^GZa=O_t#?AQ z%xbe=gswQ^SZ0a7!q0&f4Rtnc4S|u({^#QZM6v` zYgZ=!&S>?KANQ-HgtHtl*jp_Asq}~Uxs}_N#?(dw1%v6W1AktlHX?TD3C=7ga)Y*l z5JUk*o*?jJ>A#U^;Nd_bs-!YqP{3RED~a7|b7j<~?_Q_xn&)q{kglukvGZ_GL<&$( z$5rvJ8PbJgoIMyq+)I>)Gm8v7#QJa;~YH-M2%ETj+{0eoe1`xS)eE`#9Bwguw>Pss$>>v<3h zVg#cd{XYoNGw+tD2`V-=WrR0=wFfiCKI*?_WW+eIF>QYb-n7Kl5>~X)qEg@gahTW< zCDtvlwgz~8(7t@_r0JK}r}+57z=#(1&{>-uBS}CJbW|UQ>=HUmq|O%{ zT;9Ow+*#WqjZeZbw`~o8>02S8v$4GUr9hd}y|TO1u7B}0T8Yz6Ni+m@uWbX3tFx)S^@gwC_^HLKqOTAEBl%!Q(-9^t$$f}#3#oEZvIhU&+fe0^>2+4>viwGDJi zaby?%GFP|by_=EorZ7K1$KPS5qqD~wrf=B}Gi!{}p?eq~pYqTzW(X1pXu2>tN0)mq zUg@eDif2k+!`=-Jj|lEF?daB`5+Plam)q6eD|f@xG~V`PD|VbD zL(j6ElaD$hU8&DIbb?w$f04jO$U(=WTssw0@o?)R51)#bG8c2hMr|p6 zJw-(V1Fh*F6Q6G9L*E`_+qUexColr&I(Yz~yvRU*e+20FBOfI(|A^xk@OZfCdR0w^ zk!E>i^lIm2H8PJrbJmf|77{3ha#@e~N@B}v`-Uq@K=OUxt&4%FUuO+fsu7r+`({_% zO840Bj2Lc^td;bhNM7>~FFS)GS#=l@iq=OD6LiccR@YT;JnJ+3(Xq5-c}Yzyx2ERd zqOD^}Pj^kf1Xl9>^u0Moy zJfB(`l#;MxTtld}L*69b{t`#+LD$)BBCBI(4qL8}P5qpmYsnD5tXDsHeDjG`|5%aJ zOJB^*fLAAEB)NzF*oegn5y|Q0Qf;s-@O+Z%O^W->&Bn(YBly@uHgeMAPAN^RCY<79 z_p1ZTf`<}!e#6BDWhoE>O!yV1oUAn{c1TFz(g$zU%b;ge@-58E&AZc8u-{kRTRow| zn2Y|OvvvFYHfT8fgPN+PR^=d`lbaX!@b|B1>He*SH zyrkr0?)>;i7$A--gr>ocQ!b-x?U3K)cqvcYXN@lbXw*y@zATTu6w7|pax0pgn)Cd% z7+Jp&ycvJIK}4@MyC*_jiI`0GMMrxs1UH6vU3=9oZEwVQ?*t!)nV16t87Ec|Gw$8n z{?9|z2l_*+zY&j*MLXP%zxGVs`^`W;dBoVR+UBO}DLckYd#(pS>6uuWW#k{p=E|A7 zid^XHGwaXZs*!MtMJUp1yd91x3E7EH7Qd)FzD3zdkipp1esmo=edT$$cI z&&CG3Y&_Gwp6bc6`acYff}$h6>7=_pwPOyO_?N!obVM&OQE5~o!5add4SkZ|4L4} zZx=3t1-@-^$Pl{v9Y$DZg_ zeEUXQzFf@?h|X!c_$g#G5=E|zjEpGbTBFv(UX}3X@(`<5(II4R6t@sLxV8Fg9NI=d zCni9ZKzXTr^QLcAK<(;Rct1gqhwb6T2O}ef+Rk$l0FToct1F15Oav1Si+*8h=UFkY z#R#6dmX_q#uYJ(&YP+r&5dW~1Omac)B0b$3f*n_}c&((=mNKMO?s@@$G2tyLAIUq1 z1-@;B!wNPrA3zPF;?a)8hK&t3mI3*oh|%jXryHO`z&aeFqevU)o*_M6W6M_)o-DEIgC}bX zPSoa{V0c4FLnP*MSKH^CoF&xxgxH z>p1Ij<#d$}7uVIfYJ~nFe4uG0q9Jj3{zhIm^fTI>7*E9=al9tz<#qbB*RvQMvuFDi z6^9ciqW7Qmx_OaI*y~CT?ahn-#C2|YX#2^jpn1m6KZIV)KX%9O1!v*u;O>=1XFEf_ ziWaB-8NQt~G=4koL>Ka%6tvIO5iZ{zA|s(}&Bd9MLrrmM3uQ)VVlbJRI!kVY`@Y1D zfd^JoAG6r%>~y% z7ishEz}ea>m?M=j1g#0RrQPjeD8IIUU{AiJiYPBL$P5RAp|7u>Z8anb=`E=&?RS(Nd#^E(5f=9l8$fR>2H7ykCPfL}^HNHX zB#Mly+S<)%gykW5gfIpu|~5sgrT7;6sgF1^o<-VgrV6MSY?8`>w0q2tY2nJ(tXUTF3a4%2vmhI4zGl_SrUzD}z1);MH z$NHLME;JB=TTmo{xoTP3WZq85Xd)P5gZ#wCKDatSa?(F6Y%~YnsaQ3B)M1kJ>eWX* zEph1xs7Pg757$eM%F4)?{JL0GEnj?3@TSYqjLr+nQ|qS<)a(>SRQ1;Ob8BsRZltE9 ztXnl$I=^-{nq9?Kx1icR>*jhyarok+og?zaS{5%~$rx)#>Bg%vbKZEt#?tediY=y) zPWt!W;^V(ui)KsRN1Lsf&pdwl?bc_?{iE{>N~S#FZ2ZY|(kbU($cBbJYAC<{H}<6RiAfrT02dZxoFH)OIR}Q>bI#W-=!T3 zCe{ZieWkwCxDV|Y5uq0I+B@^Rx-&bqC7c|-I=sWAa4T-C&l67lnEWePW zu7Nq$r$ADYmgqBO8hNsz#vyd$fw8jgm#pfX`Z&~KxxwZ1sv=2b?b^JC3KQA1h;~@~ zN<_=A>duYtaQSIIBmK$1O@znzC-<-=KNBkx?ZU4+5MP|T8~-N=VA$-^e`|HLMa5cd z2WUim@Z8&X?6+q(S)1e*S)Ub0 z*2Q1kp8rut=zkDOP|nMin=q;Zhv9|RMN{Zu)ZvKE!3NHt;gu7ubl_!JuAxLlS3>OG zkK01hWp$+f_&EARfcr?aoOQxXs#bqZY<`CSLTY24- z=QO*`c(F1LPR90|@iSE+(CRbmDcFxH-^3)X#uUS5LVv-mJJ-D~h>=*N)V_CSZYKzA zutQ-eyr!mh*s`rM45=E%TExzD1h>(rc!|B(#wq{Z_ay7 zTrVG`QeU$;VR?u4yHUAMRu;RVw|i-?7IymuEi5z(%s2AN#of{cP+mc1ij#cbhmSQn zyxFI;PC^O5``Js#VB)L4vyG`36?WIw)t}~Joiy5JR%wwA3A&-0=eiu^SFXtYs=ZA} zg>Jh3x23k7Pb0LhxfuuPR@r3@k`(r!w%I2yC*rvdUvOH~MX4Yd32C=TMGcuC0vs?R0e<}M&p3%%GDAV3#*Q#!x_&uF#BpBViG4se$ z0LFcgAi+c%R`I*h0N9l?G;k5#f3P8k(vx;BS=TV;{RQTI_3&eomX}Y$#`Sb3K7j~M zy`6+cDwLV@e~q=ti+BzMdq|Y*JwYb!vT`x+ukHpR&O{s7F#H`MD)G&mH+B17;JXpF zcTfPj54C^@A$vARhC%D=CDOXf>YKGScCAR|+dgtd=VDeDr^*kCCV2FIe>*Vc>}L34 zfxeoO(%-b1FY?cYJMT)3LxZ0*8N$u%`|vP*S$jEWzNUO$BAq?A(~_O9N0DI@PFcLz z8cj-^a7)mIbI z3p#V47);+ir}>8V)G4vx!=#xS+S=NLXCl!qVNSzk_5Cuu)*iDqO!k$8;W*vSxlRl@ zvX;Y#hlhU*4#Kp#Np2(`r7rKMdz^U7Z-MAu_ZLo5UhgLu(jzigrWh9i$UxjjyN*O$zj4d8zfGMRIWi-rierK>;F;adoexIdCL zD$M^=?j_{e2)ve%+Pie=9|*u0qCzDMLLmU9i{^rjZ3Lf0ZSLgZ%cPt9?gr|1H0)KI zC&I`|u8XCHgdYkxWtEiqX1&c~SVpF3PdOWG=Th{;>7-BRjZs49i1N1}fyix^{oj$r zf#17VJk)@hg@wIXN8FPxM5ZIf`BSyxb?qW1o8nsvkSrwBEeZ<0yu171*d2N2y6vYt)=pH$2qU{bhmoegeoY6j%2btPE(qK$Etx^EkX5@h9D0oQiivx7 z?An!QIanz68A^YN`N#U zhH0eGmZP3Yij(q%JsBa|@@I2{up2vePLt5jBXs5Fdu>`cVVg(1GD;gA| z+ZyIE(e}9|@KwRy^2}#jPIeX^To#vc(Qy8p68wFW1oZ=cxoQ84s8Fb#=RFX`M92I& zto6aG6WY8 z28z6oOKM0DI~yoQofOgd5c_WT7JY6(GyCEhAr7j#% zoq{E=+VI1!^29}funhFQvh`{Xpbov7-T~>pwqhG2NRkPQ{K4~tRvsw@g|wWUkCPMO z9nEhQFJ%d(9)I-=%{Dk2HX7zhy+6gv8_F2tfQO&UFnW}nd^zu(5*{d_v5E*t#H!g@ zOTl|Tw_i+Fh+dw|Ygyi0o9WYFg6i0>pB>)tiT0cM1|>lVK0PiW(}i*$6sb?s)9*lC z3N8}#!7$@|0={Lg+aFgzYD`SeLeJg!l%~eAlmk6iLOHXpu8!Kq7wV8Olk{Ef++EJ* zt@OB>N#;B8Q4s}S$KMU#Ck5qpGA6|5^G@R*w2ThvOXU;r~jk%Te`Ze_V-qtXak(9D2F%Z6$g!CJ6K_)Uwo);Ar zNsewHy3PLnodlsW1SN>vwV)_KRSC8(|0C65XH++hZvo#*n^cZp6monk5fCpye4A=zt=Z^HPP z!PakD()+u29Q~{jZG2v)^0D*o`Sy|)`(^#Z3<<~C!sOJ&c04q+h!=OMYfOJXZhQE< z1?`!1GFT*Mmp`n%b*3YKarLepV}+|@{3V}hiP?I}69S{mXVX)*(XBTL#$R$)N+*k| zXB%p*yJV7Kcff#5m)G$yg&7^s`-?pvXsHyAQ~p+@xAbZNK{Wm4$DbDyln;^KqWv)N z;L@o<+dBQIa}pWKx8^#m1e1Nf3hp|!btk?J6Wd`+vZxyF|KkE=<_Fni27dAq)YtfE z+)8>}SJG*-lrgWtQt;;Xm2rWf8w&TLPm1cC%o$`*t&h!Rt51KeKN75>mw)8e;zz3; zO|A{;ucMmJCKu@Xvu3);3p}gqD3r(S_HO9HhZGBA4>ALemHw0{RccUxbrt-yFFU!HuXQpZM z$msG?X~v|e(lg~#y7>aeJ;LE()RPM7PcAZ>n)yU7p2xw=-ODU36xGtIJtyb%=D5nJ z#hJovuaO+r*8}%Ga_fl`6v4q9GPP#2Vs6AR>Xq*4_hxqFL)jZs>dP7iCxb@r8dPO+ zcb#N2vtumVd9J0e(>*fF^yBe?lY0Guwj^Gr;U)TfdpoIqvR8E-fJ}9Gpg@=j&VB} zP$9V~P_WlUNNQX5ubzbUrJ-n5)t=Urklx;83Otb=G#mMm7f`cSW7H>$f(8@jGnmbS zzy+~#q(GEwJl#DzULxuEoD>R0FjCUiRxmST1y`V2pR0IDDZPUjfW9&5@Pc$M+$6r6 zhi};Y^UptoAGdw4)vjF!sS~ra4<#u}J2>#){rcvVpy1m!~l~RR((GNb1yCd;iV4fB&uJ_3x;~gSCPGCY$}@;|6*aE$xQY zXd{QkGB(>Qdvx1gh|9Sw?OL_>jME7t@4v5mXy{dD)$L!mHxtG1A>djrkDfS@nrf46 zx$67j$!hNCm92`UZ)3vx`#-Mzp?;zq_kPfJZlzO-!bNZIE58}v_VG&D^vXfooVymh zP4VZ}XF6{12VHCKk~Uo~KRZ#Bp+o9zbby|vJaAXCOVcNd=dH}A9=s6TWteb$Ve|Y0 zR08fv=Y@ZNT`J9C@-2%_xbJXT=$}SGhNiyy;HOTX%1!t6Yo0%lyf<0Ju6)!>hK0SU zr+zLksd1xoi{^)2*?*P=VxsdsaUw5zhi$uh1ze#Z`H~hcbB7!1rJO$Txti4BrJ(|` zGp}sYua>_1Ox;<~Jo4d2y5VZVJL5i9f6esAqy1k$OtvhxCfwbQScm9(qdm`)M0%v1 zg70>IiNk!y@6xhwQf~_mRNwy0X(27xP$t?O{M3;n#ffTQs!@N{N%ZQCQRDfTw_02_ z82owduZftqRNQIjJ=}9LIbyTl?&s?ROD=!RrgXJ+vLSt8(NHUP_WIoen+t6U{ny`k ze=y$r_-%ELV}tbO+MEJ)QO5ql-?H&<;-3@O%-e>q{jJ6pO<%9>*r_fM1&H zIe+lG`>wYEFR0{_L*u4%wcFy#0%pm*m4Rjjs8Qstx0cvd9;h|!;=VO3Yv>c1&4{) z+TP9IL)ZGfsa;Rd>ShfS)|j>$TD*Njl92MoBXC}G$u&opA*QJ0Oq1Tmognhs-_h}B znNm+7%6^~MJ!}-B#ns*`&&9#0KrX@sy1C|%FIP?PIRr1xx0$w1xYj>!yQ5YVg~W7xRK^6} zk_p#L5}j!BWyFjhY)#4?FXJ4QNjsbV#@eNZ$^MJ4W)kh^fn6OdPMX>VL<+QPddxxT z`g2zx*_0GYtzMfDvd}O75h~3&jilyoj_yvelm|7u187n}LlsmWD}Ekbf{+kUq)%Y{EJn)!4c zVO4{5CT2>#xCcdq>o1ij>wLnKDQ#Z}hquUah)U%Fp!Ow)pB5<&EpbuCYI^ zi^jZ7K5~3IRh?!0tKhy2$?D~RDg4f7cz|Zq7il%`H{DDrhyU2s0hZWbu@{k4Fvm^? zfh9%tdlvcslO@*QJ?nr<(31ga{bvEF7ZeP`KArBT!N%HK{eo9UL#C~y_F^LqS@cs^ zsS%w^1#;N8l~h04hc0^K`va(sRD8=Ayl%M1MMz@XZ?Wf9$s{>KQI~HTe4|~{q8B>& zgKMpO(}yzZk!I4%mx-&#cW5+LX_vPosWHnv;BL1KoR&^q0k0l&;jDB$@ z+51AxkC2j@v3tKG#BtnJJGwX=I>R)DLNzYADjhwkd})@?>4dT)6c@Lc>8% zm$Kx*aDa|#(`s~tbHOynW2X;?kD9G_wA|r!Bz`=6n(OfMg-TfC zimQ@Z5CnhEG`*4D_kCk{tt;3r^wD<{-gO5L#WKOmPlFE$(mmDcShv+YDwyHr^I91N zF^ZWmg9$$sBh$CtE-L>t_Wv@Ysc7CN;GBQ`hB-h5pjpEn+ zQDW1@%*UMX`TLa#Kj_e=vCLWiiShXJ4aR29wY&>aOoX>S;k#eNBQTYP1-=!fli5g zuCX4SCq8buynTgZDnPq&{g%*~7!6PLq|0&sV{IajjB4z}Mw4FUe)W(!RqQt;BJ#WD zTDou{UzAE^-eid6O}EMEsnd8#465Nk`-<(lNR5y5mV6`uC%1l>pe&$PZ zjSPI{WnV27PQh1tF7~xxt&!=$p@hyu=yS4EN@Sm;29pHK)FnhkC~N3^l0DVYGKZvL z#a!Z(tTO;RU$53JG?M$S82%3RVQBEc7k}*U^=cOwMy0aC`B0>nGh5f^pQKB-Kl_t$ z*)*)&s&*C8Dy9jOW$4mrA?lX=d;BEsALQR1sbx#iN6p2$vB;!Nc@$j!&FBOr=A*`+ zW$dVG4Jv+$Z$Ssi;Pdla+d(NJ#+X-o9VN#0gg|)-njF8Fzv?@G=PGIeKhn>YvIDi? zQ!>40`OB7bP)uZd_`B5C1yyzCt8Xw-VqI~Rg(;I^N$aS3$&q(qFUB}@>?zJA%bN2L`pwO1O4l{TdlF-t?c=;m zSQzu_Q}P5kDBmnc+UgHq^QW5dD^zHzd#!A8S0OO|-1L^K+Db=@N7Ia{C!Q9DQEGs) zm6guEXT%a+Hl&xVxzc@5REjvtCoFvNOT8CHy?2i9)_j{aSBcN^6>gDH*=K5Tgkcu0^RqxV*VAf_vE3bg zs3kbCv1bb!G^uOC7qiPZ55|Q2m+sf^|C{L>TJNY)SNucs&I6h6!eX0AF!dVKQBtCw zl1ue}wtN26>6CG6Whm^|HSR*;wi!>&P9iO3odc*sq>-R9aA-;Xd)aqvGl80JvEMe<#N5(h)=OmcP1E5{x!;e*hP=Nrc_ z;l&bF|IuX5{^dyFfu(A_UxN8k7t_z0ggi1-I`+(D{l%p~Oh=qb84+tl6M%hw%DBN7 z`|ivQnOM(poUX1iFCM@VRBV05%^)gUdVkMRE@^D5Udd`PRc7kn8A+kzCb z(Wdf$%6>%*|2b{$4x?)Tjb&SM`<@4v;w~mBZ?K8^q4nax+!-?EzJ2CKFc}wK`4Qv{ z_8E*&xXrpacwT%Q{+@Y0mlY%MOC%&D%VISbA}0z^`g>)?o@N z&!^6xKPnxV^7^$t1nMVyi-W)-2ZB4^nMI?dB$`x>l*5N6L?2(}AobZuEWq8RDI&t>N~0B}{1 z;U^Z$;PloUEwt<6?c1k;deL!lk-~Ng{8<9ohP*NayZPXCfF-74KrV#YPpAQ`Kf0kt zjz;rxARTZ$saO#gj4^+QTUc4;IEh9p)WFWkuh0BX$BgIyD#^+j`Tsr$W957I&IA7( za{IGJLwJvY(EQ=U<(&tq8)5sg=itFVO)?~PxsCW4GysYd=)lI>U)u^Gn;`hg!RUzs zK2GP4TBfF?+(HixT!!?}tjeADfDZcakDkPUy%sMe@qU<{3C{`a8jo`~3J#H}>V(e1 zCI%wx#M~Re(@w&4?hiQcU9g}0JH(yU1%-#edfr$JP)i5a*461^R7gNX*j;C4W`=-E zl#u;%z!jk|6gx~x`p-oJ19~t4bs-21Y74BGfJqTI?@s$GPGBA{Hy2h2>jSt|SbqPo z2QLAU@Hp|O#AILl{_s)2+>jx{BafHxe&*{t44vmw7~2wGj<3+y7=iZ{j7Ffl4grE~ zw*avaVH^VlT^>qkTRX3gC)eUG;sd@ zT9>>mf8g)cpoHMK-biCaFSP9mrUFF$xh=n4gnGWtpVi|Sn*Oj@z3d1O2v57pn8&)| zTp=dUCx{6_B=6mDpo)sZbK7@{w{JYzWP*17K1!Zvzb87K%=jXk{wA6T?wT{+V#^cD z@JA!O*N892|9KmF=EOVmE;oe(u8~+Wex(?zaPMCJ zTKM_%=iv(mUzESf_k!L%yDHh{InJ&;350KXEw-<0u4;u!d?Zl3&l& z--AJ<-pc$i@qGwh8<4`y{zCcxH3Eaz{u7&}b%6T|F%^X3eLG+rV#bKcAmE0bG%mjm zpDLuDo{1w1@>I^?Lk-o!LQ2-&SNh{_8P*Mi?9NMH3xQ~@mj>mf>lS3 z%bFc*NPBC74I&640+z@KOAQ&B?}#Jf$?ZA7bif9JW`;8mXIMJI%Z48iEAa}GT>(Hs zttPuTpHm5Z=j?>P6;|5_sse^x7$dykvrvHh9$|?YNCy=C@y`8~0|T*eQPNu6m>DRK zz1ve@1rmNM;u&~ukk0`uLJB|=ASAB;OYmU8V>$FM`f&#U2aF$yV}#+^V&}WF|2z1* z-L@zx%l&=Y2jP)JtjhtEoWBf-~G(`tg(dzjimt_1P!E{tEsAQOgjk^ zqQfUn$Vy1;An;XKNY%h05THic%E$>~V#uNU54Zt@*&)1TxO6MG+t-~u4L zc=LT6w+##ruZ2aKao^kX%xW7t?Jyy|4Vb#<^?*uuPF`-1c8_>MZ|k2aDp0Ra-UOM4nRd^5yC1XbWZf&TvAM9eQ;dL*^y zZFo32A}PoX7hR4u0>FeZgfN~NwOA_x<5ev!Idk*O8Z9B)v5S_L*)_a?s|^hqkW=(p zAYgF(xC*>t-~p51%5&V5{03NEuu2Giv>s%<01>9si4qvYyIW^P?xw(PBMiIxc zzcm6l;5GtA@BPteAbMEu7;yV@0XLO^{Q&(!?+!H3*ILDa2#HohzI+HfLZu!%kR zGBfi4#=vya$WO#>2#!JT)-VX|1Mj{Ju3C*BO${`@lv7huQ!7AN|IhynA~&ESw;5kA za~2@1#=t})$gvQ>Ba9;nz8WF9kDZK*E^eNH-5hlxazveLC{qX)ik znO4?4zSHsr&e)9tGhF~W_+J6H1E0ZfmPVJX3GB}3&n3XPM3i4%T@8$lo!LC_ANr3a zg`f#6%am`zM7Q_@(MrWA_zxRrul3Em z0f&!n@@N&74QuW=CQFi@{JAEjIO_Eu(Th$RH*Y#O;t0YFv8HrALmiSH`%!IRdX9^{ zKrmYLKJHUiQR&m*LV<`(15%(MvepG)_RC=Y68Dn$(1@kHz7l(4)Pz7;2Et=si z_KgM^P-ujnXc{h=DH|GmN;3jm!isTQ(qqR)wAcGUdp;xS^DQ+wrc$4a6ZhS)IjRmp zy%-sj$WKbCs)T(GVL(8TW)M*SvFy29$Z0!v72x$80BKk`;G0K-=ID*2$Zh@O%75@c zJ!(Y?QCDFQnhR@s*n5#yv+hLKJ0$ z)y|#+2N1Y0p8u>u1Y+Bn{*$ok4Y9wu{71L2M_N&_W?+Cgk;t{kWbp_y1mba7N^0A0 z4Jt4i%3Rjw(bRk!9{&Bu#oYbULxto7e8@yCbnR%ZaqY`A6w<)mz)aW+!wdj?6uf5F zgY?)oH^*%S!M7%84GB_yWj~6+qQTR^_5v>A1?`eg-~Ru$IA87;VXULGEDeQ`L~Q5T#-D=RD0W1K*8b-)tL z?t=#znVIX)T>o6=;zT4{X&cNx{+D0L((7r{B7 z`<-zx3Y%_3v!R*6z|FmIyhSC{fUxx)ta?gu!I1|!8ZLAX&_cn$wi142P_34_qNuoZ zy-NW_0b#!c+=}RgaH4RHK|AAtZPPWEz9)Y~Q6&(5pJ0T+LRB6o#c6R;cX6^Cz*o_d zx34cfm?(gEfZUl#ef7ypWA)fFC1_MTvd@P78fK@GOSWe7jnc&i~b2ny0y74SC3w@g6TD zG0*XM!;OippUg_nhf)I#$({V=3Trm98@we!ik;LW>GBl4pM|#O|4bIBvmQzgcW3D= zaoH~W$7wGbai*i?H*Ho1E{Ufmu-yN?j<~qRcDlDa;WFvPLi0WpLs9%zl|y&z9#>oh z8K-36Nt-bp9wR=xhDGmX0TAHc>vNr7(Y$;BKr_VGAuFEjc08jA5g(Nq66wz>myc~D66~?-L6EFls;WY7{7VJT{)tMG}Un zxp{f_QBLDW2^02!D3^#x43U)xIX2K)iTVXyNjnpVJ_k8`N{3Kd>&|_zMl#jRH<3W+ zOZY@BgZhQ%L6~nYudDCYlAX65B#w&zs#P;ut^5e zid4$^*&W6hku0QReyBoA!60nVvgp}v&QFCZzmA6O1(R2ADDU3W?t4sr^(H6sMC9>O z!ymQhrd^^GBHmQ3ObYvZUkV)SI~6#>=}KMGZNE+h@*L~!}>M?pU z>UgzJa-Xrn%OqE&oW#;l_A(*K7Q4fA)yp7At|^k`8YmtEizMCf;V{~rs3f+_?wUIT8 zKi!pQxvh-nN!jmiWPN-gDAcnwY)PBYdPazexA%iT^&C**PX|VAFiH&R;3bCBGQPCT zi6VO|#{&hd-*#BAf%gH8c!lcPZNhro(UE+{zm zPFoSRJ`(oQ*xDzKf>X1*e{Y1NoRY%4f!nb07A!S!kJ`}F$jHiGC_9MRgD`3)I9EOf zCm2zz67>?%V1c4t)zd>reQ>~X8MIJDN3fXiPN!mKaJyyT21)dVFods0+eDbD;{~|x z&+E@c{EwS7sQB;bh3!nq%SRD2Gq+SUk7?{U3V={yG&m0|g+`Z5QJ|;%(QKiv_CD7{ zdLLo}njj`_Cq_TRHc-QIWVMyG9>hmd60h{LS-JC7{buV;{l83Tx|zNyYa1BUuit&$ zZ5{aR))~^P+INQ{oP^r)Zf<99?yJmvT)Z4vYE`5a#jjEcKF0b4%}vlJbmrD_yQ8Q? zRb&9e40oslc77ZyErr7hu7Ey;x<%c$$f@MnPicVsE56@*8nLG323Vf9fs2JN=GMqA zp;nV%2h$Gyk&yO#rsVB3Qxg6j|i zbai`{#l-~m?-?q2)>V7JF^~X!9973My3!pfV4W5Y96BlF9*{d46`FDB^5!;-{paeX zgupt&0DoU{L$$B_+#7k4OG#^IzghEUJz~^Zi^;n`j5nB?nQz5g{-{Rs-nWXuy8(0# zdP_+6t;ynKG?~3El^suK7dqmUSZZsThZ=mhmd?rP zRBm(Ow|*OLG|+p+_F2FzEzKfT-ROXYg>K)$Wd3W)zRGdmx*|x+`mA2?#Y|6>QM>VA z)d!g!*aiN2 zVnoAM3_=}?`fFNR+V_3iBoo>!u|;5wxlD&7O$PR_T^?&rR* z`?}8ayv|!xQ}Yww8w1Wb1mmHgp!nLCSWAx_oqT+-1)}|C^HQAxB}jGV0n8w~Kn(g8 zz(^K`3TYw103Z$?5zQAgR?r&AfBd%rio(kF8{mU8J-;XaX}qPy2TGTC6^rUf*h69G z^9>G$`v{GW9-QeS{@(`SDRk|h0P-S-0$)t|?D4#xU@DDIK8HYnmdrz)lMn;n0A?Fd z1e_(7dYPNm$FS6J5o$2)k_xp%6DhC(X|{hH85eW>0x#3p44HwSW4I>2$Z|g5pl;81 zH=qgVCz%>Ls<52s%mIv@q=T;UPYzV4te;Gt1FzmE>zcj~M7Ke?_NbVLrBSQm)FH>m6=@GxGDSTr0?V zXs<<6gAZ8mp%Y;kpOZjPruE;1*43d?so&AqdoeC3lw7W2&3 z{9pxbz~Z!v&GJqs$O^iR1U$wT?Tkfmq|?mgu4`Qod^s?5o6C+g0CK7RWrBiX64xSY zAqO0z?~N=8U%!^HPDbwRoRLKO|CD$J(lmVm0`V3?idNQRixXLznwl`kwNc|tZDaSU zC*9zF51RTw(Tk{!KzB8+Q4n%_-GUajC=g_;ZB!rSK-dff^xzvn=Sb@dm?o_KY=lEy z0Z2yt8Q{EHkhwpDB>-nuLYJ6Nt%q9);0E{_?g!K$XaNlPREC%vY1sqR2NFqu5xhlG zzMGfY%(UWXW@hs5zIqS|Y=*sk$vnf#BAySy{3*?eXz( z1a#=Ohwen^M^9N5{}K+lGvsEBPLj}$;e$&W>nas~58xb3%)iH^JylLyB1g_nPT)>3 zI%5UJ4xB#?02Z9`=ygO*L&G^d{!Onvi41T8WuM=; zZ*}3)(QV*-{oAPvK~q6JYX^EaK8Lg??fYov<+%t;Oq=!TT{JVnkF9{b2VZ{c;t_!a z6S5vK%xO5HP9EqJ@*1UKX|3)8x{@yMn>9@-NoB8Bo2Z0dP|y$KWhQqG@h>y#*A+5u zlG(`JzlFVsk8A*RH*Y|=_Pl&($(ki-GvnjNqf7MiSHUyP%hVi?aNKKnU2&9m$@qLa z$GLx5QD0;jzZo^~%}oOrBOw--;Rz_UhAv0K)Rxfxa5+IiN<`tlbW{MaSdJb|?hi6^ zzW&_%bbFL4xY9edEN`OeSd!O#tv3*qIiOXT4A(n$trp|^5YjjIsecJgjFSD=84?$;<^Ikz28ZF?$382~>9PRliZvdG?2*li^t%V>or2j|}ipsOQiWHdtat43R%Y*asIWb>OgRc{R1w0t-t^W|(9M zHVD055Xg~`4DE|#MOmz*uR>ph^tnA+#oF zwuMte_10UUBMMgmaAgvtgQ*~3hnrjqNlg16r}OSF-#JqOZLXAuI9b^*mXMEWObHKW5yRn5+>Fi7gcz?s4@z`IHyO+ld^;UX@8=(vPV@ISq-0|Do%r2I}^k zQGME_8Z|?QUji2<;z+-h(?Uukczlr|+?q6GK!M&1_2Tr=RD{vkJJ?Ko$vmGFc#*!0?!-JM{NKNrrekfqEa7on%3w6s(d59^DZUr0!ZsE(CbI5-8ZZK)os zBl~g;22qF+UHfm~DktI8alwyptTHs?RUL1(Lxu@NrWhQAS_TCj_&_C#mVX%>RB8?( z??PA%xCtNut^piuUn}(f`yY1?5H$mp1+7d7Bs}4|g#!(3fJic%4YRM6P2=trK+wZ@ zf5E4rd*K971Bi;JMYo@NT!uJ`@G1z%gn&(J*2>-8-P`MDXM>gNXc<4ULZ&D9-0VyC zesV7L@cCoXJ(Fz=f9hr?n=;4IM5q(e96p%xx#oVX(hU|rHJ!(@k3QsX<4TN;w{MrP zlV?%UOGK8vtL+kEb!oR*OSoW=WRqk=W8L>kaaHz?Bv7L836>Tw^Ytacu#fZ7WPUPZ zLNL!@_82Wb82xO%UmLZG6(BwLr!t4PU}5F4i!b7n8hahUB>h(9{;~=EerJRYmM3K(c|VR1h)bu% z%MOo&^{lc9-&b`w8s8blH4LOSc~HL5J%qg;*E!84eUDb)V~e^{eVh%~#TTytZoQsn zPX}=Ie^B43f!^U?iJu&yC)$@R6q?%B+PbhEJvF5b$Yv0(-v=OtHnw|Z(AvTcP~dHTM`rL617FX*gPG2DTc#sXvUb8mK z*IbMDDfwgGy^H*x+FX4a3MNjl8{lB)>RvNwS0}w=vYwOfsfBW3?<-My*xfvq5H$2U zFR+>va_ZL3&N1+8!os?D@1E_xle_yVSqmRYuzA4DHSa!T2@!tM9;~?WEPG=e(xui9B%&PCM+#D1Y zNXavP+554UG-YQFvE#;A-_3d2?yS3BMX7m-6%NBW@vLc{L=$T50y1ttsMGO~w>P1# z@!czZ_lw3JyEW_7zUFrYe`|uFvf{+rsw!-cyROd*M$F)^ZWwJ{cG?)@*k1T3+4b(j z2{|S2aSid!2yPcS3-_%VRr3TvANdyh7X9MC z2gBmZ)sNi|gc7*kuSptfyR?-!2o1e!*V38%VXf}$p;lC+DD6z5-#Fu6IZn;d7Sw4> zA;9B3jWKU^5c58NB>Sc=ZN8)3<#qRp%N}<-lGG35hrQjlE&dHEK7LqA>s4i@hZmmG@r#Fe$Ny|q?k>#>F z9Wf=nh)!s2sO5c&DoyCPDPw!9EvhF%;9esS3v=u9;K}bMEn71INgH*A*Dxr_(b&A;--KcHZXq_Ok8nT#3b8%;_Jx)p<-7CG!y`nJ1FD-)GIvF#d_;*m~ z#!aU{GSfD8IdNJkxOjuC82t0lvMlWo_sz ztwDgXb7uIO_g2R;z2iv=&WwJeP0s=)VP0mPHmb2=RX5F<+vJH1j6lmWUV-K;onrqyp+M^l3CCvHP=FSwt; z4Z=nB3*iP0H!#Ek?Kc0|Tszq7u&X-$wK$Vn8ihHmJlmq-IXm<|#=W6Ym^Y-=LF%41>-K2v#?Y`h8d>@2Q+KPiUyOdUT}&QitKBb^ z<9`@1saLhsu2PDAzD#e=vUzN9;kmEfx7|KCEa8`@FY;MQQa}=kH;vo_WI__YcJ_{D zs6X~YmX*6FGA4oTH4|++d9)n%2E{0sz*XC_6pvG9Y_h#m+D*OyK9-;5E$$lyE~g!f z`63aIuhhdFbKy;-<(bUd&-qxbaTL|EZgMoR-Z?&){ZU|iV1`K{*0X`;76*gtH&fac zytW2*t+k$2cJ_mX?wo2opN%H*=)tkIy!MSgfg)vWxf>3Zj9FeE#&QYjv{`snE6;Bj z{zp>&!4ks8K`avDzWXN}AL5bUAfCQ^9edh#klRB1{+W%nk)jXn|K{ezVvIKC7yPjIEPxxi1BJi_0unN}ZQ1yr)lp8P zz*Zs%CIOA)BQxq}Nai+U_{lu!-*uFL7D5u8&8@AyO6_N2gy*r4XV}mSdXACjBm`Z} zGk~w$Fw^PzsukSH-AT zJ44#>ODj7qjmDId7;JiV_4P%jS)?LBgcchYx7e3O1eH^AO--WtSVdT5WO0{CPEL*< z==;D$5H?HLW`lySA;<%GLx2{>FPI3|X9%<;fL}pH0D7ChBXo(IU;a z%1$F0T_-Oi0K=eGpnX|U-RWF42ff~sahySr0^;QjTtl>U&^Hbqe~EW*UcGSrs+S{h z%RJB`jBw7h3AQ&t=f(q#y+O@eUtZ8Pg6Cz&Wg^u&pxR=9GnY@7o&`aZ4m`xfAGI6j zQ{`a2_bSo(v=G*fr9tcl0Du1jl1nW(q61M{0xylKoxpnpQa8wlNdcDp1No^o7;YfF z-$KWec%z_!yh%vN3R;l`9wJ87R^al>{?=c+&24!XUfj)_H-AB^GBDarAgB;CHh%D{ zW>^;n4^afYdv_5~o3hixWkiXAwCBNmO#!1Z$Z4Zh%*(w%8v{+K#H1#mA4DjC;{{P6 zZD{TWP2<{*vWkidVrHRKWQdQD=|x2!ppGomZt^#@zC0X3Q(5bNcCuFvuU$+`Y!XHd zlHrZ|YfQ|bFK`vq@Nq#zoHo$A&aB;tiP%&?V(tjUhT}rAk0m$BsK?m}n8a9|Hv63~ zreh*HNSxtg?fdTgU1%()WMBvaF_0VxZa`+D(;VoxhA0pa;oe_Rcvyok@C8ug1dgoE zfhE8kv`nvsT5cSjsM>ZvLu`i|-QIB-BDYG4M9<`pv~*gGf>cuyF&&s zJT^2irr-4oS%BM-?9~O~5SX=peE9mE7V7uFz!qp6o`!&r05q)^fD8{;ugcoShG#ju zkTVU}aNbbdpI-m;<;7|*kI#F`BMi7?KF)&cyyo%JJAPWY0=6Zn=Z;8paBR|~#(+Dz+ zLubESuywKSmEwAK^bI28>7K_~6yj(LP20G=>`tI~*dM4pZ35em@+p6MZa^h=xtWUc z`oRPjv9$o|8+W9JOat7pAs9oU3C4ck1b#+B^j<`rKNsc1t@GUv_CIu3(4)4!Qt>c8 z2yB5ca!92L2&xT)CGEl?ST_i+LHfhVtxdb&k9GMjpEPKv|7YO`X97{&@XOb3x{5H+ zV7aQEN0ilv&~(V@VtfqM;1>m#=++fCaNlnrx9$<6wc8(B%d$XFKgODUZNy;Ze6_fr zI3s#?XRsz-Eao8zUbvd%wxhvgSU+H479Lnk_F9`hYf~2KyHvc#CeHW& zr@Xzx!#_a$(z(=^g@y4RjuwRd295-y0e1{|dQe;f12hLd5VJ4{u;6ie*^z((Ru{M+ zf#d(P0j%nM28P)_MU7c7x6uWB6{0lSYL*zHABSdYWUGTNwwCoh0&EQASK-_hLJ)5I zxaM?rb|U(3uswgK0lpjwu)1M`<`bX+p#pqcBG|ekZx-PXAT2;5spDLX0UUAG?G^#B z$Lt6BL5TDo@NNe|2l~rBL@`_GJ4|{o()A&!J&&`k9&t!U2_KTr{rw8(=I*&_5@0Hk zW+Vr;UJ%Gz!88cGiME#qLXc1cEjs~8$1}8m-)I#pr${ZX1M~(#>& z_vO^_YMukJ%d!sh5VH?V;J>@0$IA#HD zGrWmsL~4kzm1t~Y)*3mYMh*_DVC&*<03P~n%QP&6KYK?Y3Pmy?fm`#!uyJ;bX649H+#7_a7okOPCl~{^3I-;H9u8C~jT_cecNV;UKCHKzvPLetCY8h=SuCpMW3%?irECgQ@`C)!<*| zR^#Sv6sxazg#w1eXU?bAIntw3^;%t|0iOOL4nZY1Wmp5%4VK%^YZLpXX4GgQsveZJ z+zy6Ojhm$dik6G3XA~qXi)s+LYc&8?N|DgU=ZP0ot_re>Iz@j2rF#3R9n0;uM8;ro z8n6DpMN@&V6?#(`*A!h7{AB9cWJ-DG{w5nV|yYxXO;N1RFJL&C5IYVFvEYVx<;50Rcmuw#G`Yc_6o&ma4jyu|@G_lx*+5nvZ7gg|wOI&Cr3s=cbSXW z3Eo(8*Kb+m$O&8UOyw|S&35t-vq%wSHEDK)^7EU!L^az^wO+(aUP7F+(&GWBGA&}h1%xA1OxR>Qw9nELMv0<4A(CL6~a%Z6!Fgw#sj4+sta zg6AaR)wtVOXpyZuUE=(y+T+LXg0V{O2d&~emW#L10bF2~iY~UK=aNYh)-y9v^r5k? zlO*_Z^D(7>h!j5-_W1YgHD)1}I#&LP`}k zMudK*REf~5&9pMRv~jvS?^QljQ@c>KCwjPuhanpt^}8wT-`gV1h6a+ORW(wih9{{& zMI~^Dyx*I%_`ZBic3?qgXHMCfF!dJ${e^~wCCq2LUGsP>(_xC3$vj7wpF(v6C@DHmY!-H4E$S% z;^r>ejP#r@b$U*nPKSns%a*E=%ScLcaplif;@3~e#BY_oE5t??pp~zw$MaS*TCI=4 zwZfIi&r160Hv;w;nhB%I%vh%>jU=mqBq6_C!ZzuU+3zOJHY;_if$J~&nHlbT*H9ao z4l2kD<%&?^M@aE4IXR5$E12abXHY*9j=)QA@NO`djiEW{k3o><*8WWz!kmZmk*}A_ z0h{}~5=WnrX(FRvk-(X||NX9cnd42Yf}f1RO6Rw@pcS2VH5eH-9OdDQqX+3u{2N_e zhDO)WLQ(VD9e?;4d2`5xk92QLmkM!-)GMN*Q1NynK^LO`%N?S+JiBEm?&d< zQAO(?859HdJ8@$DFg;}XZRhTow8G1Q(v6;@W#D((4_wu5z11ws627tcK?~LBL?S7e z7TW&vPAdz#wH06SrtJBcS<2VLq@SUi-tuvrZP+&yE`#?D*8CIK1s%0F6l1-I-xj7eJRd$A6;uWAk@#5 z4|sz9)w?|3pDA0rbR|Pr&ZNAL4EE+k`oF2$!7jBF>uQ>3sQoj1)pU6Lk(1fAVjT4+ z$8 z5JSub0oIpt|M8ByV*fp$G>Oo?B%v|h7(12aeaA(6%CwQQWg9mnu{5WTj&|J1875vdxp~BO zeY1NtdOFk6eRLf+ZglH+diLnclb{wu;|-fmbn<+6lU4UU951Tlt!fS+bU4`Nqc&!Q zgs86b@{5t9LFu^H%P_jVVA^j!PeREe^PU6x&n=`g+(Z%^I`5_yVpL34aGGvsh%e^(uCaEB(;2xpWI?1s;tj6@Tb?R+QTpAP*2=^0j>ZPq zwOpPNynPg1A;L8B18@DoO`w9!H-eaDJzoZvS?Yy~dxJ`cEb?VFhxU zwG$G=saCx}*?ND-N9T20;86V4 zG!wNY9=Mf}D@95q_Vio}(8c4{iyc7Y?(`pOSk%=w&NZzwTTHa&Hb zn~TunbF%qK^X^LdA@$ARd_7V0gV!6}EB)_z75>fBy8gZkuwq+F8?;%T2io-fefI4W z+m4jromjWjdu4thc54N0yWwVzqxNY*%iW6`>KeZO!-V|ie2Z;~0worCrgO7+{VcO( z+N|=sqwaU%*ML(1!sofagBFUEHa@|gUJSI@i7DT5BO{4TQ2n%pz00FXGmb>kE#tK! zPA3$ZOUhP!W~tOoEBHG1wB=q+h;WloP&K{p9NxGc?H{WE7Gweu!S^Y-QnpxXT=V1z zbRd_)J-j2RqSDq=d@EkC<_cM$%XZ&Qa+7LM zQz*M#NUP0{<_?L7_2$Ib?fA2s6ih??y>s}RGD1SmmE85dV8w!KUZr~zLe_P^Xnsx| zET-Dp;G!9nBtfjo2@u=l9Zb_<9uMc*RA{;@nZ10CHo>=-#m4=1*SOtP$UlC@j9y6} zgJ8>?>4Dpy=Vt$8k{M5+GW17T;INEY5Xr(lQ92V$X9@AN)NuD zY@l@&sIZ%J_iP8(U^9fgu4?6NyS^c~z(GxE5h(FW7q1rqOP6*LhyiyISe0t-ZacmESXf`8A+V=y1XFP zggoA>#mqpn3p@9?TN9??-kI42!mRHc^EeH&MFlCDF)m4oT~6}ix4W6*9x->+>gUd` zTjbOeVd|hPhX>by9DG}ru&QBnLpwp$(pV$j{+fZzny{?7cKY7*m%Rb2E)Bui)2x<_ z2C?crCF*>p>TB|??SZrmZJo11sORGKifyD2L=46W6Wz^t?1I!m^T8&w(gfeQQMQ^* zpEW(VSh)BxvhIh}Ds=`3IHu+#M8m?Sw0d_j$WB_c70fgBchc^d?>C4-TCsg!e0F{w zo8tcXGx>ldg9+6(6&o)6tIvEx?5q!7qu&;)B8Cw(7+3n9-fq7+(;2}MxQn$NN0!hj z)KSx{{3A+orZAKf+CUm#!#)On5_1+raMp@;@60`t?kJDBocn`#= z&VwAK#`!)y;{sWxWqs>KZ0t?eDHaLdk3O+SL%3ufR`(SX1)|-@dJi-o-^LTD^;P$} zPr}6=!Xmu6@G81q;Jb{U)evOhT4*zRjp+GWDgs{ufhUeUBBGUTNq7pbls{*;Fv`HXvKx&r7HDIgs7&ug@`QFJle?a?tP$7;4 z*LlgchK29t50z>H7TG?&2#;!<>3#;K-?lEEe8_q*tR&#mcXvOX)+OGSBvpA5@=o{R zl`zu_3j+c;y`~y0w$1yAq`?{m$+2#)mF%5~#N+zg z;^FbrjtD#5rBoLL2&AQwNe$!{2_2u*Z<~(wHHLFUc1PE1MF3}yQi#1=2Y;PP+wymX znEthjLOau$0i6{~FfM)g3gB3sL^CtpE@uxt60}f(3sF*y?0ZVDi@7F!+hG5jftk2JnL55rFD8)c z@^5x*y8TN@_Zrvq-qi@=j|@%$Q+&Tw`V%Ddi9#fjkL@qM&L}|BO>YWIAQUzJ9EVao z`tf1x*4(|n0~68|RMZ$AcO|vs13G>y5#}+@PZ^!SWdBuqFKBZ~K~bMP>7G z(**GD*Rdm_Zp%DYxLAEvu2pg)H12lGn&Q^%%udaXODTs2Z21PfP$#~ZqH>M#Trdsf z(zm!bKK;kP5F;#-u>DQq;zJe1CZP$n1~2)e3z~(m%eDhAV6Vh{|9Z+}I^Nxy{Y<4C z{^nj&B^_u{a=U#-v{GE$Z=6)5i*~K=csWk4zLFHE@jT-xzZuv0MAn@0n!?HyXqK>- zilYv7D#axHDWEFc6TGh@`ijjhpci(p)q;t&fizu-`I-drFH3MIYORFw6OySkGW5=e$1dn==GoGa%S&2~zm?jK z#aF7S2_G=9Kn5}XkG|S#hRZ_{bMHc+m(V=AUH#( za%(?8!jf;5-?_o_y|km*c=sb4l{Y<8zXcA_?V6cC!8c0Ckk?^FRo4xFa((?7fP+5Zg z&)S2a_x=s$6AmGvfPLv1;7o=0UO^;7u#dhsA&YMk9tbvoMDa?3?SaMLvX$Q)`%qjD}RahR^G1<8ch1OB^DN}g@=dkPJ4kmFCP@Ki8pwH+R?d^i>(D3mO4-K2Rq!xpR zT03)hAj+pV5hH*TY?ARF#u{s9BNw4CAC=~_i84nPjF_|~TagUS*j7aOV!==#@yD)A zDUN;gafkdER!FRzzbQw6S4AGsYt+Du zT|e3SIOx32q@-NkJ!_4Fl#Zki(uS_u;&8sReXRR_jPA?@L|p2u{@(iJ5FqUb2aJnf z$c~7+MT9(JmZT%0(2h0DGOPzA=aT_1Ec>E^ckHE?cTw%yEPs!Lp`?eh1rUlyNB3+> zvmHwmIeV8(m`F=zG~{nS1tSGPrSGusuQApl^Jq3Q8XU&@|g~F%EAQ?;&D9DiW3<<#Asjls=RJ zuZmrA-3yd)mWbWhi!q>%y(Ao~EA)ae;QJ0y5Rfg{)Uco;Z?vB%hNNqV-9e)bVVufM z3i@tb@M{TYbD2D32A(D#g#ppJ_H0(E8K*tHV!Yi*r_!d2sX4rM#6P?Ybp|1Bx2$ z{x$@y;sLXzXL~HwSLKmJ?Bp5Ma|!=R0|UIdW>I~cofGoV#3`-rA8OdE5ltVa{V$+6 z?#88S*jP5Ht%pb9i@tIr4oZ;xgtrv=JxN2onFG)Dk+U537wU}Tl@$t~SwWIj$Qj9{ zmT>Amurxt>9z3Q%H)N&&;xmKoI@S6#KbulB?+fsPR9#LjFD7G}&nvFGFyGWNc*WLL zRr9U`G8VBo+~Inq&n1#h$NJNZ4>|G z8_Pos^YlnaojPM^cT-`qjeWb3?;d6f!@~O2frc>PZKtu;(^}I*dzl7p)J$qiH*BMG zC1_BssX7`91(Qa%LwW&;u5PL`3Z@4tDk!sp6T_jU5xv7~O^_w0&tLdHA+ex=V0ONx}XvxO$5&rP^N&`>;(VV$gq7qo{I+M0-n0s%x z-PMk5Z01H}QHaFxc~S?ifHpwC3lmfc3KpTi?{PI8>UOU(?~WeSbV_(6}*6{+eF=iPSOi71Z?UpxN12+ssdGP@uuK&@HsSO6J<8J+xQ6 zW)jz@tts$kZ>rXfe5UTU_hak&Nfj%*uejTV|7G-~M(5J4*3#5I;+ewYNbJRkp=1Xi zSFVGL6nElI8e4dc40oYQ;#t_VL&ND5e4-UGb7_Erl<5lN4VDa(?J4^q$X|R;jsfrh zs_FX+7mG~pkm>vogh~SH_rA2p9{uORwE(+wMD z86S?)%Z`7Byg;4Tq7~A@E(J9R7J@7N&T4mBO~LVT`zL|s`Su@v*W(8>h|uCXfH?h| zX~JuJ^0H&~fc;WV)K_dqjcc?-oT*j}tny_k55De`h>ju#Y#OVgO&)w_^t1tzep6 zZ(azoN~CE0#v^BI>^3ZOR(S!^@dhRi_9I7=H5v$K@XyWadFQOae=R7m(rvW?rKr%O z4ZS%}N$cil`(%P$>h!pWRo&GBhsUVkH@hPgEq@$pQ4(-f*hsBT8pySa??6yeDo^%) zT-|%Y5%LA~BSUnV2`g3*^a5(CYBf-az!pFG3uw2Z)~EIWB=6Pwk~}0MR~6vm!4q5` zf2r#9da0mb)MhLpFdyGFqk%Pou878^&SL((W^uyY2kBoJ>eM`9M2)qvg@jx%p?n1B z5JUY?le98Zc|ktDp4@`RZ^m=?k}OODF2O_m5&Brj_+(!JG)c2Nw^@h*a^-#Kn`{p6 zyJb44-X-%BRhJV*dJR~p5CCYNLED3NJVBCB2h91ks!eXlE+p;Th`IPd&0EqJ7I{Yk zFi1j+H?`Gjv*0=m)jCPVvH80yyZJ%4=JSG z`;Rb~arqAw50iEr)!%<49nWM7^rhP*)cL_Qm1M z6`QQ|J%BYq0~6!5dMm$N6P@jD2Pj0^)canXW10{H0N5}|67q2V<6}yZ?e@8JA=FbK z?wHnHl8DCDn_z3fDx$@|qvATcwKaXeO`=}EIP~VazHY54bSBIv*1FaQXX>X-Fyrf# zmUZ!D;6Y2mybP1u&&{1z`6>naqAL*Q^YUbo_2RWNrp#f9)@)w7^Iexl2^{A0;+#T(1EU0SnwB+F?n zCo+1jMgk7^<|#j{(&{dAw`nqjo{WN#VZ|ndJ!#7N;j~ae09nOUO4Eqrez_Nd&K!5_ z8>-4wm3AM^2>#EFnVzL9@ppoT808rjk1@3OG*DUEdK*{Skl_oahhL7y5z#-NCPs?~6pf95M zo~YLWC7XlSB>r9=Zdd5za>}sSF3^`?5Q_aBXa0IMiyN3W)A1p+NBWsQ_-=&=o$9^U zIhWuRcl$Rz(#oY^o{iM41?GGq$8Ie6y{XAVU74L6MF&s1JsYCGI|VK!^(K3M?9*=2 zDxI<&%vWJ>xpxV6N03$c?XASn(fyRVN6+w4==8`&8Z{ntD$wh+UqN75IqdOj|6A%% zRGx!D;T-@0spyNVs}yS2jIxJRg<)F2)-E0(k34K#-xGCxSD$aDE;^`H`u9@;xDN@b z?(jW=AKF;5#@PL#`6$E|U{C^)TYvv<1;G1`J??Pqz^vLIzw6p<8Xce=N;l9*>4^qgV(uaO%(6b>;Jdn_o zMUUWSc6xS_q$8y8Aa_v|B%FZFS#f8V#dAudx`X6{>A!28EtwqE943+Y0~m*>^=U}u zk-nzU;{{W)xPnU_%&w1Gh?^6Iu6a=bUkT5eV0zk2!r5-_QKF5yezi0&9=3p&1I67b zDp${9N@FUTcjtCN?!tAQrdhAWyl~1=>3*Bc)Ku>w0r~Ra>N{T5F%Jso^X!L5`Cnq< z+xi%G;*N@Myylh1N^k>>&1QB*Ma6mVo=e&G0)F}|>j%%YC)uEx0tDd|^`}`DVs{Q= zHjWQwyV}G9^j>uBs*^j#SV3P&cO{*dgf#gZNQ@Qj*f_H;M>Tj4kPlm!Dg?Y8Ag4hY zGo9!aDl=nadQ(E~ANKsnG zN0!drEf|69em7c50IDF`Rqg-0leskVTq-a*qfh4EjiGrfQrECHNLxfDVqQPQ@Z#~S z`nzjv3_l{Xk#FjDE6i8SN}cjo;_r%;?6=rVopb39we2ZP59bcAiT;6cVi4CF>*obX z^byd`uz`NfHv6KYa1q!qaz|5_$sHf1Zx!#VI?5KV(w-0C!Rd>Coa)S701;n=Ce$JK zJl$oVZ>_@tN+QP-3Mh6UlFkiZF|ZmFF7&k;LQtIQs}U(Jw2izmj*=9B&c^w8*l8EN zRMZ!LNR&7nvdF}!)llLLh^C;5d|Olc-u$+e04`n01%VzXom~;60}B*F$TrY3^-?{i zI1!J?T<^g90ptlt&*k<5No144CtvqbN91elc%l?nnP ziC2FAcDX$y6erelbBzNxK#Lhjq4D_YFpcpeK}f4zkB4xFU5{k$xZQ`=DuAjG-tYDx zTLM76L^8`=Q2)gMYF_I;Lj}qrr7~?Iki4)!xv8#!+3*GmZGmgyNSGWw^&poAoOme0 z*#`772Rl^cRzO$22v2HUlHvg7#JWW$gzrz;u3lf7acyNnNpcGQDKxR6*OzXeg=3u z>@2|_(X%WzHvpRedOBq0lEe1ss(|=|ecK^vfVoo+=Mms99(Uxda4)gj?xn%mE=PJM z$7yADR-e7VChjyuLRLa{Mp`nMTX93ZMP2cdh00eB|6lFsJotule8j>vyBC^Zm;G)%xk3NlT|8 z_pd<%9;LV`kK1k5U-j@A#`LT$9b~AM>&I@cH}B$?kZ}hOEop1XQqs@eOX)LSScv;m zNJVP98xzCB;QggZ%oF2aa(ACwwNFAsjt;B)ahZVNZlnVR=EVSg8tvaEMyq5x1KrXU zhngR5X-3H!%`T5GeS()5v=`KtA3yY zj{W=JXZ8#?v*CY#c=l{|{n3Ye{Nqfy15+FRhLBqdy({0En- zg()!_D4}AF&z>?jWr(l6o|4QZuqlZzQ%vvubU@3$oZ;w3c_-+vjD_O=cQ>`;FERG6thlQ;~R?gDT@qWlhguT!hNq8GCyuPkYtmp%wgppM$7RysF>?_P@_5HC!Dx ziYQ5@@zcQMdb)7u(To56tgP%ot^bnc|NA2kx?qxT3;pK-6Dt?jePTNgMLzQoyg%#V zHF7)&1nW)f>#pQyMo(qyXLq&O4ZFlQS8FfJez2^l{!xp5ynXh;{!D(kadA_d+3+mq zh9zSu9EAQTuQz_DTDp`-_QRRyfDwm=OO>l2R_TCG(&HnUFzn+B$0|V>TC^aMI>Q$U zxn~3T)L7}uS$mivijAf=6k^x^q#vcPQlFWUFfxgp46P4*rpx0=QFmyLHG#&R2M^91 z4m`HN=`S;5>WCd(?p)I2;{DVAJ0`o|*ReIFR?7eEnIn;PXd{Nio4Se!aPiJIYrJ zKiB;J+y6_jKAoD>_00da{CG?4jnWoTz1}}JsVEi&asUc7gYVr+<4W(2lW{$;!;`YkhZ@A0~R{7hHoS z(ws1p*1ig6DX-Op;DskB2*V_i)wK^ZVl<)^G>v{E^zzsU6$`IOdMKzp1|u7_@O2@ zUz3uhrHg**H3p;Y=3QCW&rjD>!c53|dQ$+^Xuhio2Q)PWM~=DOqS1 z*lAx)2WyUEB z{}OBXOihqVJW0l)aJc4NQ8e3HgJ9D0*C%MOyfAUu|JXWZ7?V*7QH8&0I~WtvZZNe= zC@I|u8Dw5y_w?EK(DOLM#}GARw+pl~ewck1Q&Iv)G`;uNINxJwaqiQI<@&YlU%xn? zXiNT$N)$N56xOkK#>kmTd#1_W`uGaO+yy&j?Rs>>^@O{89Pyvf4g~N52NxFDtPu@HYa~q* zU#VChzVR->pQ4mnu)T9Ad4K)V1=$ady9qk+wcPLHf9DAvDOWWACq?#plDqbM0K2$NkczVYyX=-XrC zq)4*5Ev9A2aS=Bv3RW`p8?+go*hG}S0{yQs3koiQC%2cov1oI~bW)prn6<1Z-m=mr zm^1CPh(4FV{Jwl^k*p{@jxgA2(?v$5>(U*Z)JCuPowBcAzaB4lk3&D#-dQ?d^8do} z=gkQbyRGXgyT#!VcfPlizuXGiN|U)iDrj!CIX2nd8d*8xMt|gs%^MxjoZH#CexbByn3!_r_>i`lYh_eR}u_}fB+x6z$Q zxck9w!$|B(o<;8Cyxwm`++qjuBh%9|OyqOjToSK&xV*mR_XZ_b3oD!+i(}brP5EKs z{7F{CE3`5oaQRWOzhX$6XO{bYcDKOUeYp1F180lZM0-MoNtd5tJ@vZ$VuZIthU_$O zX7GCb`;)S189wIAccK%?{F>G#i9*)XTz=L2^R)R=2F4_m2~e)Dn$GY=-PFFyz4&{9 zxMZ_7k92aQHnJPyD2&dN_s5oHRjNk;ctcL9@7-qAOozt;N9g6EZ+VGO{r$O%A#Uu< z<6+hOnx|()nrTn4JZkO2wXJK@-~zW_oU+2-^F8(;LxZh5x*@>O=|RP z#r?<9(U97(nAGz1t!o4@>6L185+Me*`$xzeC6KR~&ou=_sut+Sj*6Cs2vs?vQvMH9 zUjbEB*mP}>($XNI#05c8=@4loM3nAEknU7KknS#N6a)kmkdp2eX^;l#ZusZEU;Qj~ zsq4l$Pt5Gud(U~qoSnn9Qq8~L8hO<0h^NkHV~6G~MP*tTGArVOpVHjCQOoy~XL6Y#x)DdECO#}nhqpbe zYLa|=m<;I@Zm3&X>yD{+ikHNf07dg&m z_SD&5L{*&#d>t*ut%!QN*x)uX)joyHYNOZ;kqh$k2q)#2!`6GZYBd)#?>J`(X|m-}C$9=?)FJCmr76)$|%=QkAd z(^O%`jDb-^grTE|-4ruC4i?_{-zV(6R)RXZ-j_YzO}>{M^0?XGEmQM(V;yF)4w(1% zXmYbhd)_u&`%?u9@~MwE1Jd3oS!ERE4&K4{@jgAV)}46OJ2)Y76x+FA?9g@I)PAmY zx@6?RRJg5H{NzVBZdl0zhHzZ_m8zVZj%eX>uJ_u?8_j^K&Ev_zH&0+{#qm+D4)zSf zT_Va|O&_qo{bJmn>D;H6YBy2GFj6;lexO^d&b?XGAWF4OzLJl(ZP-5NOd%+x-tZka zgNf5YvuCu=e1p2w7KZDE=4g8|s>KPp;{mQl^-54(Z9{p~mt`@Y%{Pn>S>F{catNID zcphJUy;rbms^?b8B~6&6(BhA7-<~1DAk-4EA-ggiu!&QHh#d z;y7+v417X@kE(R|lmxEH*!_)N)D#m^9IF*m_Dem?Z9W-HgCjQabmvOd?Fcyxj#h)Y zeOdFzOq=HtLFr;xQgBq?&O7FSn;A@*1jgca{qH{9@Da9)Vw6yR7EA9;wV6{s+wV7n1vx#1y65X;skF*j3T;kUiLdVz~M(KaCoo? zff#-%zYuoVcu*L2>RkqwO3U`OqbM>efBH@?nbD%OKH@?XzrF7bCy~$N%^XHFPiGMi zWW2Ik1`2TUC#CJJc1Q)>JY%AMYWDuNgLv=&W3NWgZaZk#Moo=ze07B+^jPyp%Ij`_LKaNE;=_wFgO(`;DJZ*8-_;F6P&H8k%D z@7|s z_P%%J?LIT1s-*c0gS}Qy_FYCg12-W#Mfv`y3yXRUN7}X?e+&$g=*0r=9~*EdcAGId z7&iSgG@cUkjFpY*C>IpQju=-G;VpAGmT~y25y6vOpWt=PgNml%HsC?{{U` zi&!c@sduHcqDQgLWuG{xAxuOi>q^MJuMV7^#{ z8%9ejcQ=}T8+~Z;+VZiz6uR$*5E*qPouaAi<+i0XpN+BrWH$m7n5wW*-cj3`EXOa& zfymHnB&rpbAqF*R`!Rclm_j%H_J%p%rWZttpMMPQW-FwY(}sO~;ZvcB^C->eAVQr} zO9zldbUc0+Ox~6l%iR5|io;Msl8ttUxcZt-L=lJP~mPeSh%97z|>dtEWDVHp*=@m2lQfk+MNDNORGhJ?xPtUvy zl?V*h`_64tGmKKcS0mzP8A(~GtIVRuu9CUi_Zb_Q!yT7udCi0Fq`1$7WJz3q#Hmpc z2~^~ZsLT2|imO#Ww7Sos2z}&_4 zV+hZ;(_NOl1Lcz84u@y4c|wyb{ZT4#t6gVMiOC?gg?H1PG;wrGWZ)7;MZV0Wo29xwJw`Z%?o|?iu5B3klHk>b#A+Y$$&>@9{q5a>cvg3Io5vAd@){H_kLxz zP`|TC0&2*I9y>c#;-}%6BX45AFC3k?dO6?_huvN@k$6uZ(Y{>w=pG~{Dv^Z?5 z?zEh}TwZL2Fb;#N>-F~*mr|$q$eYIib@sUE+>D+-vLwwj`c~~`sYL~UBP68$IQ}nM zlr_yWKFSVVHv=!fyM3q1NX|5R{NJ+|s1&bXU0EtqAv4Q=|Cs5!|786ZMZwhQR7Qk8GXMJZw;(N4f}hK|8F3gpdc0pl!`A$1 zbl%pj`h0MjH7Twmm!%wviM>TFlixqE=j_kbHB(#CW|N=4cy|*vl}(1=yLOiAxoId3 zl@+n^rhfSUTNVR|C+l{318USlpC3Vq7=$jmyn#K79DvS(!vs?}CbfxH+U&2tJ|{A& z=$)GzcM1QtU`t6|BIEi|lvhW!1)wkxQC>>h*+s<}m?0rHdar(cRqI7rWDT6Xa1y2E z5SaVq@k_q6v!kS;Au(y#5TN(PVVaTE%&4zeJ_A1+S*6-yW#yy$_XRNgq^OmE@+u_G zBlDIc;m{)b8K?`$V|2n1%+;qzZ{o2ERL~Lk)rioJOVyzij7Qmxm~4>ucl{ zJNuNRwsS++tpty`=Ke0>eW|v!V02InVx=PczB{o@fdqByT5lBlh?Nc3uNH)kXE;-> zX)+n-?L9xWQ*6DRC+Rx;r9;Tq3 ztk)1%I7eg?p!8|QwjGxw1}Wyx~4|~7)r%6)G_Hd(LKUGe(15t$9;!&ZQ-R_=M zh35O|+%%zcMSi*k+*`M?fx%hR{>g=2r`SA!YGE}#*;Kww-MqF3SPdJX$qV}T$P&S$ zO9AcA|9Am1cpltG!qVxrxd>5BF-O-MiU|>BGyH8;<3Y_!b7imjr#w%wO+@ba3h~l4 z-%_uk4WkO207|b#DzR!|!qEF_)jHbHcT8=jSBJNUj`2Zc#4%0#8yAOGI3D`So$Ic6 zwYeL~B;F6ZX;ilx_rCng&AcRZ4=jT7gpq@oq5NlKAH#PlzabwtWE4^6ZAsOeW(3ek zLj>`m#wN9dkN-W1hne(kN|Dd)%R2yXR+7J0L$yh9Pt{cHN{OuheQ`_FN$Kdr*N?2F$c-V9*e%52=z9T>M+jv9@K%phmZ z@Qcwv8%^g;1M0!eLWMZj$xFLdDC9H-7dP@4V-DLxLUMr?ufZGQ(0w$iw^IkdR724o z`JBwzXEop6ag_wb4$(q=(;CJHI3q(x{I|jj?^p?sPB)~GaU#m6m_V__#?dfild^1Y z2>rEo)nmWv)7=|W&LgalI-@eLK4wXnN74w3lT6X3_`QZ zY}Gr?5JFKuT$Oj}H$;Wiij$;VOKBK={K~8Wq=hgA1Hr^$;IvzqLh>?_xtl-!&rx|z zQH%qr$-syW+G3sAWa9!1WDJy8@F45L(dE6lEz_>`b7E$xx~l{Je!A&2&uzB~u5mE`|?oX$W!K1;4NMX=$7LLS3wx z^4!{;z9zz%X*7LST}*P}#_>$;$Mbr4q6WTbV(7D;?$G%cuh~Z)*&DkXony39pm)fI z{aPn35 zW>UL70Y=yn-4r`&CB1RwsJ>wb8Cg*PmI0Ch4z?XOkrc8YeM65qb6!F44#F-H&u;7R z_=#S*^5@;SJ<_Z4y|>@Lon>!6PfkN_aar=>)JGLL^s6bka=ULMsc7)(UOofT54lI4 z`UpGc2TITI$!Tq)G@Lhb0q!LLQoz`#hJKLOIJcrW;3>fz2WJv@Ap#r9@VolX}vw!b40ZNk;3t_K4&v_W6&1`*K{L8RORTkeI}D zl17_r_jjNOGLH+$erxpf(76fQ$f#+4@h8?^ef*XefO?+5z=pS9mw>~Y3poF=vm8Ic zUGI>lC=Lik=hBp6@{>(Rmv0sdb+zRatdP4W-G$O*<$Or}u5ragBLm^%hKn3L;4q(A z=+NB72SD7L(68S;ql)|5*TXvoi*ynL zXfZ;yQd^`@qVXS$g%5L!_xUq5!A4k`N#KE#&fR0zd1@&AblYvLwVEJ>^as`?kGm9MMRHR( zQ(KswZW#aRQ8HPH!kyBk(fo?0^6q^UX1lSfKfRgEM|;x&z=l@_l)&Ht%OYZ3yKRKL zR@K0jke{DlsE+m<*~FJwTQEjUeGi^rv%6Rtp#zQe29S*>GbWM{be=sQO|;KYrTc61 zoAWWFnf}Kte^nNyefem5k(t@9-7UM~hSI-9Ip~*R0`uAOWRCf>3%eg-**#3UOI;GN zT+F$Fiw6-5feue1mKAbbxq}oBl55(=Dhe^{6ve$wiBg=O7=5paq6d++J8_&pm#rhH zr{DwkU3IRc-K-G|V2_Mkr^L)=Q3zE@ftF!?DEBm*V09zquM$+lwXNhrcEZh0j$6vFCY~FDNC_p0Pp6f9@mcr)zayn$5S3YkMzsMcQ1bMB-l!sa?& z_IVdkb*Y!y9N(fC;dJa;?{_(g`Ue7!+CADZcZQj_ZOwc7W<`o$FQ0r1cwcg94V;RH zAZ1c1U-fSEv)l$)^!{k%Ku~tVRXcpj3VE&=RbMV3BoTnN(=HhAuyW|&1{DZ;xRa8F zhxu@kZPmq`rhlIWw9OCj|AF4xA8r8YXjbA%&Q{iBD8?r@yEN39swUa zwD(u;)NcDs(r?a?D9LoGEjr=;=mYLk%9Fm<54GnObZ_hOM{NYPP{bk`*xy=<@VnlN zzo zn>QX76!d^g>0Zj<^2me>CVhPk!a+#N7v$!v{gxX)7xekND@fH>vtmw2jpe_8QW>bc zOlw7gP(SSUbcGoxxsjR{Vueii&VA7ZoM32Shg1xEQb`JBJ{mIwMkU>AGh?8t5)$Fr zerw|HjzTV*d2c)EuX^*1VeSXyl^tzSC#$r$YKQZDxntW9VXHR3XcQ$UbWL5j0>HV? zNT<xBF-2740;`(&g^DU!wU3#zdYOoiinM8ia-l zV)Bp&-NE{+FWIja&e;*Ll=|BiAmZ>)Q~qzntqxh7_N61>`&>0IKd@)jxjb|Glke?@ zJ1gWP08+CW_Nv+ZtIoQ$wJ2mkG*yAYrWM!R;eR`@yE{`(Mm#N7a z!M@LDlJ~`=VA7xPAFBib1@={%#~XG|#j$*;vFhFO{dsdMnp_(h=h8m*(EP7vsrj>P zD|KlKLiP1Th2mSo9sYiEc7nj>@0|3jIrJ-FjsLvn1C^nnq6B1*nj$!GQ5@nd9id`b z^fPkuN)^#0jjTZoRu;uPCc%J8(a-IIr-~P0?nsDr{f!MUW;Y9s>OLsO!5f;-NBQ7U z1a?48^{J<<=)G4goI7)}NBcCg1ra>%Ook%tmv56R)XLJ9=fM6VZ4}_BiObrLMxp#M z%FVU)H?P}N-tJ^ECm@E1u;qO)EGLg39K2VHEeGxz%Oy5r!6RGCwUTSKS2a#uS40$x z?YS%t9sM8YhvLRTAh9bg3+yPp0h;031~0deHG*|4qU_8&plu^KR@|Q!E zZV4f%{tJh}68>jCn`eNQZ)s@Bs?S1_gvr=kdb}iXx4RaNP-3%Rf?;pM8Ze#O7rENOVQEEiQ6^R zOKIS7Xb(Vk8QE9q>1CUbohy26%3`n!ZggYaX z4Vk|C8S{!)tStYwxV#iZl1o7`}5tTvSibG1uH2Q?%Jv@?r)J62|i$8m!&mieOS2NuooFS27 zy!WaSdvHduk+?8FbNEeS8Y$3|>CfSY;j;Qbe?Z2DzlTAuc<~JOcx^9H-2i2Ov$y_Y z?+nZ*uV^vDfL=d@JkdvENE^?1kYII#ht~s~w{%_igzrnb%+J`Q@}~962>`QUcls}t zc{4(uufT%*<&k&FWg*oluxi(71<{88L$5u2X!f2-*3-Qz4fGcu*IoQeI-W1dXclV} z2p+B*g}uTWh-X)X=dWH9gL4enGdFi}{uMU46>|j|Ufq{Zfo=yz3#3@BKSfP*n~n#{ zo&ifGIc_g1df9qWmeWOtK-BZOqcb8p8z^d^FomW0O|ULlVSMdqh}YQUypad@b^7Cz zWiyF~1jqRlT!)&y7MFJu4YO5C$EJkpGE>R~~Vt^-rP2JvIY@y%b z+0|QRWnb3D?;L3>GleZ%JNVvcenr!3_Xm_piip1+<-AJT>xtRFFEkd>QTnda@)p5; zZwTFykvpzS*qNW6-Ui7!#hKS(J+ACvdLS|F(Up25#g>>M?5Fb5e^w_=HCZd7=kfm2(#lfSA%91_kYJVO8_3EPn&Y@; ze8(=WnYnisZ;pRQPH~ChN|A>}ypG_yOIc>E6roQd( zzBtio*MGwgl`j$Wfr?}z$8j!$zd5`1w_k&%4Ymcjb>pB^x6|E=gUS7|6AeQ5uK_KI zv=tOLV;Zb3o}iLd*~&70i+bN8nT+K5V)m4n^~TgHN2O;YKY;8HR6%j=ana%q^La{x zGBO43?n}EE3|N9Q<{AFqi&k==C9I}>QuSlrSDfIZgaKE(*A`FF)}z>?3Ru>{v}xY( zcu=v)_hN_p-=aIq5VORMfr5_nbPR-25J>2 zcLIgE*m}$Yr7zuR@Uy49)z%dh?{miV87OfUpZs*Xwu|qV73tk|{C9Fr?ga65eqRC8`mg}cxt*WiO@4p>&V2Q`;67XdlBnC|ep3yIMUF=TB7g&FF1LsKJ@>i*i_ZkX zk3Z?=&q4K?_nTWFu4%)ZN7((;LX;Fmy^=MC=JHhKjaDF%kbuD_q*x5>M;JP|W8w-W zEz#SkAx7W4d4_>HK3FuX*$!)tfz|w80+GJB=C;5F(}{MCH5GV38iaku?r(kK9$e*H9`%m!|C zNEN`su&%0l$Lrk?j{I%r?Sw0OA+<{+J~$4(TS`$&fQ!E1+sidhy5U;)zyk9=c(!bd z?B2!qacWc3^rmIQ;sMJTm(Z5Jant7tr+HRSa!^7ys_D<*Ta_uIK*aK~C*b>ZHdK zV#eT=yQl(n)|Ej@wB6icXKRkiyf|>OasT0K!!x`+sAp>`K0>S?9AGn(g_{@>);BdT zQ$hsiX9$oW(kIv8+(a{9u!7|F?@QaGI`ro?k{|_H0a@ZN zSEz%h8_X&J07$@P4Il;x%C`OEG$ilgOE1^c8-aM-A!FsAdei9{zlFM?s?hxlDa-DZ4f<>Twt>qOhOyqof`EO-hZ+4=WFv!Xmw{xONZ32=9Hz={2aE4OW(a8>Z$R{6avB=SppbbQc5?dZ_ z*~V`{L5f5*{C?oMT9xXbBpmq1C|Z7%(w{Dq2iu_QzpwVe_J*;^!oVQ4&#=Na4Tf?c z!>+CKoQu)ouhOLbf+&g+wFrXV}!18~R;_qE>c; zLlyZj?>x>LG*65t=>r2ReLGrt5nqycoN$XYD)YJ4ODm3Yd!y>pJ@PRs>Z>#B57Ckp z`9(2c%A4|8H!K!FBmj9dBxo%Bb=J&}79;WE@BmvgDV{=6%8(3n5BiowMTgk*M?k)) zjPms06|=R?ZpTirP}8vcyl6$QNxs4Vj`qoY|4h!n`B%F^S$k6;V8L2{=64x;{A%*S zXtu_aV@LGtegyL-+zEIC;G9V$EG9LX_ee+++Rmui*0!!UL{bBqKc!?tF_#BxRCl{> zlLG(WdR_1Ae`VlC^JlFB+^1X(9O?5@W94VzJ0_5dqoBB&%=kUbtv@#?plbQp+wKmlL$2CuN6YDZocUIK=|PwkTgLHLkoxB zAa`ZaD-Uu!?T?I8E|2-S(CjMo0JI=0VOwqfghGVnmX}D)TF8KfN&8BWyNn*P4`G81 zkEG_FBbShM{?Q4?&8s)qb-`UeEdTz!`d?Q&KNdLF3>;ifcAXqL6fxV^2{~7vfZo|P zV(CzAu0aw}?-pCY!T-hE#UlR!Au2vG32=+X01&$RZBmugOGRlZM@PYC3mosxnZ$$U zTVonSeH*pv#kzu*mWPkvhLrFs%XiBeFTw=&xU*$KF|%@hCY=2s0M-P|X8V=U58U#h z6kHepl(yX7up=2#D3QUD4bne@g9)gZFq0OW6lOgei=aOm(|?FcvtM3Sh_qBK(ui!6 z1~=WwAze>LkO2spt?D}_;5v2yH@WU*LBL0RA72HunTx7;Fz(2P;$~Hg^EjL2`#X%{ z>{lH&DxK`JFkGCrvwVbX0Fs^VxeS{o4Z(bWadsLID9yx$4)uS?(u3X;P%0I%GcfZc zM*q{5V_b>`%}=A8HV$;9SEp9MzCJqFtX}F$f&zh)?+x7}PXC5l)h3{@nLlskdc0hp zwsP19p&R97?Xv}S-VYP9cO3&afU7ZXO(g;=%t{i@(xREUVxu8%XoX*?`y@n9 zxH=G0b0h^#69B?eSUIpQgD^1vE_k)O*_hE)YIDZS*`cQ#{{RuC?TyR+(Gl7+IIObw zc_s%-@>s`HYOe*R^>`CdXavC;C}$cxxnKlX|0g;txWKc`2D(7(yzZL710;fpx4V+5 z_Pokik_3V`L=X6sC@f8zB6@x{e;D*#S1%;l)?cU9=vT>ZvXn}MlyspNr2G?8I=~kq zH~x2nnCM_;YuxeoJ6k|{M8QDlll;DtNiexKR0i~bWODw&-#>7XtH|4X!4r}ta6S)Z5a2KlrJ2op9XwFCU~|SQER;@tS=)sZz!T z*J^#O5R||@jf4Q;Zt^*=ijO_P4=&4Y*qZ?s#>N+nE#9YfALNcy4V;M@-0krIQ-eLy z+?>(?+6BTD|L|As&fh{2qkVKg7C^u2-d8SG9#XKY1AJUo6i|R>3J35|Mt`A(g={r8 z^Yo1;2e20Qb3^h!Xsi}GE4wxL5lQLyS)eSRau{x6zQj7<-T4}_H}1T{H^gi(vxIYd zgMHg@_8S{GfRS|AmG@6($?8DBr1k}2DQxV9ojvs0)=-@H&#&RMmkQRYTe0E3KCqn} zDX+Ir1xKY!5Y{pFpX)49>s!?xvS z&rZtPtFP-V~z;}8C~a)6kkXUkSV z7=Xbz)8m(K>((+@N`d|;w^!tn{ic_i^Z>)2@x_Zztb)#ldf-%lof-w6fSK``r>-5H zq2EK)jFmVqeA0`(xxtwx_R9RmIm^#D3WlI~#L4sj@d9v``NxkU_FB%kpoK?&plq$2 zF`fiLK)xJ7-&ob!ibcutZA=>+5yMmbZ4o6Yeu{;S2sv=bKHwGJ3+?~&M1L7v+hxuM z0)n`e279AGV#|RrY6*VMp}fw0kyj$yD~qjmBNN(?l-*WG?$&$A5-{&JVuw#)9*i3C zVbNXA`Y}K42UF!~>q1R6Y^cw>WhxvHbbeRidtc9s73-!vhwgwhFTx9bduXAF*y*5@ zt~Ts_T<_*h?IK#Ag7}lL3qG5aA#dAH?`=xDSD6cx`Z3%D5rGl1-f1CD^e*;H}2#vXHNBD=Ujz8BSwJcfA z#@bW6ubv{tQbU85QbY_$lKuB$b^ag*Y~1S!+$8R(w0lx-JTX9Cj|FvBc|@qAs9x;K!v7;nu1j9b@;oy(zp=uuD4iX}5D9Kmkcre)Qzca8_(11T zdOiW>Lv93nIMi}rQ_dRgysJ7$aFcIZ1i1ZdG7X@HfEIzyshV)-7c(4Bb*1QGH!<=J zyz57BaTwAGbB5N27H~_6wM(OdievI$eL_I;5`sMwlyq>x-Y{0U&Quo6LV*Aa4raO* zW8=|5T-;ZVz?Lrt&N49yKDj4`e`4#x4R!()bPDLUG zRDYk+ap$$-)0jK}1C5TffW;~q!+=tM;&>-yp}dY_aD{X#M7+p(@;Ii|R#MsUe2xda zAxN7L1cL{^l-LFDp^U#HASQVV{!4JV)3>7%(wJm{Lp(u?`g-ro8?tYezAW0!D|c|9 z(YK;<(+N_D;m1ypIqWZhRTeyj3fiymo%0h~xd}P7rhzO3Q?5K1{h;$7}NmJ%W)9Vv0d}oDAc4pMx93x6=2bcIiYi4 z0!-nz31L=d#RouZf>#0{)&rOomQnd;=;Yzy!Y}Og(=BOTAb`SRXZm@_$2(ZGEygYV z1xETUZK)ToXMtZY-fB@TsFGq1HeyFil2f@LB?aho=;;Z{%yasf#z55~ol>>0wJ#Hl z*|tsyJwhf;|4dz{6vb4DL~DN}g1HPuOy69-n2yuKoz*>!1c-NtZ~xprO9Y^D&>;c< zhi&jph0`}i)bj^srILjohYtT1>B1o;j*KD-Xi%00Hu|fMQ4hO3Etq6lR%xB%oL{QW zD!G=5Do|x>yNDtEUsAn_K)sEt{b>bdltx>nXI=xm*tag5%gXPIa^C@k8NAC1R7S`= zXZ}_cs9ksn&f?VluQi>J`deVm!!OWF8Vvd2y1*;$2@$i}7#-;!a zGri;iwLg;+9Sea~R5K+4)fRG?5pn?EJNiSL7E9W#92^cOv|9)N+5EPv^+@GE-StO3 zMebwxSkskOJIG2hDLpd-7Ej6!v>QIWMW2kMuewau=t(9Cp~ZOh7`JruDP?%4`%^kX zTSvpM1Zr#zSeC!|>5Y@e4G&OH% zt$XiVlzk1%0dfMIDq_0w#K1%aO;pCZVnRStA?1-7;l8bx8ueCU%0d7o}gS&@v7#G3YA! znAL(*{UK;t;o{l&yj0Q!V@bCF=j7Cs-KG@@34`K~d@&*h&`1;@*22J#><`I=aW1;sCmMppm$ATzGGS?AtDK;fFmoxbs;5&H&IXCXkD-X*`apsHNQ=d0*6& z*A*Pk6nZqH`f>8;-%6YrlA-nYUu3N2z2DiZ@C*~bN#Py6KQ5=fyGwIhl}oi8901k& zPe)U>aI=Pc|J*3|yGeH&icHmMUB=4pZL1`=d^Yd?R0ntTsoJu#F z^NYPnSCslO%v?`y-_f~b%Ogbu-mZgVJdy>)$x}A#n&-AD4mC|<=>wBXYA!u1%A@us zs7d;|=Cz(9?ixJFVtNSQ{c`^62H$Tf%VUn&25$<|^q4T!p})3gC;NrxCueGmkqPA7 zc{VYVl(bBR66)BVwfUH7s`CiFjMkhBlnTwDPSl{x+4Hi2?aP)6lz812PyI)pI=^|0 zRu>;;(!23xm6lRr#@(uDDtm$LVmAGu^%*M#`?kOj9V{jC(NO~e*h zR(dYFB#dD~p36Aa^uBX&=q;mo!HSyKIxXeV<2gJg&+Rh{*2E-Pj)JmpMM;S=gq1o^ zl1|95sx1a%M~@<7NIr~M{aU~&Gk4~JZ?9;^hy>jcYNrg%;R^u`6k0Nro}q1T53P9nLp0N{>l6yC^1xkXY;Lr znVVpzovOF%FgD{7;x3`Z1H_}?P4vkzmmI=!StYZQkU|oY=y=!K?U*kCXI&Z!?#qe_ z&7X#&<0y!K;>A8uQ5~06X~&lwx9drd_01U^7+=rH?sxO7y=2?tHf&n@>suxlF|DAe z`8ejz-2wAw;|0@~)K?PsB_Flh^eeJw=)~puL{m|=f0^;cl)xMwXok0Q9 z-o9c>MJfC~gSW&`^Cz!Aw+##aHC1yHB-|t9Sf!uQ)N4M|QK-GlFKi|Z{qlut@gQ?p zZZ3a9`oqk=(UWyi&XC3Z$L_dN(w-tKLvUI+IoZ)&lPBK)_O!B-#2%&L7GIUPXzZUH zE{37p5f@f{ww+OnCyGT(=IFY6;wyB#b$`MmP3U6bgG886nCL|J-2TtytC45NLR3=C z`7AjEvBUuZUJ~k})57cJ_Ei_=488em?TdIFC%5;iR)Sesum!wYBofI#XgAT zC!DM<5bmVaDU!@wJuDG+WPl|^hCNYUe|&Xq-mxa0jd{5h-oAwSsUY)4SHYGyspSve z(gWXH^I2{EFH~N~iRI&k*j-%H*j9Odde*|%aLlH3L+>f$gy}_ox>9~NQ|2sXie!ZD zaes}f5-&*t;#Z&`g{y@LL;sA|T9uc9r#E?mixmxL;Bfo0*P}W8v$itRbdSo^%4^rx zRZ4>ha-2JAH0ukyqsL%tim5i%-CFtKwVKl?AUq*c*r z|Nij-x#VHRi`1a;97>hRtMWZ`W09%BUuDFBFoY<6cdk#vG&0^aZI}PfjX1f7=o7_r zPdoVBAM~kcXE&WOzT|V$+8!as!;AJ_?zRo_Fe&c5jC>X z-nF?N!cW&@;#Z_9i`V^?E5zVh4re0?hR*fwAjyG%MUNXIbUWtO`NAbNL!0Jln+ak6 z*ln5Y!PKFrR}yAtb(P778CpK^{eJWo^^fs553sA?tdO*OMQih-4I&{qc3e|8LeVyv z-xq(%Dy#ewlc1_Pe~519cFXg4;`4%OXPTmUwdt}__ov6aS6HVw{7Li{A1_I#^iaf3 z4kQ8~f%^XEm)^&jo4g8C;wKkeYqA8!xe{3fhwLK6=aGR%n|`idT%R#{xT5KLqO2FV{Jiwl2)-Y zBZrS={Il})Z)`y^{Hwa4cmMm%|MmUwXOme@-3pxUcdCZ>>_2;148OkU3{4my3fv_( z+C5#*D_SYPts?iYe8M+V(|;vKzqpOd?w;n@<~|jiWk|DkH+IC<0y{&`v}3K=c))9| zOzIUe+CA!kRPWTSrza8JgugzGrhmKWT4`K68XklPD&XpKu8F?>>Y$;#_Rk4=CEC6! zZ{u~0QR&jlI;bWwTHCxcNTA8yJ+Y&(bya>%T&GAW@I=l`X^q zDdku4blv3ljIhL}$t=iTiQ$Ts6MfKOMaM zi`QYrWVs9^;EAgXp=nHb&tivWZDcgmv%=C6JliGQG^A2DjE=7 z6w8lkTG%=B%lt-O0iyVe=`qo*D+=dR%&t3-Tk6H&g=k-M;GKSA?3{mhGMV0-blN2# z9JLjs9$kv--a|~&rEcBW>u^5Ab9*teFuO^4@OQsEQL61y5`qSwwl^!IFonXZHihlU zz)R=;?PTl;&f~oM`4Q>fyw*0Wu5WV7YZ4A{tHvuTld8)u?`Ie;41Okk|56gqU z5B__9beF5F%Ltw(@@>3^p*~wulm8EqCKRT?fE)ED;Hol!H z+k36^BT%L=s-orNu(yrvSo?PRw5)~+VntCwJU?#Cp~|nJ_GbopZl~T)ZwA;Nv!V?t z?RuiWYAD~hxrjg7_VkQ(5)4<4B!2Ebv{rdo{>GdNoS-i7d;;R4sh3I-)4dh*Ipyg@ z+y5MPXMLta#|!eA1bHrge);nI@wnT+-rGXE%VJg}w_zKaX~%zQ`k5BSdj6NgfieFB zg7|vxpU6E$QOL-U@obM{Cf(MvDO9aLw=ZD5OeT%cMa=D@x*6#_!DF9n4(>fHnjV)i z4E@j(%arc9PaC!=ZpnGkm`wW0)$)V{Y%`@r>HRWoWlw)B zQs=kmI!V5LpQ=uA%iWQXy_m1(oYE4xhTavuh$Vgwn8+i2O7Trr*g=%Z2CL1=2wnt7 zHk?;blcHYt{e5?TKaB&cUs+Rk;lpvaf;3rF%!{oxD#%lV1dQImYv(XZ?BpkO6eKpb4m$zJ0Q4<@2WFkwB6# zGcs=LT{>Zzyru%oMS@!!_GkS>XrBH3rzWgzwVf79bPXW{R<>CCx+R=_KzfY4=6~cz zCCzIKyh>KhB8w*W1`nd8n*Y7U5jy=NmPf>}ch#ne1UeTM@RSA3aGuHPmCnr;X{`Y{ zih8f(H_`J&M8<7H13Vo*mv*<0G6$XrZtU$JXra3~p6ZH>X}9<7;mSEIKquS+UPlr9 z`?7y)u`cX80BZ7VvFEx{kE5jwXQLFiyxh^d)zo%((_ci=A)dUEA7Ef&f&OyEHz}Jv zY0+r@#f3UcRABve*45JL1z<5?!EmSCFskD2Nc$PIz^4iAABm~jSklt6#4fjGyiTf5 zZu9oOzF=FHms_egbLKF!e<*8bHY*44%i;<{ay9y_OtoU;xdw+kN5Au5y>ZBOB1S@TpuJlf^q-Ko zvGU@-+Bx-0RB%tV7FAU#=-f`@Rcv0v^%t!)P$C5M6`5>KS+1Rccqi3dWdzU$5-?Bs zTv6Gp+Im{0I0UYiXnS-$E$5+$hwDm?Zu6iE{FWAm^W^ zuWAY+CS3J-oqhdR74LKSC|zba(x4;}wG+A_>`WSmy$x4&Mi4{Dpfih1Lit137`=q(HTv=4tXnX3fw>|tB%&KPptAdg;!e25<7B&tn&vg} z!niiC{&l>7lwTRC@PxV5)8!>X=AK~T^`M>lo4oMR4cCLdJBx)L~^AB+Z z9x=v*69#HSOuy{kSd6M6AxI*0nNN-~A&whxGT~fn$N3phHc(;2g${0c-$&-HcgE*xD)#Nk=qw=3VhVydd0;>{P@W&E)QIn(ha}ni?w_#_)iIGvfVS^jgqab z&qg0h^myKX2>_F?<$ZR#24}3eOQ3mEPqQ;5Hn;8t~&ap2A>y= zeS174{e8=EBd-Bt3ya&|z?GPI zvc}u}+l&1r8w>pn>OJrOSznzDQEydQQ|#yEeCWG0b9os_4o@>fK}KbA2HA^#m*sEv z&#CZ4Dr2C)E>nq^ovny&`5uDRj*^QWP$zV9!Dgx`vz)%&Yqr@3?UM$)+;Y*f;gx%V z4cm-eri;7R^@$Uvf)TaaQl1qba!D5>QgGZK5X%IYKaiz(OmW5B+lGoPG&5vTwEwFN zK{2?8o6nxATz08XS*at8TCV!+^=n-{wcfd(x&Z06VqeMG&vUGPzh_Cg80IuGWoyUj zM$UP|@sMBRM^-c?JM-0|)6WZJg9n zg1nT^twElaYh&*|3@_y8ea^r#HI0rUl67eaQ4D}|?CE!!G zt@(n7H}i8R#Z=Dmk)P2$Bn#}#y|-oiGkKa<3wh+~z3vp6=%=>Qw?}ne$EDx_7dEj)_M6h4MU!n?DX#Ca^S9ZVQet<{*y_jI2CE1)_o| zJr)~<7?}hy3ZrJP&2K6bNMX~(#H4vC{@LPd8zChb8re4Vc}+U1qb+|rNUbRlxO3W$ z)}r|PtxHrIMep~J;10R4rZ=2BJ%WJ+78_;&1PXurQHdq)CdRtMLFwe_v1WXRF6?+% zEu&EJZBw7+iGs8C%#F9gxWQ?566(ODX}I|qJ(|8`OFtQ5fRZVFZ?T${rD#gCe=FG8 zQ8UO!TO`U&Whjy!N5_i|86wNNaEnZDC-ijBMY~leh6&sf`;fNuwzlDOICV|PT5G4a zj~!=HXOyd_81&AhhU+5AiuB9L;G`OfY|O7VJG;vem9RxWoH^|#L%0?VANA>A>KfPgbcMmuatqsk<`Hh z@I+%bXv&rx)9V|x`?KyQGTwd((2ZUw^1Lhyl7A?3;F?s~wc>zJ`(#)oqDyGFlp1DlbQS1?J=+<~Lv((t>ST>PKOP9<&d-#%l_1 z|Kw^5bLPpLneyq@dEc|}dRkLU)LNE7mzniX$G1!7Q6>~$4G*2vt{WWo_jV^;7iSLv z2=XR0<-d`o;}VEPj3RhePWp%U&F}@F1up;g1*!OBW0?B>Gj7M~ z@N4WQGyn^7zaEsaUB-TgRT`E=M1r}4kXEDZ;<*I8(Q-dDmy|f0x?>dQ6}!A!A-BF1 zYleA=D5;oHNnaARndrziryBVWQg1)dZ^hA$`E?$*mX)_n%lGU~CjGB>6v|2?Y+gAz zv!*B@INIcyduh!Gve->>5NoO_OPT)kPW&L>w{hxP*Ras=0)T$D@!E22u*7M{#pDjF zP>eCn1e4%+7nGg*B>D!cA8!>4iW&r>SET3R%;=1kOycU;9lKHKe8{>e&QIG#71fUW6o~A>fq> zFa&hiZb$AzX^7_Ii3Fa;^v*gu^4%H`9vEI=Id7&lO>i6P+_B6roIQoLZ!Q7iz&5NB-v2zoRH0|NOImLV_ykU&0D~H0sTpA~$6` zaE357HI<1H`%E_-b~@G=p;X59iojpQ<65YQpcm1XyEZ&LyZ1>iH1RZG{pRd*VN2mlZ zR9@#0pGCj^iv1)o@`2&vPsc99B_BPQf>xDCum2pgm2iA2&?JC2^3YsdUX(W3%m4}T z=e8%Sef=~?#kRfpYPMk75l^51T_KSguo_7vDdMX+L1IIE8$7cLBUwx_)uPGc156OA z#g%7`l!Sm#Vt_GMId|c9M7Fvx5@OlBdPLoM#~_tFRkIT{ZjD=ghD0+-h%nYpNS(l? zdl_r*Dnso^#XjYWx{!sXk)pGpcUX=B zu!-(jKY-(n_Y=QWO2_33BXLV^DB@CExgtTi0OjU3J6jCwgE1v%LCx?OA^xqD;wW%Z ztC=%oLAw)^S6SJx{p6Yj3ep@9p|6p|%?ATC-wF$KPS+SGr{`k~u&ewIN2f}U?}cNV z3SXm-Q7{59eI>6_u@leKf$6vxHF5;l9r`))EjG9|z`ytI!S-tX!gfCBshWYB^hI{s zHz6406LL8=uucn@=WT8N2Xj<4si3l;Ag$)D9pB=VNe?%V7=ZF%y+HRnBBzJFQ*fbW zKS_)e1rw(JY#kp4GKe-cbw_C66}--am$XnOB#+~f>Zba?_82t3%iMdipB<3Vq` zlh;`~4D?*AaRvj!8M=crLD1J&+?>5vS;4>#06WxCumE=Rz}&4}&-`>g4O>E5s4KoS zObSdAs`BRvSE_t(V8D&UB=G1~xI*h)ir0Ppe9|v#BA-8fkk>5}A|A#uYnBOKPCVZ; zvS1VdW>6A8mGptyfnXF}Nr|j%1@p$*_$6OJeeiD7yg`HUwi`v~p)_gMmca;m{bSC+ zL|eLyy+3Ef9gKXZ@U%izkUpsvL9GuZwWMX&x0|2|D4x$UFQVOq;s_9l51Np$&=E%rND=GB*_(-OX95!PYHFC?xSQkqy*SyW0AEj3v~)9>Da zJLk4pkBZ37qdV_P5@Qf_x5HI|-@q7#2h7R-*fSY z8CvW~nF2nLy8u-@n`h})-92Ld&pU__Vs@8)O3gy;TN6b1XOmw%t(y?@ zOgKwV!>}+s!inUrp}scfDj+N>);|Hmd4{_iX0TEipmT|p3LWk~PD>D%kbv*DmQXPK zd{06wtT%D?(=`{34tj#fuO(Ax{c2EE1x9+9k5qHMs{nF>wxY*FicQ`YI7XC8igAFYlY^3?8E|>?o1iMwG^-LhoEonY($F>dr1k&sc!LY| z=wf7~_qS2s++lm(*dJ`of(hJ(7)Q(^6H@_uW~8^wE(KcZq?m+B?FV5rSL^E~(B;zT zMj>iM#!-%SA5UAaZ8bBeE~GRK?N+hKt4!}E?pF+rx1$9Il9r&@L@Xs#Zuk2`@eTyW z^w+jpQtC%&9KMXcI|~x#wj@@Zb}XNtRmFwd`PMUBJnnvsOmp4-F+ z4@^3FT1Aq^N@X2+Ap-AJyjs?VKr|T z%PVqo0i>7_CPtBOc$%uV$k5IyJZx?n(;uY83h+d(pee1KCB^V$ym@J0LjweDXLQef z($VlJTG2g~NQ$NA&F_J`cUmHzKW_V+3|_Bm(w#%MRT4YfWsE`KB_F87X znBY+Ap`XS)3Vk6F?F9Hx%31|bR>`#_0pJr2CH(M2k|&t@LKxMTx&?6zasKH94|Zle z$GYmM6G|O0Z1>Y?o5W)PAiuVgIed@Q9*J2$K~m@7LWTETj+75lYU?J3 z)!6B&QEv)rdseoX)cjE$U^-ar5bgU%xPvjo5akBonQx)!{2&>3NoJ>mEl}Oq+4ONf zyqQZ&tzmOS8uB^Be7>+#>D}Yx(9(fua(uP?2L(lzeWw0ARJngo3}x%h%eoyf|Jd1X zrp&R*w9-m>o9orU`#&LM7nRjok--@4^4(d6DOgeaK`C)aNR@$-a(|~-0DAtiqY!t} ziP8R}TA|V~4ugjW;cdkqCrJKQkH{_-??ZApr#)VX+ItiA9R#`-(!{_$%beIUn2xZ+ zeC^oJ_cw#`@lxKm8Lq!eZ#<_&)FWb&+{_J}a1XxK>J`VV?Zxa zXr0cH4b#bI$m#gr*x4QR%?6%=y1O#Sc8cKDXvcQH!`y!EL*eCg>-;#J}~gKk;*Aih$iaP^0bCz zzte5Re^Ffm;}`z@;nSS}|$ zwWcTVhjvfBb8n(PrqS`7wB48pU5}m0gAY!O?+g+;-=k!@2zV8B7Crv@XBhXyF%y% z+FK;5V?T$KfnNqH8AE$8mX;y?jBRO{FHCJk9J2$As?+Ji!G_jDX$}Z%5N_=%uqnE9 zZen1QX}`!Elvf#UkC(~@4v1%;%%+L2WHbX@-9k;V0a!JriereYU`Vy5jFCqFeQ_vn zvTo80jber2z#kH5_ibX-ze*Y?(tsdhb5(jT&p-gw;vtSB+x02aiVLCXIluaAG*EII z7wJ0;n#=|i21n&Yf<7_Cg+7}I2_@9UJdO(ZK^&tHE3F>kACumm8Du&Sr!+e+V+&m_ z@c@6*?Ygu9QN!Jv{I#O1heXOC&ndy?*VysR{`IEp^Z zhbXIQly}rtef-Fk6)lkN<;r75E9YBAWv$!yp=HU2+; zkb4N1P!5#SFB2^5dQ%Pr2+W=2u}?aEH9rh0B0(|4u24;@KJ@YMZU|nvW`W9k(dTo^ z*Sdd+)f42W57r$)h)Ld1Prb|i;onAcd|I~dSI`S=6jKonQ!(kcnlzMbl ze2co$h{fC-Nx3iYrz1G_21LVSL#e}M$+fUc6#RrJL*8+&N@L8ihf`PDc|3t&xZo1{ z{Gfj^5i5!P0fv+8XdM-x%B}@T0AQo20$C%0-^PH2a7O2o=hh6N@X`j?Px56xP})U*Ee#P!*GPOhgbnmMc24!{ zT#O%SdVbxWdK$dW@+70k{WI4eve`_}$zP^e8d9%)c7rQQ}?+VxBOspsw4B9Wg*31kV-E$zR9D+cBg>E zLLa_|`y=)c!Cxoav!T(zQ!m0ItM8Gk`xY$D9M#>6unyG|Z){uUEdoJ<)Ibo*RJ51D zt0-M*O5tyKuU~T*t&~@P#iJ$t+%JU#H*-}g6wrK8Q65hOk9EVTN*Hcy9{Qu2Qw949 z$IdYje0KsZdtsmCZ->>y+Ik5y75uL`d-R47DGQ284l*?T3e|3xfMQ+e6Z*UUrNk0n z?7xEda=?oy%j4j;#z#uceD?$MAX+snXpHdA3&I1OR|F5(4HX%!`&)a(@VE#1I+HZV z8^dgEE4QH2EK6>C#ldL$8!Pq+1bXMaZlriVP$fe5ELjS3n$kx0Rx|=nPE+IFKBW#X z?CQnv6k-vGMfEK80!3%+^&d7ii9Vdv0rXNR6u5l(FO_`8r_JjA zztcM5W|I>l;NtdPIG{rq=n-t|W26*S-vC9$mTSGKq9iKqAgs>$J zNl?s1kzu6-d;loFpg-I8Dov=?mfeJH$N(vC2u}9+3djHwf0VmHsD!goVzg<42m(Qo zC+_)9MB90%`Y|u}AI>(3YGTA~Gtt&rkx@=hDewa^n$g7dZCTj|fOBE<=0JyGm7N2{ z*7sz4FEZ2#D;E*mW@ty?e!~WK(Mz(Zs3uk1ZwI@1aFqnD^91Xq4~sl<*3Lm8f!+jP zka?37n1x17(ABjNTs92ap*{r5CNRs{(x2WB78kW};UE)ee6ZZa$}05Xx3*;#Q>0Wc zWDRfKj8T5K#`8z8Eyo=8v#O3(jFyyFaRRrse8X}!gEk$S91r|u?^puaw3m;$PEy<(vDl3mw)kl(Sxg>#P{YjOzi$Ui1*3L(| z2VNknXM+E({WIxk3o(EO``Lp~BxQbB|Hz0t`*zde+fUm(^Y>j)_F5@5utRgunKNpA`?x|QaJ`u+jk+8tR{Maust zD-}y3gp&&0oqXWaN6Pj^`|>0J@%>);VPLwh7FDa(<=hEjX~Vm_*KfoDQ4#04ZX|?V z^^qtBp-oO-oiLn-*d^zD#j&Jr(4pj+7I%30K)eXoX z$FRCcA9PR5KLALRVH2#_zij%W4 zE#PrBr4-2P-lx$0ZO{+2oJxoq1wu(%KW*F+c~9*Ct^6(ynNl8Y(BMd2wcL)n7x#IK_Ao8ZQ=<#YQ}W4J$9YzkJj zkh0)^)zeLeo3=r5umfR_)EtC&4$A24%uO)`=gmgygK>??(zFOu0s>q-?S)0~j=b;a z`|&wDHY&iSyjYTznuo#$%bSo6FvzjKioL}E=SzxP5;^&oshSRQFqtTf_Vh~K&-v%? z{DaxTNe$;8FE1)gm@Q8QmjNRy-j<|i*7#!eEuMvvoqHp-PTvb2@Nx7PSJLNtv7+F3g7-91?_}x8o zef{JGny;GzA7hnh%dsC(VTGm50y@?E9VG2>m{1Aidyic=nuqFkej1UIN)880BBHHA zgruhY2n{M!(v%HmGj+IoSQ-^XgWH|a)TBgh;_>z+A4Oku5yD<7Y;hg2!niICLXUcQ zmyFj>jBG1j^lt)r_`U3~dx`o7OvpQIx~FH05IrqZ=M{<)m8d>VYW;~#VXpmaw)yG6 z%9IhB%u*t^6a@ut>;@OH2uAcXpN>btM~wa3 z#s^8cIc@pKG-JPC9vHUnc3HCM zPY-d_mD#a*x@8A_&wD>)S_!-y%IWMLGDF7~+F^YNDnqIDhw=x^z^Dvog!xHI$w<59 zRXLtl-VlR@D#C1OF!>YG{$;?FR&map&@Oq;+EHC7xW29`WLxM5rt+r+?#BR=UgSnX zV-0V#uf5ocA#0%acnvI?nj#O-V>o`N<6xpnR4Z!Vl$=1Xx=atjl0WS00wq-Py_ zH~#jZj@-vJPT^n?B=!0ceE?GasDa>By#n_*Tq zjtqcb_5`XJXixXav~_0lm^==Ki3ksQL7qprNh2fV+M}DxU)D3=M>eww{YYBR z)1DyRc^4Q62+&wjn1R6@pImy4M1GUhYThvql)Zzht@}_0@jQ1%J@?8~!83T@eT0G# zqOT-l$}O1_x*q4|W@WAG!)NK1=&jl-d4O`(IiJ2j#LHmc5jHB851?lgbIh8{1eN_g zMD1UtDNud=!Zy=e>&n@7rDk~jWHI0N^OvV!s>Enb@H zEa#KKSNebeDvT^R9o6~FC&P3;eCMabeF~+hu#P<>>W%W=K+a2!UqHPP%~wro?usJ5 z_qwjak3#U^K4j-WeFN=^gBZglVToNIZ!6nq*%6Xl+sB$m{;DSblBV_36ne|Oa{kTt zE<79f6yIGp`PTgoU7A!WLBw4txy#AJEc6;EL};tGPNvill=Ceci(}XFYvtzIy}=>Y z7iu4aqb2vF$r&J99fX0&dt({) z_!fhkSi?(L9pEeDhm-&0@=~BUs}ZugIK<6WB?I8tX{oYX&DTrK$4s2SIh5IK)HiE& zS^?^O+pCaS5OuWMR$+4p6KU_&=km$5^g|;LAN2&}Wl;+}<;e2tB}hx}`~XXSc&3Sa z3P7$P|6t8?7fNvQs?aC)^DGATH{n(-fV^VPSd0TQ*RZ zewL&io0vI?eOw8FClAsjALje+T-n8Eu*fe+uJS^1nZ#;vY?+3hnK-T)Td*bd+|h34 zUbRT8uALTSRC_e(f#C-&wCz}b)xRC0)nYR6$#o3=>OB{8?g~zRn=j&TF=$%eK25T^ z=PmpRLg2vkA*emtgQ^H$Z~ER+2+}Q9bJ*9wkomS zI3)&OB8Wq^SJuD5Y#^B-+1`i)p>&(+W%+gb<90*p8QS{8d_)>rwLoKEy+?U2Y=f- zY6W!bpi#{Cvz{R(yR*4q?VfpqVi}?y(%NeYI>4zn1dVmiDFI;3=`zjko+7bbJzts5 zy0sPR8ZG;H_QbVCQ@* z_uh8udG{vzd(KrfWRZG;rO-M~#=k_5B8}MAtg4XScDEL`hKI;dG7L`7H?1CpM-o4C zxPHV4?^dnaPwI0Kq*gI0s{6x&Qb)#|K42HJv~gV-(&FC5K?K(zSe?W6bRoUc_H$PR z44@WP;a8b_b|F^W?)*m`f?$L2@0EznYw9MoKgN! z>e$Uv5S)Wx=ib@9{ct}aI(p{V88^pi0!|d+6Gz+cRe@mn%0Tact^qvdVrPkHvL@|7 zOMqkcRThXC(2tT^w+z;=@VBmKPXYLBE3rr@!>3ZxJAXqKT8`uvHNe@wxb$v>{pbwjUe11uQBBHz5S`ONPeYy%`JJ=_<&5bA$-nXrZ*Xq@2WrZCcM?jx`{@mt1!Ew$J-#5ccPy80e9wan0=tl_980p`)%ZDWw zbg?j%hrA7T<6fU(dM;vOYd;Gzmfbu;K|{uSn2*9i@9qfd5yYx4_R1@Pt3MDE3v2Oc zq46Fvr|2((r2ji|=mCK2qhm`*g70z~wtGtGr_9>>QNh~fp zA_*Il6QZTge=8FZ0Wqij8=Weo5Ll!UqV|0*Z?O4A_u_Qez2;B>0}}dxFrd#V4EMFB zb{-eIm?B~1dviG6D+0;Zd9}akMJyrdkJBWY@RdrwihumhVz5%TqWTl3Ux6&wN5DJh(Z>y;*k3~(IX$EBgM>jv|8vQ@Z zIzC$AgwFowgL&9alj<=oteJjD&2wuLT@^=EmI9#*1XO9l^2|(z$KN)F7+^697aY-Y zdfah(rjH8|I>ZfxxK@ZoBB*6Cpv0}LIqDcw%t3q(A{eZpbT?ozjHRb~BjkhCon-L| zdb^Vu9z)%qYuv=(uQ9^{Lz)Vfx)x($?hnPGo-Uf(LMwv=2r5d#w~2ySY29;d&y#Zt z7%+P2;xJCfJk!DvkzH7~$Y1WpLL_y6(qnUoeajno2!snkd-g{g7fu7hR z?uCAE)j*MD3r}=2#J1&DgoALu}h4_99)z5jQmEZ>C1tf$G?g6`nEUU1m zh(SL?uBu!__fw0be^z-l5D5Phm!0JhFQGfAQldYw=k=c`jA;N~>8rJW^0B7A=-Vo7 zJBTZRDv$etD=mI=sk0t?0ndyn);t}O9m(1haQlcHYkx8&G%>%TXH~1|B>1XYS(XUT z{)vzf1u_B492zegyaVxs4C@rH@vZ?0C%jbF*v zt<$a&tqN0~*M(yR)2=14w5rYJW}Q8OBJ{`FXM zm2JlCb}ol~O?h;D>Vl^aRLH5T>w63jbgYR|b6H%VLi)oIe9w{4-Hyc%Iy-lsF zQ_kzWI-k11Gu~nAm?Q=}Q{3vCG}bfJzWcKvuDgL~x2rQay{693oz}doGf<2QjVUg? z>5#yQl&jWTrJTazsQeW+vgIjfH%$+|*M6_0;c6bTh_{>Ugb>kxUolCzW3vyb|MS|n z{QjD;O)8MkF|XGsJ=^x{0I`5X2j5L>G5u6H+W4Vp#Wj+! zYxQ98;9>?PeTyp-EAQ7UDw0Ng)EmvpQxSg%;mAm-7oQ7%%6W@&#_|R6A8X$)baUvk z74QrE@tn*c5EmJZa31Z>4k(Z~yqRLj*m{P6LI1qEt~1*(3I2J9F`nT{w-+w$Od7o1 zRVyh!<&G@eB5(aHLWPZYG;jX`S^L7?UJXzCw_qB5y3Kmk*mUny$_pJkO1K=@)tuk) zSas#RD`J?~X{lC3#M^E`Cinu&b#?ajOps05cD{yaSKH@X-wl5SB!v)nOX5qzPdaL` zM@0!fnq76o-0uqx+}&50PgS~4KG&J>ruQ(>)Ug6>Z)7g@-1+K-b>#~)Oac!w99xZ7qiW44iBwgzq~EQ`hn8vrOPEL@~P=6(GPhQ)9+Q; zSfceYSyn>$-9gLVGLaFl*B@p7*&psv!|#=*iG0%(!E<9M%2<^{_qXh z9E6>P<(uU(=Tp6M-ID52x9_26IdQ;Q#xgZA4Gl z{&@-A4}K}^B7&A96^|5^-=Xt zOY%ZaYeB_bDHL$N#@5nlxV(?Nvc=BMtw%B=6dcyH^4u~ms#iwGQi{a!(w#n8Sa8y9 zRr*_RLW4}y5}Z31vXi;&kSvclba>e}Fe6pv5>4h5cr5^pFQQ{ z^PN0EyKCr>?q3P55*^-qn`N|; z?Aa!6GbzWbEdJlu(u~Mgn$;PWNv3~p+x|5JX6AY6$ITRme#26>r+RR<-VLn;6ZM#< zh_k_8l*alm^Tk`dX1pCBwf5dWrRndF;KZAEi|*e%InAk^3BTdjC}W!$+DA!7^?|pr zv1t`Y0gZf$XeZ*KZM7JO39Y4va*ISOYR7hqqERgkF5D|MG(} z;aKg-&(C$eK{UdzqmxEdX{2!AW3|QAR0b*Tgoh@P4ROtLHi33W(KkM$A4{YwQU;Nt z)@)J;I2P~nl3`}X^^oKG_kR$2_vfG43IFIirs7lA`{#8xWV58^vKXdzke@#%A=V#Jlx_|E0|NoDDij=b%3$K5Epv#lmyOERERl3RNe9(f> zKc-8>L=mcsg@JcrH2oPAOV5q@II9C=ViXoKBwPxwZRf12vdvfN8M{J0 zW6vm!&z`!my=H92D$mT;#ZFKWlRlBdExl%i(gy=FUGal>y58%77Uq`~>T@S7cfTt< zs^R6aP-xh)O2!7&WD!|_H0s@pFq*=;uD9ZcIvi`^$E1OSv=7nf5A|dekyMV?C8P#P)jsfV#jiQS{mxH_`P`&RfJ0v|G_&y^luW^Mj39j*sKZ8*;QIsy@yGgAT!n;5t;vT^j@#P{U*DOw-IV28Q)-#qvI;rx@$6WM4q8+8Pg$PP zZ5_z4qxvt$qaVin)!*izsJ#aUo_^gxp?e@KA@kehc$gh8ErqRP=9D)E$u3| z|D`x2FPP$7aQHZeh_pPEn1W54h0i`noX4IlXil}{)}2pY6Pw1{qo-z$6|Jk$mv8Cb z4W@3lDJ7jA_m4mG8DtJ4rf?hImc%*0P#bm3OYlgIge`mwctD2;n?X;XJT8pK-v(`A*Ft=?CR8ocQK70qGNW@yA#-rBU|F zdbX=$G4q0h$1$hpsGsiL8>5T=X&^z^dP>7U7JWqTm{JXd2Vvg?`Z*hF#VYE8Bc%*Kpf)a)dAm!9biPqg)rC6!4(#8A< zy21y|)H$#Ij+yDl3vkpIZcE=Pj`QZeB2Fq2eS(&9u=|CnE#A*-8%*f^H{kD*J2_K` z51u$zSqyXZM2Ab->rz;{yT{8mK84H6<1-|-E!Mr7FLIg>R4fi_tZ*^k@^s5D%9~Mc zJ)&l=Xm!#E)Ag=|-UY4NXasA2i))dz@EJDwMklSIVKI%6c6{hjci|UYvaQx}_5pgr zZ^xwO>EMm7dxT1SPjZ+v#E%PK7Ghco8uRZ;BIimrr!X%N$$o9soMWtswDJup7*L^~ z*K-lO8-`s{dYTqYCXr#|OCHnLsVX)rPW0OzN|;VT<#3uwo@RW<(4%CxA4NEkihuW% z2m4GSpb%`8QYxgcI8S*yf5)KzXQ~z=OL}_)6aaWRXb>`RC;Jqqx zli2f$xkB(waMS>o-A*d&71$Yle$r@r++i{iT;X*0#&mopCj(ED@5 zYO!(<;Pdx<*UyG9?lx|>=fx+n^<rh~*9yOGv}y1)C)B!}4b=FV`oD(~YD zi?*4RQagL}v=0`Vez;lSe58EJZ8jfs9PqZ1GUhh>+|w8`x0msf&9zt{xG$i5HElLt&^3QQCH9%seu*8tw6B z*-q6E>SF2bq+=WkIoF(gCFYKGW2)AGbEAM(h`nRt58QS%tRq78x-q3zz_cY$P4SoM zcgB~~%>??Kin|>Mk}Uat=O&S*<|H3S?0V02JkdPO^VyV$r7sfQt<7a-NU^g(g!u8Fw}vU}>Z zgls%5M4O(BvQhLV7`y2wHEBr6(_t#owYR4tw6Rhkc19aEzLg%DI(MD73NNw(;e@Y{8A z&1!eJhd4##vc_C3ED0(TC0sB6NrxcvO{gQNWiNjV^loRAxf(SPdd%?K1-*D20!KIK zkPj9n1(?z_XhgKkoEzD5J?nO#KMPC3`xK(`X@Yt0fX|QT^`GCsm+#{(wIZ=>rq`MO za`lMw_zah^*j?B`$Ng#(lPk&nO(Wdi!9GszWErtYjheGDR>2uf? zo&o&-vy){>Hq0`Dg0Ty|AXVeRGbEYrB(k6Uon*FSzE=j{0-PDt;zT zHRn%1Q&S)AUP8h^J~1)cB3wxH+@NZc>wIQvYdnax+xPgKsGJ)cnE`e+J{ywc+_t2l zn@plD!TB6`AQ46b<%36UxH~V;Xlbe0rZgvR;;Jg4d}~%};?jNHkZm$k)pj`8{eiN> z{lA%1H1ZOX-!UU!exQ*uP*S*%Q*H1naB^Q#{djLeg!XqKJ{h_qG*u z$Zt6uiBD}L@<-YS{|GdZXhjqszQ={)F;czmG~dbgWrX-E_n2=^i{^GbFPU<1EtG#a zbhX8(c)x8O6_&`)hv5-bOg=oWFO9-%Y+80;gaJ=gf<)M^7r(&w2`_=ep3r%*F0#gL z`=x~{7YU5Zo(B9pP6B{0(KxtGGtc|O*m#f*_3 zn@`c9l5?t52Nr0u&up2$Z=Te1vtwMFKpFL@APVem2TXw9^I0NQWnjuQ<3~z(V=EsK zCm-UA!Q$;<7s$XOWuu_X}O8!t@k zdn&AdjB9K>vPe&>id(Vr{6;_%`hbK(y9SWxc}N)?_wvFeWx3AR<1XLbH~@uVth7P; zwqaF0J51XEr{*ZdRo2__z~B=LPxzNNRW8l2C zC`a3v&k*Ooh3@sB(`sQxIDA)m)OQ@$e;l)WEWo2_kn5e&@g#%p(~sP&NPSz`FNG@k zdW#?Rpw|VN_WtpfS>a&Zs&aXvpzQ&Ng)MB52ql-N&&1vTzRg~8D31%*m_h4T#4Ysu z9bK1>tU!f<-@3q3Gv+}%sR-VKDmoRxioQiqI982lRoI-=R zKeo2ItE)fdM|hvViUR6Q$@$Q0EkpBL&r2FlJxn=&jMyK4ekoyQr>XS@M|CZH)K^lC zPx=+bXOd+}wqtNN^7X0$1M*pr3h%u}pAfxUH%r(3vdvbgfas?VPc6s@sOHE&pv5FL zrDvr>h@eQK4k?XtJ=*}eVdQL}!N>iROYpDZK(YOXI{E*iifqkGs47hb!s_v}GSy$!XL*zHu z{iOl_rQC{?+&wr^C~Cz@$day`LB9+Iq}8q<$s0LwXV_kR1&ovrn+Oubo5L;1L}uXJ zZ-w2dWIE`&ae;4~*vh}C*cW-cVSciVUfUD+Nc$%i2K6gm#u z45pvD)#iS?$YWSqZcg6jQc}#9m@#bOHlycbjt5*~pf6UEM~VK4Qhsotw}%?$@e#mUvZv`WHm&j$C=BQdH>VlSpL=4wGNAo&Y(x@O(Dvf>osGxF)GPvFKw1T7JZ?e7 zWq#8|$J-V1<2{AP`3gQ%!!}ur|O3HWL_a`!V(#nw`QUJV?*8($lw8FRf3YtZ+oXah|_)E8^t5V5nA?*Wv^5b9X3w;-FE4Ape zONP;ZeaJQxMMR`9J#SL>aW3bH3knk{<7V{NU3w`T7EiT?6e4u>I!03wPx^VF9WrFz zHK%_o(`bEv=xDMLOzq-LU_P@QjwQwXW{*vpb*R@phyJk7(!=J#h7hrq=3YP z3zta5RQFn8! z@b7%1Z+%s4S59uG2XC+>Q*8gVocPZZ8G4=`rK$~pYk~W?6>j?YA8%COdB;$&k@8-e zPUlUCzl4^MBpeM}U+;!b92pkux&~tDUZ&~teVi;^O-<6D0=2==!7asy^dxbB7r%F` z0;&ocG$jZTB}=lq235fWmZjD(;mZ(i&;$Q{IO6tUQyatpZh5s=|Fit3SLQ_!<*(U!vdP^pS?C*fgwm78bDDMI zs&}1&E&;I|V5>4XLmQBDFixtF>b1V8YM&s!<1Sgcx4J#cmAQ5XUi6;`s49Ob&3D#OnJy zE?GA9_dobjkRoNiTCm(E2m9g6dk&sajmZv*q%rH4m5)M7mLug}IRUw_G{3@Ze0p5> z1Bk&ol-8P^!qkh)OA$Ev6}aA(q2q2;)Uo2oxSVb)rK3=F;9QQyT>7oBJM)hiZTclF5CU9?~(9X@E>c;6zatUP_R^O#fi^fjuVml zACZw=2b_@?)LZc)8Wf-Gky6@1>3U*EgvPR?hUE7web++`+=I=@oL=UzChVDj>)8yqM?-J*D35&tTkg zGN5n7Kd*2YE<3UX%rvSz`cX0Y*DB7b&bfc+XWiaWL=CyFaYtL0kYYYFW_m`vTV%8P1(bK&wg;G>qfBmz2L6g5kZ#4B2V%r z6G!Wm?2w7XX~8GeD8B#)&$UW8@6O}Akb-?P0pC}iS87c2q-?{+eHmYb>qZqC$vkI- zUqyvxPV;y1k$h2dY4{~txJ5yrAvjJD-aOl_DUXItf%ja>o=c;aj*-M=_juT;Gj}Y( z!hynEf42*H07rydetauRt6Y(+Rz!FqU&w2p6x<4ItaXIsnFfP;ti((8zqx9#)k zlY%>$i|b1hh=^e0EBxkylyClOQcg#eCCl{lHvZFjB{2CwTiwz$06t479$0Vq+!V&9;~(iiUBjn^4C%iZc(0K@6sHmX6K0a5 zpBn>|sTV)_cLn{vMWG9i|Ty8-ecq-qwd z+4%TX!!AWtAQt8{*DcC_xJ1Rc=8BCRg4wf1Ypm|3vSe%@4s`^+#RZi)BEB!2knD4P zAxd>)^K=*|Fp=dtg5#axo^fjz7Om}^`9IfVvT+{KIic>`n}>_j0yQ9T8BWMP)wBMw zDbEfy1XZ+Nf3nuxfq=we1R7^pY3T7F1GuMrciz3_q&J?l{8aJzhOaax5YZPimUO(6 zgDg?+nzpR8Z7Yi2YTSFbF-lfI5h-SuQW^5~2H7KOUM3Gglf4XaMVpj~IODzHFKXMz zTA(Q=ne$ctq$qs0^Sk9GlM4OyMRAa!(2kyGjJfQZ+WG3%GgiHFrLn$OGPV?=OX1rj z;muO@{o+cklu%vM=zXyNX3}yAd=z8HJ#jlncX+_5yYkbjJwUo}-o-=*Etm|c)E-M= za3ExO>!ILUT4NJTtB{ZYBEn*u<1$-x^dY!hhQe(s_!VCFTlMs^SmdT0TGAG=TLm8b z1&-8lw_spdF0Ch&-HRiwxsXCHbW>xStp={MbEpu`BSj<{KHUCc02Am-@-PEXM{ty* zxdeLFnYyJh=d&kzDA{@Lg*U^Y-(*Y8At7^i{=h9;EGZ^LY@ znUK5A-_St84XJbRT5Aa(D+kfP(9}_K)+_cK%0tIi>(^$>J%$c@-P0~$pxYf? zSgC}A@pg@ABF;HMM(d_t&>IL6}CwPRSbf4G`nM!!EIO!V@ccj(jjC}!|mHhVB8 zOhITuvp3^=T5z;NVDJ1wHtej*3p`lsmH%V*8r(5{Sz%VAMZdm`ndW{gNm$(x3Wo}Q zxbm<}-+6|IeDk~#X?9LsR6!HjyV?!|$t#(ZW714ju1_nr1F+L@)kB-H5qkvSm@)h{ zd3jYYCN!yfSHw*j1uP5EyLzO`xPBTHEP-0-=TUSeqEHdJ?pLzcb!>&5>y#5dN=Q%Z z{#=TI@v$;4?J=m^YyUV^rUv`(G`^K_eG3Cuo$cCdCQeOXgQ%b{iLVkT#(NXtAT;IV z2QhD!5fV)^uJu#OOLRqt{nSlUs~UsKDoSjZ2e13IInFt zqP*gH9}|(ovR&ha1k)u7-zF=#8PH-jl=i#N+{q=;cAS%HGGwU-F#;I#OlA6-<4Xar zt6ge2g*B)|?E6~qN~O;YD|u*(H|EnfR$&`Q*D*z}wzue0&B$LH92x@3$s3DBBOrL! z_4PPiu~3J{#iJ{)u_TUrkbU|abS2)2Gou@~4VegNJhRd3>i87H7NCX6^;wxdNmvjAB$K`@ zJfUgTb^wzw!fco*2IHw9?WXFV$~r2o&NZapU=pO zSg!I908Y+aALFn{PU8-(A6ywj;em`=No?8DFD>|85g0Z2=~-k`_Al~|Hnm(;D8}7> zg!-kbL)8wo-+oH?r)(_b*(r5c1`}nnBM=To3oT5J{auUu)gG@O&o?(9pPQ|#C8F+* zyi%U&?eKh9cl4)b_Cdr>_EJE4%G0SZ@E}#VC&CYTM)@jOEqkf2U={8__1WG|N7|x8 zDB_umM~^)lsyMi{M(||kMJUSNa$ms;8zrC#P3msHjhWrZB!64mPA_cMN z^P#Gzg|MgpON`=Wvvn0A|muY$f4uJ&mlytZSL{-eNjMN z{5HZnrxn$2?i|@es7i~R)#?FW9QQj<6@n>cUxcDBtWPC?gKU10>2=-Nk?ox5k+$>Rs=>Q&~11Nzq#@9(C} zY%x7j2LSw1Uf8cGdawWq_EYu^Rb_<2fvy@OHM#n}hoO}+)4p=`FqP99joeoVw@=un zkR(C=kk3V;TSdpGp!RA2&~c1e-)5cnCqi8)-sYV{z${*dTmhY@+)03_{

tiGyThk6x?h2p}GTYUm=2|p|=%^LU`58fu& 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± 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 literal 0 HcmV?d00001 diff --git a/docs/guides/images/resource/integration-mobile-client-server.pptx b/docs/guides/images/resource/integration-mobile-client-server.pptx new file mode 100644 index 0000000000000000000000000000000000000000..adf3c8083dc52b2e8bda51635d71f40afe036afe GIT binary patch literal 168927 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 literal 0 HcmV?d00001 diff --git a/docs/guides/integration-javascript.md b/docs/guides/integration-javascript.md index f4ac2dee5..651038645 100644 --- a/docs/guides/integration-javascript.md +++ b/docs/guides/integration-javascript.md @@ -32,7 +32,7 @@ The options for integrating with UID2 using the UID2 SDK for JavaScript are summ | Scenario | Option | Integration Guide | | :--- | :--- | :--- | | You have access to DII on the client side and want to do front-end development only. | Client-side integration | [Client-Side Integration Guide for JavaScript](publisher-client-side.md) | -| You have access to DII on the server side and can do server-side development, or you are using a [Private Operator](../ref-info/glossary-uid.md#gl-private-operator). | Server-side integration | [Server-Side Integration Guide for JavaScript](integration-javascript-server-side.md) | +| You have access to DII on the server side and can do server-side development, or you are using a Private Operator. | Server-side integration | [Server-Side Integration Guide for JavaScript](integration-javascript-server-side.md) | ## Generating the UID2 Token diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 6b619aec1..a98362c04 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -2,10 +2,9 @@ title: UID2 Client-Server Integration Guide for Mobile sidebar_label: Client-Server Integration for Mobile pagination_label: UID2 Client-Server Integration Guide for Mobile -description: Information about setting up a client-server mobile integration. +description: Setting up a mobile integration with token generate on server and refresh on client. hide_table_of_contents: false sidebar_position: 04 -displayed_sidebar: sidebarPublishers --- import Tabs from '@theme/Tabs'; @@ -15,18 +14,18 @@ import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; # UID2 Client-Server Integration Guide for Mobile -(**Android tabs: 9. iOS: 9**) +This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their back-end servers (or server-side) via either a public or Private Operator and then pass the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   +This is called Client-Server Integration because some integration steps are client-side and some are server-side. -This guide is an overview of integration options for publishers who want to perform the following activities using Android or iOS apps: +If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. -- Generate or establish client identity using UID2. -- Retrieve advertising tokens on Android or iOS devices for bid stream use. +This page provides a high-level overview of integration steps and links to additional documentation. -This page is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their back-end servers (or server-side) via either a public or Private Operator and then pass the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   - -This is called Client-Server Integration because it requires critical integration steps in both client and server side. - -If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. - -This page provides a high-level overview of integration steps and links to additional documentation. - ## Overview UID2 provides mobile SDKs for Android and iOS. Each SDK has the following features: @@ -57,61 +48,50 @@ UID2 provides mobile SDKs for Android and iOS. Each SDK has the following featur You'll need to complete the following steps: -1. [Complete UID2 account setup](#complete-uid2-account-setup). +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). 1. [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server). 1. [Add the UID2 mobile SDK into your mobile app](#add-uid2-mobile-sdk-into-your-mobile-app). 1. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). 1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). 1. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). -## Complete UID2 Account Setup - -Complete the UID2 account setup by following the steps described in the Account Setup page. - -When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see API Key and Client Secret. - -## Client-Server Mobile Integration Data Flow Overview - -This diagram presents the data flow this Client-Server Mobile Integration requires to be implemented by the mobile app publishers. It is demonstrating using UID2 SDK for Android in the client-side mobile app and UID2 SDK for Java on the server side. - -TODO: Add Rita’s latest diagram from here - - -## Implement Server-Side Token Generation On Your Back-End Server +## Complete the UID2 Account Setup -The first step of UID2 integration is to be able to generate UID2 token on your back-end server to then pass it into your mobile apps for passing the token into the RTB bid stream. +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). -There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the table below: +(**GWH__SW do we not need them to provide the values listed in the client-side doc: Android Application ID etc? Line 181. Prob not as it's not client-side, like the domains list? If so... do I need to update the Account Setup page to list those credentials where we currently have Domains List? Amd what about the UID2 Portal??**) -Integration Solution  +When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). -Generate Token  - -Refresh Token  - -UID2 SDK for Java  - -✅  +## Client-Server Mobile Integration Data Flow Overview -✅  +The following diagram shows the data flow that the publisher must implement for UID2 client-server mobile integration. -UID2 SDK for Python  +This example uses the UID2 SDK for Android in the client-side mobile app and the UID2 SDK for Java on the server side. -✅  +**TODO: Add Rita’s latest diagram from here** (**GWH_ https://thetradedesk.slack.com/archives/C04TA13AQKF/p1715204733836019 to Rita**) -✅  +![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) -Direct Integration (API endpoints with custom code)  + -✅  +## Implement Server-Side Token Generation On Your Back-End Server -✅  +The first step of UID2 integration is to be able to generate the UID2 token on your back-end server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. +There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the following table. +| Integration Solution  | Generate Token | Refresh Token | +| :--- | :--- | :--- | +| UID2 SDK for Java | ✅ | ✅ | +| UID2 SDK for Python | ✅ | ✅ | +| Direct integration (API endpoints with custom code) | ✅ | ✅ | -Regardless from the integration option, you will need to implement one of the following: +(**GWH__SW just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) +Whatever integration option you choose, you'll need to implement one of the following: +**Gen uptohere end Wed 5/8/24** Call the POST /token/generate endpoint. diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 291972f60..ba51381a9 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -2,10 +2,9 @@ title: UID2 Client-Side Integration Guide for Mobile sidebar_label: Client-Side Integration for Mobile pagination_label: UID2 Client-Side Integration Guide for Mobile -description: Information about setting up a client-side mobile integration. +description: Setting up a mobile integration with token generate and refresh both on the client side. hide_table_of_contents: false sidebar_position: 04 -displayed_sidebar: sidebarPublishers --- import Tabs from '@theme/Tabs'; @@ -15,8 +14,6 @@ import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; # UID2 Client-Side Integration Guide for Mobile -(**GWH__SW: audience? Is this only for publishers, or possibly advertisers also? (advertisers with apps?) 25 Android tabs 25 iOS tabs. End tabs 25. 48 tick sets 2 missing**) - This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). @@ -727,7 +724,7 @@ UID2Settings.shared.isLoggingEnabled = true ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration -If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Server-Side Integration Guide for Mobile](integration-mobile-server-side.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: +If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: - [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) - [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md index 417ffe689..b2573eb2d 100644 --- a/docs/guides/integration-mobile-overview.md +++ b/docs/guides/integration-mobile-overview.md @@ -2,7 +2,7 @@ title: UID2 Mobile Integration Overview for Android and iOS sidebar_label: Integration Overview for Mobile pagination_label: Mobile Integration Overview for Android and iOS -description: Overview of options for mobile integration as part of your UID2 implementation. +description: Overview of options for UID2 mobile integration. hide_table_of_contents: false sidebar_position: 04 displayed_sidebar: sidebarPublishers @@ -39,13 +39,13 @@ The options for integrating with UID2 using the UID2 mobile SDKs are summarized | Scenario | Option | Integration Guide | | :--- | :--- | :--- | | You have access to DII on the client side/within the mobile app, and want to keep changes within your app only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | -| You have access to DII on the server side only and can do the necessary development to generate UID2 tokens server-side, or you are using a [Private Operator](../ref-info/glossary-uid.md#gl-private-operator). | Client-Server Integration | [UID2 Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) | +| You have access to DII on the server side only and can do the necessary development to generate UID2 tokens server-side, or you are using a Private Operator. | Client-Server Integration | [UID2 Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) | ## Integration Overview: High-Level Steps At a high level, to integrate your mobile app with UID2 using the UID2 mobile SDKs, you' wi'll need to complete the following steps: -1. Complete UID2 account setup. +1. Complete the UID2 account setup. 1. Client-Server Integration Only: Integrate server-side token generation on your back-end server. @@ -53,7 +53,7 @@ At a high level, to integrate your mobile app with UID2 using the UID2 mobile SD 1. Configure the SDK. -1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). +1. Check that the token was successfully generated and then pass it for bid stream use. 1. Optionally, configure the UID2 GMA/IMA plugins for integration with the Google GMA/IMA SDKs. diff --git a/docs/guides/publisher-client-side.md b/docs/guides/publisher-client-side.md index e8b29990a..0c77fba76 100644 --- a/docs/guides/publisher-client-side.md +++ b/docs/guides/publisher-client-side.md @@ -16,7 +16,7 @@ import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; This guide is for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) using only JavaScript client-side changes on their website with minimum effort. -This guide does not apply to publishers who want to use a [private operator](../ref-info/glossary-uid.md#gl-private-operator), or who want to generate tokens server-side. Those publishers should follow the [Server-Side Integration Guide for JavaScript](integration-javascript-server-side.md). +This guide does not apply to publishers who want to use a private operator, or who want to generate tokens server-side. Those publishers should follow the [Server-Side Integration Guide for JavaScript](integration-javascript-server-side.md). It is also applicable to anyone who wants to share UID2 tokens in pixels, such as tracking pixels. diff --git a/docs/guides/summary-guides.md b/docs/guides/summary-guides.md index 694cdb4bb..599d13f9f 100644 --- a/docs/guides/summary-guides.md +++ b/docs/guides/summary-guides.md @@ -35,7 +35,7 @@ Publisher integrations fall into the following main categories: The following resources are available for publisher web integrations. :::tip -For a detailed summary of web integration options, see [Web Integration Overview](../guides/integration-options-publisher-web.md). +For a detailed summary of web integration options, see [Web Integration Overview](integration-options-publisher-web.md). ::: | Integration Guide | Content Description | @@ -53,10 +53,11 @@ For a detailed summary of web integration options, see [Web Integration Overview The following resources are available for publishers integrating with Android or iOS devices. -| Integration Guide | Content Description | -| :--- | :--- | -| [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) |An SDK that facilitates the process of establishing client identity using UID2 and retrieving UID2 tokens for publishers that need to support Android apps. | -| [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) | An SDK that facilitates the process of establishing client identity using UID2 and retrieving UID2 tokens for publishers that need to support iOS apps. | +| Integration Type| Documentation | Content Description | +| :--- | :--- | :--- | +| Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | +| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the tokens to a mobile app for passing into the bid stream.
| ### Prebid Integrations @@ -66,7 +67,7 @@ The following resources are available for publishers integrating with Prebid. | :--- | :--- | | [UID2 Integration Overview for Prebid.js](integration-prebid.md) | An overview of options for publishers who want to integrate with UID2 and generate UID2 tokens to be passed by Prebid.js in the RTB bid stream. | | [UID2 Client-Side Integration Guide for Prebid.js](integration-prebid-client-side.md) | An integration guide for publishers who want to integrate with UID2 and want Prebid.js to manage token generation and automatic token refresh as well as passing the tokens into the RTB bid stream. This guide is for publishers who want to request UID2 tokens client-side, which is the easiest implementation approach. | -| [UID2 Server-Side Integration Guide for Prebid.js](../guides/integration-prebid-server-side.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. This guide is for publishers who are using a private operator or who want to generate tokens server-side. | +| [UID2 Server-Side Integration Guide for Prebid.js](integration-prebid-server-side.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. This guide is for publishers who are using a private operator or who want to generate tokens server-side. | ### Google Ad Manager Integrations diff --git a/docs/overviews/overview-publishers.md b/docs/overviews/overview-publishers.md index 92e25ce7e..fad41eec7 100644 --- a/docs/overviews/overview-publishers.md +++ b/docs/overviews/overview-publishers.md @@ -109,8 +109,9 @@ The following resources are available for publisher integrations supporting Andr | Integration Type| Documentation | Content Description | | :--- | :--- | :--- | -| Android | [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) | Android SDK reference for publishers who want to generate or establish client identity using UID2 and retrieve advertising tokens on Android devices. (**GWH__ uptohere this is SW wording need to clarify based on meeting 5/6**) | -| iOS | [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) | iOS SDK reference is for publishers who want to generate or establish client identity using UID2 and retrieve advertising tokens on iOS devices. | +| Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](../guides/integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | +| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the tokens to a mobile app for passing into the bid stream.
| ### Prebid Integrations From 5f8e968712e33d0dd258b6d7423bb47331b1e229 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Thu, 9 May 2024 14:08:06 -0400 Subject: [PATCH 08/47] additional mods --- .../integration-mobile-client-server.md | 42 +- docs/guides/integration-mobile-client-side.md | 44 +- docs/guides/integration-mobile-overview.md | 7 +- docs/guides/summary-guides.md | 2 +- docs/overviews/overview-publishers.md | 2 +- docs/ref-info/glossary-uid.md | 2 +- .../integration-mobile-client-server.png | Bin 0 -> 421719 bytes .../integration-mobile-client-server.md | 436 ++++++++++ .../guides/integration-mobile-client-side.md | 772 ++++++++++++++++++ .../guides/integration-mobile-overview.md | 63 ++ 10 files changed, 1320 insertions(+), 50 deletions(-) create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/guides/images/integration-mobile-client-server.png create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index a98362c04..05aefb99d 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -41,19 +41,19 @@ This page provides a high-level overview of integration steps and links to addit ## Overview -UID2 provides mobile SDKs for Android and iOS. Each SDK has the following features: +UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: -- Takes in a UID2 Identity (including a UID2 token) and persists it in local file storage. -- Automatically refreshes UID2 tokens. (**GWH__SW: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) +- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. +- Automatically refreshes UID2 tokens. (**GWH__SW_N01: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) You'll need to complete the following steps: 1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). -1. [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server). -1. [Add the UID2 mobile SDK into your mobile app](#add-uid2-mobile-sdk-into-your-mobile-app). -1. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). -1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). -1. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). +2. [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server). +3. [Add the UID2 mobile SDK into your mobile app](#add-uid2-mobile-sdk-into-your-mobile-app). +4. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). +5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). +6. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). ## Complete the UID2 Account Setup @@ -67,9 +67,9 @@ When account setup is complete, you'll receive your unique API key and client se The following diagram shows the data flow that the publisher must implement for UID2 client-server mobile integration. -This example uses the UID2 SDK for Android in the client-side mobile app and the UID2 SDK for Java on the server side. +This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. -**TODO: Add Rita’s latest diagram from here** (**GWH_ https://thetradedesk.slack.com/archives/C04TA13AQKF/p1715204733836019 to Rita**) +**GWH__SWN__N03: do we need to do anything re the diagram? Fix TTD colors at least, probably?**) ![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) @@ -79,27 +79,31 @@ This example uses the UID2 SDK for Android in the client-side mobile app and the The first step of UID2 integration is to be able to generate the UID2 token on your back-end server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. -There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the following table. +There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII) (email address or phone number), as summarized in the following table. | Integration Solution  | Generate Token | Refresh Token | | :--- | :--- | :--- | -| UID2 SDK for Java | ✅ | ✅ | -| UID2 SDK for Python | ✅ | ✅ | -| Direct integration (API endpoints with custom code) | ✅ | ✅ | +| [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) | ✅ | ✅ | +| [UID2 SDK for Python](../sdks/uid2-sdk-ref-python.md | ✅ | ✅ | +| [Direct integration (API endpoints with custom code)](../guides/custom-publisher-integration.md) | ✅ | ✅ | -(**GWH__SW just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) +(**GWH__SW (missed this one in last meeting) just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) + +(**GWH__SW_N04 not sure if the doc is the correct target for the third item. Is it?**) Whatever integration option you choose, you'll need to implement one of the following: **Gen uptohere end Wed 5/8/24** -Call the POST /token/generate endpoint. +Call the [POST /token/generate](../endpoints/post-token-generate.md) endpoint. + +The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). -The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response, see an example here +Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. -Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Basic Usage of the UID2 SDK for Java or UID2 SDK for Python for instructions +For instructions, see [UID2 SDK for Java, Publisher Basic Usage](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Publisher Basic Usage](../sdks/uid2-sdk-ref-python.md#basic-usage). -The Identity output you need for the rest of this guide is the output of the following two methods: +The `Identity` response you need for the rest of this guide is the output of the following two methods: diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index ba51381a9..32c80845a 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -20,11 +20,13 @@ This guide does not apply to publishers who want to use a Private Operator, or w The page provides a high-level overview, integration steps, and links to additional documentation. -UID2 provides a mobile SDK for Android and iOS with the following features: +UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: -- UID2 token generation -- Automatic refreshing of UID2 tokens -- Automatic storage of UID2 tokens +- Generates UID2 tokens. +- Automatically refreshes UID2 tokens. +- Manages automatic storage of UID2 tokens. + +(**GWH__SW_N02: Should the list of what the SDKs do be identical for client-side and client-server? They are not currently.**) To integrate with UID2 client-side, you'll need to complete the following steps: @@ -61,7 +63,7 @@ To follow this client-side integration guide, it requires v1.0.0 or higher of UI For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. -Follow the instructions for the operating system you're using: Android or iOS. (**GWH__SW is it correct to call these operating systems? Or...?**) +Follow the applicable instructions, for Android or iOS: @@ -69,7 +71,7 @@ Follow the instructions for the operating system you're using: Android or iOS. ( 1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). 1. In Android Studio, open the directory that you checked out. 1. Run the **dev-app** app. -1. When you've started the app, make sure the **Client Side** checkbox is checked. +1. When you've started the app, make sure that the **Client Side** checkbox is checked. 1. Enter an email or phone number. @@ -82,13 +84,13 @@ Follow the instructions for the operating system you're using: Android or iOS. ( Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj ``` 1. Run the **UID2SDKDevelopmentApp** app scheme. -1. When you've started the app, make sure the **Client Side** checkbox is checked. +1. When you've started the app, make sure that the **Client Side** checkbox is checked. 1. Enter an email or phone number. -Behind the scenes, the sample app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity and resulting UID2 token for the email/phone input: (**GWH__SW I need to understand the exact difference between an identity and the token. And, should identity be capitalized? Not sure why. "sends a request to the UID2 service to return an identity including UID2 token" maybe?**) +Behind the scenes, the sample app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity (a UID2 token and associated values) for the email/phone input: @@ -130,7 +132,7 @@ UID2Manager.shared.getAdvertisingToken() This function call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). -(**GWH__SW we called it a method call line 113 (discussed in earlier meeting), then a function call line 132. Which is best?**) +(**GWH__SW04 we called it a method call line 113 (discussed in earlier meeting), then a function call line 132. Which is best? MAKE METHOD CALL THROUGHOUT**) ### Testing With Your Own Configuration @@ -153,7 +155,7 @@ RootViewModel -To test, you can connect to the UID2 integration environment as specified in the following Android function call (**GWH_SW you said this but also said Android object. Preference?**)/iOS file: +To test, you can connect to the UID2 integration environment as specified in the following Android method call/iOS file: @@ -176,7 +178,7 @@ If necessary, you can also change the default Subscription ID and public key to ## Complete the UID2 Account Setup -To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - Android Application ID - iOS App Bundle ID @@ -186,13 +188,11 @@ When account setup is complete, you'll receive a [Subscription ID and public key ## Add the UID2 Mobile SDK to Your Mobile App -to add the mobile SDK to your app, follow the applicable documentation: +To add the mobile SDK to your app, follow the applicable documentation: - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) - [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) -(**GWH__SW my earlier question: not sure what it means "Follow the instructions on a draft version of a new UID2 SDK for Android reference guide" please clarify. Still not sure if I've linked to the correct guides but I hope so please verify.**) - At this point, you are ready to start generating UID2 tokens using the SDK. ### Using the UID2 Integration Environment @@ -268,7 +268,7 @@ UID2 provides the publisher with the following values, which are needed for gene You'll have one set of these values for your testing environment, and a separate set for your production environment. -To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number), into the following method call: +To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information (DII) (email address or phone number), into the following method call: @@ -294,7 +294,7 @@ Once it's configured, the UID2 mobile SDK does the following: - Automatically refreshes the token as required while your app is open :::tip -You can pass the user’s [DII](../ref-info/glossary-uid.md#gl-dii) to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +You can pass the user’s DII to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). ::: ## Format Examples for DII @@ -548,7 +548,7 @@ For more information, see [Best Practices on When to Pass DII to the UID2 Mobile ## Best Practices on When to Pass DII to the UID2 Mobile SDK -The first time the app is opened with no identity, you'll need to make the following function call, with the DII, to start the token generation: (**GWH_SW why only the first time?**) +The first time the app is opened, no UID2 identity exists. You'll need to make the following function call, with the DII, to start the token generation: @@ -569,7 +569,7 @@ UID2Manager.shared.generateIdentity() When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: (**GWH_SW again... existing copy said function. We are going to method throughout?**) (**GWH_SW also, not sure we need to repeat the same call again, two next to each other?**) +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: (**GWH_SW08 again... existing copy said function. We are going to method throughout?**) (**GWH_SW09 also, not sure we need to repeat the same call again, two next to each other? SUNNY SAY YES TAKE THIS ONE OUT**) @@ -588,7 +588,7 @@ UID2Manager.shared.generateIdentity() -The only exception to this is if the following function returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it. (**GWH_SW should UID2Manager.shared.identityStatus (Android) below have ()?**) +The only exception to this is if the following Android function/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it. @@ -628,9 +628,9 @@ UID2Manager.shared.getAdvertisingToken() If it returns `null`, you'll need to call the following function and pass DII into it again. -(**GWH__SW instead of the above, the below is what I'd like to say, and lose this extra set of tabs. There's too much repetition I think:**) +(**GWH__SW11 instead of the above, the below is what I'd like to say, and lose this extra set of tabs. There's too much repetition I think:**) -**If `getAdvertisingToken()` returns `null`, you'll need to generate a new token: pass the DII into a call to the `generateIdentity()` method again.** +**If `getAdvertisingToken()` returns `null`, you'll need to generate a new token: pass the DII into a call to the `generateIdentity()` method again. SUNNY SAYS YES FINE** @@ -731,7 +731,7 @@ If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming y - [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) - [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) -Note: You do not need to explicitly retrieve the advertising tokens using (**GWH__SW not sure how to put this... let's discuss.**) +Note: You do not need to explicitly retrieve the advertising tokens using (**GWH__SW12 not sure how to put this... let's discuss. THE FOLLOWING METHOD CALL**) diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md index b2573eb2d..990514b85 100644 --- a/docs/guides/integration-mobile-overview.md +++ b/docs/guides/integration-mobile-overview.md @@ -38,7 +38,7 @@ The options for integrating with UID2 using the UID2 mobile SDKs are summarized | Scenario | Option | Integration Guide | | :--- | :--- | :--- | -| You have access to DII on the client side/within the mobile app, and want to keep changes within your app only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | +| You have access to DII (email address or phone number) on the client side/within the mobile app, and want to keep changes within your app only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | | You have access to DII on the server side only and can do the necessary development to generate UID2 tokens server-side, or you are using a Private Operator. | Client-Server Integration | [UID2 Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) | ## Integration Overview: High-Level Steps @@ -61,8 +61,3 @@ For details, refer to one of the following guides: - [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) - [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) - -(**GWH__SW should we also include these guides?**) - -- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) -- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) diff --git a/docs/guides/summary-guides.md b/docs/guides/summary-guides.md index 599d13f9f..c90efdf5a 100644 --- a/docs/guides/summary-guides.md +++ b/docs/guides/summary-guides.md @@ -57,7 +57,7 @@ The following resources are available for publishers integrating with Android or | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | | Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the tokens to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations diff --git a/docs/overviews/overview-publishers.md b/docs/overviews/overview-publishers.md index fad41eec7..8b0c1b33c 100644 --- a/docs/overviews/overview-publishers.md +++ b/docs/overviews/overview-publishers.md @@ -111,7 +111,7 @@ The following resources are available for publisher integrations supporting Andr | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](../guides/integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | | Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the tokens to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations diff --git a/docs/ref-info/glossary-uid.md b/docs/ref-info/glossary-uid.md index 6d7fefe55..22cc442e8 100644 --- a/docs/ref-info/glossary-uid.md +++ b/docs/ref-info/glossary-uid.md @@ -114,7 +114,7 @@ import Link from '@docusaurus/Link';
App name
-
The Android application ID, the iOS app store ID, or the iOS bundle identifier.
+
In the context of mobile implementation, app name is a group term for the Android application ID, iOS app store ID, or iOS bundle identifier.
Authorization header
The Authorization header is a way to authenticate the client to the UID2 service.
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/images/integration-mobile-client-server.png b/i18n/ja/docusaurus-plugin-content-docs/current/guides/images/integration-mobile-client-server.png new file mode 100644 index 0000000000000000000000000000000000000000..360191bdd2539c6b11c5372f9130098d02862a8c GIT binary patch literal 421719 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

fa9jn525Zo8TIika>brgK@1pg2}4ogM#Jg; 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

`NGr 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

-Kl!_N`3vKxQ8bXKZC|a{5i92) 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

tiGyThk6x?h2p}GTYUm=2|p|=%^LU`58fu& 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± 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 literal 0 HcmV?d00001 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md new file mode 100644 index 000000000..a98362c04 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -0,0 +1,436 @@ +--- +title: UID2 Client-Server Integration Guide for Mobile +sidebar_label: Client-Server Integration for Mobile +pagination_label: UID2 Client-Server Integration Guide for Mobile +description: Setting up a mobile integration with token generate on server and refresh on client. +hide_table_of_contents: false +sidebar_position: 04 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Link from '@docusaurus/Link'; +import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; + +# UID2 Client-Server Integration Guide for Mobile + +This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their back-end servers (or server-side) via either a public or Private Operator and then pass the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   + +This is called Client-Server Integration because some integration steps are client-side and some are server-side. + +If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. + +This page provides a high-level overview of integration steps and links to additional documentation. + + + +## Overview + +UID2 provides mobile SDKs for Android and iOS. Each SDK has the following features: + +- Takes in a UID2 Identity (including a UID2 token) and persists it in local file storage. +- Automatically refreshes UID2 tokens. (**GWH__SW: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) + +You'll need to complete the following steps: + +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). +1. [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server). +1. [Add the UID2 mobile SDK into your mobile app](#add-uid2-mobile-sdk-into-your-mobile-app). +1. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). +1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). +1. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). + +## Complete the UID2 Account Setup + +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). + +(**GWH__SW do we not need them to provide the values listed in the client-side doc: Android Application ID etc? Line 181. Prob not as it's not client-side, like the domains list? If so... do I need to update the Account Setup page to list those credentials where we currently have Domains List? Amd what about the UID2 Portal??**) + +When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). + +## Client-Server Mobile Integration Data Flow Overview + +The following diagram shows the data flow that the publisher must implement for UID2 client-server mobile integration. + +This example uses the UID2 SDK for Android in the client-side mobile app and the UID2 SDK for Java on the server side. + +**TODO: Add Rita’s latest diagram from here** (**GWH_ https://thetradedesk.slack.com/archives/C04TA13AQKF/p1715204733836019 to Rita**) + +![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) + + + +## Implement Server-Side Token Generation On Your Back-End Server + +The first step of UID2 integration is to be able to generate the UID2 token on your back-end server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. + +There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the following table. + +| Integration Solution  | Generate Token | Refresh Token | +| :--- | :--- | :--- | +| UID2 SDK for Java | ✅ | ✅ | +| UID2 SDK for Python | ✅ | ✅ | +| Direct integration (API endpoints with custom code) | ✅ | ✅ | + +(**GWH__SW just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) + +Whatever integration option you choose, you'll need to implement one of the following: + +**Gen uptohere end Wed 5/8/24** + +Call the POST /token/generate endpoint. + +The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response, see an example here + +Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Basic Usage of the UID2 SDK for Java or UID2 SDK for Python for instructions + +The Identity output you need for the rest of this guide is the output of the following two methods: + + + +``` +token_generate_response.get_identity_json_string() +``` + + + + +```java +For Java: tokenGenerateResponse.getIdentityJsonString() +``` + + + + +:::important +The endpoint and SDK API returns opt-out status if the DII (Directly Identifiable Information) you are generating the token for has opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  +::: + +You will need to pass this into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). + +:::note +For security reasons, API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. +::: + +## Server-Side Token Refresh + +Token refresh is automatically enabled inside the UID2 mobile SDKs; you don't need to manage it explicitly on the server side. + +You might decide to do server-side token refresh if you want to keep your changes in the mobile apps as simple as possible. + +However, if you decide you want to do it on the server side and not client/mobile side, you can do so using one of the following: + +Call the POST /token/refresh endpoint. + +Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Server-Only Integration section of the UID2 SDK for Java or UID2 SDK for Python for instructions + + and pass the newly refreshed Identity to the mobile app by following the rest of this guide below. + +## Add UID2 Mobile SDK into Your Mobile App + +For installation instructions, please see the UID2 SDK for Android Reference Guide and iOS Reference Guide. + +Follow the UID2 SDK documentation to: + +Add the pre-built UID2 SDK for Android libraries into your mobile app here. + +Learn how to instantiate the UID2Manager instance in your Android app here. For iOS, refer to the Usage Guidelines. + +## Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation. + + + + +```js +UID2Manager.init( + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( + url: URL(string: "https://operator-integ.uidapi.com")! +) +``` + + + + +On iOS, you must set `UID2Settings` before you first access `UID2Manager.shared`. Any changes made to settings after the first access are not read. + +:::note +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- You'll have a different set of credentials (Subscription ID and public key) for each environment (integ and prod). Be sure to use the correct credentials for each environment. +::: + +## Optional: Reduce Latency by Setting the API Base URL for the Production Environment + + + +To specify a different UID2 server, you can change it in the init call: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = " https://global.prod.uidapi.com" +) +``` + + + + +```js +UID2Settings.shared.environment = .singapore +// or +UID2Settings.shared.environment = .custom( + url: URL(string: "https://global.prod.uidapi.com")! +) +``` + + + + +## Configure the UID2 Mobile SDK for Your Mobile App + +After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 Identity generated from your back-end server (see [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server)), and then pass it into the mobile app using the `setIdentity` method: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.setIdentity() +``` + + + + +## Token Storage + +After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. + +:::warning +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +::: + + +## Pass Generated Token for Bid Stream Use + +(**GWH__SW we have to make this (heading) shorter. I wonder can we break it into two steps? Just an idea.**) + +In your mobile app, you can call + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +And if there was a successful identity added into the UID2Manager, it should return a string like: + +``` +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +``` + + +You can use this identity to pass downstream for sending in RTB bid stream. + +If + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +returns null, there was not an identity or valid token generated for several reasons such as: + +The identity is invalid + +The advertising token inside the UID2 identity has expired and the refresh token expires too so token cannot be refreshed + +In such situation, you will need to follow Implement Server-Side Token Generation on your back-end server section above and generate a new UID2 identity and pass the result into the mobile app’s UID2Manager again. + + + +## Best Practice on When to Pass New UID2 Token to the UID2 SDK + +(**GWH_SW can we make this into a Best Practices section and then just list this one for now? We'll get others I'm sure.**) + +The best way to determine if a new UID2 identity is required by the UID2 SDK again is to always call + + + + +UID2Manager.getInstance().getAdvertisingToken() + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +On startup/resumption of the app, if it returns null, it is time to generate new identity on the back-end server by following the Implement Server-Side Token Generation on your back-end server section above and pass it into the mobile app’s UID2Manager instance again + +## Enable Logging (For Android Only) + +The UID2 SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging during UID2Manager initialization: + + + + +```js +UID2Manager.init( + context = this, + isLoggingEnabled = true +) +``` + + + + +```js +UID2Settings.shared.isLoggingEnabled = true +``` + +On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. + + + + +## Enable Automatic Token Refresh in Mobile App/Client Side + +The UID2Manager will perform automatic token refresh, after a valid UID2 identity has been passed into it. If for any reason token refresh should be disabled, this can be done by: + + + + +**Android Java**: + +```java +UID2Manager.getInstance()setAutomaticRefreshEnabled(false) +``` + +**Android Kotlin**: + +```kotlin +UID2Manager.getInstance().automaticRefreshEnabled = false +``` + + + + +```js +UID2Manager.shared.automaticRefreshEnabled = false +``` + + + + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + +If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile app. Refer to the Plugin guides on how to install it into your apps: + +- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) + +Note: You do not need to explicitly retrieve the advertising tokens using + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. + +You just need to ensure calling + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +return a non-null string object. Then Google GMA/IMA SDKs should be able to retrieve it via the UID2 GMA/IMA plugins. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md new file mode 100644 index 000000000..114518608 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -0,0 +1,772 @@ +--- +title: UID2 Client-Side Integration Guide for Mobile +sidebar_label: Client-Side Integration for Mobile +pagination_label: UID2 Client-Side Integration Guide for Mobile +description: Setting up a mobile integration with token generate and refresh both on the client side. +hide_table_of_contents: false +sidebar_position: 04 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Link from '@docusaurus/Link'; +import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; + +# UID2 Client-Side Integration Guide for Mobile + +This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. + +This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). + +The page provides a high-level overview, integration steps, and links to additional documentation. + +UID2 provides a mobile SDK for Android and iOS with the following features: + +- UID2 token generation +- Automatic refreshing of UID2 tokens +- Automatic storage of UID2 tokens + +To integrate with UID2 client-side, you'll need to complete the following steps: + +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). + +1. Add a UID2 mobile SDK into your mobile app. + +1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + +1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). + +1. Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration. + + + +## UID2 Mobile SDK Version + +To follow this client-side integration guide, it requires v1.0.0 or higher of UID2 SDK for Android and iOS. Follow the Add UID2 Mobile SDK into your mobile App section below to install these SDK versions in your apps. + +## Client-Side Integration Example + +For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. + +Follow the applicable instructions: + + + + +1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). +1. In Android Studio, open the directory that you checked out. +1. Run the **dev-app** app. +1. When you've started the app, make sure the **Client Side** checkbox is checked. +1. Enter an email or phone number. + + + + +1. Check out the [main branch of the UID2 SDK For iOS source code repository on GitHub](https://github.com/IABTechLab/uid2-ios-sdk/tree/main). +1. In Xcode, open this project file: + + ```js + Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj + ``` +1. Run the **UID2SDKDevelopmentApp** app scheme. +1. When you've started the app, make sure the **Client Side** checkbox is checked. +1. Enter an email or phone number. + + + + +Behind the scenes, the sample app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity and resulting UID2 token for the email/phone input: (**GWH__SW03 I need to understand the exact difference between an identity and the token. And, should identity be capitalized? Not sure why. "sends a request to the UID2 service to return an identity including UID2 token" maybe? LINK TO IDENTITY DEF IN GLOSSARY AND KEEP IT SIMPLE MAYBE ALSO USE SIMPLE DEF INLINE. CAPITALIZE... NOT SURE.**) + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +When the API call is successful, the app displays the resulting identity and persists it inside the `UID2Manager` class. + +The identity contains the generated UID2 advertising token value which you can retrieve using the following method call: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +This function call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). + +(**GWH__SW04 we called it a method call line 113 (discussed in earlier meeting), then a function call line 132. Which is best? MAKE METHOD CALL THROUGHOUT**) + +### Testing With Your Own Configuration + +By default, the development app uses default values for Subscription ID and public key, which are stored in the following object: + + + + +```js +com.uid2.dev.ui.MainScreenViewModel.Companion +``` + + + + +```js +RootViewModel +``` + + + + +To test, you can connect to the UID2 integration environment as specified in the following Android method call/iOS file: + + + + +```js +com.uid2.UID2Manager.Companion#init +``` + + + + +```js +see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist +``` + + + + +If necessary, you can also change the default Subscription ID and public key to ones assigned to you, and connect to the UID2 Production environment. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). + +## Complete the UID2 Account Setup + +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: + +- Android Application ID +- iOS App Bundle ID +- App Store ID + +When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + +## Add the UID2 Mobile SDK to Your Mobile App + +To add the mobile SDK to your app, follow the applicable documentation: + +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) + +At this point, you are ready to start generating UID2 tokens using the SDK. + +### Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the integration environment instead, provide the following URL in your call to initialize `UID2Manager`: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://operator-integ.uidapi.com")! +) +``` + + + + +:::note +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. +::: + +### Optional: Reduce Latency by Setting the API Base URL for the Production Environment + + + +To specify a different UID2 server, you can change it in the `init` call, as shown in the following examples. + + + + +```js +UID2Manager.init( + context = this, + serverUrl = " https://global.prod.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://global.prod.uidapi.com")! +) +// or use a named environment +UID2Settings.shared.environment = .sydney +``` + + + + +## Configure the UID2 Mobile SDK + +UID2 provides the publisher with the following values, which are needed for generating the UID2 token on the client side: + +- Subscription ID +- Public key + +You'll have one set of these values for your testing environment, and a separate set for your production environment. + +To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number), into the following method call: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +Once it's configured, the UID2 mobile SDK does the following: + +- Generates a UID2 token for the user +- Stores the token locally on the user’s device +- Automatically refreshes the token as required while your app is open + +:::tip +You can pass the user’s [DII](../ref-info/glossary-uid.md#gl-dii) to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +::: + +## Format Examples for DII + +The SDK encrypts the hashed DII before sending it to the UID2 service. + +You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. + +The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. + +- Configure for Email Address +- Configure for Hashed Email Address +- Configure for Phone Number +- Configure for Hashed Phone Number + +If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. + +### Email, Unhashed + +The following example configures the UID2 mobile SDK with an email address. + + + + +```js +manager.generateIdentity( + IdentityRequest.Email("test@example.com"), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else { + // email is invalid and cannot be normalized, handle error +} +try await UID2Manager.shared.generateIdentity( + .email(normalizedEmail), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- No normalization or hashing is required by the publisher +- The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. + +### Email, Normalized and Hashed + +The following example configures the UID2 SDK with a hashed email address. + + + + +```js +manager.generateIdentity( + IdentityRequest.EmailHash( + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + ), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +try await UID2Manager.shared.generateIdentity( + .emailHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + +### Phone Number, Unhashed + +The following example configures the UID2 mobile SDK with a phone number. + + + + +```js +manager.generateIdentity( + IdentityRequest.Phone(“+1111111111”), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { + // phone number is invalid and cannot be normalized, handle error +} +try await UID2Manager.shared.generateIdentity( + .phone(normalizedPhone), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). +- The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. + +### Phone Number, Normalized and Hashed + +The following example configures the UID2 mobile SDK with a hashed phone number. + + + + +```js +manager.generateIdentity( + IdentityRequest.PhoneHash( + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + ), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +try await UID2Manager.shared.generateIdentity( + .phoneHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + +## Token Storage and Refresh + +After a call to the applicable method listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. + +:::warning +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +::: + +## Pass Generated Token for Bid Stream Use + +In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity, which you can then use in the bid stream. + +First, the method call to generate the identity: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +Then, the method call to get the advertising token: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If successful, this method call returns a non-null string object such as the following: + +```js +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +``` + +You can use this identity to pass downstream for sending in the RTB bid stream. + +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. + +Some possible reasons for this, and some things you could do to troubleshoot, are as follows: + +- Check to see whether there are any errors from the `generateIdentity()` call. +- Enable logging to get more information: see [Enable Logging](#enable-logging) +- It's possible that the identity that was generated has expired. If this occurs, you'll need to call the `generateIdentity()` method again: see [Client-Side Integration Example](#client-side-integration-example). + +For more information, see [Best Practices on When to Pass DII to the UID2 Mobile SDK](#best-practices-on-when-to-pass-dii-to-the-uid2-mobile-sdk). + +## Best Practices on When to Pass DII to the UID2 Mobile SDK + +The first time the app is opened, no UID2 identity exists. You'll need to make the following function call, with the DII, to start the token generation: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. + +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: (**GWH_SW08 again... existing copy said function. We are going to method throughout?**) (**GWH_SW09 also, not sure we need to repeat the same call again, two next to each other? SUNNY SAY YES TAKE THIS ONE OUT**) + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +The only exception to this is if the following Android function/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it. + + + + +```js +UID2Manager.getInstance().getIdentityStatus() +``` + + + + +```js +UID2Manager.shared.identityStatus +``` + + + + +The best way to determine if DII is required by the UID2 mobile SDKs is to always call the following function when the app starts up or resumes: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If it returns `null`, you'll need to call the following function and pass DII into it again. + +(**GWH__SW11 instead of the above, the below is what I'd like to say, and lose this extra set of tabs. There's too much repetition I think:**) + +**If `getAdvertisingToken()` returns `null`, you'll need to generate a new token: pass the DII into a call to the `generateIdentity()` method again. SUNNY SAYS YES FINE** + + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +## Opt-Out Handling + +(**GWH note: reviewed this doc up to this point. Rest is partially unreviewed (and the below needs fixing).**) + +If the DII provided to the + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +has opted out, this method will return null. Calling: + + + + +```js +UID2Manager.getInstance().getIdentityStatus() +``` + + + + +```js +UID2Manager.shared.identityStatus +``` + + + + +returns OPT_OUT status. + +In this case you should avoid repeatedly making `generateIdentity()` calls again, because if the DII has a status of opted out, the UID2 token is not generated. + +## Enable Logging + +The UID2 mobile SDK can generate logs, which could help debugging any issues during UID2 integration work. To enable logging, do the following: + + + + +```js +// During UID2Manager initialization: +UID2Manager.init( + context = this, + isLoggingEnabled = true +) +``` + + + + +```swift +UID2Settings.shared.isLoggingEnabled = true +// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Changes made to settings after first access are not read. +``` + + + + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + +If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: + +- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) + +Note: You do not need to explicitly retrieve the advertising tokens using (**GWH__SW12 not sure how to put this... let's discuss. THE FOLLOWING METHOD CALL**) + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. + +You just need to ensure calling the following return a non-null string object: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +Then, the Google GMA/IMA plug-ins should be able to retrieve it via the UID2 GMA/IMA plugins. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md new file mode 100644 index 000000000..074cab379 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md @@ -0,0 +1,63 @@ +--- +title: UID2 Mobile Integration Overview for Android and iOS +sidebar_label: Integration Overview for Mobile +pagination_label: Mobile Integration Overview for Android and iOS +description: Overview of options for UID2 mobile integration. +hide_table_of_contents: false +sidebar_position: 04 +displayed_sidebar: sidebarPublishers +--- + +import Link from '@docusaurus/Link'; + +# UID2 Mobile Integration Overview for Android and iOS + +This guide is an overview of integration options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. + +This guide groups those two SDKs as UID2 mobile SDKs. + + + +## Introduction + +UID2 provides SDKs for Android/iOS that support the following: + +- Generating the UID2 token +- Refreshing the UID2 token +- Storing the UID2 token + +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (described later in this document). + +## Client-Side or Client-Server Integration + +The options for integrating with UID2 using the UID2 mobile SDKs are summarized in the following table. Choose the option that's best for you. + +| Scenario | Option | Integration Guide | +| :--- | :--- | :--- | +| You have access to DII on the client side/within the mobile app, and want to keep changes within your app only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | +| You have access to DII on the server side only and can do the necessary development to generate UID2 tokens server-side, or you are using a Private Operator. | Client-Server Integration | [UID2 Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) | + +## Integration Overview: High-Level Steps + +At a high level, to integrate your mobile app with UID2 using the UID2 mobile SDKs, you' wi'll need to complete the following steps: + +1. Complete the UID2 account setup. + +1. Client-Server Integration Only: Integrate server-side token generation on your back-end server. + +1. Add the UID2 SDK for Android or iOS into your mobile app. + +1. Configure the SDK. + +1. Check that the token was successfully generated and then pass it for bid stream use. + +1. Optionally, configure the UID2 GMA/IMA plugins for integration with the Google GMA/IMA SDKs. + +For details, refer to one of the following guides: + +- [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) +- [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) From 470ec20ca1ea62ef71ab16fe09c1c06e80b7d3a8 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Thu, 9 May 2024 18:28:26 -0400 Subject: [PATCH 09/47] updates from meeting with SW 5/8. 22 queries --- .../integration-mobile-client-server.md | 210 ++--- docs/guides/integration-mobile-client-side.md | 126 +-- docs/guides/integration-mobile-overview.md | 2 +- docs/guides/publisher-client-side.md | 4 +- docs/guides/summary-guides.md | 4 +- docs/overviews/overview-publishers.md | 4 +- docs/sdks/uid2-sdk-ref-android.md | 8 +- docs/sdks/uid2-sdk-ref-ios.md | 18 +- docs/snippets/_mobile_docs_plugin_gss.mdx | 31 + .../integration-mobile-client-server.md | 437 +--------- .../guides/integration-mobile-client-side.md | 773 +----------------- .../guides/integration-mobile-overview.md | 2 +- .../current/guides/publisher-client-side.md | 4 +- 13 files changed, 154 insertions(+), 1469 deletions(-) create mode 100644 docs/snippets/_mobile_docs_plugin_gss.mdx diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 05aefb99d..6d586d3ea 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -11,10 +11,11 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Link from '@docusaurus/Link'; import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; +import GMAIMAPlugins4GAM from '/docs/snippets/_mobile_docs_plugin_gss.mdx'; # UID2 Client-Server Integration Guide for Mobile -This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their back-end servers (or server-side) via either a public or Private Operator and then pass the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   +This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens server-side via either a public or Private Operator and then passing the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   This is called Client-Server Integration because some integration steps are client-side and some are server-side. @@ -27,14 +28,14 @@ This page provides a high-level overview of integration steps and links to addit - [Overview](#overview) - [Complete the UID2 Account Setup](#complete-the-uid2-account-setup) - [Client-Server Mobile Integration Data Flow Overview](#client-server-mobile-integration-data-flow-overview) -- [Implement Server-Side Token Generation On Your Back-End Server](#implement-server-side-token-generation-on-your-back-end-server) +- [Implement Server-Side Token Generation](#implement-server-side-token-generation) - [Server-Side Token Refresh](#server-side-token-refresh) -- [Add UID2 Mobile SDK into Your Mobile App](#add-uid2-mobile-sdk-into-your-mobile-app) +- [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app) - [Using the UID2 Integration Environment](#using-the-uid2-integration-environment) - [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment) - [Token Storage](#token-storage) - [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use) -- [Best Practice on When to Pass New UID2 Token to the UID2 SDK](#best-practice-on-when-to-pass-new-uid2-token-to-the-uid2-sdk) +- [Best Practices on When to Pass New UID2 Token to the UID2 SDK](#best-practices-on-when-to-pass-new-uid2-token-to-the-uid2-sdk) - [Enable Logging (For Android Only)](#enable-logging-for-android-only) - [Enable Automatic Token Refresh in Mobile App/Client Side](#enable-automatic-token-refresh-in-mobile-appclient-side) - [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration) --> @@ -44,13 +45,13 @@ This page provides a high-level overview of integration steps and links to addit UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: - Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. -- Automatically refreshes UID2 tokens. (**GWH__SW_N01: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) +- Automatically refreshes UID2 tokens. (**GWH__SW_01: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) You'll need to complete the following steps: 1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). -2. [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server). -3. [Add the UID2 mobile SDK into your mobile app](#add-uid2-mobile-sdk-into-your-mobile-app). +2. [Implement server-side token generatio](#implement-server-side-token-generation). +3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). 4. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). 5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). 6. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). @@ -59,7 +60,7 @@ You'll need to complete the following steps: To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). -(**GWH__SW do we not need them to provide the values listed in the client-side doc: Android Application ID etc? Line 181. Prob not as it's not client-side, like the domains list? If so... do I need to update the Account Setup page to list those credentials where we currently have Domains List? Amd what about the UID2 Portal??**) +(**GWH__SW_02 do we not need them to provide the values listed in the client-side doc: Android Application ID etc? Line 181. Prob not as it's not client-side, like the domains list? If so... do I need to update the Account Setup page to list those credentials where we currently have Domains List? Amd what about the UID2 Portal??**) When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). @@ -69,15 +70,15 @@ The following diagram shows the data flow that the publisher must implement for This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. -**GWH__SWN__N03: do we need to do anything re the diagram? Fix TTD colors at least, probably?**) +**GWH__SW_03: do we need to do anything re the diagram? Fix TTD colors at least, probably?**) ![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) -## Implement Server-Side Token Generation On Your Back-End Server +## Implement Server-Side Token Generation -The first step of UID2 integration is to be able to generate the UID2 token on your back-end server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. +The first step of UID2 integration is to be able to generate the UID2 token on your server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII) (email address or phone number), as summarized in the following table. @@ -87,48 +88,47 @@ There are two ways to generate UID2 tokens on the server side by providing direc | [UID2 SDK for Python](../sdks/uid2-sdk-ref-python.md | ✅ | ✅ | | [Direct integration (API endpoints with custom code)](../guides/custom-publisher-integration.md) | ✅ | ✅ | -(**GWH__SW (missed this one in last meeting) just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) +(**GWH__SW_04 (missed this one in last meeting) just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) -(**GWH__SW_N04 not sure if the doc is the correct target for the third item. Is it?**) +(**GWH__SW_05 it's from your doc but not sure if the doc is the correct target for the third item. Is it?**) Whatever integration option you choose, you'll need to implement one of the following: -**Gen uptohere end Wed 5/8/24** +- Call the [POST /token/generate](../endpoints/post-token-generate.md) endpoint. -Call the [POST /token/generate](../endpoints/post-token-generate.md) endpoint. + The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). -The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). +- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. -Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. + For instructions, see [UID2 SDK for Java, Publisher Basic Usage section](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Publisher Basic Usage section](../sdks/uid2-sdk-ref-python.md#basic-usage). -For instructions, see [UID2 SDK for Java, Publisher Basic Usage](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Publisher Basic Usage](../sdks/uid2-sdk-ref-python.md#basic-usage). + If you're using one of these options, the `Identity` response you need for the rest of this guide is the output of the applicable method, as follows: -The `Identity` response you need for the rest of this guide is the output of the following two methods: + + - - -``` -token_generate_response.get_identity_json_string() -``` + ```java + tokenGenerateResponse.getIdentityJsonString() + ``` - - + + -```java -For Java: tokenGenerateResponse.getIdentityJsonString() -``` + ```py + token_generate_response.get_identity_json_string() + ``` - - + + :::important -The endpoint and SDK API returns opt-out status if the DII (Directly Identifiable Information) you are generating the token for has opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  +The endpoint and SDK API returns opt-out status if the DII you are generating the token for has been opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  ::: -You will need to pass this into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). +You will need to pass this(**GWH__SW_06 pass what, here?**) into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). :::note -For security reasons, API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. +For security reasons, the API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). ::: ## Server-Side Token Refresh @@ -137,27 +137,32 @@ Token refresh is automatically enabled inside the UID2 mobile SDKs; you don't ne You might decide to do server-side token refresh if you want to keep your changes in the mobile apps as simple as possible. -However, if you decide you want to do it on the server side and not client/mobile side, you can do so using one of the following: +However, if you decide you want to manage token refresh on the server side and not the client/mobile side, you can do so using one of the following: -Call the POST /token/refresh endpoint. +- Call the [POST /token/refresh](../endpoints/post-token-refresh.md) endpoint. +- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. -Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Server-Only Integration section of the UID2 SDK for Java or UID2 SDK for Python for instructions + For instructions, see [UID2 SDK for Java, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-java.md#server-only-integration) or [UID2 SDK for Python, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-python.md#server-only-integration). - and pass the newly refreshed Identity to the mobile app by following the rest of this guide below. +Then, pass the newly refreshed `Identity` value to the mobile app by following the rest of this guide. -## Add UID2 Mobile SDK into Your Mobile App +## Add a UID2 Mobile SDK into Your Mobile App -For installation instructions, please see the UID2 SDK for Android Reference Guide and iOS Reference Guide. +For installation instructions, refer to one of the following: -Follow the UID2 SDK documentation to: +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) -Add the pre-built UID2 SDK for Android libraries into your mobile app here. - -Learn how to instantiate the UID2Manager instance in your Android app here. For iOS, refer to the Usage Guidelines. +For example, for Android, follow the UID2 SDK documentation to: +- Add the pre-built UID2 SDK for Android libraries into your mobile app: see [Installation](../sdks/uid2-sdk-ref-android.md#installation). +- Learn how to instantiate the UID2Manager instance in your Android app: see [Android Initialization](../sdks/uid2-sdk-ref-android.md#android-initialization). + here. + + For iOS, refer to the [Usage Guidelines](../sdks/uid2-sdk-ref-ios.md#usage-guidelines). ## Using the UID2 Integration Environment -By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation. +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation: (**GWH__SW_07 should this be initialization?**) @@ -186,14 +191,14 @@ On iOS, you must set `UID2Settings` before you first access `UID2Manager.shared` :::note Bear in mind the following differences between environments: - Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of credentials (Subscription ID and public key) for each environment (integ and prod). Be sure to use the correct credentials for each environment. +- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. ::: ## Optional: Reduce Latency by Setting the API Base URL for the Production Environment -To specify a different UID2 server, you can change it in the init call: +To specify a different UID2 server, you can change it in the `init` call: @@ -221,7 +226,7 @@ UID2Settings.shared.environment = .custom( ## Configure the UID2 Mobile SDK for Your Mobile App -After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 Identity generated from your back-end server (see [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server)), and then pass it into the mobile app using the `setIdentity` method: +After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 identity generated server-side (see [Implement server-side token generation](#implement-server-side-token-generation)), and then pass it into the mobile app using the `setIdentity` method, as shown in the following: @@ -251,9 +256,7 @@ The format of the file stored in the local file storage, or the filename itself, ## Pass Generated Token for Bid Stream Use -(**GWH__SW we have to make this (heading) shorter. I wonder can we break it into two steps? Just an idea.**) - -In your mobile app, you can call +To retrieve the token, in your mobile app, call the following: @@ -272,49 +275,25 @@ UID2Manager.shared.getAdvertisingToken() -And if there was a successful identity added into the UID2Manager, it should return a string like: +If a successful identity was added into the UID2Manager, this method returns a string such as the following: ``` AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== ``` +You can use this identity to pass downstream for sending in the RTB bid stream. -You can use this identity to pass downstream for sending in RTB bid stream. +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. -If +One possible reason for this is that the advertising token inside the UID2 identity has expired, and the refresh token has also expired so the SDK cannot refresh the token. If this happens, you'll need to call the `generateIdentity()` method again: see [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again. - - +(**GWH__SW_08: in the client-side doc we have these other options... are they not valid here? Check to see whether there are errors from the generateIdentity call, enable logging. Just checking. Later note: Logging is below. Should we make them consistent?**) -```js -UID2Manager.getInstance().getAdvertisingToken() -``` +## Best Practices on When to Pass New UID2 Token to the UID2 SDK - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -returns null, there was not an identity or valid token generated for several reasons such as: - -The identity is invalid - -The advertising token inside the UID2 identity has expired and the refresh token expires too so token cannot be refreshed - -In such situation, you will need to follow Implement Server-Side Token Generation on your back-end server section above and generate a new UID2 identity and pass the result into the mobile app’s UID2Manager again. +(**GWH__SW_09 can we make this into a Best Practices section and then just list this one for now? We'll get others I'm sure.**) - - -## Best Practice on When to Pass New UID2 Token to the UID2 SDK - -(**GWH_SW can we make this into a Best Practices section and then just list this one for now? We'll get others I'm sure.**) - -The best way to determine if a new UID2 identity is required by the UID2 SDK again is to always call +The best way to determine if a new UID2 identity is required by the UID2 SDK again is to call the `getAdvertisingToken()` method in all cases: @@ -331,16 +310,19 @@ UID2Manager.shared.getAdvertisingToken() -On startup/resumption of the app, if it returns null, it is time to generate new identity on the back-end server by following the Implement Server-Side Token Generation on your back-end server section above and pass it into the mobile app’s UID2Manager instance again +On startup/resumption of the app, if `getAdvertisingToken()` returns `null`, it is time to generate new identity on the server by following the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again. + +## Enable Logging (Android Only) -## Enable Logging (For Android Only) +(**GWH__SW_10: The client-side doc has this section for both Android and iOS. Is it correct that they are inconsistent? actually we have an iOS example but it's labelled Android only. Confused. Code is (was) inconsistent also. I basically copied from the client-side section. Please verify. Then I will make it a shared piece.**) -The UID2 SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging during UID2Manager initialization: +The UID2 SDK can generate logs, which could help in debugging any issues during UID2 integration work. To enable logging, do the following: ```js +// During UID2Manager initialization: UID2Manager.init( context = this, isLoggingEnabled = true @@ -350,18 +332,17 @@ UID2Manager.init( -```js +```swift UID2Settings.shared.isLoggingEnabled = true +// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Changes made to settings after first access are not read. ``` -On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. - ## Enable Automatic Token Refresh in Mobile App/Client Side -The UID2Manager will perform automatic token refresh, after a valid UID2 identity has been passed into it. If for any reason token refresh should be disabled, this can be done by: +By default, after a valid UID2 identity has been passed into the UID2Manager, it performs automatic token refresh. If for any reason token refresh was disabled, you can enable it with the following method call: @@ -390,51 +371,4 @@ UID2Manager.shared.automaticRefreshEnabled = false ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration -If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile app. Refer to the Plugin guides on how to install it into your apps: - -- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) -- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) -- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) -- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) - -Note: You do not need to explicitly retrieve the advertising tokens using - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. - -You just need to ensure calling - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -return a non-null string object. Then Google GMA/IMA SDKs should be able to retrieve it via the UID2 GMA/IMA plugins. + diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 32c80845a..a4964a49a 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -26,13 +26,13 @@ UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iO - Automatically refreshes UID2 tokens. - Manages automatic storage of UID2 tokens. -(**GWH__SW_N02: Should the list of what the SDKs do be identical for client-side and client-server? They are not currently.**) +(**GWH__SW_11: Should the list of what the SDKs do be identical for client-side and client-server? They are not currently.**) To integrate with UID2 client-side, you'll need to complete the following steps: 1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). -1. Add a UID2 mobile SDK into your mobile app. +1. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). 1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). @@ -45,7 +45,7 @@ To integrate with UID2 client-side, you'll need to complete the following steps: - [UID2 Mobile SDK Version](#uid2-mobile-sdk-version) - [Client-Side Integration Example](#client-side-integration-example) - [Complete the UID2 Account Setup](#complete-the-uid2-account-setup) -- [Add the UID2 Mobile SDK to Your Mobile App](#add-the-uid2-mobile-sdk-to-your-mobile-app) +- [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app) - [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) - [Format Examples for DII](#format-examples-for-dii) - [Token Storage and Refresh](#token-storage-and-refresh) @@ -55,9 +55,14 @@ To integrate with UID2 client-side, you'll need to complete the following steps: - [Enable Logging](#enable-logging) - [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration) --> -## UID2 Mobile SDK Version +## Add UID2 Mobile SDK Version -To follow this client-side integration guide, it requires v1.0.0 or higher of UID2 SDK for Android and iOS. Follow the Add UID2 Mobile SDK into your mobile App section below to install these SDK versions in your apps. +This guide provides instructions for using version v1.0.0 or higher of either of these UID2 mobile SDKs: + +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) + +For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). ## Client-Side Integration Example @@ -111,7 +116,7 @@ UID2Manager.shared.generateIdentity() When the API call is successful, the app displays the resulting identity and persists it inside the `UID2Manager` class. -The identity contains the generated UID2 advertising token value which you can retrieve using the following method call: +The identity includes the generated UID2 advertising token value, which you can retrieve using the `getAdvertisingToken()` method call: @@ -130,9 +135,7 @@ UID2Manager.shared.getAdvertisingToken() -This function call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). - -(**GWH__SW04 we called it a method call line 113 (discussed in earlier meeting), then a function call line 132. Which is best? MAKE METHOD CALL THROUGHOUT**) +This method call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). ### Testing With Your Own Configuration @@ -542,13 +545,13 @@ Some possible reasons for this, and some things you could do to troubleshoot, ar - Check to see whether there are any errors from the `generateIdentity()` call. - Enable logging to get more information: see [Enable Logging](#enable-logging) -- It's possible that the identity that was generated has expired. If this occurs, you'll need to call the `generateIdentity()` method again: see [Client-Side Integration Example](#client-side-integration-example). +- It's possible that the identity that was generated has expired. If this happens, you'll need to call the `generateIdentity()` method again: see [Client-Side Integration Example](#client-side-integration-example). For more information, see [Best Practices on When to Pass DII to the UID2 Mobile SDK](#best-practices-on-when-to-pass-dii-to-the-uid2-mobile-sdk). ## Best Practices on When to Pass DII to the UID2 Mobile SDK -The first time the app is opened, no UID2 identity exists. You'll need to make the following function call, with the DII, to start the token generation: +The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: @@ -569,26 +572,9 @@ UID2Manager.shared.generateIdentity() When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: (**GWH_SW08 again... existing copy said function. We are going to method throughout?**) (**GWH_SW09 also, not sure we need to repeat the same call again, two next to each other? SUNNY SAY YES TAKE THIS ONE OUT**) +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity()` method again to generate a new identity and get the resulting UID2 token. - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -The only exception to this is if the following Android function/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it. +The only exception is if the following Android method/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it: @@ -607,7 +593,7 @@ UID2Manager.shared.identityStatus -The best way to determine if DII is required by the UID2 mobile SDKs is to always call the following function when the app starts up or resumes: +The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: @@ -626,54 +612,13 @@ UID2Manager.shared.getAdvertisingToken() -If it returns `null`, you'll need to call the following function and pass DII into it again. - -(**GWH__SW11 instead of the above, the below is what I'd like to say, and lose this extra set of tabs. There's too much repetition I think:**) - -**If `getAdvertisingToken()` returns `null`, you'll need to generate a new token: pass the DII into a call to the `generateIdentity()` method again. SUNNY SAYS YES FINE** - - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - +If `getAdvertisingToken()` returns `null`, you'll need to generate a new token. Pass the DII into a call to the `generateIdentity()` method again. ## Opt-Out Handling (**GWH note: reviewed this doc up to this point. Rest is partially unreviewed (and the below needs fixing).**) -If the DII provided to the - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -has opted out, this method will return null. Calling: +If the DII provided to the `generateIdentity()` method has been opted out of UID2, this method returns `null`. To check the status of the UID2, you can call the following method: @@ -692,13 +637,11 @@ UID2Manager.shared.identityStatus -returns OPT_OUT status. - -In this case you should avoid repeatedly making `generateIdentity()` calls again, because if the DII has a status of opted out, the UID2 token is not generated. +In this case you should avoid making repeated calls to check the identity, because if the DII has a status of opted out, the UID2 token is not generated. (**GWH__SW_12 is there any more to this than a wasted API call?**) ## Enable Logging -The UID2 mobile SDK can generate logs, which could help debugging any issues during UID2 integration work. To enable logging, do the following: +The UID2 mobile SDK can generate logs, which could help in debugging any issues during UID2 integration work. To enable logging, do the following: @@ -731,28 +674,11 @@ If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming y - [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) - [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) -Note: You do not need to explicitly retrieve the advertising tokens using (**GWH__SW12 not sure how to put this... let's discuss. THE FOLLOWING METHOD CALL**) - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. +:::note +You do not need to explicitly run the `getAdvertisingToken()` method call to retrieve the advertising tokens and pass them into Google GMA/IMA SDK manually. The UID2 GMA/IMA plugins manage this for you. +::: -You just need to ensure calling the following return a non-null string object: +All you need to do is make sure that `getAdvertisingToken()` returns a non-null string object: @@ -771,4 +697,4 @@ UID2Manager.shared.getAdvertisingToken() -Then, the Google GMA/IMA plug-ins should be able to retrieve it via the UID2 GMA/IMA plugins. +If the token exists, the Google GMA/IMA plug-ins can retrieve it via the UID2 GMA/IMA plugins. diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md index 990514b85..0d4862c1d 100644 --- a/docs/guides/integration-mobile-overview.md +++ b/docs/guides/integration-mobile-overview.md @@ -47,7 +47,7 @@ At a high level, to integrate your mobile app with UID2 using the UID2 mobile SD 1. Complete the UID2 account setup. -1. Client-Server Integration Only: Integrate server-side token generation on your back-end server. +1. Client-Server Integration Only: Integrate server-side token generation. 1. Add the UID2 SDK for Android or iOS into your mobile app. diff --git a/docs/guides/publisher-client-side.md b/docs/guides/publisher-client-side.md index 0c77fba76..e3a1ba117 100644 --- a/docs/guides/publisher-client-side.md +++ b/docs/guides/publisher-client-side.md @@ -256,7 +256,7 @@ In this scenario: ## Token Storage and Refresh -After calling one of the methods listed in [Configure the SDK for JavaScript](#configure-the-sdk-for-javascript) successfully, an [identity](../ref-info/glossary-uid.md#gl-identity) is generated and stored in local storage, under the key `UID2-sdk-identity`. The SDK refreshes the UID2 token periodically. +After calling one of the methods listed in [Configure the SDK for JavaScript](#configure-the-sdk-for-javascript) successfully, an identity is generated and stored in local storage, under the key `UID2-sdk-identity`. The SDK refreshes the UID2 token periodically. :::danger The format of the object stored in local storage could change without notice. We recommend that you do **not** read and update the object in local storage directly. @@ -264,7 +264,7 @@ The format of the object stored in local storage could change without notice. We ## Example Integration Code and When to Pass DII to the UID2 SDK -When this is the first page load with no [identity](../ref-info/glossary-uid.md#gl-identity), to start the token generation call you'll need to call one of the `setIdentity` methods with DII. Once an identity is generated, the advertising token ([UID2 token](../ref-info/glossary-uid.md#gl-uid2-token)) that you would send to the bid stream will be available by waiting for the `IdentityUpdated` event from the SDK. For an example, see how the value for `advertising_token_to_use` is set in the following code snippet. +When this is the first page load with no identity, to start the token generation call you'll need to call one of the `setIdentity` methods with DII. Once an identity is generated, the advertising token ([UID2 token](../ref-info/glossary-uid.md#gl-uid2-token)) that you would send to the bid stream will be available by waiting for the `IdentityUpdated` event from the SDK. For an example, see how the value for `advertising_token_to_use` is set in the following code snippet. In some cases, the user's DII is not available on page load, and getting the DII has some associated cost. For example, an API call might be required to fetch the DII, or the user has to be prompted to provide the DII information. diff --git a/docs/guides/summary-guides.md b/docs/guides/summary-guides.md index c90efdf5a..a6862f39c 100644 --- a/docs/guides/summary-guides.md +++ b/docs/guides/summary-guides.md @@ -56,8 +56,8 @@ The following resources are available for publishers integrating with Android or | Integration Type| Documentation | Content Description | | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | -| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations diff --git a/docs/overviews/overview-publishers.md b/docs/overviews/overview-publishers.md index 8b0c1b33c..bd28742cb 100644 --- a/docs/overviews/overview-publishers.md +++ b/docs/overviews/overview-publishers.md @@ -110,8 +110,8 @@ The following resources are available for publisher integrations supporting Andr | Integration Type| Documentation | Content Description | | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](../guides/integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | -| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An SDK reference guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens on their back-end servers (or server-side) (**GWH_SW do we need to say both? If no, which is preferable? Two instances.**) via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index d8b21520d..4c1e3ea2f 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -123,9 +123,9 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using a DII - email (hash) or phone no (hash). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW add fragment to link.**) +1. Generate the UID2 identity using a DII - email (hash) or phone no (hash). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW_13 add fragment to link.**) -2. Create a UID2 identity from your back-end server and then passed into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) +2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_14 add fragment to link.**) The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -149,11 +149,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__ figure out more exact link, add fragment to link**) +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW_15 add fragment to link**) #### setIdentity() -Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link, add fragment to link**) +Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__SW_16 figure out more exact link, add fragment to link**) #### resetIdentity() diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index d30efa90e..190375395 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -64,7 +64,7 @@ For details, see [API Permissions](../getting-started/gs-permissions.md). -This documentation is for the UID2 iOS SDK version 1.0.0. (**GWH__SW question. Android says "and later" do we want to say this here?)** +This documentation is for the UID2 iOS SDK version 1.0.0. (**GWH__SW_17 question. Android says "and later" do we want to say this here?)** ## Features @@ -108,7 +108,7 @@ dependencies: [ ### Installing with Xcode -Add the following entry in the Package Dependencies for your apps: (**GWH__SW is it correct re Package Dependencies, wording and capitalization?**) +Add the following entry in the Package Dependencies for your apps: (**GWH__SW_18 is it correct re Package Dependencies, wording and capitalization?**) | Name | Location | Dependency Rule | | :--- | :--- |:-----------------------------| @@ -116,15 +116,15 @@ Add the following entry in the Package Dependencies for your apps: (**GWH__SW is -(**GWH__SW should we remove this image? No longer needed? In which case we can remove this reference and also the actual file?**) +(**GWH__SW_19 should we remove this image? No longer needed? In which case we can remove this reference and also the actual file?**) ## Usage Guidelines There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) +1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_20 add fragment to link.**) -2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW add fragment to link.**) +2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_21 add fragment to link.**) The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -148,11 +148,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__ figure out more exact link, add fragment to link**) +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW_22 figure out more exact link, add fragment to link**) #### setIdentity() -Sets a UID2 Identity, created from the back-end server, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__ figure out more exact link, add fragment to link**) +Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__SW_23 figure out more exact link, add fragment to link**) #### resetIdentity() @@ -189,7 +189,7 @@ The identityStatus variable stores and returns the status of the current UID2 Id The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 iOS SDK. -Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md)):(**GWH__SW add fragment to link.**) +Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md)):(**GWH__SW_24 add fragment to link.**) ```js UID2Manager.shared.generateIdentity( @@ -199,7 +199,7 @@ UID2Manager.shared.generateIdentity( appName: String? = nil ) ``` -Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md)):(**GWH__SW add fragment to link.**) +Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md)):(**GWH__SW_25 add fragment to link.**) ```js UID2Manager.shared.getAdvertisingToken() diff --git a/docs/snippets/_mobile_docs_plugin_gss.mdx b/docs/snippets/_mobile_docs_plugin_gss.mdx new file mode 100644 index 000000000..a478253fe --- /dev/null +++ b/docs/snippets/_mobile_docs_plugin_gss.mdx @@ -0,0 +1,31 @@ +If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: + +- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) + +:::note +You do not need to explicitly run the `getAdvertisingToken()` method call to retrieve the advertising tokens and pass them into Google GMA/IMA SDK manually. The UID2 GMA/IMA plugins manage this for you. +::: + +All you need to do is make sure that `getAdvertisingToken()` returns a non-null string object: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If the token exists, the Google GMA/IMA plug-ins can retrieve it via the UID2 GMA/IMA plugins. \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index a98362c04..544f2ae3b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -1,436 +1 @@ ---- -title: UID2 Client-Server Integration Guide for Mobile -sidebar_label: Client-Server Integration for Mobile -pagination_label: UID2 Client-Server Integration Guide for Mobile -description: Setting up a mobile integration with token generate on server and refresh on client. -hide_table_of_contents: false -sidebar_position: 04 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import Link from '@docusaurus/Link'; -import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; - -# UID2 Client-Server Integration Guide for Mobile - -This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens on their back-end servers (or server-side) via either a public or Private Operator and then pass the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   - -This is called Client-Server Integration because some integration steps are client-side and some are server-side. - -If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. - -This page provides a high-level overview of integration steps and links to additional documentation. - - - -## Overview - -UID2 provides mobile SDKs for Android and iOS. Each SDK has the following features: - -- Takes in a UID2 Identity (including a UID2 token) and persists it in local file storage. -- Automatically refreshes UID2 tokens. (**GWH__SW: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) - -You'll need to complete the following steps: - -1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). -1. [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server). -1. [Add the UID2 mobile SDK into your mobile app](#add-uid2-mobile-sdk-into-your-mobile-app). -1. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). -1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). -1. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). - -## Complete the UID2 Account Setup - -To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). - -(**GWH__SW do we not need them to provide the values listed in the client-side doc: Android Application ID etc? Line 181. Prob not as it's not client-side, like the domains list? If so... do I need to update the Account Setup page to list those credentials where we currently have Domains List? Amd what about the UID2 Portal??**) - -When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). - -## Client-Server Mobile Integration Data Flow Overview - -The following diagram shows the data flow that the publisher must implement for UID2 client-server mobile integration. - -This example uses the UID2 SDK for Android in the client-side mobile app and the UID2 SDK for Java on the server side. - -**TODO: Add Rita’s latest diagram from here** (**GWH_ https://thetradedesk.slack.com/archives/C04TA13AQKF/p1715204733836019 to Rita**) - -![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) - - - -## Implement Server-Side Token Generation On Your Back-End Server - -The first step of UID2 integration is to be able to generate the UID2 token on your back-end server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. - -There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII), as summarized in the following table. - -| Integration Solution  | Generate Token | Refresh Token | -| :--- | :--- | :--- | -| UID2 SDK for Java | ✅ | ✅ | -| UID2 SDK for Python | ✅ | ✅ | -| Direct integration (API endpoints with custom code) | ✅ | ✅ | - -(**GWH__SW just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) - -Whatever integration option you choose, you'll need to implement one of the following: - -**Gen uptohere end Wed 5/8/24** - -Call the POST /token/generate endpoint. - -The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response, see an example here - -Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Basic Usage of the UID2 SDK for Java or UID2 SDK for Python for instructions - -The Identity output you need for the rest of this guide is the output of the following two methods: - - - -``` -token_generate_response.get_identity_json_string() -``` - - - - -```java -For Java: tokenGenerateResponse.getIdentityJsonString() -``` - - - - -:::important -The endpoint and SDK API returns opt-out status if the DII (Directly Identifiable Information) you are generating the token for has opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  -::: - -You will need to pass this into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). - -:::note -For security reasons, API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. -::: - -## Server-Side Token Refresh - -Token refresh is automatically enabled inside the UID2 mobile SDKs; you don't need to manage it explicitly on the server side. - -You might decide to do server-side token refresh if you want to keep your changes in the mobile apps as simple as possible. - -However, if you decide you want to do it on the server side and not client/mobile side, you can do so using one of the following: - -Call the POST /token/refresh endpoint. - -Utilize one of the server-side SDKs’ UID2 Publisher Client classes that simplifies such request into a single method call. Please refer to the Publisher Server-Only Integration section of the UID2 SDK for Java or UID2 SDK for Python for instructions - - and pass the newly refreshed Identity to the mobile app by following the rest of this guide below. - -## Add UID2 Mobile SDK into Your Mobile App - -For installation instructions, please see the UID2 SDK for Android Reference Guide and iOS Reference Guide. - -Follow the UID2 SDK documentation to: - -Add the pre-built UID2 SDK for Android libraries into your mobile app here. - -Learn how to instantiate the UID2Manager instance in your Android app here. For iOS, refer to the Usage Guidelines. - -## Using the UID2 Integration Environment - -By default, the SDK is configured to work with the UID2 production environment https://prod.uidapi.com . If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation. - - - - -```js -UID2Manager.init( - context = this, - serverUrl = "https://operator-integ.uidapi.com" -) -``` - - - - -```js -// Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( - url: URL(string: "https://operator-integ.uidapi.com")! -) -``` - - - - -On iOS, you must set `UID2Settings` before you first access `UID2Manager.shared`. Any changes made to settings after the first access are not read. - -:::note -Bear in mind the following differences between environments: -- Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of credentials (Subscription ID and public key) for each environment (integ and prod). Be sure to use the correct credentials for each environment. -::: - -## Optional: Reduce Latency by Setting the API Base URL for the Production Environment - - - -To specify a different UID2 server, you can change it in the init call: - - - - -```js -UID2Manager.init( - context = this, - serverUrl = " https://global.prod.uidapi.com" -) -``` - - - - -```js -UID2Settings.shared.environment = .singapore -// or -UID2Settings.shared.environment = .custom( - url: URL(string: "https://global.prod.uidapi.com")! -) -``` - - - - -## Configure the UID2 Mobile SDK for Your Mobile App - -After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 Identity generated from your back-end server (see [Implement server-side token generation on your back-end server](#implement-server-side-token-generation-on-your-back-end-server)), and then pass it into the mobile app using the `setIdentity` method: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.setIdentity() -``` - - - - -## Token Storage - -After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. - -:::warning -The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. -::: - - -## Pass Generated Token for Bid Stream Use - -(**GWH__SW we have to make this (heading) shorter. I wonder can we break it into two steps? Just an idea.**) - -In your mobile app, you can call - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -And if there was a successful identity added into the UID2Manager, it should return a string like: - -``` -AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== -``` - - -You can use this identity to pass downstream for sending in RTB bid stream. - -If - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -returns null, there was not an identity or valid token generated for several reasons such as: - -The identity is invalid - -The advertising token inside the UID2 identity has expired and the refresh token expires too so token cannot be refreshed - -In such situation, you will need to follow Implement Server-Side Token Generation on your back-end server section above and generate a new UID2 identity and pass the result into the mobile app’s UID2Manager again. - - - -## Best Practice on When to Pass New UID2 Token to the UID2 SDK - -(**GWH_SW can we make this into a Best Practices section and then just list this one for now? We'll get others I'm sure.**) - -The best way to determine if a new UID2 identity is required by the UID2 SDK again is to always call - - - - -UID2Manager.getInstance().getAdvertisingToken() - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -On startup/resumption of the app, if it returns null, it is time to generate new identity on the back-end server by following the Implement Server-Side Token Generation on your back-end server section above and pass it into the mobile app’s UID2Manager instance again - -## Enable Logging (For Android Only) - -The UID2 SDK may generate logs which could help debugging any issues during UID2 integration work. You can enable the logging during UID2Manager initialization: - - - - -```js -UID2Manager.init( - context = this, - isLoggingEnabled = true -) -``` - - - - -```js -UID2Settings.shared.isLoggingEnabled = true -``` - -On iOS, you must set UID2Settings before you first access UID2Manager.shared. Any changes made to settings after the first access will not be read. - - - - -## Enable Automatic Token Refresh in Mobile App/Client Side - -The UID2Manager will perform automatic token refresh, after a valid UID2 identity has been passed into it. If for any reason token refresh should be disabled, this can be done by: - - - - -**Android Java**: - -```java -UID2Manager.getInstance()setAutomaticRefreshEnabled(false) -``` - -**Android Kotlin**: - -```kotlin -UID2Manager.getInstance().automaticRefreshEnabled = false -``` - - - - -```js -UID2Manager.shared.automaticRefreshEnabled = false -``` - - - - -## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration - -If you intend to generate UID2 tokens to send it to Google GMA/IMA SDKs, assuming you have followed the Client-Side or Server-Side Integration Guides for Mobile, you need to add UID2 GMA/IMA plugins into your mobile app. Refer to the Plugin guides on how to install it into your apps: - -- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) -- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) -- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) -- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) - -Note: You do not need to explicitly retrieve the advertising tokens using - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. - -You just need to ensure calling - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -return a non-null string object. Then Google GMA/IMA SDKs should be able to retrieve it via the UID2 GMA/IMA plugins. +xxxxxx \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md index 114518608..544f2ae3b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -1,772 +1 @@ ---- -title: UID2 Client-Side Integration Guide for Mobile -sidebar_label: Client-Side Integration for Mobile -pagination_label: UID2 Client-Side Integration Guide for Mobile -description: Setting up a mobile integration with token generate and refresh both on the client side. -hide_table_of_contents: false -sidebar_position: 04 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import Link from '@docusaurus/Link'; -import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; - -# UID2 Client-Side Integration Guide for Mobile - -This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. - -This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). - -The page provides a high-level overview, integration steps, and links to additional documentation. - -UID2 provides a mobile SDK for Android and iOS with the following features: - -- UID2 token generation -- Automatic refreshing of UID2 tokens -- Automatic storage of UID2 tokens - -To integrate with UID2 client-side, you'll need to complete the following steps: - -1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). - -1. Add a UID2 mobile SDK into your mobile app. - -1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). - -1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). - -1. Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration. - - - -## UID2 Mobile SDK Version - -To follow this client-side integration guide, it requires v1.0.0 or higher of UID2 SDK for Android and iOS. Follow the Add UID2 Mobile SDK into your mobile App section below to install these SDK versions in your apps. - -## Client-Side Integration Example - -For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. - -Follow the applicable instructions: - - - - -1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). -1. In Android Studio, open the directory that you checked out. -1. Run the **dev-app** app. -1. When you've started the app, make sure the **Client Side** checkbox is checked. -1. Enter an email or phone number. - - - - -1. Check out the [main branch of the UID2 SDK For iOS source code repository on GitHub](https://github.com/IABTechLab/uid2-ios-sdk/tree/main). -1. In Xcode, open this project file: - - ```js - Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj - ``` -1. Run the **UID2SDKDevelopmentApp** app scheme. -1. When you've started the app, make sure the **Client Side** checkbox is checked. -1. Enter an email or phone number. - - - - -Behind the scenes, the sample app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity and resulting UID2 token for the email/phone input: (**GWH__SW03 I need to understand the exact difference between an identity and the token. And, should identity be capitalized? Not sure why. "sends a request to the UID2 service to return an identity including UID2 token" maybe? LINK TO IDENTITY DEF IN GLOSSARY AND KEEP IT SIMPLE MAYBE ALSO USE SIMPLE DEF INLINE. CAPITALIZE... NOT SURE.**) - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -When the API call is successful, the app displays the resulting identity and persists it inside the `UID2Manager` class. - -The identity contains the generated UID2 advertising token value which you can retrieve using the following method call: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -This function call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). - -(**GWH__SW04 we called it a method call line 113 (discussed in earlier meeting), then a function call line 132. Which is best? MAKE METHOD CALL THROUGHOUT**) - -### Testing With Your Own Configuration - -By default, the development app uses default values for Subscription ID and public key, which are stored in the following object: - - - - -```js -com.uid2.dev.ui.MainScreenViewModel.Companion -``` - - - - -```js -RootViewModel -``` - - - - -To test, you can connect to the UID2 integration environment as specified in the following Android method call/iOS file: - - - - -```js -com.uid2.UID2Manager.Companion#init -``` - - - - -```js -see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist -``` - - - - -If necessary, you can also change the default Subscription ID and public key to ones assigned to you, and connect to the UID2 Production environment. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). - -## Complete the UID2 Account Setup - -To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - -- Android Application ID -- iOS App Bundle ID -- App Store ID - -When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). - -## Add the UID2 Mobile SDK to Your Mobile App - -To add the mobile SDK to your app, follow the applicable documentation: - -- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) -- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) - -At this point, you are ready to start generating UID2 tokens using the SDK. - -### Using the UID2 Integration Environment - -By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the integration environment instead, provide the following URL in your call to initialize `UID2Manager`: - - - - -```js -UID2Manager.init( - context = this, - serverUrl = "https://operator-integ.uidapi.com" -) -``` - - - - -```js -// Must be set before UID2Manager.shared is accessed -UID2Settings.shared.environment = .custom( - url: URL(string: "https://operator-integ.uidapi.com")! -) -``` - - - - -:::note -Bear in mind the following differences between environments: -- Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. -::: - -### Optional: Reduce Latency by Setting the API Base URL for the Production Environment - - - -To specify a different UID2 server, you can change it in the `init` call, as shown in the following examples. - - - - -```js -UID2Manager.init( - context = this, - serverUrl = " https://global.prod.uidapi.com" -) -``` - - - - -```js -// Must be set before UID2Manager.shared is accessed -UID2Settings.shared.environment = .custom( - url: URL(string: "https://global.prod.uidapi.com")! -) -// or use a named environment -UID2Settings.shared.environment = .sydney -``` - - - - -## Configure the UID2 Mobile SDK - -UID2 provides the publisher with the following values, which are needed for generating the UID2 token on the client side: - -- Subscription ID -- Public key - -You'll have one set of these values for your testing environment, and a separate set for your production environment. - -To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information ([DII](../ref-info/glossary-uid.md#gl-dii)) (email address or phone number), into the following method call: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -Once it's configured, the UID2 mobile SDK does the following: - -- Generates a UID2 token for the user -- Stores the token locally on the user’s device -- Automatically refreshes the token as required while your app is open - -:::tip -You can pass the user’s [DII](../ref-info/glossary-uid.md#gl-dii) to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). -::: - -## Format Examples for DII - -The SDK encrypts the hashed DII before sending it to the UID2 service. - -You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. - -The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. - -- Configure for Email Address -- Configure for Hashed Email Address -- Configure for Phone Number -- Configure for Hashed Phone Number - -If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. - -### Email, Unhashed - -The following example configures the UID2 mobile SDK with an email address. - - - - -```js -manager.generateIdentity( - IdentityRequest.Email("test@example.com"), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else { - // email is invalid and cannot be normalized, handle error -} -try await UID2Manager.shared.generateIdentity( - .email(normalizedEmail), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- No normalization or hashing is required by the publisher -- The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. - -### Email, Normalized and Hashed - -The following example configures the UID2 SDK with a hashed email address. - - - - -```js -manager.generateIdentity( - IdentityRequest.EmailHash( - “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” - ), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -try await UID2Manager.shared.generateIdentity( - .emailHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). -- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. - -### Phone Number, Unhashed - -The following example configures the UID2 mobile SDK with a phone number. - - - - -```js -manager.generateIdentity( - IdentityRequest.Phone(“+1111111111”), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { - // phone number is invalid and cannot be normalized, handle error -} -try await UID2Manager.shared.generateIdentity( - .phone(normalizedPhone), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). -- The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. - -### Phone Number, Normalized and Hashed - -The following example configures the UID2 mobile SDK with a hashed phone number. - - - - -```js -manager.generateIdentity( - IdentityRequest.PhoneHash( - “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” - ), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -try await UID2Manager.shared.generateIdentity( - .phoneHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). -- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. - -## Token Storage and Refresh - -After a call to the applicable method listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. - -:::warning -The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. -::: - -## Pass Generated Token for Bid Stream Use - -In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity, which you can then use in the bid stream. - -First, the method call to generate the identity: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -Then, the method call to get the advertising token: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -If successful, this method call returns a non-null string object such as the following: - -```js -AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== -``` - -You can use this identity to pass downstream for sending in the RTB bid stream. - -If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. - -Some possible reasons for this, and some things you could do to troubleshoot, are as follows: - -- Check to see whether there are any errors from the `generateIdentity()` call. -- Enable logging to get more information: see [Enable Logging](#enable-logging) -- It's possible that the identity that was generated has expired. If this occurs, you'll need to call the `generateIdentity()` method again: see [Client-Side Integration Example](#client-side-integration-example). - -For more information, see [Best Practices on When to Pass DII to the UID2 Mobile SDK](#best-practices-on-when-to-pass-dii-to-the-uid2-mobile-sdk). - -## Best Practices on When to Pass DII to the UID2 Mobile SDK - -The first time the app is opened, no UID2 identity exists. You'll need to make the following function call, with the DII, to start the token generation: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. - -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the same function again to generate a new identity get the resulting UID2 token: (**GWH_SW08 again... existing copy said function. We are going to method throughout?**) (**GWH_SW09 also, not sure we need to repeat the same call again, two next to each other? SUNNY SAY YES TAKE THIS ONE OUT**) - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -The only exception to this is if the following Android function/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it. - - - - -```js -UID2Manager.getInstance().getIdentityStatus() -``` - - - - -```js -UID2Manager.shared.identityStatus -``` - - - - -The best way to determine if DII is required by the UID2 mobile SDKs is to always call the following function when the app starts up or resumes: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -If it returns `null`, you'll need to call the following function and pass DII into it again. - -(**GWH__SW11 instead of the above, the below is what I'd like to say, and lose this extra set of tabs. There's too much repetition I think:**) - -**If `getAdvertisingToken()` returns `null`, you'll need to generate a new token: pass the DII into a call to the `generateIdentity()` method again. SUNNY SAYS YES FINE** - - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -## Opt-Out Handling - -(**GWH note: reviewed this doc up to this point. Rest is partially unreviewed (and the below needs fixing).**) - -If the DII provided to the - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -has opted out, this method will return null. Calling: - - - - -```js -UID2Manager.getInstance().getIdentityStatus() -``` - - - - -```js -UID2Manager.shared.identityStatus -``` - - - - -returns OPT_OUT status. - -In this case you should avoid repeatedly making `generateIdentity()` calls again, because if the DII has a status of opted out, the UID2 token is not generated. - -## Enable Logging - -The UID2 mobile SDK can generate logs, which could help debugging any issues during UID2 integration work. To enable logging, do the following: - - - - -```js -// During UID2Manager initialization: -UID2Manager.init( - context = this, - isLoggingEnabled = true -) -``` - - - - -```swift -UID2Settings.shared.isLoggingEnabled = true -// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Changes made to settings after first access are not read. -``` - - - - -## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration - -If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: - -- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) -- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) -- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) -- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) - -Note: You do not need to explicitly retrieve the advertising tokens using (**GWH__SW12 not sure how to put this... let's discuss. THE FOLLOWING METHOD CALL**) - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -and pass into Google GMA/IMA SDK manually – this would be done automatically by the UID2 GMA/IMA plugins. - -You just need to ensure calling the following return a non-null string object: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -Then, the Google GMA/IMA plug-ins should be able to retrieve it via the UID2 GMA/IMA plugins. +xxxxxx \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md index 074cab379..191ca609a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md @@ -47,7 +47,7 @@ At a high level, to integrate your mobile app with UID2 using the UID2 mobile SD 1. Complete the UID2 account setup. -1. Client-Server Integration Only: Integrate server-side token generation on your back-end server. +1. Client-Server Integration Only: Integrate server-side token generation. 1. Add the UID2 SDK for Android or iOS into your mobile app. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md index 4ee768ad4..1a527bbae 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/publisher-client-side.md @@ -259,7 +259,7 @@ await __uid2.setIdentityFromPhoneHash( ## Token Storage and Refresh -[Configure the SDK for JavaScript](#configure-the-sdk-for-javascript) に記載されているメソッドのいずれかを正常に呼び出すと、[identity](../ref-info/glossary-uid.md#gl-identity) が生成され、`UID2-sdk-identity` というキーでローカルストレージに保存されます。SDK は UID2 Token を定期的にリフレッシュします。 +[Configure the SDK for JavaScript](#configure-the-sdk-for-javascript) に記載されているメソッドのいずれかを正常に呼び出すと、identity が生成され、`UID2-sdk-identity` というキーでローカルストレージに保存されます。SDK は UID2 Token を定期的にリフレッシュします。 :::danger ローカルストレージに保存されているオブジェクトのフォーマットは予告なく変更される可能性があります。ローカルストレージのオブジェクトを直接読み込んだり更新したり**しないこと**でください。 @@ -267,7 +267,7 @@ await __uid2.setIdentityFromPhoneHash( ## Example Integration Code and When to Pass DII to the UID2 SDK -[identity](../ref-info/glossary-uid.md#gl-identity) がない状態で最初のページをロードする場合、トークン生成の呼び出しを開始するには、DII で `setIdentity` メソッドのいずれかを呼び出す必要があります。ID が生成されると、SDK からの `IdentityUpdated` イベントを待つことで、ビッドストリームに送信する Advertiser Token ([UID2 token](../ref-info/glossary-uid.md#gl-uid2-token)) を利用できるようになります。例として、`advertising_token_to_use` の値がどのように設定されるかを以下のコードスニペットで示します。 +identity がない状態で最初のページをロードする場合、トークン生成の呼び出しを開始するには、DII で `setIdentity` メソッドのいずれかを呼び出す必要があります。ID が生成されると、SDK からの `IdentityUpdated` イベントを待つことで、ビッドストリームに送信する Advertiser Token ([UID2 token](../ref-info/glossary-uid.md#gl-uid2-token)) を利用できるようになります。例として、`advertising_token_to_use` の値がどのように設定されるかを以下のコードスニペットで示します。 場合によっては、ユーザーの DII はページロード時に利用できず、DII の取得には何らかの関連コストがかかります。例えば、DII を取得するために API コールが必要な場合や、DII 情報を提供するためにユーザーにプロンプトが表示される場合があります。 From 192889139e39694d6713a8263cd5f43de6b130bc Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Fri, 10 May 2024 16:19:25 -0400 Subject: [PATCH 10/47] updates from meeting with SW today --- docs/getting-started/gs-account-setup.md | 10 +- .../integration-mobile-client-server.md | 99 ++- docs/guides/integration-mobile-client-side.md | 100 +-- docs/guides/integration-mobile-overview.md | 8 +- docs/sdks/images/xcode-uid2-ios-sdk.png | Bin 17554 -> 0 bytes docs/sdks/uid2-sdk-ref-android.md | 14 +- docs/sdks/uid2-sdk-ref-ios.md | 22 +- docs/snippets/_mobile-docs-enable-logging.mdx | 26 + .../_mobile_docs_gmaima-plugin-gss.mdx | 34 + docs/snippets/_mobile_docs_plugin_gss.mdx | 31 - docs/snippets/_sdk-reduce-latency.mdx | 2 +- .../integration-mobile-client-server.md | 362 +++++++++- .../guides/integration-mobile-client-side.md | 655 +++++++++++++++++- .../guides/integration-mobile-overview.md | 10 +- .../current/ref-info/glossary-uid.md | 4 + .../snippets/_mobile-docs-enable-logging.mdx | 26 + .../_mobile_docs_gmaima-plugin-gss.mdx | 34 + .../_private-operator-attest-failure.mdx | 8 + .../current/snippets/_sdk-reduce-latency.mdx | 7 + 19 files changed, 1261 insertions(+), 191 deletions(-) delete mode 100644 docs/sdks/images/xcode-uid2-ios-sdk.png create mode 100644 docs/snippets/_mobile-docs-enable-logging.mdx create mode 100644 docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx delete mode 100644 docs/snippets/_mobile_docs_plugin_gss.mdx create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile-docs-enable-logging.mdx create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/snippets/_private-operator-attest-failure.mdx create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/snippets/_sdk-reduce-latency.mdx diff --git a/docs/getting-started/gs-account-setup.md b/docs/getting-started/gs-account-setup.md index 03e14304e..6e7e77fd0 100644 --- a/docs/getting-started/gs-account-setup.md +++ b/docs/getting-started/gs-account-setup.md @@ -45,12 +45,20 @@ All participants will need to provide at least the following information: ### Client-Side Implementation for Publishers -If you're a publisher, and you determine that you want to implement UID2 so that tokens are generated on the client side, you'll also need to provide a list of **domain names** for your sites. This is a security measure, for client-side implementation only. +If you're a publisher publishing to web (rather than mobile), and you determine that you want to implement UID2 so that tokens are generated on the client side, you'll also need to provide a list of **domain names** for your sites. This is a security measure, for client-side implementation only. :::tip Only top-level (root-level) domains are required for account setup. For example, if you're going to implement UID2 to generate tokens on the client side on example.com, shop.example.com, and example.org, you only need to provide the domain names example.com and example.org. ::: +### Client-Side Mobile Integrations + +If you're publishing to mobile apps, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: + +- Android Application ID +- iOS App Bundle ID +- App Store ID + ## Credentials When you've signed a contract for participating in UID2, you'll be issued with [UID2 credentials](gs-credentials.md) and other information for getting up and running with UID2. diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 6d586d3ea..94b88452f 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -11,7 +11,8 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Link from '@docusaurus/Link'; import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; -import GMAIMAPlugins4GAM from '/docs/snippets/_mobile_docs_plugin_gss.mdx'; +import EnableLogging from '/docs/snippets/_mobile-docs-enable-logging.mdx'; +import GMAIMA_Plugins from '/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx'; # UID2 Client-Server Integration Guide for Mobile @@ -35,17 +36,25 @@ This page provides a high-level overview of integration steps and links to addit - [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment) - [Token Storage](#token-storage) - [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use) -- [Best Practices on When to Pass New UID2 Token to the UID2 SDK](#best-practices-on-when-to-pass-new-uid2-token-to-the-uid2-sdk) -- [Enable Logging (For Android Only)](#enable-logging-for-android-only) +- [When to Pass a New UID2 Identity into the SDK](#when-to-pass-a-new-uid2-identity-into-the-sdk) +- [Enable Logging)](#enable-logging) - [Enable Automatic Token Refresh in Mobile App/Client Side](#enable-automatic-token-refresh-in-mobile-appclient-side) - [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration) --> +(**GWH__SW_001 do we need to have a "Mobile SDK Version" section as we do in the client-side doc?**) + +(**GWH__SW_002 in the client-side doc we have a separate "Opt-Out Handling" section. I think it would be good to have that here also. opt-out is mentioned only once in this doc.**) + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: + ## Overview UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: - Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. -- Automatically refreshes UID2 tokens. (**GWH__SW_01: curious... how often? Do the SDKs take our own advice of refreshing every hour? We don't need to say this, but we could, and even if we don't I'd like to know if we take our own advice.**) +- Automatically refreshes UID2 tokens. You'll need to complete the following steps: @@ -60,8 +69,6 @@ You'll need to complete the following steps: To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). -(**GWH__SW_02 do we not need them to provide the values listed in the client-side doc: Android Application ID etc? Line 181. Prob not as it's not client-side, like the domains list? If so... do I need to update the Account Setup page to list those credentials where we currently have Domains List? Amd what about the UID2 Portal??**) - When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). ## Client-Server Mobile Integration Data Flow Overview @@ -70,7 +77,7 @@ The following diagram shows the data flow that the publisher must implement for This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. -**GWH__SW_03: do we need to do anything re the diagram? Fix TTD colors at least, probably?**) +**GWH__KL_01: diagram updates to remove TTD colors at least?**) ![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) @@ -80,29 +87,32 @@ This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in The first step of UID2 integration is to be able to generate the UID2 token on your server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. -There are two ways to generate UID2 tokens on the server side by providing directly identifying information (DII) (email address or phone number), as summarized in the following table. +There are two approaches to generating UID2 tokens on the server side by providing directly identifying information (DII) (email address or phone number): + +- Integration with an SDK +- Direct integration to API endpoints. + +Options are summarized in the following table. | Integration Solution  | Generate Token | Refresh Token | | :--- | :--- | :--- | | [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) | ✅ | ✅ | -| [UID2 SDK for Python](../sdks/uid2-sdk-ref-python.md | ✅ | ✅ | -| [Direct integration (API endpoints with custom code)](../guides/custom-publisher-integration.md) | ✅ | ✅ | +| [UID2 SDK for Python](../sdks/uid2-sdk-ref-python.md) | ✅ | ✅ | +| [Direct integration (API endpoints with custom code)](../endpoints/post-token-generate.md) | ✅ | ✅ | -(**GWH__SW_04 (missed this one in last meeting) just saying... we say there are two ways and then show three... I can change 2 to 3 but just checking if any other adjustment is needed.**) - -(**GWH__SW_05 it's from your doc but not sure if the doc is the correct target for the third item. Is it?**) - -Whatever integration option you choose, you'll need to implement one of the following: +Whatever integration option you choose to generate the identity (UID2 token and associated values), you'll need to implement one of the following: - Call the [POST /token/generate](../endpoints/post-token-generate.md) endpoint. - The identity output you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). + The identity output that you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). - Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. - For instructions, see [UID2 SDK for Java, Publisher Basic Usage section](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Publisher Basic Usage section](../sdks/uid2-sdk-ref-python.md#basic-usage). + For instructions, see [UID2 SDK for Java, Publisher Basic Usage](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Usage for Publishers](../sdks/uid2-sdk-ref-python.md#usage-for-publishers). - If you're using one of these options, the `Identity` response you need for the rest of this guide is the output of the applicable method, as follows: + (**GWH__SW_003 in the Python SDK doc there is no Basic Usage section.**) + + If you're using one of these options, the `Identity` response that you need for the rest of this guide is the output of the applicable method, as follows: @@ -125,7 +135,7 @@ Whatever integration option you choose, you'll need to implement one of the foll The endpoint and SDK API returns opt-out status if the DII you are generating the token for has been opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  ::: -You will need to pass this(**GWH__SW_06 pass what, here?**) into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). +You will need to pass the `Identity` response into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). :::note For security reasons, the API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). @@ -146,7 +156,7 @@ However, if you decide you want to manage token refresh on the server side and n Then, pass the newly refreshed `Identity` value to the mobile app by following the rest of this guide. -## Add a UID2 Mobile SDK into Your Mobile App +## Add the UID2 Mobile SDK into Your Mobile App For installation instructions, refer to one of the following: @@ -162,7 +172,7 @@ For example, for Android, follow the UID2 SDK documentation to: ## Using the UID2 Integration Environment -By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initiation: (**GWH__SW_07 should this be initialization?**) +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initialization: @@ -253,9 +263,10 @@ After you call the `setIdentity` method, the UID2 Identity is persisted in local The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. ::: - ## Pass Generated Token for Bid Stream Use +(**GWH__KL02 Question from SW: "his is a question for PM probably - bid stream does not exist in UID2 Glossary - should it? I dunno if bid stream actually makes sense to publishers to be honest" Do we add it into glossary... I'd thought everyone would know that term, SW doesn't think so. And, bid stream two words... is that a company decision?**) + To retrieve the token, in your mobile app, call the following: @@ -283,17 +294,17 @@ AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4l You can use this identity to pass downstream for sending in the RTB bid stream. -If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. - -One possible reason for this is that the advertising token inside the UID2 identity has expired, and the refresh token has also expired so the SDK cannot refresh the token. If this happens, you'll need to call the `generateIdentity()` method again: see [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again. +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: -(**GWH__SW_08: in the client-side doc we have these other options... are they not valid here? Check to see whether there are errors from the generateIdentity call, enable logging. Just checking. Later note: Logging is below. Should we make them consistent?**) +- The identity is invalid. Check to see whether there are any errors from the previous `setIdentity()` call. +- You could enable logging to get more information: see [Enable Logging](#enable-logging). +- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. -## Best Practices on When to Pass New UID2 Token to the UID2 SDK +If there is no identity, follow the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation) again, generate a new identity, and pass the result into your mobile app's UID2Manager again. -(**GWH__SW_09 can we make this into a Best Practices section and then just list this one for now? We'll get others I'm sure.**) +## When to Pass a New UID2 Identity into the SDK -The best way to determine if a new UID2 identity is required by the UID2 SDK again is to call the `getAdvertisingToken()` method in all cases: +The best way to determine whether a new UID2 identity is required by the UID2 SDK again is to call the `getAdvertisingToken()` method in all cases: @@ -312,33 +323,9 @@ UID2Manager.shared.getAdvertisingToken() On startup/resumption of the app, if `getAdvertisingToken()` returns `null`, it is time to generate new identity on the server by following the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again. -## Enable Logging (Android Only) - -(**GWH__SW_10: The client-side doc has this section for both Android and iOS. Is it correct that they are inconsistent? actually we have an iOS example but it's labelled Android only. Confused. Code is (was) inconsistent also. I basically copied from the client-side section. Please verify. Then I will make it a shared piece.**) - -The UID2 SDK can generate logs, which could help in debugging any issues during UID2 integration work. To enable logging, do the following: +## Enable Logging - - - -```js -// During UID2Manager initialization: -UID2Manager.init( - context = this, - isLoggingEnabled = true -) -``` - - - - -```swift -UID2Settings.shared.isLoggingEnabled = true -// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Changes made to settings after first access are not read. -``` - - - + ## Enable Automatic Token Refresh in Mobile App/Client Side @@ -371,4 +358,4 @@ UID2Manager.shared.automaticRefreshEnabled = false ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration - + diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index a4964a49a..f5d77558c 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -11,6 +11,8 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Link from '@docusaurus/Link'; import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; +import GMAIMA_Plugins from '/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx'; +import EnableLogging from '/docs/snippets/_mobile-docs-enable-logging.mdx'; # UID2 Client-Side Integration Guide for Mobile @@ -23,10 +25,14 @@ The page provides a high-level overview, integration steps, and links to additio UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: - Generates UID2 tokens. +- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. - Automatically refreshes UID2 tokens. -- Manages automatic storage of UID2 tokens. -(**GWH__SW_11: Should the list of what the SDKs do be identical for client-side and client-server? They are not currently.**) +(**GWH__SW_004: Just an FYI I made the last two items above consistent between both docs (wording was different) lines 47-48 in client-server doc.**) + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: To integrate with UID2 client-side, you'll need to complete the following steps: @@ -42,7 +48,7 @@ To integrate with UID2 client-side, you'll need to complete the following steps: -## Add UID2 Mobile SDK Version +## Mobile SDK Version -This guide provides instructions for using version v1.0.0 or higher of either of these UID2 mobile SDKs: +This guide provides instructions for using version v1.2.0 or higher of either of these UID2 mobile SDKs: - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) - [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) @@ -95,7 +101,7 @@ Follow the applicable instructions, for Android or iOS: -Behind the scenes, the sample app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity (a UID2 token and associated values) for the email/phone input: +Behind the scenes, the development app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity (a UID2 token and associated values) for the email/phone input: @@ -158,7 +164,7 @@ RootViewModel -To test, you can connect to the UID2 integration environment as specified in the following Android method call/iOS file: +By default, the development app is configured to connect to the UID2 integration environment, as specified in the following Android method call/iOS file: @@ -189,7 +195,7 @@ To set up your account, follow the steps described in [Account Setup](../getting When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). -## Add the UID2 Mobile SDK to Your Mobile App +## Add the UID2 Mobile SDK into Your Mobile App To add the mobile SDK to your app, follow the applicable documentation: @@ -235,7 +241,7 @@ Bear in mind the following differences between environments: -To specify a different UID2 server, you can change it in the `init` call, as shown in the following examples. +To specify a different UID2 server, you can make config changes, as shown in the following examples: @@ -543,13 +549,15 @@ If the `getAdvertisingToken()` method call returns `null`, there was no identity Some possible reasons for this, and some things you could do to troubleshoot, are as follows: -- Check to see whether there are any errors from the `generateIdentity()` call. -- Enable logging to get more information: see [Enable Logging](#enable-logging) -- It's possible that the identity that was generated has expired. If this happens, you'll need to call the `generateIdentity()` method again: see [Client-Side Integration Example](#client-side-integration-example). +- The identity is invalid. Check to see whether there are any errors from the previous `generateIdentity()` call. +- You could enable logging to get more information: see [Enable Logging](#enable-logging). +- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. -For more information, see [Best Practices on When to Pass DII to the UID2 Mobile SDK](#best-practices-on-when-to-pass-dii-to-the-uid2-mobile-sdk). +If there is no identity, you'll need to call the `generateIdentity()` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). -## Best Practices on When to Pass DII to the UID2 Mobile SDK +For more information, see [When to Pass a New UID2 Identity into the SDK](#when-to-pass-a-new-uid2-identity-into-the-sdk). + +## When to Pass a New UID2 Identity into the SDK The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: @@ -616,9 +624,7 @@ If `getAdvertisingToken()` returns `null`, you'll need to generate a new token. ## Opt-Out Handling -(**GWH note: reviewed this doc up to this point. Rest is partially unreviewed (and the below needs fixing).**) - -If the DII provided to the `generateIdentity()` method has been opted out of UID2, this method returns `null`. To check the status of the UID2, you can call the following method: +If the DII provided to the `generateIdentity()` method has been opted out of UID2, this method returns `null`. To check the status of the UID2 identity, you can call the following: @@ -637,64 +643,12 @@ UID2Manager.shared.identityStatus -In this case you should avoid making repeated calls to check the identity, because if the DII has a status of opted out, the UID2 token is not generated. (**GWH__SW_12 is there any more to this than a wasted API call?**) +In this case, you might want to avoid making repeated calls to check the status of the UID2 identity, because if the DII has a status of opted out, the UID2 token is not generated. ## Enable Logging -The UID2 mobile SDK can generate logs, which could help in debugging any issues during UID2 integration work. To enable logging, do the following: - - - - -```js -// During UID2Manager initialization: -UID2Manager.init( - context = this, - isLoggingEnabled = true -) -``` - - - - -```swift -UID2Settings.shared.isLoggingEnabled = true -// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Changes made to settings after first access are not read. -``` - - - + ## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration -If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: - -- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) -- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) -- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) -- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) - -:::note -You do not need to explicitly run the `getAdvertisingToken()` method call to retrieve the advertising tokens and pass them into Google GMA/IMA SDK manually. The UID2 GMA/IMA plugins manage this for you. -::: - -All you need to do is make sure that `getAdvertisingToken()` returns a non-null string object: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -If the token exists, the Google GMA/IMA plug-ins can retrieve it via the UID2 GMA/IMA plugins. + diff --git a/docs/guides/integration-mobile-overview.md b/docs/guides/integration-mobile-overview.md index 0d4862c1d..343670c51 100644 --- a/docs/guides/integration-mobile-overview.md +++ b/docs/guides/integration-mobile-overview.md @@ -14,7 +14,9 @@ import Link from '@docusaurus/Link'; This guide is an overview of integration options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. -This guide groups those two SDKs as UID2 mobile SDKs. +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: -This documentation is for the UID2 Android SDK version 1.0.0 and later. +This documentation is for the UID2 Android SDK version 1.2.0 and later. For information about specific release versions, see [https://github.com/IABTechLab/uid2-android-sdk/releases](https://github.com/IABTechLab/uid2-android-sdk/releases). @@ -104,7 +104,7 @@ To install with Gradle, add the SDK as a dependency in the build.gradle file: ```js -implementation 'com.uid2:uid2-android-sdk:1.0.0' +implementation 'com.uid2:uid2-android-sdk:1.2.0' ``` ### Installing with Maven @@ -115,7 +115,7 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: com.uid2 uid2-android-sdk - 1.0.0 + 1.2.0 ``` @@ -123,9 +123,9 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using a DII - email (hash) or phone no (hash). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW_13 add fragment to link.**) +1. Generate the UID2 identity using DII - email (hash) or phone no (hash). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). -2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_14 add fragment to link.**) +2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -149,11 +149,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW_15 add fragment to link**) +Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Configure the UID2 mobile SDK](../guides/integration-mobile-client-side.md#configure-the-uid2-mobile-sdk) in the *Client-Side Integration Guide for Mobile*. #### setIdentity() -Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__SW_16 figure out more exact link, add fragment to link**) +Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Configure the UID2 Mobile SDK for Your Mobile App](../guides/integration-mobile-client-server.md#configure-the-uid2-mobile-sdk-for-your-mobile-app) in the *Client-Server Integration Guide for Mobile*. #### resetIdentity() diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index 190375395..0060a7b99 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -64,7 +64,7 @@ For details, see [API Permissions](../getting-started/gs-permissions.md). -This documentation is for the UID2 iOS SDK version 1.0.0. (**GWH__SW_17 question. Android says "and later" do we want to say this here?)** +This documentation is for the UID2 iOS SDK version 1.2.0 and later. ## Features @@ -102,29 +102,25 @@ Add the following dependency to Package.swift: ```js dependencies: [ -.package(url: \"https://github.com/IABTechLab/uid2-ios-sdk.git\", from: "1.0.0"), +.package(url: \"https://github.com/IABTechLab/uid2-ios-sdk.git\", from: "1.2.0"), ] ``` ### Installing with Xcode -Add the following entry in the Package Dependencies for your apps: (**GWH__SW_18 is it correct re Package Dependencies, wording and capitalization?**) +Add the following entry in the Package Dependencies for your apps: | Name | Location | Dependency Rule | | :--- | :--- |:-----------------------------| | uid2-ios-sdk | git@github.com:IABTechLab/uid2-ios-sdk.git | Up to next major version: 1.0.0 < 2.0.0 | - - -(**GWH__SW_19 should we remove this image? No longer needed? In which case we can remove this reference and also the actual file?**) - ## Usage Guidelines There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_20 add fragment to link.**) +1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_5 add fragment to link.**) -2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_21 add fragment to link.**) +2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_6 add fragment to link.**) The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. @@ -148,11 +144,11 @@ The following functions are available as part of the UID2Manager API: #### generateIdentity() -Generate a UID2 Identity using Directly identifying information (DII). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md).(**GWH__SW_22 figure out more exact link, add fragment to link**) +Generate a UID2 Identity using Directly identifying information (DII). For details, see [Configure the UID2 mobile SDK](../guides/integration-mobile-client-side.md#configure-the-uid2-mobile-sdk) in the *Client-Side Integration Guide for Mobile*. #### setIdentity() -Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). (**GWH__SW_23 figure out more exact link, add fragment to link**) +Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Configure the UID2 Mobile SDK for Your Mobile App](../guides/integration-mobile-client-server.md#configure-the-uid2-mobile-sdk-for-your-mobile-app) in the *Client-Server Integration Guide for Mobile*. #### resetIdentity() @@ -189,7 +185,7 @@ The identityStatus variable stores and returns the status of the current UID2 Id The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 iOS SDK. -Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md)):(**GWH__SW_24 add fragment to link.**) +Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md)):(**GWH__SW_7 add fragment to link.**) ```js UID2Manager.shared.generateIdentity( @@ -199,7 +195,7 @@ UID2Manager.shared.generateIdentity( appName: String? = nil ) ``` -Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md)):(**GWH__SW_25 add fragment to link.**) +Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md)):(**GWH__SW_7 add fragment to link.**) ```js UID2Manager.shared.getAdvertisingToken() diff --git a/docs/snippets/_mobile-docs-enable-logging.mdx b/docs/snippets/_mobile-docs-enable-logging.mdx new file mode 100644 index 000000000..3b043f47e --- /dev/null +++ b/docs/snippets/_mobile-docs-enable-logging.mdx @@ -0,0 +1,26 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +The UID2 SDK can generate logs, which could help in debugging any issues during UID2 integration work. To enable logging, do the following: + + + + +```js +// During UID2Manager initialization: +UID2Manager.init( + context = this, + isLoggingEnabled = true +) +``` + + + + +```swift +UID2Settings.shared.isLoggingEnabled = true +// On iOS, you must set UID2Settings before you first access UID2Manager.shared. Changes made to settings after first access are not read. +``` + + + \ No newline at end of file diff --git a/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx b/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx new file mode 100644 index 000000000..725f640b5 --- /dev/null +++ b/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx @@ -0,0 +1,34 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in this guide, you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: + +- [UID2 GMA Plugin for Android Integration Guide](../guides/mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](../guides/mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios.md) + +:::note +You do not need to explicitly make the `getAdvertisingToken()` method call to retrieve the advertising tokens and pass them into Google GMA/IMA SDK manually. The UID2 GMA/IMA plugins manage this for you. +::: + +All you need to do is make sure that `getAdvertisingToken()` returns a non-null string object: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If the token exists, the Google GMA/IMA plug-ins can retrieve it automatically via the UID2 GMA/IMA plugins. \ No newline at end of file diff --git a/docs/snippets/_mobile_docs_plugin_gss.mdx b/docs/snippets/_mobile_docs_plugin_gss.mdx deleted file mode 100644 index a478253fe..000000000 --- a/docs/snippets/_mobile_docs_plugin_gss.mdx +++ /dev/null @@ -1,31 +0,0 @@ -If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in the [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) or the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md), you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: - -- [UID2 GMA Plugin for Android Integration Guide](mobile-plugin-gma-android.md) -- [UID2 GMA Plugin for iOS Integration Guide](mobile-plugin-gma-ios.md) -- [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) -- [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) - -:::note -You do not need to explicitly run the `getAdvertisingToken()` method call to retrieve the advertising tokens and pass them into Google GMA/IMA SDK manually. The UID2 GMA/IMA plugins manage this for you. -::: - -All you need to do is make sure that `getAdvertisingToken()` returns a non-null string object: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -If the token exists, the Google GMA/IMA plug-ins can retrieve it via the UID2 GMA/IMA plugins. \ No newline at end of file diff --git a/docs/snippets/_sdk-reduce-latency.mdx b/docs/snippets/_sdk-reduce-latency.mdx index f8aa0cbdd..193764c47 100644 --- a/docs/snippets/_sdk-reduce-latency.mdx +++ b/docs/snippets/_sdk-reduce-latency.mdx @@ -2,6 +2,6 @@ By default, in the production environment, UID2 SDKs make API calls to a UID2 se For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. -For the list of valid base URLs, see [Environments](../getting-started/gs-environments.md). +For the list of valid base URLs, see [Environments](/docs/getting-started/gs-environments.md). You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index 544f2ae3b..94b88452f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -1 +1,361 @@ -xxxxxx \ No newline at end of file +--- +title: UID2 Client-Server Integration Guide for Mobile +sidebar_label: Client-Server Integration for Mobile +pagination_label: UID2 Client-Server Integration Guide for Mobile +description: Setting up a mobile integration with token generate on server and refresh on client. +hide_table_of_contents: false +sidebar_position: 04 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Link from '@docusaurus/Link'; +import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; +import EnableLogging from '/docs/snippets/_mobile-docs-enable-logging.mdx'; +import GMAIMA_Plugins from '/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx'; + +# UID2 Client-Server Integration Guide for Mobile + +This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens server-side via either a public or Private Operator and then passing the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   + +This is called Client-Server Integration because some integration steps are client-side and some are server-side. + +If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. + +This page provides a high-level overview of integration steps and links to additional documentation. + + + +(**GWH__SW_001 do we need to have a "Mobile SDK Version" section as we do in the client-side doc?**) + +(**GWH__SW_002 in the client-side doc we have a separate "Opt-Out Handling" section. I think it would be good to have that here also. opt-out is mentioned only once in this doc.**) + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: + +## Overview + +UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: + +- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. +- Automatically refreshes UID2 tokens. + +You'll need to complete the following steps: + +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). +2. [Implement server-side token generatio](#implement-server-side-token-generation). +3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). +4. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). +5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). +6. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). + +## Complete the UID2 Account Setup + +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). + +When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). + +## Client-Server Mobile Integration Data Flow Overview + +The following diagram shows the data flow that the publisher must implement for UID2 client-server mobile integration. + +This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. + +**GWH__KL_01: diagram updates to remove TTD colors at least?**) + +![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) + + + +## Implement Server-Side Token Generation + +The first step of UID2 integration is to be able to generate the UID2 token on your server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. + +There are two approaches to generating UID2 tokens on the server side by providing directly identifying information (DII) (email address or phone number): + +- Integration with an SDK +- Direct integration to API endpoints. + +Options are summarized in the following table. + +| Integration Solution  | Generate Token | Refresh Token | +| :--- | :--- | :--- | +| [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) | ✅ | ✅ | +| [UID2 SDK for Python](../sdks/uid2-sdk-ref-python.md) | ✅ | ✅ | +| [Direct integration (API endpoints with custom code)](../endpoints/post-token-generate.md) | ✅ | ✅ | + +Whatever integration option you choose to generate the identity (UID2 token and associated values), you'll need to implement one of the following: + +- Call the [POST /token/generate](../endpoints/post-token-generate.md) endpoint. + + The identity output that you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). + +- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. + + For instructions, see [UID2 SDK for Java, Publisher Basic Usage](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Usage for Publishers](../sdks/uid2-sdk-ref-python.md#usage-for-publishers). + + (**GWH__SW_003 in the Python SDK doc there is no Basic Usage section.**) + + If you're using one of these options, the `Identity` response that you need for the rest of this guide is the output of the applicable method, as follows: + + + + + ```java + tokenGenerateResponse.getIdentityJsonString() + ``` + + + + + ```py + token_generate_response.get_identity_json_string() + ``` + + + + +:::important +The endpoint and SDK API returns opt-out status if the DII you are generating the token for has been opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  +::: + +You will need to pass the `Identity` response into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). + +:::note +For security reasons, the API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). +::: + +## Server-Side Token Refresh + +Token refresh is automatically enabled inside the UID2 mobile SDKs; you don't need to manage it explicitly on the server side. + +You might decide to do server-side token refresh if you want to keep your changes in the mobile apps as simple as possible. + +However, if you decide you want to manage token refresh on the server side and not the client/mobile side, you can do so using one of the following: + +- Call the [POST /token/refresh](../endpoints/post-token-refresh.md) endpoint. +- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. + + For instructions, see [UID2 SDK for Java, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-java.md#server-only-integration) or [UID2 SDK for Python, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-python.md#server-only-integration). + +Then, pass the newly refreshed `Identity` value to the mobile app by following the rest of this guide. + +## Add the UID2 Mobile SDK into Your Mobile App + +For installation instructions, refer to one of the following: + +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) + +For example, for Android, follow the UID2 SDK documentation to: +- Add the pre-built UID2 SDK for Android libraries into your mobile app: see [Installation](../sdks/uid2-sdk-ref-android.md#installation). +- Learn how to instantiate the UID2Manager instance in your Android app: see [Android Initialization](../sdks/uid2-sdk-ref-android.md#android-initialization). + here. + + For iOS, refer to the [Usage Guidelines](../sdks/uid2-sdk-ref-ios.md#usage-guidelines). + +## Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initialization: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( + url: URL(string: "https://operator-integ.uidapi.com")! +) +``` + + + + +On iOS, you must set `UID2Settings` before you first access `UID2Manager.shared`. Any changes made to settings after the first access are not read. + +:::note +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. +::: + +## Optional: Reduce Latency by Setting the API Base URL for the Production Environment + + + +To specify a different UID2 server, you can change it in the `init` call: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = " https://global.prod.uidapi.com" +) +``` + + + + +```js +UID2Settings.shared.environment = .singapore +// or +UID2Settings.shared.environment = .custom( + url: URL(string: "https://global.prod.uidapi.com")! +) +``` + + + + +## Configure the UID2 Mobile SDK for Your Mobile App + +After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 identity generated server-side (see [Implement server-side token generation](#implement-server-side-token-generation)), and then pass it into the mobile app using the `setIdentity` method, as shown in the following: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.setIdentity() +``` + + + + +## Token Storage + +After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. + +:::warning +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +::: + +## Pass Generated Token for Bid Stream Use + +(**GWH__KL02 Question from SW: "his is a question for PM probably - bid stream does not exist in UID2 Glossary - should it? I dunno if bid stream actually makes sense to publishers to be honest" Do we add it into glossary... I'd thought everyone would know that term, SW doesn't think so. And, bid stream two words... is that a company decision?**) + +To retrieve the token, in your mobile app, call the following: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If a successful identity was added into the UID2Manager, this method returns a string such as the following: + +``` +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +``` + +You can use this identity to pass downstream for sending in the RTB bid stream. + +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: + +- The identity is invalid. Check to see whether there are any errors from the previous `setIdentity()` call. +- You could enable logging to get more information: see [Enable Logging](#enable-logging). +- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. + +If there is no identity, follow the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation) again, generate a new identity, and pass the result into your mobile app's UID2Manager again. + +## When to Pass a New UID2 Identity into the SDK + +The best way to determine whether a new UID2 identity is required by the UID2 SDK again is to call the `getAdvertisingToken()` method in all cases: + + + + +UID2Manager.getInstance().getAdvertisingToken() + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +On startup/resumption of the app, if `getAdvertisingToken()` returns `null`, it is time to generate new identity on the server by following the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again. + +## Enable Logging + + + +## Enable Automatic Token Refresh in Mobile App/Client Side + +By default, after a valid UID2 identity has been passed into the UID2Manager, it performs automatic token refresh. If for any reason token refresh was disabled, you can enable it with the following method call: + + + + +**Android Java**: + +```java +UID2Manager.getInstance()setAutomaticRefreshEnabled(false) +``` + +**Android Kotlin**: + +```kotlin +UID2Manager.getInstance().automaticRefreshEnabled = false +``` + + + + +```js +UID2Manager.shared.automaticRefreshEnabled = false +``` + + + + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md index 544f2ae3b..f5d77558c 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -1 +1,654 @@ -xxxxxx \ No newline at end of file +--- +title: UID2 Client-Side Integration Guide for Mobile +sidebar_label: Client-Side Integration for Mobile +pagination_label: UID2 Client-Side Integration Guide for Mobile +description: Setting up a mobile integration with token generate and refresh both on the client side. +hide_table_of_contents: false +sidebar_position: 04 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Link from '@docusaurus/Link'; +import ReduceLatency from '/docs/snippets/_sdk-reduce-latency.mdx'; +import GMAIMA_Plugins from '/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx'; +import EnableLogging from '/docs/snippets/_mobile-docs-enable-logging.mdx'; + +# UID2 Client-Side Integration Guide for Mobile + +This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. + +This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). + +The page provides a high-level overview, integration steps, and links to additional documentation. + +UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: + +- Generates UID2 tokens. +- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. +- Automatically refreshes UID2 tokens. + +(**GWH__SW_004: Just an FYI I made the last two items above consistent between both docs (wording was different) lines 47-48 in client-server doc.**) + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: + +To integrate with UID2 client-side, you'll need to complete the following steps: + +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). + +1. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). + +1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + +1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). + +1. Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration. + + + +## Mobile SDK Version + +This guide provides instructions for using version v1.2.0 or higher of either of these UID2 mobile SDKs: + +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) + +For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). + +## Client-Side Integration Example + +For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. + +Follow the applicable instructions, for Android or iOS: + + + + +1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). +1. In Android Studio, open the directory that you checked out. +1. Run the **dev-app** app. +1. When you've started the app, make sure that the **Client Side** checkbox is checked. +1. Enter an email or phone number. + + + + +1. Check out the [main branch of the UID2 SDK For iOS source code repository on GitHub](https://github.com/IABTechLab/uid2-ios-sdk/tree/main). +1. In Xcode, open this project file: + + ```js + Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj + ``` +1. Run the **UID2SDKDevelopmentApp** app scheme. +1. When you've started the app, make sure that the **Client Side** checkbox is checked. +1. Enter an email or phone number. + + + + +Behind the scenes, the development app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity (a UID2 token and associated values) for the email/phone input: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +When the API call is successful, the app displays the resulting identity and persists it inside the `UID2Manager` class. + +The identity includes the generated UID2 advertising token value, which you can retrieve using the `getAdvertisingToken()` method call: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +This method call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). + +### Testing With Your Own Configuration + +By default, the development app uses default values for Subscription ID and public key, which are stored in the following object: + + + + +```js +com.uid2.dev.ui.MainScreenViewModel.Companion +``` + + + + +```js +RootViewModel +``` + + + + +By default, the development app is configured to connect to the UID2 integration environment, as specified in the following Android method call/iOS file: + + + + +```js +com.uid2.UID2Manager.Companion#init +``` + + + + +```js +see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist +``` + + + + +If necessary, you can also change the default Subscription ID and public key to ones assigned to you, and connect to the UID2 Production environment. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). + +## Complete the UID2 Account Setup + +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: + +- Android Application ID +- iOS App Bundle ID +- App Store ID + +When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + +## Add the UID2 Mobile SDK into Your Mobile App + +To add the mobile SDK to your app, follow the applicable documentation: + +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) + +At this point, you are ready to start generating UID2 tokens using the SDK. + +### Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the integration environment instead, provide the following URL in your call to initialize `UID2Manager`: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://operator-integ.uidapi.com")! +) +``` + + + + +:::note +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. +::: + +### Optional: Reduce Latency by Setting the API Base URL for the Production Environment + + + +To specify a different UID2 server, you can make config changes, as shown in the following examples: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = " https://global.prod.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://global.prod.uidapi.com")! +) +// or use a named environment +UID2Settings.shared.environment = .sydney +``` + + + + +## Configure the UID2 Mobile SDK + +UID2 provides the publisher with the following values, which are needed for generating the UID2 token on the client side: + +- Subscription ID +- Public key + +You'll have one set of these values for your testing environment, and a separate set for your production environment. + +To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information (DII) (email address or phone number), into the following method call: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +Once it's configured, the UID2 mobile SDK does the following: + +- Generates a UID2 token for the user +- Stores the token locally on the user’s device +- Automatically refreshes the token as required while your app is open + +:::tip +You can pass the user’s DII to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +::: + +## Format Examples for DII + +The SDK encrypts the hashed DII before sending it to the UID2 service. + +You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. + +The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. + +- Configure for Email Address +- Configure for Hashed Email Address +- Configure for Phone Number +- Configure for Hashed Phone Number + +If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. + +### Email, Unhashed + +The following example configures the UID2 mobile SDK with an email address. + + + + +```js +manager.generateIdentity( + IdentityRequest.Email("test@example.com"), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else { + // email is invalid and cannot be normalized, handle error +} +try await UID2Manager.shared.generateIdentity( + .email(normalizedEmail), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- No normalization or hashing is required by the publisher +- The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. + +### Email, Normalized and Hashed + +The following example configures the UID2 SDK with a hashed email address. + + + + +```js +manager.generateIdentity( + IdentityRequest.EmailHash( + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + ), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +try await UID2Manager.shared.generateIdentity( + .emailHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + +### Phone Number, Unhashed + +The following example configures the UID2 mobile SDK with a phone number. + + + + +```js +manager.generateIdentity( + IdentityRequest.Phone(“+1111111111”), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { + // phone number is invalid and cannot be normalized, handle error +} +try await UID2Manager.shared.generateIdentity( + .phone(normalizedPhone), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). +- The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. + +### Phone Number, Normalized and Hashed + +The following example configures the UID2 mobile SDK with a hashed phone number. + + + + +```js +manager.generateIdentity( + IdentityRequest.PhoneHash( + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + ), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +try await UID2Manager.shared.generateIdentity( + .phoneHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString +) +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + +## Token Storage and Refresh + +After a call to the applicable method listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. + +:::warning +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +::: + +## Pass Generated Token for Bid Stream Use + +In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity, which you can then use in the bid stream. + +First, the method call to generate the identity: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +Then, the method call to get the advertising token: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If successful, this method call returns a non-null string object such as the following: + +```js +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +``` + +You can use this identity to pass downstream for sending in the RTB bid stream. + +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. + +Some possible reasons for this, and some things you could do to troubleshoot, are as follows: + +- The identity is invalid. Check to see whether there are any errors from the previous `generateIdentity()` call. +- You could enable logging to get more information: see [Enable Logging](#enable-logging). +- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. + +If there is no identity, you'll need to call the `generateIdentity()` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). + +For more information, see [When to Pass a New UID2 Identity into the SDK](#when-to-pass-a-new-uid2-identity-into-the-sdk). + +## When to Pass a New UID2 Identity into the SDK + +The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. + +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity()` method again to generate a new identity and get the resulting UID2 token. + +The only exception is if the following Android method/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it: + + + + +```js +UID2Manager.getInstance().getIdentityStatus() +``` + + + + +```js +UID2Manager.shared.identityStatus +``` + + + + +The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If `getAdvertisingToken()` returns `null`, you'll need to generate a new token. Pass the DII into a call to the `generateIdentity()` method again. + +## Opt-Out Handling + +If the DII provided to the `generateIdentity()` method has been opted out of UID2, this method returns `null`. To check the status of the UID2 identity, you can call the following: + + + + +```js +UID2Manager.getInstance().getIdentityStatus() +``` + + + + +```js +UID2Manager.shared.identityStatus +``` + + + + +In this case, you might want to avoid making repeated calls to check the status of the UID2 identity, because if the DII has a status of opted out, the UID2 token is not generated. + +## Enable Logging + + + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md index 191ca609a..343670c51 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md @@ -14,7 +14,9 @@ import Link from '@docusaurus/Link'; This guide is an overview of integration options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. -This guide groups those two SDKs as UID2 mobile SDKs. +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: -This documentation is for the UID2 GMA Plugin for iOS version 0.3.0. +This documentation is for the UID2 GMA Plugin for iOS version 0.3.0 or later. ## GitHub Repository diff --git a/docs/guides/mobile-plugin-ima-ios.md b/docs/guides/mobile-plugin-ima-ios.md index ea166d08a..93e7009c8 100644 --- a/docs/guides/mobile-plugin-ima-ios.md +++ b/docs/guides/mobile-plugin-ima-ios.md @@ -19,7 +19,7 @@ This plugin simplifies integration with Google Interactive Media Ads (IMA) for a -This documentation is for the UID2 IMA Plugin for iOS version 0.3.0. +This documentation is for the UID2 IMA Plugin for iOS version 0.3.0 or later. ## GitHub Repository diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 49988b7c8..1ad80bac7 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -28,6 +28,12 @@ import Link from '@docusaurus/Link'; - [Android Initialization](#android-initialization) - [Code Samples](#code-samples) --> +You can use the UID2 SDK for Android to facilitate the process of performing the following activities: + +- Generating or establishing client identity using UID2. +- Retrieving advertising tokens on iOS devices for bid stream use. + + You can use the UID2 SDK for Android to facilitate the process of establishing client identity using UID2 and retrieving advertising tokens on Android devices for use in the bid stream. The following Android-related plugins, and associated documentation, are also available. @@ -52,10 +58,7 @@ This SDK simplifies integration with UID2 for any publishers who want to support ## API Permissions To use this SDK, you'll need to complete the UID2 account setup by following the steps described in the [Account Setup](../getting-started/gs-account-setup.md) page. - -You'll be granted permission to use specific functions offered by the SDK, and given credentials for that access. Bear in mind that there might be functions in the SDK that you don't have permission to use. For example, publishers get a specific API permission to generate and refresh tokens, but the SDK might support other activities, such as sharing, which require a different API permission. - -For details, see [API Permissions](../getting-started/gs-permissions.md). +You'll be granted permission to use specific functions offered by the SDK, and given credentials for that access. ## SDK Version @@ -121,17 +124,64 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: ## Usage Guidelines +The **UID2Manager** singleton is the primary developer API for the UID2 SDK for Android. It is responsible for storing, refreshing, and retrieving UID2 Identity. + +For Android, you must initialize the `UID2Manager` manually before you can use it. See [Android Initialization](#android-initialization). + There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using DII - email (hash) or phone no (hash). For instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). +1. Generate the UID2 identity using DII - email (hash) or phone no (hash). For integration instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). 2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. -The **UID2Manager** singleton is the primary developer API for the UID2 Android and iOS SDKs. It is responsible for storing, refreshing, and retrieving UID2 Identity. +## Android Initialization + +The Android implementation expects the singleton to be initialized before use. This does two things: + +- It allows for easier access later. + +- It allows the consuming application to potentially provide its own network instance, responsible for making requests. + +The initialization can be done during the creation of the APPLICATION instance, as shown in the following example: + +```js +class MyApplication : Application() { + override fun onCreate() { + super.onCreate() + // Initialize the UID2Manager class. Use DefaultNetworkSession rather than providing our own + // custom implementation. This can be done to allow wrapping something like OkHttp. + UID2Manager.init(this.applicationContext) +``` + +## Code Samples + +The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 Android SDK. + +Generate an initial UID2 Identity (refer to [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): +``` javascript +UID2Manager.getInstance().generateIdentity( + identityRequest: IdentityRequest, + subscriptionId: String, + publicKey: String, + onResult: (GenerateIdentityResult) -> Unit +) +``` +Set the UID2 Identity (refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk-for-your-mobile-app)): + +```js +UID2Manager.getInstance().setIdentity(identity: UID2Identity) +``` + +Get the UID2 token (advertising token) to pass to the Advertising SDK (for ad request or bid stream use): + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + -For Android, you must initialize the `UID2Manager` manually before you can use it. See [Android Initialization](#android-initialization). ## UID2Manager API @@ -186,37 +236,3 @@ The Identity variable stores and returns the current UID2Identity data object be The identityStatus variable stores and returns the status of the current UID2 Identity being managed by the SDK. -## Android Initialization - -The Android implementation expects the singleton to be initialized before use. This does two things: - -- It allows for easier access later. - -- It allows the consuming application to potentially provide its own network instance, responsible for making requests. - -The initialization can be done during the creation of the APPLICATION instance, as shown in the following example: - -```js -class MyApplication : Application() { - override fun onCreate() { - super.onCreate() - // Initialize the UID2Manager class. Use DefaultNetworkSession rather than providing our own - // custom implementation. This can be done to allow wrapping something like OkHttp. - UID2Manager.init(this.applicationContext) -``` - -## Code Samples - -The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 Android SDK. - -Set the Initial UID2 Identity: - -```js -UID2Manager.getInstance().setIdentity(identity: UID2Identity) -``` - -Get the UID2 token (advertising token) to pass to the Advertising SDK: - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index 75d357202..eebca0d02 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -25,7 +25,6 @@ import Link from '@docusaurus/Link'; - [UID2Manager API](#uid2manager-api) - [Functions](#functions) - [Variables](#variables) -- [Android Initialization](#android-initialization) - [Code Samples](#code-samples) --> You can use the UID2 SDK for iOS to facilitate the process of performing the following activities: @@ -40,9 +39,8 @@ The following iOS-related plugins, and associated documentation, are also availa | To use the Google Mobile Ads (GMA) SDK to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from iOS/tvOS apps | [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios.md) | | To use the Google Interactive Media Ads SDK for iOS to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from iOS/tvOS apps | [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios.md) | -:::note +## tvOS Support Although this page refers to UID2 SDK for iOS, this SDK also supports tvOS. For the required tvOS version, see [Minimum Requirements](#minimum-requirements). -::: ## Functionality @@ -55,10 +53,7 @@ This SDK simplifies integration with UID2 for any publishers who want to support ## API Permissions To use this SDK, you'll need to complete the UID2 account setup by following the steps described in the [Account Setup](../getting-started/gs-account-setup.md) page. - -You'll be granted permission to use specific functions offered by the SDK, and given credentials for that access. Bear in mind that there might be functions in the SDK that you don't have permission to use. For example, publishers get a specific API permission to generate and refresh tokens, but the SDK might support other activities, such as sharing, which require a different API permission. - -For details, see [API Permissions](../getting-started/gs-permissions.md). +You'll be granted permission to use specific functions offered by the SDK, and given credentials for that access. ## SDK Version @@ -110,23 +105,51 @@ dependencies: [ Add the following entry in the Package Dependencies for your apps: -| Name | Location | Dependency Rule | -| :--- | :--- |:-----------------------------| -| uid2-ios-sdk | git@github.com:IABTechLab/uid2-ios-sdk.git | Up to next major version: 1.0.0 < 2.0.0 | +| Name | Location | Dependency Rule | +| :--- | :--- |:----------------------------------------| +| uid2-ios-sdk | git@github.com:IABTechLab/uid2-ios-sdk.git | Up to next major version: 1.2.0 < 2.0.0 | ## Usage Guidelines +The **UID2Manager** singleton is the primary developer API for the UID2 SDK for iOS. It is responsible for storing, refreshing, and retrieving UID2 Identity. + +For iOS, the `UID2Manager` is initialized automatically the first time it is accessed. You can configure it to support automatic or manual refresh capabilities. + There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_005 add fragment to link.**) +1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-side). -2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md).(**GWH__SW_006 add fragment to link.**) +2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server). The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. -The **UID2Manager** singleton is the primary developer API for the UID2 Android and iOS SDKs. It is responsible for storing, refreshing, and retrieving UID2 Identity. -For iOS, the `UID2Manager` is initialized automatically the first time it is accessed. You can configure it to support automatic or manual refresh capabilities. +## Code Samples + +The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 iOS SDK. + +Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): + +```js +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) +``` +Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk-for-your-mobile-app)): + +``` javascript +UID2Manager.shared.setIdentity(_ identity: UID2Identity) +``` + + +Get the UID2 token (advertising token) to pass to the Advertising SDK (for ad request or bid stream use): + +```js +UID2Manager.shared.getAdvertisingToken() +``` ## UID2Manager API @@ -181,22 +204,3 @@ The Identity variable stores and returns the current UID2Identity data object be The identityStatus variable stores and returns the status of the current UID2 Identity being managed by the SDK. -## Code Samples - -The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 iOS SDK. - -Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md)):(**GWH__SW_007 add fragment to link.**) - -```js -UID2Manager.shared.generateIdentity( - _ identity: IdentityType, - subscriptionID: String, - serverPublicKey: String, - appName: String? = nil -) -``` -Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md)):(**GWH__SW_008 add fragment to link.**) - -```js -UID2Manager.shared.getAdvertisingToken() -``` From f3e66553df4d896cbdc7bc350b0d307b42260381 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Mon, 13 May 2024 18:16:54 +1000 Subject: [PATCH 14/47] fixed issues in android/ios ref guides and swapping some sections around --- docs/sdks/uid2-sdk-ref-android.md | 25 ++++++++++--------------- docs/sdks/uid2-sdk-ref-ios.md | 2 +- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 1ad80bac7..de4550cee 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -124,24 +124,11 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: ## Usage Guidelines -The **UID2Manager** singleton is the primary developer API for the UID2 SDK for Android. It is responsible for storing, refreshing, and retrieving UID2 Identity. +The **UID2Manager** singleton is the primary developer API for the UID2 SDK for Android. It is responsible for storing, refreshing, and retrieving UID2 Identity and according token. -For Android, you must initialize the `UID2Manager` manually before you can use it. See [Android Initialization](#android-initialization). - -There are two ways to establish an initial UID2 Identity: - -1. Generate the UID2 identity using DII - email (hash) or phone no (hash). For integration instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). - -2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). - -The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. - -## Android Initialization - -The Android implementation expects the singleton to be initialized before use. This does two things: +You must initialize the `UID2Manager` manually before you can use it, as the SDK expects the singleton to be initialized before use. This does two things: - It allows for easier access later. - - It allows the consuming application to potentially provide its own network instance, responsible for making requests. The initialization can be done during the creation of the APPLICATION instance, as shown in the following example: @@ -155,6 +142,14 @@ class MyApplication : Application() { UID2Manager.init(this.applicationContext) ``` +There are two ways to establish an initial UID2 Identity: + +1. Generate the UID2 identity using DII - email (hash) or phone no (hash). For integration instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). + +2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). + +The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity is established. This is because the refresh functionality relies on the refresh tokens that are part of the UID2 Identity. + ## Code Samples The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 Android SDK. diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index eebca0d02..0f6bf4a5a 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -111,7 +111,7 @@ Add the following entry in the Package Dependencies for your apps: ## Usage Guidelines -The **UID2Manager** singleton is the primary developer API for the UID2 SDK for iOS. It is responsible for storing, refreshing, and retrieving UID2 Identity. +The **UID2Manager** singleton is the primary developer API for the UID2 SDK for iOS. It is responsible for storing, refreshing, and retrieving UID2 Identity and according token. For iOS, the `UID2Manager` is initialized automatically the first time it is accessed. You can configure it to support automatic or manual refresh capabilities. From c4982b6e6aa37dc9423b007b9a813d58bcdcf6e1 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Mon, 13 May 2024 18:17:36 +1000 Subject: [PATCH 15/47] fixed issues in android/ios ref guides and swapping some sections around --- docs/sdks/uid2-sdk-ref-android.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index de4550cee..c2f49f578 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -22,11 +22,11 @@ import Link from '@docusaurus/Link'; - [Installing with Gradle](#installing-with-gradle) - [Installing with Maven](#installing-with-maven) - [Usage Guidelines](#usage-guidelines) +- [Code Samples](#code-samples) - [UID2Manager API](#uid2manager-api) - [Functions](#functions) - [Variables](#variables) -- [Android Initialization](#android-initialization) -- [Code Samples](#code-samples) --> + --> You can use the UID2 SDK for Android to facilitate the process of performing the following activities: From 2c4de08fdae91ad2870c5682f1fef627d8558e07 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Mon, 13 May 2024 18:22:09 +1000 Subject: [PATCH 16/47] Rename UID2 Android/iOS SDK to UID2 SDK for Android/iOS --- docs/guides/mobile-plugin-gma-android.md | 4 ++-- docs/guides/mobile-plugin-gma-ios.md | 4 ++-- docs/guides/mobile-plugin-ima-android.md | 4 ++-- docs/guides/mobile-plugin-ima-ios.md | 4 ++-- docs/sdks/uid2-sdk-ref-android.md | 6 +++--- docs/sdks/uid2-sdk-ref-ios.md | 6 +++--- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/guides/mobile-plugin-gma-android.md b/docs/guides/mobile-plugin-gma-android.md index f4cd55ab4..35cae664f 100644 --- a/docs/guides/mobile-plugin-gma-android.md +++ b/docs/guides/mobile-plugin-gma-android.md @@ -41,9 +41,9 @@ To run this plugin, install the following: ## Installation -Prerequisite: Install the Google Mobile Ads SDK and the UID2 Android SDK. +Prerequisite: Install the Google Mobile Ads SDK and the UID2 SDK for Android. -Install the UID2 Android GMA Plugin v0.5.0 to an existing app with the UID2 Android SDK and Google GMA SDK installed. There are two installation options: +Install the UID2 Android GMA Plugin v0.5.0 to an existing app with the UID2 SDK for Android and Google GMA SDK installed. There are two installation options: - [Gradle](#gradle) - [Maven](#maven) diff --git a/docs/guides/mobile-plugin-gma-ios.md b/docs/guides/mobile-plugin-gma-ios.md index bb4914f32..01d92a252 100644 --- a/docs/guides/mobile-plugin-gma-ios.md +++ b/docs/guides/mobile-plugin-gma-ios.md @@ -41,9 +41,9 @@ To run this plugin, install the following: ## Installation -Prerequisite: Install the Google Mobile Ads SDK and the UID2 iOS SDK. +Prerequisite: Install the Google Mobile Ads SDK and the UID2 SDK for iOS. -Install the UID2 iOS GMA Plugin via Swift Package Manager to an existing app with the UID2 iOS SDK and the Google Mobile Ads SDK installed: +Install the UID2 iOS GMA Plugin via Swift Package Manager to an existing app with the UID2 SDK for iOS and the Google Mobile Ads SDK installed: ```js .package(url: https://github.com/IABTechLab/uid2-ios-plugin-google-gma.git, exact: "0.3.0") diff --git a/docs/guides/mobile-plugin-ima-android.md b/docs/guides/mobile-plugin-ima-android.md index ed482ab5f..896813a6f 100644 --- a/docs/guides/mobile-plugin-ima-android.md +++ b/docs/guides/mobile-plugin-ima-android.md @@ -41,9 +41,9 @@ To run this plugin, install the following: ## Installation -Prerequisite: Install the Google Interactive Media Ads SDK and the UID2 Android SDK. +Prerequisite: Install the Google Interactive Media Ads SDK and the UID2 SDK for Android. -Install the UID2 Android IMA Plugin to an existing app with the UID2 Android SDK and Google IMA SDK installed. There are two installation options: +Install the UID2 Android IMA Plugin to an existing app with the UID2 SDK for Android and Google IMA SDK installed. There are two installation options: - [Gradle](#gradle) - [Maven](#maven) diff --git a/docs/guides/mobile-plugin-ima-ios.md b/docs/guides/mobile-plugin-ima-ios.md index 93e7009c8..d4fbff2f2 100644 --- a/docs/guides/mobile-plugin-ima-ios.md +++ b/docs/guides/mobile-plugin-ima-ios.md @@ -41,9 +41,9 @@ To run this plugin, install the following: ## Installation -Prerequisite: Install the Google Interactive Media Ads SDK and the UID2 iOS SDK. +Prerequisite: Install the Google Interactive Media Ads SDK and the UID2 SDK for iOS. -Install the UID2 iOS IMA Plugin via Swift Package Manager to an existing app with the UID2 iOS SDK and the Google Interactive Media Ads SDK installed. +Install the UID2 iOS IMA Plugin via Swift Package Manager to an existing app with the UID2 SDK for iOS and the Google Interactive Media Ads SDK installed. ``` .package(url: https://github.com/IABTechLab/uid2-ios-plugin-google-ima.git, exact: "0.3.0") diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index c2f49f578..4e6afd67a 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -64,13 +64,13 @@ You'll be granted permission to use specific functions offered by the SDK, and g -This documentation is for the UID2 Android SDK version 1.2.0 and later. +This documentation is for the UID2 SDK for Android version 1.2.0 and later. For information about specific release versions, see [https://github.com/IABTechLab/uid2-android-sdk/releases](https://github.com/IABTechLab/uid2-android-sdk/releases). ## Features -The UID2 Android SDK is designed to manage UID2 identity on behalf of Android apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. +The UID2 SDK for Android is designed to manage UID2 identity on behalf of Android apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. By default, the SDK automatically refreshes UID2 identity based on expiration dates. However, you can disable this to allow implementing apps to manage the UID2 identity lifecycle manually. @@ -152,7 +152,7 @@ The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity ## Code Samples -The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 Android SDK. +The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 SDK for Android. Generate an initial UID2 Identity (refer to [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): ``` javascript diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index 0f6bf4a5a..ea9313820 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -59,11 +59,11 @@ You'll be granted permission to use specific functions offered by the SDK, and g -This documentation is for the UID2 iOS SDK version 1.2.0 and later. +This documentation is for the UID2 SDK for iOS version 1.2.0 and later. ## Features -The UID2 iOS SDK is designed to manage UID2 identity on behalf of iOS apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. +The UID2 SDK for iOS is designed to manage UID2 identity on behalf of iOS apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. By default, the SDK automatically refreshes UID2 identity based on expiration dates. However, you can disable this to allow implementing apps to manage the UID2 identity lifecycle manually. @@ -126,7 +126,7 @@ The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity ## Code Samples -The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 iOS SDK. +The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 SDK for iOS. Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): From e768be45eca4a004ff39a55219f496de70d61e89 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Mon, 13 May 2024 20:20:47 -0400 Subject: [PATCH 17/47] edits from SW 5/13 --- docs/endpoints/post-identity-buckets.md | 2 +- docs/endpoints/post-identity-map.md | 2 +- docs/endpoints/post-token-validate.md | 2 +- docs/getting-started/gs-account-setup.md | 6 +- .../integration-mobile-client-server.md | 45 +- docs/guides/integration-mobile-client-side.md | 79 +-- docs/guides/publisher-client-side.md | 2 +- docs/guides/summary-guides.md | 4 +- docs/overviews/overview-publishers.md | 4 +- docs/sdks/uid2-sdk-ref-android.md | 7 +- docs/sdks/uid2-sdk-ref-ios.md | 5 +- .../_mobile_docs_gmaima-plugin-gss.mdx | 2 +- .../getting-started/gs-account-setup.md | 8 + .../integration-mobile-client-server.md | 344 +--------- .../guides/integration-mobile-client-side.md | 637 +----------------- .../guides/integration-mobile-overview.md | 52 +- .../_mobile_docs_gmaima-plugin-gss.mdx | 2 +- 17 files changed, 88 insertions(+), 1115 deletions(-) diff --git a/docs/endpoints/post-identity-buckets.md b/docs/endpoints/post-identity-buckets.md index 1d6293a0d..54cf88332 100644 --- a/docs/endpoints/post-identity-buckets.md +++ b/docs/endpoints/post-identity-buckets.md @@ -23,7 +23,7 @@ Used by: This endpoint is used mainly by advertisers and data providers. For det | Path Parameter | Data Type | Attribute | Description | | :--- | :--- | :--- | :--- | -| `{environment}` | string | Required | Testing environment: `https://operator-integ.uidapi.com`
Production environment: `https://prod.uidapi.com`
For a full list, including regional operators, see [Environments](../getting-started/gs-environments.md). | +| `{environment}` | string | Required | Integration environment: `https://operator-integ.uidapi.com`
Production environment: `https://prod.uidapi.com`
For a full list, including regional operators, see [Environments](../getting-started/gs-environments.md). | >NOTE: The integration environment and the production environment require different API keys. diff --git a/docs/endpoints/post-identity-map.md b/docs/endpoints/post-identity-map.md index 6db6fc24b..02212f8d2 100644 --- a/docs/endpoints/post-identity-map.md +++ b/docs/endpoints/post-identity-map.md @@ -32,7 +32,7 @@ Here's what you need to know: | Path Parameter | Data Type | Attribute | Description | | :--- | :--- | :--- | :--- | -| `{environment}` | string | Required | Testing environment: `https://operator-integ.uidapi.com`
Production environment: `https://prod.uidapi.com`
For a full list, including regional operators, see [Environments](../getting-started/gs-environments.md). | +| `{environment}` | string | Required | Integration environment: `https://operator-integ.uidapi.com`
Production environment: `https://prod.uidapi.com`
For a full list, including regional operators, see [Environments](../getting-started/gs-environments.md). | >NOTE: The integration environment and the production environment require different API keys. diff --git a/docs/endpoints/post-token-validate.md b/docs/endpoints/post-token-validate.md index 48bb8e8e6..bb8bac45f 100644 --- a/docs/endpoints/post-token-validate.md +++ b/docs/endpoints/post-token-validate.md @@ -25,7 +25,7 @@ Used by: This endpoint is used mainly by publishers. | Path Parameter | Data Type | Attribute | Description | | :--- | :--- | :--- | :--- | -| `{environment}` | string | Required | Testing environment: `https://operator-integ.uidapi.com`
Production environment: `https://prod.uidapi.com`
For a full list, including regional operators, see [Environments](../getting-started/gs-environments.md). | +| `{environment}` | string | Required | Integration environment: `https://operator-integ.uidapi.com`
Production environment: `https://prod.uidapi.com`
For a full list, including regional operators, see [Environments](../getting-started/gs-environments.md). | >NOTE: The integration environment and the production environment require different API keys. diff --git a/docs/getting-started/gs-account-setup.md b/docs/getting-started/gs-account-setup.md index 6e7e77fd0..40b17495a 100644 --- a/docs/getting-started/gs-account-setup.md +++ b/docs/getting-started/gs-account-setup.md @@ -45,7 +45,7 @@ All participants will need to provide at least the following information: ### Client-Side Implementation for Publishers -If you're a publisher publishing to web (rather than mobile), and you determine that you want to implement UID2 so that tokens are generated on the client side, you'll also need to provide a list of **domain names** for your sites. This is a security measure, for client-side implementation only. +If you're a publisher publishing to [web](../overviews/overview-publishers.md#web-integrations) rather than [mobile](../overviews/overview-publishers.md#mobile-integrations), and you determine that you want to implement UID2 so that tokens are generated on the client side, you'll also need to provide a list of **domain names** for your sites. This is a security measure, for client-side implementation only. :::tip Only top-level (root-level) domains are required for account setup. For example, if you're going to implement UID2 to generate tokens on the client side on example.com, shop.example.com, and example.org, you only need to provide the domain names example.com and example.org. @@ -53,10 +53,10 @@ Only top-level (root-level) domains are required for account setup. For example, ### Client-Side Mobile Integrations -If you're publishing to mobile apps, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: +If you're publishing to [mobile apps](../guides/integration-mobile-client-side.md), you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - Android Application ID -- iOS App Bundle ID +- iOS App Store ID - App Store ID ## Credentials diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 94b88452f..a7224854e 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -16,7 +16,7 @@ import GMAIMA_Plugins from '/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx'; # UID2 Client-Server Integration Guide for Mobile -This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens server-side via either a public or Private Operator and then passing the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   +This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens server-side via a Public Operator or Private Operator and then passing the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   This is called Client-Server Integration because some integration steps are client-side and some are server-side. @@ -26,6 +26,7 @@ This page provides a high-level overview of integration steps and links to addit -(**GWH__SW_001 do we need to have a "Mobile SDK Version" section as we do in the client-side doc?**) -(**GWH__SW_002 in the client-side doc we have a separate "Opt-Out Handling" section. I think it would be good to have that here also. opt-out is mentioned only once in this doc.**) +## Mobile SDK Version + +This guide provides instructions for using version v1.2.0 or higher of either of these UID2 mobile SDKs: + +- UID2 SDK for Android +- UID2 SDK for iOS + +For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). :::note This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. @@ -59,9 +66,9 @@ UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iO You'll need to complete the following steps: 1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). -2. [Implement server-side token generatio](#implement-server-side-token-generation). +2. [Implement server-side token generation](#implement-server-side-token-generation). 3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). -4. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). +4. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). 5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). 6. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). @@ -135,7 +142,7 @@ Whatever integration option you choose to generate the DII you are generating the token for has been opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  ::: -You will need to pass the `Identity` response into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). +You will need to pass the `Identity` response into the mobile app: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). :::note For security reasons, the API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). @@ -165,8 +172,9 @@ For installation instructions, refer to one of the following: For example, for Android, follow the UID2 SDK documentation to: - Add the pre-built UID2 SDK for Android libraries into your mobile app: see [Installation](../sdks/uid2-sdk-ref-android.md#installation). -- Learn how to instantiate the UID2Manager instance in your Android app: see [Android Initialization](../sdks/uid2-sdk-ref-android.md#android-initialization). - here. +- Learn how to instantiate the UID2Manager instance in your Android app: see [Usage Guidelines](../sdks/uid2-sdk-ref-android.md#usage-guidelines). + +(**GWH__SW_35 is the Android link correct? It was a link to "Android Initialization" which doesn't exist. Showed up on a broken links check and I updated it as above.**) For iOS, refer to the [Usage Guidelines](../sdks/uid2-sdk-ref-ios.md#usage-guidelines). @@ -188,7 +196,8 @@ UID2Manager.init( ```js -// Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( url: URL(string: "https://operator-integ.uidapi.com")! ) ``` @@ -196,8 +205,6 @@ UID2Manager.init(
-On iOS, you must set `UID2Settings` before you first access `UID2Manager.shared`. Any changes made to settings after the first access are not read. - :::note Bear in mind the following differences between environments: - Tokens from the UID2 integration environment are not valid for passing to the bid stream. @@ -234,7 +241,7 @@ UID2Settings.shared.environment = .custom(
-## Configure the UID2 Mobile SDK for Your Mobile App +## Configure the UID2 Mobile SDK After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 identity generated server-side (see [Implement server-side token generation](#implement-server-side-token-generation)), and then pass it into the mobile app using the `setIdentity` method, as shown in the following: @@ -242,7 +249,7 @@ After you've instantiated `UID2Manager` correctly in your mobile app, you'll nee ```js -UID2Manager.getInstance().generateIdentity() +UID2Manager.getInstance().setIdentity() ``` @@ -255,6 +262,8 @@ UID2Manager.shared.setIdentity()
+(**GWH_SW_32 line 251 above you said: "should be setIdentity() instead" but I'm not sure of the whole of it. I don't see the anywhere else not sure it's correct. https://github.com/IABTechLab/uid2docs/pull/557/files#r1598149873**) + ## Token Storage After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. @@ -296,20 +305,24 @@ You can use this identity to pass downstream for sending in the RTB bid stream. If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: -- The identity is invalid. Check to see whether there are any errors from the previous `setIdentity()` call. +- The identity is invalid. - The identity is invalid. In this scenario there are a couple of options: + - Check to see whether there are any errors from the previous `setIdentity()` call. + - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. - You could enable logging to get more information: see [Enable Logging](#enable-logging). - The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. If there is no identity, follow the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation) again, generate a new identity, and pass the result into your mobile app's UID2Manager again. -## When to Pass a New UID2 Identity into the SDK +## When to Pass DII into the SDK The best way to determine whether a new UID2 identity is required by the UID2 SDK again is to call the `getAdvertisingToken()` method in all cases: +```js UID2Manager.getInstance().getAdvertisingToken() +``` diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 1e0a3019c..0aafdfdc9 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -24,12 +24,9 @@ The page provides a high-level overview, integration steps, and links to additio UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: -- Generates UID2 tokens. -- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. +- Generates a UID2 identity (a UID2 token and associated values) and persists it in local file storage. - Automatically refreshes UID2 tokens. -(**GWH__SW_004: Just an FYI I made the last two items above consistent between both docs (wording was different) lines 47-48 in client-server doc.**) - :::note This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. ::: @@ -56,7 +53,7 @@ To integrate with UID2 client-side, you'll need to complete the following steps: - [Format Examples for DII](#format-examples-for-dii) - [Token Storage and Refresh](#token-storage-and-refresh) - [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use) -- [When to Pass a New UID2 Identity into the SDK](#when-to-pass-a-new-uid2-identity-into-the-sdk) +- [When to Pass DII into the SDK](#when-to-pass-dii-into-the-sdk) - [Opt-Out Handling](#opt-out-handling) - [Enable Logging](#enable-logging) - [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration) --> @@ -65,8 +62,8 @@ To integrate with UID2 client-side, you'll need to complete the following steps: This guide provides instructions for using version v1.2.0 or higher of either of these UID2 mobile SDKs: -- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) -- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) +- UID2 SDK for Android +- UID2 SDK for iOS For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). @@ -190,7 +187,7 @@ If necessary, you can also change the default Subscription ID and public key to To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - Android Application ID -- iOS App Bundle ID +- iOS App Store ID - App Store ID When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). @@ -275,7 +272,7 @@ UID2 provides the publisher with the following values, which are needed for gene - Subscription ID - Public key -You'll have one set of these values for your testing environment, and a separate set for your production environment. +You'll have one set of these values for your Integration environment, and a separate set for your production environment. To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information (DII) (email address or phone number), into the following method call: @@ -298,15 +295,15 @@ UID2Manager.shared.generateIdentity() Once it's configured, the UID2 mobile SDK does the following: -- Generates a UID2 token for the user -- Stores the token locally on the user’s device -- Automatically refreshes the token as required while your app is open +- Generates a UID2 identity, including token, for the user. +- Stores the token locally on the user’s device. +- Automatically refreshes the token as required while your app is open. :::tip You can pass the user’s DII to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). ::: -## Format Examples for DII +### Format Examples for DII The SDK encrypts the hashed DII before sending it to the UID2 service. @@ -321,7 +318,7 @@ The following examples demonstrate the different ways that you can configure the If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. -### Email, Unhashed +#### Email, Unhashed The following example configures the UID2 mobile SDK with an email address. @@ -363,7 +360,7 @@ In this scenario: - No normalization or hashing is required by the publisher - The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. -### Email, Normalized and Hashed +#### Email, Normalized and Hashed The following example configures the UID2 SDK with a hashed email address. @@ -404,7 +401,7 @@ In this scenario: - The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). - The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. -### Phone Number, Unhashed +#### Phone Number, Unhashed The following example configures the UID2 mobile SDK with a phone number. @@ -446,7 +443,7 @@ In this scenario: - The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). - The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. -### Phone Number, Normalized and Hashed +#### Phone Number, Normalized and Hashed The following example configures the UID2 mobile SDK with a hashed phone number. @@ -489,7 +486,9 @@ In this scenario: ## Token Storage and Refresh -After a call to the applicable method listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. +After a call to the applicable method listed in [Format Examples for DII](#format-examples-for-dii) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. + +(**GWH_SW_31 updated the above but not sure it's now pointing to the correct section?**) :::warning The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. @@ -497,28 +496,7 @@ The format of the file stored in the local file storage, or the filename itself, ## Pass Generated Token for Bid Stream Use -In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity, which you can then use in the bid stream. - -First, the method call to generate the identity: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -Then, the method call to get the advertising token: +In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity. The next step is to call the `getAdvertisingToken()` method, which gets the advertising token, as follows: @@ -537,27 +515,30 @@ UID2Manager.shared.getAdvertisingToken() -If successful, this method call returns a non-null string object such as the following: +If successful, this method call returns the token—a non-null string object such as the following: ```js AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== ``` -You can use this identity to pass downstream for sending in the RTB bid stream. +You can use this token to pass downstream for sending in the RTB bid stream. If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: -- The identity is invalid. Check to see whether there are any errors from the previous `generateIdentity()` call. +- The identity is invalid. In this scenario there are a couple of options: + - Check to see whether there are any errors from the previous `generateIdentity()` call. + - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. - You could enable logging to get more information: see [Enable Logging](#enable-logging). - The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. +- If there is no identity, you'll need to call the `generateIdentity()` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). -For more information, see [When to Pass a New UID2 Identity into the SDK](#when-to-pass-a-new-uid2-identity-into-the-sdk). +For more information, see [When to Pass DII into the SDK](#when-to-pass-dii-into-the-sdk) (next section). -## When to Pass a New UID2 Identity into the SDK +## When to Pass DII into the SDK The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: @@ -582,7 +563,7 @@ When this method call completes successfully, the advertising token (UID2 token) If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity()` method again to generate a new identity and get the resulting UID2 token. -The only exception is if the following Android method/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it: +The only exception is if response to the following Android method/iOS object indicates that the DII was opted out of UID2: @@ -601,6 +582,8 @@ UID2Manager.shared.identityStatus +A response status of `OPT_OUT` for Android, or a response object of `optOut` for iOS, indicates that the DII has been opted out of UID2 and no identity/token should be generated for it. + The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: @@ -620,7 +603,7 @@ UID2Manager.shared.getAdvertisingToken() -If `getAdvertisingToken()` returns `null`, you'll need to generate a new token. Pass the DII into a call to the `generateIdentity()` method again. +If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`), you'll need to generate a new token. TO do this, pass the DII into the `generateIdentity()` method again. ## Opt-Out Handling @@ -643,7 +626,7 @@ UID2Manager.shared.identityStatus
-In this case, you might want to avoid making repeated calls to check the status of the UID2 identity, because if the DII has a status of opted out, the UID2 token is not generated. +If the response status indicates that the DII has been opted out of UID2, you might want to avoid making repeated calls to check the status of the UID2 identity: if the DII has a status of opted out, the UID2 token is not generated. ## Enable Logging diff --git a/docs/guides/publisher-client-side.md b/docs/guides/publisher-client-side.md index e3a1ba117..c4ef98280 100644 --- a/docs/guides/publisher-client-side.md +++ b/docs/guides/publisher-client-side.md @@ -139,7 +139,7 @@ UID2 provides the publisher with the following values required to use the client * A Subscription ID * A public key -You'll have one set of these values for your publisher testing environment, and a separate set for your production environment. +You'll have one set of these values for your publisher Integration environment, and a separate set for your production environment. To configure the SDK, call one of the following methods, with an object containing the **public key** and **Subscription ID** that you received during account setup, as well as the user's hashed or unhashed DII (email address or phone number): diff --git a/docs/guides/summary-guides.md b/docs/guides/summary-guides.md index a6862f39c..2c5dd7ed4 100644 --- a/docs/guides/summary-guides.md +++ b/docs/guides/summary-guides.md @@ -56,8 +56,8 @@ The following resources are available for publishers integrating with Android or | Integration Type| Documentation | Content Description | | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | -| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 with changes only within the mobile app (no server-side changes). | +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 by doing the following:
  1. Generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations diff --git a/docs/overviews/overview-publishers.md b/docs/overviews/overview-publishers.md index bd28742cb..fa82f78e8 100644 --- a/docs/overviews/overview-publishers.md +++ b/docs/overviews/overview-publishers.md @@ -110,8 +110,8 @@ The following resources are available for publisher integrations supporting Andr | Integration Type| Documentation | Content Description | | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](../guides/integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | -| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 to generate client identity with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 to manage client identity by doing the following:
  1. generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 with changes only within the mobile app (no server-side changes). | +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 by doing the following:
  1. Generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 4e6afd67a..5bcfd41fe 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -163,7 +163,7 @@ UID2Manager.getInstance().generateIdentity( onResult: (GenerateIdentityResult) -> Unit ) ``` -Set the UID2 Identity (refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk-for-your-mobile-app)): +Set the UID2 Identity (refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk)): ```js UID2Manager.getInstance().setIdentity(identity: UID2Identity) @@ -175,9 +175,6 @@ Get the UID2 token (advertising token) to pass to the Advertising SDK (for ad re UID2Manager.getInstance().getAdvertisingToken() ``` - - - ## UID2Manager API This section includes the functions and variables that are part of the UID2Manager API. @@ -198,7 +195,7 @@ Generate a UID2 Identity using Dire #### setIdentity() -Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Configure the UID2 Mobile SDK for Your Mobile App](../guides/integration-mobile-client-server.md#configure-the-uid2-mobile-sdk-for-your-mobile-app) in the *Client-Server Integration Guide for Mobile*. +Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Configure the UID2 Mobile SDK](../guides/integration-mobile-client-server.md#configure-the-uid2-mobile-sdk) in the *Client-Server Integration Guide for Mobile*. #### resetIdentity() diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index ea9313820..88d25d255 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -138,13 +138,12 @@ UID2Manager.shared.generateIdentity( appName: String? = nil ) ``` -Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk-for-your-mobile-app)): +Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk)): ``` javascript UID2Manager.shared.setIdentity(_ identity: UID2Identity) ``` - Get the UID2 token (advertising token) to pass to the Advertising SDK (for ad request or bid stream use): ```js @@ -171,7 +170,7 @@ Generate a UID2 Identity using Dire #### setIdentity() -Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Configure the UID2 Mobile SDK for Your Mobile App](../guides/integration-mobile-client-server.md#configure-the-uid2-mobile-sdk-for-your-mobile-app) in the *Client-Server Integration Guide for Mobile*. +Sets a UID2 Identity, created server-side, to be managed by the SDK. For details, see [Configure the UID2 Mobile SDK](../guides/integration-mobile-client-server.md#configure-the-uid2-mobile-sdk) in the *Client-Server Integration Guide for Mobile*. #### resetIdentity() diff --git a/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx b/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx index 725f640b5..c67615ab3 100644 --- a/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx +++ b/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx @@ -1,7 +1,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in this guide, you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: +If you intend to generate UID2 tokens to send to the [Google GMA SDK](https://developers.google.com/ad-manager/mobile-ads-sdk) or the [Google IMA SDK](https://developers.google.com/interactive-media-ads/), assuming you have followed the instructions in this guide, you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: - [UID2 GMA Plugin for Android Integration Guide](../guides/mobile-plugin-gma-android.md) - [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios.md) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/gs-account-setup.md b/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/gs-account-setup.md index cb5a9b4f0..1d539efec 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/gs-account-setup.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/gs-account-setup.md @@ -51,6 +51,14 @@ UID2 に興味を示していただいたら、詳細を詰めるために担当 アカウント設定に必要なのは、ルートレベルのドメインだけです。たとえば、example.com、shop.example.com、example.org の Client-Side でトークンを生成するために UID2 を実装する場合、ドメイン名 example.com と example.org だけを提供します。 ::: +### Client-Side Mobile Integrations + +If you're publishing to [mobile apps](../guides/integration-mobile-client-side.md), you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: + +- Android Application ID +- iOS App Store ID +- App Store ID + ## Credentials UID2 に参加する契約を結ぶと、[UID2 credentials](gs-credentials.md) と UID2 を始めるために必要な情報が提供されます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index 94b88452f..dfe41f89a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -16,346 +16,4 @@ import GMAIMA_Plugins from '/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx'; # UID2 Client-Server Integration Guide for Mobile -This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens server-side via either a public or Private Operator and then passing the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   - -This is called Client-Server Integration because some integration steps are client-side and some are server-side. - -If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. - -This page provides a high-level overview of integration steps and links to additional documentation. - - - -(**GWH__SW_001 do we need to have a "Mobile SDK Version" section as we do in the client-side doc?**) - -(**GWH__SW_002 in the client-side doc we have a separate "Opt-Out Handling" section. I think it would be good to have that here also. opt-out is mentioned only once in this doc.**) - -:::note -This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. -::: - -## Overview - -UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: - -- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. -- Automatically refreshes UID2 tokens. - -You'll need to complete the following steps: - -1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). -2. [Implement server-side token generatio](#implement-server-side-token-generation). -3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). -4. [Configure the UID2 mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). -5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). -6. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). - -## Complete the UID2 Account Setup - -To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). - -When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). - -## Client-Server Mobile Integration Data Flow Overview - -The following diagram shows the data flow that the publisher must implement for UID2 client-server mobile integration. - -This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. - -**GWH__KL_01: diagram updates to remove TTD colors at least?**) - -![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) - - - -## Implement Server-Side Token Generation - -The first step of UID2 integration is to be able to generate the UID2 token on your server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. - -There are two approaches to generating UID2 tokens on the server side by providing directly identifying information (DII) (email address or phone number): - -- Integration with an SDK -- Direct integration to API endpoints. - -Options are summarized in the following table. - -| Integration Solution  | Generate Token | Refresh Token | -| :--- | :--- | :--- | -| [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) | ✅ | ✅ | -| [UID2 SDK for Python](../sdks/uid2-sdk-ref-python.md) | ✅ | ✅ | -| [Direct integration (API endpoints with custom code)](../endpoints/post-token-generate.md) | ✅ | ✅ | - -Whatever integration option you choose to generate the identity (UID2 token and associated values), you'll need to implement one of the following: - -- Call the [POST /token/generate](../endpoints/post-token-generate.md) endpoint. - - The identity output that you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). - -- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. - - For instructions, see [UID2 SDK for Java, Publisher Basic Usage](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Usage for Publishers](../sdks/uid2-sdk-ref-python.md#usage-for-publishers). - - (**GWH__SW_003 in the Python SDK doc there is no Basic Usage section.**) - - If you're using one of these options, the `Identity` response that you need for the rest of this guide is the output of the applicable method, as follows: - - - - - ```java - tokenGenerateResponse.getIdentityJsonString() - ``` - - - - - ```py - token_generate_response.get_identity_json_string() - ``` - - - - -:::important -The endpoint and SDK API returns opt-out status if the DII you are generating the token for has been opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  -::: - -You will need to pass the `Identity` response into the mobile app: see [Configure the UID2 Mobile SDK for your mobile app](#configure-the-uid2-mobile-sdk-for-your-mobile-app). - -:::note -For security reasons, the API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). -::: - -## Server-Side Token Refresh - -Token refresh is automatically enabled inside the UID2 mobile SDKs; you don't need to manage it explicitly on the server side. - -You might decide to do server-side token refresh if you want to keep your changes in the mobile apps as simple as possible. - -However, if you decide you want to manage token refresh on the server side and not the client/mobile side, you can do so using one of the following: - -- Call the [POST /token/refresh](../endpoints/post-token-refresh.md) endpoint. -- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. - - For instructions, see [UID2 SDK for Java, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-java.md#server-only-integration) or [UID2 SDK for Python, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-python.md#server-only-integration). - -Then, pass the newly refreshed `Identity` value to the mobile app by following the rest of this guide. - -## Add the UID2 Mobile SDK into Your Mobile App - -For installation instructions, refer to one of the following: - -- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) -- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) - -For example, for Android, follow the UID2 SDK documentation to: -- Add the pre-built UID2 SDK for Android libraries into your mobile app: see [Installation](../sdks/uid2-sdk-ref-android.md#installation). -- Learn how to instantiate the UID2Manager instance in your Android app: see [Android Initialization](../sdks/uid2-sdk-ref-android.md#android-initialization). - here. - - For iOS, refer to the [Usage Guidelines](../sdks/uid2-sdk-ref-ios.md#usage-guidelines). - -## Using the UID2 Integration Environment - -By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initialization: - - - - -```js -UID2Manager.init( - context = this, - serverUrl = "https://operator-integ.uidapi.com" -) -``` - - - - -```js -// Must be set before UID2Manager.shared is accessed UID2Settings.shared.environment = .custom( - url: URL(string: "https://operator-integ.uidapi.com")! -) -``` - - - - -On iOS, you must set `UID2Settings` before you first access `UID2Manager.shared`. Any changes made to settings after the first access are not read. - -:::note -Bear in mind the following differences between environments: -- Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. -::: - -## Optional: Reduce Latency by Setting the API Base URL for the Production Environment - - - -To specify a different UID2 server, you can change it in the `init` call: - - - - -```js -UID2Manager.init( - context = this, - serverUrl = " https://global.prod.uidapi.com" -) -``` - - - - -```js -UID2Settings.shared.environment = .singapore -// or -UID2Settings.shared.environment = .custom( - url: URL(string: "https://global.prod.uidapi.com")! -) -``` - - - - -## Configure the UID2 Mobile SDK for Your Mobile App - -After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 identity generated server-side (see [Implement server-side token generation](#implement-server-side-token-generation)), and then pass it into the mobile app using the `setIdentity` method, as shown in the following: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.setIdentity() -``` - - - - -## Token Storage - -After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. - -:::warning -The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. -::: - -## Pass Generated Token for Bid Stream Use - -(**GWH__KL02 Question from SW: "his is a question for PM probably - bid stream does not exist in UID2 Glossary - should it? I dunno if bid stream actually makes sense to publishers to be honest" Do we add it into glossary... I'd thought everyone would know that term, SW doesn't think so. And, bid stream two words... is that a company decision?**) - -To retrieve the token, in your mobile app, call the following: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -If a successful identity was added into the UID2Manager, this method returns a string such as the following: - -``` -AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== -``` - -You can use this identity to pass downstream for sending in the RTB bid stream. - -If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: - -- The identity is invalid. Check to see whether there are any errors from the previous `setIdentity()` call. -- You could enable logging to get more information: see [Enable Logging](#enable-logging). -- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. - -If there is no identity, follow the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation) again, generate a new identity, and pass the result into your mobile app's UID2Manager again. - -## When to Pass a New UID2 Identity into the SDK - -The best way to determine whether a new UID2 identity is required by the UID2 SDK again is to call the `getAdvertisingToken()` method in all cases: - - - - -UID2Manager.getInstance().getAdvertisingToken() - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -On startup/resumption of the app, if `getAdvertisingToken()` returns `null`, it is time to generate new identity on the server by following the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again. - -## Enable Logging - - - -## Enable Automatic Token Refresh in Mobile App/Client Side - -By default, after a valid UID2 identity has been passed into the UID2Manager, it performs automatic token refresh. If for any reason token refresh was disabled, you can enable it with the following method call: - - - - -**Android Java**: - -```java -UID2Manager.getInstance()setAutomaticRefreshEnabled(false) -``` - -**Android Kotlin**: - -```kotlin -UID2Manager.getInstance().automaticRefreshEnabled = false -``` - - - - -```js -UID2Manager.shared.automaticRefreshEnabled = false -``` - - - - -## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration - - +(**xxx (content to be copied over when finalized uptohere Gen 5/13/24***) \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md index f5d77558c..0e8110946 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -16,639 +16,4 @@ import EnableLogging from '/docs/snippets/_mobile-docs-enable-logging.mdx'; # UID2 Client-Side Integration Guide for Mobile -This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. - -This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). - -The page provides a high-level overview, integration steps, and links to additional documentation. - -UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: - -- Generates UID2 tokens. -- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. -- Automatically refreshes UID2 tokens. - -(**GWH__SW_004: Just an FYI I made the last two items above consistent between both docs (wording was different) lines 47-48 in client-server doc.**) - -:::note -This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. -::: - -To integrate with UID2 client-side, you'll need to complete the following steps: - -1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). - -1. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). - -1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). - -1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). - -1. Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration. - - - -## Mobile SDK Version - -This guide provides instructions for using version v1.2.0 or higher of either of these UID2 mobile SDKs: - -- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) -- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) - -For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). - -## Client-Side Integration Example - -For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. - -Follow the applicable instructions, for Android or iOS: - - - - -1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). -1. In Android Studio, open the directory that you checked out. -1. Run the **dev-app** app. -1. When you've started the app, make sure that the **Client Side** checkbox is checked. -1. Enter an email or phone number. - - - - -1. Check out the [main branch of the UID2 SDK For iOS source code repository on GitHub](https://github.com/IABTechLab/uid2-ios-sdk/tree/main). -1. In Xcode, open this project file: - - ```js - Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj - ``` -1. Run the **UID2SDKDevelopmentApp** app scheme. -1. When you've started the app, make sure that the **Client Side** checkbox is checked. -1. Enter an email or phone number. - - - - -Behind the scenes, the development app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity (a UID2 token and associated values) for the email/phone input: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -When the API call is successful, the app displays the resulting identity and persists it inside the `UID2Manager` class. - -The identity includes the generated UID2 advertising token value, which you can retrieve using the `getAdvertisingToken()` method call: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -This method call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). - -### Testing With Your Own Configuration - -By default, the development app uses default values for Subscription ID and public key, which are stored in the following object: - - - - -```js -com.uid2.dev.ui.MainScreenViewModel.Companion -``` - - - - -```js -RootViewModel -``` - - - - -By default, the development app is configured to connect to the UID2 integration environment, as specified in the following Android method call/iOS file: - - - - -```js -com.uid2.UID2Manager.Companion#init -``` - - - - -```js -see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist -``` - - - - -If necessary, you can also change the default Subscription ID and public key to ones assigned to you, and connect to the UID2 Production environment. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). - -## Complete the UID2 Account Setup - -To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - -- Android Application ID -- iOS App Bundle ID -- App Store ID - -When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). - -## Add the UID2 Mobile SDK into Your Mobile App - -To add the mobile SDK to your app, follow the applicable documentation: - -- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) -- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) - -At this point, you are ready to start generating UID2 tokens using the SDK. - -### Using the UID2 Integration Environment - -By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the integration environment instead, provide the following URL in your call to initialize `UID2Manager`: - - - - -```js -UID2Manager.init( - context = this, - serverUrl = "https://operator-integ.uidapi.com" -) -``` - - - - -```js -// Must be set before UID2Manager.shared is accessed -UID2Settings.shared.environment = .custom( - url: URL(string: "https://operator-integ.uidapi.com")! -) -``` - - - - -:::note -Bear in mind the following differences between environments: -- Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. -::: - -### Optional: Reduce Latency by Setting the API Base URL for the Production Environment - - - -To specify a different UID2 server, you can make config changes, as shown in the following examples: - - - - -```js -UID2Manager.init( - context = this, - serverUrl = " https://global.prod.uidapi.com" -) -``` - - - - -```js -// Must be set before UID2Manager.shared is accessed -UID2Settings.shared.environment = .custom( - url: URL(string: "https://global.prod.uidapi.com")! -) -// or use a named environment -UID2Settings.shared.environment = .sydney -``` - - - - -## Configure the UID2 Mobile SDK - -UID2 provides the publisher with the following values, which are needed for generating the UID2 token on the client side: - -- Subscription ID -- Public key - -You'll have one set of these values for your testing environment, and a separate set for your production environment. - -To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information (DII) (email address or phone number), into the following method call: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -Once it's configured, the UID2 mobile SDK does the following: - -- Generates a UID2 token for the user -- Stores the token locally on the user’s device -- Automatically refreshes the token as required while your app is open - -:::tip -You can pass the user’s DII to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). -::: - -## Format Examples for DII - -The SDK encrypts the hashed DII before sending it to the UID2 service. - -You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. - -The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. - -- Configure for Email Address -- Configure for Hashed Email Address -- Configure for Phone Number -- Configure for Hashed Phone Number - -If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. - -### Email, Unhashed - -The following example configures the UID2 mobile SDK with an email address. - - - - -```js -manager.generateIdentity( - IdentityRequest.Email("test@example.com"), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else { - // email is invalid and cannot be normalized, handle error -} -try await UID2Manager.shared.generateIdentity( - .email(normalizedEmail), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- No normalization or hashing is required by the publisher -- The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. - -### Email, Normalized and Hashed - -The following example configures the UID2 SDK with a hashed email address. - - - - -```js -manager.generateIdentity( - IdentityRequest.EmailHash( - “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” - ), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -try await UID2Manager.shared.generateIdentity( - .emailHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). -- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. - -### Phone Number, Unhashed - -The following example configures the UID2 mobile SDK with a phone number. - - - - -```js -manager.generateIdentity( - IdentityRequest.Phone(“+1111111111”), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { - // phone number is invalid and cannot be normalized, handle error -} -try await UID2Manager.shared.generateIdentity( - .phone(normalizedPhone), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). -- The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. - -### Phone Number, Normalized and Hashed - -The following example configures the UID2 mobile SDK with a hashed phone number. - - - - -```js -manager.generateIdentity( - IdentityRequest.PhoneHash( - “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” - ), - subscriptionId, - publicKey, -) { result -> - when (result) { - is Error -> ... - is Success -> ... - } -} -``` - - - - -```js -try await UID2Manager.shared.generateIdentity( - .phoneHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), - subscriptionID: subscriptionID, - serverPublicKey: serverPublicKeyString -) -``` - - - - -In this scenario: - -- The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). -- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. - -## Token Storage and Refresh - -After a call to the applicable method listed in [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. - -:::warning -The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. -::: - -## Pass Generated Token for Bid Stream Use - -In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity, which you can then use in the bid stream. - -First, the method call to generate the identity: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -Then, the method call to get the advertising token: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -If successful, this method call returns a non-null string object such as the following: - -```js -AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== -``` - -You can use this identity to pass downstream for sending in the RTB bid stream. - -If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. - -Some possible reasons for this, and some things you could do to troubleshoot, are as follows: - -- The identity is invalid. Check to see whether there are any errors from the previous `generateIdentity()` call. -- You could enable logging to get more information: see [Enable Logging](#enable-logging). -- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. - -If there is no identity, you'll need to call the `generateIdentity()` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). - -For more information, see [When to Pass a New UID2 Identity into the SDK](#when-to-pass-a-new-uid2-identity-into-the-sdk). - -## When to Pass a New UID2 Identity into the SDK - -The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: - - - - -```js -UID2Manager.getInstance().generateIdentity() -``` - - - - -```js -UID2Manager.shared.generateIdentity() -``` - - - - -When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. - -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity()` method again to generate a new identity and get the resulting UID2 token. - -The only exception is if the following Android method/iOS object returns a status of `OPT_OUT`, which means that the DII has been opted out of UID2 and no identity/token should be generated for it: - - - - -```js -UID2Manager.getInstance().getIdentityStatus() -``` - - - - -```js -UID2Manager.shared.identityStatus -``` - - - - -The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: - - - - -```js -UID2Manager.getInstance().getAdvertisingToken() -``` - - - - -```js -UID2Manager.shared.getAdvertisingToken() -``` - - - - -If `getAdvertisingToken()` returns `null`, you'll need to generate a new token. Pass the DII into a call to the `generateIdentity()` method again. - -## Opt-Out Handling - -If the DII provided to the `generateIdentity()` method has been opted out of UID2, this method returns `null`. To check the status of the UID2 identity, you can call the following: - - - - -```js -UID2Manager.getInstance().getIdentityStatus() -``` - - - - -```js -UID2Manager.shared.identityStatus -``` - - - - -In this case, you might want to avoid making repeated calls to check the status of the UID2 identity, because if the DII has a status of opted out, the UID2 token is not generated. - -## Enable Logging - - - -## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration - - +(**xxx (content to be copied over when finalized uptohere Gen 5/13/24***) \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md index 343670c51..28b74c034 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md @@ -12,54 +12,4 @@ import Link from '@docusaurus/Link'; # UID2 Mobile Integration Overview for Android and iOS -This guide is an overview of integration options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. - -:::note -This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. -::: - - - -## Introduction - -UID2 provides SDKs for Android/iOS that support the following: - -- Generating the UID2 token -- Refreshing the UID2 token -- Storing the UID2 token - -For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (described later in this document). - -## Client-Side or Client-Server Integration - -The options for integrating with UID2 using the UID2 mobile SDKs are summarized in the following table. Choose the option that's best for you. - -| Scenario | Option | Integration Guide | -| :--- | :--- | :--- | -| You have access to DII (email address or phone number) on the client side/within the mobile app, and want to keep changes within your app only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | -| You have access to DII on the server side only and can do the necessary development to generate UID2 tokens server-side, or you are using a Private Operator. | Client-Server Integration | [UID2 Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) | - -## Integration Overview: High-Level Steps - -At a high level, to integrate your mobile app with UID2 using the UID2 mobile SDKs, you'll need to complete the following steps: - -1. Complete the UID2 account setup. - -1. Client-Server Integration Only: Integrate server-side token generation. - -1. Add the UID2 SDK for Android or iOS into your mobile app. - -1. Configure the SDK. - -1. Check that the token was successfully generated and then pass it for bid stream use. - -1. Optionally, configure the UID2 GMA/IMA plugins for integration with the [Google GMA SDK](https://developers.google.com/ad-manager/mobile-ads-sdk) and the [Google IMA SDK](https://developers.google.com/interactive-media-ads/). - -For details, refer to one of the following guides: - -- [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) -- [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) +(**xxx (content to be copied over when finalized uptohere Gen 5/13/24***) \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx index b79fca302..be1a8bac7 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx +++ b/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx @@ -1,7 +1,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -If you intend to generate UID2 tokens to send to Google GMA/IMA SDKs, assuming you have followed the instructions in this guide, you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: +If you intend to generate UID2 tokens to send to the [Google GMA SDK](https://developers.google.com/ad-manager/mobile-ads-sdk) or the [Google IMA SDK](https://developers.google.com/interactive-media-ads/), assuming you have followed the instructions in this guide, you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: - [UID2 GMA Plugin for Android Integration Guide](/docs/guides/mobile-plugin-gma-android.md) - [UID2 GMA Plugin for iOS Integration Guide](/docs/guides/mobile-plugin-gma-ios.md) From 6056878e7fd530dea74663fc2b136250bb33a3e8 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Tue, 14 May 2024 12:46:06 +1000 Subject: [PATCH 18/47] Removed Gen's questions as all redundant by now and fixed a grammar and simplified Add the UID2 Mobile SDK into Your Mobile App section in client-server guide --- docs/guides/integration-mobile-client-server.md | 12 +----------- docs/guides/integration-mobile-client-side.md | 4 +--- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index a7224854e..a765bcbe7 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -117,8 +117,6 @@ Whatever integration option you choose to generate the @@ -170,13 +168,7 @@ For installation instructions, refer to one of the following: - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) - [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) -For example, for Android, follow the UID2 SDK documentation to: -- Add the pre-built UID2 SDK for Android libraries into your mobile app: see [Installation](../sdks/uid2-sdk-ref-android.md#installation). -- Learn how to instantiate the UID2Manager instance in your Android app: see [Usage Guidelines](../sdks/uid2-sdk-ref-android.md#usage-guidelines). - -(**GWH__SW_35 is the Android link correct? It was a link to "Android Initialization" which doesn't exist. Showed up on a broken links check and I updated it as above.**) - - For iOS, refer to the [Usage Guidelines](../sdks/uid2-sdk-ref-ios.md#usage-guidelines). +At this point, you are ready to use the UID2 Identity generated server-side in the mobile SDK. ## Using the UID2 Integration Environment @@ -262,8 +254,6 @@ UID2Manager.shared.setIdentity()
-(**GWH_SW_32 line 251 above you said: "should be setIdentity() instead" but I'm not sure of the whole of it. I don't see the anywhere else not sure it's correct. https://github.com/IABTechLab/uid2docs/pull/557/files#r1598149873**) - ## Token Storage After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 0aafdfdc9..31edeb10f 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -488,8 +488,6 @@ In this scenario: After a call to the applicable method listed in [Format Examples for DII](#format-examples-for-dii) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. -(**GWH_SW_31 updated the above but not sure it's now pointing to the correct section?**) - :::warning The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. ::: @@ -603,7 +601,7 @@ UID2Manager.shared.getAdvertisingToken()
-If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`), you'll need to generate a new token. TO do this, pass the DII into the `generateIdentity()` method again. +If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`), you'll need to generate a new token. To do this, pass the DII into the `generateIdentity()` method again. ## Opt-Out Handling From 04c95c7958ef23a7631f75a596dc97cf125e536e Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Tue, 14 May 2024 12:47:29 +1000 Subject: [PATCH 19/47] Fixed subsectioning in client-server guide to be aligned with client-side guide's --- docs/guides/integration-mobile-client-server.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index a765bcbe7..6904cde74 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -170,7 +170,7 @@ For installation instructions, refer to one of the following: At this point, you are ready to use the UID2 Identity generated server-side in the mobile SDK. -## Using the UID2 Integration Environment +### Using the UID2 Integration Environment By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initialization: @@ -203,7 +203,7 @@ Bear in mind the following differences between environments: - You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. ::: -## Optional: Reduce Latency by Setting the API Base URL for the Production Environment +### Optional: Reduce Latency by Setting the API Base URL for the Production Environment From 6799b6d9ef41a6c874e6cc58b7d59b8937fefab7 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Tue, 14 May 2024 14:28:24 +1000 Subject: [PATCH 20/47] - fixed grammars and typos - removed overview section and put it on top for client-server guide just like client-side guide - public -> Public - combined the Features section in SDK Ref Guides into Functionality section to be more concise - commented out the Optout handling section in client-side guide as i copied most of the important contents into the section When to Pass DII into SDK above - Fixed client-server guide to have When to Pass UID2 Identity.Token to SDK instead of DII --- docs/getting-started/gs-account-setup.md | 2 +- .../integration-mobile-client-server.md | 43 +++++++++---------- docs/guides/integration-mobile-client-side.md | 11 ++--- docs/guides/summary-guides.md | 4 +- docs/overviews/overview-publishers.md | 4 +- docs/ref-info/glossary-uid.md | 4 +- docs/sdks/uid2-sdk-ref-android.md | 15 +++---- docs/sdks/uid2-sdk-ref-ios.md | 18 ++++---- 8 files changed, 47 insertions(+), 54 deletions(-) diff --git a/docs/getting-started/gs-account-setup.md b/docs/getting-started/gs-account-setup.md index 40b17495a..a9d42e833 100644 --- a/docs/getting-started/gs-account-setup.md +++ b/docs/getting-started/gs-account-setup.md @@ -56,8 +56,8 @@ Only top-level (root-level) domains are required for account setup. For example, If you're publishing to [mobile apps](../guides/integration-mobile-client-side.md), you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - Android Application ID +- iOS Bundle Identifier - iOS App Store ID -- App Store ID ## Credentials diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 6904cde74..91a578308 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -24,6 +24,24 @@ If you want to integrate with UID2 via client-side only changes (that is, all in This page provides a high-level overview of integration steps and links to additional documentation. +UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: + +- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. +- Automatically refreshes UID2 tokens. + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: + +You'll need to complete the following steps: + +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). +2. [Implement server-side token generation](#implement-server-side-token-generation). +3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). +4. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). +6. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). + + ## Enable Logging diff --git a/docs/guides/summary-guides.md b/docs/guides/summary-guides.md index 2c5dd7ed4..8c8ed1345 100644 --- a/docs/guides/summary-guides.md +++ b/docs/guides/summary-guides.md @@ -57,7 +57,7 @@ The following resources are available for publishers integrating with Android or | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | | Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 by doing the following:
  1. Generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 by doing the following:
  1. Generating UID2 tokens server-side via either a Public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations @@ -107,4 +107,4 @@ The following resources are available for Private Operator integrations. | :--- | :--- | | [UID2 Private Operator for AWS](operator-guide-aws-marketplace.md) | Instructions for setting up a Private Operator service for AWS Marketplace. | | [UID2 Private Operator for GCP](operator-private-gcp-confidential-space.md) | Information for setting up the UID2 Operator Service in [Confidential Space](https://cloud.google.com/confidential-computing#confidential-space), a confidential computing option from [Google Cloud](https://cloud.google.com/docs/overview/) Platform. | -| [UID2 Private Operator for Azure](operator-guide-azure-enclave.md) | Instructions for setting up the UID2 Operator Service in a Confidential Container, a confidential computing option from Microsoft Azure. | \ No newline at end of file +| [UID2 Private Operator for Azure](operator-guide-azure-enclave.md) | Instructions for setting up the UID2 Operator Service in a Confidential Container, a confidential computing option from Microsoft Azure. | diff --git a/docs/overviews/overview-publishers.md b/docs/overviews/overview-publishers.md index fa82f78e8..7bc69ce03 100644 --- a/docs/overviews/overview-publishers.md +++ b/docs/overviews/overview-publishers.md @@ -111,7 +111,7 @@ The following resources are available for publisher integrations supporting Andr | :--- | :--- | :--- | | Android/iOS (Overview) | [Mobile Integration Overview for Android and iOS](../guides/integration-mobile-overview.md) | An overview of options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. | | Android/iOS, Client-Side Integration | [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md) | An integration guide for mobile app publishers who want to integrate with UID2 with changes only within the mobile app (no server-side changes). | -| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 by doing the following:
  1. Generating UID2 tokens server-side via either a public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| +| Android/iOS, Client-Server Integration | [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md) | An integration guide for mobile app publishers who want to integrate with UID2 by doing the following:
  1. Generating UID2 tokens server-side via either a Public or Private Operator.
  2. Passing the resulting identities to a mobile app for passing into the bid stream.
| ### Prebid Integrations @@ -137,4 +137,4 @@ The following resources are available for publishers integrating with Google Ad ## FAQs for Publishers -For a list of frequently asked questions for publishers using the UID2 framework, see [FAQs for Publishers](/docs/getting-started/gs-faqs.md#faqs-for-publishers). \ No newline at end of file +For a list of frequently asked questions for publishers using the UID2 framework, see [FAQs for Publishers](/docs/getting-started/gs-faqs.md#faqs-for-publishers). diff --git a/docs/ref-info/glossary-uid.md b/docs/ref-info/glossary-uid.md index 22cc442e8..f1deb3f30 100644 --- a/docs/ref-info/glossary-uid.md +++ b/docs/ref-info/glossary-uid.md @@ -278,7 +278,7 @@ import Link from '@docusaurus/Link';
Public key
-
For server-side publisher integrations, the public key is one of the two values issued to publishers as their UID2 credentials. For details, see Subscription ID and Public Key.
+
For client-side publisher integrations, the public key is one of the two values issued to publishers as their UID2 credentials. For details, see Subscription ID and Public Key.
Public Operator
A Public Operator is an entity that runs a public instance of the UID2 Operator Service. For example, The Trade Desk currently serves as a Public Operator for the UID2 framework, available to all participants.
@@ -336,7 +336,7 @@ import Link from '@docusaurus/Link';
SSO is an acronym for Single sign-on. SSO allows a user to log in with the same credentials (usually, but not always, ID and password) to one of several software systems, such as apps or websites. SSO allows the user to log in once to multiple applications or sites using one set of credentials. With SSO, websites/apps do not have to maintain their own authentication systems.
Subscription ID
-
For server-side publisher integrations, the Subscription ID is one of the two values issued to publishers as their UID2 credentials. For details, see Subscription ID and Public Key.
+
For client-side publisher integrations, the Subscription ID is one of the two values issued to publishers as their UID2 credentials. For details, see Subscription ID and Public Key.
diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 5bcfd41fe..a46a461d1 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -15,7 +15,6 @@ import Link from '@docusaurus/Link'; - [Functionality](#functionality) - [API Permissions](#api-permissions) - [SDK Version](#sdk-version) -- [Features](#features) - [GitHub Repository/Binary](#github-repositorybinary) - [Minimum Requirements](#minimum-requirements) - [Installation](#installation) @@ -32,9 +31,7 @@ You can use the UID2 SDK for Android to facilitate the process of performing the - Generating or establishing client identity using UID2. - Retrieving advertising tokens on iOS devices for bid stream use. - - -You can use the UID2 SDK for Android to facilitate the process of establishing client identity using UID2 and retrieving advertising tokens on Android devices for use in the bid stream. +- Automatically refreshes UID2 tokens. The following Android-related plugins, and associated documentation, are also available. @@ -55,6 +52,10 @@ This SDK simplifies integration with UID2 for any publishers who want to support | :--- | :--- | :--- | :--- | | Not supported | Not supported | Supported | Supported | +The UID2 SDK for Android is designed to generate and/or manage UID2 identity on behalf of Android apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. + +By default, the SDK automatically refreshes UID2 identity based on expiration dates. However, you can disable this to allow implementing apps to manage the UID2 identity lifecycle manually. + ## API Permissions To use this SDK, you'll need to complete the UID2 account setup by following the steps described in the [Account Setup](../getting-started/gs-account-setup.md) page. @@ -68,12 +69,6 @@ This documentation is for the UID2 SDK for Android version 1.2.0 and later. For information about specific release versions, see [https://github.com/IABTechLab/uid2-android-sdk/releases](https://github.com/IABTechLab/uid2-android-sdk/releases). -## Features - -The UID2 SDK for Android is designed to manage UID2 identity on behalf of Android apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. - -By default, the SDK automatically refreshes UID2 identity based on expiration dates. However, you can disable this to allow implementing apps to manage the UID2 identity lifecycle manually. - ## GitHub Repository/Binary This SDK is in the following open-source GitHub repository: diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index 88d25d255..c4774e3a9 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -15,7 +15,6 @@ import Link from '@docusaurus/Link'; - [Functionality](#functionality) - [API Permissions](#api-permissions) - [SDK Version](#sdk-version) -- [Features](#features) - [GitHub Open-Source Repository](#github-open-source-repository) - [Minimum Requirements](#minimum-requirements) - [Installation](#installation) @@ -31,6 +30,7 @@ You can use the UID2 SDK for iOS to facilitate the process of performing the fol - Generating or establishing client identity using UID2. - Retrieving advertising tokens on iOS devices for bid stream use. +- Automatically refreshes UID2 tokens. The following iOS-related plugins, and associated documentation, are also available: @@ -50,6 +50,10 @@ This SDK simplifies integration with UID2 for any publishers who want to support | :--- | :--- | :--- | :--- | | Not supported | Not supported | Supported | Supported | +The UID2 SDK for iOS is designed to generate and/or manage UID2 identity on behalf of iOS apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. + +By default, the SDK automatically refreshes UID2 identity based on expiration dates. However, you can disable this to allow implementing apps to manage the UID2 identity lifecycle manually. + ## API Permissions To use this SDK, you'll need to complete the UID2 account setup by following the steps described in the [Account Setup](../getting-started/gs-account-setup.md) page. @@ -61,12 +65,6 @@ You'll be granted permission to use specific functions offered by the SDK, and g This documentation is for the UID2 SDK for iOS version 1.2.0 and later. -## Features - -The UID2 SDK for iOS is designed to manage UID2 identity on behalf of iOS apps. It enables UID2 identity to be persisted across app lifecycles by securely storing the identity on a device via platform-native encryption tools. - -By default, the SDK automatically refreshes UID2 identity based on expiration dates. However, you can disable this to allow implementing apps to manage the UID2 identity lifecycle manually. - ## GitHub Open-Source Repository This SDK is in the following open-source GitHub repository: @@ -117,7 +115,7 @@ For iOS, the `UID2Manager` is initialized automatically the first time it is acc There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-side). +1. Generate the UID2 identity using DII—email (hashed) or phone number (hashed). For integration instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). 2. Create a UID2 identity from your server's back end and then pass it to the UID2 SDK. For integration instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server). @@ -128,7 +126,7 @@ The UID2 Mobile SDKs can perform refreshes of UID2 identities, after an Identity The following code samples provide examples of performing specific activities relating to managing UID2 with the UID2 SDK for iOS. -Generate an initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): +Generate an initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side#configure-the-uid2-mobile-sdk)): ```js UID2Manager.shared.generateIdentity( @@ -138,7 +136,7 @@ UID2Manager.shared.generateIdentity( appName: String? = nil ) ``` -Set the Initial UID2 Identity (for instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk)): +Set the Initial UID2 Identity (for instructions, see [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server#configure-the-uid2-mobile-sdk)): ``` javascript UID2Manager.shared.setIdentity(_ identity: UID2Identity) From 6cbd282633242b341f5af9aaa37c26a098848bf6 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Tue, 14 May 2024 15:01:04 +1000 Subject: [PATCH 21/47] fixed description --- docs/guides/integration-mobile-client-server.md | 2 +- docs/guides/integration-mobile-client-side.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 91a578308..177b9054d 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -40,7 +40,7 @@ You'll need to complete the following steps: 3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). 4. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). 5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). -6. [Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). +6. [Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). -By default, in the production environment, the UID2 Prebid module makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +By default, the UID2 module makes API calls to a UID2 production environment server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. To specify a different UID2 server when you're configuring the UID2 module, set the optional params.uid2ApiBase parameter, as shown in the following example: diff --git a/docs/guides/integration-prebid-server-side.md b/docs/guides/integration-prebid-server-side.md index a7ee83d23..8ec2b9876 100644 --- a/docs/guides/integration-prebid-server-side.md +++ b/docs/guides/integration-prebid-server-side.md @@ -384,7 +384,7 @@ The following sample is fictitious, but shows what the token response object, re ## Optional: Reduce Latency by Setting the API Base URL for the Production Environment -By default, in the production environment, the UID2 Prebid module makes API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +By default, the UID2 module makes API calls to a UID2 production environment server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. To specify a different UID2 server when you're configuring the UID2 module, set the optional params.uid2ApiBase parameter, as shown in the following example: diff --git a/docs/snippets/_sdk-reduce-latency.mdx b/docs/snippets/_sdk-reduce-latency.mdx index 193764c47..00ac1858f 100644 --- a/docs/snippets/_sdk-reduce-latency.mdx +++ b/docs/snippets/_sdk-reduce-latency.mdx @@ -1,7 +1,7 @@ -By default, in the production environment, UID2 SDKs make API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +By default, UID2 SDKs make API calls to a UID2 production environment server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. -For the list of valid base URLs, see [Environments](/docs/getting-started/gs-environments.md). +For the list of valid base URLs, see [Environments](../getting-started/gs-environments). You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index dfe41f89a..177b9054d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -16,4 +16,348 @@ import GMAIMA_Plugins from '/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx'; # UID2 Client-Server Integration Guide for Mobile -(**xxx (content to be copied over when finalized uptohere Gen 5/13/24***) \ No newline at end of file +This guide is intended for mobile app publishers who want to integrate with UID2 by generating UID2 tokens server-side via a Public Operator or Private Operator and then passing the tokens and user identities into their mobile apps, which will in turn pass the tokens for bid stream use.   + +This is called Client-Server Integration because some integration steps are client-side and some are server-side. + +If you want to integrate with UID2 via client-side only changes (that is, all integration changes required are within the mobile apps), refer to the [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) instead. + +This page provides a high-level overview of integration steps and links to additional documentation. + +UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: + +- Takes in a UID2 identity (a UID2 token and associated values) and persists it in local file storage. +- Automatically refreshes UID2 tokens. + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: + +You'll need to complete the following steps: + +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). +2. [Implement server-side token generation](#implement-server-side-token-generation). +3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). +4. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). +6. [Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). + + + + +## Mobile SDK Version + +This guide provides instructions for using version v1.2.0 or higher of either of these UID2 mobile SDKs: + +- UID2 SDK for Android +- UID2 SDK for iOS + +For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). + + +## Complete the UID2 Account Setup + +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). + +When account setup is complete, you'll receive your unique API key and client secret. These values are unique to you, and it is important to keep them secure. For details, see [API Key and Client Secret](../getting-started/gs-credentials.md#api-key-and-client-secret). + +## Client-Server Mobile Integration Data Flow Overview + +The following diagram shows the data flow that the publisher must implement for UID2 client-server mobile integration. + +This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. + +**GWH__KL_01: diagram updates to remove TTD colors at least?**) + +![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) + + + +## Implement Server-Side Token Generation + +The first step of UID2 integration is to be able to generate the UID2 token on your server. Then, you can pass the token into your mobile apps for sending to the RTB bid stream. + +There are two approaches to generating UID2 tokens on the server side by providing directly identifying information (DII) (email address or phone number): + +- Integration with an SDK +- Direct integration to API endpoints. + +Options are summarized in the following table. + +| Integration Solution  | Generate Token | Refresh Token | +| :--- | :--- | :--- | +| [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) | ✅ | ✅ | +| [UID2 SDK for Python](../sdks/uid2-sdk-ref-python.md) | ✅ | ✅ | +| [Direct integration (API endpoints with custom code)](../endpoints/post-token-generate.md) | ✅ | ✅ | + +Whatever integration option you choose to generate the identity (UID2 token and associated values), you'll need to implement one of the following: + +- Call the [POST /token/generate](../endpoints/post-token-generate.md) endpoint. + + The identity output that you need for the rest of this guide is the content inside the body section of a successful endpoint response. For an example, see [Successful Response](../endpoints/post-token-generate.md#successful-response). + +- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. + + For instructions, see [UID2 SDK for Java, Publisher Basic Usage](../sdks/uid2-sdk-ref-java.md#basic-usage) or [UID2 SDK for Python, Usage for Publishers](../sdks/uid2-sdk-ref-python.md#usage-for-publishers). + + If you're using one of these options, the `Identity` response that you need for the rest of this guide is the output of the applicable method, as follows: + + + + + ```java + tokenGenerateResponse.getIdentityJsonString() + ``` + + + + + ```py + token_generate_response.get_identity_json_string() + ``` + + + + +:::important +The endpoint and SDK API returns opt-out status if the DII you are generating the token for has been opted out of UID2. If this happens, save the information and do not call the token generation endpoint for the same DII again.  +::: + +You will need to pass the `Identity` response into the mobile app: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). + +:::danger +For security reasons, the API key and secret used in token generation must be called server-side. Do not store these values inside a mobile app. For details, see [Security of API Key and Client Secret](../getting-started/gs-credentials.md#security-of-api-key-and-client-secret). +::: + +## Server-Side Token Refresh + +Token refresh is automatically enabled inside the UID2 mobile SDKs; you don't need to manage it explicitly on the server side. + +You might decide to do server-side token refresh if you want to keep your changes in the mobile apps as simple as possible. + +However, if you decide you want to manage token refresh on the server side and not the client/mobile side, you can do so using one of the following: + +- Call the [POST /token/refresh](../endpoints/post-token-refresh.md) endpoint. +- Use one of the Publisher Client classes, in one of the UID2 server-side SDKs. These classes simplify the request into a single method call. + + For instructions, see [UID2 SDK for Java, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-java.md#server-only-integration) or [UID2 SDK for Python, Publisher Server-Only Integration section](../sdks/uid2-sdk-ref-python.md#server-only-integration). + +Then, pass the newly refreshed `Identity` value to the mobile app by following the rest of this guide. + +## Add the UID2 Mobile SDK into Your Mobile App + +For installation instructions, refer to one of the following: + +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) + +At this point, you are ready to use the UID2 Identity generated server-side in the mobile SDK. + +### Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the UID2 integration environment instead, provide the following URL in your call to UID2Manager initialization: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://operator-integ.uidapi.com")! +) +``` + + + + +:::note +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. +::: + +### Optional: Reduce Latency by Setting the API Base URL for the Production Environment + + + +To specify a different UID2 server, you can change it in the `init` call: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = " https://global.prod.uidapi.com" +) +``` + + + + +```js +UID2Settings.shared.environment = .singapore +// or +UID2Settings.shared.environment = .custom( + url: URL(string: "https://global.prod.uidapi.com")! +) +``` + + + + +## Configure the UID2 Mobile SDK + +After you've instantiated `UID2Manager` correctly in your mobile app, you'll need to pass a UID2 identity generated server-side (see [Implement server-side token generation](#implement-server-side-token-generation)), and then pass it into the mobile app using the `setIdentity` method, as shown in the following: + + + + +```js +UID2Manager.getInstance().setIdentity() +``` + + + + +```js +UID2Manager.shared.setIdentity() +``` + + + + +## Token Storage + +After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. + +:::warning +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +::: + +## Pass Generated Token for Bid Stream Use + +(**GWH__KL02 Question from SW: "his is a question for PM probably - bid stream does not exist in UID2 Glossary - should it? I dunno if bid stream actually makes sense to publishers to be honest" Do we add it into glossary... I'd thought everyone would know that term, SW doesn't think so. And, bid stream two words... is that a company decision?**) + +To retrieve the token, in your mobile app, call the following: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If a successful identity was added into the UID2Manager, this method returns a string such as the following: + +``` +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +``` + +You can use this identity to pass downstream for sending in the RTB bid stream. + +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: + +- The identity is invalid. - The identity is invalid. In this scenario there are a couple of options: + - Check to see whether there are any errors from the previous `setIdentity()` call. + - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. +- You could enable logging to get more information: see [Enable Logging](#enable-logging). +- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. + +If there is no identity, follow the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation) again, generate a new identity, and pass the result into your mobile app's UID2Manager again. + +## When to Pass a new UID2 Identity/Token into the SDK + +The best way to determine whether a new UID2 identity is required by the UID2 SDK again is to call the `getAdvertisingToken()` method in all cases: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +On startup/resumption of the app, if `getAdvertisingToken()` returns `null`, it is time to generate new identity on the server by following the instructions in [Implement Server-Side Token Generation](#implement-server-side-token-generation). Then, pass the result into the mobile app’s UID2Manager again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + +## Enable Logging + + + +## Enable Automatic Token Refresh in Mobile App/Client Side + +By default, after a valid UID2 identity has been passed into the UID2Manager, it performs automatic token refresh. If for any reason token refresh was disabled, you can enable it with the following method call: + + + + +**Android Java**: + +```java +UID2Manager.getInstance()setAutomaticRefreshEnabled(false) +``` + +**Android Kotlin**: + +```kotlin +UID2Manager.getInstance().automaticRefreshEnabled = false +``` + + + + +```js +UID2Manager.shared.automaticRefreshEnabled = false +``` + + + + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md index 0e8110946..7e775ef78 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -16,4 +16,653 @@ import EnableLogging from '/docs/snippets/_mobile-docs-enable-logging.mdx'; # UID2 Client-Side Integration Guide for Mobile -(**xxx (content to be copied over when finalized uptohere Gen 5/13/24***) \ No newline at end of file +This page is intended for mobile app publishers who want to integrate with UID2 with changes only within their mobile app. + +This guide does not apply to publishers who want to use a Private Operator, or who want to generate tokens server-side. Those publishers should follow the [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md). + +The page provides a high-level overview, integration steps, and links to additional documentation. + +UID2 provides mobile SDKs for [Android](../sdks/uid2-sdk-ref-android.md) and [iOS](../sdks/uid2-sdk-ref-ios.md). Each SDK has the following features: + +- Generates a UID2 identity (a UID2 token and associated values) and persists it in local file storage. +- Automatically refreshes UID2 tokens. + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: + +To integrate with UID2 client-side, you'll need to complete the following steps: + +1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). + +1. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). + +1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + +1. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). + +1. [Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). + + + +## Mobile SDK Version + +This guide provides instructions for using version v1.2.0 or higher of either of these UID2 mobile SDKs: + +- UID2 SDK for Android +- UID2 SDK for iOS + +For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). + +## Client-Side Integration Example + +For an example of how to configure a UID2 mobile SDK, and how to generate tokens using client-side integration for mobile, you can try out the UID2 development app. + +Follow the applicable instructions, for Android or iOS: + + + + +1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). +1. In Android Studio, open the directory that you checked out. +1. Run the **dev-app** app. +1. When you've started the app, make sure that the **Client Side** checkbox is checked. +1. Enter an email or phone number. + + + + +1. Check out the [main branch of the UID2 SDK For iOS source code repository on GitHub](https://github.com/IABTechLab/uid2-ios-sdk/tree/main). +1. In Xcode, open this project file: + + ```js + Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj + ``` +1. Run the **UID2SDKDevelopmentApp** app scheme. +1. When you've started the app, make sure that the **Client Side** checkbox is checked. +1. Enter an email or phone number. + + + + +Behind the scenes, the development app makes the following UID2 SDK API call. This call sends a request to the UID2 service to generate an identity (a UID2 token and associated values) for the email/phone input: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +When the API call is successful, the app displays the resulting identity and persists it inside the `UID2Manager` class. + +The identity includes the generated UID2 advertising token value, which you can retrieve using the `getAdvertisingToken()` method call: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +This method call returns the value that you need to make an ad request: see [Pass Generated Token for Bid Stream Use](#pass-generated-token-for-bid-stream-use). + +### Testing With Your Own Configuration + +By default, the development app uses default values for Subscription ID and public key, which are stored in the following object: + + + + +```js +com.uid2.dev.ui.MainScreenViewModel.Companion +``` + + + + +```js +RootViewModel +``` + + + + +By default, the development app is configured to connect to the UID2 integration environment, as specified in the following Android method call/iOS file: + + + + +```js +com.uid2.UID2Manager.Companion#init +``` + + + + +```js +see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist +``` + + + + +If necessary, you can also change the default Subscription ID and public key to ones assigned to you, and connect to the UID2 Production environment. For details, see [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment). + +## Complete the UID2 Account Setup + +To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: + +- Android Application ID +- iOS App Store ID +- App Store ID + +When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + +## Add the UID2 Mobile SDK into Your Mobile App + +To add the mobile SDK to your app, follow the applicable documentation: + +- [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) +- [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) + +At this point, you are ready to start generating UID2 tokens using the SDK. + +### Using the UID2 Integration Environment + +By default, the SDK is configured to work with the UID2 production environment: `https://prod.uidapi.com`. If you want to use the integration environment instead, provide the following URL in your call to initialize `UID2Manager`: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = "https://operator-integ.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://operator-integ.uidapi.com")! +) +``` + + + + +:::note +Bear in mind the following differences between environments: +- Tokens from the UID2 integration environment are not valid for passing to the bid stream. +- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. +::: + +### Optional: Reduce Latency by Setting the API Base URL for the Production Environment + + + +To specify a different UID2 server, you can make config changes, as shown in the following examples: + + + + +```js +UID2Manager.init( + context = this, + serverUrl = " https://global.prod.uidapi.com" +) +``` + + + + +```js +// Must be set before UID2Manager.shared is accessed +UID2Settings.shared.environment = .custom( + url: URL(string: "https://global.prod.uidapi.com")! +) +// or use a named environment +UID2Settings.shared.environment = .sydney +``` + + + + +## Configure the UID2 Mobile SDK + +UID2 provides the publisher with the following values, which are needed for generating the UID2 token on the client side: + +- Subscription ID +- Public key + +You'll have one set of these values for your Integration environment, and a separate set for your production environment. + +To configure the SDK, you must pass in the Subscription ID and public key that you received during account setup, as well as the user’s hashed or unhashed directly identifying information (DII) (email address or phone number), into the following method call: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +Once it's configured, the UID2 mobile SDK does the following: + +- Generates a UID2 identity, including token, for the user. +- Stores the token locally on the user’s device. +- Automatically refreshes the token as required while your app is open. + +:::tip +You can pass the user’s DII to the UID2 mobile SDK either hashed or unhashed. If you pass the DII unhashed, the SDK hashes it for you. If you want to pass the DII to the SDK already hashed, you must normalize it before hashing. For details, see [Normalization and Encoding](../getting-started/gs-normalization-encoding.md). +::: + +### Format Examples for DII + +The SDK encrypts the hashed DII before sending it to the UID2 service. + +You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. + +The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. + +- Configure for Email Address +- Configure for Hashed Email Address +- Configure for Phone Number +- Configure for Hashed Phone Number + +If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. + +#### Email, Unhashed + +The following example configures the UID2 mobile SDK with an email address. + + + + +```js +UID2Manager.getInstance().generateIdentity( + IdentityRequest.Email("test@example.com"), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +struct InvalidEmailError: Error, LocalizedError { + var errorDescription: String = "Invalid email address" +} +Task { + do { + guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else { + throw InvalidEmailError() // email is invalid and cannot be normalized, handle error + } + try await UID2Manager.shared.generateIdentity( + .email(normalizedEmail), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString + ) + } catch { + // read `error` object for troubleshooting or enable logging to view it in logs + } +} + + +``` + + + + +In this scenario: + +- No normalization or hashing is required by the publisher +- The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. + +#### Email, Normalized and Hashed + +The following example configures the UID2 SDK with a hashed email address. + + + + +```js +UID2Manager.getInstance().generateIdentity( + IdentityRequest.EmailHash( + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + ), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +Task { + do { + try await UID2Manager.shared.generateIdentity( + .emailHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString + ) + } catch { + // read `error` object for troubleshooting or enable logging to view it in logs + } +} +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + +#### Phone Number, Unhashed + +The following example configures the UID2 mobile SDK with a phone number. + + + + +```js +UID2Manager.getInstance().generateIdentity( + IdentityRequest.Phone(“+1111111111”), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +struct InvalidPhoneError: Error, LocalizedError { + var errorDescription: String = "Invalid phone number" +} +Task { + do { + guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { + throw InvalidPhoneError() // phone number is invalid and cannot be normalized, handle error + } + try await UID2Manager.shared.generateIdentity( + .phone(normalizedPhone), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString + ) + } catch { + // read `error` object for troubleshooting or enable logging to view it in logs + } +} +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). +- The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. + +#### Phone Number, Normalized and Hashed + +The following example configures the UID2 mobile SDK with a hashed phone number. + + + + +```js +UID2Manager.getInstance().generateIdentity( + IdentityRequest.PhoneHash( + “eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=” + ), + subscriptionId, + publicKey, +) { result -> + when (result) { + is Error -> ... + is Success -> ... + } +} +``` + + + + +```js +Task { + do { + try await UID2Manager.shared.generateIdentity( + .phoneHash("eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc="), + subscriptionID: subscriptionID, + serverPublicKey: serverPublicKeyString + ) + } catch { + // read `error` object for troubleshooting or enable logging to view it in logs + } +} +``` + + + + +In this scenario: + +- The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). +- The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + +## Token Storage and Refresh + +After a call to the applicable method listed in [Format Examples for DII](#format-examples-for-dii) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. + +:::warning +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +::: + +## Pass Generated Token for Bid Stream Use + +In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity. The next step is to call the `getAdvertisingToken()` method, which gets the advertising token, as follows: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If successful, this method call returns the token—a non-null string object such as the following: + +```js +AgAAAQFt3aNLXKXEyWS8Tpezcymk1Acv3n+ClOHLdAgqR0kt0Y+pQWSOVaW0tsKZI4FOv9K/rZH9+c4lpm2DBpmFJqjdF6FAaAzva5vxDIX/67UOspsYtiwxH73zU7Fj8PhVf1JcpsxUHRHzuk3vHF+ODrM13A8NAVlO1p0Wkb+cccIIhQ== +``` + +You can use this token to pass downstream for sending in the RTB bid stream. + +If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. + +Some possible reasons for this, and some things you could do to troubleshoot, are as follows: + +- The identity is invalid. In this scenario there are a couple of options: + - Check to see whether there are any errors from the previous `generateIdentity()` call. + - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. +- You could enable logging to get more information: see [Enable Logging](#enable-logging). +- The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. + +If there is no identity, you'll need to call the `generateIdentity()` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). + +For more information, see [When to Pass DII into the SDK](#when-to-pass-dii-into-the-sdk) (next section). + +## When to Pass DII into the SDK + +The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: + + + + +```js +UID2Manager.getInstance().generateIdentity() +``` + + + + +```js +UID2Manager.shared.generateIdentity() +``` + + + + +When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. + +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity()` method again to generate a new identity and get the resulting UID2 token. + +The only exception is if response to the following Android method/iOS object indicates that the DII was opted out of UID2: + + + + +```js +UID2Manager.getInstance().getIdentityStatus() +``` + + + + +```js +UID2Manager.shared.identityStatus +``` + + + + +A response status of `OPT_OUT` for Android or `optOut` for iOS, indicates that the DII has been opted out of UID2 and no identity/token should be generated for it. You might want to avoid making repeated `generateIdentity()` calls: if the DII has a status of opted out, the UID2 token is not generated. + +The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: + + + + +```js +UID2Manager.getInstance().getAdvertisingToken() +``` + + + + +```js +UID2Manager.shared.getAdvertisingToken() +``` + + + + +If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity()` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). + + + +## Enable Logging + + + +## Optional: UID2 GMA/IMA Plugin for GAM Secure Signal integration + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md index 28b74c034..343670c51 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md @@ -12,4 +12,54 @@ import Link from '@docusaurus/Link'; # UID2 Mobile Integration Overview for Android and iOS -(**xxx (content to be copied over when finalized uptohere Gen 5/13/24***) \ No newline at end of file +This guide is an overview of integration options for mobile app publishers who want to integrate with UID2 using the UID2 SDK for Android or the UID2 SDK for iOS. + +:::note +This guide uses the group term **UID2 mobile SDKs** to include both the UID2 SDK for Android and the UID2 SDK for iOS. +::: + + + +## Introduction + +UID2 provides SDKs for Android/iOS that support the following: + +- Generating the UID2 token +- Refreshing the UID2 token +- Storing the UID2 token + +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (described later in this document). + +## Client-Side or Client-Server Integration + +The options for integrating with UID2 using the UID2 mobile SDKs are summarized in the following table. Choose the option that's best for you. + +| Scenario | Option | Integration Guide | +| :--- | :--- | :--- | +| You have access to DII (email address or phone number) on the client side/within the mobile app, and want to keep changes within your app only. | Client-side integration | [UID2 Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) | +| You have access to DII on the server side only and can do the necessary development to generate UID2 tokens server-side, or you are using a Private Operator. | Client-Server Integration | [UID2 Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) | + +## Integration Overview: High-Level Steps + +At a high level, to integrate your mobile app with UID2 using the UID2 mobile SDKs, you'll need to complete the following steps: + +1. Complete the UID2 account setup. + +1. Client-Server Integration Only: Integrate server-side token generation. + +1. Add the UID2 SDK for Android or iOS into your mobile app. + +1. Configure the SDK. + +1. Check that the token was successfully generated and then pass it for bid stream use. + +1. Optionally, configure the UID2 GMA/IMA plugins for integration with the [Google GMA SDK](https://developers.google.com/ad-manager/mobile-ads-sdk) and the [Google IMA SDK](https://developers.google.com/interactive-media-ads/). + +For details, refer to one of the following guides: + +- [Client-Side Integration Guide for Mobile](integration-mobile-client-side.md) +- [Client-Server Integration Guide for Mobile](integration-mobile-client-server.md) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx index be1a8bac7..c67615ab3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx +++ b/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_mobile_docs_gmaima-plugin-gss.mdx @@ -3,10 +3,10 @@ import TabItem from '@theme/TabItem'; If you intend to generate UID2 tokens to send to the [Google GMA SDK](https://developers.google.com/ad-manager/mobile-ads-sdk) or the [Google IMA SDK](https://developers.google.com/interactive-media-ads/), assuming you have followed the instructions in this guide, you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: -- [UID2 GMA Plugin for Android Integration Guide](/docs/guides/mobile-plugin-gma-android.md) -- [UID2 GMA Plugin for iOS Integration Guide](/docs/guides/mobile-plugin-gma-ios.md) -- [UID2 IMA Plugin for Android Integration Guide](/docs/guides/mobile-plugin-ima-android.md) -- [UID2 IMA Plugin for iOS Integration Guide](/docs/guides/mobile-plugin-ima-ios.md) +- [UID2 GMA Plugin for Android Integration Guide](../guides/mobile-plugin-gma-android.md) +- [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios.md) +- [UID2 IMA Plugin for Android Integration Guide](../guides/mobile-plugin-ima-android.md) +- [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios.md) :::note You do not need to explicitly make the `getAdvertisingToken()` method call to retrieve the advertising tokens and pass them into Google GMA/IMA SDK manually. The UID2 GMA/IMA plugins manage this for you. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_sdk-reduce-latency.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_sdk-reduce-latency.mdx index 193764c47..00ac1858f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_sdk-reduce-latency.mdx +++ b/i18n/ja/docusaurus-plugin-content-docs/current/snippets/_sdk-reduce-latency.mdx @@ -1,7 +1,7 @@ -By default, in the production environment, UID2 SDKs make API calls to a UID2 server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. +By default, UID2 SDKs make API calls to a UID2 production environment server in the USA. Depending on where your users are based, you might consider choosing a server closer to your users to reduce latency. For example, a publisher in Singapore can set the base URL to `https://sg.prod.uidapi.com`. This is still the UID2 production environment, but the servers are in Singapore. -For the list of valid base URLs, see [Environments](/docs/getting-started/gs-environments.md). +For the list of valid base URLs, see [Environments](../getting-started/gs-environments). You can also set the base URL to `https://global.prod.uidapi.com`. This URL directs readers to a region geographically close to them, which is ideal if your audience is geographically distributed. \ No newline at end of file From 59d03fa6e0a909448885581a5519a937c8fc94c6 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 14 May 2024 12:54:55 -0400 Subject: [PATCH 24/47] remove comment annotations --- docs/guides/integration-mobile-client-server.md | 4 ---- .../current/guides/integration-mobile-client-server.md | 4 ---- 2 files changed, 8 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 177b9054d..9d2b9d454 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -83,8 +83,6 @@ The following diagram shows the data flow that the publisher must implement for This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. -**GWH__KL_01: diagram updates to remove TTD colors at least?**) - ![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) @@ -263,8 +261,6 @@ The format of the file stored in the local file storage, or the filename itself, ## Pass Generated Token for Bid Stream Use -(**GWH__KL02 Question from SW: "his is a question for PM probably - bid stream does not exist in UID2 Glossary - should it? I dunno if bid stream actually makes sense to publishers to be honest" Do we add it into glossary... I'd thought everyone would know that term, SW doesn't think so. And, bid stream two words... is that a company decision?**) - To retrieve the token, in your mobile app, call the following: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index 177b9054d..9d2b9d454 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -83,8 +83,6 @@ The following diagram shows the data flow that the publisher must implement for This example uses the [UID2 SDK for Android](../sdks/uid2-sdk-ref-android.md) in the client-side mobile app and the [UID2 SDK for Java](../sdks/uid2-sdk-ref-java.md) on the server side. -**GWH__KL_01: diagram updates to remove TTD colors at least?**) - ![Mobile Client-Server Integration Example](images/integration-mobile-client-server.png) @@ -263,8 +261,6 @@ The format of the file stored in the local file storage, or the filename itself, ## Pass Generated Token for Bid Stream Use -(**GWH__KL02 Question from SW: "his is a question for PM probably - bid stream does not exist in UID2 Glossary - should it? I dunno if bid stream actually makes sense to publishers to be honest" Do we add it into glossary... I'd thought everyone would know that term, SW doesn't think so. And, bid stream two words... is that a company decision?**) - To retrieve the token, in your mobile app, call the following: From 6455f489da00c1a028a5c19e292c2ae567cf2287 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 14 May 2024 13:07:19 -0400 Subject: [PATCH 25/47] fix: links from snippets need to exclude the .md extension --- docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx b/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx index c67615ab3..a58f4e794 100644 --- a/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx +++ b/docs/snippets/_mobile_docs_gmaima-plugin-gss.mdx @@ -3,10 +3,10 @@ import TabItem from '@theme/TabItem'; If you intend to generate UID2 tokens to send to the [Google GMA SDK](https://developers.google.com/ad-manager/mobile-ads-sdk) or the [Google IMA SDK](https://developers.google.com/interactive-media-ads/), assuming you have followed the instructions in this guide, you must also add the UID2 GMA/IMA plugins into your mobile app. For instructions, refer to the applicable plug-in guide: -- [UID2 GMA Plugin for Android Integration Guide](../guides/mobile-plugin-gma-android.md) -- [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios.md) -- [UID2 IMA Plugin for Android Integration Guide](../guides/mobile-plugin-ima-android.md) -- [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios.md) +- [UID2 GMA Plugin for Android Integration Guide](../guides/mobile-plugin-gma-android) +- [UID2 GMA Plugin for iOS Integration Guide](../guides/mobile-plugin-gma-ios) +- [UID2 IMA Plugin for Android Integration Guide](../guides/mobile-plugin-ima-android) +- [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios) :::note You do not need to explicitly make the `getAdvertisingToken()` method call to retrieve the advertising tokens and pass them into Google GMA/IMA SDK manually. The UID2 GMA/IMA plugins manage this for you. From ebe54613f568755af1db9647ac21aec12bdd7ab9 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 14 May 2024 14:50:53 -0400 Subject: [PATCH 26/47] minor update to glossary def --- docs/ref-info/glossary-uid.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ref-info/glossary-uid.md b/docs/ref-info/glossary-uid.md index f1deb3f30..9162d45c9 100644 --- a/docs/ref-info/glossary-uid.md +++ b/docs/ref-info/glossary-uid.md @@ -114,7 +114,7 @@ import Link from '@docusaurus/Link';
See client secret.
App name
-
In the context of mobile implementation, app name is a group term for the Android application ID, iOS app store ID, or iOS bundle identifier.
+
In the context of mobile integrations, the app name is the Android application ID, the iOS app store ID, or the iOS bundle identifier.
Authorization header
The Authorization header is a way to authenticate the client to the UID2 service.
From 6367e2ae164b57b430ab3176d20996badadb9d94 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 14 May 2024 17:38:24 -0400 Subject: [PATCH 27/47] change danger admonition to warning --- docs/guides/integration-mobile-client-server.md | 2 +- docs/guides/publisher-client-side.md | 2 +- docs/sdks/client-side-identity.md | 4 ++-- .../current/guides/integration-mobile-client-server.md | 2 +- .../current/guides/publisher-client-side.md | 2 +- .../current/sdks/client-side-identity.md | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 9d2b9d454..9cc542d2e 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -139,7 +139,7 @@ The endpoint and SDK API returns opt-out status if the identity is generated and stored in local storage, under the key `UID2-sdk-identity`. The SDK refreshes the UID2 token periodically. -:::danger +:::warning The format of the object stored in local storage could change without notice. We recommend that you do **not** read and update the object in local storage directly. ::: diff --git a/docs/sdks/client-side-identity.md b/docs/sdks/client-side-identity.md index b35bba0d0..9b5f4f21c 100644 --- a/docs/sdks/client-side-identity.md +++ b/docs/sdks/client-side-identity.md @@ -437,7 +437,7 @@ When a user logs out of the publisher's site, make the following call: After this function is executed, the [getAdvertisingToken()](#getadvertisingtoken-string) function returns `undefined` and the [isLoginRequired()](#isloginrequired-boolean) function returns `true`. -:::danger +:::warning If you need to provide a `cookieDomain` or `cookiePath` for the SDK to access the correct cookie, and `init` has not been completed, the SDK cannot clear the cookie. In this case, no error is raised. ::: @@ -504,7 +504,7 @@ The following is an example of the UID2 cookie structure: } } ``` -:::danger +:::warning The contents of the `private` object are explicitly unspecified and are left for the SDK to interpret. Do not make any assumptions about the structure, semantics, or compatibility of this object. Any updates to the cookie must retain its structure. ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index 9d2b9d454..9cc542d2e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -139,7 +139,7 @@ The endpoint and SDK API returns opt-out status if the identity が生成され、`UID2-sdk-identity` というキーでローカルストレージに保存されます。SDK は UID2 Token を定期的にリフレッシュします。 -:::danger +:::warning ローカルストレージに保存されているオブジェクトのフォーマットは予告なく変更される可能性があります。ローカルストレージのオブジェクトを直接読み込んだり更新したり**しないこと**でください。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/client-side-identity.md b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/client-side-identity.md index 120682e62..b1ac0c3ce 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/client-side-identity.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/client-side-identity.md @@ -437,7 +437,7 @@ UID2 ID をファーストパーティクッキーとローカルストレージ この関数が実行されると、[getAdvertisingToken()](#getadvertisingtoken-string) 関数は `undefined` を返し、[isLoginRequired()](#isloginrequired-boolean) 関数は `true` を返します。 -:::danger +:::warning SDK が正しいクッキーにアクセスするために `cookieDomain` または `cookiePath` を指定する必要があり、かつ `init` が完了していない場合、SDK はクッキーをクリアできません。この場合、エラーは発生しません。 ::: @@ -504,7 +504,7 @@ UID2 Cookie の内容は、[POST /token/generate](../endpoints/post-token-g } } ``` -:::danger +:::warning `private` オブジェクトの内容は明示的に指定されておらず、SDK が解釈するようになっています。このオブジェクトの構造、セマンティクス、互換性について、いかなる仮定もしないでください。クッキーの更新はその構造を保持しなければなりません。 ::: From 59e2c5b4c782904bc9d02cdba4d6c274889a8a43 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Wed, 15 May 2024 10:06:57 +1000 Subject: [PATCH 28/47] mention release notes in android/ios ref guides --- docs/sdks/uid2-sdk-ref-android.md | 2 +- docs/sdks/uid2-sdk-ref-ios.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index a46a461d1..4f77bbe4d 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -67,7 +67,7 @@ You'll be granted permission to use specific functions offered by the SDK, and g This documentation is for the UID2 SDK for Android version 1.2.0 and later. -For information about specific release versions, see [https://github.com/IABTechLab/uid2-android-sdk/releases](https://github.com/IABTechLab/uid2-android-sdk/releases). +For current and past release notes information, see [https://github.com/IABTechLab/uid2-android-sdk/releases](https://github.com/IABTechLab/uid2-android-sdk/releases). ## GitHub Repository/Binary diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index c4774e3a9..297d798ff 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -65,6 +65,8 @@ You'll be granted permission to use specific functions offered by the SDK, and g This documentation is for the UID2 SDK for iOS version 1.2.0 and later. +For current and past release notes information, see [https://github.com/IABTechLab/uid2-ios-sdk/releases](https://github.com/IABTechLab/uid2-ios-sdk/releases). + ## GitHub Open-Source Repository This SDK is in the following open-source GitHub repository: From 5ab55eceda69edb5f26f183470f90079b13950d0 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Wed, 15 May 2024 10:08:53 -0400 Subject: [PATCH 29/47] implement tabs in format examples for DII --- docs/guides/integration-mobile-client-side.md | 19 ++++++++++++------- .../guides/integration-mobile-client-side.md | 19 ++++++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 7e775ef78..27ffa5bd5 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -309,7 +309,7 @@ The SDK encrypts the hashed DII before sending it to the UID2 service. You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. -The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. +The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK: - Configure for Email Address - Configure for Hashed Email Address @@ -318,7 +318,8 @@ The following examples demonstrate the different ways that you can configure the If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. -#### Email, Unhashed + + The following example configures the UID2 mobile SDK with an email address. @@ -359,8 +360,6 @@ Task { // read `error` object for troubleshooting or enable logging to view it in logs } } - - ``` @@ -371,7 +370,8 @@ In this scenario: - No normalization or hashing is required by the publisher - The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. -#### Email, Normalized and Hashed + + The following example configures the UID2 SDK with a hashed email address. @@ -418,7 +418,8 @@ In this scenario: - The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). - The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. -#### Phone Number, Unhashed + + The following example configures the UID2 mobile SDK with a phone number. @@ -469,7 +470,8 @@ In this scenario: - The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). - The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. -#### Phone Number, Normalized and Hashed + + The following example configures the UID2 mobile SDK with a hashed phone number. @@ -516,6 +518,9 @@ In this scenario: - The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). - The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + + + ## Token Storage and Refresh After a call to the applicable method listed in [Format Examples for DII](#format-examples-for-dii) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md index 7e775ef78..27ffa5bd5 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -309,7 +309,7 @@ The SDK encrypts the hashed DII before sending it to the UID2 service. You can invoke the `generateIdentity` method using any of the four accepted formats for DII, for any specific user. The DII format might vary per user, but you can only send one value per user. -The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK. +The following examples demonstrate the different ways that you can configure the UID2 mobile SDK and list the requirements for the DII passed into the SDK: - Configure for Email Address - Configure for Hashed Email Address @@ -318,7 +318,8 @@ The following examples demonstrate the different ways that you can configure the If the `generateIdentity` method is called multiple times, the UID2 mobile SDK uses the most recent configuration values. -#### Email, Unhashed + + The following example configures the UID2 mobile SDK with an email address. @@ -359,8 +360,6 @@ Task { // read `error` object for troubleshooting or enable logging to view it in logs } } - - ``` @@ -371,7 +370,8 @@ In this scenario: - No normalization or hashing is required by the publisher - The UID2 mobile SDK normalizes and hashes the email address before sending the encrypted hash to the UID2 service. -#### Email, Normalized and Hashed + + The following example configures the UID2 SDK with a hashed email address. @@ -418,7 +418,8 @@ In this scenario: - The publisher is responsible for normalizing and hashing the email address. For details, see [Email Address Normalization](../getting-started/gs-normalization-encoding.md#email-address-normalization). - The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. -#### Phone Number, Unhashed + + The following example configures the UID2 mobile SDK with a phone number. @@ -469,7 +470,8 @@ In this scenario: - The publisher is responsible for normalizing the phone number. For details, see [Phone Number Normalization](../getting-started/gs-normalization-encoding.md#phone-number-normalization). - The UID2 mobile SDK hashes the phone number before sending the encrypted hash to the UID2 service. -#### Phone Number, Normalized and Hashed + + The following example configures the UID2 mobile SDK with a hashed phone number. @@ -516,6 +518,9 @@ In this scenario: - The publisher is responsible for normalizing and hashing the phone number. For details, see [Phone Number Hash Encoding](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding). - The UID2 mobile SDK encrypts the hashed DII before sending it to the UID2 service. + + + ## Token Storage and Refresh After a call to the applicable method listed in [Format Examples for DII](#format-examples-for-dii) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. From c036d16e5b5db3a860df86581ce9603e939beabb Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Wed, 15 May 2024 18:03:02 -0400 Subject: [PATCH 30/47] update per edit from DSC --- docs/guides/integration-mobile-client-side.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 27ffa5bd5..54b723418 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -449,7 +449,7 @@ struct InvalidPhoneError: Error, LocalizedError { Task { do { guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { - throw InvalidPhoneError() // phone number is invalid and cannot be normalized, handle error + throw InvalidPhoneError() // Phone number is not normalized according to ITU E.164. } try await UID2Manager.shared.generateIdentity( .phone(normalizedPhone), From a597b1c5946751e7728def6e4ffbb8af45ad4f3c Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Wed, 15 May 2024 18:52:41 -0400 Subject: [PATCH 31/47] update for DSC edit to Japanese copy --- .../current/guides/integration-mobile-client-side.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md index 27ffa5bd5..54b723418 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -449,7 +449,7 @@ struct InvalidPhoneError: Error, LocalizedError { Task { do { guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+1111111111") else { - throw InvalidPhoneError() // phone number is invalid and cannot be normalized, handle error + throw InvalidPhoneError() // Phone number is not normalized according to ITU E.164. } try await UID2Manager.shared.generateIdentity( .phone(normalizedPhone), From edb56786aa5b857a2b4208939f53af661b9b2fc7 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Thu, 16 May 2024 17:37:42 +1000 Subject: [PATCH 32/47] Improved generateIdentity code snippets per Matt's feedbacks and addressed his other comments --- docs/guides/integration-mobile-client-side.md | 60 ++++++++++++++----- docs/sdks/uid2-sdk-ref-android.md | 6 +- docs/sdks/uid2-sdk-ref-ios.md | 2 +- 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 54b723418..0037c6410 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -104,14 +104,24 @@ Behind the scenes, the development app makes the following UID2 SDK API call. Th ```js -UID2Manager.getInstance().generateIdentity() +UID2Manager.getInstance().generateIdentity( + identityRequest: IdentityRequest, + subscriptionId: String, + publicKey: String, + onResult: (GenerateIdentityResult) -> Unit +) ``` ```js -UID2Manager.shared.generateIdentity() +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) ``` @@ -187,8 +197,8 @@ If necessary, you can also change the default Subscription ID and public key to To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - Android Application ID +- iOS Bundle Identifier - iOS App Store ID -- App Store ID When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). @@ -280,14 +290,24 @@ To configure the SDK, you must pass in the Subscription ID and public key that y ```js -UID2Manager.getInstance().generateIdentity() +UID2Manager.getInstance().generateIdentity( + identityRequest: IdentityRequest, + subscriptionId: String, + publicKey: String, + onResult: (GenerateIdentityResult) -> Unit +) ``` ```js -UID2Manager.shared.generateIdentity() +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) ``` @@ -531,7 +551,7 @@ The format of the file stored in the local file storage, or the filename itself, ## Pass Generated Token for Bid Stream Use -In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity. The next step is to call the `getAdvertisingToken()` method, which gets the advertising token, as follows: +In your mobile app, if the call to `generateIdentity` was successful, it returned an identity. The next step is to call the `getAdvertisingToken()` method, which gets the advertising token, as follows: @@ -563,31 +583,41 @@ If the `getAdvertisingToken()` method call returns `null`, there was no identity Some possible reasons for this, and some things you could do to troubleshoot, are as follows: - The identity is invalid. In this scenario there are a couple of options: - - Check to see whether there are any errors from the previous `generateIdentity()` call. + - Check to see whether there are any errors from the previous `generateIdentity` call. - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. - You could enable logging to get more information: see [Enable Logging](#enable-logging). - The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. -If there is no identity, you'll need to call the `generateIdentity()` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). +If there is no identity, you'll need to call the `generateIdentity` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). For more information, see [When to Pass DII into the SDK](#when-to-pass-dii-into-the-sdk) (next section). ## When to Pass DII into the SDK -The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: +The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity` method, with the DII, to start the token generation: ```js -UID2Manager.getInstance().generateIdentity() +UID2Manager.getInstance().generateIdentity( + identityRequest: IdentityRequest, + subscriptionId: String, + publicKey: String, + onResult: (GenerateIdentityResult) -> Unit +) ``` ```js -UID2Manager.shared.generateIdentity() +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) ``` @@ -595,7 +625,7 @@ UID2Manager.shared.generateIdentity() When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity()` method again to generate a new identity and get the resulting UID2 token. +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity` method again to generate a new identity and get the resulting UID2 token. The only exception is if response to the following Android method/iOS object indicates that the DII was opted out of UID2: @@ -616,7 +646,7 @@ UID2Manager.shared.identityStatus -A response status of `OPT_OUT` for Android or `optOut` for iOS, indicates that the DII has been opted out of UID2 and no identity/token should be generated for it. You might want to avoid making repeated `generateIdentity()` calls: if the DII has a status of opted out, the UID2 token is not generated. +A response status of `OPT_OUT` for Android or `optOut` for iOS, indicates that the DII has been opted out of UID2 and no identity/token should be generated for it. You might want to avoid making repeated `generateIdentity` calls: if the DII has a status of opted out, the UID2 token is not generated. The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: @@ -637,11 +667,11 @@ UID2Manager.shared.getAdvertisingToken()
-If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity()` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). -You can use the UID2 SDK for Android to facilitate the process of performing the following activities: +You can use the UID2 SDK for Android for the following: - Generating or establishing client identity using UID2. - Retrieving advertising tokens for bid stream use. @@ -119,7 +119,7 @@ To install with Maven, add the SDK as a dependency in the `pom.xml` file: ## Usage Guidelines -The **UID2Manager** singleton is the primary developer API for the UID2 SDK for Android. It is responsible for storing, refreshing, and retrieving UID2 Identity and according token. +The **UID2Manager** singleton is the primary developer API for the UID2 SDK for Android. It is responsible for storing, refreshing, and retrieving the UID2 Identity including the UID2 token. The UID2Manager singleton must be initialized before use because: diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index bc86da656..7ce0e239d 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -26,7 +26,7 @@ import Link from '@docusaurus/Link'; - [Variables](#variables) - [Code Samples](#code-samples) --> -You can use the UID2 SDK for iOS to facilitate the process of performing the following activities: +You can use the UID2 SDK for Android for the following: - Generating or establishing client identity using UID2. - Retrieving advertising tokens for bid stream use. @@ -107,11 +107,11 @@ Add the following entry in the Package Dependencies for your apps: | Name | Location | Dependency Rule | | :--- | :--- |:----------------------------------------| -| uid2-ios-sdk | git@github.com:IABTechLab/uid2-ios-sdk.git | Up to next major version: 1.2.0 < 2.0.0 | +| uid2-ios-sdk | `git@github.com:IABTechLab/uid2-ios-sdk.git` | Up to next major version: 1.2.0 < 2.0.0 | ## Usage Guidelines -The **UID2Manager** singleton is the primary developer API for the UID2 SDK for iOS. It is responsible for storing, refreshing, and retrieving UID2 Identity and according token. +The **UID2Manager** singleton is the primary developer API for the UID2 SDK for Android. It is responsible for storing, refreshing, and retrieving the UID2 Identity including the UID2 token. For iOS, the `UID2Manager` is initialized automatically the first time it is accessed. You can configure it to support automatic or manual refresh capabilities. diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index 9cc542d2e..6270711b3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -37,7 +37,7 @@ You'll need to complete the following steps: 1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). 2. [Implement server-side token generation](#implement-server-side-token-generation). -3. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). +3. [Add the UID2 mobile SDK to your mobile app](#add-the-uid2-mobile-sdk-to-your-mobile-app). 4. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). 5. [Check that the token was successfully generated and then pass it for bid stream use](#pass-generated-token-for-bid-stream-use). 6. [Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signal integration](#optional-uid2-gmaima-plugin-for-gam-secure-signal-integration). @@ -50,7 +50,7 @@ You'll need to complete the following steps: - [Client-Server Mobile Integration Data Flow Overview](#client-server-mobile-integration-data-flow-overview) - [Implement Server-Side Token Generation](#implement-server-side-token-generation) - [Server-Side Token Refresh](#server-side-token-refresh) -- [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app) +- [Add the UID2 Mobile SDK to Your Mobile App](#add-the-uid2-mobile-sdk-to-your-mobile-app) - [Using the UID2 Integration Environment](#using-the-uid2-integration-environment) - [Optional: Reduce Latency by Setting the API Base URL for the Production Environment](#optional-reduce-latency-by-setting-the-api-base-url-for-the-production-environment) - [Token Storage](#token-storage) @@ -68,7 +68,7 @@ This guide provides instructions for using version v1.2.0 or higher of either of - UID2 SDK for Android - UID2 SDK for iOS -For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). +For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK to Your Mobile App](#add-the-uid2-mobile-sdk-to-your-mobile-app). ## Complete the UID2 Account Setup @@ -158,7 +158,7 @@ However, if you decide you want to manage token refresh on the server side and n Then, pass the newly refreshed `Identity` value to the mobile app by following the rest of this guide. -## Add the UID2 Mobile SDK into Your Mobile App +## Add the UID2 Mobile SDK to Your Mobile App For installation instructions, refer to one of the following: @@ -197,7 +197,7 @@ UID2Settings.shared.environment = .custom( :::note Bear in mind the following differences between environments: - Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. +- You'll have a different set of Subscription ID and public key values for each environment (integration and production). Be sure to use the correct values for each environment. ::: ### Optional: Reduce Latency by Setting the API Base URL for the Production Environment @@ -212,7 +212,7 @@ To specify a different UID2 server, you can change it in the `init` call: ```js UID2Manager.init( context = this, - serverUrl = " https://global.prod.uidapi.com" + serverUrl = "https://global.prod.uidapi.com" ) ``` @@ -256,7 +256,7 @@ UID2Manager.shared.setIdentity() After you call the `setIdentity` method, the UID2 Identity is persisted in local file storage. :::warning -The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read or update the file directly. ::: ## Pass Generated Token for Bid Stream Use diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md index 54b723418..ead501c32 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-side.md @@ -35,7 +35,7 @@ To integrate with UID2 client-side, you'll need to complete the following steps: 1. [Complete the UID2 account setup](#complete-the-uid2-account-setup). -1. [Add the UID2 mobile SDK into your mobile app](#add-the-uid2-mobile-sdk-into-your-mobile-app). +1. [Add the UID2 mobile SDK to your mobile app](#add-the-uid2-mobile-sdk-to-your-mobile-app). 1. [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). @@ -48,7 +48,7 @@ To integrate with UID2 client-side, you'll need to complete the following steps: - [Mobile SDK Version](#mobile-sdk-version) - [Client-Side Integration Example](#client-side-integration-example) - [Complete the UID2 Account Setup](#complete-the-uid2-account-setup) -- [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app) +- [Add the UID2 Mobile SDK to Your Mobile App](#add-the-uid2-mobile-sdk-to-your-mobile-app) - [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk) - [Format Examples for DII](#format-examples-for-dii) - [Token Storage and Refresh](#token-storage-and-refresh) @@ -65,7 +65,7 @@ This guide provides instructions for using version v1.2.0 or higher of either of - UID2 SDK for Android - UID2 SDK for iOS -For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK into Your Mobile App](#add-the-uid2-mobile-sdk-into-your-mobile-app). +For instructions for installing the correct SDK/version into your mobile app, see [Add the UID2 Mobile SDK to Your Mobile App](#add-the-uid2-mobile-sdk-to-your-mobile-app). ## Client-Side Integration Example @@ -104,14 +104,24 @@ Behind the scenes, the development app makes the following UID2 SDK API call. Th ```js -UID2Manager.getInstance().generateIdentity() +UID2Manager.getInstance().generateIdentity( + identityRequest: IdentityRequest, + subscriptionId: String, + publicKey: String, + onResult: (GenerateIdentityResult) -> Unit +) ``` ```js -UID2Manager.shared.generateIdentity() +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) ``` @@ -187,12 +197,12 @@ If necessary, you can also change the default Subscription ID and public key to To set up your account, follow the steps described in [Account Setup](../getting-started/gs-account-setup.md). As part of the account setup process, you'll need to provide a list of app names for all the mobile apps that you'll be integrating with the UID2 mobile SDKs, including any of these values that apply: - Android Application ID +- iOS Bundle Identifier - iOS App Store ID -- App Store ID When account setup is complete, you'll receive a [Subscription ID and public key](../getting-started/gs-credentials.md#subscription-id-and-public-key). These values are unique to you, and you'll use them when you [configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). -## Add the UID2 Mobile SDK into Your Mobile App +## Add the UID2 Mobile SDK to Your Mobile App To add the mobile SDK to your app, follow the applicable documentation: @@ -231,7 +241,7 @@ UID2Settings.shared.environment = .custom( :::note Bear in mind the following differences between environments: - Tokens from the UID2 integration environment are not valid for passing to the bid stream. -- You'll have a different set of Subscription ID and public key values for each environment (integ and prod). Be sure to use the correct values for each environment. +- You'll have a different set of Subscription ID and public key values for each environment (integration and production). Be sure to use the correct values for each environment. ::: ### Optional: Reduce Latency by Setting the API Base URL for the Production Environment @@ -246,7 +256,7 @@ To specify a different UID2 server, you can make config changes, as shown in the ```js UID2Manager.init( context = this, - serverUrl = " https://global.prod.uidapi.com" + serverUrl = "https://global.prod.uidapi.com" ) ``` @@ -280,14 +290,24 @@ To configure the SDK, you must pass in the Subscription ID and public key that y ```js -UID2Manager.getInstance().generateIdentity() +UID2Manager.getInstance().generateIdentity( + identityRequest: IdentityRequest, + subscriptionId: String, + publicKey: String, + onResult: (GenerateIdentityResult) -> Unit +) ``` ```js -UID2Manager.shared.generateIdentity() +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) ``` @@ -526,12 +546,12 @@ In this scenario: After a call to the applicable method listed in [Format Examples for DII](#format-examples-for-dii) is successful, an identity is generated and stored in local file storage. The UID2 mobile SDK refreshes the UID2 token periodically. :::warning -The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read and update the file directly. +The format of the file stored in the local file storage, or the filename itself, could change without notice. We recommend that you do not read or update the file directly. ::: ## Pass Generated Token for Bid Stream Use -In your mobile app, if the call to `generateIdentity()` was successful, it returned an identity. The next step is to call the `getAdvertisingToken()` method, which gets the advertising token, as follows: +In your mobile app, if the call to `generateIdentity` was successful, it returned an identity. The next step is to call the `getAdvertisingToken()` method, which gets the advertising token, as follows: @@ -563,31 +583,41 @@ If the `getAdvertisingToken()` method call returns `null`, there was no identity Some possible reasons for this, and some things you could do to troubleshoot, are as follows: - The identity is invalid. In this scenario there are a couple of options: - - Check to see whether there are any errors from the previous `generateIdentity()` call. + - Check to see whether there are any errors from the previous `generateIdentity` call. - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. - You could enable logging to get more information: see [Enable Logging](#enable-logging). - The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. -If there is no identity, you'll need to call the `generateIdentity()` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). +If there is no identity, you'll need to call the `generateIdentity` method again: see [Configure the UID2 Mobile SDK](#configure-the-uid2-mobile-sdk). For more information, see [When to Pass DII into the SDK](#when-to-pass-dii-into-the-sdk) (next section). ## When to Pass DII into the SDK -The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity()` method, with the DII, to start the token generation: +The first time a new user opens the app, no UID2 identity exists. You'll need to call the `generateIdentity` method, with the DII, to start the token generation: ```js -UID2Manager.getInstance().generateIdentity() +UID2Manager.getInstance().generateIdentity( + identityRequest: IdentityRequest, + subscriptionId: String, + publicKey: String, + onResult: (GenerateIdentityResult) -> Unit +) ``` ```js -UID2Manager.shared.generateIdentity() +UID2Manager.shared.generateIdentity( + _ identity: IdentityType, + subscriptionID: String, + serverPublicKey: String, + appName: String? = nil +) ``` @@ -595,7 +625,7 @@ UID2Manager.shared.generateIdentity() When this method call completes successfully, the advertising token (UID2 token) is available for you to send to the bid stream. -If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity()` method again to generate a new identity and get the resulting UID2 token. +If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity` method again to generate a new identity and get the resulting UID2 token. The only exception is if response to the following Android method/iOS object indicates that the DII was opted out of UID2: @@ -616,7 +646,7 @@ UID2Manager.shared.identityStatus -A response status of `OPT_OUT` for Android or `optOut` for iOS, indicates that the DII has been opted out of UID2 and no identity/token should be generated for it. You might want to avoid making repeated `generateIdentity()` calls: if the DII has a status of opted out, the UID2 token is not generated. +A response status of `OPT_OUT` for Android or `optOut` for iOS, indicates that the DII has been opted out of UID2 and no identity/token should be generated for it. You might want to avoid making repeated `generateIdentity` calls: if the DII has a status of opted out, the UID2 token is not generated. The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: @@ -637,11 +667,11 @@ UID2Manager.shared.getAdvertisingToken()
-If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity()` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). -You can use the UID2 SDK for Android for the following: +You can use the UID2 SDK for iOS for the following: - Generating or establishing client identity using UID2. - Retrieving advertising tokens for bidstream use. From 437cfe4f24b2a87f801879e2fe3c5dfb859fe54c Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Thu, 16 May 2024 21:25:24 -0400 Subject: [PATCH 38/47] update iOS version in Japanese --- .../current/sdks/uid2-sdk-ref-ios.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md index c11e3af90..9a0d3f151 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/sdks/uid2-sdk-ref-ios.md @@ -93,7 +93,7 @@ Package.swift に以下の依存関係を追加します: ```js dependencies: [ -.package(url: "https://github.com/IABTechLab/uid2-ios-sdk.git", from: "0.2.0"), + .package(url: "https://github.com/IABTechLab/uid2-ios-sdk.git", from: "1.2.0"), ] ``` From ccf25323bb3f463e3d5dbe19740087da1426fc8f Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Thu, 16 May 2024 21:49:56 -0400 Subject: [PATCH 39/47] minor updates --- docs/guides/mobile-plugin-gma-android.md | 2 +- docs/guides/mobile-plugin-ima-android.md | 4 ++-- .../current/guides/mobile-plugin-gma-android.md | 2 +- .../current/guides/mobile-plugin-gma-ios.md | 6 +++--- .../current/guides/mobile-plugin-ima-android.md | 4 ++-- .../current/guides/mobile-plugin-ima-ios.md | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/guides/mobile-plugin-gma-android.md b/docs/guides/mobile-plugin-gma-android.md index 35cae664f..b30f8b2ca 100644 --- a/docs/guides/mobile-plugin-gma-android.md +++ b/docs/guides/mobile-plugin-gma-android.md @@ -34,7 +34,7 @@ To run this plugin, install the following: 1. Google Mobile Ads SDK v22.0.0 or later: - [SDK](https://developers.google.com/admob/android/sdk) - [Release notes](https://developers.google.com/admob/android/rel-notes) -1. UID2 SDK for Android v0.5.0: +1. UID2 SDK for Android v0.5.0 or later: - [SDK](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk) - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) 1. [UID2 Android GMA Plugin v0.5.0](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk-gma/) diff --git a/docs/guides/mobile-plugin-ima-android.md b/docs/guides/mobile-plugin-ima-android.md index 896813a6f..517a58d0a 100644 --- a/docs/guides/mobile-plugin-ima-android.md +++ b/docs/guides/mobile-plugin-ima-android.md @@ -31,10 +31,10 @@ This plugin is in the following open-source GitHub repository: To run this plugin, install the following: -1. Google IMA SDK v3.30.3: +1. Google IMA SDK v3.30.3 or later: - [SDK](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side) - [Release history](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/history) -1. UID2 SDK for Android v0.5.0: +1. UID2 SDK for Android v0.5.0 or later: - [SDK](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk) - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) 1. [UID2 IMA Plugin for Android v0.5.0](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk-ima) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md index 971f735d8..41e64b3c8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-android.md @@ -34,7 +34,7 @@ UID2 Google Mobile Ads (GMA) Plugin for Android は、[Google Mobile Ads (GMA) S 1. Google Mobile Ads SDK v22.0.0 or later: - [SDK](https://developers.google.com/admob/android/sdk) - [Release notes](https://developers.google.com/admob/android/rel-notes) -1. UID2 SDK for Android v0.5.0: +1. UID2 SDK for Android v0.5.0 or later: - [SDK](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk) - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) 1. [UID2 Android GMA Plugin v0.5.0](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk-gma/) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md index a67fbc9d5..3e2fe3908 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-gma-ios.md @@ -19,7 +19,7 @@ UID2 Google Mobile Ads (GMA) Plugin for iOS は、[Google Mobile Ads (GMA) SDK]( -このドキュメントは UID2 GMA Plugin for iOS バージョン 0.2.0 用です。 +このドキュメントは UID2 GMA Plugin for iOS バージョン 0.3.0 用です。 ## GitHub Repository @@ -34,10 +34,10 @@ UID2 Google Mobile Ads (GMA) Plugin for iOS は、[Google Mobile Ads (GMA) SDK]( 1. Google Mobile Ads SDK v10.7.0 or later: - [SDK](https://developers.google.com/admob/ios) - [Release Notes](https://developers.google.com/admob/ios/rel-notes) -1. UID2 SDK for iOS v0.2.0: +1. UID2 SDK for iOS v0.3.0 or later: - [SDK](https://github.com/IABTechLab/uid2-ios-sdk) - [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) -1. [UID2 GMA Plugin for iOS v0.2.0](https://github.com/IABTechLab/uid2-ios-plugin-google-gma) +1. [UID2 GMA Plugin for iOS v0.3.0](https://github.com/IABTechLab/uid2-ios-plugin-google-gma) ## Installation diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md index 237ea57d6..80f1e1302 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-android.md @@ -31,10 +31,10 @@ UID2 Interactive Media Ads (IMA) Plugin for Android は、[Google IMA SDK for An このプラグインを実行するには、以下をインストールします: -1. Google IMA SDK v3.30.3: +1. Google IMA SDK v3.30.3 or later: - [SDK](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side) - [Release history](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/history) -1. UID2 SDK for Android v0.5.0: +1. UID2 SDK for Android v0.5.0 or later: - [SDK](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk) - [UID2 SDK for Android Reference Guide](../sdks/uid2-sdk-ref-android.md) 1. [UID2 IMA Plugin for Android v0.5.0](https://central.sonatype.com/artifact/com.uid2/uid2-android-sdk-ima) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md index 09808f3e6..a6794a7b7 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md @@ -19,7 +19,7 @@ UID2 Interactive Media Ads (IMA) Plugin for iOS は、[Google IMA SDK for iOS](h -このドキュメントはUID2 IMA Plugin for iOS version 0.2.0 用です。 +このドキュメントはUID2 IMA Plugin for iOS version 0.3.0 用です。 ## GitHub Repository @@ -34,10 +34,10 @@ UID2 Interactive Media Ads (IMA) Plugin for iOS は、[Google IMA SDK for iOS](h 1. Google IMA SDK v3.18.5 or later: - [SDK](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side) - [Release history](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/history) -1. UID2 SDK for iOS v0.2.0: +1. UID2 SDK for iOS v0.3.0 or later: - [SDK](https://github.com/IABTechLab/uid2-ios-sdk) - [UID2 SDK for iOS Reference Guide](../sdks/uid2-sdk-ref-ios.md) -1. [UID2 IMA Plugin for iOS v0.2.0](https://github.com/IABTechLab/uid2-ios-plugin-google-ima) +1. [UID2 IMA Plugin for iOS v0.3.0](https://github.com/IABTechLab/uid2-ios-plugin-google-ima) ## Installation From 1e4f19a8b2ec2dd67f42f7bbc08f320cb9a8f8f8 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Fri, 17 May 2024 12:45:01 +1000 Subject: [PATCH 40/47] Fixed an error edit on IMA ios plugin version requirement and added android studio requirement in client-side guide --- docs/guides/integration-mobile-client-side.md | 2 +- docs/guides/mobile-plugin-ima-ios.md | 2 +- .../current/guides/mobile-plugin-ima-ios.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index 34fd602f9..abc222c4a 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -77,7 +77,7 @@ Follow the applicable instructions, for Android or iOS: 1. Check out the main branch of the [UID2 SDK for Android source code repository on GitHub](https://github.com/IABTechLab/uid2-android-sdk/tree/main). -1. In Android Studio, open the directory that you checked out. +1. In Android Studio (Jellyfish/v2023.3.1 or whichever future version supports the Android Gradle Plugin version required by the UID2 SDK for Android release at the time), open the directory that you checked out. 1. Run the **dev-app** app. 1. When you've started the app, make sure that the **Client Side** checkbox is checked. 1. Enter an email or phone number, and then click the arrow to the right. diff --git a/docs/guides/mobile-plugin-ima-ios.md b/docs/guides/mobile-plugin-ima-ios.md index 97ffbb459..4d5598099 100644 --- a/docs/guides/mobile-plugin-ima-ios.md +++ b/docs/guides/mobile-plugin-ima-ios.md @@ -31,7 +31,7 @@ This plugin is in the following open-source GitHub repository: To run this plugin, install the following: -1. Google IMA SDK v3.18.5 or later: +1. Google IMA SDK v3.19.1 or later: - [SDK](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side) - [Release history](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/history) 1. UID2 SDK for iOS v0.3.0 or later: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md index a6794a7b7..67025af15 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/mobile-plugin-ima-ios.md @@ -31,7 +31,7 @@ UID2 Interactive Media Ads (IMA) Plugin for iOS は、[Google IMA SDK for iOS](h このプラグインを実行するには、以下をインストールします: -1. Google IMA SDK v3.18.5 or later: +1. Google IMA SDK v3.19.1 or later: - [SDK](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side) - [Release history](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/history) 1. UID2 SDK for iOS v0.3.0 or later: From 1a8c61b7bfa59edd3632384c8e885200406e41ab Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Fri, 17 May 2024 14:13:00 +1000 Subject: [PATCH 41/47] Fixed some inconsistencies --- docs/sdks/uid2-sdk-ref-android.md | 4 ++-- docs/sdks/uid2-sdk-ref-ios.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/sdks/uid2-sdk-ref-android.md b/docs/sdks/uid2-sdk-ref-android.md index 27ea06502..de956452c 100644 --- a/docs/sdks/uid2-sdk-ref-android.md +++ b/docs/sdks/uid2-sdk-ref-android.md @@ -31,7 +31,7 @@ You can use the UID2 SDK for Android for the following: - Generating or establishing client identity using UID2. - Retrieving advertising tokens for bidstream use. -- Automatically refreshes UID2 tokens. +- Automatically refreshing UID2 tokens. The following Android-related plugins, and associated documentation, are also available. @@ -139,7 +139,7 @@ class MyApplication : Application() { There are two ways to establish an initial UID2 Identity: -1. Generate the UID2 identity using DII - email (hash) or phone no (hash). For integration instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). +1. Generate the UID2 identity using DII—email (hashed or unhashed) or phone number (hashed or unhashed). For integration instructions, see [Client-Side Integration Guide for Mobile](../guides/integration-mobile-client-side.md). 2. Create a UID2 identity server-side and then pass it into the UID2 SDK. For integration instructions, refer to [Client-Server Integration Guide for Mobile](../guides/integration-mobile-client-server.md). diff --git a/docs/sdks/uid2-sdk-ref-ios.md b/docs/sdks/uid2-sdk-ref-ios.md index 06b2435a8..69bf1273d 100644 --- a/docs/sdks/uid2-sdk-ref-ios.md +++ b/docs/sdks/uid2-sdk-ref-ios.md @@ -30,7 +30,7 @@ You can use the UID2 SDK for iOS for the following: - Generating or establishing client identity using UID2. - Retrieving advertising tokens for bidstream use. -- Automatically refreshes UID2 tokens. +- Automatically refreshing UID2 tokens. The following iOS-related plugins, and associated documentation, are also available: @@ -111,7 +111,7 @@ Add the following entry in the Package Dependencies for your apps: ## Usage Guidelines -The **UID2Manager** singleton is the primary developer API for the UID2 SDK for Android. It is responsible for storing, refreshing, and retrieving the UID2 Identity including the UID2 token. +The **UID2Manager** singleton is the primary developer API for the UID2 SDK for iOS. It is responsible for storing, refreshing, and retrieving the UID2 Identity including the UID2 token. For iOS, the `UID2Manager` is initialized automatically the first time it is accessed. You can configure it to support automatic or manual refresh capabilities. From c4b2eb617f9488e5c4b0f284ba6e1f9f9bf56c54 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Fri, 17 May 2024 15:09:23 +1000 Subject: [PATCH 42/47] Fixed min android studio requirement and also comment out optout section as optout status for cstg isn't enabled in production yet --- docs/guides/integration-mobile-client-side.md | 4 +++- docs/guides/integration-mobile-overview.md | 2 +- docs/sdks/uid2-sdk-ref-android.md | 2 +- .../current/guides/integration-mobile-overview.md | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index abc222c4a..ff1182767 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -627,6 +627,7 @@ When this method call completes successfully, the advertising token (UID2 token) If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity` method again to generate a new identity and get the resulting UID2 token. + The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: @@ -667,7 +669,7 @@ UID2Manager.shared.getAdvertisingToken() -If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +If `getAdvertisingToken()` returns null, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md index 7021db6a9..273cdf699 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-overview.md @@ -32,7 +32,7 @@ UID2 provides SDKs for Android/iOS that support the following: - Refreshing the UID2 token - Storing the UID2 token -For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (described later in this document). +For additional flexibility, UID2 also provides alternative methods for some of the features and complementary products, such as Google GMA/IMA Plugins (described in the stated guides below). ## Client-Side or Client-Server Integration From 34832015f0ea397e5627db12f5c4c76c89e35465 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Fri, 17 May 2024 15:24:14 +1000 Subject: [PATCH 43/47] fixed a typo --- docs/guides/integration-mobile-client-server.md | 2 +- .../current/guides/integration-mobile-client-server.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/integration-mobile-client-server.md b/docs/guides/integration-mobile-client-server.md index 341dc6cca..8a0e8b215 100644 --- a/docs/guides/integration-mobile-client-server.md +++ b/docs/guides/integration-mobile-client-server.md @@ -290,7 +290,7 @@ You can use this identity to pass downstream for sending in the RTB bidstream. If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: -- The identity is invalid. - The identity is invalid. In this scenario there are a couple of options: +- The identity is invalid. In this scenario there are a couple of options: - Check to see whether there are any errors from the previous `setIdentity()` call. - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. - You could enable logging to get more information: see [Enable Logging](#enable-logging). diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md index 341dc6cca..8a0e8b215 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/guides/integration-mobile-client-server.md @@ -290,7 +290,7 @@ You can use this identity to pass downstream for sending in the RTB bidstream. If the `getAdvertisingToken()` method call returns `null`, there was no identity or valid token generated. Some possible reasons for this, and some things you could do to troubleshoot, are as follows: -- The identity is invalid. - The identity is invalid. In this scenario there are a couple of options: +- The identity is invalid. In this scenario there are a couple of options: - Check to see whether there are any errors from the previous `setIdentity()` call. - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. - You could enable logging to get more information: see [Enable Logging](#enable-logging). From d51b8047db700766d0648962a493f4c800ffa877 Mon Sep 17 00:00:00 2001 From: Sunny Wu Date: Fri, 17 May 2024 15:52:13 +1000 Subject: [PATCH 44/47] re-enabled the optout status description in client side docs as we should suggest publishers to think long term as we will start sending cstg optout response soon --- docs/guides/integration-mobile-client-side.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/guides/integration-mobile-client-side.md b/docs/guides/integration-mobile-client-side.md index ff1182767..a59fd75d5 100644 --- a/docs/guides/integration-mobile-client-side.md +++ b/docs/guides/integration-mobile-client-side.md @@ -585,6 +585,7 @@ Some possible reasons for this, and some things you could do to troubleshoot, ar - The identity is invalid. In this scenario there are a couple of options: - Check to see whether there are any errors from the previous `generateIdentity` call. - Check the Identity status, using `UID2Manager.getInstance().getIdentityStatus()` for Android or `UID2Manager.shared.identityStatus` for iOS, to determine the status of the identity. + - It's possible that the DII has opted out of UID2, see [When to Pass DII into the SDK](#when-to-pass-dii-into-the-sdk) for more details. - You could enable logging to get more information: see [Enable Logging](#enable-logging). - The advertising token inside the UID2 identity has expired, and the refresh token has also expired, so the SDK cannot refresh the token. @@ -627,7 +628,6 @@ When this method call completes successfully, the advertising token (UID2 token) If the UID2 identity stored in local file storage has expired and cannot be refreshed, you must call the `generateIdentity` method again to generate a new identity and get the resulting UID2 token. - The best way to determine if DII is required by the UID2 mobile SDKs is to always call the `getAdvertisingToken()` method when the app starts up or resumes: @@ -669,7 +668,7 @@ UID2Manager.shared.getAdvertisingToken() -If `getAdvertisingToken()` returns null, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). +If `getAdvertisingToken()` returns null, and the identity status is not `OPT_OUT`/`optOut`, you'll need to generate a new token. To do this, pass the DII into the `generateIdentity` method again, see [Configure the UID2 mobile SDK](#configure-the-uid2-mobile-sdk). (u9tdW5M-`g%2##EzE1HB}o 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

`NGr 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

-Kl!_N`3vKxQ8bXKZC|a{5i92) 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

tiGyThk6x?h2p}GTYUm=2|p|=%^LU`58fu& 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± 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 diff --git a/docs/guides/images/resource/integration-mobile-client-server.pptx b/docs/guides/images/resource/integration-mobile-client-server.pptx index adf3c8083dc52b2e8bda51635d71f40afe036afe..c454f8b789df18f68e9994301d21a90859620bb2 100644 GIT binary patch delta 32775 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 WkO~ry|H-t)0}0`%ydW0^_62#e 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

A private instance of the Operator Service, run by a Private Operator.

See client secret.