{
  "h_fs_promo_box_selector": "div:contains(\"More offers\"):visible:last, body:has(div:contains(\"More offers\"):visible:last) input[placeholder=\"Enter Coupon Code\"], body:has(div:contains(\"More offers\"):visible:last) input[placeholder=\"Masukan kode kupon\"]",
  "h_fs_final_price_selector": ".listingPrice__finalPrice.listingPrice__finalPrice",
  "h_fs_submit_button": "try {\r\n\tconst field = document.querySelector('input[placeholder=\"Enter Coupon Code\"], input[placeholder=\"Masukan kode kupon\"]')\r\n\tfield.dispatchEvent(new Event('input', { bubbles: true }));\r\n\tfield.dispatchEvent(new Event('change'));\r\n\tfield.dispatchEvent(new Event('keyup'));\r\n\tfield.dispatchEvent(new Event('blur'));\r\n\tfield.dispatchEvent(new Event('focus'));\r\n\tvar couponBtn = document.evaluate('//input[@placeholder=\"Enter Coupon Code\"]/following::button[1]', document, null, XPathResult.ANY_TYPE, null ).iterateNext();\r\n  if (couponBtn) {\r\n    couponBtn.click();\r\n  } \r\n  else{\r\n    let xpath = document.evaluate('//button[@type=\"button\" and contains(., \"Terapkan\")]',\r\n            document,\r\n            null,\r\n            XPathResult.ANY_TYPE,\r\n            null\r\n    ).iterateNext();\r\n    xpath.click();\r\n  }\r\n} catch(e) {}",
  "h_fs_time_between_codes": "4000",
  "h_fs_pre_apply_code_action": "const COUPON_TOGGLE = document.evaluate(\"//div[contains(text(),'More offers')]\", document, null, XPathResult.ANY_TYPE, null ).iterateNext();\r\ntry{\r\n  if (!COUPON_TOGGLE) COUPON_TOGGLE.click();\r\n}catch(e){}\r\n\r\ntry{\r\n  let COUPON_TOGGLE_1 = document.evaluate('.//*[@data-ol-has-click-handler][contains(normalize-space(),\"Apply coupon\")]', document, null, XPathResult.ANY_TYPE, null ); \r\n  let cpn_btn_1 = COUPON_TOGGLE_1.iterateNext();\r\n  cpn_btn_1.click();\r\n}catch(e){}\r\n\r\nconst callbackFn = mutations => {\r\n  for (let mutation of mutations) { \r\n    let nodeText = mutation.addedNodes[0]?.previousSibling?.firstChild?.textContent || null\r\n    if (/apply coupon/i.test(nodeText)) COUPON_TOGGLE.click()\r\n  }\r\n}\r\n\r\nconst WATCHER = new MutationObserver(callbackFn)\r\nconst MORE_OFFERS_CONTAINER = document.querySelector('[name=\"hotelDetailCarousel\"] + span + div')\r\n\r\nWATCHER.observe(MORE_OFFERS_CONTAINER, {\r\n  childList: true,\r\n  subtree: true\r\n})",
  "h_fs_time_between_pre_apply": "2000",
  "h_fs_remove_code_action": "try {\r\n  // element that remove-code triggers\r\n  document.querySelector('input[data-state=\"coupon_selected\"] + span').click();\r\n} catch(e) {}\r\n\r\ntry {\r\n  document.evaluate('//*[text()=\"Apply coupon\" or text()=\"apply coupon\"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.click();\r\n} catch(e) {}\r\n\r\ntry {\r\n  let observer = new MutationObserver(mutations => {\r\n    mutations.forEach(mutation => { \r\n      //console.log(mutation.previousSibling.innerText.includes(\"Apply coupon\"));\r\n    \tif(mutation.previousSibling.innerText.includes(\"Apply coupon\")){ \r\n        document.evaluate('.//*[@data-ol-has-click-handler][contains(normalize-space(),\"Apply coupon\")]', document, null, XPathResult.ANY_TYPE, null).iterateNext().click();\r\n        return\r\n    \t}\r\n    });\r\n  });\r\n      \r\n  const promo_cont = document.querySelector('[name=\"hotelPricingWidget\"]'); \r\n  \r\n  observer.observe(promo_cont, { \r\n  \tchildList: true,\r\n  \tsubtree: true\r\n  });\r\n} catch(e) {}\r\n\r\nsetTimeout(()=>{},8500);\r\n",
  "h_fs_time_between_remove": "4000",
  "h_fs_hide_cart_errors_selector": "",
  "h_fs_hide_cart_errors_selector2": "",
  "h_fs_time_finish": "6000",
  "h_fs_max_codes": "3",
  "h_format_price_divisor": "",
  "h_existing_code_selector": "span:contains('coupon applied')",
  "h_existing_code_selector_regex": "(?:(\\w+) (?:(?=aplicado)|(?=coupon)|(?=cupom)|(?=クーポンが適用されました)))",
  "h_existing_code_selector_attribute": "",
  "h_site_sel_cart_hide_while_working": "",
  "h_dac_concurrency": "",
  "temp_disable_find_savings": false,
  "h_fs_final_price_selector_mobile": "div:has(>div:contains(Total amount)):last span:first"
}