Adyen iOS implementation guide

payment_processor_type_id: 11


Integrate SDK

To add the Adyen SDK to your app:

Import the SDK

Add the SDK to your project using either CocoaPods or Carthage:

  1. CocoaPods
  • Add pod 'Adyen' to your Podfile.
  • Run pod install.
  1. Carthage
  • Add github "adyen/adyen-ios" to your Cartfile.
  • Run carthage update.
  • Link the framework with your target as described in Carthage Readme.

Note: Examples below use 2.2.1. version of Adyen SDK.

Card tokenization flow

In order to tokenize a card, you need to get the encryption key using generate-tokens endpoint, collect card data and encrypt them, and send them using store-payment-methods endpoint.

GET {{MENU_API_URL}}/api/payment-processors/generate-tokens

Response example:

{
  "status": "OK",
  "code": 200,
  "data": {
    "tokens": [
      {
        "payment_processor_id": "5ad18764-68d0-11ee-8c99-0242ac120002",
        "payment_processor_type_id": 11,
        "token": "mt-card-20230926065403-825706769c78",
        "additional_info": {
          "client_encryption_public_key": "10001|A3795C2E0A78E5FF639AB006428D5EC19166AF82C402828476442E44476AE3DB9BE22468C15D8744574080DE5697FB81FBC4A0E0AB27B3B33A2739F20B1A514C6DCCBA3414E36F8056D4E1C007B6BF9ED5579A47313BDB651A3A984864E927B3A5D47CDA068E6A5C3AD76FB88A4173BC57EE672D421B13B3434F2D4B03FC250AAD86D64121A1760C83289EE7097A4643E493333ADE8373E9FB36A24F156C4B42D404879BBD8896705E0E91CD4F8BEC0E02A3F38D6EE275B6440F40B40E88B3D1B3292ABB331F9CB10E11D5AC81977ADCD0C22B7ECF009D608C651CC1FD7D4AA114B2130C6E82272224248B29CE4529DE93E5D010BD3976557067FD48E090B653",
          "client_authentication_public_key": "test_YTPZMKLO2JGCHJWC2CFBULMURAULV7DG",
          "reference": "mt-card-20230926065403-825706769c78"
        }
      }
    ]
  }
}

You should collect card data and use Adyen SDK and client_encryption_public_key to encrypt it:

  • Check card data validity using following classes and their isValid() -> Bool method:
    • CardNumberValidator()
    • CardExpiryDateValidator()
    • CardSecurityCodeValidator()
  • If validation checks are passed, create CardEncryptor.Card object
  • Use created object and client_encryption_public_key to create CardEncryptor.EncryptedCard object using CardEncryptor.encryptedCard() method

Encrypted card data is sent to store-payment-method endpoint.

POST {{MENU_API_URL}}/api/customers/{customer_id}/stored-payment-methods

Besides encrypted card data, you should provide token property as well. Value for it is received in generate-tokens request, as a reference parameter in additional_info object.

Request example:

{
  "payment_method_id" : "7cb18764-68d0-11ee-8c99-0242ac120007",
  "payment_processors" : [
    {
      "id" : "7bfb893a-68d0-11ee-8c99-0242ac120002",
      "properties" : {
        "token" : "mt-card-20230926065403-825706769c78", // from generate-tokens
        "encrypted_expiry_year" : "adyenan0_1_1$M3ekFNfdo+Xkf7jpG5opyhDv1NqU9BojAFA7hU1qPfLnnivj\/PO6jsHhI4PxyWM3EfBSdSqK9XOpyv4\/QxQ6iPNgrj\/70CKnxV5dShiM62A6fWuD5FVhxw2ld6dxIhIt3sI7Yb+vo5q2BmrJjBGP6Qu3bIfAZPbSJtz18176kq0LH21shWURQ8sVFGGKzKGhAsUV2g+bcO73f0dnqyfE7vTYMFsiG3vmfRiFqNhZuvRfw32QSCPYP2Eq1C528Z2usKDHFjrW+NC\/C1LmyUaPfyUlw\/vei\/eRUlRTyUTHwS1k\/FrXiPx6e9X4eOS8AC4NmtsWs1jDbzPBVGxukqguLg==$00W5tKiguOZjydShdKpxB57+cp9JqMfyosNkjgDn5fD1d6PicJnzoTz1UQBbft9aVwtlcAl8LS9YbVuzy5nU2U3t5sF24wfaTLjkFfRVAtg+",
        "encrypted_card_number" : "adyenan0_1_1$PA8Bed5mkRr+ZNN3Qn+276RcbMdIHKcaOY\/3b8+lM0hSHMe4elTYlHEgmV2GuhlFu3KNS\/uUIxoIuO4Dy28SqggpbBe22hHil4NnXBUo325yCRTV4il+D5lAb3n1NbYsOWTvcgW8Webe4QDZM28bwZ2BNcf1MRNIgLE\/\/gc9Zuh\/b6xvFcW\/N4ukEoI7LVgGvg0htE40HUG3bv\/2wQe8Std\/LgvcEoEl9bmHIsuLbcMRiqSqTFT4Fx2aoJ7E3SH7+UWP9ZefRAIxszusu0IoU4pIhLtjKBdnWYd1y3W7lCy3wMcW\/h4To7pRb0FawJPap+\/IzQ6Ev\/hmH1TJSDIapA==$2w13qUOzO2Eu+bHBHPUzUOQPTGMqhFgo3LEU8Fuc0BakvkX34gxXEfsA\/y64UB+H30tgxktgtlyDIAEbRcj\/CguSKrlv6ywK1osns+V9FpxV\/vaSpqqVxLV8jG4=",
        "encrypted_expiry_month" : "adyenan0_1_1$W\/G+8k1GwU+Gia9XqExWvRdNcJKzVrruJnC1\/zvlTWmEk49r0rOJnCv0GDFWzmFP1\/g1VaiFiz4QabYtw9CHQWEvO3BdSMH7jkPcuXKHm3\/HWOK0V2mQftEo61rs0KHvn7JLwg+6inwauUoJjybNe2zbvxZTBWpxZ6G376BORa+Fx0Vi0zhlS9Aw7bA26n9QQItKAcK0PbKgDNnF4eLr2GUyyYvrswm5XyRoqQfhxG3A+Lnbae4F+OmnNR81sEcWlSaUaL\/cUJhLPXrRwWWnhIuMEmL6kipVjbEveuUfrqzR\/M04FpwksmXpOqbm6K+oaKSM2Vv7+ZI7PCGDkPoZLQ==$EZxEtPOc7KYivPqYalkNQQHjdCgZPnaBE9b82wLYjOU9UcYiFQ223psTKO0Zudyxstu6Yagvsv49jJY\/1GUpqpZjK4kfUs2JTGbe\/0THHAY=",
        "encrypted_security_code" : "adyenan0_1_1$QZnQeY\/dKk8DDu9oDKg3hHn3EtmhqxOCT9AxSm3IBR\/wOZbk5xcuJ5JFV4AckndDsmpleZuk9B7cMjco+TcLGDOkgUuR09G5xZKHdDTTgFdpLgScL9QMD\/r3yWNgMyOc1lpcCW7BgpH4vCwmtUAOLBaGVLclqWEkqbgrOalPSo9nfPsJXCBfavTAt57FPKPBeVnxb8uNdx2VtWdsdYv6fiVP4LE++5hZfXxc0isD1Qymy2W4Kpz\/UhS4swKknYMgNOKOJUVQ8niNserR35DcO5hqwkgOaFEWVFtaoniPJhRpVbzYMwnVNfumOTZALnAwNGWTyn\/PxBqrNZkHCplB+Q==$CENpUJeG3uBtkjmrgIBkv0kapbI+bZ77xt2pWMiN3brAho19065P68ff4n+zRoi7pMbTEmqhRMiS40xqpIDvSJ8VFemfuwb2Og=="
      }
    }
  ],
  "billing_country_code" : "US"
}

In the response of stored-payment-methods request, you receive a fresh state of all stored payment methods. [common for all our integrations]


Payment flow

Vault payment flow starts with payment initialization request.

In the payment_info object, you should include the stored_payment_method_id(id of the card used to make the transaction. Ids of tokenized cards are received in stored-payment-method request) and the order amount.

POST {{MENU_API_URL}}/api/payment-processors/init-payment

Request example:

{
  "venue_id" : "8e58c54f-483f-409f-929f-06e36a81472e",
  "order_info" : {
    "discount_cards" : [],
    "order_type" : {
      "id" : 6,
      "pickup_asap" : true,
      "customer_phone_number" : "+3811"
    },
    "singular_point_id" : "121f254b-fd98-4af0-b8a6-c53387d2fd96",
    "discounts" : [],
    "menu_items" : [
      {
        "quantity" : 2,
        "price_level_id" : "902e9331-7362-4f78-adb4-7bed1c70fe1c",
        "id" : "49d90a59-9659-4e7b-93f3-a5a0e603c38f",
        "modifiers" : []
      }
    ],
    "combo_meals" : []
  },
  "payment_info" : {
    "stored_payment_method_id" : "4a973a36-3d6f-4269-8d66-b90f3e1b20c2",
    "amount" : 1458
  }
}

You should continue the payment flow based on the init-payment response.

Go straight to order creation:

If PAR Ordering backend responds with additional_info.approval_url and additional_info.approval_action set to null, proceed to the order create step.

Example of such a response:

{
    "status": "OK",
    "code": 200,
    "data": {
        "payment_processor_id": "74c95897-79c5-4c01-b0ed-6ba908404513",
        "payment_processor_type_id": 11,
        "payment_init_hash": "0a96e241ae298d94a1d771a3fcf204b2",
        "additional_info": {
          "approval_url": null,
          "approval_action": null,
          "client_encryption_public_key": "10001|A3795C2E0A78E5FF639AB006428D5EC19166AF82C402828476442E44476AE3DB9BE22468C15D8744574080DE5697FB81FBC4A0E0AB27B3B33A2739F20B1A514C6DCCBA3414E36F8056D4E1C007B6BF9ED5579A47313BDB651A3A984864E927B3A5D47CDA068E6A5C3AD76FB88A4173BC57EE672D421B13B3434F2D4B03FC250AAD86D64121A1760C83289EE7097A4643E493333ADE8373E9FB36A24F156C4B42D404879BBD8896705E0E91CD4F8BEC0E02A3F38D6EE275B6440F40B40E88B3D1B3292ABB331F9CB10E11D5AC81977ADCD0C22B7ECF009D608C651CC1FD7D4AA114B2130C6E82272224248B29CE4529DE93E5D010BD3976557067FD48E090B653"        
        }
    }
}

Process with Adyen SDK

If additional_info.approval_action has value, payment should be processed with the Adyen SDK.

approval_action is base64 encoded string that contains JSON action object returned in Adyen server response. type can be:

  • threeDS2Fingerprint
  • threeDS2Challenge
  • redirect

threeDS2Fingerprint and threeDS2Challenge have similar approach. More on redirect in next section.

Following example contains threeDS2Fingerprint as a type:

