1function visualmodoGetSignupPasswordState(t){const e=t.length>=12,i=/[A-Za-z]/.test(t),o=/\d/.test(t),a=/[^A-Za-z\d]/.test(t),s=i&&o&&a;return{hasMinimumLength:e,hasRequiredComposition:s,isValid:e&&s}}function visualmodoSetSignupPasswordRulesVisibility(t,e){t.dataset.passwordRulesVisible=e?"true":"false"}function visualmodoSyncSignupPasswordRules(t){const e=t.querySelector("#visualmodo-signup-password")?.closest(".visualmodo-auth-field"),i=t.querySelector("#visualmodo-signup-password");if(!e||!i)return;const o=visualmodoGetSignupPasswordState(i.value),a={length:o.hasMinimumLength,composition:o.hasRequiredComposition};Object.entries(a).forEach(([e,i])=>{const o=t.querySelector(`[data-password-rule="${e}"]`);o&&(o.dataset.ruleState=i?"met":"unmet")})}function visualmodoSetFieldInvalidState(t,e){t.setAttribute("aria-invalid",e?"true":"false")}function visualmodoGetAuthIdentityInput(t){return t.querySelector("[data-auth-identity]")}function visualmodoGetAuthPasswordInput(t){return t.querySelector("[data-auth-password]")}function visualmodoSyncAuthFieldStates(t){const e=t.querySelector('input[name="action"]')?.value??"",i=visualmodoGetAuthIdentityInput(t),o=visualmodoGetAuthPasswordInput(t);if(!i||!o)return;const a=""!==i.value.trim()&&!i.checkValidity();if(visualmodoSetFieldInvalidState(i,a),"visualmodo_signup"!==e)return void visualmodoSetFieldInvalidState(o,!1);const s=""!==o.value.trim(),u=visualmodoGetSignupPasswordState(o.value);visualmodoSetFieldInvalidState(o,s&&!u.isValid)}function visualmodoSyncAuthSubmitState(t){const e=t.querySelector('input[name="action"]')?.value??"",i=visualmodoGetAuthIdentityInput(t),o=visualmodoGetAuthPasswordInput(t),a=t.querySelector(".visualmodo-auth-submit");if(!i||!o||!a)return;const s="visualmodo_login"===e,u="visualmodo_signup"===e,n=""!==i.value.trim()&&""!==o.value.trim(),d=""!==i.value.trim()&&i.checkValidity(),l=visualmodoGetSignupPasswordState(o.value);let r=n;s?r=d&&""!==o.value.trim():u&&(r=d&&l.isValid),a.disabled=!r,a.setAttribute("aria-disabled",r?"false":"true")}function visualmodoInitializePasswordToggle(t,e){const i=t.querySelector("[data-password-toggle]");i&&(i.addEventListener("mousedown",t=>{t.preventDefault()}),i.addEventListener("click",()=>{const t="text"===e.type,o=t?"password":"text",a=i.getAttribute(t?"data-show-label":"data-hide-label")??"Toggle password visibility";e.type=o,i.setAttribute("aria-pressed",t?"false":"true"),i.setAttribute("aria-label",a),e.focus({preventScroll:!0})}
1))}function visualmodoInitializeAuthForms(){document.querySelectorAll(".visualmodo-auth-form").forEach(t=>{const e=t.querySelector('input[name="action"]')?.value??"",i=visualmodoGetAuthIdentityInput(t),o=visualmodoGetAuthPasswordInput(t);if(!i||!o)return;const a=()=>visualmodoSyncAuthSubmitState(t),s=()=>visualmodoSyncAuthFieldStates(t);if(i.addEventListener("input",()=>{s(),a()}),i.addEventListener("change",()=>{s(),a()}),o.addEventListener("input",()=>{s(),a()}),o.addEventListener("change",()=>{s(),a()}),visualmodoInitializePasswordToggle(t,o),"visualmodo_signup"===e){const e=o.closest(".visualmodo-auth-field"),i=()=>{s(),visualmodoSyncSignupPasswordRules(t),a()};o.addEventListener("focus",()=>{e&&visualmodoSetSignupPasswordRulesVisibility(e,!0)}),o.addEventListener("blur",()=>{e&&""===o.value.trim()&&visualmodoSetSignupPasswordRulesVisibility(e,!1)}),o.addEventListener("input",i),o.addEventListener("change",i),visualmodoSyncSignupPasswordRules(t)}s(),a()})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",visualmodoInitializeAuthForms,{once:!0}):visualmodoInitializeAuthForms();
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.