{"webLayers":[{"_id":"65c62fe971d1c564ce06435a","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"/second-detail","type":"contains"}],"exclude_pages":[{"url":"/es/","type":"contains"},{"url":"/pt/","type":"contains"}]},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"66195f332ce329fa579aa283","date_filter":{"enabled":true,"from_date":1713157200,"to_date":1713589200},"trigger":{"include_pages":[{"url":"/pe","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"664e950c8ad464b65775dd32","date_filter":{"enabled":true,"from_date":1717045200,"to_date":1717113540},"trigger":{"include_pages":[{"url":"/br/pt/minhas-viagens/second-detail","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"665dd320ec41d49dabc7932e","date_filter":{"enabled":true,"from_date":1717387200,"to_date":1717991999},"trigger":{"include_pages":[{"url":"cl/es/mis-viajes/second-detail","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"665ddb6efe8e003dc9436025","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(?:cl|ar|co|pe|au|nz|br|us|es|de|it|gb|fr|ec|uy|py)(?:\\/[a-z]{2}(?:-[a-z]{2})?)?(?:\\/)?(?:\\?.*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6660894c8a15976405baaf24","date_filter":{"enabled":true,"from_date":1717779600,"to_date":1718582340},"trigger":{"include_pages":[{"url":"br/pt/minhas-viagens/second-detail/","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6669de63d632513d8b03a315","date_filter":{"enabled":true,"from_date":1718341200,"to_date":1718859540},"trigger":{"include_pages":[{"url":"co/es/mis-viajes/second-detail","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6686b55313e0478890eeff7c","date_filter":{"enabled":true,"from_date":null,"to_date":1721001540},"trigger":{"include_pages":[{"url":"br/pt/minhas-viagens/second-detail/","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6691410d5c454e3ea0f33f9f","date_filter":{"enabled":true,"from_date":1721001540,"to_date":1721692740},"trigger":{"include_pages":[{"url":"br/pt/minhas-viagens/second-detail","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"669141af5c454e3ea0f33faf","date_filter":{"enabled":true,"from_date":1721019600,"to_date":1721365140},"trigger":{"include_pages":[{"url":"pe/es/mis-viajes/second-detail","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"674f24bb1751e990bbb2b636","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/cl\\/es(\\/)?(\\?.*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"67d5aca9763d8a8b7231137a","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"br/pt/minhas-viagens/second-detail","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"67dc0dcb75df0ee149e2507b","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www.latamairlines.com\\/(cl|br|pe|co|ec)\\/.*\\/(pagos|pagamentos)\\/(pasajeros|passageiros)"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"67f547bb9bb5c4ed7fed0f4a","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/br\\/pt\\/(minha-conta|sua-conta)"},{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|ec|co|pe|ar|br)\\/(es|pt)(\\/)?(paquetes|pacotes-viagens|(\\?.*))?\\/?(\\?.*)?$"},{"url":"widgetTest","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"desktop"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"683757da7fd9f837302c3529","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"https:\\/\\/www\\.latamairlines.com\\/[a-zA-Z]{2}\\/[a-zA-Z]{2}\\/(market|tienda|store|loja|geschaft|boutique|store)(\\?id=.{13})"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"683e36f7fdd2ecc156297756","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"https:\\/\\/www\\.latamairlines.com\\/[a-zA-Z]{2}\\/[a-zA-Z]{2}\\/(market|tienda|store|loja|geschaft|boutique|store)(\\?id=.{13})"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"686eaacbb6a821e8937f8444","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"xp-middle-seat-reg","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"68a3c5c30e93c25c4f36517f","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"https://www.latamairlines.com/ar/es/hoteles?img=true","type":"exact"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"68a5e75f64c28bec7c858aa6","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"/cl/es/ofertas/flash-sale-latam","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"68b08a2a5ddf8028cddb7948","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/[a-z]{2}\\/(pt|es)\\/ofertas\\/(promocoes-latam|ofertas-latam|cyber|black-friday)(\\?.*)?$"},{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/[a-z]{2}\\/[a-z]{2}\\/hot(?:eles|eis)\\/?(\\?.*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"68b0ee02db2bcb49f2086e86","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"https://www.latamairlines.com/ar/es/hoteles/hoteles-","type":"contains"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"692079f1c8c9a0f65cc1ff3f","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|pe|co|ec|ar)\\/es\\/pagos\\/pasajeros\\?orderId=[^\u0026]+$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"69207ab00ac72f118a9d4518","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/br\\/pt\\/pagamentos\\/passageiros\\?orderId=[^\u0026]+$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6931ad396d5e090f324d83b1","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|co|pe|ar|us|ec|es|uy|mx|py|au|gb|it|nz|de|fr|ca)\\/(es|pt|en)(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"mobile"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6939742eafcb3b69738971b0","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/(www\\.)?latamairlines\\.com\\/pe\\/es\\/legal\\/terminos-y-condiciones\\/general(?:\\?.*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"698f416762f0551b0224cf91","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/([a-z]{2})\\/([a-z]{2})\\/(flight-deals|ofertas|promocoes)\\/([a-z-]+)\\/?(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"69a5ec3f684eb6c840a15018","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https?:\\/\\/(?:[\\w.-]+\\.)*latamairlines\\.com\\/(ar|cl|co|pe|ec|py|uy)\\/es\\/mis-viajes\\/second-detail(?:[/?].*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"69a5f4276ce4f33d000c1237","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https?:\\/\\/(?:[\\w.-]+\\.)*latamairlines\\.com\\/(br)\\/pt\\/minhas-viagens\\/second-detail(?:[/?].*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"69bd35a2937502e26a64134a","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/[a-z]{2}\\/[a-z]{2}(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"69dd1c0c1b755716aee74b35","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|pe|co|ar|br)\\/(es|pt)\\/pagos\\/pasajeros\\?orderId=[^\u0026]+$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"69e2647f9984fdb8ecb2528c","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https?:\\/\\/(?:www\\.)?latamairlines\\.com\\/[a-z]{2}\\/(?:es(?:\\/arma-tu-viaje)?|pt(?:\\/monte-sua-viagem)?)\\/?(?:[?#].*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"until_visitor_interacts","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a5f6f17feb5d41850dc0460","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/br\\/pt(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"mobile"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a6ba6b4a8cb154ce8adee24","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|ec|co|pe|br|mx|ar)\\/[a-z]{2}(?:\\/[^\\s#?]*)*(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"mobile"},"frequency":"always","uses_personalization":false,"data":"return (function insertBanner(data) {\ninsertBanner.inPreview = false;\ninsertBanner.sdk = window.exponea;\ninsertBanner.data = data;\ninsertBanner.html = \"\";\ninsertBanner.style = \"\";\ninsertBanner.script = function() { (() =\u003e {\n  'use strict';\n\n  /* =========================\n   *  [prueba]-[build-your-trip-label]\n   *\n   *  Tratamiento ABSmartly variant === 1:\n   *\n   *  - URLs con /BR/PT:\n   *      \"Para sua viagem\"\n   *\n   *  - Resto de URLs:\n   *      \"Para tu viaje\"\n   *\n   *  - En mobile:\n   *      Reemplaza además el SVG del tab\n   * ========================= */\n\n  // Evita ejecuciones múltiples si Bloomreach inyecta más de una vez\n  if (window.__PRUEBA_BUILD_YOUR_TRIP_INJECTION_RAN__) return;\n  window.__PRUEBA_BUILD_YOUR_TRIP_INJECTION_RAN__ = true;\n\n  /* ====== CONFIG ====== */\n\n  const EXPERIMENT_ID = '[one_search]-[arma_tu_viaje]-[mobile]';\n  const LOG_PREFIX = '[one_search]-[arma_tu_viaje]-[mobile]';\n\n  const DEFAULT_LABEL = 'Para tu viaje';\n  const BRAZIL_PT_LABEL = 'Para sua viagem';\n\n  // Ajustar si el breakpoint mobile real es diferente\n  const MOBILE_MEDIA_QUERY = '(max-width: 767px)';\n\n  const CANDIDATE_SELECTORS = [\n    '#id-tab-buildYourTrip',\n    'button[role=\"tab\"][value=\"buildYourTrip\"]',\n    'button[aria-controls=\"tabpanel-buildYourTrip\"]'\n  ];\n\n  const NEW_MOBILE_ICON_SVG = `\n    \u003csvg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      focusable=\"false\"\n      aria-hidden=\"true\"\n      viewBox=\"0 0 32 32\"\n    \u003e\n      \u003cpath\n        d=\"M16.0907 8.35064C15.3652 8.35064 14.7431 8.59798 14.2336 9.09282C13.7154 9.58767 13.4568 10.1814 13.4568 10.8742C13.4568 11.567 13.7154 12.1692 14.2336 12.6723C14.7517 13.1753 15.3652 13.431 16.0907 13.431C16.8161 13.431 17.4463 13.1753 17.9731 12.6723C18.4999 12.1692 18.7675 11.567 18.7675 10.8742C18.7675 10.1814 18.4999 9.58767 17.9731 9.09282C17.4376 8.59798 16.8075 8.35064 16.0907 8.35064ZM16.0907 14.5032C15.063 14.5032 14.1734 14.1485 13.4307 13.4475C12.688 12.7382 12.325 11.8804 12.325 10.8742C12.325 9.85976 12.6966 9.0104 13.4307 8.31762C14.1734 7.62484 15.0543 7.27844 16.0907 7.27844C17.1529 7.27844 18.0512 7.6331 18.7852 8.33413C19.5193 9.0434 19.8901 9.88449 19.8901 10.8659C19.8901 11.8474 19.5193 12.7052 18.7852 13.4227C18.0425 14.1402 17.1443 14.5032 16.0907 14.5032ZM24.9942 30H7.04886C6.85022 30 6.6943 29.9423 6.56476 29.8186C6.44385 29.6949 6.375 29.5464 6.375 29.3567C6.375 29.2 6.43522 29.0598 6.56476 28.9361C6.6943 28.8123 6.85022 28.7546 7.04886 28.7546H24.9942C25.1582 28.7546 25.3057 28.8123 25.4352 28.9361C25.5648 29.0515 25.625 29.1917 25.625 29.3567C25.625 29.5464 25.5648 29.6949 25.4352 29.8186C25.3057 29.9423 25.1582 30 24.9942 30ZM16.1252 26.0082C15.5984 26.0082 15.0802 25.7689 14.5793 25.2906C9.11266 19.7483 6.38343 14.998 6.38343 11.031C6.38343 9.35682 6.84989 7.82275 7.78259 6.43719C8.71529 5.05163 9.92473 3.96302 11.4015 3.17952C12.8783 2.39602 14.4327 2 16.0822 2C18.3104 2 20.2962 2.63509 22.0407 3.89694C23.7852 5.15879 24.9338 6.79191 25.4951 8.78778C25.5556 8.94448 25.5302 9.10929 25.4352 9.26599C25.3316 9.42269 25.2021 9.52173 25.038 9.54647C24.8653 9.57121 24.7182 9.54639 24.5801 9.46392C24.4419 9.38144 24.347 9.26603 24.2866 9.10933C23.8116 7.37739 22.8092 5.96698 21.2892 4.87833C19.7693 3.78967 18.034 3.23711 16.0822 3.23711C14.5191 3.23711 13.0942 3.60833 11.7987 4.35884C10.5033 5.1011 9.49224 6.06605 8.76681 7.25367C8.04137 8.4413 7.67886 9.69496 7.67886 11.031C7.67886 14.7094 10.2868 19.1629 15.4944 24.4083C15.7448 24.6474 15.9525 24.7711 16.1252 24.7711C16.2634 24.7711 16.4447 24.664 16.6692 24.4495C18.9837 22.0248 20.7627 19.8639 21.9977 17.9588C23.2413 16.0536 24.0276 14.3053 24.3557 12.7053C24.3816 12.5486 24.468 12.4165 24.6062 12.3257C24.7444 12.235 24.8992 12.2021 25.0633 12.2269C25.2274 12.2516 25.366 12.3341 25.4783 12.4661C25.5905 12.598 25.6332 12.7628 25.6073 12.9443C25.2446 14.7257 24.4247 16.6062 23.1379 18.5773C21.8511 20.5484 20.0111 22.7753 17.6189 25.2495C17.1698 25.7279 16.6868 25.9835 16.1514 26.0082H16.1252Z\"\n        fill=\"currentColor\"\n      \u003e\u003c/path\u003e\n    \u003c/svg\u003e\n  `;\n\n  /* ====== UTILS ====== */\n\n  const log = (...args) =\u003e {\n    try {\n      console.log(LOG_PREFIX, ...args);\n    } catch (_) {}\n  };\n\n  const sleep = (ms) =\u003e\n    new Promise((resolve) =\u003e {\n      setTimeout(resolve, ms);\n    });\n\n  function isBrazilPortuguese() {\n    return /(?:^|\\/)br\\/pt(?:\\/|$)/i.test(window.location.pathname);\n  }\n\n  function getTargetLabel() {\n    return isBrazilPortuguese()\n      ? BRAZIL_PT_LABEL\n      : DEFAULT_LABEL;\n  }\n\n  function findBuildYourTripTab() {\n    for (const selector of CANDIDATE_SELECTORS) {\n      const element = document.querySelector(selector);\n\n      if (element) {\n        return element;\n      }\n    }\n\n    return null;\n  }\n\n  function waitForBuildYourTripTab(timeoutMs = 10000) {\n    return new Promise((resolve) =\u003e {\n      const immediateElement = findBuildYourTripTab();\n\n      if (immediateElement) {\n        resolve(immediateElement);\n        return;\n      }\n\n      let resolved = false;\n\n      const finish = (element) =\u003e {\n        if (resolved) return;\n\n        resolved = true;\n\n        try {\n          observer.disconnect();\n        } catch (_) {}\n\n        resolve(element);\n      };\n\n      const observer = new MutationObserver(() =\u003e {\n        const button = findBuildYourTripTab();\n\n        if (button) {\n          finish(button);\n        }\n      });\n\n      observer.observe(document.documentElement, {\n        childList: true,\n        subtree: true\n      });\n\n      setTimeout(() =\u003e {\n        finish(findBuildYourTripTab());\n      }, timeoutMs);\n    });\n  }\n\n  async function waitForABSmartlyClient(\n    timeoutMs = 12000,\n    intervalMs = 120\n  ) {\n    const deadline = Date.now() + timeoutMs;\n\n    while (Date.now() \u003c deadline) {\n      try {\n        const root = window.ABSMARTLY_CONTEXT;\n\n        // Contexto directo\n        if (\n          root \u0026\u0026\n          typeof root.treatment === 'function'\n        ) {\n          return root;\n        }\n\n        // Contextos obtenidos mediante listContexts()\n        if (\n          root \u0026\u0026\n          typeof root.listContexts === 'function'\n        ) {\n          const contexts = root.listContexts();\n\n          if (\n            contexts?.clientContext \u0026\u0026\n            typeof contexts.clientContext.treatment === 'function'\n          ) {\n            return contexts.clientContext;\n          }\n\n          const contextList = Array.isArray(contexts)\n            ? contexts\n            : Object.values(contexts || {});\n\n          for (const context of contextList) {\n            if (\n              context \u0026\u0026\n              typeof context.treatment === 'function'\n            ) {\n              return context;\n            }\n          }\n        }\n      } catch (_) {}\n\n      await sleep(intervalMs);\n    }\n\n    return null;\n  }\n\n  function escapeRegExp(value) {\n    return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$\u0026');\n  }\n\n  function replaceAriaLabel(\n    element,\n    previousVisibleLabel,\n    targetLabel\n  ) {\n    if (!element) return;\n\n    const previousAriaLabel =\n      element.getAttribute('aria-label') || '';\n\n    if (!previousAriaLabel) {\n      element.setAttribute('aria-label', targetLabel);\n      return;\n    }\n\n    if (!previousVisibleLabel) {\n      element.setAttribute('aria-label', targetLabel);\n      return;\n    }\n\n    const pattern = new RegExp(\n      escapeRegExp(previousVisibleLabel),\n      'gi'\n    );\n\n    const nextAriaLabel = previousAriaLabel.replace(\n      pattern,\n      targetLabel\n    );\n\n    if (nextAriaLabel !== previousAriaLabel) {\n      element.setAttribute('aria-label', nextAriaLabel);\n    } else {\n      element.setAttribute('aria-label', targetLabel);\n    }\n  }\n\n  function getLabelNode(button) {\n    if (!button) return null;\n\n    // Span principal con aria-label, excluyendo posibles badges\n    const ariaSpan = button.querySelector(\n      'span[aria-label]:not([data-testid=\"badge\"])'\n    );\n\n    if (ariaSpan) {\n      return ariaSpan;\n    }\n\n    // Primer span que no sea un badge\n    const spans = Array.from(\n      button.querySelectorAll('span')\n    );\n\n    return (\n      spans.find(\n        (span) =\u003e\n          !span.matches('[data-testid=\"badge\"]')\n      ) || null\n    );\n  }\n\n  function createSvgElement(svgMarkup) {\n    try {\n      const parser = new DOMParser();\n\n      const svgDocument = parser.parseFromString(\n        svgMarkup.trim(),\n        'image/svg+xml'\n      );\n\n      if (svgDocument.querySelector('parsererror')) {\n        log('El nuevo SVG no tiene un formato válido.');\n        return null;\n      }\n\n      const svgElement = svgDocument.documentElement;\n\n      if (\n        svgElement.nodeName.toLowerCase() !== 'svg'\n      ) {\n        log('El contenido configurado no es un SVG.');\n        return null;\n      }\n\n      return document.importNode(svgElement, true);\n    } catch (error) {\n      log('Error creando el nuevo SVG:', error);\n      return null;\n    }\n  }\n\n  function replaceMobileIcon(button) {\n    if (!button) return false;\n\n    const isMobile = window\n      .matchMedia(MOBILE_MEDIA_QUERY)\n      .matches;\n\n    if (!isMobile) {\n      return false;\n    }\n\n    const iconWrapper = button.querySelector(\n      'i[aria-hidden=\"true\"]'\n    );\n\n    const currentSvg =\n      iconWrapper?.querySelector('svg');\n\n    if (!iconWrapper || !currentSvg) {\n      log('No se encontró el SVG actual del tab.');\n      return false;\n    }\n\n    /*\n     * Si el SVG actual ya es el SVG nuevo,\n     * no vuelve a reemplazarlo.\n     */\n    if (\n      currentSvg.dataset.buildTripNewIcon === '1'\n    ) {\n      return true;\n    }\n\n    const newSvg = createSvgElement(\n      NEW_MOBILE_ICON_SVG\n    );\n\n    if (!newSvg) {\n      return false;\n    }\n\n    /*\n     * Conserva atributos visuales que eventualmente\n     * pudiera tener el SVG original.\n     */\n    const attributesToPreserve = [\n      'class',\n      'style',\n      'width',\n      'height'\n    ];\n\n    for (const attributeName of attributesToPreserve) {\n      const value =\n        currentSvg.getAttribute(attributeName);\n\n      if (\n        value \u0026\u0026\n        !newSvg.hasAttribute(attributeName)\n      ) {\n        newSvg.setAttribute(attributeName, value);\n      }\n    }\n\n    newSvg.dataset.buildTripNewIcon = '1';\n    newSvg.setAttribute('aria-hidden', 'true');\n    newSvg.setAttribute('focusable', 'false');\n\n    currentSvg.replaceWith(newSvg);\n\n    iconWrapper.dataset.buildTripIconReplaced = '1';\n\n    log('Ícono mobile actualizado.');\n\n    return true;\n  }\n\n  function applyChangeOnce() {\n    const button = findBuildYourTripTab();\n\n    if (!button) {\n      return false;\n    }\n\n    const labelNode = getLabelNode(button);\n\n    if (!labelNode) {\n      log('No se encontró el nodo de texto del tab.');\n      return false;\n    }\n\n    const targetLabel = getTargetLabel();\n    const currentText =\n      (labelNode.textContent || '').trim();\n\n    const currentAriaLabel =\n      labelNode.getAttribute('aria-label') || '';\n\n    const labelNeedsUpdate =\n      currentText !== targetLabel ||\n      currentAriaLabel !== targetLabel;\n\n    if (labelNeedsUpdate) {\n      /*\n       * Actualiza primero accesibilidad usando el texto\n       * original como referencia.\n       */\n      if (labelNode.hasAttribute('aria-label')) {\n        labelNode.setAttribute(\n          'aria-label',\n          targetLabel\n        );\n      } else if (button.hasAttribute('aria-label')) {\n        replaceAriaLabel(\n          button,\n          currentText,\n          targetLabel\n        );\n      } else {\n        const ariaElement = button.querySelector(\n          '[aria-label]'\n        );\n\n        replaceAriaLabel(\n          ariaElement,\n          currentText,\n          targetLabel\n        );\n      }\n\n      // Cambia únicamente el texto del span\n      labelNode.textContent = targetLabel;\n\n      button.dataset.__buildTripRelabeled = '1';\n\n      log('Etiqueta actualizada:', {\n        path: window.location.pathname,\n        locale: isBrazilPortuguese()\n          ? 'BR/PT'\n          : 'default',\n        from: currentText,\n        to: targetLabel\n      });\n    }\n\n    /*\n     * Se ejecuta independientemente del texto para cubrir:\n     * - React vuelve a renderizar el ícono\n     * - El texto ya estaba actualizado\n     * - El viewport cambia a mobile\n     */\n    replaceMobileIcon(button);\n\n    return true;\n  }\n\n  function startDomWatcher() {\n    const observerTarget =\n      document.body || document.documentElement;\n\n    const observer = new MutationObserver(() =\u003e {\n      applyChangeOnce();\n    });\n\n    observer.observe(observerTarget, {\n      childList: true,\n      subtree: true,\n      characterData: true\n    });\n\n    document.addEventListener(\n      'visibilitychange',\n      () =\u003e {\n        if (!document.hidden) {\n          applyChangeOnce();\n        }\n      }\n    );\n\n    const mobileMediaQuery = window.matchMedia(\n      MOBILE_MEDIA_QUERY\n    );\n\n    const handleViewportChange = () =\u003e {\n      applyChangeOnce();\n    };\n\n    if (\n      typeof mobileMediaQuery.addEventListener ===\n      'function'\n    ) {\n      mobileMediaQuery.addEventListener(\n        'change',\n        handleViewportChange\n      );\n    } else if (\n      typeof mobileMediaQuery.addListener ===\n      'function'\n    ) {\n      // Compatibilidad con navegadores antiguos\n      mobileMediaQuery.addListener(\n        handleViewportChange\n      );\n    }\n\n    /*\n     * Ayuda en navegación SPA cuando cambia la ruta\n     * sin una recarga completa.\n     */\n    window.addEventListener(\n      'popstate',\n      applyChangeOnce\n    );\n\n    window.addEventListener(\n      'hashchange',\n      applyChangeOnce\n    );\n  }\n\n  /* ====== BOOT ====== */\n\n  (async () =\u003e {\n    log('Inicializando…', {\n      path: window.location.pathname,\n      locale: isBrazilPortuguese()\n        ? 'BR/PT'\n        : 'default',\n      targetLabel: getTargetLabel()\n    });\n\n    const button =\n      await waitForBuildYourTripTab(10000);\n\n    if (!button) {\n      log(\n        'No se encontró la pestaña buildYourTrip en el DOM.'\n      );\n      return;\n    }\n\n    const context =\n      await waitForABSmartlyClient(12000, 120);\n\n    if (!context) {\n      log(\n        'ABSmartly no disponible: no se aplican cambios.'\n      );\n      return;\n    }\n\n    try {\n      if (typeof context.ready === 'function') {\n        await context.ready();\n      }\n    } catch (error) {\n      log(\n        'No fue posible esperar context.ready():',\n        error\n      );\n    }\n\n    let variant;\n\n    try {\n      variant = context.treatment(\n        EXPERIMENT_ID\n      );\n    } catch (error) {\n      log(\n        'Error obteniendo el tratamiento:',\n        error\n      );\n      return;\n    }\n\n    log(\n      'Variant =',\n      variant,\n      'Exp =',\n      EXPERIMENT_ID\n    );\n\n    if (variant === 1) {\n      applyChangeOnce();\n      startDomWatcher();\n\n      log('Tratamiento activo.', {\n        label: getTargetLabel(),\n        replaceMobileIcon: true\n      });\n    } else {\n      log('Control: sin cambios.');\n    }\n  })();\n})(); };\ninsertBanner.remove = (insertBanner.script.call(insertBanner) || {} ).remove;\ninsertBanner.contextual_personalization = {};\nreturn insertBanner;\n})({\"banner_id\": \"6a6ba6b4a8cb154ce8adee24\", \"banner_name\": null, \"banner_type\": \"medium_rectangle\", \"banner_group\": \"\", \"variant_id\": 0, \"variant_name\": \"Variant A\"});","variables_target":null,"page_vars":[]},{"_id":"6a6ba6d49af6c7649120d288","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|ec|co|pe|br|mx|ar)\\/[a-z]{2}(?:\\/[^\\s#?]*)*(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"desktop"},"frequency":"always","uses_personalization":false,"data":"return (function insertBanner(data) {\ninsertBanner.inPreview = false;\ninsertBanner.sdk = window.exponea;\ninsertBanner.data = data;\ninsertBanner.html = \"\";\ninsertBanner.style = \"\";\ninsertBanner.script = function() { (() =\u003e {\n  'use strict';\n\n  /* =========================\n   *  [prueba]-[build-your-trip-label]\n   *  Cambiar la etiqueta de la pestaña según el idioma:\n   *  - Brasil / Portugués (/BR/PT): \"Para sua viagem\"\n   *  - Resto de URLs: \"Para tu viaje\"\n   *  Gateado por ABSmartly (variant === 1)\n   * ========================= */\n\n  // Evita ejecuciones múltiples si Bloomreach inyecta más de una vez\n  if (window.__PRUEBA_BUILD_YOUR_TRIP_INJECTION_RAN__) return;\n  window.__PRUEBA_BUILD_YOUR_TRIP_INJECTION_RAN__ = true;\n\n  /* ====== CONFIG ====== */\n  const EXPERIMENT_ID = '[prueba]-[build-your-trip-label]';\n  const LOG_PREFIX = '[prueba]-[build-your-trip-label]';\n\n  const DEFAULT_LABEL = 'Para tu viaje';\n  const BRAZIL_PT_LABEL = 'Para sua viagem';\n\n  /*\n   * Coincide con rutas como:\n   * /BR/PT\n   * /br/pt/\n   * /content/br/pt/home\n   *\n   * No coincide con:\n   * /br/es\n   * /cl/es\n   */\n  const IS_BRAZIL_PORTUGUESE =\n    /(?:^|\\/)br\\/pt(?:\\/|$)/i.test(window.location.pathname);\n\n  const NEW_LABEL = IS_BRAZIL_PORTUGUESE\n    ? BRAZIL_PT_LABEL\n    : DEFAULT_LABEL;\n\n  // Selectores robustos por si cambia el id en algunas vistas\n  const CANDIDATE_SELECTORS = [\n    '#id-tab-buildYourTrip',\n    'button[role=\"tab\"][value=\"buildYourTrip\"]',\n    'button[aria-controls=\"tabpanel-buildYourTrip\"]'\n  ];\n\n  /* ====== UTILS ====== */\n  const log = (...args) =\u003e {\n    try {\n      console.log(LOG_PREFIX, ...args);\n    } catch (_) {}\n  };\n\n  const sleep = (ms) =\u003e new Promise((resolve) =\u003e setTimeout(resolve, ms));\n\n  function findBuildYourTripTab() {\n    for (const selector of CANDIDATE_SELECTORS) {\n      const element = document.querySelector(selector);\n      if (element) return element;\n    }\n\n    return null;\n  }\n\n  function waitForBuildYourTripTab(timeoutMs = 10000) {\n    return new Promise((resolve) =\u003e {\n      const immediate = findBuildYourTripTab();\n\n      if (immediate) {\n        resolve(immediate);\n        return;\n      }\n\n      const deadline = Date.now() + timeoutMs;\n\n      const observer = new MutationObserver(() =\u003e {\n        const button = findBuildYourTripTab();\n\n        if (button) {\n          observer.disconnect();\n          resolve(button);\n          return;\n        }\n\n        if (Date.now() \u003e deadline) {\n          observer.disconnect();\n          resolve(null);\n        }\n      });\n\n      observer.observe(document.documentElement, {\n        childList: true,\n        subtree: true\n      });\n\n      // Salvaguarda por timeout duro\n      setTimeout(() =\u003e {\n        try {\n          observer.disconnect();\n        } catch (_) {}\n\n        resolve(findBuildYourTripTab());\n      }, timeoutMs + 50);\n    });\n  }\n\n  async function waitForABSmartlyClient(\n    timeoutMs = 12000,\n    intervalMs = 120\n  ) {\n    const deadline = Date.now() + timeoutMs;\n\n    while (Date.now() \u003c deadline) {\n      try {\n        const root = window.ABSMARTLY_CONTEXT;\n\n        // Puede venir directo con .treatment(...)\n        if (root \u0026\u0026 typeof root.treatment === 'function') {\n          return root;\n        }\n\n        // O con listContexts() → { clientContext }\n        if (root \u0026\u0026 typeof root.listContexts === 'function') {\n          const contexts = root.listContexts();\n\n          if (\n            contexts?.clientContext \u0026\u0026\n            typeof contexts.clientContext.treatment === 'function'\n          ) {\n            return contexts.clientContext;\n          }\n\n          const contextList = Array.isArray(contexts)\n            ? contexts\n            : Object.values(contexts || {});\n\n          for (const context of contextList) {\n            if (context \u0026\u0026 typeof context.treatment === 'function') {\n              return context;\n            }\n          }\n        }\n      } catch (_) {}\n\n      await sleep(intervalMs);\n    }\n\n    return null;\n  }\n\n  function escapeRegExp(value) {\n    return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$\u0026');\n  }\n\n  /**\n   * Reemplaza el texto anterior dentro del aria-label.\n   * Esto funciona tanto si el texto original está en español\n   * como si está en portugués.\n   */\n  function replaceAriaLabel(element, previousLabel, nextLabel) {\n    if (!element || !element.hasAttribute('aria-label')) return;\n\n    const previousAriaLabel = element.getAttribute('aria-label') || '';\n\n    if (!previousAriaLabel) {\n      element.setAttribute('aria-label', nextLabel);\n      return;\n    }\n\n    if (!previousLabel) {\n      element.setAttribute('aria-label', nextLabel);\n      return;\n    }\n\n    const pattern = new RegExp(escapeRegExp(previousLabel), 'gi');\n    const nextAriaLabel = previousAriaLabel.replace(pattern, nextLabel);\n\n    /*\n     * Si el aria-label contenía el texto visible anterior, conserva\n     * cualquier información complementaria.\n     *\n     * Ejemplo:\n     * \"Arma tu viaje, pestaña\" → \"Para tu viaje, pestaña\"\n     */\n    if (nextAriaLabel !== previousAriaLabel) {\n      element.setAttribute('aria-label', nextAriaLabel);\n    }\n  }\n\n  function getLabelNode(button) {\n    if (!button) return null;\n\n    // 1) Si existe un span con aria-label y NO es badge, ese es el correcto\n    const ariaSpan = button.querySelector(\n      'span[aria-label]:not([data-testid=\"badge\"])'\n    );\n\n    if (ariaSpan) return ariaSpan;\n\n    // 2) Si no, tomar el primer span que no sea badge\n    const spans = [...button.querySelectorAll('span')];\n    const nonBadgeSpan = spans.find(\n      (span) =\u003e !span.matches('[data-testid=\"badge\"]')\n    );\n\n    if (nonBadgeSpan) return nonBadgeSpan;\n\n    // 3) Fallback final\n    return button;\n  }\n\n  function applyChangeOnce() {\n    const button = findBuildYourTripTab();\n    if (!button) return false;\n\n    const labelNode = getLabelNode(button);\n    if (!labelNode) return false;\n\n    const currentText = (labelNode.textContent || '').trim();\n\n    // Si ya está aplicado y el texto coincide, no repetir trabajo\n    if (\n      button.dataset.__buildTripRelabeled === '1' \u0026\u0026\n      currentText === NEW_LABEL\n    ) {\n      return true;\n    }\n\n    /*\n     * Actualiza accesibilidad antes de cambiar textContent,\n     * utilizando el texto original como referencia.\n     */\n    if (labelNode.hasAttribute('aria-label')) {\n      replaceAriaLabel(labelNode, currentText, NEW_LABEL);\n    } else if (button.hasAttribute('aria-label')) {\n      replaceAriaLabel(button, currentText, NEW_LABEL);\n    } else {\n      const ariaElement = button.querySelector('[aria-label]');\n      replaceAriaLabel(ariaElement, currentText, NEW_LABEL);\n    }\n\n    // Cambia el texto visible solo en el nodo correcto\n    labelNode.textContent = NEW_LABEL;\n\n    button.dataset.__buildTripRelabeled = '1';\n\n    log('Etiqueta actualizada:', {\n      path: window.location.pathname,\n      locale: IS_BRAZIL_PORTUGUESE ? 'BR/PT' : 'default',\n      from: currentText,\n      to: NEW_LABEL\n    });\n\n    return true;\n  }\n\n  function startDomWatcher() {\n    const observer = new MutationObserver(() =\u003e {\n      applyChangeOnce();\n    });\n\n    observer.observe(document.body, {\n      childList: true,\n      subtree: true\n    });\n\n    document.addEventListener('visibilitychange', () =\u003e {\n      if (!document.hidden) {\n        applyChangeOnce();\n      }\n    });\n  }\n\n  /* ====== BOOT ====== */\n  (async () =\u003e {\n    log('Inicializando…', {\n      path: window.location.pathname,\n      locale: IS_BRAZIL_PORTUGUESE ? 'BR/PT' : 'default',\n      targetLabel: NEW_LABEL\n    });\n\n    const button = await waitForBuildYourTripTab(10000);\n\n    if (!button) {\n      log('No se encontró la pestaña de arma tu viaje en el DOM.');\n      return;\n    }\n\n    // Espera el contexto de ABSmartly y evalúa el experimento\n    const context = await waitForABSmartlyClient(12000, 120);\n\n    if (!context) {\n      log('ABSmartly no disponible: no se aplican cambios (control).');\n      return;\n    }\n\n    try {\n      if (typeof context.ready === 'function') {\n        await context.ready();\n      }\n    } catch (_) {}\n\n    const variant = context.treatment(EXPERIMENT_ID);\n\n    log('Variant =', variant, 'Exp =', EXPERIMENT_ID);\n\n    if (variant === 1) {\n      applyChangeOnce();\n      startDomWatcher();\n\n      log('Tratamiento activo: etiqueta forzada a', NEW_LABEL);\n    } else {\n      log('Control: sin cambios.');\n    }\n  })();\n})(); };\ninsertBanner.remove = (insertBanner.script.call(insertBanner) || {} ).remove;\ninsertBanner.contextual_personalization = {};\nreturn insertBanner;\n})({\"banner_id\": \"6a6ba6d49af6c7649120d288\", \"banner_name\": null, \"banner_type\": \"medium_rectangle\", \"banner_group\": \"\", \"variant_id\": 0, \"variant_name\": \"Variant A\"});","variables_target":null,"page_vars":[]},{"_id":"6a71f7fc0e5914563cbb2cca","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/br\\/pt$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a7f1aea3fccdd5aafa44c14","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl)\\/(es)(?:\\/paquetes)?(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a8332cb1edea643b74492b6","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|co|pe|ar|br)\\/(es|pt)(?:\\/paquetes)?(?:\\?[^\\s#]*)?$"}],"exclude_pages":null},"smart_trigger":null,"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]}],"experiments":[{"_id":"654e5ad0fb16d4fb3ea933bc","date_filter":{"enabled":true,"from_date":1699830000,"to_date":1700283540},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/pe\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":""},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"6553c758097ac425117e6731","date_filter":{"enabled":true,"from_date":1700794800,"to_date":1701140399},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/cl\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":""},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f4919d59582b201430436e","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f4923ce218ba3ef21ddd4b","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f49280737a049d4ce284bb","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f49294b40c1a96f291c0f0","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492a0b40c1a96f291c0f9","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492a959582b201430438a","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492bc59582b2014304398","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492c6b40c1a96f291c15e","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492d1f1bda0fdcdfcaec4","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492db1dcc08395c7152df","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492e4737a049d4ce284f2","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492f0e218ba3ef21ddd9a","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f492f9b40c1a96f291c163","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f4930459582b201430439f","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f4930fe218ba3ef21ddda0","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f4931ad6081db0cd9f9eec","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f49326051a61b7cc4b244b","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f493361dcc08395c7152e9","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f49340051a61b7cc4b2450","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]},{"_id":"65f4934bf1bda0fdcdfcaeca","date_filter":{"enabled":true,"from_date":1710457200,"to_date":1712267999},"trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/ec\\/es(\\?.*)*$"}],"exclude_pages":null},"trigger_event":{"type":"page_load"},"device_target":{"type":"any"},"frequency":"always","variables_target":null,"page_vars":[]}],"constantManagedTags":[{"uses_overlay":false,"type":"js","parametrized_definition":"// console.log('DS - Personalization BR - No results rutas')\r\nfunction getQueryVariable(variable) {\r\n    const query = window.location.search.substring(1);\r\n    const vars = query.split(\"\u0026\");\r\n    for (let i = 0; i \u003c vars.length; i++) {\r\n        let pair = vars[i].split(\"=\");\r\n        if (decodeURIComponent(pair[0]) == variable) {\r\n            return decodeURIComponent(pair[1]);\r\n        }\r\n    }\r\n    console.log(`Query variable ${variable} not found`);\r\n}\r\n\r\nlet showBanner = false;\r\nfunction waitForElement(callback) {\r\n    const loop = setInterval(function() {\r\n        if (document.querySelector(\"[class^='messageBoxstyles__Details']\")) {\r\n        \tshowBanner = true;\r\n            clearInterval(loop);\r\n            callback();\r\n        }\r\n        if (document.querySelector(\"[class^='cardFlightstyles']\")) {\r\n        \tshowBanner = false;\r\n            clearInterval(loop);\r\n            callback();\r\n        }\r\n    }, 1000);\r\n}\r\n\r\nwaitForElement(function() {\r\n\tif (showBanner) {\r\n\t\tconst item_id = `${getQueryVariable('origin')}-${getQueryVariable('destination')}`;\r\n\t\texponea.showWebLayer(\"65146b9ced7b76a744d21bd9\", { \"item_id\": item_id }, true);\r\n\t}\r\n});\r\n","trigger":{"include_pages":[{"url":"https://www.latamairlines.com/br/pt/oferta-voos","type":"contains"}],"exclude_pages":null},"_id":"65146b99ed7b76a744d21bd4"},{"uses_overlay":false,"type":"js","parametrized_definition":"function getParams(whitelist, url) {\r\n\tvar whitelistedParams = {};\r\n\tvar queryParams = {};\r\n\treturn whitelist.forEach(function (param) {\r\n\t  queryParams[param] = true;\r\n\t}), url.replace(/[?\u0026]+([^=\u0026]+)=([^\u0026]*)/gi, function (e, key, value) {\r\n\t  if (key in queryParams) {\r\n\t    try {\r\n\t      whitelistedParams[key] = decodeURIComponent(value);\r\n\t    } catch (error) {}\r\n\t  }\r\n\t  return '';\r\n\t}), whitelistedParams;\r\n}\r\nvar whitelist = ['origin', 'destination'];\r\nvar params = getParams(whitelist, window.location.href);\r\n\r\nexponea.showWebLayer(\"69285883a53cb5107585abb2\", { origin: params.origin, destination: params.destination }, true);","trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/br\\/pt\\/oferta-voos.*origin=GRU.*destination=(AMS|BRU|CPT|PUJ|USH)"}],"exclude_pages":null},"_id":"692865ef73352ba883767348"},{"uses_overlay":false,"type":"js","parametrized_definition":"// console.log('DS - Personalization BR - No results rutas')\r\nfunction getQueryVariable(variable) {\r\n    const query = window.location.search.substring(1);\r\n    const vars = query.split(\"\u0026\");\r\n    for (let i = 0; i \u003c vars.length; i++) {\r\n        let pair = vars[i].split(\"=\");\r\n        if (decodeURIComponent(pair[0]) == variable) {\r\n            return decodeURIComponent(pair[1]);\r\n        }\r\n    }\r\n    console.log(`Query variable ${variable} not found`);\r\n}\r\n\r\nlet showBanner = false;\r\nfunction waitForElement(callback) {\r\n    const loop = setInterval(function() {\r\n        if (document.querySelector(\"[class^='messageBoxstyles__Details']\")) {\r\n        \tshowBanner = true;\r\n            clearInterval(loop);\r\n            callback();\r\n        }\r\n        if (document.querySelector(\"[class^='cardFlightstyles']\")) {\r\n        \tshowBanner = false;\r\n            clearInterval(loop);\r\n            callback();\r\n        }\r\n    }, 1000);\r\n}\r\n\r\nwaitForElement(function() {\r\n\tif (showBanner) {\r\n\t\texponea.showWebLayer(\"6a3d68c9f3c5665546f9f8df\", { \"origin\": getQueryVariable('origin'), \"destination\": getQueryVariable('destination') }, true);\r\n\t}\r\n});\r\n","trigger":{"include_pages":[{"url":"https://www.latamairlines.com/cl/es/ofertas-vuelos","type":"contains"},{"url":"https://www.latamairlines.com/ar/es/ofertas-vuelos","type":"contains"},{"url":"https://www.latamairlines.com/pe/es/ofertas-vuelos","type":"contains"}],"exclude_pages":null},"_id":"6a3d68f2a1e545f5512f00a2"},{"uses_overlay":false,"type":"js","parametrized_definition":"try {\r\n\t// Get country/language from URL\r\n\tvar path = window.location.pathname.split(\"/\")\r\n\tvar country = String(path[1])\r\n\tvar language = String(path[2])\r\n\r\n\t// Show weblayer\r\n\texponea.showWebLayer(\"64e671272835208affa494db\", { country: country, language: language }, true);\r\n\r\n} catch (exceptionVar) {\r\n\tconsole.log(\"Unable to apply.\")\r\n}","trigger":{"include_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/[a-z]{2}\\/(de|en|es|fr|it|pt)(?:\\/(paquetes|pacotes-viagens))?(?:\\?[^\\s#]*)?$"}],"exclude_pages":[{"type":"regex","regex":"^https:\\/\\/www\\.latamairlines\\.com\\/(cl|br)\\/[a-z]{2}(?:\\/(paquetes|pacotes-viagens))?(?:\\?[^\\s#]*)?$"}]},"_id":"6a6ba7f39ba088391cd32806"}],"vars":{"data":[{"id":"65e862abe81f5ab3133108b2","name":"redemption","variable":{"type":"query","query":{"key":"redemption"}}}]}}