{
  "paymentData": "Ab02b4c0!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",
  "paymentMethodType": "scheme",
  "token": "eyJkaXJlY3RvcnlTZXJ2ZXJJZCI6IkYwMTMzNzEzMzciLCJkaXJlY3RvcnlTZXJ2ZXJQdWJsaWNLZXkiOiJleUpyZEhraU9pSlNVMEVpTENKbElqb2lRVkZCUWlJc0ltNGlPaUk0VkZCeFprRk9XazR4U1VFemNIRnVNa2RoVVZaaloxZzRMVXBXWjFZME0yZGlXVVJ0WW1kVFkwTjVTa1ZTTjNsUFdFSnFRbVF5YVRCRWNWRkJRV3BWVVZCWFZVeFpVMUZzUkZSS1ltOTFiVkIxYVhWb2VWTXhVSE4yTlRNNFVIQlJSbkV5U2tOYVNFUmthVjg1V1RoVlpHOWhibWxyVTA5NWMyTkhRV3RCVm1KSldIQTVjblZPU20xd1RUQndaMHM1Vkd4SlNXVkhZbEUzWkVKYVIwMU9RVkpMUVhSS2VUWTNkVmx2YlZwWFYwWkJiV3B3TTJkNFNEVnpOemRDUjJ4a2FFOVJVVmxRVEZkeWJEZHlTMHBMUWxVd05tMXRabGt0VUROcGF6azVNbXRQVVRORWFrMDJiSFIyV21OdkxUaEVUMlJDUjBSS1ltZFdSR0ZtYjI5TFVuVk5kMk5VVFhoRGRUUldZV3B5Tm1ReVprcHBWWGxxTlVZemNWQnJZbmc0V0RsNmExYzNVbWx4Vm5vMlNVMXFkRTU0TnpaaWNtZzNhVTlWZDJKaVdtb3hZV0Y2VkcxR1EyeEViMGR5WTJKeE9WODBObmNpZlE9PSIsImRpcmVjdG9yeVNlcnZlclJvb3RDZXJ0aWZpY2F0ZXMiOiJleUFpWVd4bklqb2dJa1ZUTlRFeUlpd2dJbmcxWXlJNklGc2dJazFKU1VNeGVrTkRRV3B0WjBGM1NVSkJaMGxEUlVGQmQwTm5XVWxMYjFwSmVtb3dSVUYzU1hkbldWVjRRM3BCU2tKblRsWkNRVmxVUVdzMVRVMVJjM2REVVZsRVZsRlJTVVJCU2s5VFJFVlRUVUpCUjBFeFZVVkNkM2RLVVZjeGVtUkhWbmxhUjBaMFRWSk5kMFZSV1VSV1VWRkxSRUZ3UWxwSWJHeGlhVUpQVEd4WmRVMVNjM2RIVVZsRVZsRlJURVJDU2tKYVNHeHNZbWxDVVdKSFJqQmFiVGw1WWxOQ1VWTXdhM2hKZWtGb1FtZE9Wa0pCVFUxSGEwWnJaVmRXZFVsR1FuTlpXRkp0WWpOS2RFbEZWa1JSZVVKVFlqSTVNRWxGVGtKTlFqUllSRlJKZVUxRVVYZE9ha0UwVFZSbmVFMVdiMWhFVkVrelRVUlJkMDVVUVRSTlZHZDRUVlp2ZDJSRVJVeE5RV3RIUVRGVlJVSm9UVU5VYTNkNFEzcEJTa0puVGxaQ1FXZE5RV3MxU1UxU1RYZEZVVmxFVmxGUlMwUkJjRUphU0d4c1ltbENUMHhzV1hWTlVuTjNSMUZaUkZaUlVVeEVRa3BDV2toc2JHSnBRbEZpUjBZd1dtMDVlV0pUUWxGVE1HdDRTbXBCYTBKblRsWkNRVTFOU0ZWNFNsWnJWWFZOTUZKVVRXbENSbEV3VFdkVFZ6VXdXbGhLZEZwWFVuQlpXRkpzU1VWT1FrMUpSMkpOUWtGSFFubHhSMU5OTkRsQlowVkhRbE4xUWtKQlFXcEJORWRIUVVGUlFXNUZZbEUwVUdWTlVtUXZTVk5XUzBsU1dEUjJjSFUwTW5oU01HOXJOa1ZNY1RjMWNVRndNRWd3TW1GVU5YbGxhRzAwTVZGVVpWZGtSVEpaTm5CQmFGQlpWa1ZYYzBoT1UwbHRRVTh5TDIweVNHaEdLM1ExTkVKcFkzaGFOUzlXZGswMGRuUXZZblZqZHpWQllYZHpRMmxFV2xnd1VtMHlNbnBQVEVveVJUVlhLMjVRVTFrNGIzZHNNemxFYW13NFoyd3laMEZITUUxRWVrdHhNWFpQU0N0c05tNW9kMDVyZEV4alEzbHVjMlZxV21wQ2EwMUNNRWRCTVZWa1JHZFJWMEpDVTJKSmFuaFJUVGxPTWtkWU1XZEpWV0l2ZEU4clRIbFZVeXRVYWtGbVFtZE9Wa2hUVFVWSFJFRlhaMEpSZEVwRFdFUndjVmRHZEZSUFFrTlJhbG81ZURRMlJFSlBTM0JVUVZOQ1owNVdTRkpOUWtGbU9FVkRSRUZIUVZGSUwwRm5SVUZOUVRSSFFURlZaRVIzUlVJdmQxRkZRWGRKUW1ocVFVdENaMmR4YUd0cVQxQlJVVVJCWjA5Q2FYZEJkMmRaWTBOUlowUk9VMnRMU1dOYVlWQjVRa3MwVWk5cFoyTXdPVTVSWWl0Sk9UTnllblEyVTIxS2RqSnVPQ3MyU0RGdmVXVkJaVVJLZURSMVFXVTNVMnRPV0RGbVpFVkdjSFpMVmpock1EQXdUakJYVjBGS1ZuTXJVRVpUYTNkS1FscHVZbWhKU1hoM1lUbGthamt3V0ZGb056QjVNVEpaV25FeGNITlNURWcySzJ4S2VEQnlRWGhOU0VKTk1HdHFWazFoUTJKRlJYY3lZMlJoYVdJMFVtRlJibnAwVERScU1qWlJZMU15TldscmNXODVla2xQYnowaUlGMGdmUW8uZXlBaVkyVnlkR2xtYVdOaGRHVnpJam9nV3lBaVRVbEpSRGhxUTBOQmRHOURRMUZFVG01WWVXTldSVWwzZFhwQlRrSm5hM0ZvYTJsSE9YY3dRa0ZSYzBaQlJFTkNkV3BGVEUxQmEwZEJNVlZGUW1oTlExUnJkM2hHYWtGVlFtZE9Wa0pCWjAxRVZUVjJZak5LYTB4VmFIWmlSM2hvWW0xUmVFVnFRVkZDWjA1V1FrRmpUVU5WUm5Sak0xSnNZMjFTYUdKVVJWUk5Ra1ZIUVRGVlJVTm5kMHRSVjFJMVdsYzBaMVJwTlZkTWFrVlNUVUU0UjBFeFZVVkRkM2RKVVRKb2JGa3lkSFprV0ZGNFRsUkJla0puVGxaQ1FVMU5URVJPUlZWNlNXZFZNbXgwWkZkNGFHUkhPWGxKUmxwS1ZUQkZaMUpHVFdkUk1sWjVaRWRzYldGWFRtaGtSMVZuVVZoV01HRkhPWGxoV0ZJMVRWTkJkMGhuV1VwTGIxcEphSFpqVGtGUmEwSkdhRVo2WkZoQ2QySXpTakJSUjBaclpWZFdkVXh0VG5aaVZFRmxSbmN3ZUU5RVFUUk5hbU40VFhwUmQwNVVhR0ZHZHpCNVQwUkJORTFxVVhoTmVsRjNUbFJvWVUxSlJ6Wk5VWE4zUTFGWlJGWlJVVWRGZDBwUFZFUkZWMDFDVVVkQk1WVkZRMEYzVGxSdE9YWmpiVkYwVTBjNWMySkhSblZhUkVWVFRVSkJSMEV4VlVWQ2QzZEtVVmN4ZW1SSFZubGFSMFowVFZKTmQwVlJXVVJXVVZGTFJFRndRbHBJYkd4aWFVSlBUR3haZFUxU1JYZEVkMWxFVmxGUlRFUkJhRVJoUjFacVlUSTVNV1JFUlRGTlJFMUhRVEZWUlVGM2QzTk5NRkpVVFdsQ1ZHRlhNVEZpUjBZd1lqTkpaMVpyYkZSUlUwSkZWWGxDUkZwWVNqQmhWMXB3V1RKR01GcFRRa0prV0ZKdllqTktjR1JJYTNoSlJFRmxRbWRyY1docmFVYzVkekJDUTFGRlYwVllUakZqU0VKMlkyNVNRVmxYVWpWYVZ6UjFXVEk1ZEUxSlNVSkpha0ZPUW1kcmNXaHJhVWM1ZHpCQ1FWRkZSa0ZCVDBOQlVUaEJUVWxKUWtOblMwTkJVVVZCZFhBM0syWjBkMWRuUjJSallUWXhjVlpDWXpGQ2RsUnBOVmswTTBKM2FGb3pVMmhLU1d0dFIwbDNaMWxRYzBvNWNISlBZMXBWVm1WSGEwVm9ZelZIV0hjdk9WSk1ZMnhaYldscE1sb3ZURkJGZVhrMlZVbGpVSE5GUm1sa1VucFhURFprT0RSaVpHSTRWRFZwTmtsQlRITklVMmRQWm1OUVR6SkVRMWx2VGpWR0swZ3ZkbFZoY0hkWlIycENORmtyYVhkTlpsRXlaWE5NTTFGRVpFVXJMMjg1TDFvMFRuQm1iemtyWTJZeFJIcGxjRk5YVm5oVWVGSlNhMU5ZTVVjclVYWnJRazB2Y0d4ME5XMDFlQ3RNVlZrd2VqWlZOQ3QxVVhGQ1VWbHphVEJWVURWTmJXSTRSVFpWZDBjeWEyTTROblJ6WlhjMFdVeHhVMk5ZZEZVNVp5OXZPVGxuT1VWcmJrVlRXbTlDT0ZGdGFtZEpNSE5hVVhKRk0wdHZORUV5TDFsRFpUSTFTbWRhTnpGTFl6ZEZMemxJUzFGTE0xWXhkR2xNY25wNGFWTkxNSEU0WWtWT00ycGhZalJ6VVVwWFkzcFNOVTVSU1VSQlVVRkNUVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1FWRkJiVGh4VDBSQlRrSXpVSEFyT1RoUlpuVlJWVVZVV0dVeFRsSndTblpFYjJONWMyUnZTaXR6ZERoSFdtUmlWMmx1YTA5d04yWnNXVFJZY0VaeU1scEpjVTVJVFhsS2MyWTNPVWxCUzJ4Q1pXOVRXRGQ0VkdacVozSXlPSGRuYTFONWREVlFWMkkzV2tZeldGUXdibWRYYzNoeU1tUjBSamRTZFVGNFVUaEtZbFJ3VUV4a1JWa3hXakp5YUVvMVlYUktkRGRGU2xsRk5rRllTbnBCY2pWVlNqZDViVEJqV1NzNVRrMHpWa0pxVTNCak9XVk1UMDR6Vkd0WldHOVZkakprYlV0MU1VaDZUSFppTVcxRU1HVkllWFZGY2xGUGNtSlVLekZ2UmsxbEwwdG9lbll4TjB4cldEaHFOMDk0VTB0dFVpOUlMMVF5ZVhGbmJYcFBlR2ROTUd4TGVtc3pWMmxSVDI0eGExUlhZVzlZT0VOb1VEWnBVMjFLYTNKM1NWVjVXaXRXTVZWSlVFTlViblJzVVhwRlVVcElPVFpSTlc1WlRsUk1UamhxVm14d05XMXVTMGQwVWtGWWNteDFjbmhNYVRsWk5rVWlMQ0FpVFVsSlIwSlVRME5CS3pKblFYZEpRa0ZuU1VwQlMwOW5hRGh6ZFVWeFpVOU5RVEJIUTFOeFIxTkpZak5FVVVWQ1EzZFZRVTFKUjFsTlVYTjNRMUZaUkZaUlVVZEZkMHBQVkVSRlYwMUNVVWRCTVZWRlEwRjNUbFJ0T1haamJWRjBVMGM1YzJKSFJuVmFSRVZUVFVKQlIwRXhWVVZDZDNkS1VWY3hlbVJIVm5sYVIwWjBUVkpGZDBSM1dVUldVVkZMUkVGb1FscEliR3hpYVVKUFZtcEZaMDFDTkVkQk1WVkZRM2QzV0Uwd1VXZFZNbFpxWkZoS2JFbEVTWFZOUTBKVVlWY3hNV0pIUmpCaU0wbDRTMFJCYlVKblRsWkNRVTFOU0hwT1JVbEdUbXhaTTFaNVdsTkJlVXhxUVdkVk1teDBaRmQ0YUdSSE9YbEpSa3AyWWpOUloxRXdSWGRJYUdOT1RWUnJkMDVxUVRKTlJHdDNUbnBKZWxkb1kwNU5hbXQzVG1wQmVrMUVhM2RPZWtsNlYycERRbTFFUlV4TlFXdEhRVEZWUlVKb1RVTlVhM2Q0Um1wQlZVSm5UbFpDUVdkTlJGVTFkbUl6U210TVZXaDJZa2Q0YUdKdFVYaEZha0ZSUW1kT1ZrSkJZMDFEVlVaMFl6TlNiR050VW1oaVZFVlNUVUU0UjBFeFZVVkRaM2RKVVZkU05WcFhOR2RVYkZsNFNVUkJaVUpuVGxaQ1FYTk5SbnBPUlVsR1RteFpNMVo1V2xOQmVVeHFRV2RWTW14MFpGZDRhR1JIT1hsTlUyZDNTbWRaUkZaUlVVUkVRamg2VWtOQ1ZGcFhUakZqYlZWblRXazBkMGxHVG5CaVdGWnpXVmhTZG1OcFFsTmlNamt3U1VWT1FrMUpTVU5KYWtGT1FtZHJjV2hyYVVjNWR6QkNRVkZGUmtGQlQwTkJaemhCVFVsSlEwTm5TME5CWjBWQmJURnRhRk5FUmxoWlN6QjRSV3AyTHpSQldVdEpTRmR5ZUZJcmJHaFVaVnBpZUc5bWMwcENia2hpUTNsbGJXVXhkek5ZVUhaVlRHcFVlbXQ1ZFRkMVZsbEZXbE15WkVwWVlreHdiMUZ6ZFVwcmNsbEROVTlMV0VZM01rRlhObkp6UnpKeFNrUTFVVmhCZFRkVGFESnZlWFo1U1UxM05taEJha055WjJWVlNXMHdTMlJ1T1VkUVZWTjNWbXhJVjFsd2NtUk1NblZhZUVGRE5sSkJWM0ZGWjNoeGFDdHphVzgxU1VSeEszUkNMMm81WVVSMllWQnNXazVhVlRoaFUxWm5iazlNVGtZNVExbGpZWEF4V0VoaVRVTnNkRWd3VlhjeVRHZFllRzlQZDB0VVpVZFJlREpaVlc1RU5tbzFNVmd3Ym1nME9VcGlXbVV6WTJGUWNraHpTRVF5YUhKM1JXWlBTa1V4YVVwMGNYRnVVVnBxWjBsUVQyY3lhbU53TDFsWVVHdERjRFpMVUZsTVpVWm5PRU5DVlVNelNFbG5ZM1l6TVdKall6STJWa3BDT0daM1NqWmhiSGRvYkVKTlNua3pTek5uVFVvd2FuaFZkMlZRV0dWbVFtNWphVzg1TjBOTk1uaHZSRk5LVkdaWU5YRkpiMlUwYlZKR1QyZ3dRVFJUVm5CSlVGUjFTV0V6TUdWc1dXSXpaMVF4ZVdRdmJXWkhNR05ZT0VwaVlsbHlTbTl0WVRCM01HUnpVbmx5WlRJelJuZzRaV3BKWkhRMVV6Sm9WV0pDYm1zelVUSnhUbVZNTnpRcldXVTJlSGxqT1dkcVYydHhPV3BzTnpkNVJtZGphamhOYldsU1FVTkllVkF6ZEZGVWFrNVpPVzVCZGs1YU0yUnBOME5GVlc1bVpIRTBObXBVYkVWcU1VNHdRelUxVEhZNWIySldORUZGYmk5V1JubEtaa3cxZG1wcU4yRklURVF5YjJoclRHRkdRMGQ2UzJaT1EzTkNjRkZDVWtjMFVtNXFhbXhuV0ZOWGRGaGxhV0pRTjBkTVJraEVZamx3VFRsa2VqSktNaXRGVW10Qk5qTnRVWFpDVjA4MlUzQm5LMU5uWm5WTVltRk5iamg2YWxGT1NGQTRVREowV25aM1ZVOVlLM0kwZDJGTldVeFlXRGRqUTBoa1YxbE1XalEwV2tSdlFUQXJRVUZxUTBWRFFYZEZRVUZoVGxGTlJUUjNTRkZaUkZaU01FOUNRbGxGUmtobGNYaENaVFZTVFVoRk4yaDVWVkpIWW5sS2VIVkxjbXd5ZVUxQ09FZEJNVlZrU1hkUldVMUNZVUZHU0dWeGVFSmxOVkpOU0VVM2FIbFZVa2RpZVVwNGRVdHliREo1VFVGM1IwRXhWV1JGZDFGR1RVRk5Ra0ZtT0hkRVVWbEtTMjlhU1doMlkwNUJVVVZNUWxGQlJHZG5TVUpCUmpsbWR6SjNWWEJ5VjJGMksxbEhUR3hCVUVsTFkwZ3ZSRkJETUcwd2VHNXNWR05sTjJwcFZFUkRiWElyYVU0NE0ya3JSelk0Tldwd2EyWlpVbWhOVkUxdGNDc3hNak5oWmlzclZucFhRbXgwWW1OTFpVa3lhMUZWV1doWVkxbHJWR2MyWlVSclprSjFVVTVXVkVwTlZtbFNZM2cyVjJjNGFrRlFiMDQ0U2xablVtcG1lVGhPY1hNNFlWUXZTU3RLTldKSk5sWTVhRVUwYWtsSFUzQTBRa2RrY0VadFluTjRiRTFRYW5GdE5EWm1ObEJETlVwUmVXWTFUV2h1UmpBcmRuWnNiR0ZwYWxoNWRsVktLekk1WTFsUVQzRlRlbGRPUVhaamREUnVWM1ZhYkdSRWEwdzBkemRsTkZOR1VGVmlSamt5V0RoWVkxaDNOMnAwTDFoa1J6VllTSGxwWjNobk5YRnJTRloyUTJSdlVFeDZPRWhZY0c1R1JHTnFibGhtZG1seVQwMVJhRzlPYlRaWVJXWnZNM1Z5VDBscVREUk1jMkp2UnpBNGMweEpZbGgxV0dGNFJsVk5jV050TjNKM1EwRlFUVVJEY0VOTGJtTkdVSEE0Y0cxVmJrdHhhVGxFZUdaT1JYaDRVbmxhVkRSbldXOXFXR2NyY1V4Q2NqbGpRVk4wYjNscFZrSkRka1kzYTNKbmF6TlBTMUJSWW1wR1Eya3JNRUpUYzNGUVkzYzBlVFpoTVdwUWVuQXlaMHRzV2xoQ2JsUnRZbXh0VlhOdlNYbGlPSEYwZUZCWE1rbFJOVzFsVEdaS1drUmxTMFJaY3l0U1pXZHZTV296YkdKdmEwaGtSM2cxTWlzdk1FZEJSa3BpVkhsaGIzSjFNVTFzU21wdllVaG5WR3haUW01aVJUUXJZblU1TURJMVRFVkhjMlZ5TWpoakx6Qm5WMjlhUzJVeVVuQmlSbG9yWmsxQmVrMTZaamxUVGpkeVEwdzVUemR4YmpCTWVrMWxOSEJOUVVwSU1VWkVRVEU1UVhkUFlWbE1jWGRrYURnNWVFRjBUWGhtVTJnMFdVaFhRMGg2VDFVM1YybHVZazlFV0c5MFMwZHFWVlJGUml0MVdXSTBWREZwZEhOeUx6azVjRUpvWVhNeFFqaFlNVnBXUjNwbmVqVklOU3RQZWtWclUyTlhWVUpOU1RKRmF6aHpRWEVpSUYwZ2ZRby5NSUdHQWtGajh0ZjJqQUdaQ182bGhWdkFuMWNTRUlEdmNSOGZpcWNUblNTT1NYU0Ywb0p2b0JIaDVZTXVMMHhLeW9xRXRkME05dVNZOWNnbkJnalNDakRSWEhvNXBRSkJEZ2ZSWkExWXpBempsbW5qMDBCSzRXNkJXcld3MDF0NWJvZWpOdVYwVzFDTVZ3VVdBdi1kZklvNkNHUkJtUnhYVlRmLVVuaVJvbjJXVHp1MjM4N21aT0EiLCJ0aHJlZURTTWVzc2FnZVZlcnNpb24iOiIyLjEuMCIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiNzJlNWVhOGMtYzIxYy00YTQ3LThlYzEtOGM5ZmZjMWE5MDBhIn0=",
  "type": "threeDS2Fingerprint"
}

Check what type the action is, and proceed appropriately.

Example of Swift code creating objects based on type:

private func getFingerprintAction(_ action: ApprovalAction) -> ThreeDS2FingerprintAction? {
    guard let token = action.token else { return nil }
    guard let paymentData = action.paymentData else { return nil }
    if action.type == .fingerprint {
        return ThreeDS2FingerprintAction(token: token, paymentData: paymentData)
    }
    return nil
}
    
private func getChallengeAction(_ action: ApprovalAction) -> ThreeDS2ChallengeAction? {
    guard let token = action.token else { return nil }
    guard let paymentData = action.paymentData else { return nil }
    if action.type == .challenge {
        return ThreeDS2ChallengeAction(token: token, paymentData: paymentData)
    }
    return nil
}

ApprovalAction in this example is a Swift object created from decoded approval_action.

ThreeDS2FingerprintAction and ThreeDS2ChallengeAction (Adyen SDK classes) have handle() method which should be used to process the action.

Example Swift code:

private func handleFingerprintAction(_ fingerPrintAction: ThreeDS2FingerprintAction) {
    threeDS2Component?.handle(fingerPrintAction)
}
    
private func handleChallengeAction(_ challengeAction: ThreeDS2ChallengeAction) {
    threeDS2Component?.handle(challengeAction)
}

Adopt the ActionComponentDelegate in order to know when handle() method finished with its work.

Example Swift code:

extension Adyen3DSecurityProcessor: ActionComponentDelegate {
    public func didProvide(_ data: ActionComponentData, from component: ActionComponent) {
        // Proceed to make auth-payment request
    }
    
    public func didFail(with error: Error, from component: ActionComponent) {
        // Failed
    }
}

If didProvide() method is invoked, use data to create object for auth-payment request.

Example Swift code:

private func getAuthPaymentRequest(usingData data: ActionComponentData) -> AuthPaymentRequest? {
    guard let paymentData = data.paymentData else { return nil }
    let actionComponent = YourActionComponentData(details: data.details, paymentData: paymentData)
    guard let actionComponentData = encodeActionComponentData(actionComponent) else { return nil }
    let actionComponentString = String(decoding: actionComponentData, as: UTF8.self)
    let authInfo = AuthInfo(actionResult: actionComponentString)
    return AuthPaymentRequest(paymentInitHash: self.paymentInitHash, authInfo: authInfo)
}

YourActionComponentData class where details if of type Details, a class from Adyen SDK:

Example Swift code:

public class YourActionComponentData: Encodable {
    public let details: Details // Adyen SDK class
    public let paymentData: String
    
    init(details: Details, paymentData: String) {
        self.details = details
        self.paymentData = paymentData
    }
    
    public func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encode(details.encodable, forKey: .details)
        try container.encode(paymentData, forKey: .paymentData)
    }
}

YourActionComponentData object is encoded to base64 string, and provided to AuthInfo constructor as actionResult argument. payment_init_hash is received in init-payment response.

Body for auth-payment request should look like this:

