{
  "version": 3,
  "sources": ["/cdn/shop/t/23/assets/freedom-form-guard.js?fhfgqa=final"],
  "sourcesContent": ["(function (root, factory) {\n  var api = factory(root);\n  if (typeof module === 'object' && module.exports) module.exports = api;\n  root.FreedomFormGuard = api;\n  if (typeof document !== 'undefined') api.start();\n})(typeof globalThis !== 'undefined' ? globalThis : this, function (globalRoot) {\n  'use strict';\n\n  var state = new WeakMap();\n  var storagePrefix = 'fhfg:v1:';\n\n  function clean(value) {\n    return String(value || '').replace(/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F]/g, '').trim();\n  }\n\n  function countMatches(value, pattern) {\n    var matches = clean(value).match(pattern);\n    return matches ? matches.length : 0;\n  }\n\n  function countLinks(value) {\n    var text = clean(value);\n    var explicit = countMatches(text, /(?:https?:\\/\\/|www\\.)[^\\s<>{}]+/gi);\n    var bare = countMatches(text, /\\b(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+(?:com|net|org|ru|xyz|top|click|link|shop|site|online|info|biz|co|io|us|ca|uk|de|fr|nl|pro)(?:\\/[\\w\\-.~:/?#[\\]@!$&'()*+,;=%]*)?/gi);\n    return Math.max(explicit, bare);\n  }\n\n  function distinctLinkDomains(value) {\n    var text = clean(value).toLowerCase();\n    var matches = text.match(/(?:https?:\\/\\/|www\\.)?([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9-]{2,})+)/gi) || [];\n    var domains = {};\n    matches.forEach(function (item) {\n      var domain = item.replace(/^https?:\\/\\//, '').replace(/^www\\./, '').split('/')[0];\n      domains[domain] = true;\n    });\n    return Object.keys(domains).length;\n  }\n\n  function validEmail(value) {\n    var email = clean(value);\n    return email.length <= 254 && /^[^\\s@]+@[^\\s@]+\\.[a-z]{2,}$/i.test(email) && !/[\\r\\n]/.test(email);\n  }\n\n  function validPhone(value) {\n    var phone = clean(value);\n    if (!phone) return true;\n    if (/[a-z]/i.test(phone)) return false;\n    var digits = phone.replace(/\\D/g, '');\n    return digits.length >= 7 && digits.length <= 16;\n  }\n\n  function hash(value) {\n    var text = String(value || '');\n    var result = 2166136261;\n    for (var index = 0; index < text.length; index += 1) {\n      result ^= text.charCodeAt(index);\n      result = Math.imul(result, 16777619);\n    }\n    return (result >>> 0).toString(36);\n  }\n\n  function readJson(key, fallback) {\n    try {\n      var value = localStorage.getItem(storagePrefix + key);\n      return value ? JSON.parse(value) : fallback;\n    } catch (error) {\n      return fallback;\n    }\n  }\n\n  function writeJson(key, value) {\n    try {\n      localStorage.setItem(storagePrefix + key, JSON.stringify(value));\n    } catch (error) {\n      return false;\n    }\n    return true;\n  }\n\n  function profileFor(form) {\n    var formType = form.querySelector('[name=\"form_type\"]');\n    var type = formType ? formType.value : '';\n    var tags = form.querySelector('[name=\"contact[tags]\"]');\n    if (type === 'contact' && /^Notify-Form-/.test(form.id || '')) return 'notify';\n    if (type === 'contact') return 'lead';\n    if (type === 'customer' && tags && /newsletter/i.test(tags.value)) return 'newsletter';\n    if (type === 'new_comment') return 'comment';\n    if (type === 'create_customer') return 'account';\n    return '';\n  }\n\n  function collect(form, profile) {\n    var values = {};\n    Array.prototype.forEach.call(form.elements || [], function (field) {\n      if (!field.name || field.disabled || /^(hidden|submit|button)$/i.test(field.type || '')) return;\n      if ((field.type === 'checkbox' || field.type === 'radio') && !field.checked) return;\n      values[field.name] = clean(field.value);\n    });\n    var email = values['contact[email]'] || values['comment[email]'] || values['customer[email]'] || '';\n    var phone = values['contact[phone]'] || '';\n    var name = values['contact[name]'] || values['comment[author]'] || [values['customer[first_name]'], values['customer[last_name]']].filter(Boolean).join(' ');\n    var message = values['contact[body]'] || values['comment[body]'] || '';\n    var other = Object.keys(values).filter(function (key) {\n      return !/email|phone|name|author|body|first_name|last_name/i.test(key);\n    }).map(function (key) { return values[key]; }).join(' ');\n    return {\n      profile: profile,\n      email: email,\n      phone: phone,\n      name: name,\n      message: message,\n      other: other,\n      all: [name, email, phone, message, other].join('\\n')\n    };\n  }\n\n  function scoreSubmission(data, context) {\n    var score = 0;\n    var hard = false;\n    var rules = [];\n    var all = clean(data.all);\n    var name = clean(data.name);\n    var message = clean(data.message);\n    var links = countLinks(all);\n    var domains = distinctLinkDomains(all);\n    var elapsed = Number(context.elapsed || 0);\n\n    function add(points, rule, immediate) {\n      score += points;\n      rules.push(rule);\n      if (immediate) hard = true;\n    }\n\n    if (context.honeypot) add(100, 'honeypot', true);\n    if (elapsed > 0 && elapsed < 800) add(100, 'impossible_time', true);\n    else if (elapsed > 0 && elapsed < 1800 && data.profile !== 'newsletter') add(45, 'very_fast');\n    else if (elapsed > 0 && elapsed < 3200 && (data.profile === 'lead' || data.profile === 'comment')) add(25, 'fast');\n    if (links >= 12) add(100, 'excessive_links', true);\n    else if (links >= 5) add(65, 'many_links');\n    else if (links >= 2) add(25, 'multiple_links');\n    else if (links === 1 && data.profile === 'newsletter') add(45, 'newsletter_link');\n    if (domains >= 4) add(45, 'multiple_external_domains');\n    if (name && countLinks(name) > 0) add(85, 'url_in_name', true);\n    if (data.phone && countLinks(data.phone) > 0) add(85, 'url_in_phone', true);\n    if (data.email && /https?:|www\\./i.test(data.email)) add(85, 'url_in_email', true);\n    if (data.email && !validEmail(data.email)) add(90, 'malformed_email', true);\n    if (data.phone && !validPhone(data.phone)) add(40, 'malformed_phone');\n    if (name.length > 100) add(55, 'name_too_long');\n    if (/(?:seo|casino|backlinks?|marketing\\s+service|promotion|guest\\s+post)/i.test(name)) add(45, 'promotional_name');\n    if (message.length > 6000) add(55, 'message_too_long');\n    if (/(?:<script\\b|javascript:|onerror\\s*=|onload\\s*=|data:text\\/html|\\bunion\\s+select\\b|\\bdrop\\s+table\\b|\\b(?:or|and)\\s+1\\s*=\\s*1\\b)/i.test(all)) add(100, 'malicious_payload', true);\n    if (/(?:1xbet|casino\\s+bonus|sportsbook|gambling|slot\\s+bonus|viagra|cialis|backlinks?|link\\s+building|seo\\s+service|guest\\s+post|crypto\\s+promotion)/i.test(all)) add(75, 'commercial_spam_pattern');\n    if (/(.)\\1{7,}/u.test(all)) add(35, 'repeated_characters');\n    if (/\\b(?:https?|ftp)\\b.{0,30}\\b(?:https?|ftp)\\b/i.test(message)) add(25, 'link_stuffing');\n    if (/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F]/.test(String(data.all || ''))) add(45, 'control_characters');\n    if (/@(?:mail\\.ru|bk\\.ru|inbox\\.ru|list\\.ru|internet\\.ru)$/i.test(data.email)) add(15, 'high_abuse_domain');\n    if (context.duplicateSeconds > 0 && context.duplicateSeconds < 20) add(100, 'rapid_duplicate', true);\n    else if (context.duplicateSeconds > 0 && context.duplicateSeconds < 900) add(70, 'duplicate_payload');\n    if (context.recentCount >= 7) add(100, 'session_rate_limit', true);\n    else if (context.recentCount >= 4) add(55, 'session_burst');\n\n    return {\n      decision: hard || score >= 70 ? 'blocked' : score >= 45 ? 'review' : 'allowed',\n      score: score,\n      rules: rules,\n      linkCount: links,\n      domainCount: domains,\n      hard: hard\n    };\n  }\n\n  function payloadHash(data) {\n    return hash([data.profile, data.email.toLowerCase(), data.phone.replace(/\\D/g, ''), data.name.toLowerCase(), data.message.toLowerCase(), data.other.toLowerCase()].join('|'));\n  }\n\n  function historyContext(profile, payload) {\n    var now = Date.now();\n    var payloadRecord = readJson('payload:' + payload, null);\n    var duplicateSeconds = payloadRecord && payloadRecord.time ? Math.max(1, Math.round((now - payloadRecord.time) / 1000)) : 0;\n    var attempts = readJson('rate:' + profile, []).filter(function (time) { return now - time < 600000; });\n    return { duplicateSeconds: duplicateSeconds, recentCount: attempts.length, attempts: attempts, now: now };\n  }\n\n  function remember(profile, payload, history) {\n    history.attempts.push(history.now);\n    writeJson('rate:' + profile, history.attempts.slice(-10));\n    writeJson('payload:' + payload, { time: history.now });\n  }\n\n  function setStatus(form, message) {\n    var status = form.querySelector('[data-fhfg-status]');\n    if (!status) return;\n    status.textContent = message;\n    status.hidden = false;\n    status.setAttribute('tabindex', '-1');\n    status.focus({ preventScroll: false });\n  }\n\n  function emitDecision(profile, result) {\n    var detail = { form_type: profile, decision: result.decision, score_band: result.score >= 100 ? 'high' : result.score >= 70 ? 'blocked' : 'review', rules: result.rules.slice(0, 6), link_count: result.linkCount };\n    if (typeof document !== 'undefined') document.dispatchEvent(new CustomEvent('freedom:form-spam-' + result.decision, { detail: detail }));\n    if (globalRoot.dataLayer && typeof globalRoot.dataLayer.push === 'function') globalRoot.dataLayer.push({ event: 'form_spam_' + result.decision, form_type: profile, decision: result.decision });\n  }\n\n  function decorate(form) {\n    if (!form || form.dataset.fhfgReady === 'true') return;\n    var profile = profileFor(form);\n    if (!profile) return;\n    form.dataset.fhfgReady = 'true';\n    var fieldName = profile === 'comment' ? 'comment[company_url]' : profile === 'account' ? 'customer[nickname]' : 'contact[company_url]';\n    var trap = document.createElement('div');\n    trap.className = 'fhfg-trap';\n    trap.setAttribute('aria-hidden', 'true');\n    trap.innerHTML = '<label>Leave this field empty<input type=\"text\" tabindex=\"-1\" autocomplete=\"off\" inputmode=\"none\"></label>';\n    trap.querySelector('input').name = fieldName;\n    trap.querySelector('input').dataset.fhfgHoneypot = 'true';\n    form.insertBefore(trap, form.firstChild);\n    var status = document.createElement('div');\n    status.className = 'alert-message alert-error fhfg-status';\n    status.setAttribute('role', 'alert');\n    status.setAttribute('aria-live', 'polite');\n    status.setAttribute('data-fhfg-status', 'true');\n    status.hidden = true;\n    var submit = form.querySelector('[type=\"submit\"]');\n    if (submit && submit.parentNode) submit.parentNode.insertBefore(status, submit);\n    else form.appendChild(status);\n    state.set(form, { profile: profile, loadedAt: Date.now() });\n  }\n\n  function eligibleForms(rootNode) {\n    var scope = rootNode && rootNode.querySelectorAll ? rootNode : document;\n    return Array.prototype.slice.call(scope.querySelectorAll('form')).filter(function (form) { return Boolean(profileFor(form)); });\n  }\n\n  function handleSubmit(event) {\n    var form = event.target;\n    if (!(form instanceof HTMLFormElement)) return;\n    decorate(form);\n    var record = state.get(form);\n    if (!record) return;\n    var data = collect(form, record.profile);\n    var payload = payloadHash(data);\n    var history = historyContext(record.profile, payload);\n    var trap = form.querySelector('[data-fhfg-honeypot]');\n    var result = scoreSubmission(data, {\n      elapsed: Date.now() - record.loadedAt,\n      honeypot: Boolean(trap && clean(trap.value)),\n      duplicateSeconds: history.duplicateSeconds,\n      recentCount: history.recentCount\n    });\n    remember(record.profile, payload, history);\n    if (result.decision === 'blocked') {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      setStatus(form, 'We could not send that form. Please review the information and try again, or contact Freedom HVAC Supply directly if you need help.');\n      emitDecision(record.profile, result);\n      return false;\n    }\n    if (result.decision === 'review') emitDecision(record.profile, result);\n    return true;\n  }\n\n  function start() {\n    if (globalRoot.__freedomFormGuardStarted) return;\n    globalRoot.__freedomFormGuardStarted = true;\n    function initialize() {\n      eligibleForms(document).forEach(decorate);\n      document.addEventListener('submit', handleSubmit, true);\n      if (typeof MutationObserver === 'function') {\n        new MutationObserver(function (mutations) {\n          mutations.forEach(function (mutation) {\n            Array.prototype.forEach.call(mutation.addedNodes || [], function (node) {\n              if (node.nodeType !== 1) return;\n              if (node.matches && node.matches('form')) decorate(node);\n              eligibleForms(node).forEach(decorate);\n            });\n          });\n        }).observe(document.documentElement, { childList: true, subtree: true });\n      }\n    }\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initialize, { once: true });\n    else initialize();\n  }\n\n  return {\n    clean: clean,\n    countLinks: countLinks,\n    distinctLinkDomains: distinctLinkDomains,\n    validEmail: validEmail,\n    validPhone: validPhone,\n    hash: hash,\n    scoreSubmission: scoreSubmission,\n    payloadHash: payloadHash,\n    start: start\n  };\n});\n"],
  "mappings": "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",
  "names": []
}
