1var __defProp=Object.defineProperty,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__publicField=(e,t,r)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,r);!function(){"use strict";const e=function(){const e=new URLSearchParams(window.location.search).has("silentshield-debug");function t(e){return["[SilentShield]"].concat(Array.from(e))}return{log:(...r)=>e&&console.log(...t(r)),debug:(...r)=>e&&console.debug(...t(r)),warn:(...r)=>e&&console.warn(...t(r)),error:(...r)=>e&&console.error(...t(r))}}();class t{constructor(e,t={}){this.container=e,this.options=Object.assign({className:"f12-captcha-overlay",autoPosition:!0,debug:!1},t)}show(){const{className:t,autoPosition:r}=this.options,o=window.getComputedStyle(this.container);if(r&&"static"===o.position&&(this.container.style.position="relative"),!this.container.querySelector(`.${t}`)){const r=document.createElement("div");r.className=t,this.container.appendChild(r),e.log("Overlay hinzugefügt",this.container)}}hide(){const{className:t}=this.options,r=this.container.querySelector(`.${t}`);r&&r.remove(),e.log("Overlay entfernt",this.container)}}function r(t){if(e.debug("[ensureFormId] aufgerufen",t),window.jQuery&&t instanceof window.jQuery&&(e.debug("[ensureFormId] jQuery-Objekt erkannt â form[0] wird verwendet"),t=t[0]),!(t instanceof HTMLFormElement))return e.error("[ensureFormId] Ungültiges Formular-Element übergeben:",t),null;let r=t.id;return r&&""!==r.trim()||(r="f12-form-"+Math.random().toString(36).substring(2,10),t.id=r,e.debug("[ensureFormId] Formular ohne ID erkannt â generische ID vergeben:",r)),r}const o=new class{constructor(){this.events={}}on(t,r){this.events[t]||(this.events[t]=[]),this.events[t].push(r),e.debug(`[EventBus] Listener registriert für: ${t}`)}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(t,r={}){e.debug(`[EventBus] Event ausgelöst: ${t}`,r),this.events[t]&&this.events[t].forEach(o=>{try{o(r)}catch(n){e.error(`[EventBus] Fehler im Listener für ${t}`,n)}})}};new class{constructor(){o.on("captcha:reloadRequested",({formId:t,captchaInputId:r})=>{e.debug("[EventBus] captcha:reloadRequested empfangen",{formId:t,captchaInputId:r}),r?this.reloadSingleCaptchaById(r,t):this.reloadCaptcha(t)}),o.on("captcha:reloadAllRequested",()=>{e.debug("[EventBus] captcha:reloadAllRequested empfangen"),this.reloadAllCaptchas()})}reloadAllCaptchas(){e.debug("Reload all Captchas"),document.querySelectorAll(".f12-captcha").forEach(t=>{const o=t.querySelector(".f12c");if(o&&o.id){var n=r(t.closest("form"));e.debug("Reload Captcha gestartet",n),this.reloadSingleCaptchaById(o.id,n)}})}reloadCaptcha(t){var r=document.getElementById(t);if(!r)return void e.error("Form not found",t);e.debug("Reload Captcha für Formular gestartet",t);const o=r.querySelectorAll(".f12-captcha");o.length?o.forEach(e=>{const r=e.querySelector(".f12c");r&&r.id&&this.reloadSingleCaptchaById(r.id,t)}):e.debug("No captcha container in form (JS-only protection):",t)}async reloadSingleCaptchaById(r,n){e.debug("Reload einzelnes Captcha gestartet",{captchaInputId:r,formId:n});const i=document.getElementById(r);if(!i)return void e.error("Captcha-Input nicht gefunden",r);const a=i.closest(".f12-captcha");if(!a)return void e.error("Captcha-Container nicht gefunden für Input",r);const s=new t(a);s.show();const c="hash_"+r,d=document.getElementById(c),m=a.querySelector(".c-data"),u=i.dataset.method;e.log("Captcha Reload AJAX",{method:u,captchaInputId:r});try{const t=await fetch(f12_cf7_captcha.resturl+"captcha/reload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({captchamethod:u})});if(!t.ok)throw new Error(`HTTP ${t.status}`);const o=await t.json();if("image"===u){const t=m.querySelector(".captcha-image");t&&(e.debug("Ersetze Captcha-Bild",{captchaInputId:r,newLabel:o.label.substring(0,100)}),t.outerHTML=o.label)}if("math"===u){const e=m.querySelector(".captcha-calculation");e&&(e.outerHTML=o.label)}d&&(d.value=o.hash,d.setAttribute("value",o.hash)),this.clearReloadError(a),e.log("Captcha neu gesetzt",{method:u,captchaInputId:r,hash:o.hash})}catch(l){e.error("Captcha reload Fehler",l),this.showReloadError(a,l)}finally{s.hide(),o.emit("captcha:reloaded",{formId:n,captchaInputId:r})}}showReloadError(e,t){e.classList.add("f12-captcha--reload-failed");const r=window.f12_cf7_captcha&&f12_cf7_captcha.i18n&&f12_cf7_captcha.i18n.reloadFailed||"Could not load a new captcha. Please try again.";let o=e.querySelector(".c-reload-error");
1o||(o=document.createElement("p"),o.className="c-reload-error",o.setAttribute("role","alert"),e.appendChild(o)),o.textContent=r,console.warn("[SilentShield] Captcha reload failed:",t&&t.message?t.message:t)}clearReloadError(e){e.classList.remove("f12-captcha--reload-failed");const t=e.querySelector(".c-reload-error");t&&t.remove()}};const n=class t{constructor(){o.on("captcha:reloadRequested",({formId:t})=>{e.debug("[EventBus] captcha:reloadRequested empfangen",t),this.reloadTimer(t)}),o.on("captcha:reloadAllRequested",()=>{e.debug("[EventBus] captcha:reloadAllRequested empfangen"),this.reloadAllTimers()}),o.on("captcha:init",()=>this.renewStaleTimers()),window.addEventListener("pageshow",t=>{t.persisted&&(e.debug("[MultipleSubmissionProtection] bfcache restore â Timer erneuern"),this.reloadAllTimers())}),this.inFlight=new Set}reloadAllTimers(){document.querySelectorAll("form").forEach(e=>{const t=r(e);t&&this.reloadTimer(t)})}renewStaleTimers(){const o=Date.now()/1e3;document.querySelectorAll("form").forEach(n=>{const i=n.querySelectorAll(".f12t .f12_timer");if(!i.length)return;if(![...i].some(e=>{const r=parseInt(e.dataset.issued||"",10);return!Number.isFinite(r)||o-r>t.STALE_MARKUP_SECONDS}))return;const a=r(n);a&&(e.debug("[MultipleSubmissionProtection] Markup wirkt gecacht â Timer erneuern",a),this.reloadTimer(a))})}async reloadTimer(t){if(!t)return;const r=document.getElementById(t);if(!r)return void e.error("Form not found",t);const o=r.querySelectorAll(".f12t");if(o.length)if(this.inFlight.has(t))e.debug("Timer-Reload läuft bereits für",t);else{this.inFlight.add(t),e.debug("Reload Timer started",t);try{for(const t of o){const r=t.querySelector(".f12_timer");if(!r){e.warn("Kein Timer-Feld gefunden in",t);continue}const o=await fetch(f12_cf7_captcha.resturl+"timer/reload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(!o.ok)throw new Error(`HTTP ${o.status}`);const n=await o.json();if(!n||!n.hash)throw new Error("Antwort ohne Hash");this.applyHash(r,n.hash),e.log("Timer neu gesetzt",n.hash)}}catch(n){this.reportFailure(r,t,n)}finally{this.inFlight.delete(t)}}else e.debug("Keine Timer-Container gefunden im Formular",t)}applyHash(e,t){e.value=t,e.setAttribute("value",t),e.dataset.issued=String(Math.floor(Date.now()/1e3))}reportFailure(e,t,r){e.classList.add("f12-timer--reload-failed"),console.warn("[SilentShield] Timer reload failed for",t,"-",r&&r.message?r.message:r)}};__publicField(n,"STALE_MARKUP_SECONDS",120),new n;const i=class t{constructor(){o.on("captcha:initForm",({form:t,formId:r})=>{e.debug("[EventBus] captcha:initForm received",r),this.setStartTime(r)}),o.on("captcha:handleVerify",({form:t,formId:r,originalEvent:o})=>{e.debug("[EventBus] captcha:handleVerify received",r),this.setEndTime(r)}),o.on("captcha:JavaScriptProtection:setStartTimeRequested",({formId:t})=>{e.debug("[EventBus] captcha:JavaScriptProtection:setStartTimeRequested received",t),this.setStartTime(t)}),this.registerSubmitFallback()}registerSubmitFallback(){document.addEventListener("submit",e=>{e.target instanceof HTMLFormElement&&this.stampEndTime(e.target,"submit")},!0),document.addEventListener("click",e=>{const t=e.target instanceof Element?e.target.closest('input[type="submit"], button[type="submit"], button:not([type])'):null;if(!t)return;const r=t.form||t.closest("form");r&&this.stampEndTime(r,"click")},!0)}stampEndTime(r,o){const n=r.querySelector(".js_end_time");if(!n||""!==n.value)return;const i=r.querySelector(".js_start_time");i&&""===i.value&&(i.value=t.scriptLoadedAt),n.value=Date.now()/1e3,e.debug(`[JavaScriptProtection] Fallback stamped js_end_time via ${o}`,r.id)}setStartTime(t){var r=document.getElementById(t);if(!r)return void e.error("Form not found");e.debug("js_start_time started");const o=Date.now()/1e3,n=r.querySelector(".js_start_time");n?(n.value=o,e.log("js_start_time set",o,r)):e.error("js_start_time field not found")}setEndTime(t){var r=document.getElementById(t);if(!r)return e.error("Form not found"),void o.emit("submit:ready",{formId:t,module:"JavaScriptProtection"});e.debug("js_end_time started");const n=Date.now()/1e3,i=r.querySelector(".js_end_time");if(!i)return e.error("js_end_time field not found"),void o.emit("submit:ready",{formId:t,module:"JavaScriptProtection"});i.value=n,e.log("js_end_time set",n,r),o.emit("submit:ready",{formId:t,module:"JavaScriptProtection"})}};__publicField(i,"scriptLoadedAt",Date.now()/1e3),new i;new class{constructor(t=["JavaScriptProtection"]){this.requiredModules=t,this.pending=new Map,this.activeSubmits=new WeakSet,o.on("captcha:verifyRequested",async({form:t,formId:r,originalEvent:n,continue:i})=>{this.activeSubmits.has(t)?e.debug("[SubmitGuard] Submit already in progress",r):(e.debug("[SubmitGuard] verifyRequested",{form:t,formId:r,originalEvent:n}),this.startBarrier(t,r,n,i),o.emit("captcha:handleVerify",{form:t,formId:r,originalEvent:n}))}),o.on("submit:ready",({formId:e,module:t})=>{this.markReady(e,t)})}startBarrier(t,r,o,n){this.pending.set(r,{next:()=>{this.activeSubmits.add(t),e.debug("[SubmitGuard] Manual submit started",r),Promise.resolve().then(()=>n()),setTimeout(()=>this.activeSubmits.delete(t),500)},waiting:new Set(this.requiredModules)}),e.debug(`[SubmitGuard] Barrier started for ${r}:`,this.requiredModules)}markReady(t,r){const o=this.pending.get(t);o&&(o.waiting.delete(r),e.debug(`[SubmitGuard] Modul "${r}" ready â waiting for: ${[...o.waiting].join(", ")}`),0===o.waiting.size&&(e.debug(`[SubmitGuard] All modules ready â Submit for ${t}`),o.next(),this.pending.delete(t)))}};function a(t,n,i="[FormInterceptor]"){if(!(t instanceof HTMLFormElement))return!1;if("1"===t.dataset.ssBound)return!1;const a=r(t);return t.dataset.ssBound="1",e.debug(`${i} native submit listener gebunden`,a),t.addEventListener("submit",r=>{if(null==n?void 0:n.has(t))return void e.debug(`${i} Eigener Submit â durchlassen`,a);r.preventDefault(),r.stopImmediatePropagation(),e.debug(`${i} native submit intercepted`,a);o.emit("captcha:verifyRequested",{form:t,formId:a,originalEvent:r,continue:()=>{e.debug(`${i} Captcha validiert â starte Submit für ${a}`),null==n||n.add(t);try{HTMLFormElement.prototype.submit.call(t)}catch(r){e.error(`${i} Submit fehlgeschlagen`,r),null==n||n.delete(t)}}})},!0),!0}new class{constructor(){document.addEventListener("click",e=>{const t=e.target.closest(".captcha-audio-btn");t&&(e.preventDefault(),e.stopPropagation(),this.handleAudioClick(t))}),o.on("captcha:reloaded",()=>{window.speechSynthesis&&window.speechSynthesis.cancel()})}async handleAudioClick(t){if("true"===t.getAttribute("aria-busy"))return;const r=t.closest(".f12-captcha");if(!r)return void e.error("AudioCaptcha: No captcha container found");const o=r.querySelector(".f12c");if(!o)return void e.error("AudioCaptcha: No captcha input found");const n=o.dataset.method,i=r.querySelector('input[type="hidden"]');if("math"===n){const e=r.querySelector(".captcha-calculation");return void(e&&this.speak(this.mathToSpeechText(e.textContent.trim())))}if("image"===n){t.setAttribute("aria-busy","true");try{const t=await fetch(f12_cf7_captcha.resturl+"captcha/audio",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({hash:i.value,captchamethod:n})});if(!t.ok)return void e.error("AudioCaptcha: HTTP error",t.status);const r=await t.json();r.text&&this.speak(r.text)}catch(a){e.error("AudioCaptcha: Fetch error",a)}finally{t.setAttribute("aria-busy","false")}}}mathToSpeechText(e){return e.replace(/\+/g," plus ").replace(/-/g," minus ").replace(/\*/g," times ").replace(/Ã/g," times ").replace(/=/g," equals ")}speak(t){if(!window.speechSynthesis)return void e.error("AudioCaptcha: Web Speech API not supported");
1window.speechSynthesis.cancel();const r=new SpeechSynthesisUtterance(t);r.rate=.8,r.lang=document.documentElement.lang||"en",window.speechSynthesis.speak(r)}};new class{constructor(){this.enabled=!1,this.recentSubmits=new WeakSet,o.on("captcha:component:enable",t=>{"default"===t&&(this.enabled||(this.enabled=!0,e.debug("[DefaultForms] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][DefaultForms] captcha:init received"),this.init())})}isKnownFrameworkForm(e){var t,r;return e.closest(".wpcf7")||e.closest(".fusion-form")||(null==(t=e.id)?void 0:t.startsWith("avada-form-"))||e.closest(".frm-fluent-form")||e.closest(".gform_wrapper")||(null==(r=e.id)?void 0:r.startsWith("gform_"))||e.hasAttribute("data-formid")||e.closest(".elementor-form")||e.hasAttribute("data-elementor-id")||e.classList.contains("woocommerce-form")||e.classList.contains("woocommerce-form-login")||e.classList.contains("woocommerce-form-register")||e.classList.contains("woocommerce-ResetPassword")||e.classList.contains("woocommerce-checkout")||e.closest("form.checkout")||"loginform"===e.id||"registerform"===e.id||"lostpasswordform"===e.id||e.closest("#login")||e.closest(".login")||e.closest(".register")}init(){e.debug("[DefaultForms] init"),document.querySelectorAll("form").forEach(t=>{this.isKnownFrameworkForm(t)?e.debug("[DefaultForms] Ãbersprungen (bekanntes Framework)",t):a(t,this.recentSubmits,"[DefaultForms]")})}};new class{constructor(){this.enabled=!1,this.recentSubmits=new WeakSet,o.on("captcha:component:enable",t=>{"ControllerComments"===t&&(this.enabled||(this.enabled=!0,e.debug("[Comments] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][Comments] captcha:init received"),this.init())})}init(){e.debug("[Comments] init"),document.querySelectorAll("#commentform, form.comment-form").forEach(e=>{a(e,this.recentSubmits,"[Comments]")})}};new class{constructor(){this.enabled=!1,this.recentSubmits=new WeakSet,o.on("captcha:component:enable",t=>{"ControllerJetForm"===t&&(this.enabled||(this.enabled=!0,e.debug("[JetForm] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][JetForm] captcha:init received"),this.init())})}init(){e.debug("[JetForm] init"),document.querySelectorAll("form.jet-form-builder, .jet-form-builder form").forEach(e=>{a(e,this.recentSubmits,"[JetForm]")})}};new class{constructor(){this.enabled=!1,this.recentSubmits=new WeakSet,o.on("captcha:component:enable",t=>{"ControllerUltimateMember"===t&&(this.enabled||(this.enabled=!0,e.debug("[UltimateMember] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][UltimateMember] captcha:init received"),this.init())})}init(){e.debug("[UltimateMember] init"),document.querySelectorAll('.um-form form, form.um-login, form.um-register, form[id^="um_"]').forEach(e=>{a(e,this.recentSubmits,"[UltimateMember]")})}};new class{constructor(){this.enabled=!1,this.recentSubmits=new WeakSet,o.on("captcha:component:enable",t=>{"ControllerCF7"===t&&(this.enabled=!0,e.debug("[ContactForm7] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[ContactForm7] captcha:init received"),this.init())})}getFormFromCF7Event(t){var r,o,n;const i=null==(r=null==t?void 0:t.detail)?void 0:r.contactFormId,a=null==(n=null==(o=null==t?void 0:t.detail)?void 0:o.apiResponse)?void 0:n.into,s=a&&document.querySelector(a)||i&&document.querySelector(`div.wpcf7[id^="wpcf7-f${i}-"]`)||null;if(!s)return e.warn("[ContactForm7] Kein WPCF7-Container gefunden",{formId:i,intoSelector:a}),null;const c=s.querySelector("form");return c||(e.warn("[ContactForm7] Kein <form> im WPCF7-Container gefunden",s),null)}init(){const t=this;e.debug("[ContactForm7] init");const n=document.querySelectorAll(".wpcf7 form");n.length?(n.forEach(t=>{const n=r(t);"1"!==t.dataset.ssBound&&(t.dataset.ssBound="1",e.debug("[ContactForm7] native submit listener gebunden",n),t.addEventListener("submit",r=>{var i;if("1"===t.dataset.ssManualSubmit||(null==(i=this.recentSubmits)?void 0:i.has(t)))return e.debug("[ContactForm7] Ignoriere manuellen oder laufenden Submit",n),void delete t.dataset.ssManualSubmit;r.preventDefault(),r.stopImmediatePropagation(),e.debug("[ContactForm7] native submit intercepted (before CF7)",n);o.emit("captcha:verifyRequested",{form:t,formId:n,originalEvent:r,continue:()=>{var r;e.debug("[ContactForm7] Captcha validiert â starte CF7 Submit",n),t.dataset.ssManualSubmit="1",null==(r=this.recentSubmits)||r.add(t),setTimeout(()=>{var e;null==(e=this.recentSubmits)||e.delete(t),delete t.dataset.ssManualSubmit},2e3),window.wpcf7&&"function"==typeof window.wpcf7.submit?window.wpcf7.submit(t):(e.warn("[ContactForm7] Kein window.wpcf7.submit gefunden â Fallback form.submit()",n),t.submit())}})},!0))}),document.addEventListener("wpcf7mailsent",n=>{const i=t.getFormFromCF7Event(n);if(!i)return e.debug("[ContactForm7] wpcf7mailsent: Kein Formular gefunden â reloadAll"),void o.emit("captcha:reloadAllRequested");const a=r(i);o.emit("captcha:reloadRequested",{formId:a}),e.log("wpcf7mailsent â Captcha reloaded",a)},!1),document.addEventListener("wpcf7submit",n=>{const i=t.getFormFromCF7Event(n);if(!i)return e.debug("[ContactForm7] wpcf7submit: Kein Formular gefunden â reloadAll"),void o.emit("captcha:reloadAllRequested");const a=r(i);o.emit("captcha:reloadRequested",{formId:a}),e.log("wpcf7submit â Captcha reloaded",a)}
1,!1),document.addEventListener("wpcf7spam",n=>{const i=t.getFormFromCF7Event(n);if(!i)return void o.emit("captcha:reloadAllRequested");i.querySelectorAll(".f12c").forEach(e=>{e.classList.add("wpcf7-not-valid","not-valid")});const a=r(i);e.warn("wpcf7spam â Captcha als not-valid markiert",a)},!1)):e.debug("[ContactForm7] keine wpcf7-Formulare gefunden")}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerElementor"===t&&(this.enabled=!0,e.debug("[ElementorForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][ElementorForms] captcha:init received"),this.waitForElementor())})}waitForElementor(t=0){if(!window.elementorFrontend)return t>=20?void e.warn("[ElementorForms] Elementor Frontend nach 20 Versuchen nicht gefunden â Abbruch"):(e.debug("[ElementorForms] Elementor Frontend nicht vorhanden â retry in 300ms"),void setTimeout(()=>this.waitForElementor(t+1),300));if(elementorFrontend.hooks)return e.debug("[ElementorForms] Elementor hooks vorhanden â sofort registrieren"),void this.registerHook();e.debug("[ElementorForms] Elementor hooks fehlen â warte aktiv auf Initialisierung"),document.addEventListener("elementor/frontend/init",()=>{e.debug("[ElementorForms] Elementor init Event empfangen â registriere Hook"),this.registerHook()});let r=0;const o=setInterval(()=>{elementorFrontend.hooks?(clearInterval(o),e.debug("[ElementorForms] Elementor hooks durch Polling gefunden â registriere Hook"),this.registerHook()):r++>20&&(clearInterval(o),e.warn("[ElementorForms] Elementor hooks nach 20 Versuchen nicht gefunden"))},300)}registerHook(){e.debug("[ElementorForms] Initializing Elementor form hooks"),"undefined"!=typeof elementorFrontend&&elementorFrontend.hooks&&"function"==typeof elementorFrontend.hooks.addAction?(elementorFrontend.hooks.addAction("frontend/element_ready/form.default",t=>{e.debug("[ElementorForms] Elementor form widget ready â bind forms");const r=t instanceof HTMLElement?t:(null==t?void 0:t[0])??document;e.debug(t),this.bindForms(r)}),this.bindForms(document),this.startFormObserver(document)):e.warn("[ElementorForms] Elementor frontend hooks not available")}startFormObserver(t=document){this._formObserver||(this._formObserver=new MutationObserver(t=>{var r,o;let n=!1;for(const e of t){if(null==(o=(r=e.target).closest)?void 0:o.call(r,".f12-captcha"))return;if("childList"===e.type&&(e.addedNodes.length||e.removedNodes.length)){n=!0;break}}n&&(e.debug("[ElementorForms] DOM changed â rebinding forms"),this.bindForms(document,!0))}),this._formObserver.observe(t,{childList:!0,subtree:!0}),e.debug("[ElementorForms] Form MutationObserver started"))}bindForms(t=document,n=!1){const i=t.querySelectorAll("form.elementor-form");i.length?(e.debug(i),i.forEach(t=>{if("1"===t.dataset.ssBound&&!1===n)return;t.dataset.ssBound="1";const i=r(t);e.debug("[ElementorForms] Formular gebunden",i),t.dataset.ssCaptchaInitialized||(t.dataset.ssCaptchaInitialized="1",o.emit("captcha:reloadRequested",{formId:i}),e.debug("[ElementorForms] Initial captcha load",i)),t.addEventListener("submit",n=>{if("1"===t.dataset.ssSubmitting)return;const i=r(t);e.debug("[ElementorForms] submit abgefangen",i),n.preventDefault(),n.stopImmediatePropagation();o.emit("captcha:verifyRequested",{form:t,formId:i,originalEvent:n,continue:()=>{var r,o,n,a;e.debug("[ElementorForms] Submit wieder freigegeben",i),t.dataset.ssSubmitting="1";const s=jQuery(t);if(!((null==(o=null==(r=window.elementorProFrontend)?void 0:r.modules)?void 0:o.forms)||(null==(a=null==(n=window.elementorProFrontend)?void 0:n.modules)?void 0:a.form)))return e.error("[ElementorForms] Kein Formularmodul gefunden â Fallback native submit"),void t.submit();e.debug("[ElementorForms] Aktives Elementor Modul erkannt"),e.debug("[ElementorForms] AJAX-Handler aktiv â trigger submit"),s.trigger("submit"),setTimeout(()=>delete t.dataset.ssSubmitting,500)}})},!0)}),e.debug("[ElementorForms] Elementor Formular gebunden")):e.debug("[ElementorForms] keine Formulare im Scope gefunden")}};const s='[data-element_type="e-form"]';new class{constructor(){this.enabled=!1,this.bridgeInstalled=!1,o.on("captcha:component:enable",t=>{"ControllerElementor"===t&&(this.enabled=!0,e.debug("[ElementorAtomicForms] Enabled by component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][ElementorAtomicForms] captcha:init received"),this.installRequestBridge(),this.initForms())})}installRequestBridge(){if(this.bridgeInstalled)return;if("function"!=typeof window.fetch)return void e.warn("[ElementorAtomicForms] fetch unavailable â atomic forms cannot be protected");this.bridgeInstalled=!0;const t=window.fetch;window.fetch=(...r)=>{var o;let n=!1,i=null;try{const e=null==(o=r[1])?void 0:o.body;e instanceof FormData&&"elementor_pro_atomic_forms_send_form"===e.get("action")&&(this.appendCaptchaFields(e),n=!0,i=e.get("form_id"))}catch(s){e.error("[ElementorAtomicForms] Could not extend the request",s)}const a=t.apply(window,r);return n?a.finally(()=>this.refreshAfterSubmit(i)):a},e.debug("[ElementorAtomicForms] Request bridge installed")}appendCaptchaFields(t){const r=t.get("form_id"),o=this.findForm(r);if(!o)return void e.warn("[ElementorAtomicForms] No atomic form found for id",r);o.querySelectorAll("input:not([data-interaction-id]), select:not([data-interaction-id]), textarea:not([data-interaction-id])").forEach(r=>{const o=r.getAttribute("name");o&&"file"!==r.type&&("checkbox"!==r.type&&"radio"!==r.type||r.checked)&&(t.has(o)||
1(t.append(o,r.value),e.debug("[ElementorAtomicForms] Field added to request",o)))})}findForm(e){if(!e)return document.querySelector(s);const t=window.CSS&&CSS.escape?CSS.escape(e):e;return document.querySelector(`${s}[data-id="${t}"]`)}refreshAfterSubmit(t){const n=this.findForm(t);if(!n)return e.warn("[ElementorAtomicForms] Submitted form not found â reloading all",t),void o.emit("captcha:reloadAllRequested");const i=r(n);e.debug("[ElementorAtomicForms] Submit finished â reloading captcha",i),o.emit("captcha:reloadRequested",{formId:i})}initForms(){const t=document.querySelectorAll(s);t.length?t.forEach(t=>{if("1"===t.dataset.ssAtomicInitialized)return;t.dataset.ssAtomicInitialized="1";const n=r(t);e.debug("[ElementorAtomicForms] Atomic form initialized",n),o.emit("captcha:reloadRequested",{formId:n})}):e.debug("[ElementorAtomicForms] No atomic forms on this page")}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerAvada"===t&&(this.enabled=!0,e.debug("[AvadaForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][AvadaForms] captcha:init received"),this.patchAvadaSubmit(),this.registerJqueryEvents(),this.observeAjaxComplete())}),o.on("captcha:avada:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][AvadaForms] captcha:avada:error received",t,o),this.showErrors(o,r))}),o.on("captcha:avada:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][AvadaForms] captcha:avada:success received",t,o),this.removeErrors(r))})}removeErrors(e){e.find(".f12-captcha-error").remove(),e.find(".fusion-form-error").removeClass("fusion-form-error")}showErrors(e,t){e&&e.errors&&(t.find(".f12-captcha-error").remove(),jQuery.each(e.errors,function(e,r){var o=t.find('[name="'+e+'"]');o.length?(o.after('<span class="f12-captcha-error fusion-form-error-message">'+r+"</span>"),o.addClass("fusion-form-error")):t.prepend('<div class="f12-captcha-error fusion-form-error-message">'+r+"</div>")}))}observeAjaxComplete(t=0){if(!window.jQuery)return t>=20?void e.warn("[AvadaForms] jQuery nicht gefunden â ajaxComplete deaktiviert"):setTimeout(()=>this.observeAjaxComplete(t+1),300);const r=window.jQuery;e.debug("[AvadaForms] Registriere globales ajaxComplete-Event"),r(document).ajaxComplete((t,n,i)=>{try{const t=JSON.parse(n.responseText);if(!t||!t.status)return;const a=r((null==i?void 0:i.context)||"form.fusion-form");"error"===t.status&&t.errors&&(e.debug("[AvadaForms] AJAX error â Captcha-Reload ausgelöst"),o.emit("captcha:avada:error",{formId:a.attr("id"),form:a,response:t}),o.emit("captcha:reloadRequested",{formId:a.attr("id")})),"success"===t.status&&(o.emit("captcha:avada:success",{formId:a.attr("id"),form:a,response:t}),e.debug("[AvadaForms] AJAX success â Fehler entfernt"))}catch(a){}})}registerJqueryEvents(t=0){if(!window.jQuery)return t>=20?void e.warn("[AvadaForms] jQuery nicht gefunden â Events deaktiviert"):(e.debug(`[AvadaForms] jQuery noch nicht verfügbar â retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.registerJqueryEvents(t+1),300));const r=window.jQuery;e.debug("[AvadaForms] Registriere jQuery Events â fusion-form-ajax-submitted"),r(window).on("fusion-form-ajax-submitted",(t,n)=>{var i;const a=null==(i=null==n?void 0:n.formConfig)?void 0:i.form_id;if(!a)return void e.warn("[AvadaForms] Keine form_id in payload gefunden",n);const s=r(`#avada-form-${a},\n #fusion-form-${a},\n .fusion-form-${a},\n form[data-form-id="${a}"]`);let c=s.filter("form").first();if(!c.length&&s.length&&s.each(function(){const e=r(this).find("form.fusion-form").first();e.length&&!c.length&&(c=e)}),!c.length){const t=`avada-form-${a}`;return e.warn("[AvadaForms] Kein Formular im DOM gefunden, Fallback-ID verwendet:",t),void o.emit("captcha:reloadRequested",{formId:t})}const d=c.attr("id")||`avada-form-${a}`;e.debug("[AvadaForms] fusion-form-ajax-submitted erkannt â Formular-ID:",d),o.emit("captcha:reloadRequested",{formId:d})})}patchAvadaSubmit(t=0){if(!window.fusionForms||"function"!=typeof window.fusionForms.submitForm)return t>=20?void e.warn("[AvadaForms] jQuery nicht gefunden â Events deaktiviert"):(e.debug("[AvadaForms] fusionForms noch nicht geladen â retry in 300ms"),setTimeout(()=>this.patchAvadaSubmit(t+1),300));e.debug("[AvadaForms] Patche fusionForms.submitForm");const n=window.fusionForms.submitForm;window.fusionForms.submitForm=(t,i)=>{const a=i instanceof jQuery?i[0]:i,s=r(a);
1e.debug("[AvadaForms] Intercepted submitForm()",s),t.preventDefault(),t.stopImmediatePropagation();o.emit("captcha:verifyRequested",{form:a,formId:s,originalEvent:t,continue:()=>{e.debug("[AvadaForms] Weiter mit original Avada submitForm()",s),n.call(window.fusionForms,t,i)}})}}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerFluentform"===t&&(this.enabled=!0,e.debug("[FluentForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][FluentForms] captcha:init received"),this.patchFluentForms(),this.registerFluentFormEvents())}),o.on("captcha:fluent:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][FluentForms] captcha:fluent:error received",t,o),this.showErrors(o,r))}),o.on("captcha:fluent:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][FluentForms] captcha:fluent:success received",t,o),this.removeErrors(r))})}getFormElementFromEventArg(t){const r=window.jQuery;if(!r)return null;if(t instanceof HTMLFormElement)return r(t);if(t&&t.jquery)return t;if(t&&t.form){if(t.form instanceof HTMLFormElement)return r(t.form);if(t.form&&t.form.jquery)return t.form}if("string"==typeof t){const e=r(`#${t}`);if(e.length)return e}return e.warn("[FluentForms] getFormElementFromEventArg(): Kein gültiges Formular erkannt",t),null}removeErrors(t){const r=window.jQuery;if(!r||!t||!t.length)return;const o=t.attr("id")||"(unknown)";e.debug("[FluentForms] removeErrors() gestartet",o);try{t.find(".f12-captcha-error").remove(),t.find(".ff-el-is-error").removeClass("ff-el-is-error"),t.find(".ff_has_error").removeClass("ff_has_error"),t.find(".error.text-danger").remove(),t.find("div.error").remove(),t.parent().find(".ff-errors-in-stack").hide().empty();const n=t.attr("id");n&&(r(`#${n}_success`).remove(),r(`#${n}_errors`).html("")),t.find('[aria-invalid="true"]').attr("aria-invalid","false"),t.removeClass("ff_submitting ff_force_hide"),e.debug("[FluentForms] removeErrors() abgeschlossen",o)}catch(n){e.error("[FluentForms] Fehler in removeErrors()",n)}}showErrors(e,t){const r=window.jQuery;r&&t&&e&&e.errors&&(t.find(".f12-captcha-error").remove(),r.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after(`<span class="f12-captcha-error ff-el-is-error">${r}</span>`),o.addClass("ff-el-is-error")):t.prepend(`<div class="f12-captcha-error ff-el-is-error">${r}</div>`)}))}patchFluentForms(t=0){const n=window.jQuery;if(!n)return t>=20?void e.warn("[FluentForms] jQuery nicht gefunden â patch deaktiviert"):(e.debug(`[FluentForms] jQuery noch nicht verfügbar â retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.patchFluentForms(t+1),300));e.debug("[FluentForms] Registriere globalen submit-Interceptor"),n(document).on("submit","form.frm-fluent-form",t=>{const i=n(t.currentTarget),a=i[0],s=r(a);if(i.data("f12-captcha-in-progress"))return e.debug("[FluentForms] Submit bereits in Bearbeitung, blockiert",s),t.preventDefault(),t.stopImmediatePropagation(),!1;e.debug("[FluentForms] Intercepted native submit",s),t.preventDefault(),t.stopImmediatePropagation(),i.data("f12-captcha-in-progress",!0);o.emit("captcha:verifyRequested",{form:a,formId:s,originalEvent:t,continue:()=>{const t=(0,window.jQuery)(a),r=a.getAttribute("id");e.debug("[FluentForms] continueSubmit()",r),t.data("f12-captcha-in-progress",!1);try{const o=window.fluentFormApp(t);if(o&&"function"==typeof o.sendData){e.debug("[FluentForms] using fluentFormApp.sendData()",r);const n={data:t.serialize(),action:"fluentform_submit",form_id:t.data("form_id")};return o.sendData(t,n),void this.removeErrors(t)}e.warn("[FluentForms] Kein app.sendData() â fallback auf native Trigger",r),window.ff_sumitting_form=!1,t.trigger("submit")}catch(o){e.error("[FluentForms] Fehler beim continueSubmit()",o),a.submit()}}})}),n(document).on("fluentform_before_submit",t=>{if(n(null==t?void 0:t.target).closest("form.frm-fluent-form").data("f12-captcha-in-progress"))return e.debug("[FluentForms] fluentform_before_submit abgefangen (Captcha läuft)"),t.preventDefault(),t.stopImmediatePropagation(),!1})}registerFluentFormEvents(t=0){const n=window.jQuery;if(!n)return t>=20?void e.warn("[FluentForms] jQuery nicht gefunden â Events deaktiviert"):(e.debug(`[FluentForms] jQuery noch nicht verfügbar â retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.registerFluentFormEvents(t+1),300));e.debug("[FluentForms] Registriere Event-Handler für submission_success & submission_failed"),n(document).on("fluentform_submission_success",(t,n,i)=>{const a=this.getFormElementFromEventArg(n),s=(null==i?void 0:i.response)||i;if(!a||!a.length)return void e.warn("[FluentForms] submission_success â kein gültiges Formularobjekt erkannt",n);const c=r(a[0]);e.debug("[FluentForms] fluentform_submission_success erkannt",c),this.removeErrors(a),o.emit("captcha:reloadRequested",{formId:c}),o.emit("captcha:fluent:success",{formId:c,form:a,response:s})}),n(document).on("fluentform_submission_failed",(t,n,i)=>{const a=this.getFormElementFromEventArg(n),s=(null==i?void 0:i.response)||i;if(!a||!a.length)return void e.warn("[FluentForms] submission_failed â kein gültiges Formularobjekt erkannt",n);const c=r(a[0]);e.debug("[FluentForms] fluentform_submission_failed erkannt",c,s),this.showErrors(s,a),o.emit("captcha:reloadRequested",{formId:c}),o.emit("captcha:fluent:error",{formId:c,form:a,response:s})})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerGravityForms"===t&&(this.enabled=!0,e.debug("[GravityForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][GravityForms] captcha:init received"),this.registerGravityFormEvents(),this.initialScan(),this.patchGravityForms())}),o.on("captcha:gravity:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][GravityForms] captcha:gravity:error received",t,o),this.showErrors(o,r))}),o.on("captcha:gravity:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][GravityForms] captcha:gravity:success received",t,o),this.removeErrors(r))})}removeErrors(t){if(!window.jQuery||!t||!t.length)return;const r=t.attr("id")||"(unknown)";e.debug("[GravityForms] removeErrors() gestartet",r);try{t.find(".f12-captcha-error").remove(),t.find(".gfield_error").removeClass("gfield_error"),t.find(".validation_message").remove(),t.find(".validation_error").remove(),t.find('[aria-invalid="true"]').attr("aria-invalid","false"),e.debug("[GravityForms] removeErrors() abgeschlossen",r)}catch(o){e.error("[GravityForms] Fehler in removeErrors()",o)}}showErrors(e,t){const r=window.jQuery;r&&t&&e&&e.errors&&(t.find(".f12-captcha-error").remove(),r.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after(`<div class="f12-captcha-error validation_message">${r}</div>`),o.closest(".gfield").addClass("gfield_error")):t.prepend(`<div class="f12-captcha-error validation_message">${r}</div>`)}))}handleReload(t,r=0){const n=(0,window.jQuery)(`#${t=`gform_${t}`}`);if(!n.length)return e.warn("[GravityForms] handleReload(): kein Formular gefunden (vermutlich nach DOM-Replace)",t),void(r<10?(e.debug(`[GravityForms] handleReload(): #gform_${t} nicht gefunden (Versuch ${r+1})`),setTimeout(()=>this.handleReload(t,r+1),300)):e.debug(`[GravityForms] handleReload(): #gform_${t} nicht gefunden (Versuch ${r+1})`));e.debug("[GravityForms] handleReload()",t),this.removeErrors(n),setTimeout(()=>
1{o.emit("captcha:reloadRequested",{formId:t}),o.emit("captcha:JavaScriptProtection:setStartTimeRequested",{formId:t})},150)}initialScan(){const t=window.jQuery;if(!t)return e.warn("[GravityForms] jQuery nicht verfügbar â initialScan übersprungen");t(document).ready(()=>{t(".gform_wrapper form").each((_,e)=>{var r;const o=(null==(r=t(e).attr("id"))?void 0:r.replace("gform_",""))||"(unknown)";this.handleReload(o)})})}registerGravityFormEvents(t=0){const r=window.jQuery;if(!r)return t>=20?e.warn("[GravityForms] jQuery nicht verfügbar â Events deaktiviert"):(e.debug(`[GravityForms] retry in 300ms (${t+1}/20)`),setTimeout(()=>this.registerGravityFormEvents(t+1),300));e.debug("[GravityForms] Registriere GF-Events"),r(document).on("gform_pre_submission",(t,n)=>{const i=r(`#gform_${n}`)[0];return e.debug("[GravityForms] gform_pre_submission",n),o.emit("captcha:verifyRequested",{form:i,formId:n,originalEvent:t,continue:()=>{e.debug("[GravityForms] continueSubmit()",n),HTMLFormElement.prototype.submit.call(i)}}),t.preventDefault(),t.stopImmediatePropagation(),!1}),r(document).on("gform_post_render gform_confirmation_loaded",(e,t)=>{this.handleReload(t)})}patchGravityForms(t=0){const n=window.jQuery;if(!n)return t>=20?e.warn("[GravityForms] jQuery nicht gefunden â Submit-Intercept deaktiviert"):(e.debug(`[GravityForms] jQuery noch nicht verfügbar â retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.patchGravityForms(t+1),300));e.debug("[GravityForms] Registriere globalen Submit-Interceptor"),n(document).on("submit",'form[id^="gform_"]',t=>{const i=n(t.currentTarget),a=i[0],s=r(a);if(i.data("f12-captcha-in-progress"))return e.debug("[GravityForms] Submit bereits in Bearbeitung â blockiert",s),t.preventDefault(),t.stopImmediatePropagation(),!1;e.debug("[GravityForms] Intercepted native submit",s),t.preventDefault(),t.stopImmediatePropagation(),i.data("f12-captcha-in-progress",!0);o.emit("captcha:verifyRequested",{form:a,formId:s,originalEvent:t,continue:()=>{e.debug("[GravityForms] continueSubmit()",s),i.data("f12-captcha-in-progress",!1);try{if(window.gform&&window.gform.submit)return e.debug("[GravityForms] using gform.submit()",s),void window.gform.submit(s);e.warn("[GravityForms] Kein gform.submit() â fallback auf native submit()",s),HTMLFormElement.prototype.submit.call(a)}catch(t){e.error("[GravityForms] Fehler beim continueSubmit()",t),HTMLFormElement.prototype.submit.call(a)}}})})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWPForms"===t&&(this.enabled=!0,e.debug("[WPForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[WPForms] captcha:init received"),this.registerHooks(),this.observeAjax())})}registerHooks(t=0){const n=window.jQuery;if(!window.wpforms||!window.jQuery)return t>=20?void e.warn("[WPForms] wpforms nicht gefunden â Hooks deaktiviert"):(e.debug(`[WPForms] retry in 300ms (${t+1}/20)`),setTimeout(()=>this.registerHooks(t+1),300));e.debug("[WPForms] Registriere Event-Hooks"),n(document).on("wpformsBeforeFormSubmit",(t,i)=>{const a=n(i),s=r(i);if(e.debug("[WPForms] wpformsBeforeFormSubmit",s),1===a.data("ssManualSubmit"))return e.debug("[WPForms] Bypass aktiv â normaler Submit",s),void a.data("ssManualSubmit",0);t.preventDefault(),t.stopImmediatePropagation();o.emit("captcha:verifyRequested",{form:i,formId:s,originalEvent:t,continue:()=>{e.debug("[WPForms] Captcha OK â Weiter mit Original-Submit",s),a.data("ssManualSubmit",1),window.wpforms.formSubmit(i)}})}),n(document).on("wpformsAjaxSubmitSuccess",(t,i)=>{const a=n(t.target).closest("form.wpforms-form"),s=r(a[0]);e.debug("[WPForms] AJAX success",s,i),o.emit("captcha:wpforms:success",{formId:s,form:a,response:i}),o.emit("captcha:reloadRequested",{formId:s})}),n(document).on("wpformsAjaxSubmitFailed",(t,i)=>{const a=n(t.target).closest("form.wpforms-form"),s=r(a[0]);e.debug("[WPForms] AJAX failed",s,i),o.emit("captcha:wpforms:error",{formId:s,form:a,response:i}),o.emit("captcha:reloadRequested",{formId:s})})}observeAjax(t=0){const n=window.jQuery;if(!window.jQuery)return t>=20?void e.warn("[WPForms] jQuery nicht gefunden â ajaxComplete deaktiviert"):setTimeout(()=>this.observeAjax(t+1),300);n(document).ajaxComplete((t,i,a)=>{try{const t=JSON.parse(i.responseText);if(!t||void 0===t.success)return;const s=n((null==a?void 0:a.context)||"form.wpforms-form");if(!s||!s.length)return void e.debug("[WPForms] Kein Formular im Context gefunden â Event abgebrochen");const c=s[0];if(!(c&&c instanceof HTMLFormElement))return void e.debug("[WPForms] Ungültiges Form-Element â Event abgebrochen",c);const d=r(c);if(!d)return void e.debug("[WPForms] Konnte keine gültige formId ermitteln â Event abgebrochen");
1o.emit("captcha:reloadRequested",{formId:d})}catch(s){e.debug("[WPForms] AJAX Response konnte nicht geparst werden â ignoriert",s)}})}};const c=["f12_captcha","f12_captcha_hash","f12_t","f12_timer","behavior_nonce"];new class{constructor(){this.enabled=!1,this.bound=!1,o.on("captcha:component:enable",t=>{"ControllerNinjaForms"===t&&(this.enabled||(this.enabled=!0,e.debug("[NinjaForms] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][NinjaForms] captcha:init received"),this.init())})}init(){this.bound||(void 0!==window.nfRadio?(this.bound=!0,window.nfRadio.channel("forms").on("before:submit",t=>{try{this.attachFields(t)}catch(r){e.error("[NinjaForms] Felder konnten nicht angehängt werden",r)}}),e.debug("[NinjaForms] before:submit gebunden")):e.debug("[NinjaForms] nfRadio nicht vorhanden, kein Formular auf dieser Seite"))}attachFields(t){var r;const o=null==(r=null==t?void 0:t.get)?void 0:r.call(t,"id");if(void 0===o)return void e.warn("[NinjaForms] Formularmodell ohne id");const n=(document.querySelector(`#nf-form-${o}-cont`)||document).querySelectorAll(".f12-captcha-wrapper input[name]");if(0===n.length)return void e.warn("[NinjaForms] Keine Captcha-Felder im Formular gefunden",o);const i=window.nfRadio.channel(`form-${o}`);let a=0;n.forEach(e=>{const t=e.getAttribute("name");t&&(t.startsWith("f12_")||c.includes(t))&&(i.request("add:extra",t,e.value),a++)}),e.debug(`[NinjaForms] ${a} Felder an extra angehängt`,o)}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWoocommerceLogin"!==t&&"ControllerWoocommerceRegistration"!==t||this.enabled||(this.enabled=!0,e.debug("[WooCommerceForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][WooCommerceForms] captcha:init received"),this.registerSubmitInterceptor(),this.observeAjaxResponses())}),o.on("captcha:woocommerce:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceForms] captcha:woocommerce:error received",t,o),this.showErrors(o,r))}),o.on("captcha:woocommerce:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceForms] captcha:woocommerce:success received",t,o),this.removeErrors(r))})}removeErrors(e){e.find(".f12-captcha-error").remove(),e.find(".woocommerce-error, .woocommerce-message").removeClass("fusion-form-error")}showErrors(e,t){e&&e.errors&&(t.find(".f12-captcha-error").remove(),jQuery.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after('<div class="f12-captcha-error woocommerce-error">'+r+"</div>"),o.addClass("fusion-form-error")):t.prepend('<div class="f12-captcha-error woocommerce-error">'+r+"</div>")}))}observeAjaxResponses(t=0){if(!window.jQuery)return t>=20?void e.warn("[WooCommerceForms] jQuery nicht gefunden â observeAjaxResponses deaktiviert"):setTimeout(()=>this.observeAjaxResponses(t+1),300);const r=window.jQuery;e.debug("[WooCommerceForms] Registriere globales ajaxComplete-Event"),r(document).ajaxComplete((t,n,i)=>{try{const t=JSON.parse(n.responseText);if(!t||!t.status)return;const a=r((null==i?void 0:i.context)||"form.woocommerce-form, form.checkout");"error"===t.status&&t.errors&&(e.debug("[WooCommerceForms] AJAX error â Captcha-Reload ausgelöst"),o.emit("captcha:woocommerce:error",{formId:a.attr("id"),form:a,response:t}),o.emit("captcha:reloadRequested",{formId:a.attr("id")})),"success"===t.status&&(o.emit("captcha:woocommerce:success",{formId:a.attr("id"),form:a,response:t}),e.debug("[WooCommerceForms] AJAX success â Fehler entfernt"))}catch(a){}})}registerSubmitInterceptor(t=0){if(!window.jQuery)return t>=20?void e.warn("[WooCommerceForms] jQuery nicht gefunden â Events deaktiviert"):setTimeout(()=>this.registerSubmitInterceptor(t+1),300);const n=window.jQuery;e.debug("[WooCommerceForms] Registriere Submit-Interceptor für WooCommerce"),n(document).on("submit","form.woocommerce-form-login, form.woocommerce-form-register",t=>{const i=t.currentTarget;n(i).data("f12-submit-finished",!0);const a=r(i);n(i).data("captcha-verified")?n(i).data("captcha-verified",!1):(e.debug("[WooCommerceForms] Intercepted WooCommerce submit",a),o.emit("captcha:verifyRequested",{form:i,formId:a,originalEvent:t,continue:()=>{e.debug("[WooCommerceForms] Captcha verified â continue native submit",a),n(i).data("captcha-verified",!0);const t=i.querySelector('[type="submit"]:not([disabled])')||i.querySelector("button:not([disabled])");t?(e.debug("[WooCommerceForms] Trigger submit button click()",a),t.click()):(e.debug("[WooCommerceForms] Kein sichtbarer Submit-Button â native submit()",a),HTMLFormElement.prototype.submit.call(i)),setTimeout(()=>{if(!n(i).data("f12-submit-finished")){e.debug("[WooCommerceForms] Fallback â erzwinge native submit()",a);try{HTMLFormElement.prototype.submit.call(i)}catch(t){e.error("[WooCommerceForms] Fehler bei fallback submit()",t)}}},500)}}))})}};new class{constructor(){this.enabled=!1,this.pageLoadTime=Date.now()/1e3,o.on("captcha:component:enable",t=>{"ControllerWoocommerceCheckout"===t&&(this.enabled=!0,e.debug("[WooCommerceCheckoutForm] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][WooCommerceCheckoutForm] captcha:init received"),this.registerCheckoutInterceptor(),this.observeAjaxResponses(),this.bindCheckoutRefresh())}),o.on("captcha:woocommerce:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceCheckoutForm] captcha:woocommerce:error received",t,o),this.showErrors(o,r))}),o.on("captcha:woocommerce:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceCheckoutForm] captcha:woocommerce:success received",t,o),this.removeErrors(r))})}removeErrors(e){e.find(".f12-captcha-error").remove(),e.find(".woocommerce-error, .woocommerce-message").removeClass("fusion-form-error")}showErrors(e,t){e&&e.errors&&(t.find(".f12-captcha-error").remove(),jQuery.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after(`<div class="f12-captcha-error woocommerce-error">${r}</div>`),o.addClass("fusion-form-error")):t.prepend(`<div class="f12-captcha-error woocommerce-error">${r}</div>`)}))}timestampFieldName(e){var t;const r=document.querySelector("form.checkout");return(null==(t=null==r?void 0:r.querySelector(`.${e}`))?void 0:t.name)||e}
1injectJsTimestampsIntoBody(e){const t=String(Date.now()/1e3),r=document.querySelector("form.checkout"),o=this.timestampFieldName("js_start_time"),n=this.timestampFieldName("js_end_time"),i=null==r?void 0:r.querySelector(".js_start_time"),a=(null==i?void 0:i.value)||String(this.pageLoadTime);if(e instanceof FormData)e.get(n)||e.set(n,t),e.get(o)||e.set(o,a);else if("string"==typeof e){const r=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=(e,t,o)=>{const n=r(t);return new RegExp(`(?:^|&)${n}=(?=&|$)`).test(e)?e.replace(new RegExp(`((?:^|&)${n})=(?=&|$)`),`$1=${encodeURIComponent(o)}`):e.includes(`${t}=`)?e:`${e}&${t}=${encodeURIComponent(o)}`};e=i(e,n,t),e=i(e,o,a)}return e}injectJsTimestamps(e){const t=e[1];return t&&t.body&&(t.body=this.injectJsTimestampsIntoBody(t.body)),e}observeAjaxResponses(t=0){var r;if(!document.querySelector("form.checkout"))return void e.debug("[WooCommerceCheckoutForm] Kein <form.checkout> gefunden â skip observeAjaxResponses");const n=this,i=e=>{try{const t=new URL(e,location.href);return"checkout"===t.searchParams.get("wc-ajax")||(!(!t.pathname.includes("/wp-json/wc/store/")&&!t.pathname.includes("/wp-json/wc/v3/"))||!(!t.pathname.endsWith("/admin-ajax.php")||!(t.searchParams.get("action")||"").includes("checkout")))}catch{return!1}},a=(t,r="unknown")=>{const n=window.jQuery?jQuery("form.checkout"):null,i=null==n?void 0:n.attr("id");if(t&&"object"==typeof t&&("result"in t||"redirect"in t||"messages"in t)){if("failure"===t.result||t.messages)return e.debug(`[WooCommerceCheckoutForm] ${r} classic â FAILURE`,t),o.emit("captcha:woocommerce:error",{formId:i,form:n,response:t}),void o.emit("captcha:reloadRequested",{formId:i});if("success"===t.result||t.redirect)return e.debug(`[WooCommerceCheckoutForm] ${r} classic â SUCCESS`,t),void o.emit("captcha:woocommerce:success",{formId:i,form:n,response:t})}if(t&&"object"==typeof t&&("status"in t||"code"in t||"message"in t)){return"error"===t.status||t.code||t.data&&t.data.status>=400?(e.debug(`[WooCommerceCheckoutForm] ${r} store-api â ERROR`,t),o.emit("captcha:woocommerce:error",{formId:i,form:n,response:t}),void o.emit("captcha:reloadRequested",{formId:i})):(e.debug(`[WooCommerceCheckoutForm] ${r} store-api â SUCCESS`,t),void o.emit("captcha:woocommerce:success",{formId:i,form:n,response:t}))}e.debug(`[WooCommerceCheckoutForm] ${r} unbekanntes Format â keine Aktion`,t)};if(!window._f12FetchPatched){const t=null==(r=window.fetch)?void 0:r.bind(window);t?(window.fetch=async(...r)=>{try{const o=r[0],s="string"==typeof o?o:(null==o?void 0:o.url)||"";i(s)&&(r=n.injectJsTimestamps(r));const c=await t(...r);if(i(s)){const t=c.clone();let r="";try{r=await t.text()}catch{}let o=null;try{o=r?JSON.parse(r):null}catch{}o?a(o,"fetch/json"):r&&r.includes("woocommerce-error")?a({result:"failure",messages:r},"fetch/html"):e.debug("[WooCommerceCheckoutForm] fetch response (kein JSON, kein WC-HTML)",{snippet:null==r?void 0:r.slice(0,200)})}return c}catch(o){return e.warn("[WooCommerceCheckoutForm] fetch interception error",o),await(window.fetch?window.fetch(...r):Promise.reject(o))}},window._f12FetchPatched=!0,e.debug("[WooCommerceCheckoutForm] fetch() interception aktiv")):e.debug("[WooCommerceCheckoutForm] fetch() nicht verfügbar â überspringe fetch patch")}if(!window._f12XhrPatched&&window.XMLHttpRequest){const t=window.XMLHttpRequest,r=t.prototype.open,o=t.prototype.send;t.prototype.open=function(e,t,...o){return this._f12url=t,r.apply(this,[e,t,...o])},t.prototype.send=function(t){return i(this._f12url)&&(t=n.injectJsTimestampsIntoBody(t),this.addEventListener("readystatechange",()=>{if(4===this.readyState)try{const r=this.getResponseHeader("Content-Type")||"",o=this.responseText||"";if(r.includes("application/json"))try{const e=JSON.parse(o);a(e,"xhr/json")}catch(t){e.debug("[WooCommerceCheckoutForm] xhr JSON parse fail",t)}else o.includes("woocommerce-error")?a({result:"failure",messages:o},"xhr/html"):e.debug("[WooCommerceCheckoutForm] xhr response (kein JSON, kein WC-HTML)",{snippet:o.slice(0,200)})}catch(t){e.warn("[WooCommerceCheckoutForm] xhr interception error",t)}})),o.apply(this,[t])},window._f12XhrPatched=!0,e.debug("[WooCommerceCheckoutForm] XMLHttpRequest interception aktiv")}}bindCheckoutRefresh(t=0){if(!window.jQuery)return t>=20?void e.warn("[WooCommerceCheckoutForm] jQuery nicht gefunden â updated_checkout-Listener deaktiviert"):setTimeout(()=>this.bindCheckoutRefresh(t+1),300);const r=()=>{const t=document.querySelector("form.checkout"),r=null==t?void 0:t.querySelector(".js_start_time");r&&!r.value&&(r.value=String(this.pageLoadTime),e.debug("[WooCommerceCheckoutForm] js_start_time nach Checkout-Refresh neu gesetzt",r.value))};(0,window.jQuery)(document.body).off("updated_checkout.f12Captcha").on("updated_checkout.f12Captcha",r),r(),e.debug("[WooCommerceCheckoutForm] updated_checkout-Listener registriert")}registerCheckoutInterceptor(t=0){if(!window.jQuery)return t>=20?void e.warn("[WooCommerceCheckoutForm] jQuery nicht gefunden â Events deaktiviert"):setTimeout(()=>this.registerCheckoutInterceptor(t+1),300);const n=window.jQuery;e.debug("[WooCommerceCheckoutForm] Registriere Click-Interceptor für #place_order"),n(document).off("
1click.f12Captcha","form.checkout #place_order"),n(document).on("click.f12Captcha","form.checkout #place_order",t=>{const i=t.currentTarget.closest("form.checkout"),a=n(i),s=r(i);if(a.data("captcha-verified"))return a.removeData("captcha-verified"),e.debug("[WooCommerceCheckoutForm] Captcha bereits validiert â WooCommerce darf fortfahren",s),!0;t.preventDefault(),t.stopImmediatePropagation(),e.debug("[WooCommerceCheckoutForm] Klick auf #place_order abgefangen â CAPTCHA prüfen",s),o.emit("captcha:verifyRequested",{form:i,formId:s,originalEvent:t,continue:()=>{a.data("captcha-verified",!0),e.debug("[WooCommerceCheckoutForm] Captcha OK â löse Button-Klick erneut aus",s);const r=new MouseEvent("click",t);i.querySelector("#place_order").dispatchEvent(r)}})})}};new class{constructor(){this.enabled=!1,this.mountedAt=Date.now()/1e3,this.container=null,o.on("captcha:component:enable",t=>{"ControllerWoocommerceBlockCheckout"===t&&(this.enabled=!0,e.debug("[WooCommerceBlockCheckout] Aktiviert durch component:enable"),this.register())})}get config(){return window.f12_cf7_captcha_blocks||null}register(){o.on("captcha:init",()=>{if(!this.enabled)return;const t=this.config;t&&t.html?(this.registerSlotFill(t),this.registerRequestInterceptor(t)):e.debug("[WooCommerceBlockCheckout] Keine Captcha-Markup-Konfiguration â skip")})}registerSlotFill(t,r=0){var o,n,i,a,s;const c=null==(n=null==(o=window.wc)?void 0:o.blocksCheckout)?void 0:n.ExperimentalOrderMeta,d=null==(a=null==(i=window.wp)?void 0:i.plugins)?void 0:a.registerPlugin,m=null==(s=window.wp)?void 0:s.element;if(!c||!d||!m)return r>=40?void e.warn("[WooCommerceBlockCheckout] wc.blocksCheckout/wp.plugins nicht gefunden â Captcha wird nicht angezeigt"):setTimeout(()=>this.registerSlotFill(t,r+1),250);const u=this,l=()=>m.createElement("div",{className:"f12-cf7-captcha-block-checkout",dangerouslySetInnerHTML:{__html:t.html},ref:e=>{e&&u.onMounted(e)}});d("f12-cf7-captcha-block-checkout",{render:()=>m.createElement(c,null,m.createElement(l)),scope:"woocommerce-checkout"}),e.debug("[WooCommerceBlockCheckout] Slot-Fill registriert")}onMounted(t){if(this.container===t)return;this.container=t;const r=t.querySelector(".js_start_time");r&&!r.value&&(r.value=String(this.mountedAt)),this.markFormForBehaviorLibrary(t),this.bindReloadButton(t),e.debug("[WooCommerceBlockCheckout] Captcha gemountet")}bindReloadButton(t){t.addEventListener("click",t=>{var r;const n=t.target.closest(".cf7.captcha-reload, .c-reload");if(!n)return;t.preventDefault(),t.stopPropagation();const i=null==(r=n.closest(".f12-captcha"))?void 0:r.querySelector(".f12c");i&&i.id?o.emit("captcha:reloadRequested",{formId:null,captchaInputId:i.id}):e.error("[WooCommerceBlockCheckout] Kein Captcha-Input für den Reload gefunden")})}markFormForBehaviorLibrary(t){if(!t.querySelector('input[name="behavior_nonce"]'))return;const r=t.closest("form")||document.querySelector("form.wc-block-checkout__form");r&&"1"!==r.dataset.ssInit&&(r.dataset.ssInit="1",r.dataset.ssMode="protect",r.dataset.ssSource="rule",e.debug("[WooCommerceBlockCheckout] Checkout-Formular für die Behavior-Library markiert"))}isCheckoutRequest(e,t){if("POST"!==String(t||"GET").toUpperCase())return!1;try{const t=new URL(e,location.href),r=t.searchParams.get("rest_route")||t.pathname;return/\/wc\/store(\/v\d+)?\/checkout\/?$/.test(r)}catch{return!1}}collectFields(){if(!this.container)return{};const e={},t=Date.now()/1e3;this.container.querySelectorAll("input[name], textarea[name], select[name]").forEach(t=>{("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)});const r=this.container.querySelector(".js_end_time"),o=this.container.querySelector(".js_start_time");return o&&!e[o.name]&&(e[o.name]=String(this.mountedAt)),r&&(e[r.name]=String(t)),e}registerRequestInterceptor(t){var r;if(window._f12BlockCheckoutPatched)return;const o=null==(r=window.fetch)?void 0:r.bind(window);if(!o)return void e.warn("[WooCommerceBlockCheckout] fetch() nicht verfügbar â Captcha kann nicht mitgesendet werden");const n=this;window.fetch=async(...r)=>{let i=!1;try{const e=r[0],o=r[1]||{},a="string"==typeof e?e:(null==e?void 0:e.url)||"",s=o.method||("object"==typeof e?null==e?void 0:e.method:"GET");
1i=n.isCheckoutRequest(a,s),i&&"string"==typeof o.body&&(o.body=n.injectPayload(o.body,t),r[1]=o)}catch(s){e.warn("[WooCommerceBlockCheckout] Payload konnte nicht angehängt werden",s)}const a=await o(...r);return i&&!a.ok&&n.reloadCaptcha(),a},window._f12BlockCheckoutPatched=!0,e.debug("[WooCommerceBlockCheckout] fetch()-Interceptor aktiv")}reloadCaptcha(){var t;const r=null==(t=this.container)?void 0:t.querySelector(".f12c");r&&r.id&&(e.debug("[WooCommerceBlockCheckout] Checkout abgelehnt â neues Captcha anfordern"),o.emit("captcha:reloadRequested",{formId:null,captchaInputId:r.id}))}injectPayload(t,r){const o=JSON.parse(t);return o&&"object"==typeof o?(o.extensions=o.extensions||{},o.extensions[r.namespace]={...o.extensions[r.namespace]||{},[r.property]:JSON.stringify(this.collectFields())},e.debug("[WooCommerceBlockCheckout] Schutzfelder an den Store-API-Request angehängt"),JSON.stringify(o)):t}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWordpressLogin"===t&&(this.enabled||(this.enabled=!0,e.debug("[WordPressLoginForms] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[WordPressLoginForms] captcha:init received"),this.registerSubmitInterceptor(),this.observeAjaxResponses())}),o.on("captcha:wp-login:error",({formId:e,form:t,response:r})=>{this.enabled&&this.showErrors(r,t)}),o.on("captcha:wp-login:success",({formId:e,form:t,response:r})=>{this.enabled&&this.removeErrors(t)})}removeErrors(e){e.querySelectorAll(".f12-captcha-error").forEach(e=>e.remove())}showErrors(e,t){e&&e.errors&&(this.removeErrors(t),Object.entries(e.errors).forEach(([e,r])=>{const o=t.querySelector(`[name="${e}"]`);if(o){const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginTop="5px",e.innerHTML=r,o.insertAdjacentElement("afterend",e)}else{const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginBottom="10px",e.innerHTML=r,t.prepend(e)}}))}observeAjaxResponses(){}registerSubmitInterceptor(){e.debug("[WordPressLoginForms] Registriere Submit-Interceptor"),document.addEventListener("submit",t=>{const n=t.target.closest("form#loginform");if(!n)return;const i=r(n);n.dataset.captchaVerified?delete n.dataset.captchaVerified:(e.debug("[WordPressLoginForms] Intercepted WP login submit",i),t.preventDefault(),t.stopImmediatePropagation(),o.emit("captcha:verifyRequested",{form:n,formId:i,originalEvent:t,continue:()=>{e.debug("[WordPressLoginForms] Captcha verified â continue submit",i),n.dataset.captchaVerified="1";const t=n.querySelector('[type="submit"]');t?t.click():n.submit(),setTimeout(()=>{if(!n.dataset.submitFinished){e.debug("[WordPressLoginForms] Fallback â native submit()",i);try{n.submit()}catch(t){e.error("[WordPressLoginForms] fallback submit error",t)}}},300)}}))})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWordpressRegistration"===t&&(this.enabled||(this.enabled=!0,e.debug("[WordPressRegistrationForms] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[WordPressRegistrationForms] captcha:init received"),this.registerSubmitInterceptor(),this.observeAjaxResponses())}),o.on("captcha:wp-registration:error",({formId:e,form:t,response:r})=>{this.enabled&&this.showErrors(r,t)}),o.on("captcha:wp-registration:success",({formId:e,form:t,response:r})=>{this.enabled&&this.removeErrors(t)})}removeErrors(e){e.querySelectorAll(".f12-captcha-error").forEach(e=>e.remove())}showErrors(e,t){e&&e.errors&&(this.removeErrors(t),Object.entries(e.errors).forEach(([e,r])=>{const o=t.querySelector(`[name="${e}"]`);if(o){const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginTop="5px",e.innerHTML=r,o.insertAdjacentElement("afterend",e)}else{const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginBottom="10px",e.innerHTML=r,t.prepend(e)}}))}observeAjaxResponses(){}registerSubmitInterceptor(){e.debug("[WordPressRegistrationForms] Registriere Submit-Interceptor"),document.addEventListener("submit",t=>{const n=t.target.closest("form#registerform");if(!n)return;const i=r(n);n.dataset.captchaVerified?delete n.dataset.captchaVerified:(e.debug("[WordPressRegistrationForms] Intercepted WP login submit",i),t.preventDefault(),t.stopImmediatePropagation(),o.emit("captcha:verifyRequested",{form:n,formId:i,originalEvent:t,continue:()=>{e.debug("[WordPressRegistrationForms] Captcha verified â continue submit",i),n.dataset.captchaVerified="1";const t=n.querySelector('[type="submit"]');t?t.click():n.submit(),setTimeout(()=>{if(!n.dataset.submitFinished){e.debug("[WordPressRegistrationForms] Fallback â native submit()",i);try{n.submit()}catch(t){e.error("[WordPressRegistrationForms] fallback submit error",t)}}},300)}}))})}},window.f12cf7captcha_cf7={logger:e,reloadAllCaptchas:function(){e.debug("Reload all Captchas"),o.emit("captcha:reloadAllRequested")},init:function(){this.logger.log("Init gestartet");
1(window.f12_cf7_captcha&&f12_cf7_captcha.components||[]).forEach(t=>{e.debug(`[Init] Aktiviere Komponente: ${t}`),o.emit("captcha:component:enable",t)}),document.addEventListener("DOMContentLoaded",()=>{e.debug("DOM ready -> init all forms"),document.querySelectorAll("form").forEach(t=>{const n=r(t);void 0!==o&&o.emit("captcha:initForm",{form:t,formId:n}),e.debug("Form initialized",n)}),o.emit("captcha:init")}),document.addEventListener("click",t=>{if(!(t.target.closest(".cf7.captcha-reload")||t.target.closest(".c-reload")))return;e.debug("Reload-Button geklickt",t.target),t.preventDefault(),t.stopPropagation();const n=t.target.closest(".f12-captcha");if(!n)return void e.error("Kein Captcha-Container gefunden");const i=n.querySelector(".f12c");if(!i||!i.id)return void e.error("Kein Captcha-Input mit ID gefunden");const a=i.id;e.debug("Captcha-Input-ID gefunden",a);const s=t.target.closest("form");if(!s)return void e.error("Kein Formular für Captcha gefunden");const c=r(s);e.debug("Formular-ID",c),o.emit("captcha:reloadRequested",{formId:c,captchaInputId:a})})}},window.f12cf7captcha_cf7.init()}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.