{
  "auth_info": {
    "action_result": "eyJkZXRhaWxzIjp7InRocmVlZHMyLmZpbmdlcnByaW50IjoiZXlKelpHdEZibU5FWVhSaElqb2laWGxLYUdOSVdXbFBhVXBIVFVSRmVrMTZZM2hOZWswelNXbDNhVmxYZUc1SmFtOXBWV3hPUWt4Vk9VSlNWa0YwVFdwVk1rbHBkMmxhVnpWcVNXcHZhVkZVUlhsUFJVNURVWGt4U1ZWNlNURk9hVW81TG5sR2VGTnBTRmxrYmtSR2JtNXVYMnh1TVV4Sk1HRm5UbmxEYkZSRlVqYzJRM2hMZW5CRE5IcFJVREp5UkhaWWRGRTVNSFpXV0VVeGJUTlZWVVkyU1RneGMzUlpWbTVMT0RKbFVIQk5NbXR3VlVORlRVUmlkRlpOZUhNNE1FZzVVV3ROU0RRMFRWOTRUR28wVVV4TllUZEZabWxJVW1GYWRVWlZUa05TU1VoUVdVOTZlWFZvZVVSa1ExRmZVbGhNZG5GaVdVVmxhR3hGTW10eFRDMVNVMUIzVUhsUFRuZHNTRFJ6YjNRdE1FdHBTRWx3U21saU1XcERhMUozYkhkdlJYSmFWbVJOTVhwd1UweHlkVnBmWWtKS1ZEbERhM0I2VmpKbU5GOVBWRXBTTlUxdFdFSklZMUF4Vm1oNldtWlNWMk0zWWtWVE1WSlBhbHAwUnpGS2RVaG5lVVpLYjBKMU5XRmthV3QxVjNScVRYUTVZbXd6UldWRlZIUXhaV2xwVjFwd1ptRm9XR2xyYW1RNE9FZElURlZCYkdoRU5EVnNVa3RvZEVka1FsWTRjRmRyV0ZKa1lqUXRTRmRyVFV0RVpUbHpkVFJmUVM1NlVsbENZMHhUTW05TllYSnpaVEEyT1dwQ1JIcG5MbFkwUkdOdmNqTTNOMmh2UlMxb1pGRnNhM1JLWld0b1VIVllUMHhCVkVnMlNuYzJlVXROTkdGWVQxZzJNMHMzVHpCMGVXZzJiMFpTZVdoelVXRkJlRkppVURKblpEazFSbWxvTlUxVWFETjJWRXhTV2pSeWJEbFVkMUpIT1ZJNWQydHRlRnBIWjA5cVRrbFlTRFpxUm1VMmNYRmZUbm90Y1hCaFowY3haamc0TVRReVpqWnhUMHAzUkhWclpYSXpUVlZrVEhWc2FrRm5ZM2xoYW5KbU1rNHdORE42VWpoMFVVNVlkMjVUUjJOdE5YaDRTV05JTlZWemNqUlVOVGMwU1ROeVpHcGFNbmxzTW1OU1FXNWFPVkJpVW1oNmFGOUhlakZMV1ZkTGVsOVFjekY1YUdacllVMHRSbkpCWmtoT2RVaGZWR1JKVTI0d1UxOUZlbTVGVldKbExWVnRWR0YxZUY5T04yVmpPWFpIYzFoVFdUQnBOVkZ2ZUVKRk5VTlhTMU5hWW1ONFdGWmlWQzFUT0U5eVRuRnVkbXRFZG1WT2IyZFBjRlZmZFVFMk4ycDZRelpSYkRGelZGVkNSak15WkVOd2VuZFVkbk4zYUV4MWEyODFhMlZ2U0ZOR2QyZDVha3hxVXpOQ0xYQXRjMGxzUlRkbFRWOVhiR1pSUVd0VFZGOW5VVlV3VUd4QmVIVnRRMVUyUkRsUFpGcFNOV3hGVWtkeE4ySlliWFI1VjA0eGRGSXRRbE01ZDNSS0xWcHdZaTA0T0VoMFdua3RSVkpQYURGaU1EUmpOVGhQWmxrNFQwOTBUWEJwZGpoQk1ubFBWR1Z5ZDA1RGRrRldaWFpSYjFkMlpEZGxRMkpvTUcxS2RXbGFSMEU1U0RKbGQzZzJaRWxFUXpaWmIxTkxiREowYmxKa1lWbFVRMFJMU1d0blFVZHdUSEJyYlVOUk9FSTVSaTF6VFhaSFdYY3RRWGxqV0dKNU9XcHROa3RPUkdKWlQySlFkMWczVjE5R1gwdE9Za3hTVDI1cmRsZ3laVGRpZERsaFdVUlBVRWhzUlRsc2RGQmpOVWRJY0RFd2RHeHVabWREVlhneWMwMXhTalpUY1ZCeWNDMUhXa3hZTmpSNFJIcHpWMjlGUXpaUU1uRmxWWFpCVW1sbGVFdEpjVXAwY2prME5uZG5NbkF5V0hNNFJFaFZkVGxITkVWR2J6UlhaRTVST1ZFMWVEQjZaSFpEU25wclpHbEdPUzFKZW5WUlJFbzBaMjFxYWsxNWVUSTBUREpUVTB0aFUyZHdaMnRNYmxNeU5ETlVUVmhsUWpaMVFrZFlla0k1VEhGYVMyRnVSMUE1ZDFsVlgwMDJUV3BMYjJwMmVFSnphVkZ5WWpKTVFuRnZiRjlMV1hoQlUzUlZVakUzYjBaUlUzbGpWek4yYzJSbmNVWTBSWHBoVWxCUU5FRnllbUpQVG14blVuZzJhRll5Y21oZmVGZE9TMWd3ZWpRMVRIbHhURXBaYmtwelJFWjVVV3hmUm1Od2MyeHhZbnA1VUVKcWVYRmllR3gyTm1ReE4zcG9VV2hhWWxaUlUwSTBOa2hZVlZKMWFteFRaMlprTUZVMFVFUnRhbHBWYVZJM1QwVnZhSFphUVZoMWRreFZNWGc0TUhoaVJtTmlWelo1ZVdVdGNEQTFUM1UyZHpWWU5tSklYMmRaUnpOT2EyMWxURXBYU3pSdE5WWnRZbUZ3VFcxeFpuVmhRVEJEZFhsSFVuUXRWM1IyTVZnMVkxVlhOVFEzVGswMk5GTnBlSGhCVjBvM1REbHJRVFJLTjNGU2VWVXpSbWx0VWpFelEyMUhUMFZ3TlZKTVNIaFdVMmhmWDJKRFdFUkNUbTU2VkdaUVVWbHVZMVZVTURKNlkyczRUVUpLUVdOSllrUkRhR1p0VUhwM01WWXRSRzUxZVVnemJVVmZiV2xNVDFSdFFsSTJlbmRmYkVWQ1luUm9aRGQxWldWRVZFMVVhblJ0YldSS2FYWnZYekJzWkVaak1Hd3lkbXRLT0RZNVZGbFdRbWQzYTNndFFUQjZNV1p0Tms1YVpFcFJRalJuTm5nM2NYbGlXbXhRWVVwNloyWlZWMlpaUTI5S1JURlNZMEkzTlhSRVFVaFpjVkpqUmt0aWRtbEdiVVJ6VDFwVloyaE1abTlhTlcxa09VbEZjMmxXVUd4SGQwUXhZWFl4WDA1emRISlNTVkJHYUdwcFVFaGFlazFKVERSMVpHb3RSV3RGUWkxcmJEWXdiblp0V25OdWRXaHZNMmhDTkVKWFFXTlhjM0kzYjNWT2FFVkJXREpYVjI1WVJGRlJaalpTWldKa01IbEtXRzFvZURWUlZVeHZRM042ZGtST2FuZGZNa0Z0ZVVOR1QzQlVTRXBWZDNoemNtZHBOM2hXZWs5SWVEWjVSRTVPV21wWWVtTjFiM0ZvZUc5S1h6SjZWRkV0TjFVemIwRnNOR2xNWVc5Wk1XZEpWVEJRTTJoaFgzbFhhRWRzZERsS1dYTm9Za0ptVURSNllsTXdiVk5QVFRoSGNGTkdYelZaWlhobU1sTTRhbUZJUzNsdU4wZEZjRmRMWVRsMmIxWkVjRzF3T0dscWRHRkpiVXRMVUhWaFNFSjZZMFoyVG0xRGQyNUtNM1o1Vm13eFIyVkdhRWRzWDJSNlowTnFXV2xxVFVSNllYcEJTWFZIVlROVVIwNVRXVTFxYVdSWldVNTZibFU0WlVabU5rNHRiVmxpZGt4SVdUTTNXamxNWmpkVFNtNUtXVkZPYlhKUUxWTTJaVEZOYUVSSlUyTjJjV3BxV0VkV2REQTRPVlJUTFRsMFExOXhUMmxqZG5SaVlqRmpRMWQ2ZFhwR2QwbEhhV1J0YmtwclNVWlRPR0ZuU1RGaGVWUXpWM1EyYUhweVJXd3lSaTFFYlhSVmFXRlZWa0l3TUhWa09IZGFNMDVzVHkxVlVUVk9URFpDTVZaRU5VeDJTRmw0YTNKWWFUZHJiSFJPVDFGR1lYUldRM2sxV1VjNFdFbHNXamRqYlhaWVYzbE1Xbk0zTTFsdlluSndhRzFSUzJsdFRFUjZhbWg0VVV0U2JrZEZkRTlTUTNkeGFuQjRkRVkxY0RGTE0zWk9SRTlvU0hkUVdpMUVlazV4VEhoc2NXdENhbVJKVTFGMFpscENNR1pTV21oNVMyVklkVFJYUjFScE5tRTFaV0kwUmxFNFJXOVpkMUJGYjJwVExTMDBPVE51ZW1kYU9XNUtOVFl4U1ZKUVNreHFjSGxGVEhwSVIwWndjamxpTkV0VFNERlNUazFIWDIxYVRGVmxVbFZDYkc1U1lWRmtUbU5IVFZaRVUyNXRPRkJOYWs5a1ptRnJkMjExVGtzdGRYVnhVVmd0TFVwaVZWSkJjbDl1UlMxV1dHWllTRVY0V0ZsYVdrSkhhWGRKZG1veWVHUlVURlJIZVdKeGNIZE1TbnBsUTFKUVJ6SnNTMmx1UmxkUU1qaElhVGRpT1VFMFMyNTBVME4zY2trNWJ6VTBWa1kxYTJaaGFIRXpXVE5XYzB4emFtSkxiVFp4ZDA5cmJYQk5hRjkyZEdoTlYxcHNVbHBRUTJKSmNYZFlZemRCUlhCdFQzbGFhRnBIT0RFelluSk9TbFYyVEhwWU5FOWpTMmRqTUhOTVRYZGlRamR0TlVoeFdtSnZVRzFPYldkUmVXRnJkWEZJZURSclNYaHJjRVJqY0VVMFIwbFZPRkZSY0ROMlluSlVRVGRRVGxSTUxUWTFTMGRUVEVsVlNqbHJPVlY1ZFRCR2FXTTFRVzlvTTFwMGQxOXdiV294VDNCa1MzWjVPVFJuTkRjelFYaElWbFJGUWtNMFlWUlRXVkJ2YVdVMVRsZG5UQzFMVmxSdlZHNXZRbVpKTkUwNWJXa3hYelV0ZEhwNmJFcEhPSE5EVjJGTFgyUmhOMUZmU0VSQ1dsWkxlWFZ6U0RReFkxVjVVRE5DVkVKV1psa3pjMWRaTTFoUlpEZHRkRFZCWlZnMFduQkpORTU0UkVsc1RWWlpUMDF3ZWtWYVVHaHFWbFkxWDFGSVNUZHNPRzVVVTNkT1NUazJXWGhyWDFwa1pHNXZXa3h4UVdWVlZUZE1hemgyUXpZM0xVRldUMVl0VTNaWU1XazBhVkZYWlVsUFpuWjVPVGswU2tkQ2JqTm5NekpOYm1KS1FucEtla2xVWVUxbmJXRkNVSGhoZUdkc1JUTm5VeTAwWjB4UE5GbENUSHBCUTFacmJYUjJVMkpoVFc5aldGVmtZVE5WZVUxMVV6RktUVWR0T1RsRGN6aGZaSGxxV0hBdGFrbE9kek5zV0c5ellXaERjVU5aUlhodmVHMXdlVkYzZDJJdE4weGxkVWR0ZEZWRU9HVXlWVXh5V0U1cFduQmFUbFpRY1hGclRsaFlMWE5KTjBKRGVGRndXazFYYzNwdlJtRnVjM0pQTFRjd1FWcEhVbmRGUjA5U2VqazNPSFZxZFZveVptOTBVSFZIU1VsV2R6SlhkSHBNZVdsRWVVeFZXa3BYYjJwUVkyb3RaVEYyZURCcGQyWlFSazEzVTB3eFVuaE1SekpLTjFoRmRHMWtibWRyYkZoek1XaEhPR1Z5TTJGZmR6UnlUV056VWtkV1NHVmhOSGMyTmpVNVZWZGxNbVIzUWpCbVRYcG9VWGhQTldGaVNtVkNkbVZUVUY5V1pIZHNXbk54V1dnemVHRnhibFJSYzE4ek5tSkZhMUZpVW1oTFdqY3RTRFJuWkVFeFlWRTFiMWQzTVhOVmRFOHdTVEJUWnpVMVZIWXlWRTFFUTB4NU4wbGtlRUZ0TTNkTFExOVpUREZNWjBSV1RFVkpVMjlyU1VKZlJHRm1NM0EzZEd4eU5raFRZMFk0YUVaRmExcHFiRkJ3UWt0c1VYTTFTVEJSZFU1UGJFNWxlVEZhYnpka2VVNVlWSE5RWkZwWFlVeFFOM2QzYVdoNU1EUlpVVXh4TlRKMFVtUkVhakpMVDJoMmF6RmphemM1ZEZoNWFWbEhlbFJmUkhkQ1IyVm1SMDVtWW5rek1XSklZMWw0YjNCb09FMTRSbkoxT1VZeE5FRktRMVJ5TVhkV2VHVkROSEp2YWpaRlIwdHlSek5yWVcxQ1RHVjNTRE5UYUcwMFFraDZaemhaVlhOV1ptTkJSalZ3VEZVMFMyNTZZbUpYY21zdFVXRlRjSFpRY1ZSclZYY3liVUp1ZFVveU9FZFJOWFZ0ZEhSRWJ6WkpURlZpZEdaaU1tWnRaRTlQWTNCaWJqWk1ORkZLY1cxcFMyTlJiR3RCZGpWQ2VqVlVZalJMVFVWcWJtTkVVRWRoUlVwYVFtSjFjbTVNTTNreGNFTlJPV2hUVkV0WVJuUlBhakppWjNST2NUQlBRVUpSTTBKQlZVNUhNbGcyVDBSek0yVkdTaTFsVG5FM2IyMHhOVVpwVERoSVdWTktXVjh5TkhObWJtNUphMWxUYmpoUGRFNVRaRUpmTXpSVFJWRXdlbm90VjFSNWNYTkdUbXBwVldkNkxVUmtjMmhPTURGaVdubHNUM0J0ZURRMWJVbFpNMlYwUkhGc2RVRkRkRFZsYm5kaFduWlJWV3RqY1VJNWNUTTFVemhHVVZOZlZuWXljM1J1ZDBWV1luZEJaR1pEVjJFd1JXcEpaVmxCYlY5RGVVWmhkemhRV0RaZlFWbHdPVmg1VjBoSU5rZFFNMWRaZHpkNGFFa3RTRlJyV1ZsSFNsbFhlRGt3VjFoTVQwWkpRWGhzTjNaWExXdERkVWhFU1hodlFtaG1aVnBQV0VJNVoyUklhemxoV1VocVowbEhjREJrY3poTFl6YzVaRGx6TW5wNU5HRXROMnhaV0hOek4ydFpSM2x4T1VwM01tNTBWM05DZUc1VVR6VXpVbDkwWjJSamNraGxiSE51Y1ZscmRXOWFVbTl1TW5sV1pWVjZjVEZNUldScVlWSlRYMVJ5VDFaTVJqUTFXRmd0WHpoT2R6RXpWbXBhUkZwQ1VWY3RRVmRWZEZwNlEyOHhhVkZPY2s5T2JrSlhPRGgyY21ocmVHaHpaRmRhT0hsSWJYQlFOR2szT1hSMGNITjBaVUZ6V0hGTFRGbFhORjlmWDFsS1gzRjBjbUYxTVVsQlUzcGxaVTVIVURSNE5VNW5TRTV3Y2xKNWFGTkxPRWhRYm1sUVVuTTVOMmxNTUU5dGNVdEZaVGhHVm10NFFYSlZNMlIxYTNoNlRuQjRRbGR1T0MwdFJrRnJUakptVkRRMFgydHNVRk5yZEhSV1UxOVVRbEZqWkRSak9EazNOams1YlhsQmRsZGhOMXBOVFZoTlMySnpYMnh1TjBOdFMyVlpSSHBXTW5sbVFscEJXamhqV0ZseWNrc3lTVkJ5U0ZNeGJrcHdObTExV2xkUmRtUmpMVWxZVG05R1RXZDNhM3BVUnpSblNVRlRMUzFVTldRMVQyOUxNRGxSWkZCUlFXbDRhbEI0VTI1WWJGTTNYMlJ4UmxKcmIwNTJUWFZPVERsaVpuZDVabWd3TnpWTFFteFVTMHBtYW05a1ZVeDFiV2xmTmtsbVJGQmhVME54UlhjdGFrNHRTRTh3WTFsTFgybElURmx2VjIwdE4xbE5MVU16VjJZM2RWbFdSRzEyVmtoZlEyaHdPV3RaZDFaNlNrTXpjQzAyYmxFME1HcEVhRTl2T0d4Tk9VbEhRMkUyWlhndGFHMHliMEpwVjNSaVJGOW5TVWhPU2t4S1owdEdhVGRXY1V4RFZWOWFUR0ZxUVdkS2IzZzRUelJpYmpWUVMydDFWRGhHYzI5NWVtRTBYMFpFUTA0NWFuVXRZVW90VEd4RGJVcE5hbkJSYnpOUVdGZHBUMm8wYmpNMVoxQXROaTFJWlcwNWJWaFRTRlZQVlVsME9FMUhZblphYkVkM1lVWnNVR3BxYjFwdGIyVldNekJ4YmtwSlFWSkNkM1JNVUZCc1puZGZkelZmZERSUlgwbDZXV2x6WWpRMFUwSTFZelZsUWkxUlMyVXpOSGhuVG1SUU1FUk9la0pDVlVwcU9HSTFXbVI0T1ZoWVVtMHpkM3A0ZHpCRVUwOUtVVTUzWkdsWlNHUjZXVmxMTTFseVZqZERUWEpmY2xsS2RtOVVielZpWjJWSGJsSmxkbWRZVEVSU1FrbGZRMnhNWVZrdFFVOUtlSFpXYWtKWlkzUnZjbDloZDI1ZlJFbExSakkzYTJ4VVJEZHdUR2hKUlVoUUxWQk9OM2c0V1dGQllsZE1WRzlUY1VsMlFrczVNVGRQYlZWbWJtRlZPRlZWZVd0TUxURm9YMjB4U0RGTlUzQnlUak5uYmpkNFdXNDVZMUkxYlZaMmJIVnpiRFp1UmxvMFNXUlhkMlZXVUZoQ1VHZGpWMUJCUzNKM1lqWm5SSFV6TkdGbVR6Umtla1ZWVGs1MWEyWnVYMXBtT0RBM1ltTlhXVkIzVFRaUlFsSk1ORGhCYWw5aWRTMVFhVkV4YW5kdFduRTJUMkpPV1U1c1UxcElTM2d6V21veE9XOVVNR05FVURkMk9WSnNka3RTZWsxclQyeFpXVVo1YTFGSWNqWldNVGxCY1RGRGJIVlRVR0owTTA5c1JtRlNMVlJ4UlZaemRURnpOMHhEVTFoamFIWk5UV1JVTlZaVlIwcDZTbFZtY25rNWJ6QXdjWEZRUVVwZlJ6ZFlVbkpGV2pseWJtRk9XQzFEU1hsd1dVVktVRGsyZVcxb04yVktWbTVaTm5KaWFtMTBZVTVLVFhsak1ITkJWRGhNTVhCcWRqSktURTlZYmw5WVpFdzJXVGhJYjIxT1UxWmlWMHRDYVdGMFl6Vk5WSHBKWTNJM1pHbHpVakZFVUVaUU1pMXhSbHBYU0ZKaU5uZDFWMEl5ZFhsbVgyZEpZVXBKUkVoUmN6RmxkMnR5WlRCck4wdzNSbnBGYzAxUGMxaDFSRjh0T0VGNE1UUkJiVkJzWTBZelZ6RnBVRzA1T0djNWJYZHViUzFZY1c4MWNWSmZOekl4UlRaTVNrOXlWM2R2VnpaYVJVUlJSbFJaY1MxR2VVWjZPR3R4U0hkc1p6QkRRWFExYkdaSWJWVjRiR3BQZVhWdE4xaHdPVUZQUXpWVlRYVlRiMmRTTkhZMmNUWmlRMFJsWmpKcU1pMUNlVGt0WldVM05FdHBUR2hOVFhoU1oyZ3RVMFJUYzBkVVkwOVVlbnBhZVhCMFZEWm9SV1ZrYmtvMlZFSmlURnBVZWs1cldXSnBjRGhUYVZWUU5FaFZYMFpqT0VKSGJWSlFkbTAwVWpSRVpYTXdSM05ZY1hObWJsQXdUVEZxTFV3MVRUZHhkRlZSTjBGRE0xOTBTVFpxTlZaSE1YSnZUalYyVTNKR1lVeDRhWEl5YVVkR2QzRmFTamM0YzJGdE5qaG1hVnBRVmt0Tk1XeDZVVlIwTWtWS1F6WTVlRkZ6ZFdWdFZFcG1VRWR4VkhaYVJHaFdRemR4YmpWUFduZzVhakZ5TlRJeFZrZ3hSV0ZuUW5sd01IcFdSRWxGTUVsbWJUUnBXSHBmTVVWamVuQmpiREZZWTNoaldVeHpjVmM0VlhZMGIwWklUREI2VXpWRFdGVnBaa3Q2ZEd0bVpGVnRZVUZOZG5od2VGTlhRalppYkUxcVluSXdja2hwZFhKcWRGaGFTWGhzZFdsbVdFbDVhWGhsZVRKV00yOHpWMkpmU0hwbWVERkNXSGh6TkhWZk1FbEhkRXBDZGtKWk5XcFNjRzlLY0U5SmJtWkljRnBzVUdSRllsTjFhWFZZYUVsUlFrWkhkbXh2ZERGRE1sazRiMnBLZG5KR1VWZE1aVGRUZUcxaWRrTXRSazVpU0V4M1JWUk1NQzFCTjBjM1dFazFibkJxYlVwTFkyOHdZVFJHVEhkNVgwMXVNR2d6V25CcFZVcFhXV0pMV1VoaGFqQjNiVEU0ZFUwdE5tNXFVSHBmYzBoMU1HdEtjV2h2YkV4bkxXaEVSREl4VURKWGFXSkNkRzV0TVVFMlpWWkxXV2R4WkRWeU16WmtTV05oUm5aSGFUWTJXbTVwTXpCUFEwMVdXV3R5TkRGYWFrUmtlbTVJWWxSYWVucExZbEppUWpaZllURm9SVk5hYlV3d2RqQTBhWEJEVVdsUWVXeG9iRFJoYUdRMmFucGlWakJ0ZGtkQlp5MTFZbXRZWm5WdGVXNTJaRWxmZDJscVJHUm1SWEJzY1haWmRXOHdPV0k1UkhkNlVYY3hTRmN5ZG1ZMGJYVmhSblZ2Y1RCcFExbERNV0ZKVGtsWGVXOHhiMVZoY1RWdmRqaHFUR1UzYXpWbWNYZEJaRTVOYUVwSFF6YzVYMDlwUlhkRWRWbHFRa05vVm1Oa1ZVRnlialF4TUUxU1EyWnBWV1IyVDI0eVUyVmhVMWhYYkV3dFduaGhWblZyVFU1VFUxSk5TRVF4VWxoamQwRXhNa2RZWlhsMU0wUnFRalZYVlc4NFZsaGtiV2x2TmxSTFdHWkJTekJNVFU1MVFXcGlNMGR1YVhKb1J6RmFRVlJFZDJ3MVlYWXljVWxhYlV0WVYwaFNXR2xYY1hocFpVMUlVRTVqVTJwcGVuRk1VMlV5UVdZMFYyVk5PSE5OTmtaU2VFdFJVVmQ1VURoNmJHaGhUbmcyVmxaZmVsZERPVWhDVFhGQ1lteEdOR3AzWkRreVFYZHVZbXRDWVcxNFdUQXRkbEpmVVdWVE9WbHhVM0pPYVhReGN6TkVVa1ZUYTNaVlFqRXlWRmRYT1ZkaWFVVlVhMmxVTW5ZM09YRkpZVkZWVTBOeE1YbDFiMXBTUkVaVWRsTk1OelIyU0U4d00xaFFkMDF1YW1GalprczFWa1F0YUVkeldYWk1Teko0TlU5bldqTkZVRXRPZFhkcmJYRkdiemh4V21nd2Vsa3haVGd6TFVsVE9VUjRTRjl6TjNsWU1VWm9kVVJpZW1FeFFXSmphR2hxVDNoUmNrcFdWekJRY2taV2IzSnJiRU5VWmxacVYycGZaMjE0WWxkMGIxUkdVVUkxYXkxVFpVeHZTVFkyZGxsTU1XWlhhamx3WVhwTFQzVnlOV2hXUm5rMGQxQnhOekpqY0Y5a2RESnhOMDQzZDJOMk5WOUNhSFZ6WWxsWE1WVnFlQzFrWlhKRGVVNXJXVmhQVFVZd1dqSXRUSGRRWjJoclVUQTJNWGhPT0VGV05FeG9TVFpQVTBSaVVURjZlbFo2ZUhJeVFtcFZXa1paUTJONmNuRlVkMlJtZHpGcWFtNXJYMnBqYmpOSFkzaFJWalZUYldsamJtNXpkRmRrVWxKaFMydGZTbVZVVjNaVWJqWjZjMGxoV2xabVoyMXhiMVI0V2twdmNVZzVRa2hDZURCT1NXZEpNbTlNYUdsUlYxSnROekpQZUhobU1sUk9PVnBIUm5GVFNWUk9NRXR6VVZsd2FYcEliazk2ZEhsSVQzRnVObWQ1V0U5VlEwWklNV0p2UmkxbGMzSnhOREpQVFdkbGJGRm1kWEV4YUdwaFEzRmFkM1JFVkhjMmJUTk1Uak5oTkdWWFRWRmxiMlo1UVZjdFkxRjFlbVF3UW1sbFdVOUlSRUpvV1hKU05tdGtaa2RaT0dkdFFteDFjRWxETkdFeFYwNWhaMWh5T1VGNmVrTmZUVFZKZEhkTmVrNTRjakUwYjNBeVN6Um9TMFJ6VVZWQ2VDMTVTMWx4TUd0Nk1sSjFaak52YzNjMFkwVkdhaTF2VlVWaE9WSktTSFJITUZjMlZGVXdXVXB4WDFoc1pWUXpXbUYzUzBKQ1dFRklWbWQ2YVRWRmEzTjZkVjlQVkVsRE1FUTRSMDVEUlVGbU4wTnpaRmRhT0Y5WlVIQkhaRjlEYzBwM1dIbFZOSGxpTUZWUFZrVnBWMFZ3YW14UlkwWnJlV3R3VEhkWWVHWXhjMHQ1VTNaV1UwbzFaRkJWY0VWWmVXMDNVMUpWUTNwVVNrWm1TMm96U2tkbGRtZzFPVmhOTkdwWVkyOVBWRFZvVVVkZk9XbDNaVGhEVTNBdFRTMVpXalJGVWpoeFZsQnNaVWxJUW14d1ZYVkdVVU0zTUZkclFsQkNjRXRIYkhSU1VYcFVVa3RzWkZSUVdtWmxkRUZOZW1WNVNWRkpZbGRQTWtoRk4xSldZbEZ2YVhaTFpWQTNia1oxVkhFM016Uk1XWFp1ZVRsVldWcFRUSE5rYzJwS1RFUkNVVXBpVmtScmVGQmhSR3RwWjFoWFdGSlVVek5VVDE5YVZWaHBNa1ZIVlU0elVsSmlWRW80WlhCMldXTnFOeTFMTm5wdWVsbFZVSHA0Y1VnNGFWbFZhbTVYVW0xRGFHVTVjamhUU0VSdU1tSnBNV0pvTVdWRE1VZFFaVEExY0hsMFVrNXZTM0JwWTNWS1ZYQndiRnBKY0RGa2NUSXljMFJCYzBsTlFteFpjRU56VkdWRlp6TlhSVXhNTTBabk1WaE9ZWEpYUmxkelEybGplRWhaYVVWTlJWWTRXbFpYY2xWeFlUbGhVMjAxYTJSUmJYWnZXbkpZZEV3NVNFeEVNa3hKYjI1cGRVWllVemxyY0hSZmFqWnZWM0J1T1daQlVUZERURVZrUkdRelVtcEVUR1ZKYlhSc09WZFZRbXAwTmxobVYyMU1lVE5xUjNkUFF6bGZSM1pZTm5OeFJtMXpjV0ZNVUdSVGFraFhUSFJzVUU5RFRXUXRhMnhOV0VOUE1FSnZWRGhRVWxoQk5VMXhVMTl1ZHpWSlJuSldiMEpTYVhCeWRYQjNPWGxHU2taNlQwZGxaREp1Y3pGd2VVcEJRa1IxZGtVMVozTnVVMTl4T1doS1EyOVlSMlpUVGtaclZYYzNja1pSVms4MlYydHFWVVJmYmpSNFpIZ3dXRkV4VEZwVE0yOWlhR0p6YlVkWFYweHhZMUZVUzJkTVFrMUZNRTFLU1hkWE1YQjRlbmRsVEhCQmRYSktWVnBRUVRkMFNGSjNXV1p4Wld0alpHZGlXbGg2TjI1NVgwVTJVbDh5YVVoaGNqaDBWbWg1U3pWbVVtMUZhSGhCY0UxVk1GY3lYemhsU1VGVmExVlJVakZQTFhkQlVYVlBUVkpKVTBKRGFITnNSV0ZNTWpSU09EWlpNbEJvV1V4QmMzaHVNSFUyYjNsTk9ISTVjRVV6TVZWSmFqQnVSVTlDVDAwd2JGb3lVVEZKZDJkWlVFdENOM2g2YkRsaWRqTnJaMFZYUld0aU1sWlFXVlpGV1U4emJ6UnpNMEZyYnpoMlRHUklYMjR3YVc5SGN5MXBNMDFYWkZwWGJHcDBXVFpzV2s1Qk0ya3lUVEJHVUVKeGNGb3diWE16YkhRdFdIWlFVbTlMVG1aSVFWQnFiRk5MTVdRd1VGcGhiMWx4TFhaUVRXaHZVWEZaYmpKVlQzSmhWWHBCVGpJeE5VcEdkMWxIWVZCUFVGcDFNMVpwUjI0eWFWaDJVM1JOT1ZseWJFbEtkRlJNVTBWQ1ZsTXlZbEZVYkcxcFpreE9kUzFaYmxaT2NFUjVRbFJvTVc4eE1Xb3dUa2M0U2pkaU1uVXdReTFHV1U5Q1NqSmZNa3QxTVdkeGNGcEZOVkJ5WHpaNmIzSkxSSEY2VkRCbllsSlBaMHBFY210UExVcGtXRU5CVlZJMlJrNVBaelJNWkdsQ1ZqRmxhek42VHpCNWRHeGpNMDgyTFZKRWNrdzJkMWRrZDJ0NGFIcEVUako2T1hsTE4xUlJVVXQwVmtKT1ZXTnpSWEJ5VkVWZmFFODBZbXBTZUVWUE9WVnVSVzUwVkZOdlYwRllWVEZFWmtSeGJGZGxNazVOYkY5eU9UbHFjbFZYTW1GaFNtRjBla3BoVDFRMVdETTROVTluTVRoWlIyRnVSbEk0Um1GcGJVUmZlRFZCWldKWWFuaEJVMHRsY0ZneVJuZEhjbUV4T0ZKRFJHazFMV3h2TXpSNU5rcHBWVXAyYjJSd1FrUmpWWGxHTjJ0c1RtWmtUMVZRT0c0eE1VRjFhbGx3WVdKSGVGQTROME55VkRGTGJWYzFVbnBGVTFSSlJVeERNM0pNY0hCcGF5MVlTRlpwVmpGbk0yUXlVbVl0ZUZSQ2N6QjZXV00wUzBsbmExVjBPRTloVmxSMVExSlFkakpqU200NU1Vb3dXV2xVVFVjNFlVdHhNMlV0YUZwdVlraFpNMnBFVHpOTGVIRm1helJqWXpCU0xVcERlbTlUV1RsVlFuVlRTMjB4WWs0eGRFRjJUekJhU1VoSlQwUk1Sbk5XVXkxT1p6WkpaSEV3YlMxQmJuWnJVMlpCVVhVM1IzZDVaVEZHUzNKb1ZsbElTVWd3TkdoQlVVOVFiR3N3UzIxM1ltZDBVRGxvZVRCcWNFNWFjMU5mY0ROemRHNXVNM2REZVRkV1ZtOTJNbTFpYjAxWGJVdHJPVlZQU0Vkd01UQkNNVU5pVlY5VlNVNDRURVpVTjBsYVdrMXVkamhJUVVGMWIybHZiRzFRYVZadVZFdE5XSEpHU1c5M2RrTm1lVGh1Y1ZKTlZuTjJjMjVoYnkxS1VsQlhYMjVWYTJWa1dIcFlXSGs1YTB4dFV6bENjWE5aVW5nNE1VVTBkMDFNVVhkQlJFdGhUR2d3YjNBNVRHdDFhRTAxVTJvMWRqVlpiV2RaWjB0dWJYSkljVEJaZURKWkxYSTRPSGxpU2xsRVdqUm9ObWhsYkV4RGVqTmFWSFJxWVRSSE4wOU1NVzQxVnpaQlJucEdYMUZVZEVwM1FqZENMV05aZWt4RFN6UjFURVZtY25GSGRuRjZMWE5LZUdoNk5XMUVUM3BvTTFaTWFVZG5TMjVwYTFaalgxbGFSRlJyTTJsaWFUUlZTRzB4TjBWRmQyUktSak5OTVVoVFZGY3piVXA0ZG5BelpGbEZVRmxmT1RWdlN6RjFhMEZGYVU1ck1uUnViRzB4VDNOb1JGaG9PRlIxYm5sVlNtWnNOMkZrWlZoelZWWnJMVmhTYkZjd04wSm1RME5HZGxsWGJHRllibGxxU3pGelQzTTNSRXBoVFZWWmMyRjVNamQ2ZEZKMFFURnpabGhsYTI1TmQwVmZVM2RETmpFMmVXeE9MV3BxUm5NM1VHcFVVRzEyTkVac2NXOVpOVlJRTjFwUVFVbFVkRTAzT1VwRllVZ3dOMUEzUW1WZlkzUnBaV3RsUkVoaVpEUXhaMkZ4UW1OTVF6WmFSV2hsZEc1MlF6SlpWbkYwUzJSck56RmlMVXBKVW01WFpXaHlhMFl4ZEdSeU1uaHVhMUJUZGxOSGVFczJTMEZNV0ZkRFVsbG5XbUpoZHpWak5saFRhbXhqV1ZWck0wOXBUVkpvU0hwT1luZGZYelo1TW1wVmFEQnpSSFp5YkdsR1ZEWTFVV1pCY0hKeU1saDNha3B3Y1ZOQ05IZG1abTlEV2tORFlsZDNkMWhVVjFSdVJqa3dUM1J0WkZoamR6UnJWM001T0VSa1ZWWlJjSGh0ZVRGR2RrTkhiSGhIWm5OQ1dpMHRia3B4Wmw5d1NHaGhPRGRKTjNCbFRuQkJXazlJWm10TWJFaFVWRkZzU2pnM1lqYzRkVTV6V1U1aGJGOUpTRkpmVEMxTloxSkhjbXhHWDA5WFExQkJUazlqT1RGWVJYQnNkMDUyVDNKeFEyeFlaM2R2YlhwdlVtcDZiMU5LU0RaSVJsZGhlRFJJVTJSckxXOVJkRTAyUldseWJGY3ljemhZT1daSVFWbFJjMGhLUW04d1JWUkxkbVJuVEhWRFJ6WnFNSFZ1WTFoSWFIZFNiMnhuWW0xdVNrSmtXR0pzVFZKWVdqVk9aRGQ2TFV4cFZVaEpSVFJzYmkxQ2RFcENXSFJ6Wm5kdFVFaHVjSEUzYmpKS1FUQmhaRkJvV1ZWTVkyeFNlV2N0UTJ0amMzaFFOVnBXZVRoYVYyTmlZelpwV20xSlYzcEtVa0pJU1dsMVEydzVlSGxJZDJab1pUQjNTbWxVZFVWck9ETmZPSEpwYTJkTWVXVmZTRkExTVZaM1RUazNiMWRPYUcxMVVqTXRRVmRuU205dVNFY3hNMnhUY0VweWIzRktWamRRZEhabmEwaERUR1UxUjJSc2VHSkNOSG90ZGxSYWN6bDNORmRQU3pGSVEyZE1jRWszYmxjeFJrNHlWMmt4UlV0RU1YTlBUbXhDUlhWdFdIUmlZekZpV210emNuWmFMWGwxUlhVMlpqbEthMFZrZUVweFJIUXlWbUZqTlZaRVVuYzBhVjlFV0UxWVdYWTFOa2czVjBkVlNGcGplWGh3ZWtGVWQzUlBhRzkzWm0xUFRHVTNMVEpyYlV0WFFUbE1NMHhCU21kcGMyaE9jVmN5UzJRek1uVlRlbmxaYXpadmJqY3ljM2RVWldVeGExQmFhQzEwV1RWU2NVaHFXWGxmUlVsbVlrTTFVaTFhYW5sWE9HMUxUR0pvUmxSSVZuTjZUMGhDWm1WRVYzaGZaREk0VUdJMVpVa3pkMTl3V2tOamQwTnpNVk5IYWkxeUxYbHZWWEJhWW1kbmFXWkpWalpKVUV4b1MyMHlNMjVRYmxkUFUxVlRkak5XVFUwd00wSXlPRE51WVd0clpqTkJjRzVoU1V0SlNuZFhSR05DWVhGMWNWaENjVXd3Y1cxS1VWOTBRVzVNZEVSamEwcG9OMHBmWlRkMFVFeEhNV3N6YkVkdk4xRnRaek5qU1RSRlppMUpkbmcyVWkxTWFuSjBRalU0U1c0dFF6QlFXRGR5VFZad1puWk5RbGhyWTBaR1JqTXhaRXd3VDBoc1QwVlBNemxhVUhKSFNFTldORVIwUWpGdmNEQm9ja1Z2UzFkMFp6VkliRlZDTkhCcWJtSlFNR1JDUld0UVl6VnVhbTk0TmpKWVEzcFFSWG81UVRodmMwUjNhRU4yY2t4TmNHdEtNSFExU2xCM1VGZGFibWQwYVZkMlozWmxabWRPU1VWUlNWRldNMGhTY2xWcWNrUkNNREYxYkY4eU1XTk5ZVzlLVFZvd04xcEhRMHRpWDBadlJHeFNaVVZJT0RGTlQxZExTblZoVlZGd1RXOVBXa1l3UVRCcVowTnRlVFZYTkRSd1RFbFdZbGN6ZUY4eU5HMUdVVE15TlhneFltRkpjVXhNYVd0QlFsVmphWHA2U1ZWdFRuTTBkWGd3T0hoU1MxZDVia05qTjJsQk1qRkNVbkV6ZUhrM2VqaDBjelJ3VTNscmNuQkJUalF5Tm1aM2IwdFpVbWN3UjFOQmVrdHRlRmRQWVc0elJTMVVSVVU0VVdOMlgwOTRlbGhETFhwM2MxUllNRXR1ZW5kdGIzZHdOV0psVkVkb1MydGZiVlE0U1dGVWFFTjJhRUZHVkcweFl6ZElXSEUxY2pCUGRqWkxVVlJWTFdOQlozQm5WM3BXZVhSaVdsUkRWbk0yV1ZwdlZ6RlpiVmt3TlV0d1ExaE9iVUo1VGtGeVFsbFFZbkZSVGxZNU0wdDJlRFJKYnkxVWVHZDZkakZFWWpNMFVERmFUVWxsUVhkRFIzUkZOVm90VGt0aGVsOTJVbEpoUkRsSlJFTklWalpzUjI5aFZUTnBNVmhaWkVKeVh6TkJUSFptWldsa1FXdEhXVEJXVTE4NU9WazNkRE5yTTNWc01ESjRObkpVYVZGNk5tNHdZVEZyZWxKWlIwMVlkV0pPZFdwUGVrOVdWek10Um10eGJtNHhZa2hWVFhob1UzZHhVR2hSVFhkYWJIZ3dTMEZXTXpkWlRYTlVOVUYyUmtOc1prczVaVFJIWVU5cFIwaHRWRVo2Y1UwdFdsRlFPRTFQU0dOb2VESkRZalV6YW5GT1l6ZGtiWFp2U1dabE1IbHllbkpHV2s1SVRGaEdTVmxPTTJaR1JtVkpSMEU0ZWpaNlpXbHplVGc1UTJRek5rVlhPVmx2VlVOcVFXRk9WMXA0VkhkS2FWTlVRbWRZVEVGa1NXMUVUVTVSVERsNlpGTm5hbDlLV1VGS1FtZFRlRFZQVWt4YVQwcFFMVVJxYjJwT1ltTTJRVzg1Um1KNVNHcGpVak5TU2toS1NIbDRWRk4xYkRWd2JGWlFkRnBRYTJGVmVHVk9iR0pSYlRoRVNtZERjM2xOVEZsMmVHNHpNVjkxYjNabmFteFpPVlYwTFZwSVNHbEJVSGgzTldWRU1WaGphWFpYZFdrMGEwUTBXa05vWkRSdlNEQm5Ra2N0YW5wRVp5MHhSRVU1ZURSeFZqSnZkVU50UVVFdGFHZGhTakZzWm01amFFbEdNM1UxVlU5MGVqWk9SbU50WDB4WUxUSnVlbTltT0hKd1ZVUnVUR2RyVm5SU2RWTnllalpIZEdKVFZWRjNaeTEzWTIxdGRIcHVkWHAzT0ZaMGVEYzBjMGN0WVRkMlNVTkdTbFV4VURoQ09XaE9abEZGTjJOdE1qaFViR1UxU25KMk9XaDJValJCTUhodWF6TXpiM0J0VmtONlUzUklhbWhTWVdsNGNHZGpVMGM0Y1RrMVVuTTBSVEJzTkVoSU5DMVJkRTVOY2pWM1YyOVVOa2swZW10SE4xZFdNRXRsVjJneE9UWjVaREJvUkV0RWJ6VllZMDVYT1hCMmFuWnRYMXA0Tm5sbWRIcExiVEV6ZUhkbVJWVnNjM0J4VG5CUU4wUkpZVFIzZURWb2EzWkJhRGxyZVUxVFpVeFRZakZ4YkRGWGJIcEtMVlZZVldkU2FtMWpkVzloUkRVeWNHRmtObDlTYjJ3MGVHaFNOMDEyTmpKc00xbFBhMDlvVlRsTmVtTklWa2cyVUhFeE1WZ3daRjlyVGtwM1RucEtiM1ZoUjA5SWJIRXdablZEZFZwWFpsRnBYMlo1TWxSc2FYbFpPR2d4ZVRkT1dVRkZUVFZ1V0hOVFVrRmtVRlpuYkZSeFNpMWxZWFEzZFU1QmVHSklVR1ZSYm1adU16WlFWek14UjJaSWJtZFlWM1paZHpFNGVuTjRZMU5JUVVKU1lYUk5TemMwV1VoT2JXSlRiamRKYnpGdE1tWkZibTR6VEZCTGIxSnRiRUZYVFV4R1pqaDVkekJHUm5adVlqUTNRMTl4VkdGaWEyRTRTVFo0TXpKM1pGUk9ZWGRwUVVab1NVdDBiMFo1U0RWbE1ITkZjbTA0TTI5R1IwZ3pjbmxuYVdRMVFWVjBTbTFMVURseFYxSkxWSEpFUW5GMVJHRnJZVE5sYWtwclpqaDJiRUYzTUhkamRIaFJlVFp4VFdGb05FWk9kMnRRTjA1U1MwZGFSVmxJUkZaU2RrTldjbTFwVVRsUFZrWnFZbTQzTmxwV1JFbHBjbmRMU0hKWE5sUXhMVTg0UjBwNmVGbEtSVzVtY1cxamNYRlRUM1JZVGpkS1NuSndlbXc1Tm5FemRVSkJaRXRQYXpOTE5UZDJiR3d5VFdFMVRUZHJiRnAyT0hWTVlVUXdiMWhLVG5SR00zbFZaVmhXVDE5T1ZuZHdOWE5sV205ZlJVWnNOa3RrTldGNWNERlhNa3BNUWtwcGFGVnBUblJWU214dk9EUllkR3gyTjBwWlpscHNkR280T1Rsak1FNDBXVkJrT0RWak1qZHFRVGN3U1MxVU1XdE5ObFpHT1U5R1drOURabmQzU201NVFVcFJNR1J6VVROdlRETjFUVjh3YzB4SWRHTTJTMGx3UmpGa1pEaE5NbU53ZDFodmFHNHlibHBHWVd4cGFGOHRNemhqTFdOclRWRTJSRUZ4UmxWS2JGaEJXRFpXYlU4MlQwWm1OekI1VEZaS2RpMHRNa1ZxUTBGMVN6VTNjbnBrV2t4V01WcE9TMlZDUlZSQk1rZFFVbmhtUjB4TGJtVTJabEJCZUVSYWMyTjJTMEV6UzFoWFVYVkJkVmhmU0hCc2JGaFdObE42VEd4amFqWlNhVzExZEVSamNYWkZVelZxVUVSRmQzSlplRFJCU2tGUFVHMVRZMkZEWTA1NmJuVllUSE4zZFZWUmNVWTViMWw2VjJKTVpEUndSRk54TjJ0amJHaGFXWE0zWTNSTmIwZGtRemh0WTNRM1oybHBkM3BWTUhad1JIVnRSQzAwVkZjdFRqTmpVamxhWDFwQmRHUk9Rblk0YW5KWll6ZFNOMUk1WlhOMllURmphR2N0ZEdSYVUwNXNjbXc0VG1KUVduQllhMHREYnpWSGJWVkxNa2MwZGtKc1QwUkdTbHB3UlhBdGVtMDFUbmRpYUZaUFozUXlWR1JZZFZRdGNVZDRjbEpKYVc1MWFESmZjMTk0TTE5TVVESmFOV1pQVkRaSE1IZGhWSGxZTUd4cU5XZGFXWG96WWtGTVVWZERkREpUZUdsclZsaElTWEpmY0dsdWR6aHViVTQzYWxsMmNFYzJRMDlaVVRaNFRXOHhNREpqVlVSNFlUWmtjRTl6YUV4VFZYWXlYMFZPVlV4U2VIY3phR3R0UmxGMmRGZEtjbXBpTkdvek5tMXJOVmx5ZVhabE5XcGxjRWhDVGxNdE0wWkRURFV4YUZaRmEzSTFkSFI0UTJSRmFIcEhZWEI1YldJdFJVRXdkVXBwYmxNdE4wcG1NMWhYZGs1aFFuVTVhR2RvVkZaMk1XazBTMDlRU1ZKSVJHdHVTekJyVTAxdFdtSkpOSGhCV1ZFNGNGcFBZbXBzVVVjMU9WTlpNbFJGTFVoTVNFaFdTVXhyWW1sd0xTMVNibDlqYVc5bVJsSldhakpNVEZFelMyVlFhRGs1Y0dsT1VUbDNXVFpMUlZsdmJVTk1aVzVPY0ZseVVtMTNRekIzY1dweGJEVjVPWGhYU1ZGS1RFOHhWRTFmWW5GUVVWVmlkRXBxVGtkdlRFRnhkQzE1U0dWMVIzRlJUVGxCUVZOelRuTXlOMjVHUWpWUGRFTlNhbUZNWDNkR09ESTNXbGx5YnpOQ2FubExhV2RsWHprMWFUVjRUWEZNVGpOVk5VUk5TVTVITFRoMFVrVmplSGhrWVVsRGVrcDBaMjR6ZDJVelVISjFlbFZXY21ac1ZtUXllRkkwYUhsc2VYcExVekUwWlUxNmFUZERZV0phZFhSMk9HSm9aVEk0U21SSE5XTTBRMWRUTjA0MFdWcENkRTlxYzNSRFRHZFBPSEJqY1RZeGMyWXpUbWhmVVhWUFMwaGthMnBzZWxoMVJFNWZabVJzTlY5VWVXdEhlRlZEVjJST2NuUkRkWEpPTFdSaE1FUTBNRXcwZUc1d1FVRmxUekJHWm5JMU5GRkdUM1puTkV4eGEwNDJaREJxWWs5U1FVSnRZbkIzYm10dUxVNXNaR2hrU2sxcFVYTkxlWFZMUlhCQ09IRk5jR05RVkdOeVoxWkdWRTVrTkZsaWNsVTFYMU10Y25SeE5XWlhkM3A1YW1wek1saFZiMlJMYzBsdE1IaHFTMTg1WlV4dlZ6UnpVelJmY1VKVk1IRjZkVmg0TTJabmRYVmFWSEp1WmxCblZVRTRVa1JFUlZSaFRrbGhhalF4VG05a2MxQmxWMloxWmxkd1ZuZGpTbWMxWjFkVFprdFdlbE5NVjFkNE1sTnBabU41WVc1WlkzSjRUM0ZFUjBWTFNsaFdObXREZG5GNlNHRktiV3R6TldOc2FGRkpOR3ByVWt4cVdFaGtXV05zWkd0dVlWTTNUR2xZTkVwd2MwZFhMWFJzU2psdGN6WlljMmxOV0ZKamJtZDJTbTFFV25kd05VWXhjVEZaZFhONGVHVTJlVWRSTFRkamJGTnVkR015TVRaVU9TMXJaREp6Y0UxaWIzRlhZVU5xUlZKblIycG1OVEp0Ym5aMFZHUlBZbkZYVUVkSFltaDFRekZmZGtaWE5HbEhObTl6ZGpKMU1IUkZXVmd3TFU5TE9HRmpRVzlPZVVwU1lrMWxZa0ZsTVhOeFZ6aEZiMGhxZUZWTGFqZHdZWGx5TlZweFdYWTFTbU16UlhSS05HOXNOMEZKTjAxSWJXdE9VVUZXYWxWeWRYUjBVSGx0U0VZNU4zUXhRWE55YkRka1JtWlVRVXAwT0RrMFYwSklMVmxwZGxCS05WTlRjVmR5WW1RM2RrWk1YMDU1VUZoQ01uQnpjV1ZVVWtSbk0wWTVURk4wV25OemNqaExibFowYUVOS00ycGtaMm8zVlhwcVMxVlZPR3RCU21WM1NubGxNVnBqVERoT2VGcFFkemxqU0VaUlNXZFRWM3BTYVRrdE5tdGhNMVZNUm1GTE5tczVhRnBWYzJKSGJITjJORjl1VlZWbVRIUnllbnBoVVd4RmEzcHhlR1Z1UWpsYWRqRnhVMVU1ZGpORWNWQkNXbG96WTBrdGFrWjVOVk4yVFhCSWVHSTBOWGxoTUd4MWVFRXhiRFZGZDBoRU1HcFJRamhwVjBkVWQxWXpXRGM1UkRCd2ExWkxTamxMUVZsa2EzWjJhRkowUVdaUlpIaHBTamhpUkZOWE1rSmhaM2s1Y2toSFN5MXlYMjR4VVdwRmRGTTNhM3AyTTA1MlkyaDRabTF6UnpCbk1GODVVR0oyV1dOa01qUktlbUV3VUdGWFFWOUpXWFUxWW1od2RHbGZaVmhNYzFCM2FuVTVRMFpHTFZCS05WOVRRa1V6Um5wTVVFNVpZa0V6YnpCblFUTTFkMUpVU0d0SFZIZDRaVVZsY1ZJd056TTFjWHBOVGpab2NEWTVXRzlZYTJkVVNFWmhXbWRvY1VkTVRXeE9iMnhwWTFwaVJVUlNTRzFSTFhGMlNuRTVZMU14WkdOSVYwNXFVVmc1TkV4S00zcFlWMVZDVURCa2VrMUhSbUZ1U21WVlJHRklOREJTYm1sMVpGOWFZazg0TTA1TGRXVlFTbUpNVkZWUFUzRjRWVXh6TTNKRmFEUmpRazFITWpndFltVlRSWGxOVUdwV2R6ZGpiRFZLWjJGWVptOWhlbUl6Ym1Jd1l6TTBSWE52WlRVMWIxZENNa3BaY1hWaU1IVnliMkUyYjA0d1gwZElkRFptZVVFNVluWlhObVU1V2tVeFltWnJYM2N0TWxWT2RXNUhaSEIxT1hCSE9HRkVNV05XY2t4SVJYQkxhV00xV2xoVGJWbHllRFJGY0hwUWRsQjVhelJpU25OdmIyVXRkREJ6ZDNSamJuTXRiSFpHY2tKMVZHTnFOblJMUjNBMU5tUnBSVk5qTVVWaVFtbElRWEpQTWpob1NGSTNlV3R5WkV4UlZrUnhPVE5rVmxOeVdsWnphMEpPYjBwYVNXMU1USE5MU1hsaldXRktSV2RmZERrdFNFdHFZbUp3UTNwbFJYRkZjblpNT1ZKS1IwTTRURXA0YzBRNVFWOWtWVk42V1dZeFVUQlhNRzlLYmkxRGFGQkhUamRGUmxWSVQyYzRPV0U1UTE5dmQxaEtNSFJ5VlVadE1sQlZjbkZNWWtkWkxYUlJhSGRJYjFveGNHVjJhRkZEYTJsRlIyeEhWWGRXYm1OdWJrcFNTSFJpVFVnek9YVm1NSFZKU25KcU9WSXdSR1UwVldSV2NFOXpOREpGYUZKRWIwdE9USGxFY1hkM1IwMTBWSEJWVkV4S09FZ3daM0IyZG5wMk5HbHliblJ3ZG5reWNqWjNjSEpEWlVoaVVXbERUWEF0Y1dOTGF6QkxlbUpNYXpSdGVHbElaVE0xZVRsUlUxOURXVlpCWXpOUk0xcDRTV1pVUWs1NldrMXhVWEJ2VFZWTVZHNXdVa3h3TUhGdmJsZFZhMU5HVFRCNVRUQnpkalJYTlRSM1JsVktlVlYxY1d3NWVqbEJWSEZtT1hsUFl6aGhhbmxFVDJGRFYwMUdkMmhzVmpWc2NrbE9RMWhHTlV0SGQxcFNiSFpPZVU1RlNraHJiMnA1VlRRNU9IQnFZVGhvVG5Obk5XWlVORjl2UjNwTFZrbGlXV0V6YldVd2FHMUpZMHhUWHpaVFEyd3RZbUZzTVRSdlRHUTJaRVJyTlV0a2RuSjZVMUE0U0djM1UyeDVjV3h6TFd4Qk1reHRabEpuTUVaclRFMWxValZLZFV4bGNsWnJkVUZIUTJwbGRFNHdVbWh2UlVkSE5WZHRiSFZwWWxOYWFsZE9OMGd5TmxGQmNUWnpiVGhOVEdoWFgxaHRWMEoyWmtwdlpXVm9RM2c0VUVZeFdrZzBaVWRZVEc0MVZHSmthRlpXVlVkTVkzZzFkMmxqVjJkNVRUaERlVU5UZDBKYVRGTmFjVGRLU1ZobVEzRXdjVkZvUVZKNWVWbFpka0o1V0dWb1dtVXlNUzFIWVc1UVNWOUVibTlrYzBGS2VtbGZRVUV3ZFZKb1lsVnVUa05HUTJocE56QlpWa3AxYzJOeGVHUnJNRUpvVG5ocWRYSjJSRFY1VDNCM1F6Sk9ablJyVUZveVZrYzBhVUpYWkRFelNIUkxNMFpqTjJsWGVGbDBabTlXVVVKUlgydDRiVnBxZDJSYVdHbHNlVzFSTkRGRFltdHJVSHBXY1c1bmVVRjJka3RaTW5KcFVUWTJSSEZsZVdkSk9HTkZjWGcyWjNjeWJtVTROMTgyWWxacU5FTnpTakpWZGtsTFRqbHRlbDlpVXpkTk1uRnNWbWxKWlRCMWJFeFRkVVZqVlU1U2JVVTVNVFJxVjBoQ09FY3dWV3d3WmpnelpuVk1aRTVyTnpFMmJUVnpRV0pmVm5sVVRrVTRMVUpqTm1ReE5EZE1la2cwZVdNelJFSkRaMWhZYzBkRU9ISTNSVmRtUVdWbmNtSkNlSEIyVVdVMlJWVkpSSGx6Y1UweFQyVTVXR2hUYVhOYWRHSTNVUzFMVDFBelZHTjVjMlJKWXpONmRIcEVjVGg0TWxoYU5WRjJibnBwVm0xVmJHaHhTSFJmYWxGMFMyVnRjMU5GWVdGMlNuUm5jeTV5UmpSWU9YaHlibHBMVEVWcU9GTlJUWE55TVRsbklpd2ljMlJyUlhCb1pXMVFkV0pMWlhraU9uc2lZM0oySWpvaVVDMHlOVFlpTENKcmRIa2lPaUpGUXlJc0luZ2lPaUpMUTB0WlVVdDBSMUI1TjBWWllWQnNORzA0YjBOVFVuaE9VbUpOWjJGU2NtTkZkV1pzVnkxd01WcHpJaXdpZVNJNkltcENlbGt0YlVzMWQwRXRMVkkwUkRGa2FVOVJRekpxUWpCb04zSm5kMnhUTkdaRGVXb3hZVVpVZVUwaWZTd2ljMlJyVkhKaGJuTkpSQ0k2SWpSa016WTRPR0UzTFRCak5tSXROR0psWmkwNU5ETmxMV0pqTlRReFlUTTVOelpoTkNJc0luTmthMEZ3Y0VsRUlqb2lZV0UwWVdKaE5UQXROMlZsT0MwME9UVTRMV0V3TXpFdE1HVTJZMlF5WW1ZeE5tUXdJaXdpYzJSclVtVm1aWEpsYm1ObFRuVnRZbVZ5SWpvaU0wUlRYMHhQUVY5VFJFdGZRVVJDVmw4d01qQXlNREJmTURBeU9UWWlmUT09In0sInBheW1lbnREYXRhIjoiQWIwMmI0YzAhQlFBQkFnQmp3RDl0aUlsc3dJVGhZMFdUNnRZSmZscXRBRFFwTENmZkRqcWVRNm1ENzN2eHhCTVJEVzMrWjVpMkFEVUtOZ29zOGlIWWhERlFCaVhwb3FOZHJrUUNhUDRjUU9LdmpkV1dcL29YVWp0SWdmemRKbXR4TUMzUVZEd0ZcL0FjWlwvQlY3R2FoM0lYK0tzVGFETzlVbkpzTUdcL3l4aVZLdGpcL3NCbWZlVUVDV253cFBReDJSVDFzWEdIUTkxbXQ5cldEMGttSG4zTitKbXpTaUxYOGo0bWxiNzROVDZsNmZHWW9ndkorRG1MMlA4QUd0SzYzWUE1a21IbG5KODJ5SHlzVjFycGU4ZUFiUVMxUHJTV0VsOGVqNHRcL0Y0NHlCVGRnM1hXZ2VCN20rMHNMM2I2MzNxdHFmK2xkektjdldPVktyT2JFU2dSVFdEMzIrOVd5SHIwUG1qOGR0aUR3bXJTR3BualpPOVJVU0NyTmJaMStsNEdOVSszMVV5RHF3c0tuVGl1VlQrYmpTUWtmcHdaeE9JeDdLNVl1R2ZyZEhsTTVmOENqN0xKUm1IRHI3b1ZKRHNFS3R5bnRTeGJaM1pqZFFDcXJJXC9RaDVLZ0V4RjhHeUEzQ1d3U1ViVVwvcmIxbE9UNHRzemdDbG5CbEc3aExlS0hhZkE2ZE4rMlJwcEZYeHdYWFFLNE8zSGFwV1h4R3pCUjByWnpMam5lSnEzcUtHcGJQbUJYOVl6ajYwMUFcL1J5TEN1UHlWTE9oaWxpWU1OSEs2R0hUUzFqZWtyWHBJdU1oaWJHSmI3SXBDb296MTY4Y0lSaGhTaSsyakRCcEloUFFRMncwa3k1ZGRJQmxWWjFpWU90TjVEcEdkS3JrdGtuXC9FWnd3TGhxMGsyRU5NdnVmNVFHazZoSHhlK2JaQXo0QnFhS1F6V2V5VU9mWWpBQVNuc2lhMlY1SWpvaVFVWXdRVUZCTVRBelEwRTFNemRGUVVWRU9EZERNalJFUkRVek9UQTVRamd3UVRjNFFUa3lNMFV6T0RJelJEWTRSRUZEUXprMFFqbEdSamd6TURWRVF5SjlMQzVWNFplTmM3WjlIc2NFcGxiYUFya0QweUp5azJwdkdIOGRUNUxzdk9cL0prRG9OUzdDQ0VYU3BDbXFTTGxzWWNBZm9SdEJZZGk2TzN6NXRQaGQzTmttWEpHM0xKWFc4UWh2RVZvK2ZhSkw4U0hiS2lcL0dNZGNGMVBnNWtSYmJ1Z2x4eWg3WTAwdlhWVFlIRXVLTlhCRmVwcyt1MWJ6ejZNcUVkSklhVTJMS1hXQnMzZHRGXC9MdmNzTFFXWTdxNmkxRWptZllnMnY3dmZISHR4QlBJZHVUS1lzNG1hXC9DSE5SMitGekQrOVY2a1FoeEZaTzBQbURFZGltOTFCXC8wUjhRTm1ubDlZc0JjS2U3YlBON3A5VkxNKzRkOW50eDVDY1JRNVhnSkdLUUpvUndcL3p1ekRmV0h4amZGbkgzTk45XC9QNnRyVFJza3ZlakxZeTNFMFNqMzMybzMzT3JsOXBqN2lORklGWTFUVjVtaTRBc2h2TkM2NDR0eFpaZHFzUzBWeHlaWUIyVHdxN21JbEZjTnRTSnMxNFg5ejA3ZExuUUJmRmlsenIxZXNkQlQzbnhhd3B1SythUE9ZV2w4b3BGcXBpWGxLTEtEUW1JQkJ3eEZSUGJrZXBwNkZEMWdwbndYMGtUVkR1cDd5WFdtYk5OendpbEpGTFE5OFd1bTFnb1BOdmFQT1BNUHBmSkxCOTdqSU96NUFRNGZob3ZzXC9KM3kxNWJtQ2dlNkc3YWtsT3RGSXhjcWZJT3NLU3M3bHNWdGpWejNYakpLbXhRaW05ZzJKMHVqRFVXRjBuMytMKzhveXRKdVJpV2ZoUjBKVXh2R281eEQxXC9ydUhaU2kwb1RuakM0ejB3TDdqK0JiS1pIa3YwRFo3Qml1OTF1ZEdxNXVGanlGTlhRXC9YM1NuU216NDlJK2hvM3oyWEFFUmpjT29mWmpWaTJUSkp3cm4wdEZaOGhrUkhmdW13QjF2RFYwVkVCeG84K3pncTRDNVozU0o3aEVcL1R1cnNoWlFKUkxrRzQrdTFTRnQ5WEJXQ0ptcGJWU2V3dWZjcERrMHVlZUhHenNxVzFzclN1TkVMOTlTcFBFanVlZDRlMDVFb3MwY09KOEFlRW5jQXJpTVhGdUtadzdkd0t3T1wvVWRUakpKVkhObkZSVWg5cTAyWlRXQ0F6d1BcL3FEeGdtWVBIdFUweHgyaEVLTjVUUlBCVGhMWWhUTlA3TGlBbUtkZWhMXC9aREhBYWpIWU82TGJjeXJ5MHlCQStwNUhLcGtMTVdrWVNCSWZXYmlubUxoRnNwdDVZUU1EcEF0bzkzNnREQ1NVM1hBS0c1c1RjK2xkZlEyaEZSd1FoOUZNQk1Pd2lmelgwUGVUT0V3STFURUxHQUl5SllVSkp3WXdOYU0xZ2w3ZTkySnBqd1pYaWMxQUtrQzdkMldrUVQ4RVwvbVwvdUNxVHhZQ1dFV25HalY4em5aZEh3N0JZNUMyZFBXaVNFcm1NUUFyOStDcWFvd1dGZVdKUERrYVNnSUN6ekc1MXp2S2dwN2t0XC9aTVU5NWlPTGFXM2gzRHlRYytIRk9pMWl1OGt0bUQraVZEbGViXC9INGlJdHZkS3RFWmVDWVNUc3VMdnhjVFhscjAwbDJCNlhsZXlNQUNJSHd2NDB0U1lDcWRBMFBRaTdObVJFRkwwUjFkYnZBWTdiM2lNRVJtbGhVMUVZY25wRDZtd2lXXC8rcE1EMEliUkhqd0hrazNFUWt2TzZoT1J5XC9cL3dKQjNUUXJRekg3UXF4K2dmM2hoY2Y5WGdPWExjQkJRaVExa3FZbk5EXC90bTlaMHZYeVhDWG1CY0t5dGp0WjJNRTFzZUpzcndNSDhibzZTK1FHMWJOc0wrbEpiemVuZzhDYitoZXdIRDBYTFo4eElKNWJQQ2pRNmxJSXB5Ym9iaTBucHBoUVwvVGlGV1hBUkVsSGp6WDFuNXAydXl3Y1YyRUtBK3JReVg2RjVOd25mSXJ6VGRjc0dzTXFiV29Zam9aODZhaytLeW9tMjJsUGlidWJwckhJK2MwNk9kVzUxcmVzeEgydngyUGMxYVN2YjB3S09KMXo0RmY5WGRTQXVTdVdid1dSNHlwTitFTEZxVWJxSldPVUU3MUdJWkR1VzRBNTVJOXRBOXRwU2dGRDdZUlVTVzIybUZLakkyVUIySWN3NU9xMmtXalNcL2h0REZCc1YwQ3lkUDdjRzVEWVhkMnpVQStINXNTSjVXWTNZVk5rYWtqUHo1c2liNk1SWDN2azZvUEh3UWRMWXpES05sbis3RFpvUXM4NHdyUkNEaDh2ck41QWE3cmZCTm5ONTN4YkJWaUJ0dVl4YUg2NkZpRTErN3U3T2hGRmtEZW5zUCtieldOajJGNjdOQ0FLcjE4cVRPYm1SK1JLZ040bG1iK0ZITDhic3YxRDJxWkJOejhnZkVxTGxVQitWOU9aQVwvK2Q5Ujg3SXFQRmdab0J3aGREbUJhS21jSXdcLzU4VjVEUEhVTEMwWFA1djRLbzkzRUpoODd3MkNxQW5xdDZyNGJGU3FzTTNEcjhXSEtEWXA5TldCWWpJVHNUQzNRWTJ5emlZNVZOa3RDRUlVdGZSNm4zd2pGck1IclQzN3BKYm1nbTJBQ0oyYkE3MUY1OGZTMVVPZ3ZFeXFQT29zSFJheGdTeFNkZUNhME1UWjJBR0wra3lZNThjb2I0SnEzemNFWGg3YTIwVXhoTXVUa2czdGpTNnNTaThSeFV6OG5CNkt0VVwvdmlGTjRaeVNFN3ZVWTBWb2I0XC9mNEFxWCt6K1wvbTl1M012ZlRSYmlzTVhyYVNNYjRXR3dkSVJTeE5yS3VRckZCZ1wvc0RkMGNwY2ZFb0dwXC9ybGVTS3IwRXM4M1JzZXl6ayt0N3RiT0dEYk9kN0JyRUJ0RVdYa3llalNGTkw2eUNyYnVCSGRoS0U0MzlzVnZcL2RFbHowTEd3NUJSNGNIQ0pNemxkckhtc1Q2MDF4VXI5M1ExR3ZnWkM1enJCWkNIMDFaQWZSb2pOZEkxYTg4dnZDcXRQc3BNNXFpMEhcL2Q1czQ2N0s5dFdzZ1oxMFZtRVV1aUdCU1wvenR4eGQ4YUhSM3RGSzUwUHByVXU2aUpFXC8wYVFcLzRueGgxTitsRzE1MVBqYkJ3OXV5M0JTSTh6dE45UHpEMmRBcVRQZ0dsRmVWOTRuTklBc2ZYeHlaek5kd0U3c2xxem9CcE1SQXFLdnhiWU5TeXdqSWFKaWRsckpXOGZoK3M2cUZ1U3BUYThOeTZ2eUZXQXl2WE1WOXVGbW1hcjBxQlU2OG82cXRoaFwvREhld2NhRUhzZFFmOHkwa29NcVF6RDBvK0o0a0RMTlNvU0NNQWcwdDBOdzVBRFlOcWdLUWR2eU90dDhFVkJrMHN6dXRzXC9tQnFRVlVYc25KS2h2VUNhQXlwMEhYUlZsSjlpNzNJYzdjVUZCb1hFdFR4OTRLUjA4SHhtVGIyTUUzcUJyS2tWb3RnS0k4WmlmN2dcLzlyRE9ubmtmeWQ4b21mY1hGYlVwTFdVUktHUE55RTZvbERmeE0wQnhKYzJLd3BvVFFudzFQRTA2VE9BVzg1aVpQVFdOK21yR2p6OU1BalwvUnZ1MktwNFVvOHJIWWRvd0l2Nmh5aGIrSGlFcFd6aXIzMk0wUTBVV0pGdlk0ZEpJMXJFSHZBSUVjQk01R3VwQ2ZVTk9zaEFRYUVOUDBabEtNWkNUbkh6d2J2b1ZBd3BRaWM3S0hTNE41RGpqeG54eWNCM01PTTFSbGZQeElkU0hZZHZ1R3hSWXBIdHhNektnbXVpODdLMzE5R0RDMlZhMmZmVVhYTjJVNEJhU255WXdNd2Nnd1gxdHVhUXdSdGVzU3lETkpwSTV5NStCVHJvc0E2NW9EOGliM2hhZGduaGp0RmM5WVZaUnJiUEYxbkw5RnJiR0hnM05HdTVFcStOM3NZXC9MS3JPVGlhY0FTTVwvTURoaFRyaThDUTExeE5XZjF0cUNUS2VYdVJOY013ZEI4XC9HT1UwMlpScDlKQ2ZaeUVJV0YrK0I4emY4UGdsMUcxQzl1cXFZZllIcTlGZSt2dW4rUTFNdXVyRWJ2dzRtWVdPaVRcL0pYbW1PMFRiSG1aVk5oMlFjQ2VUVUxYcnBBRTR1a0d6ZzB4MGxicTFpZWNablVyOTJzTnB2NzhDOVUrdGVsVlwvYVwvVEJmSHBJbnhjaXhlaFVFUkFkbzJaZjBBXC90NHNEbkY5K2xGYzJGdUFjZk4zYjhKUVplTW9mZlVydWdGQ0tBWDZNQTN4bGRzdUFKdTZXSnhwRWZkbVU4cVJsWnFSRVhzS0pDeUlwVDE3MjJGQVl2NFU1Q1ZSR2RVVHlTOHhCOGJtcktucWdsVFhrVmZaRmluKyt6Zk9QcW5KRjl1TlhyRWplbWdyXC9xVFYwRnJwWkRFcDI3VUZxaUN6YzVUcDR6TDNZYnJWd1BSbDU3a3E1QWV3ZnQ2UERETElDS2pscExwRHNQc09JdlRjVHZrYU5HVVhnSk9MdGw2Z0lLcnJCdWxLc202R0pEaGZqT1lyalNYTFg0MDN1SjVVWHZGNDdlRUNSZE9MM1c4M1wvKzFxVE5JSWZVbENWTm9SelJTVUJ1SWd3WjA4dFBmelRWNEhIamhyRXJaUFNLYzByNDN5SjJBWndZVm5wR3hxYTNGODQycVo2cXZseVJWYWxKMXp6WlFBV2JzWUZUWUtEYjhqa0hKc3cwQmFZNGlaYlNJUk9ERWdCTFRxMGZFbnVRTGIyc2VZd1FqamkzRkV5K25qRVNsM0RjN21reEx2eW55bWczQ0lIYk5DVDFwaWRuZmMxZDBRUjFKc0swN1lnQWVIRlh6NE9FQUZxZksxTm85UkFja09iaWNzV1owSitYaGxaS1VVUWh1aUNJNU9kbVwvWTQyNTgxYnYrY21abENlVUdwTkVhemV2SDI4a2k0YjJCYjhjbkl3MHZ6bVBheDkwZmdmdHVmTGdack5RbTNDXC9uVGtUN0pVWVRjR1lYOEhyZXdUXC8rSGhOaGtNYm5uWkcyZ3hEOFVVOWZCMDhteGJWRGh4NVMxdytmd1ZTMlMrWkRJcE5GTnlMMkNTQStPYmdtS25lMGltM0RuTFZUYmVXQWRKNUxcL1NpOFpGZmQ4NGlTczljOCtWSHVGRmo5TmV5UFFOYlVzMVF2aUx2UEt6dVZYQVlFSzZ0dEp2UDRQZ2tya3orYzBjTXlvWUpMeEUzazFBZkhDR3l2WkdjeTlXWXlySXBET1h2bW1MVlNLcnRQZG1cL3Q1ZFwvT2dFclwvamkwWFFWVmNOXC80bExzRERES3F4QXpOekw0NWRpSG1LMXRiRVVkWFwvZG8yb3RjZFlmbEJSUEJERU1OeG5PWExtUEc5Nmx1MTdUOXZFMllHbFMyMW1IbUhiWFhEc3VKSFNVQnE2QUtIdHVlaUc5d3NYbmZNVVk1S0dxWEZobUc1MXo0TG8rcUlkek1Rb1hUdW9acFwvczVoZzAxT2RBWWFOOFhRZ2NQUHVoK3hoZ0NaTjBRQVhiV1F3aW5uU3Fsa1dxakZNdGdsK1J0T0UzbTZUY0NCaHErVEpTY1ZkZ1JVb1pVVFBCWm5mQ1wvQmc4eWlrbFp5Z3A5N2Y1TGJTbGltR3BcL0ZBMWNEUTlwZklsam14Q2tRNlwvRmdLcmVvVllZc2FDV2JoWVNnaWZHTHdYY0JINGhyK2VXaHhzMFp1NHVDZnNNczNpUzA2MEw3OHhDQjg5UXRxdEtYTVA2THNPbkJISU0yd0dWSTVUdnpPbWxpZnQrbStVeFcyUG90QzFIdUQ3XC9jeEMrUzVQMlI1ZEl4NTBIZnNSWHhwSkNYVk5FQythNzdaXC9XUGorVlZWR2xkTlRncnhGVVNWVFp5bFlwR1VkOVFCdVE5ZFQ5WFFwVUpOMHZhK0l3ejA1Um1rTDZTbGE5a2trUFJ6RDR6Q1wvWDBmWHVKUW1QUkp0OGVUMFwvUlZtRHEzeWQ1cit1UHk3Ykt4ZnZuMnFYWnF3Y3VOUnREZXllUkpyM2VsVElOdnNyaHF2NVU0Wlo5K0ZxNWU1Wmc4SjNBZHlRbzZzcmVYVG1HS1dZQ3FGd1A1UGJSSENnYjExS0NLRnAyOUlETjhCenhCdHRCOUNmUzRueTZIY0NCQTBhV0MrcERaQ3M3NkZzTzBPNDVkUFp1bUhmRnRTbnNvNWRBRmxSckZIVlJxVVFvWnRGVlVlV3NuTWdGVmV3UkFXcitmcVZMMFQ4cmRsTTVMczlGWUw3ZDBTeTA4OTNNTW5nTGpXbXRMS0tHRk9TWWlmWGFvWHRcL2ZkOFVBQlpsTzlMVWVoMmxmZWJSK2xqdnZlaVZ0d0Vpa3NyTzlCOUFuXC9BVjZSUThjT0hWMGJJcXNKTERiUkczZDdDa0c2SDBrcUlFajlFd0VrMUlwcUhOdVpRclJKSUN1RTJJNExKd0xUM1RKYTJPckhmM0xPclZHZFwvQm02WGtkMksxb0tocFlUQmFjS3VNVFdzTjh1SzZ0Z3NQQ0xrNHhMVFFZSzQxNW1jK2t4VGVCR3JxdXJGWTRlSUVrYU1HN25ZQjl5d1BYcHIwMHFwd3M2c1RUcDVZY3NpeTFHNEFLUExuemxmUVlpaTJQMU9ZUU9BUENGNCtzcHViVUtUZEFvbzk5M0FmQldsM3ZYSmRKYTBrN3QrcUpTcmsrUHdCVU9WcUUzWHNUQlByOFY5cndRVXNYNEdaVGo4R0tHVlNLdmxJeU9rakNTWnhUUFZWRTVSZUtFdDZENzlFWml4ZXBBcjU0T3d4bFFJK3BBZGwwejAzdmtidWpmT1JcL2d4aGpHZmxDU3ltUkpjWUFRVTF3U2lRRWJxdmlVZGxCNGN3QUd0V2RUSW5Xb2EwdGRVdmcwaXVvTmpMUGJ4Z0JKWjF6RElkRG5iZkx6ZGpDeWZJb3I3bzlnb0tMOEh1RXY1TmpTZFZxTXdwUGZUbUFscEtQb1l4cEJpbUl6TGNzYmJ5a2RQRmVxVm9EeXBMcDl6d0NlZVlXWUluaTkreDhHaTFUXC9tcFpGSFZqWnZjNWJNZHNNWXZ4dkJad2orYzJaSW9iem9hUk9IS1wvR0FoRjFnY1VYSUxEcVJ1dnpGREFnWEd0R0M2SWFhUVdjT1lcL0lSdnZiamZUdlVzNzlrdmhFTEZuZ0lZc0JQcnh6SDRCdzd3XC9GXC80enNtVVRLb0Q5ZGlrc21tRUR4UnMwdmFkSUtSXC9cL0dHbTJHMWhSMDhHdnNTZklJbTBOR1lkK3M1QmxqQlcwcFFUbmwrV1A0T0JUU284SllpQStGdGx1bFFTRjZKbzlHaUQ3SGZlMlwvNmVOQXVcL1wvOU00RHROT1wvckc0RzFqejdHWW9sKzdVRGtveEFvcExXTG9SSkFcL0w1M2VKajRXRnR3QkNFZmFLVmY2ZTExdVVNNk1MTlo1bk5xMmZUQzB0NGRMT0JXZWFMMU1UNWFuSFM1WmN0S21BOEJyZFwvZ0d4bHJETHE1SlBQUG15SVBcL0lpWnJlZW1XMGVzZllSXC9xOUhROWR3NU5BNm13WXpqVkhWWmoyTm1SS3VPRVlyZXdmMGhQeVVHTjhXc0NDWDFBMDV5ZjhJcW16YzAxVEtmYVQ1citRMEM1aldOaERxMGVSY2h6cFhaNWc0Mmk2RmlEUlg5cFpjM24rb2ZZaEUwanVHWmtuQ0FWOVVrXC9GRWdFXC8rMnJ1MFV0VVh0WUFPSUNISUYzNzVKang1OFFcL205VUN6c3RodUthOXBva2tucEgrTlNcLzhcL1B1WGFEc3NkdXA4dEUrUGZSclZQSUoxTUVaOXRXNllNaVFzRkhneU9xTXFqRG0reW42aFRcL25WTlwvZVltcTNnTGJ3b3RCV25Ia0pPUThRVXVjKzBpMWJXaUxtaURUcUw1dFQrN1MrWVJXelFIMno0cFRyTnRISEYxUk1cL05QVTJlTDhyUnpiWWpCT2ttWmt4RkplTFN5VkpYQnZ0TGUzWkdIbWZqWFRUWGJBbFJ5QlhKSmVrTTUwdlBhaWpcL2pGdFFjcGF4bDNQdzRWNmNHTUJBdEJVTExld0FoZk9IQm5yRmt4cHV6R09uUzA3SVhQd0lXZFp4R1JpQmN6UDJqTzlpNitXdEV1cHBNWHl1dmNyZW5Wd0l0bFhrUTRjVmRPVXg2ZTdMckZVQTdDNVdlcW9cL0VveEZrYVVGaEJYR0JcL2VlYjlrbFVsVmcwK091ZXNXZkk4K0hESXdrR2NjakFNYkNKRmRZWW5kKzlKUlNpalZLRFE1WXdNZDdCT3A4VnFud0lQUUkwYzhOREEzNVlLV1V6V2RZd2RTRDc2akJCWDJYQUMyckM5Mjc4eDBzZmdSZkpEd1ppVkVTTm84WTFvbjZ2Y1FWSFdud01INXBrUHZsMEZ6REZuc014NVV5QjVIYjlVN3BFK01aUHhsVVFWbXlOeUJSaWVxU0F4UmtrY09BWWZRcW5TQXJcL2VUc0JRU3NXSkVmY2R5WUZFM0gwVG1SNUdRWjNyU3NaVVpMQXgrKzlNSXFkbDB4c2xycGFPSDJEK3pXYUlsdnhhRUVabFZYM1Vkd1ZNU2ZlM05ObllcLzhLSzVjQlBLZWJRMVNQaWJCc0JoelwvaG9CVlc0SUowZFZFNjRWTk56RjRjRHlNa2xvRWFKQXRjT0dIU3JkTStNeGdXcGo3Tkp3R1wvSDN5VER6K0txNnIyUVNzdXVEaUVpRzVMcWRjWGV6M0h2ZDdBQjdnUWRQYTVtVlZuRUlPSyswTEdaOHh4YVBEeTBhNUQ3bXJRN0hcL3pzdDBZeEpBOUltcmZRZ012VnBYSGxVZnlDVENDSW1cL1RGVzFoOWF5M3Q4Y1ZmdFh1SXN3QUozaUlScUg4WmcrSDVPSitiXC9yQXhvWnN1VFRtb3V4eHIzSmVUTld4cncxRVwvXC9JZHNKNUZXUFl5TVd0Tit3Q3U4Y3hkQk1RQ1dsWjEzNGd4U2dCQTBUSHphUW1TeW9VNE5DZDUweXdERTRGNTU4RytwaVUyRERBSWJpQzlXWHgzd1REcnlneUdrK2dcL2tDNEtiR05tWDM2RE53WlFFT01hSnZDTllad2pVY2srNkxKUm81b2N2cFQ0ckloVEtmV1dHQ2hIeGNIMkFoVnYrbG1GT2J3cE54YTVSdTZLTE5nRjNJZ01BUTV6ZjJ5Uks1Uys1VCtMUHh5dmdwXC9rMDFFR0swOWJxWWRUOWJxRlBsRGQzNjcwNGdJRnRqSzY0WWVrOGh5MWNnNnNXOWttQ0xZOU1QN0RkeUhZbytJaG1GNFRSRW92ZHhzcTUwNDN3TFZNWWJidTVVZ3NlXC9oUTV4M2w3SURucERKeWFINXUxU3c0TW9zUWFMK0FRanVuTnFXUDB0UXRzblV5MllXVG1lV2FDQ000QVRaRmpBRHlpU2N3eVcxcWg1NTJTYklSV2RGY3BqcUNGdmhxVkhzY2lwUVNDRXE1R3lJRkdBcDI0ZnI5NWY1cDFDRWRmQ0pCKzU1ek5KR0xoTGJ2OThKMVJrUDluVkZ5K0pTM2tpXC9YY3JvN3dnUVZqWGNpak5tYlZZM3JjY25meDEwc0NzUE9IZnhrUHNVemEwK1lVUlIzZjlKWFVXaWE5b2JkQTlLR01yNXU5Y0JxWHpRbWUrZGNVQXBOT1EydkdMb1RhZ253K0tKY05reG5tRXFtTVFLaURSRHFtNXVcL2h5bjhZMURYUlpEd0pXOW96XC9xSVNPekthRUtIaTJ0TU1jYk13RklITHU2TjRvVDY0TUIwYm9BK1BqMll6YkNDQ1g1bEZkYUdpUjBwYlRFNmxlQ2g4XC85THFmVU5nUGJDbmhvZkNmUE5yZ1JLQnR5aVBiXC80TTdzbDU5V050QW1peFVyejZ1MjNTM0xiRUJmejhNN1M0VlMzVUNyZjRHSHR2MGNzN1RHWkVpQ1dQcFRcL1RVa1k4SjJ3YTRET3A1Ymt4Z0kweFNqRG1OUXY1a2h5M3ltOTk5QlFDTytlQWNSXC82QUxqVzFITStcL21ONmhtbDlLbDFFVDc0ZjBSa0ZtOFdTMXQxK3lPUVJXTjNsOVNMaStRaTErUmdCTWVienY0MzdFUkplQnRpNm5YbnVYNVB5UHdRdW0xamQxR2pkRFBRZXZzcEVcL2pFRDFEUlo2c285VllVUVhRVlBoMHhSMmhJODNOd20zaGFRVzBmKzJPYVZXUWFDRFhRU2hxM3JGXC9zSWt4MGx0T3poQkRmQnJQVGxvbTJmZWV2SWpxOU4zc0FUY2lQSnI3aWpIUlBIeEh6WDdtK3dcLzVkdWRyOVJcL1MzQldLRUMrY1B4T0FsV21LVHI3d1lZSmp3bTR2TVFcL1RkOWorMmdvdHYwTzZWUkQ3RjN6QUFuU01PNmV0NkFCXC8xcldsYmpxY0tCU3hoS0FEc1VGODlDVDZsUVptTnhLRFlGb3pxMmQzczdTK2l0b29mSlN3N2QrMEVTWjUwcXowMlZwWjYxTnNrb2NETjNFZzZcL3k3XC9wK0E5SFRrVEtsN1BtNWJ6M3pJNjZhemhqa1ZOcWlUYjBhKzNrbUt4XC9SK01KRE45WFR2T283SnNtdHU2SExqamx6N1JJbmdFalVaVzhhRE14ajBsU09mNGcxSUFTV05cL0ZRYjVcL2lvSEpyTm9QVk9WTTNrRXpkYmhzbVNvSTI4OW1wUUhDMTQzMVwvakZ4dEpzSENxZVhFWlVHZnliNjJYOE8xVDBPTktjZTVoMEVCR0ZZd3dXM05MZHRNdDE0a3czZU1nMFhCMnJyVis5Q1NwQURqVDBGbXlSanBBdzN0dndZT2xQbk1RNGNEeUJlUXRRQ3h5bnhiaDBkVFBYSWJIc3lDRE15MVdXeXJjMXA5TW9zQ1NWVDJqVStMb1hPcVFuRjhTRVRGOU5rbTl4a3lPYW5UeStDRXZPakhDZlZIVjhuTlwvZnorOW1wSVZMVUVhOFhURmN4SnNROFpCWWI3OUNCNzU2SG1DSENlODhHVzZTbHpCeDJXTzR2ZGJrVERKbUhsYzRqMjZxOWEwU0hOcUNUZnJWVzFlSzR6cjUrNDR1THNoSWNXZWJRMkxlK2xnSmk2RjFuSlIrT3JJell3VWxXV2M4aW8wYVVTK3FBS0dyVmZEcFRzQ1JZZURudnFsME1VemVWdTVMc1pZdDI5SGdpNGc2RDZkZzRSbUEyNThBUkJzRGxTU1RTRUZzQml2SmMwYnRPR3dKRGhYQzNTUGhtK3pyVVN5REJpeTNHZWs2bE5RVmo0WUI0UlFFZGtpUTFrQlQ2NXdPSngrcExnR0VKd3BxTlNtZzZzVnpLWDFMcmFaSlBkYUlRVFwvVkd1dm5USUxFaDE0cmdka1VlRkdHcTZiYTcwMXRKeTVcLzU1N2dYU2lHTXJNeEhIV1VWNllwSXo2RUQ2SjVRa05McERGRHBQQTRpODJ2ZjN1OTVZRW5ZMFBJOXdFTUhJMEFVUVpYOUpNTXdhQnBsalZFc3pvRVZWakZoYW50MHNGU3Vxd1JMXC9BUVRBNFRQODZsck5KcUNyaHVkd1pydUhEWVZRZlwvM2VJcFYyYVVISThIclR3eG5MSUNFaFZJWEdoaEJHSlVkWVVyUll6UjBMeWFwblYxb0o3aGFqWDN2SVdcL3FmSnNYakdYY0M1MkVINlBPSjdBM3NuR1ZVWllLbFlMaEcwcFdUcXo3UkJzRk41XC94N1hibDlaMHlSNmpRbHhzNGptc1dJSHpzYVRZQkNid3hYZ3h1N09CNXlQUkhZXC84TXFzT01mSGRKOVdyQ016QnJvQnFZaXVqOWRvazBYcjJFU3FPdjQwNlF0V2NzYTd5RFlLU3RrZmdqQkZPamMyNkpVcDFcL0lVY0thNm5xMndSRERjTnpFU09GVUptTTlTZ3Q2aE9pTGY2SThXeElFNDJsZk5ybG90R3ZVYXkxbGNFTitRRjM5V2FFNXg1ZEt6NGhZNklKYkRodDdxZ2tVa1VYcmk2WWNrd1FLdkNmTG1OOEZRR0hYYzFYNUdjcVZpSU9vWFwvTlV1UWt0TkVJdkdwQ0l5XC9CZ2NOcER0aTJuMGhEVnIrdW1IczViazd2ZFViRkVURlBYeXcyQXU1SkZ0TXA4aFlkZWZnanRDQ3N4OXF4b2FKcEMrTHo2Z2pWTGszZGR3aHFEOGhsT2tJeXFrMFhiaWFSM0tnRzhnazI0R25QNmU4Sm1rc2ZRY3ZWWDdLYllmaVErTmtNTGI3SllZQm9ubWR4TWphaXl1YnFHN215TklDTWY1ZUVCY0RVNnphR1VITmw4UVlaNW93OTVNc2REaHpIaTFOdFJ4REluQnpmVnVubkpHQ0JcL3d2ZWRiSTFqT1AyUlZZN1NjYm9GWTFJVTBqS0RQMGZvWUd3K015RHZVa3dMNTVhZ1EzeDVsV2lHVVFpUUgzSTNwZUZ0bENXUVFBVG5xNTQ1MWhsdVBJU2xkQUwzd2RvdGdJVkhNbDFoRkIzaEhcL28yMkRPSExnTjNXVnpyT0lMTmdETEFhS0wxWkpHREFiYXFXRk56Vis3RFNuVlB5Yys1OUcxdkl1RlMwMUVCc2M3NW9NY1huWFhUOW11WGFXNXVBTXhrMEFpVWZ0WG01bkVqdEJTRHhidGNoMlJ3aFA2ZVh5cXNTU09jN3UxVjYwRURieVd2R0srNE1URDlsNVlQVmRKXC9ldHk1ZnkwVFwveGZYTFFpV2hKOXhmMjBGTTZzRDVRRUNaRGlRN1NhaXdBUXU1OGUyQnN3UDMrM2hrazdBbk1ORExRUVpxMzNqRGdhK0pRdEtydkJkOGpkK1diVERQaEpEU0dvREE5aFdVQnFIYUZFUkhPbkl4R1wvd2tFSCsrOXJuMHhPZ3pvTzRvRW84V1dleTdFMnhDUHF3em01U0tqNWdSMUxYMldJQlpwQXdBM3VXUFVZZURYOVR2ak5OWXY5Um05Tnc4VFZITWxZN2tjdWhTbDArSytBNWIxam1LbUdJT1RpdzJ3VFdiVlcrcmhWK2x3cnhhMnZvK0ZnNlVIaXFhNkp5aFlqak1hZjhGU0tQMFlZREJ1ekZIV1dYMndNWjgwelV0ZTk0RmtlRFJVZmgwNGRaaHY3OG1QTW1vSGw5Wm5hWVFueDBLeldKa2g2OTRKZytRVjlkQ1RNUEtFcVwvMHladjB4TE8zWEJWNTJjVG5CczF2WWJLbTdjVGlsTXY1N0VETzRFOGlpMHZreWNxd0t3ejNXZEpreHUyQnpcL1RuOVNwOUtHTDdSbk5yT2ZsTkw3NnM2dElaazV4MnBmYXVjZmdwamJIN2Rkcng4MjhtSzlIdkZtWlwvYVNQTFBObGl6eHJwd2lMbE1Lc0w5M2IyUHl1anhIMzlNeGg4NzlNb24rWkZQTDl3aVI1bEFmXC9ZXC95UWxzVHF4KzRjMG1iazZSRmI5eERBcUV2Z2lqNndpQUw4WFlVVzZoMk9Zc1U1eEZxWktZYzU4R0lLVVdpc2pLK3R1MTFxSGlVRndOYWdBRWR2R2tHRThHQmpKeGtYRnpLNnljcGVMZm02YjBHZ3k4RUM2VnkyUWFKdktSQit6WldcL0RwdUl4RDdLbGtFVXJlM1FXZ3UzSFdmVHFPVXdVbmxIeWV4MHNudGhRSDZjZ3N5ejdXZXZZUFVZdnprd21nRlhCcDVjVTk3MzBBdDJcL1IxYmtqMWx2WmVObFFWejVoNVFsNXRucVVPZExpdENrRWQ2dDByK3ZuK0FqVnFNQmdvMnJMNU1KdnVEVXRkXC9mK0IrT3NxU2Q3ckVlRWxpK29VVTVpd2pHb1Q3R3dTWUYwSTZmWmhhZVdBWXlGYUdmakdSeHhZeVB0aEV2eUdka2RQcHVUclk3Vk5BSlVaK0lVdDlLbnVBSzNUeHhGdjNaRmpSc0tZTThnd2tEZXk1SkhPY0pDRGY4TUlpU3dmaHhRR2tYTVlmXC9XU25qUXBqOHdudzlBMk9YQlwvOTBud3pTMFBHVUlNbE02Mmo0UXV0UW8zTlFUeXJsOWltaG5aeVBOakpcLys3T0ltNU1vcmFUMzROdGNRbGh3UHpzZXVPTU1kWWtKVDhSbExxUUg1Vkh4aUtDZHl2aXJqb1lScmtodW9mUUduNmRQaERjTkt6Q1c1aHdtUmtCc3IyZ3lFdWxQN1VhTVVmMnNueTFWYlwvT3RCNTdBWUJrZnpGcm91RGc4MlZFaDByQ0orTjNOZTRnZmViR1FFa2FQTk5UMDdQK2VybkVVXC9QcUNFMmpLTFk5cEpmTyt4WmIrWElDVlFONVB4aXFzM1d1V1N0N1J4U1RHbU56QXZ4K3pYdTNXK3pwd3Nqc0hVMktTM2ZtOTdjR09oNDlNSmhoWGFQc0t2YnNXbE9hMXRqamwyUk5WQXU5Zm1EK29MQkhHV09GSHZqMFNmZW9Ud3UwV0F5NTlFd0l6Q1c2b2lSRTFwK0kxQkhyaFZvS09ZTmh2YkNDVXNmVEM0bkloODJkYjkraERTZnU3akF1NFpsQ2RkNkszdWNDUGdnd04yaEFNTitXMjFHSEVnZGNlOEtENDk1dTJRRkNaWVlcL1VnaHdmeXgyc0RQK0ZpTDB1ck52YW9EeWwydEVJMHUxdFlYdURnSkxxNGs1bmE1MTBqXC9hQXVvWHZ3c2dhaTBuWmI1aWRrWU5mM2V0WnE1K3gxdFwvelQxVXJKcFNNTDZ1QUNlamI1a1ZqeVk2TUx5ZWlwTHNtQkZPT0NGNWxQVEJKWk8xR1ZYQk5vbE1cL2Y0eHZjNTM5MHd3TDQwNUZkN1BzSjhCWllWNkZqVUFcL0F4Y3NxUk03YVJFWWNlb1lMZHd6QTlrUnFQU1pcL2pYZ0dDdWJUTDMwSFk5bEJ0R1IzSmxrKzErTmp5Rk56VGREUzlGK1BcL3lSMStNV1hDUkRaKzVtSEpSdE1EUXVYZHRCS2dZYjJ1VVhjeG9uV2NZeEpFcDQxU0JmWUFpNitDVU5YV0l6WERVaTdydDlJVGVncW5mbVRJcFBHRU1jVjhTMlZcL3lzaW5xSk5hRlE4ejgzR1wvVlFnRElabGlkcmV1QWVGdnZyXC9nTDFyRXNaTWRXY1FwR2FcL2ZFOWpZS2ZFcGJQT3lwcFlHUUVBa1NRNXJORml0NHhFRkNyOGxiUFBJbVhnV1BzMXRxVUtGaDJ6NGFSdUpuWWt2UFJ0OTBQSlRzdW5PcjhaOVlKSmhUM1A0dWlzN3g0blF6NmxkM2pYWlpTdUM1U1pVZnExaWROaG5kd3ZKaktzbzZlV21USmN5cjdPZGFKT3dpaXR0VzBmVzFraE16UWFVVGxTOVpsXC9PcUs2anJlR0hXNW9RQWdDUWZEMTV6VXJuTkJ0YlQ0bU0ycEhieEdSaDBJRmpaNlZZSkJFazNkd21xRGtiVjUyMnhwSFZFcGpydGdKXC9JT0V2VVlZMHA0Y0NRNEhFWVNHR3JvbGpDQWppakJORUd1UTdHXC9PSm1NaUlVQ3FmUVR6cUpTRkFnc2oxXC81M3duSGNzV2xBbmtrVEtaUXNXR2pvR29hWk4yV2JkSDlPQ0pOaFlWY2oyNys3UnNRZGNLeUNWTnQ4K1lHejVVbGNiOVpPc0RUSUEzczZmXC9vVDZPTWpKazNtUjh5YVZ5aW8rY1ZhXC9DbVwvdStHYnYxQnFzV3RYelR1d1FSQ0xrUVlHa2Q5SGo2aXdEZVZlQXd3a203WU9ESVZpcWkrV25CUlNSK21qeVdvWHVVdG5yNUdpYlwveFFLUG1yOCt6bTREY2pvWW5hRkVLSXQ5amRJUnpzdnVxaldjNTE0SHV4NGpoOFhaNm0xQmprZUNKV1IzWDZYRFhuVmFrVklFQ3dBREFhd09Rb0JwT1N0MFc4NnJCa2ZCOG9jNnBKZCtDZ0R0QitDdDQ1ajFNRG16ZTFYcG5hUjhIK3hxU2VDRWpyQzRDdlhGcGJwUmRYK05aUEJmZ0tJQW5Ibm40UGNCMGx3cXZyM1NkR21xZ0Z0YzRyMU1INXl1amVJY2JOdFlrVHNUWnpsVWpxQ0ZYMjJldHRJTTg2TjJESUtDVEU2UmFxNVRtVTliMVN0Zm10dnNhb0pwUUtubTlLbVk1UGw5cGhRK0JGOVZFdHFzcXpvNEdsUXVBY01PRzhpTXVneVc0Q0hhcGFhNWhVSERHNWdndnRBbnhJNEJibnpXT0F6NnE5d3hBb1VIQ0RFRWV6OW54WHFLbGNBbjNkMXRjT21VXC9mSGpKOHUrTk9aeE5BS24zeThnRTVERTVMUGNZYkkxUENGK3ZXaTV1WXdyakNRMlFJRUFHeDRSdHBBdCtQRys2RG4rckxmdlluS2tSbmMrOFJDSmErSTkyKzFhY25KWGJVYkpzTWZrbXA0TmxGWlwvclFlSlNONEJoU2xac0pGWDR2S1Y4M1dYRnQxOERQVThDTWpiV3BXR2dlNHNjaVlJRUpFS2xiZXloenRHUFdmNVlzaTBmRVlEUVY4RlRRU1JSUlBubVgrTHFhdEM2Ukd5cEhUVmJ1ZnRFTzFNbHZMVVQyZjlmYTlzV1BwdlJhdXRxZ0lQelByTDJIa0dNQ05hV1BlaUlic3R4eHZGa2NzRDFrMW5yb0FZUnYrRGZ5dTRyM3A1ZzZpU01CeUNYXC9FMnRmTUhYTEdQa0pLMVNyaGxUWnBWSVpiWDQ0MllyUEgrQUgra0tnTFhnS252K0wyc2dabzBZQUNKcDIxVGx4blwvMSt2aXlzRFJidE5OUE9kenp3OGZJWlQ2Z0VhQ3V5a0Z4bFZaNCtnNWtTdzZzak03U2F5bjlodXJaQzJqK1hYNnV5amttd3BFcE1MYzhkMG90XC9QWmNITVVVT2Jpa21HY2t1bnpBcnYyXC9XbUNta29cL1hUTlEwYWV5ZCttdE9FbWF3RlA1T1dadUFKQXNhWnBJaE5OSmE2NEU1dFY3UkNxZUlaOVwvTVYreWxHa01wd2dSQlJcL29EUHF1SUlUZWRFTWhmYnpzUHBPaEZjYlcyQUdJWXNJR2FrXC9PTmw5R1Uwa1FnY0x0eUJ2SWFwdTlNb0RCSnVSOFNHQjJHTWx1N0tEWGxwXC9DYmdQdDFGM1VZbVJNNElIbWZRbFwvTmMxeXdoRVN0cTlZSnpRQlwvallhOHRaNVlMVG1jNVJoZm83clhxT3VhN29NUnJhc3hwaDVtaFFjRytEMHU3bFVpelhwVnhJN3EzcWFjWFpxb29INjZXT3pKZWNhZFdcL3pvTDd5VWxFUUkyUWVRREllRG5nWGtaWFJzVjlqWFRXRnVpXC9FU2MzT3dDWEZaVkxBY08xSHo1TDdzVWJLc3NjaHJBWVc4KzI3UmxxbE90YkpWUnVQa0ZqSnRJTjlaVStLMWFUTGlDWXZoWmpQdmp2Sm8xd1p5TGg0NG43N2EzRXNzeVJSZnpPNDVvS25xaG9QaHFcL0NpRkk2amgra1R2dHExRVwveEZ3ek5scUhZcXhnZzU5XC9URE5hSk5QbVFvUyt4VnVRdCtXWUV6c3NRXC9IUEJHdnJGTEZzRVV5XC9Id1Z1MHVkaVkxdm5zOXJoS2l0c2NPR09rV2RLdjNtV0M2ZlRUVEtldkJNQVwvMXl2Nk1tVU9YbWdscmdHaUhObDM1T1h2M21zMUtGSUVkd3V4QTcrazU3V0RXVTVCKzNuajBpVk9kTGJTZ0JjPSJ9"
  },
  "payment_init_hash": "bf7dc1e0a41dc8422427035ddecb7abe" // from init-payment response
}

Next steps depend on whether the approval_action has value in auth-payment response.

If it does, it should be handled the same way it is handled when approval_action is received in init-payment response. Repeat the process until auth-payment response doesn't contain value for approval_action.

Handling 3D Secure redirect

If approval_action, once decoded, has type of redirect, the Component must handle the redirect. Implement the following:

RedirectComponent should be initialized. Swift example below:

private var redirectComponent: RedirectComponent?

private func initializeRedirectComponent() {
    if self.redirectComponent != nil { return }
    let style = RedirectComponentStyle(preferredBarTintColor: .white,
                                        preferredControlTintColor: .systemBlue,
                                        modalPresentationStyle: .overFullScreen)
        
    let redirectComponent = RedirectComponent(style: style)
    redirectComponent.delegate = self
    self.redirectComponent = redirectComponent
}

Handle the action using the handle() method. Swift example below:

private func handleRedirectAction(_ redirectAction: RedirectAction) {
    self.redirectComponent?.handle(redirectAction)
}

RedirectAction is an Adyen class and it should be initialized with url and paymentData. url and paymentData are contained in approval_action.

Swift example below:

private func getRedirectAction(_ action: ApprovalAction) -> RedirectAction? {
    guard let url = action.url else { return nil }
    guard let paymentData = action.paymentData else { return nil }
    guard let urlObject = URL(string: url) else { return nil }
    if action.type == .redirect {
        return RedirectAction(url: urlObject, paymentData: paymentData)
    }
    return nil
}

ApprovalAction in this example is a Swift object created from decoded approval_action.

You must inform the AdyenActionComponent when the shopper returns to your app. To do this, implement the following in your UIApplicationDelegate:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool {
    RedirectComponent.applicationDidOpen(from: url)
    return true
}

After AdyenActionComponent completes the authentication, it invokes the didProvide() method from the ActionComponentDelegate. Received data should be handled the same way it was for threeDS2Fingerprint and threeDS2Challenge.

In case an error occurs on the app, the Component invokes the didFail() method from the ActionComponentDelegate. Dismiss the Component's view controller and display an error message.

Creating an order

As for the orders request, payment_init_hash, received in init-payment request, should be included in body of orders request, in payment_info object.

{
  "payment_info" : {
    "payment_init_hash" : "1ab8b0aa54e77e2809ffe39c95e7bce6"
  }
}