[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fJL2uCTANB_39fe1zGngBhHbRL3HUUOWpm5VgUWdGPzI":3},{"id":4,"url_slug":5,"title":6,"description":7,"plugin_slug":8,"theme_slug":9,"affected_versions":10,"patched_in_version":11,"severity":12,"cvss_score":13,"cvss_vector":14,"vuln_type":15,"published_date":16,"updated_date":17,"references":18,"days_to_patch":20,"patch_diff_files":21,"patch_trac_url":9,"research_status":30,"research_verified":31,"research_rounds_completed":32,"research_plan":33,"research_summary":34,"research_vulnerable_code":9,"research_fix_diff":35,"research_exploit_outline":36,"research_model_used":37,"research_started_at":38,"research_completed_at":39,"research_error":9,"poc_status":9,"poc_video_id":9,"poc_summary":9,"poc_steps":9,"poc_tested_at":9,"poc_wp_version":9,"poc_php_version":9,"poc_playwright_script":9,"poc_exploit_code":9,"poc_has_trace":31,"poc_model_used":9,"poc_verification_depth":9,"poc_exploit_code_gated":31,"source_links":40},"CVE-2026-9281","master-addons-for-elementor-authenticated-author-stored-cross-site-scripting-via-jtlmacustomjs-page-setting-custom-js-ex","Master Addons For Elementor \u003C= 3.1.0 - Authenticated (Author+) Stored Cross-Site Scripting via 'jtlma_custom_js' Page Setting (Custom JS Extension)","The Master Addons For Elementor – Widgets, Extensions, Theme Builder, Popup Builder & Template Kits plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'jtlma_custom_js' Page Setting (Custom JS Extension) in all versions up to, and including, 3.1.0 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with author-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The unfiltered_html capability check is only enforced during Elementor control registration (UI rendering) and not during the save process, enabling Author-level users to inject the jtlma_custom_js setting directly via a crafted POST request to admin-ajax.php?action=elementor_ajax, bypassing the UI-level restriction entirely.","master-addons",null,"\u003C=3.1.0","3.1.1","medium",6.4,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2026-06-05 12:04:46","2026-06-06 01:26:09",[19],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F5b8e052a-6e60-4455-96c9-b2a3e86773da?source=api-prod",1,[22,23,24,25,26,27,28,29],"assets\u002Fcss\u002Faddons\u002Fma-animated-headlines.css","assets\u002Fcss\u002Faddons\u002Fma-animated-headlines.min.css","assets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.css","assets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.min.css","assets\u002Fjs\u002Faddons\u002Fma-animated-headlines.js","assets\u002Fjs\u002Faddons\u002Fma-animated-headlines.min.js","assets\u002Fjs\u002Fmaster-addons-scripts.js","assets\u002Fjs\u002Fmaster-addons-scripts.min.js","researched",false,3,"This exploitation research plan targets **CVE-2026-9281**, a Stored Cross-Site Scripting (XSS) vulnerability in the **Master Addons For Elementor** plugin. The vulnerability exists because the plugin fails to perform server-side capability checks (specifically `unfiltered_html`) when saving the `jtlma_custom_js` page setting, despite restricting the UI for users without that capability.\n\n---\n\n### 1. Vulnerability Summary\n*   **Vulnerability:** Stored Cross-Site Scripting (XSS)\n*   **Vulnerable Setting:** `jtlma_custom_js` (Custom JS Extension for Elementor Pages)\n*   **Affected Plugin:** Master Addons For Elementor – Widgets, Extensions, Theme Builder, Popup Builder & Template Kits\n*   **Vulnerable Versions:** \u003C= 3.1.0\n*   **Root Cause:** The plugin registers a \"Custom JS\" extension for Elementor pages. While it restricts the visibility of the control in the Elementor Editor UI based on the `unfiltered_html` capability, it does not enforce this check during the AJAX save process (`elementor_ajax`). This allows an Author-level user (who lacks `unfiltered_html` by default) to save arbitrary JavaScript via direct API requests.\n\n### 2. Attack Vector Analysis\n*   **Endpoint:** `\u002Fwp-admin\u002Fadmin-ajax.php?action=elementor_ajax`\n*   **Method:** POST\n*   **Authentication:** Authenticated, Author-level access or higher.\n*   **Preconditions:**\n    *   The \"Custom JS\" extension must be enabled in the Master Addons settings (usually enabled by default).\n    *   The attacker must have permissions to edit a specific post or page (Author role is sufficient for their own posts).\n\n### 3. Code Flow\n1.  **Registration:** The plugin registers a custom control\u002Fsection in Elementor for \"Page Settings\" called `jtlma_custom_js`.\n2.  **UI Restriction:** During registration, it likely uses a condition like `current_user_can( 'unfiltered_html' )` to decide whether to show the control in the Elementor panel.\n3.  **The Flaw:** When the user clicks \"Update\" in Elementor, a request is sent to `admin-ajax.php?action=elementor_ajax`. Elementor's core handles the `save_page_settings` action. \n4.  **Missing Validation:** Master Addons does not hook into the saving mechanism to re-verify that the user providing the `jtlma_custom_js` value actually possesses the `unfiltered_html` capability.\n5.  **Persistence:** The malicious JS is saved into the post metadata (usually `_elementor_page_settings`).\n6.  **Execution:** When the page is rendered on the frontend, Master Addons retrieves `jtlma_custom_js` and outputs it, likely within a `\u003Cscript>` block in the footer, without sanitization.\n\n### 4. Nonce Acquisition Strategy\nTo interact with the Elementor AJAX API, a valid Elementor AJAX nonce is required.\n\n1.  **Identify Trigger:** The nonce is used by the Elementor Editor.\n2.  **Environment Setup:** Create a post as the Author user and open it in the Elementor Editor.\n3.  **Extraction:**\n    *   Use `browser_navigate` to go to the Elementor editor URL for a post: `\u002Fwp-admin\u002Fpost.php?post=POST_ID&action=elementor`.\n    *   Use `browser_eval` to extract the nonce from the global JavaScript configuration object.\n    *   **Variable Name:** `window.elementorCommonConfig.ajax.nonce`\n    *   **Secondary Variable:** `window.elementorConfig.nonces.save_builder` (if the first is unavailable).\n\n### 5. Exploitation Strategy\nThe exploit involves sending a multiplexed AJAX request to Elementor to update the page settings.\n\n**Request Details:**\n*   **URL:** `http:\u002F\u002FTARGET\u002Fwp-admin\u002Fadmin-ajax.php?action=elementor_ajax`\n*   **Method:** POST\n*   **Headers:** `Content-Type: application\u002Fx-www-form-urlencoded`\n*   **Parameters:**\n    *   `_nonce`: [Extracted Nonce]\n    *   `actions`: A JSON string containing the `save_page_settings` command.\n    *   `editor_post_id`: [The Post ID]\n\n**Payload Construction (`actions` parameter):**\n```json\n{\n  \"save_page_settings\": {\n    \"action\": \"save_page_settings\",\n    \"data\": {\n      \"post_id\": \"POST_ID\",\n      \"settings\": {\n        \"jtlma_custom_js\": \"alert('CVE-2026-9281_XSS');\"\n      }\n    }\n  }\n}\n```\n*Note: Since the field is specifically for \"Custom JS\", the plugin likely wraps it in `\u003Cscript>` tags automatically. Therefore, the payload should be raw JavaScript, not HTML.*\n\n### 6. Test Data Setup\n1.  **Users:** Create a user with the `author` role.\n2.  **Content:** As the `author` user, create a new post and click \"Edit with Elementor\" to initialize Elementor data for that post. Note the `post_id`.\n3.  **Plugin Config:** Ensure \"Custom JS\" is enabled in Master Addons (Dashboard -> Master Addons -> Extensions).\n\n### 7. Expected Results\n*   **Response:** The AJAX request should return a `200 OK` with a JSON body indicating success (e.g., `{\"success\":true,\"data\":{...}}`).\n*   **Execution:** When visiting the frontend URL of the post (`\u002F?p=POST_ID`), a JavaScript alert with the string `CVE-2026-9281_XSS` should trigger.\n\n### 8. Verification Steps\n1.  **Check Database:** Use WP-CLI to verify the payload is stored in the post meta:\n    ```bash\n    wp post meta get [POST_ID] _elementor_page_settings --format=json\n    ```\n    Verify the JSON contains `\"jtlma_custom_js\":\"alert('CVE-2026-9281_XSS');\"`.\n2.  **Verify Frontend Output:**\n    ```bash\n    curl -s http:\u002F\u002FTARGET\u002F?p=[POST_ID] | grep \"jtlma_custom_js\"\n    ```\n\n### 9. Alternative Approaches\n*   **Payload Variation:** If the plugin outputs the content outside of a script tag (unlikely given the setting name), use `\u003Cscript>alert(1)\u003C\u002Fscript>`.\n*   **Control Context:** If `save_page_settings` is blocked, try `save_builder_data` which also handles settings updates in some Elementor versions:\n    ```json\n    {\n      \"save_builder_data\": {\n        \"action\": \"save_builder_data\",\n        \"data\": {\n          \"status\": \"publish\",\n          \"settings\": { \"jtlma_custom_js\": \"alert(1)\" }\n        }\n      }\n    }\n    ```\n*   **Editor Bypass:** If the Author cannot access the Elementor UI, try to obtain the nonce from the standard WordPress dashboard if the plugin enqueues Elementor configs there.","The Master Addons For Elementor plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'jtlma_custom_js' page setting in versions up to 3.1.0. This is due to a failure to enforce the 'unfiltered_html' capability check during the server-side AJAX save process, despite the check being present in the user interface.","diff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.css\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.css\t2026-06-01 13:31:18.000000000 +0000\n@@ -99,7 +99,7 @@\n }\n .jltma-animated-headline.loading-bar .jltma-words-wrapper.is-loading::after {\n   width: 100%;\n-  transition: width 3s;\n+  transition: width var(--jltma-bar-duration, 3s);\n }\n .jltma-animated-headline.loading-bar b {\n   top: 0;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.min.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.min.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.min.css\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.min.css\t2026-06-01 13:31:18.000000000 +0000\n@@ -1 +1 @@\n-.jltma-animated-headline{display:flex;flex-wrap:wrap}.jltma-animated-headline .jltma-words-wrapper{display:inline-block;position:relative;text-align:left}.jltma-animated-headline .jltma-words-wrapper b{display:inline-block;position:absolute;white-space:nowrap;left:0;top:0;padding-left:.2em;padding-right:.2em}.jltma-animated-headline .jltma-words-wrapper b.is-visible{position:relative}.jltma-animated-headline .jltma-words-wrapper.selected{background-color:transparent!important}.jltma-animated-headline .first-heading{padding-left:.25rem;padding-right:.25rem}.jltma-animated-headline.push .first-heading,.jltma-animated-headline.rotate-1 .first-heading,.jltma-animated-headline.rotate-2 .first-heading,.jltma-animated-headline.rotate-3 .first-heading,.jltma-animated-headline.scale .first-heading,.jltma-animated-headline.type .first-heading,.jltma-animated-headline.zoom .first-heading{padding:0 .25em}.jltma-animated-headline.rotate-1 .jltma-words-wrapper,.jltma-animated-headline.rotate-2 .jltma-words-wrapper,.jltma-animated-headline.rotate-3 .jltma-words-wrapper,.jltma-animated-headline.zoom .jltma-words-wrapper{perspective:300px}.jltma-animated-headline.rotate-1 b{opacity:0;transform-origin:50% 100%;transform:rotateX(180deg)}.jltma-animated-headline.rotate-1 b.is-visible{opacity:1;transform:rotateX(0);animation:1.2s jltma-rotate-1-in}.jltma-animated-headline.rotate-1 b.is-hidden{transform:rotateX(180deg);animation:1.2s jltma-rotate-1-out}.jltma-animated-headline.rotate-2 b{opacity:0}.jltma-animated-headline.rotate-2 i{transform-style:preserve-3d;transform:translateZ(-20px) rotateX(90deg);opacity:0}.jltma-animated-headline.rotate-2 i.in{animation:.4s forwards jltma-rotate-2-in}.jltma-animated-headline.rotate-2 i.out{animation:.4s forwards jltma-rotate-2-out}.jltma-animated-headline.rotate-2 em{transform:translateZ(20px)}.jltma-animated-headline.rotate-3 b{opacity:0}.jltma-animated-headline.rotate-3 i{display:inline-block;transform:rotateY(180deg);backface-visibility:hidden}.jltma-animated-headline.rotate-3 i.in{animation:.6s forwards jltma-rotate-3-in}.jltma-animated-headline.rotate-3 i.out{animation:.6s forwards jltma-rotate-3-out}.jltma-animated-headline.loading-bar span{display:inline-block;padding:0 .25em}.jltma-animated-headline.loading-bar .jltma-words-wrapper{vertical-align:top;padding:0}.jltma-animated-headline.loading-bar .jltma-words-wrapper::after{content:\"\";position:absolute;left:0;bottom:0;height:3px;width:0;background:#0096a7;z-index:2;transition:width .3s -.1s}.jltma-animated-headline.loading-bar .jltma-words-wrapper.is-loading::after{width:100%;transition:width 3s}.jltma-animated-headline.loading-bar b{top:0;opacity:0;transition:opacity .5s ease-in-out}.is-visible .jltma-animated-headline.rotate-2 i,.is-visible .jltma-animated-headline.scale i,.jltma-animated-headline.loading-bar b.is-visible{opacity:1}.is-visible .jltma-animated-headline.rotate-3 i{transform:rotateY(0)}.no-csstransitions .jltma-animated-headline.scale i{transform:scale(1);opacity:0}.no-csstransitions .jltma-animated-headline.scale .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-2 i{transform:rotateX(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-2 i em{transform:scale(1)}.no-csstransitions .jltma-animated-headline.rotate-2 i .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-3 i{transform:rotateY(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-3 .is-visible i{opacity:1}.no-js .jltma-words-wrapper b{opacity:0}.no-js .jltma-words-wrapper b.is-visible{opacity:1}@keyframes jltma-rotate-1-in{0%{transform:rotateX(180deg);opacity:0}35%{transform:rotateX(120deg);opacity:0}65%{opacity:0}100%{transform:rotateX(360deg);opacity:1}}@keyframes jltma-rotate-1-out{0%{transform:rotateX(0);opacity:1}35%{transform:rotateX(-40deg);opacity:1}65%{opacity:0}100%{transform:rotateX(180deg);opacity:0}}@keyframes jltma-rotate-2-in{0%{opacity:0;transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;transform:translateZ(-20px) rotateX(-10deg)}100%{opacity:1;transform:translateZ(-20px) rotateX(0)}}@keyframes jltma-rotate-2-out{0%{opacity:1;transform:translateZ(-20px) rotateX(0)}60%{opacity:0;transform:translateZ(-20px) rotateX(-100deg)}100%{opacity:0;transform:translateZ(-20px) rotateX(-90deg)}}@keyframes jltma-rotate-3-in{0%{transform:rotateY(180deg)}100%{transform:rotateY(0)}}@keyframes jltma-rotate-3-out{0%{transform:rotateY(0)}100%{transform:rotateY(-180deg)}}\n\\ No newline at end of file\n+.jltma-animated-headline{display:flex;flex-wrap:wrap}.jltma-animated-headline .jltma-words-wrapper{display:inline-block;position:relative;text-align:left}.jltma-animated-headline .jltma-words-wrapper b{display:inline-block;position:absolute;white-space:nowrap;left:0;top:0;padding-left:.2em;padding-right:.2em}.jltma-animated-headline .jltma-words-wrapper b.is-visible{position:relative}.jltma-animated-headline .jltma-words-wrapper.selected{background-color:transparent!important}.jltma-animated-headline .first-heading{padding-left:.25rem;padding-right:.25rem}.jltma-animated-headline.push .first-heading,.jltma-animated-headline.rotate-1 .first-heading,.jltma-animated-headline.rotate-2 .first-heading,.jltma-animated-headline.rotate-3 .first-heading,.jltma-animated-headline.scale .first-heading,.jltma-animated-headline.type .first-heading,.jltma-animated-headline.zoom .first-heading{padding:0 .25em}.jltma-animated-headline.rotate-1 .jltma-words-wrapper,.jltma-animated-headline.rotate-2 .jltma-words-wrapper,.jltma-animated-headline.rotate-3 .jltma-words-wrapper,.jltma-animated-headline.zoom .jltma-words-wrapper{perspective:300px}.jltma-animated-headline.rotate-1 b{opacity:0;transform-origin:50% 100%;transform:rotateX(180deg)}.jltma-animated-headline.rotate-1 b.is-visible{opacity:1;transform:rotateX(0);animation:1.2s jltma-rotate-1-in}.jltma-animated-headline.rotate-1 b.is-hidden{transform:rotateX(180deg);animation:1.2s jltma-rotate-1-out}.jltma-animated-headline.rotate-2 b{opacity:0}.jltma-animated-headline.rotate-2 i{transform-style:preserve-3d;transform:translateZ(-20px) rotateX(90deg);opacity:0}.jltma-animated-headline.rotate-2 i.in{animation:.4s forwards jltma-rotate-2-in}.jltma-animated-headline.rotate-2 i.out{animation:.4s forwards jltma-rotate-2-out}.jltma-animated-headline.rotate-2 em{transform:translateZ(20px)}.jltma-animated-headline.rotate-3 b{opacity:0}.jltma-animated-headline.rotate-3 i{display:inline-block;transform:rotateY(180deg);backface-visibility:hidden}.jltma-animated-headline.rotate-3 i.in{animation:.6s forwards jltma-rotate-3-in}.jltma-animated-headline.rotate-3 i.out{animation:.6s forwards jltma-rotate-3-out}.jltma-animated-headline.loading-bar span{display:inline-block;padding:0 .25em}.jltma-animated-headline.loading-bar .jltma-words-wrapper{vertical-align:top;padding:0}.jltma-animated-headline.loading-bar .jltma-words-wrapper::after{content:\"\";position:absolute;left:0;bottom:0;height:3px;width:0;background:#0096a7;z-index:2;transition:width .3s -.1s}.jltma-animated-headline.loading-bar .jltma-words-wrapper.is-loading::after{width:100%;transition:width var(--jltma-bar-duration, 3s)}.jltma-animated-headline.loading-bar b{top:0;opacity:0;transition:opacity .5s ease-in-out}.is-visible .jltma-animated-headline.rotate-2 i,.is-visible .jltma-animated-headline.scale i,.jltma-animated-headline.loading-bar b.is-visible{opacity:1}.is-visible .jltma-animated-headline.rotate-3 i{transform:rotateY(0)}.no-csstransitions .jltma-animated-headline.scale i{transform:scale(1);opacity:0}.no-csstransitions .jltma-animated-headline.scale .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-2 i{transform:rotateX(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-2 i em{transform:scale(1)}.no-csstransitions .jltma-animated-headline.rotate-2 i .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-3 i{transform:rotateY(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-3 .is-visible i{opacity:1}.no-js .jltma-words-wrapper b{opacity:0}.no-js .jltma-words-wrapper b.is-visible{opacity:1}@keyframes jltma-rotate-1-in{0%{transform:rotateX(180deg);opacity:0}35%{transform:rotateX(120deg);opacity:0}65%{opacity:0}100%{transform:rotateX(360deg);opacity:1}}@keyframes jltma-rotate-1-out{0%{transform:rotateX(0);opacity:1}35%{transform:rotateX(-40deg);opacity:1}65%{opacity:0}100%{transform:rotateX(180deg);opacity:0}}@keyframes jltma-rotate-2-in{0%{opacity:0;transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;transform:translateZ(-20px) rotateX(-10deg)}100%{opacity:1;transform:translateZ(-20px) rotateX(0)}}@keyframes jltma-rotate-2-out{0%{opacity:1;transform:translateZ(-20px) rotateX(0)}60%{opacity:0;transform:translateZ(-20px) rotateX(-100deg)}100%{opacity:0;transform:translateZ(-20px) rotateX(-90deg)}}@keyframes jltma-rotate-3-in{0%{transform:rotateY(180deg)}100%{transform:rotateY(0)}}@keyframes jltma-rotate-3-out{0%{transform:rotateY(0)}100%{transform:rotateY(-180deg)}}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.css\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.css\t2026-06-01 13:31:18.000000000 +0000\n@@ -99,7 +99,7 @@\n }\n .jltma-animated-headline.loading-bar .jltma-words-wrapper.is-loading::after {\n   width: 100%;\n-  transition: width 3s;\n+  transition: width var(--jltma-bar-duration, 3s);\n }\n .jltma-animated-headline.loading-bar b {\n   top: 0;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.min.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.min.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.min.css\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fcss\u002Faddons\u002Fma-animated-headlines.rtl.min.css\t2026-06-01 13:31:18.000000000 +0000\n@@ -1 +1 @@\n-.jltma-animated-headline{display:flex;flex-wrap:wrap}.jltma-animated-headline .jltma-words-wrapper{display:inline-block;position:relative;text-align:right}.jltma-animated-headline .jltma-words-wrapper b{display:inline-block;position:absolute;white-space:nowrap;right:0;top:0;padding-right:.2em;padding-left:.2em}.jltma-animated-headline .jltma-words-wrapper b.is-visible{position:relative}.jltma-animated-headline .jltma-words-wrapper.selected{background-color:transparent!important}.jltma-animated-headline .first-heading{padding-right:.25rem;padding-left:.25rem}.jltma-animated-headline.push .first-heading,.jltma-animated-headline.rotate-1 .first-heading,.jltma-animated-headline.rotate-2 .first-heading,.jltma-animated-headline.rotate-3 .first-heading,.jltma-animated-headline.scale .first-heading,.jltma-animated-headline.type .first-heading,.jltma-animated-headline.zoom .first-heading{padding:0 .25em}.jltma-animated-headline.rotate-1 .jltma-words-wrapper,.jltma-animated-headline.rotate-2 .jltma-words-wrapper,.jltma-animated-headline.rotate-3 .jltma-words-wrapper,.jltma-animated-headline.zoom .jltma-words-wrapper{perspective:300px}.jltma-animated-headline.rotate-1 b{opacity:0;transform-origin:50% 100%;transform:rotateX(180deg)}.jltma-animated-headline.rotate-1 b.is-visible{opacity:1;transform:rotateX(0);animation:1.2s jltma-rotate-1-in}.jltma-animated-headline.rotate-1 b.is-hidden{transform:rotateX(180deg);animation:1.2s jltma-rotate-1-out}.jltma-animated-headline.rotate-2 b{opacity:0}.jltma-animated-headline.rotate-2 i{transform-style:preserve-3d;transform:translateZ(-20px) rotateX(90deg);opacity:0}.jltma-animated-headline.rotate-2 i.in{animation:.4s forwards jltma-rotate-2-in}.jltma-animated-headline.rotate-2 i.out{animation:.4s forwards jltma-rotate-2-out}.jltma-animated-headline.rotate-2 em{transform:translateZ(20px)}.jltma-animated-headline.rotate-3 b{opacity:0}.jltma-animated-headline.rotate-3 i{display:inline-block;transform:rotateY(-180deg);backface-visibility:hidden}.jltma-animated-headline.rotate-3 i.in{animation:.6s forwards jltma-rotate-3-in}.jltma-animated-headline.rotate-3 i.out{animation:.6s forwards jltma-rotate-3-out}.jltma-animated-headline.loading-bar span{display:inline-block;padding:0 .25em}.jltma-animated-headline.loading-bar .jltma-words-wrapper{vertical-align:top;padding:0}.jltma-animated-headline.loading-bar .jltma-words-wrapper::after{content:\"\";position:absolute;right:0;bottom:0;height:3px;width:0;background:#0096a7;z-index:2;transition:width .3s -.1s}.jltma-animated-headline.loading-bar .jltma-words-wrapper.is-loading::after{width:100%;transition:width 3s}.jltma-animated-headline.loading-bar b{top:0;opacity:0;transition:opacity .5s ease-in-out}.is-visible .jltma-animated-headline.rotate-2 i,.is-visible .jltma-animated-headline.scale i,.jltma-animated-headline.loading-bar b.is-visible{opacity:1}.is-visible .jltma-animated-headline.rotate-3 i{transform:rotateY(0)}.no-csstransitions .jltma-animated-headline.scale i{transform:scale(1);opacity:0}.no-csstransitions .jltma-animated-headline.scale .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-2 i{transform:rotateX(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-2 i em{transform:scale(1)}.no-csstransitions .jltma-animated-headline.rotate-2 i .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-3 i{transform:rotateY(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-3 .is-visible i{opacity:1}.no-js .jltma-words-wrapper b{opacity:0}.no-js .jltma-words-wrapper b.is-visible{opacity:1}@keyframes jltma-rotate-1-in{0%{transform:rotateX(180deg);opacity:0}35%{transform:rotateX(120deg);opacity:0}65%{opacity:0}100%{transform:rotateX(360deg);opacity:1}}@keyframes jltma-rotate-1-out{0%{transform:rotateX(0);opacity:1}35%{transform:rotateX(-40deg);opacity:1}65%{opacity:0}100%{transform:rotateX(180deg);opacity:0}}@keyframes jltma-rotate-2-in{0%{opacity:0;transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;transform:translateZ(-20px) rotateX(-10deg)}100%{opacity:1;transform:translateZ(-20px) rotateX(0)}}@keyframes jltma-rotate-2-out{0%{opacity:1;transform:translateZ(-20px) rotateX(0)}60%{opacity:0;transform:translateZ(-20px) rotateX(-100deg)}100%{opacity:0;transform:translateZ(-20px) rotateX(-90deg)}}@keyframes jltma-rotate-3-in{0%{transform:rotateY(-180deg)}100%{transform:rotateY(0)}}@keyframes jltma-rotate-3-out{0%{transform:rotateY(0)}100%{transform:rotateY(180deg)}}\n\\ No newline at end of file\n+.jltma-animated-headline{display:flex;flex-wrap:wrap}.jltma-animated-headline .jltma-words-wrapper{display:inline-block;position:relative;text-align:right}.jltma-animated-headline .jltma-words-wrapper b{display:inline-block;position:absolute;white-space:nowrap;right:0;top:0;padding-right:.2em;padding-left:.2em}.jltma-animated-headline .jltma-words-wrapper b.is-visible{position:relative}.jltma-animated-headline .jltma-words-wrapper.selected{background-color:transparent!important}.jltma-animated-headline .first-heading{padding-right:.25rem;padding-left:.25rem}.jltma-animated-headline.push .first-heading,.jltma-animated-headline.rotate-1 .first-heading,.jltma-animated-headline.rotate-2 .first-heading,.jltma-animated-headline.rotate-3 .first-heading,.jltma-animated-headline.scale .first-heading,.jltma-animated-headline.type .first-heading,.jltma-animated-headline.zoom .first-heading{padding:0 .25em}.jltma-animated-headline.rotate-1 .jltma-words-wrapper,.jltma-animated-headline.rotate-2 .jltma-words-wrapper,.jltma-animated-headline.rotate-3 .jltma-words-wrapper,.jltma-animated-headline.zoom .jltma-words-wrapper{perspective:300px}.jltma-animated-headline.rotate-1 b{opacity:0;transform-origin:50% 100%;transform:rotateX(180deg)}.jltma-animated-headline.rotate-1 b.is-visible{opacity:1;transform:rotateX(0);animation:1.2s jltma-rotate-1-in}.jltma-animated-headline.rotate-1 b.is-hidden{transform:rotateX(180deg);animation:1.2s jltma-rotate-1-out}.jltma-animated-headline.rotate-2 b{opacity:0}.jltma-animated-headline.rotate-2 i{transform-style:preserve-3d;transform:translateZ(-20px) rotateX(90deg);opacity:0}.jltma-animated-headline.rotate-2 i.in{animation:.4s forwards jltma-rotate-2-in}.jltma-animated-headline.rotate-2 i.out{animation:.4s forwards jltma-rotate-2-out}.jltma-animated-headline.rotate-2 em{transform:translateZ(20px)}.jltma-animated-headline.rotate-3 b{opacity:0}.jltma-animated-headline.rotate-3 i{display:inline-block;transform:rotateY(-180deg);backface-visibility:hidden}.jltma-animated-headline.rotate-3 i.in{animation:.6s forwards jltma-rotate-3-in}.jltma-animated-headline.rotate-3 i.out{animation:.6s forwards jltma-rotate-3-out}.jltma-animated-headline.loading-bar span{display:inline-block;padding:0 .25em}.jltma-animated-headline.loading-bar .jltma-words-wrapper{vertical-align:top;padding:0}.jltma-animated-headline.loading-bar .jltma-words-wrapper::after{content:\"\";position:absolute;right:0;bottom:0;height:3px;width:0;background:#0096a7;z-index:2;transition:width .3s -.1s}.jltma-animated-headline.loading-bar .jltma-words-wrapper.is-loading::after{width:100%;transition:width var(--jltma-bar-duration, 3s)}.jltma-animated-headline.loading-bar b{top:0;opacity:0;transition:opacity .5s ease-in-out}.is-visible .jltma-animated-headline.rotate-2 i,.is-visible .jltma-animated-headline.scale i,.jltma-animated-headline.loading-bar b.is-visible{opacity:1}.is-visible .jltma-animated-headline.rotate-3 i{transform:rotateY(0)}.no-csstransitions .jltma-animated-headline.scale i{transform:scale(1);opacity:0}.no-csstransitions .jltma-animated-headline.scale .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-2 i{transform:rotateX(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-2 i em{transform:scale(1)}.no-csstransitions .jltma-animated-headline.rotate-2 i .is-visible i{opacity:1}.no-csstransitions .jltma-animated-headline.rotate-3 i{transform:rotateY(0);opacity:0}.no-csstransitions .jltma-animated-headline.rotate-3 .is-visible i{opacity:1}.no-js .jltma-words-wrapper b{opacity:0}.no-js .jltma-words-wrapper b.is-visible{opacity:1}@keyframes jltma-rotate-1-in{0%{transform:rotateX(180deg);opacity:0}35%{transform:rotateX(120deg);opacity:0}65%{opacity:0}100%{transform:rotateX(360deg);opacity:1}}@keyframes jltma-rotate-1-out{0%{transform:rotateX(0);opacity:1}35%{transform:rotateX(-40deg);opacity:1}65%{opacity:0}100%{transform:rotateX(180deg);opacity:0}}@keyframes jltma-rotate-2-in{0%{opacity:0;transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;transform:translateZ(-20px) rotateX(-10deg)}100%{opacity:1;transform:translateZ(-20px) rotateX(0)}}@keyframes jltma-rotate-2-out{0%{opacity:1;transform:translateZ(-20px) rotateX(0)}60%{opacity:0;transform:translateZ(-20px) rotateX(-100deg)}100%{opacity:0;transform:translateZ(-20px) rotateX(-90deg)}}@keyframes jltma-rotate-3-in{0%{transform:rotateY(-180deg)}100%{transform:rotateY(0)}}@keyframes jltma-rotate-3-out{0%{transform:rotateY(0)}100%{transform:rotateY(180deg)}}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.js\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.js\t2026-06-01 13:31:18.000000000 +0000\n@@ -88,11 +88,14 @@\n     if (!$animatedHeaderContainer.length) {\n       return;\n     }\n-    var animationDelay = elementSettings.anim_delay || 2500, barAnimationDelay = elementSettings.bar_anim_delay || 3800, barWaiting = barAnimationDelay - 3e3, lettersDelay = elementSettings.letters_anim_delay || 50, typeLettersDelay = elementSettings.type_anim_delay || 150, selectionDuration = elementSettings.type_selection_delay || 500, typeAnimationDelay = selectionDuration + 800, revealDuration = elementSettings.clip_reveal_delay || 600, revealAnimationDelay = elementSettings.clip_anim_duration || 1500;\n+    var animationDelay = elementSettings.anim_delay || 2500, barAnimationDelay = elementSettings.bar_anim_delay || 3800, barWaiting = 400, lettersDelay = elementSettings.letters_anim_delay || 50, typeLettersDelay = elementSettings.type_anim_delay || 150, selectionDuration = elementSettings.type_selection_delay || 500, typeAnimationDelay = selectionDuration + 800, revealDuration = elementSettings.clip_reveal_delay || 600, revealAnimationDelay = elementSettings.clip_anim_duration || 1500;\n     function singleLetters($words) {\n       $words.each(function() {\n         var word = $2(this), letters = word.text().trim().split(\"\"), selected = word.hasClass(\"is-visible\");\n         for (var i = 0; i \u003C letters.length; i++) {\n+          if (letters[i] === \" \") {\n+            letters[i] = \" \";\n+          }\n           if (word.parents(\".rotate-2\").length > 0) {\n             letters[i] = \"\u003Cem>\" + letters[i] + \"\u003C\u002Fem>\";\n           }\n@@ -202,6 +205,9 @@\n         var headline = $2(this);\n         if (headline.hasClass(\"loading-bar\")) {\n           duration = barAnimationDelay;\n+          headline.find(\".jltma-words-wrapper\").each(function() {\n+            this.style.setProperty(\"--jltma-bar-duration\", (barAnimationDelay - barWaiting) \u002F 1e3 + \"s\");\n+          });\n           setTimeout(function() {\n             headline.find(\".jltma-words-wrapper\").addClass(\"is-loading\");\n           }, barWaiting);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.min.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.min.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.min.js\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Faddons\u002Fma-animated-headlines.min.js\t2026-06-01 13:31:18.000000000 +0000\n@@ -1 +1 @@\n-!function(){function e(e,i){var n={},a=e.data(\"model-cid\");if(\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()&&a){var s=elementorFrontend.config.elements.data[a],l=s.attributes.widgetType||s.attributes.elType,d=elementorFrontend.config.elements.keys[l];d||(d=elementorFrontend.config.elements.keys[l]=[],jQuery.each(s.controls,function(e,t){t.frontend_available&&d.push(e)})),jQuery.each(s.getActiveControls(),function(e){-1!==d.indexOf(e)&&(n[e]=s.attributes[e])})}else n=e.data(\"settings\")||{};return t(n,i)}function t(e,i){if(i){var n=i.split(\".\"),a=n.splice(0,1);if(!n.length)return e[a];if(!e[a])return;return t(e[a],n.join(\".\"))}return e}!function(t){\"use strict\";var i=function(t,i){var n=e(t);if(t.find(\".jltma-animated-headline\").eq(0).length){var a,s,l=n.anim_delay||2500,d=n.bar_anim_delay||3800,r=d-3e3,o=n.letters_anim_delay||50,m=n.type_anim_delay||150,c=n.type_selection_delay||500,f=c+800,u=n.clip_reveal_delay||600,h=n.clip_anim_duration||1500;t.find(\".jltma-animated-headline.letters b\").each(function(){for(var e=i(this),t=e.text().trim().split(\"\"),n=e.hasClass(\"is-visible\"),a=0;a\u003Ct.length;a++)e.parents(\".rotate-2\").length>0&&(t[a]=\"\u003Cem>\"+t[a]+\"\u003C\u002Fem>\"),t[a]=n?'\u003Ci class=\"in\">'+t[a]+\"\u003C\u002Fi>\":\"\u003Ci>\"+t[a]+\"\u003C\u002Fi>\";var s=t.join(\"\");e.html(s).css(\"opacity\",1)}),a=t.find(\".jltma-animated-headline\"),s=l,a.each(function(){var e=i(this);if(e.hasClass(\"loading-bar\"))s=d,setTimeout(function(){e.find(\".jltma-words-wrapper\").addClass(\"is-loading\")},r);else if(e.hasClass(\"clip\")){var t=e.find(\".jltma-words-wrapper\"),n=t.width()+10;t.css(\"width\",n)}else if(!e.hasClass(\"type\")){var a=e.find(\".jltma-words-wrapper b\"),l=0;a.each(function(){var e=i(this).width();e>l&&(l=e)}),e.find(\".jltma-words-wrapper\").css(\"width\",l)}setTimeout(function(){y(e.find(\".is-visible\").eq(0))},s)})}function p(e){return e.is(\":last-child\")?e.parent().children().eq(0):e.next()}function v(e,t){e.removeClass(\"is-visible\").addClass(\"is-hidden\"),t.removeClass(\"is-hidden\").addClass(\"is-visible\")}function w(e,t,n,a){if(e.removeClass(\"in\").addClass(\"out\"),e.is(\":last-child\")?n&&setTimeout(function(){y(p(t))},l):setTimeout(function(){w(e.next(),t,n,a)},a),e.is(\":last-child\")&&i(\"html\").hasClass(\"no-csstransitions\")){var s=p(t);v(t,s)}}function C(e,t,i,n){e.addClass(\"in\").removeClass(\"out\"),e.is(\":last-child\")?(t.parents(\".jltma-animated-headline\").hasClass(\"type\")&&setTimeout(function(){t.parents(\".jltma-words-wrapper\").addClass(\"waiting\")},200),i||setTimeout(function(){y(t)},l)):setTimeout(function(){C(e.next(),t,i,n)},n)}function j(e,t){e.parents(\".jltma-animated-headline\").hasClass(\"type\")?(C(e.find(\"i\").eq(0),e,!1,t),e.addClass(\"is-visible\").removeClass(\"is-hidden\")):e.parents(\".jltma-animated-headline\").hasClass(\"clip\")&&e.parents(\".jltma-words-wrapper\").animate({width:e.width()+10},u,function(){setTimeout(function(){y(e)},h)})}function y(e){var t=p(e);if(e.parents(\".jltma-animated-headline\").hasClass(\"type\")){var i=e.parent(\".jltma-words-wrapper\");i.addClass(\"selected\").removeClass(\"waiting\"),setTimeout(function(){i.removeClass(\"selected\"),e.removeClass(\"is-visible\").addClass(\"is-hidden\").children(\"i\").removeClass(\"in\").addClass(\"out\")},c),setTimeout(function(){j(t,m)},f)}else if(e.parents(\".jltma-animated-headline\").hasClass(\"letters\")){var n=e.children(\"i\").length>=t.children(\"i\").length;w(e.find(\"i\").eq(0),e,n,o),C(t.find(\"i\").eq(0),t,n,o)}else e.parents(\".jltma-animated-headline\").hasClass(\"clip\")?e.parents(\".jltma-words-wrapper\").animate({width:\"2px\"},u,function(){v(e,t),j(t)}):e.parents(\".jltma-animated-headline\").hasClass(\"loading-bar\")?(e.parents(\".jltma-words-wrapper\").removeClass(\"is-loading\"),v(e,t),setTimeout(function(){y(t)},d),setTimeout(function(){e.parents(\".jltma-words-wrapper\").addClass(\"is-loading\")},r)):(v(e,t),setTimeout(function(){y(t)},l))}};t(window).on(\"elementor\u002Ffrontend\u002Finit\",function(){elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-headlines.default\",i)})}(jQuery,window.elementorFrontend)}();\n\\ No newline at end of file\n+!function(){function e(e,a){var i={},n=e.data(\"model-cid\");if(\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()&&n){var s=elementorFrontend.config.elements.data[n],l=s.attributes.widgetType||s.attributes.elType,r=elementorFrontend.config.elements.keys[l];r||(r=elementorFrontend.config.elements.keys[l]=[],jQuery.each(s.controls,function(e,t){t.frontend_available&&r.push(e)})),jQuery.each(s.getActiveControls(),function(e){-1!==r.indexOf(e)&&(i[e]=s.attributes[e])})}else i=e.data(\"settings\")||{};return t(i,a)}function t(e,a){if(a){var i=a.split(\".\"),n=i.splice(0,1);if(!i.length)return e[n];if(!e[n])return;return t(e[n],i.join(\".\"))}return e}!function(t){\"use strict\";var a=function(t,a){var i=e(t);if(t.find(\".jltma-animated-headline\").eq(0).length){var n,s,l=i.anim_delay||2500,r=i.bar_anim_delay||3800,d=i.letters_anim_delay||50,o=i.type_anim_delay||150,m=i.type_selection_delay||500,c=m+800,f=i.clip_reveal_delay||600,u=i.clip_anim_duration||1500;t.find(\".jltma-animated-headline.letters b\").each(function(){for(var e=a(this),t=e.text().trim().split(\"\"),i=e.hasClass(\"is-visible\"),n=0;n\u003Ct.length;n++)\" \"===t[n]&&(t[n]=\" \"),e.parents(\".rotate-2\").length>0&&(t[n]=\"\u003Cem>\"+t[n]+\"\u003C\u002Fem>\"),t[n]=i?'\u003Ci class=\"in\">'+t[n]+\"\u003C\u002Fi>\":\"\u003Ci>\"+t[n]+\"\u003C\u002Fi>\";var s=t.join(\"\");e.html(s).css(\"opacity\",1)}),n=t.find(\".jltma-animated-headline\"),s=l,n.each(function(){var e=a(this);if(e.hasClass(\"loading-bar\"))s=r,e.find(\".jltma-words-wrapper\").each(function(){this.style.setProperty(\"--jltma-bar-duration\",(r-400)\u002F1e3+\"s\")}),setTimeout(function(){e.find(\".jltma-words-wrapper\").addClass(\"is-loading\")},400);else if(e.hasClass(\"clip\")){var t=e.find(\".jltma-words-wrapper\"),i=t.width()+10;t.css(\"width\",i)}else if(!e.hasClass(\"type\")){var n=e.find(\".jltma-words-wrapper b\"),l=0;n.each(function(){var e=a(this).width();e>l&&(l=e)}),e.find(\".jltma-words-wrapper\").css(\"width\",l)}setTimeout(function(){j(e.find(\".is-visible\").eq(0))},s)})}function h(e){return e.is(\":last-child\")?e.parent().children().eq(0):e.next()}function p(e,t){e.removeClass(\"is-visible\").addClass(\"is-hidden\"),t.removeClass(\"is-hidden\").addClass(\"is-visible\")}function w(e,t,i,n){if(e.removeClass(\"in\").addClass(\"out\"),e.is(\":last-child\")?i&&setTimeout(function(){j(h(t))},l):setTimeout(function(){w(e.next(),t,i,n)},n),e.is(\":last-child\")&&a(\"html\").hasClass(\"no-csstransitions\")){var s=h(t);p(t,s)}}function v(e,t,a,i){e.addClass(\"in\").removeClass(\"out\"),e.is(\":last-child\")?(t.parents(\".jltma-animated-headline\").hasClass(\"type\")&&setTimeout(function(){t.parents(\".jltma-words-wrapper\").addClass(\"waiting\")},200),a||setTimeout(function(){j(t)},l)):setTimeout(function(){v(e.next(),t,a,i)},i)}function C(e,t){e.parents(\".jltma-animated-headline\").hasClass(\"type\")?(v(e.find(\"i\").eq(0),e,!1,t),e.addClass(\"is-visible\").removeClass(\"is-hidden\")):e.parents(\".jltma-animated-headline\").hasClass(\"clip\")&&e.parents(\".jltma-words-wrapper\").animate({width:e.width()+10},f,function(){setTimeout(function(){j(e)},u)})}function j(e){var t=h(e);if(e.parents(\".jltma-animated-headline\").hasClass(\"type\")){var a=e.parent(\".jltma-words-wrapper\");a.addClass(\"selected\").removeClass(\"waiting\"),setTimeout(function(){a.removeClass(\"selected\"),e.removeClass(\"is-visible\").addClass(\"is-hidden\").children(\"i\").removeClass(\"in\").addClass(\"out\")},m),setTimeout(function(){C(t,o)},c)}else if(e.parents(\".jltma-animated-headline\").hasClass(\"letters\")){var i=e.children(\"i\").length>=t.children(\"i\").length;w(e.find(\"i\").eq(0),e,i,d),v(t.find(\"i\").eq(0),t,i,d)}else e.parents(\".jltma-animated-headline\").hasClass(\"clip\")?e.parents(\".jltma-words-wrapper\").animate({width:\"2px\"},f,function(){p(e,t),C(t)}):e.parents(\".jltma-animated-headline\").hasClass(\"loading-bar\")?(e.parents(\".jltma-words-wrapper\").removeClass(\"is-loading\"),p(e,t),setTimeout(function(){j(t)},r),setTimeout(function(){e.parents(\".jltma-words-wrapper\").addClass(\"is-loading\")},400)):(p(e,t),setTimeout(function(){j(t)},l))}};t(window).on(\"elementor\u002Ffrontend\u002Finit\",function(){elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-headlines.default\",a)})}(jQuery,window.elementorFrontend)}();\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.js\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.js\t2026-06-01 13:31:18.000000000 +0000\n@@ -2471,6 +2471,7 @@\n             url: JLTMA_SCRIPTS.ajaxurl,\n             data: {\n               action: \"jltma_restrict_content\",\n+              nonce: JLTMA_SCRIPTS.nonce,\n               fields: form.serialize(),\n               restrict_type: $restrict_type,\n               error_message: $error_message,\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.min.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.min.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.min.js\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fjs\u002Fmaster-addons-scripts.min.js\t2026-06-01 13:31:18.000000000 +0000\n@@ -1 +1 @@\n-!function(t){\"use strict\";var a=\"\",n=function(e,t){var a={},n=e.data(\"model-cid\");if(elementorFrontend.isEditMode()&&n){var i=elementorFrontend.config.elements.data[n],r=i.attributes.widgetType||i.attributes.elType,l=elementorFrontend.config.elements.keys[r];l||(l=elementorFrontend.config.elements.keys[r]=[],jQuery.each(i.controls,function(e,t){t.frontend_available&&l.push(e)})),jQuery.each(i.getActiveControls(),function(e){-1!==l.indexOf(e)&&(a[e]=i.attributes[e])})}else a=e.data(\"settings\")||{};return o(a,t)},o=function(e,t){if(t){var a=t.split(\".\"),n=a.splice(0,1);if(!a.length)return e[n];if(!e[n])return;return this.getItems(e[n],a.join(\".\"))}return e},i=function(e){return e.data(\"jltma-template-widget-id\")?e.data(\"jltma-template-widget-id\"):e.data(\"id\")};function r(e,t){new IntersectionObserver(function(e,a){e.forEach(function(e){e.isIntersecting&&t(e)})},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).observe(e)}var l={animatedProgressbar:function(e,a,n,o,i,r,l){var s=\".jltma-progress-bar-\"+e;\"line\"==a&&new ldBar(s,{type:\"stroke\",path:\"M0 10L100 10\",\"aspect-ratio\":\"none\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n),\"line-bubble\"==a&&(new ldBar(s,{type:\"stroke\",path:\"M0 10L100 10\",\"aspect-ratio\":\"none\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n),t(t(\".jltma-progress-bar-\"+e).find(\".ldBar-label\")).animate({left:n+\"%\"},1e3,\"swing\")),\"circle\"==a&&new ldBar(s,{type:\"stroke\",path:\"M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10\",\"stroke-dir\":\"normal\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n),\"fan\"==a&&new ldBar(s,{type:\"stroke\",path:\"M10 90A40 40 0 0 1 90 90\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n)},MA_Accordion:function(e,t){var a=n(e),o=e.find(\".jltma-accordion-header\"),i=a.accordion_type,r=a.toggle_speed?a.toggle_speed:300;o.each(function(){t(this).hasClass(\"active-default\")&&(t(this).addClass(\"show active\"),t(this).next().slideDown(r))}),o.unbind(\"click\"),o.click(function(e){e.preventDefault();var a=t(this);\"accordion\"===i?a.hasClass(\"show\")?(a.removeClass(\"show active\"),a.next().slideUp(r)):(a.parent().parent().find(\".jltma-accordion-header\").removeClass(\"show active\"),a.parent().parent().find(\".jltma-accordion-tab-content\").slideUp(r),a.toggleClass(\"show active\"),a.next().slideDown(r)):a.hasClass(\"show\")?(a.removeClass(\"show active\"),a.next().slideUp(r)):(a.addClass(\"show active\"),a.next().slideDown(r))})},MA_Tabs:function(e,t){try{a=jQuery,n=e.find(\"[data-tabs]\"),o=n.data(\"tab-effect\"),n.each(function(){var e=a(this),t=!1;e.find(\"[data-tab]\").each(function(){a(this).hasClass(\"active\")}),e.find(\".jltma--advance-tab-content\").each(function(){a(this).hasClass(\"active\")&&(t=!0)}),t||e.find(\".jltma--advance-tab-content\").eq(0).addClass(\"active\"),\"hover\"==o?e.find(\"[data-tab]\").hover(function(){var e=a(this).data(\"tab-id\");a(this).siblings().removeClass(\"active\"),a(this).addClass(\"active\"),a(this).closest(\"[data-tabs]\").find(\".jltma--advance-tab-content\").removeClass(\"active\"),a(\"#\"+e).addClass(\"active\")}):e.find(\"[data-tab]\").click(function(){var e=a(this).data(\"tab-id\");a(this).siblings().removeClass(\"active\"),a(this).addClass(\"active\"),a(this).closest(\"[data-tabs]\").find(\".jltma--advance-tab-content\").removeClass(\"active\"),a(\"#\"+e).addClass(\"active\")})})}catch(e){}var a,n,o},MA_ProgressBar:function(e,t){var a=e.data(\"id\"),n=e.find(\".jltma-progress-bar-\"+a),o=n.data(\"type\"),i=n.data(\"progress-bar-value\"),r=n.data(\"progress-bar-stroke-width\"),s=n.data(\"progress-bar-stroke-trail-width\"),d=n.data(\"stroke-color\"),c=n.data(\"stroke-trail-color\");n.find(\"svg\").remove(),n.find(\".ldBar-label\").remove(),n.removeClass(\"ldBar\"),l.animatedProgressbar(a,o,i,d,c,r,s)},MA_Image_Hotspot:function(e,t){n(e);var a=e.find(\".jltma-hotspots-container\");if(a.length){var o=a.find(\"> .jltma-tooltip-item\"),i=e.data(\"id\");o.each(function(e){tippy(this,{allowHTML:!1,theme:\"jltma-tippy-\"+i})})}},MA_Pricing_Table:function(e,t){var a=e.find(\".jltma-price-table-details ul\");if(a.length){var n=a.find(\"> .jltma-tooltip-item\"),o=e.data(\"id\");n.each(function(e){tippy(this,{allowHTML:!1,theme:\"jltma-pricing-table-tippy-\"+o,appendTo:document.body})})}},JLTMA_Data_Table:function(t,a){var n=t.find(\".jltma-data-table-container\"),o=n.data(\"source\"),i=n.data(\"sourcecsv\");if(1==n.data(\"buttons\"))var r=\"Bfrtip\";else r=\"frtip\";if(\"custom\"==o){var l=t.find(\"table thead tr th\").length;t.find(\"table tbody tr\").each(function(){if(e(this).find(\"td\").length\u003Cl){var t=l-e(this).find(\"td\").length;e(this).append(new Array(++t).join(\"\u003Ctd>\u003C\u002Ftd>\"))}}),t.find(\".jltma-data-table\").DataTable({dom:r,paging:n.data(\"paging\"),pagingType:\"numbers\",pageLength:n.data(\"pagelength\"),info:n.data(\"info\"),scrollX:!0,searching:n.data(\"searching\"),ordering:n.data(\"ordering\"),buttons:[{extend:\"csvHtml5\",text:JLTMA_DATA_TABLE.csvHtml5},{extend:\"excelHtml5\",text:JLTMA_DATA_TABLE.excelHtml5},{extend:\"pdfHtml5\",text:JLTMA_DATA_TABLE.pdfHtml5},{extend:\"print\",text:JLTMA_DATA_TABLE.print}],language:{lengthMenu:JLTMA_DATA_TABLE.lengthMenu,zeroRecords:JLTMA_DATA_TABLE.zeroRecords,info:JLTMA_DATA_TABLE.info,infoEmpty:JLTMA_DATA_TABLE.infoEmpty,infoFiltered:JLTMA_DATA_TABLE.infoFiltered,search:\"\",searchPlaceholder:JLTMA_DATA_TABLE.searchPlaceholder,processing:JLTMA_DATA_TABLE.processing}})}else\"csv\"==o&&function(n){var o=(n=n||{}).csv_path||\"\",i=t.element||a(\"#table-container\"),r=t.csv_options||{},l=t.datatables_options||{},s=t.custom_formatting||[],d={};a.each(s,function(e,t){var a=t[0],n=t[1];d[a]=n});var c=a('\u003Ctable class=\"jltma-data-table cell-border\" style=\"width:100%;visibility:hidden;\">');i.empty().append(c),a.when(a.get(o)).then(function(t){for(var n=e.csv.toArrays(t,r),o=a(\"\u003Cthead>\u003C\u002Fthead>\"),i=n[0],s=a(\"\u003Ctr>\u003C\u002Ftr>\"),m=0;m\u003Ci.length;m++)s.append(a(\"\u003Cth>\u003C\u002Fth>\").text(i[m]));o.append(s),c.append(o);for(var f=a(\"\u003Ctbody>\u003C\u002Ftbody>\"),p=1;p\u003Cn.length;p++)for(var u=a(\"\u003Ctr>\u003C\u002Ftr>\"),_=0;_\u003Cn[p].length;_++){var v=a(\"\u003Ctd>\u003C\u002Ftd>\"),g=d[_];g?v.html(g(n[p][_])):v.text(n[p][_]),u.append(v),f.append(u)}c.append(f),c.DataTable(l)})}({csv_path:i,element:n,datatables_options:{dom:r,paging:n.data(\"paging\"),pagingType:\"numbers\",pageLength:n.data(\"pagelength\"),info:n.data(\"info\"),scrollX:!0,searching:n.data(\"searching\"),ordering:n.data(\"ordering\"),buttons:[{extend:\"csvHtml5\",text:JLTMA_DATA_TABLE.csvHtml5},{extend:\"excelHtml5\",text:JLTMA_DATA_TABLE.excelHtml5},{extend:\"pdfHtml5\",text:JLTMA_DATA_TABLE.pdfHtml5},{extend:\"print\",text:JLTMA_DATA_TABLE.print}],language:{lengthMenu:JLTMA_DATA_TABLE.lengthMenu,zeroRecords:JLTMA_DATA_TABLE.zeroRecords,info:JLTMA_DATA_TABLE.info,infoEmpty:JLTMA_DATA_TABLE.infoEmpty,infoFiltered:JLTMA_DATA_TABLE.infoFiltered,search:\"\",searchPlaceholder:JLTMA_DATA_TABLE.searchPlaceholder,processing:JLTMA_DATA_TABLE.processing}}});t.find(\".jltma-data-table\").css(\"visibility\",\"visible\")},JLTMA_Dropdown_Button:function(e,t){e.find(\".jltma-dropdown\").hover(function(){e.find(\".jltma-dd-menu\").addClass(\"jltma-dd-menu-opened\")},function(){e.find(\".jltma-dd-menu\").removeClass(\"jltma-dd-menu-opened\")})},JLTMA_WC_Add_To_Cart:function(e,t){t(document).on(\"click\",\".ajax_add_to_cart\",function(e){t(this).append('\u003Ci class=\"fa fa-spinner animated rotateIn infinite\">\u003C\u002Fi>')}),t(\".jltma-wc-add-to-cart-btn-custom-js\").each(function(e){var a=t(this).attr(\"data-jltma-wc-add-to-cart-btn-custom-css\");t(a).appendTo(\"head\")})},MA_Offcanvas_Menu:function(e,t){l.MA_Offcanvas_Menu.elementSettings=e.data(\"settings\");var a=\"jltma-offcanvas-menu\",n=e.data(\"id\"),o=e.data(\"settings\"),i=o.esc_close?o.esc_close:\"\",r={widget:a,triggerButton:\"jltma-offcanvas__trigger\",offcanvasContent:\"jltma-offcanvas__content\",offcanvasContentBody:\"\".concat(a,\"__body\"),offcanvasContainer:\"\".concat(a,\"__container\"),offcanvasContainerOverlay:\"\".concat(a,\"__container__overlay\"),offcanvasWrapper:\"\".concat(a,\"__wrapper\"),closeButton:\"\".concat(a,\"__close\"),menuArrow:\"\".concat(a,\"__arrow\"),menuInner:\"\".concat(a,\"__menu-inner\"),itemHasChildrenLink:\"menu-item-has-children > a\",contentClassPart:\"jltma-offcanvas-content\",contentOpenClass:\"jltma-offcanvas-content-open\",customContainer:\"\".concat(a,\"__custom-container\")},s={widget:\".\".concat(r.widget),triggerButton:\".\".concat(r.triggerButton),offcanvasContent:\".\".concat(r.offcanvasContent),offcanvasContentBody:\".\".concat(r.offcanvasContentBody),offcanvasContainer:\".\".concat(r.offcanvasContainer),offcanvasContainerOverlay:\".\".concat(r.offcanvasContainerOverlay),offcanvasWrapper:\".\".concat(r.offcanvasWrapper),closeButton:\".\".concat(r.closeButton),menuArrow:\".\".concat(r.menuArrow),menuParent:\".\".concat(r.menuInner,\" .\").concat(r.itemHasChildrenLink),contentClassPart:\".\".concat(r.contentClassPart),contentOpenClass:\".\".concat(r.contentOpenClass),customContainer:\".\".concat(r.customContainer)},d={$document:jQuery(document),$html:jQuery(document).find(\"html\"),$body:jQuery(document).find(\"body\"),$outsideContainer:jQuery(s.offcanvasContainer),$containerOverlay:jQuery(s.offcanvasContainerOverlay),$triggerButton:e.find(s.triggerButton),$offcanvasContent:e.find(s.offcanvasContent),$offcanvasContentBody:e.find(s.offcanvasContentBody),$offcanvasContainer:e.find(s.offcanvasContainer),$offcanvasWrapper:e.find(s.offcanvasWrapper),$closeButton:e.find(s.closeButton),$menuParent:e.find(s.menuParent)};return l.MA_Offcanvas_Menu.resetCanvas=function(){var e=n;d.$html.addClass(\"\".concat(r.offcanvasContent,\"-widget\")),d.$outsideContainer.length||(d.$body.append('\u003Cdiv class=\"'.concat(r.offcanvasContainerOverlay,'\" \u002F>')),d.$body.wrapInner('\u003Cdiv class=\"'.concat(r.offcanvasContainer,'\" \u002F>')),d.$offcanvasContent.insertBefore(s.offcanvasContainer));var t=d.$offcanvasWrapper.find(s.offcanvasContent);if(t.length){var a=d.$outsideContainer.find(\"> .\".concat(r.contentClassPart,\"-\").concat(e));a.length&&a.remove();var o=d.$body.find(\"> .\".concat(r.contentClassPart,\"-\").concat(e));o.length&&o.remove(),d.$html.hasClass(r.contentOpenClass)&&t.addClass(\"active\"),d.$body.prepend(t)}},l.MA_Offcanvas_Menu.offcanvasClose=function(){var e=d.$html.data(\"open-id\"),t=new RegExp(\"\".concat(r.contentClassPart,\"-.*\")),a=d.$html.attr(\"class\").split(\u002F\\s+\u002F);jQuery(\"\".concat(s.contentClassPart,\"-\").concat(e)).removeClass(\"active\"),d.$triggerButton.removeClass(\"trigger-active\"),a.forEach(function(e){e.match(t)&&d.$html.removeClass(e)}),d.$html.removeData(\"open-id\")},l.MA_Offcanvas_Menu.containerClick=function(e){var t=d.$html.data(\"open-id\");n===t&&o.overlay_close&&d.$html.hasClass(r.contentOpenClass)&&l.MA_Offcanvas_Menu.offcanvasClose()},l.MA_Offcanvas_Menu.closeESC=function(e){27===e.keyCode&&(l.MA_Offcanvas_Menu.offcanvasClose(),t(d.$triggerButton).removeClass(\"trigger-active\"))},l.MA_Offcanvas_Menu.addLoaderIcon=function(){jQuery(document).find(\".jltma-offcanvas__content\").addClass(\"jltma-loading\")},l.MA_Offcanvas_Menu.removeLoaderIcon=function(){jQuery(document).find(\".jltma-offcanvas__content\").removeClass(\"jltma-loading\")},l.MA_Offcanvas_Menu.bindEvents=function(){d.$body.on(\"click\",s.offcanvasContainerOverlay,l.MA_Offcanvas_Menu.containerClick.bind(this)),\"yes\"===i&&d.$document.on(\"keydown\",l.MA_Offcanvas_Menu.closeESC.bind(this)),d.$triggerButton.on(\"click\",l.MA_Offcanvas_Menu.offcanvasContent.bind(this)),d.$closeButton.on(\"click\",l.MA_Offcanvas_Menu.offcanvasClose.bind(this)),d.$menuParent.on(\"click\",l.MA_Offcanvas_Menu.onParentClick.bind(this)),t(d.$menuParent).on(\"change\",function(){l.MA_Offcanvas_Menu.onParentClick.bind(t(this))}),t(\"[data-settings=animation_type]\").on(\"click\",function(){l.MA_Offcanvas_Menu.changeControl.bind(t(this))})},l.MA_Offcanvas_Menu.perfectScrollInit=function(){l.MA_Offcanvas_Menu.scrollPerfect?l.MA_Offcanvas_Menu.scrollPerfect.update():l.MA_Offcanvas_Menu.scrollPerfect=new PerfectScrollbar(d.$offcanvasContentBody.get(0),{wheelSpeed:.5,suppressScrollX:!0})},l.MA_Offcanvas_Menu.onEdit=function(){l.MA_Offcanvas_Menu.isEdit&&(void 0===$element.data(\"opened\")&&$element.data(\"opened\",\"false\"),elementor.channels.editor.on(\"section:activated\",l.MA_Offcanvas_Menu.sectionActivated.bind(this)))},l.MA_Offcanvas_Menu.sectionActivated=function(e,t){var a=elementorFrontend.config.elements.data[this.getModelCID()],n=t.getOption(\"editedElementView\");if(this.getModelCID()===t.model.cid&&a.get(\"widgetType\")===n.model.get(\"widgetType\"))if(-1!==this.sectionsArray.indexOf(e)){if(\"true\"===$element.data(\"opened\")){var o=t.getOption(\"model\");l.MA_Offcanvas_Menu.offcanvasContent(null,o.get(\"id\"))}$element.data(\"opened\",\"true\")}else l.MA_Offcanvas_Menu.offcanvasClose()},l.MA_Offcanvas_Menu.offcanvasContent=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=o.canvas_position,i=o.animation_type,l=n;null!==t&&(l=t),d.$triggerButton.addClass(\"trigger-active\"),jQuery(\"\".concat(s.contentClassPart,\"-\").concat(l)).addClass(\"active\"),d.$html.addClass(\"\".concat(r.contentOpenClass)).addClass(\"\".concat(r.contentOpenClass,\"-\").concat(l)).addClass(\"\".concat(r.contentClassPart,\"-\").concat(a)).addClass(\"\".concat(r.contentClassPart,\"-\").concat(i)).data(\"open-id\",l)},l.MA_Offcanvas_Menu.onParentClick=function(e){var t=jQuery(e.target),a=t.hasClass(r.menuArrow)?t.parent():t;!t.hasClass(r.menuArrow)&&-1===[\"\",\"#\"].indexOf(t.attr(\"href\"))&&a.hasClass(\"active\")||e.preventDefault();var n=a.next();a.removeClass(\"active\"),n.slideUp(\"normal\"),n.is(\"ul\")&&!n.is(\":visible\")&&(a.addClass(\"active\"),n.slideDown(\"normal\"))},l.MA_Offcanvas_Menu.changeControl=function(){l.MA_Offcanvas_Menu.offcanvasClose()},l.MA_Offcanvas_Menu.onInit=function(){l.MA_Offcanvas_Menu.resetCanvas(),l.MA_Offcanvas_Menu.bindEvents()},l.MA_Offcanvas_Menu.onInit()},MA_Image_Filter_Gallery:function(e,t){var a=n(e),o=e.find(\".jltma-image-filter-gallery-wrapper\").eq(0),r=e.find(\".jltma-image-filter-gallery\"),l=e.find(\".jltma-image-filter-nav\"),s=e.find(\".jltma-image-filter-gallery-wrapper\"),d=i(e),c=a.ma_el_image_gallery_max_tilt,m=a.ma_el_image_gallery_perspective,f=a.ma_el_image_gallery_speed,p=a.ma_el_image_gallery_tilt_axis,u=a.ma_el_image_gallery_glare,_=(a.line_location,a.ma_el_image_gallery_tooltip),v=t(\".elementor-element-\"+d+\" .jltma-image-filter-gallery\"),g=s.hasClass(\"jltma-masonry-yes\")?\"masonry\":\"fitRows\";if(o.length){if(\"yes\"==_){var h=o.find(\"ul.jltma-tooltip\");if(!h.length)return;var y=h.find(\"> .jltma-tooltip-item\"),w=e.data(\"id\");y.each(function(e){tippy(this,{allowHTML:!1,theme:\"jltma-image-filter-tippy-\"+w})})}var b={filter:\"*\",itemSelector:\".jltma-image-filter-item\",percentPosition:!0,animationOptions:{duration:750,easing:\"linear\",queue:!1}},A=Object.assign({},b);\"fitRows\"===g&&(b.layoutMode=\"fitRows\"),\"masonry\"===g&&(A.macolumnWidthsonry=\".jltma-image-filter-item\",A.horizontalOrder=!0);var j=v.isotope(A);if(j.imagesLoaded().progress(function(){j.isotope(\"layout\"),e.find(\".jltma-image-filter-gallery\").css({\"min-height\":\"300px\"})}),t.isFunction(t.fn.imagesLoaded)&&r.imagesLoaded(function(){t.isFunction(t.fn.isotope)&&r.isotope(b)}),p=\"x\"===p?\"y\":\"y\"===p?\"x\":\"both\",\"yes\"===u)var C=a.ma_el_image_gallery_max_glare;if(u=\"yes\"===u,e.find(\".jltma-tilt-enable\")){var M={maxTilt:c,perspective:m,easing:\"linear\",scale:1,speed:f,disableAxis:p,transition:!0,reset:!0,glare:u,maxGlare:C};e.find(\".jltma-tilt\").tilt(M)}l.on(\"click\",\"li\",function(){if(l.find(\".active\").removeClass(\"active\"),t(this).addClass(\"active\"),t.isFunction(t.fn.isotope)){var e=t(this).attr(\"data-filter\");return r.isotope({filter:e}),!1}}),t(\"jltma-fancybox\").fancybox({protect:!0,animationDuration:366,transitionDuration:366,transitionEffect:\"fade\",animationEffect:\"fade\",preventCaptionOverlap:!0,infobar:!1,buttons:[\"zoom\",\"share\",\"slideShow\",\"fullScreen\",\"download\",\"thumbs\",\"close\"],afterLoad:function(e,t){var a=window.devicePixelRatio||1;a>1.5&&(t.width=t.width\u002Fa,t.height=t.height\u002Fa)}})}},MA_Carousel:function(e,a){var n=e.find(\".jltma-swiper__slide\"),o=elementorFrontend.config.breakpoints,i=e.data(\"swiper\"),r={autoHeight:a.element.autoHeight||!1,direction:a.element.direction||a.default.direction,effect:a.element.effect||a.default.effect,slidesPerView:a.default.slidesPerView,slidesPerColumn:a.default.slidesPerColumn,slidesPerColumnFill:\"row\",slidesPerGroup:a.default.slidesPerGroup,spaceBetween:a.default.spaceBetween,pagination:{},navigation:{},autoplay:a.element.autoplay||!1,grabCursor:!0,watchSlidesProgress:!0,watchSlidesVisibility:!0};return a.default.breakpoints&&(r.breakpoints={},r.breakpoints[o.md]=a.default.breakpoints.tablet,r.breakpoints[o.lg]=a.default.breakpoints.desktop),elementorFrontend.isEditMode()?(r.observer=!0,r.observeParents=!0,r.observeSlideChildren=!0):a.element.freeMode||(r.observer=!0,r.observeParents=!0,r.observeSlideChildren=!0),l.MA_Carousel.init=function(){if(!i){if(r.breakpoints&&(a.element.breakpoints.desktop.slidesPerView&&(r.breakpoints[o.lg].slidesPerView=a.stretch?Math.min(n.length,+a.element.breakpoints.desktop.slidesPerView||3):+a.element.breakpoints.desktop.slidesPerView||3),a.element.breakpoints.tablet.slidesPerView&&(r.breakpoints[o.md].slidesPerView=a.stretch?Math.min(n.length,+a.element.breakpoints.tablet.slidesPerView||2):+a.element.breakpoints.tablet.slidesPerView||2)),a.element.slidesPerView&&(r.slidesPerView=a.stretch?Math.min(n.length,+a.element.slidesPerView||1):+a.element.slidesPerView||1),r.breakpoints&&(a.element.breakpoints.desktop.slidesPerGroup&&(r.breakpoints[o.lg].slidesPerGroup=Math.min(n.length,+a.element.breakpoints.desktop.slidesPerGroup||3)),a.element.breakpoints.tablet.slidesPerGroup&&(r.breakpoints[o.md].slidesPerGroup=Math.min(n.length,+a.element.breakpoints.tablet.slidesPerGroup||2))),a.element.slidesPerGroup&&(r.slidesPerGroup=Math.min(n.length,+a.element.slidesPerGroup||1)),r.breakpoints&&(a.element.breakpoints.desktop.slidesPerColumn&&(r.breakpoints[o.lg].slidesPerColumn=a.element.breakpoints.desktop.slidesPerColumn),a.element.breakpoints.tablet.slidesPerColumn&&(r.breakpoints[o.md].slidesPerColumn=a.element.breakpoints.tablet.slidesPerColumn)),a.element.slidesPerColumn&&(r.slidesPerColumn=a.element.slidesPerColumn),r.breakpoints&&(r.breakpoints[o.lg].spaceBetween=a.element.breakpoints.desktop.spaceBetween||0,r.breakpoints[o.md].spaceBetween=a.element.breakpoints.tablet.spaceBetween||0),a.element.spaceBetween&&(r.spaceBetween=a.element.spaceBetween||0),a.element.slidesPerColumnFill&&(r.slidesPerColumnFill=a.element.slidesPerColumnFill),a.element.arrows){r.navigation.disabledClass=\"jltma-swiper__button--disabled\";var e=a.scope.find(a.element.arrowPrev),t=a.scope.find(a.element.arrowNext);if(e.length&&t.length){var s=a.element.arrowPrev+\"-\"+a.id,d=a.element.arrowNext+\"-\"+a.id;e.addClass(s.replace(\".\",\"\")),t.addClass(d.replace(\".\",\"\")),r.navigation.prevEl=s,r.navigation.nextEl=d}}return a.element.pagination&&(r.pagination.el=\".jltma-swiper__pagination-\"+a.id,r.pagination.type=a.element.paginationType,a.element.paginationClickable&&(r.pagination.clickable=!0)),a.element.loop&&(r.loop=!0),r.autoplay&&(a.element.autoplaySpeed||a.element.disableOnInteraction)&&(r.autoplay={},a.element.autoplaySpeed&&(r.autoplay.delay=a.element.autoplaySpeed),a.element.autoplaySpeed&&(r.autoplay.disableOnInteraction=a.element.disableOnInteraction)),a.element.speed&&(r.speed=a.element.speed),a.element.resistance&&(r.resistanceRatio=1-a.element.resistance),a.element.freeMode&&(r.freeMode=!0,r.freeModeSticky=a.element.freeModeSticky,r.freeModeMomentum=a.element.freeModeMomentum,r.freeModeMomentumBounce=a.element.freeModeMomentumBounce,a.element.freeModeMomentumRatio&&(r.freeModeMomentumRatio=a.element.freeModeMomentumRatio),a.element.freeModeMomentumVelocityRatio&&(r.freeModeMomentumVelocityRatio=a.element.freeModeMomentumVelocityRatio),a.element.freeModeMomentumBounceRatio&&(r.freeModeMomentumBounceRatio=a.element.freeModeMomentumBounceRatio)),r}l.MA_Carousel.destroy()},l.MA_Carousel.onAfterInit=function(e,a,n){void 0!==n&&void 0!==a&&(n.element.stopOnHover&&(e.on(\"mouseover\",function(){a.autoplay.stop()}),e.on(\"mouseout\",function(){a.autoplay.start()})),n.element.slideChangeTriggerResize&&a.on(\"slideChange\",function(){t(window).trigger(\"resize\")}),e.data(\"swiper\",a))},l.MA_Carousel.init()},MA_Gallery_Slider:function(e,t){var a=n(e),o=e.find(\".jltma-gallery-slider__slider\"),r=e.find(\".jltma-gallery-slider__carousel\"),s=i(e),d=(e.data(\"id\"),e.find(\".jltma-gallery-slider__preview\"),e.find(\".jltma-swiper__wrapper .jltma-gallery__item\"),e.find(\".jltma-gallery-slider__gallery .jltma-gallery\"),a.jltma_gallery_slider_thumb_type,a.jltma_gallery_slider_preview_position,elementorFrontend.config.is_rtl,elementorFrontend.config.is_rtl,r.length),c=null,m={key:\"slider\",scope:e,id:s,element:{autoHeight:\"yes\"===a.jltma_gallery_slider_adaptive_height,autoplay:\"yes\"===a.jltma_gallery_slider_autoplay,autoplaySpeed:!(\"yes\"!==a.jltma_gallery_slider_autoplay||!a.jltma_gallery_slider_autoplay_speed)&&a.jltma_gallery_slider_autoplay_speed.size,disableOnInteraction:\"\"!==a.autoplay_disable_on_interaction,stopOnHover:\"yes\"===a.jltma_gallery_slider_pause_on_hover,loop:\"yes\"===a.jltma_gallery_slider_infinite,arrows:\"\"!==a.jltma_gallery_slider_show_arrows,arrowPrev:\".jltma-arrow--prev\",arrowNext:\".jltma-arrow--next\",effect:a.jltma_gallery_slider_effect,speed:a.jltma_gallery_slider_speed?a.jltma_gallery_slider_speed:500,resistance:a.resistance?a.resistance.size:.25,keyboard:{enabled:!0}},default:{effect:\"slide\",direction:\"horizontal\",slidesPerView:1,slidesPerGroup:1,slidesPerColumn:1,spaceBetween:0}};if(d)var f={key:\"carousel\",scope:e,id:s,element:{direction:a.carousel_orientation,arrows:\"\"!==a.jltma_gallery_slider_thumb_show_arrows,arrowPrev:\".jltma-arrow--prev\",arrowNext:\".jltma-arrow--next\",autoHeight:!1,loop:\"yes\"===a.jltma_gallery_slider_thumb_infinite,autoplay:\"yes\"===a.jltma_gallery_slider_thumb_autoplay,autoplaySpeed:!(\"yes\"!==a.jltma_gallery_slider_thumb_autoplay||!a.jltma_gallery_slider_thumb_autoplay_speed)&&a.jltma_gallery_slider_thumb_autoplay_speed.size,stopOnHover:\"yes\"===a.jltma_gallery_slider_thumb_pause_on_hover,speed:a.jltma_gallery_slider_thumb_speed?a.jltma_gallery_slider_thumb_speed:500,slidesPerView:a.jltma_gallery_slider_thumb_items_mobile,slidesPerColumn:\"vertical\"===a.carousel_orientation?1:a.carousel_slides_per_column_mobile,slidesPerGroup:a.carousel_slides_to_scroll_mobile,resistance:a.carousel_resistance?a.carousel_resistance.size:.15,spaceBetween:a.carousel_spacing_mobile?a.carousel_spacing_mobile.size:0,breakpoints:{tablet:{slidesPerView:a.jltma_gallery_slider_thumb_items_tablet,slidesPerColumn:\"vertical\"===a.carousel_orientation?1:a.carousel_slides_per_column_tablet,slidesPerGroup:a.carousel_slides_to_scroll_tablet,spaceBetween:a.carousel_spacing_tablet?a.carousel_spacing_tablet.size:0},desktop:{slidesPerView:a.jltma_gallery_slider_thumb_items,slidesPerColumn:\"vertical\"===a.carousel_orientation?1:a.carousel_slides_per_column,slidesPerGroup:a.carousel_slides_to_scroll,spaceBetween:a.carousel_spacing?a.carousel_spacing.size:0}}},default:{effect:\"slide\",slidesPerView:1,slidesPerGroup:1,slidesPerColumn:1,spaceBetween:6,breakpoints:{tablet:{slidesPerView:2,slidesPerGroup:1,slidesPerColumn:2,spaceBetween:12},desktop:{slidesPerView:3,slidesPerGroup:1,slidesPerColumn:3,spaceBetween:24}}}};l.MA_Gallery_Slider.init=function(){var t=l.MA_Carousel(o,m);if(d)var a=l.MA_Carousel(r,f);if(\"undefined\"==typeof Swiper){const n=elementorFrontend.utils.swiper;new n(o,t).then(function(t){d?new n(r,a).then(function(a){l.MA_Gallery_Slider.initSliders(e,t,a),l.MA_Carousel.onAfterInit(o,t,m),l.MA_Carousel.onAfterInit(r,a,f)}):(l.MA_Gallery_Slider.initSliders(e,t,!1),l.MA_Carousel.onAfterInit(o,t,m))})}else{if(d)var n=new Swiper(o[1],{...a}),i=new Swiper(o[0],{...t,thumbs:{swiper:n}});else i=new Swiper(o[0],{...t});d&&(c=new Swiper(r,a)),l.MA_Gallery_Slider.initSliders(e,i,c),l.MA_Carousel.onAfterInit(o,i,m),d&&l.MA_Carousel.onAfterInit(r,c,f)}},l.MA_Gallery_Slider.getSlider=function(){return e.find(\".jltma-gallery-slider__slider\")},l.MA_Gallery_Slider.getCarousel=function(){return e.find(\".jltma-gallery-slider__carousel\")},l.MA_Gallery_Slider.initSliders=function(e,t,a){var n={scope:e,slider:t,carousel:a};l.MA_Gallery_Slider.onSlideChange(n),l.MA_Gallery_Slider.events(n)},l.MA_Gallery_Slider.events=function(e){var a=e.scope.find(\".jltma-gallery__item\");e.slider.on(\"slideChange\",function(t){l.MA_Gallery_Slider.onSlideChange(e)}),a.on(\"click\",function(){var a=m.element.loop?1:0;event.preventDefault(),e.slider.slideTo(t(this).index()+a)})},l.MA_Gallery_Slider.onSlideChange=function(e){var t=m.element.loop?e.slider.realIndex:e.slider.activeIndex;d&&e.carousel.slideTo(t);var a=e.scope.find(\".jltma-gallery__item\");a.removeClass(\"is--active\"),a.eq(t).addClass(\"is--active\")},l.MA_Gallery_Slider.onThumbClicked=function(e){var a=m.element.loop?1:0;e.preventDefault(),null.slideTo(t(this).index()+a,500,!0)},l.onElementRemove(e,function(){e.find(\".swiper-container\").each(function(){t(this).data(\"swiper\")&&t(this).data(\"swiper\").destroy()})}),l.MA_Gallery_Slider.init()},onElementRemove:function(e,t){elementorFrontend.isEditMode()&&elementor.channels.data.on(\"element:before:remove\",function(a){e.data(\"id\")===a.id&&t()})},MA_Timeline:function(e,t){var a=n(e),o=e.find(\".jltma-timeline\"),r=e.find(\".jltma-timeline-slider\"),s=a.ma_el_timeline_type||\"custom\",d=a.ma_el_timeline_design_type||\"vertical\",c={};if(r.length,i(e),\"horizontal\"===d){var m=e.find(\".jltma-timeline-carousel-slider\");if(!m.length)return;var f=e.find(\".swiper\"),p=m.data(\"settings\"),u=elementorFrontend.utils.swiper;async function _(){await new u(f[0],p),p.pauseOnHover&&f.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}_()}\"vertical\"!==d&&\"post\"!==s||(o=e.find(\".jltma-timeline\"),c={},l.MA_Timeline.init=function(){elementorFrontend.isEditMode()&&(c.scope=window.elementor.$previewContents),void 0!==a.line_location&&a.line_location.size&&(c.lineLocation=a.line_location.size),o.maTimeline(c)},l.MA_Timeline.init())},MA_NewsTicker:function(e,t){try{var a=e.find(\".jltma-news-ticker\"),n=(a.data(\"tickertype\"),a.data(\"tickerid\"),a.data(\"feedurl\"),a.data(\"feedanimation\"),a.data(\"limitposts\"),a.data(\"scroll\")||\"slide-h\"),o=a.data(\"autoplay\"),i=a.data(\"timer\")||3e3,r=e.find(\".jltma-ticker-content-inner.swiper\")[0];if(!r)return;var l={loop:!0,slidesPerView:1,spaceBetween:0,speed:500,navigation:{nextEl:e.find(\".jltma-ticker-next\")[0],prevEl:e.find(\".jltma-ticker-prev\")[0]}};\"slide-v\"===n?l.direction=\"vertical\":\"scroll-h\"===n?(l.direction=\"horizontal\",l.freeMode={enabled:!0,momentum:!1},l.speed=5e3,l.autoplay={delay:0,disableOnInteraction:!1,pauseOnMouseEnter:!0}):l.direction=\"horizontal\",o&&\"scroll-h\"!==n&&(l.autoplay={delay:i,disableOnInteraction:!1,pauseOnMouseEnter:!0}),new Swiper(r,l)}catch(e){console.log(\"News Ticker Error:\",e)}},MA_Blog:function(e,t){n(e),i(e),e.data(\"id\"),e.find(\".jltma-swiper__container\"),e.find(\".jltma-grid__item\");var a=e.find(\".jltma-blog-wrapper\"),o=(a.data(\"col\"),a.data(\"carousel\"));a.data(\"grid\"),e.find(\".jltma-blog-cats-container li a\").click(function(n){n.preventDefault(),e.find(\".jltma-blog-cats-container li .active\").removeClass(\"active\"),t(this).addClass(\"active\");var o=t(this).attr(\"data-filter\");return a.isotope({filter:o}),!1}),a.hasClass(\"jltma-blog-masonry\")&&!o&&a.imagesLoaded(function(){a.isotope({itemSelector:\".jltma-post-outer-container\",percentPosition:!0,animationOptions:{duration:750,easing:\"linear\",queue:!1}})});var r=e.find(\".jltma-blog-carousel-slider\");if(r.length){var l=e.find(\".swiper\"),s=r.data(\"settings\"),d=elementorFrontend.utils.swiper;!async function(){await new d(l[0],s),s.pauseOnHover&&l.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}()}},MA_Image_Carousel:function(e,t){var a=e.find(\".jltma-image-carousel-slider\");if(a.length){var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;!async function(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}()}},MA_Logo_Slider:function(e,t){var a=e.find(\".jltma-logo-carousel-slider\");if(a.length){var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;!async function(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}(),a.find(\".jltma-logo-slider-figure\").on(\"click\",\".item-hover-icon\",function(){var e=t(this);e.toggleClass(\"hide\"),e.siblings(\".jltma-hover-click\").toggleClass(\"show\")}),a.find(\".jltma-logo-slider-item\").each(function(e){var a=t(this).attr(\"id\");if(a){var n,o=t(this).data(\"id\"),i=t(this).data(\"tooltip-settings\"),r=\"#\"+a;n=1==i.follow_cursor?{followCursor:!0}:{placement:i.placement,followCursor:!1};var l=!1;1==i.arrow&&(l=\"round\"!=i.arrow_type||tippy.roundArrow),tippy(r,{content:i.text,...n,animation:i.animation,arrow:l,duration:i.duration,delay:i.delay,trigger:i.trigger,offset:[i.x_offset,i.y_offset],zIndex:999999,allowHTML:!1,theme:\"jltma-tippy-\"+o,onShow(e){var a=e.popper;t(a).addClass(o)}})}})}},MA_TeamSlider:function(e,t){if(\"-content-drawer\"==e.find(\".jltma-team-carousel-wrapper\").eq(0).data(\"team-preset\"))try{jQuery(\".gridder\").gridderExpander({scroll:!1,scrollOffset:0,scrollTo:\"panel\",animationSpeed:400,animationEasing:\"easeInOutExpo\",showNav:!0,nextText:\"\u003Cspan>\u003C\u002Fspan>\",prevText:\"\u003Cspan>\u003C\u002Fspan>\",closeText:\"\",onStart:function(){},onContent:function(){},onClosed:function(){}})}catch(r){}else{var a=e.find(\".jltma-team-carousel-slider\");if(!a.length)return;var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;async function l(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}l()}},MA_Advanced_Image:function(e,t){l.MA_Advanced_Image.elementSettings=n(e),e.find(\".jltma-img-dynamic-dropshadow\").each(function(){var e,t,a;if(this instanceof jQuery){if(!this||!this[0])return;a=this[0]}else a=this;a.classList.contains(\"jltma-img-has-shadow\")||(e=document.createElement(\"div\"),(t=a.cloneNode()).classList.add(\"jltma-img-dynamic-dropshadow-cloned\"),t.classList.remove(\"jltma-img-dynamic-dropshadow\"),a.classList.add(\"jltma-img-has-shadow\"),e.classList.add(\"jltma-img-dynamic-dropshadow-frame\"),a.parentNode.appendChild(e),e.appendChild(a),e.appendChild(t))}),e.find(\".jltma-tilt-box\").tilt({maxTilt:t(this).data(\"max-tilt\"),easing:\"cubic-bezier(0.23, 1, 0.32, 1)\",speed:t(this).data(\"time\"),perspective:2e3})},MA_Tooltip:function(e,t){if(e&&e.length&&t)if(\"undefined\"!=typeof tippy){e.removeData(\"ma-tooltip-retry\");var a=n(e),o=e.data(\"id\"),i=null;if(o&&\"string\"==typeof o){try{if(!(i=document.getElementById(\"jltma-tooltip-\"+o))){var r=e.find(\"#jltma-tooltip-\"+o);if(r&&r.length>0){var s=r[0];s&&1===s.nodeType&&(i=s)}}if(!i||!i.nodeType||1!==i.nodeType)return;if(i.jquery&&(!(i=i[0])||!i.nodeType))return}catch(e){return}var d=function(){try{if(i&&i._maTooltipInitializing)return;if(!a||\"object\"!=typeof a)return;var t=a.ma_el_tooltip_text;if(!t||\"string\"!=typeof t)return;i&&(i._maTooltipInitializing=!0);var n=t.replace(\u002F\u003C\\\u002F?[^>]+(>|$)\u002Fg,\"\"),r=a.ma_el_tooltip_direction||\"top\",l=a.jltma_tooltip_animation||\"shift-away\",s=!1!==a.jltma_tooltip_arrow,d=parseInt(a.jltma_tooltip_duration)||300,c=parseInt(a.jltma_tooltip_delay)||300,m=a.jltma_tooltip_arrow_type||\"sharp\",f=a.jltma_tooltip_trigger||\"mouseenter\",p=a.jltma_tooltip_custom_trigger,u=\"fill\"===a.jltma_tooltip_animation;d=Math.max(100,Math.min(5e3,d)),c=Math.max(0,Math.min(5e3,c));var _=0,v=0;try{a.jltma_tooltip_x_offset&&void 0!==a.jltma_tooltip_x_offset.size&&(_=parseInt(a.jltma_tooltip_x_offset.size)||0),a.jltma_tooltip_y_offset&&void 0!==a.jltma_tooltip_y_offset.size&&(v=parseInt(a.jltma_tooltip_y_offset.size)||0)}catch(e){_=0,v=0}var g=200;try{a.ma_el_tooltip_text_width&&a.ma_el_tooltip_text_width.size&&(g=parseInt(a.ma_el_tooltip_text_width.size)||200)}catch(e){g=200}if(!i||!i.nodeType||1!==i.nodeType)return;if(!n||!n.trim())return;try{var h=i.parentElement;if(h&&h.classList&&h.classList.contains(\"jltma-tooltip-element\"))return}catch(e){}var y={content:n,animation:l,arrow:s,duration:[d,c],trigger:f,animateFill:u,flipOnUpdate:!0,maxWidth:Math.max(50,Math.min(1e3,g)),zIndex:999,allowHTML:!1,theme:\"jltma-tooltip-tippy-\"+o,interactive:!0,hideOnClick:!0,offset:[Math.max(-500,Math.min(500,_)),Math.max(-500,Math.min(500,v))],appendTo:function(){try{return\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()?document.body:\"parent\"}catch(e){return\"parent\"}},onShow:function(e){try{e&&e.popper&&\"undefined\"!=typeof jQuery&&jQuery(e.popper).attr(\"data-tippy-popper-id\",o)}catch(e){}},onCreate:function(e){try{e&&e.reference&&!e.reference.nodeType&&e.reference.jquery&&(e.reference=e.reference[0])}catch(e){}},onDestroy:function(){i&&(i._tippyInstance=null)}};if(s&&\"round\"===m)try{\"undefined\"!=typeof tippy&&tippy.roundArrow&&(y.arrow=tippy.roundArrow)}catch(e){y.arrow=!0}if(\"yes\"===a.jltma_tooltip_follow_cursor||!0===a.jltma_tooltip_follow_cursor?y.followCursor=!0:r&&\"string\"==typeof r&&-1!==[\"top\",\"bottom\",\"left\",\"right\",\"top-start\",\"top-end\",\"bottom-start\",\"bottom-end\",\"left-start\",\"left-end\",\"right-start\",\"right-end\",\"auto\"].indexOf(r)&&(y.placement=r),\"manual\"===f&&p&&\"string\"==typeof p)try{var w=p.replace(\u002F[\u003C>'\"]\u002Fg,\"\"),b=document.querySelector(w);if(b&&1===b.nodeType){y.trigger=\"manual\",y.hideOnClick=!1;var A=function(){var e=i;e&&e.jquery&&(e=e[0]);var t=e?e._tippyInstance:null;t&&t.state&&(t.state.isVisible?t.hide():(t.show(),setTimeout(function(){t&&!t.state.isDestroyed&&t.hide()},1500)))};b.addEventListener(\"click\",A),i._maTooltipCleanup||(i._maTooltipCleanup=[]),i._maTooltipCleanup.push({element:b,event:\"click\",handler:A})}}catch(e){}try{['[data-tippy-popper-id=\"'+o+'\"]',\".tippy-popper[data-tippy-root]\",'.tippy-box[data-theme*=\"'+o+'\"]'].forEach(function(e){try{document.querySelectorAll(e).forEach(function(e){e&&e.parentNode&&e.parentNode.removeChild(e)})}catch(e){}}),i._tippyInstance&&(i._tippyInstance.destroy(),i._tippyInstance=null),i._tippy&&(i._tippy.destroy(),i._tippy=null),i._maTooltipCleanup&&(i._maTooltipCleanup.forEach(function(e){try{e.element.removeEventListener(e.event,e.handler)}catch(e){}}),i._maTooltipCleanup=[])}catch(e){}if(!i||!i.nodeType||1!==i.nodeType)return;var j={};for(var C in y)y.hasOwnProperty(C)&&(j[C]=y[C]);if(\"function\"==typeof j.appendTo)try{var M=j.appendTo();\"parent\"===M?j.appendTo=\"parent\":M&&M.nodeType?j.appendTo=M:j.appendTo=\"parent\"}catch(e){j.appendTo=\"parent\"}try{var k=i;if(k&&k.jquery&&(k=k[0]),!k||!k.nodeType||1!==k.nodeType)throw new Error(\"Invalid DOM element for tooltip\");var T=tippy(k,j);T&&Array.isArray(T)&&T.length>0&&(k._tippyInstance=T[0],i._tippyInstance=T[0],e.data(\"ma-tooltip-active\",!0))}catch(e){return}finally{i&&(i._maTooltipInitializing=!1)}}catch(e){return void(i&&(i._maTooltipInitializing=!1))}};if(d(),\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode())try{e.data(\"ma-tooltip-initialized\",!0);var c=null,m=!1;if(\"undefined\"!=typeof elementorModules&&elementorModules.frontend&&elementorModules.frontend.handlers&&elementorModules.frontend.handlers.Base){var f=elementorModules.frontend.handlers.Base.extend({onElementChange:function(t){!t||\"string\"!=typeof t||0!==t.indexOf(\"ma_el_tooltip\")&&0!==t.indexOf(\"jltma_tooltip\")||m||(c&&clearTimeout(c),c=setTimeout(function(){try{m=!0,a=n(e),document.querySelectorAll(\".tippy-popper:not([data-tippy-popper-id])\").forEach(function(e){e.parentNode&&e.parentNode.removeChild(e)}),d(),c=null,setTimeout(function(){m=!1},100)}catch(e){m=!1}},200))},onDestroy:function(){if(c&&clearTimeout(c),i&&i._tippyInstance)try{i._tippyInstance.destroy()}catch(e){}}});try{elementorFrontend.elementsHandler.addHandler(f,{$element:e})}catch(t){e.one(\"remove\",function(){if(c&&clearTimeout(c),i&&i._tippyInstance)try{i._tippyInstance.destroy()}catch(e){}})}}}catch(e){}if(\"undefined\"!=typeof window&&window.addEventListener){var p=function(){if(i){if(i._tippyInstance)try{i._tippyInstance.destroy()}catch(e){}i._maTooltipCleanup&&i._maTooltipCleanup.forEach(function(e){try{e.element.removeEventListener(e.event,e.handler)}catch(e){}})}};window.addEventListener(\"beforeunload\",p),window.addEventListener(\"pagehide\",p)}}}else{var u=(e.data(\"ma-tooltip-retry\")||0)+1;u\u003C=10&&(e.data(\"ma-tooltip-retry\",u),setTimeout(function(){l.MA_Tooltip(e,t)},100))}},MA_Twitter_Slider:function(e,t){var a=e.find(\".jltma-twitter-carousel-slider\");if(a.length){var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;!async function(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}()}},MA_ParticlesBG:function(e,t){function a(){return\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()}if(e.hasClass(\"jltma-particle-yes\")||e.attr(\"data-jltma-particle\")||e.find(\".jltma-particle-wrapper\").attr(\"data-jltma-particles-editor\")){let t,n=e.data(\"element_type\"),o=encodeURIComponent(e.data(\"id\"));if(t=a()?e.find(\".jltma-particle-wrapper\").attr(\"data-jltma-particles-editor\"):e.attr(\"data-jltma-particle\"),(\"section\"===n||\"column\"===n||\"container\"===n)&&t)if(a())if(e.hasClass(\"jltma-particle-yes\"))try{let a=JSON.parse(t);particlesJS(\"jltma-particle-\"+o,a),e.find(\".elementor-column\").css(\"z-index\",9),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},500),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},1500)}catch(e){}else e.find(\".jltma-particle-wrapper\").remove();else{e.prepend('\u003Cdiv class=\"jltma-particle-wrapper\" id=\"jltma-particle-'+o+'\">\u003C\u002Fdiv>');try{let e=JSON.parse(t);particlesJS(\"jltma-particle-\"+o,e),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},500),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},1500)}catch(e){}}}},MA_BgSlider:function(e,t){function a(){return\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()}if(a()){if(!e.find(\".ma-el-section-bs\").length)return}else if(!e.hasClass(\"has_ma_el_bg_slider\"))return;var n,o,i,r,l,s,d,c,m,f,p,u,_=[];(a()?(f=e.find(\".ma-el-section-bs-inner\")).length&&(m=f.attr(\"data-ma-el-bg-slider\")):m=e.attr(\"data-ma-el-bg-slider-images\"),m)&&(a()?(o=(f=e.find(\".ma-el-section-bs-inner\")).attr(\"data-ma-el-bg-slider-transition\"),i=f.attr(\"data-ma-el-bg-slider-animation\"),r=f.attr(\"data-ma-el-bg-custom-overlay\"),s=f.attr(\"data-ma-el-bg-slider-cover\"),d=f.attr(\"data-ma-el-bs-slider-delay\"),c=f.attr(\"data-ma-el-bs-slider-timer\"),l=\"yes\"==r?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\":(p=f.attr(\"data-ma-el-bg-slider-overlay\"))&&\"00.png\"!==p?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F\"+p:JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\"):(o=e.attr(\"data-ma-el-bg-slider-transition\"),i=e.attr(\"data-ma-el-bg-slider-animation\"),r=e.attr(\"data-ma-el-bg-custom-overlay\"),s=e.attr(\"data-ma-el-bg-slider-cover\"),d=e.attr(\"data-ma-el-bs-slider-delay\"),c=e.attr(\"data-ma-el-bs-slider-timer\"),l=\"yes\"==r?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\":(p=e.attr(\"data-ma-el-bg-slider-overlay\"))?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F\"+p+\".png\":JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\"),n=m.split(\",\"),jQuery.each(n,function(e,t){var a=[];a.src=t,_.push(a)}),e.find(\".ma-el-section-bs\").length||e.prepend('\u003Cdiv class=\"ma-el-section-bs\">\u003Cdiv class=\"ma-el-section-bs-inner\">\u003C\u002Fdiv>\u003C\u002Fdiv>'),(u=e.find(\".ma-el-section-bs-inner\")).vegas({slides:_,transition:o,animation:i,overlay:l,cover:\"true\"==s,delay:parseInt(d)||5e3,timer:\"true\"==c,init:function(){\"yes\"==r&&u.children(\".vegas-overlay\").css(\"background-image\",\"\")}}))},MA_AnimatedGradient:function(e,t){if(e.hasClass(\"ma-el-animated-gradient-yes\")){let t=e.data(\"color\")||e.attr(\"data-color\"),a=e.data(\"angle\")||e.attr(\"data-angle\"),n=e.data(\"duration\")||e.attr(\"data-duration\")||\"6s\",o=parseInt(e.data(\"smoothness\")||e.attr(\"data-smoothness\")||3),i=e.data(\"easing\")||e.attr(\"data-easing\")||\"cubic-bezier(0.4, 0.0, 0.2, 1)\";if(!t||!a)return;let r=t.split(\",\");if(r.length\u003C2)return;let l=\"jltma-animated-gradient-\"+Math.random().toString(36).substring(2,11),s=`@keyframes ${l} {`,d=r.length;for(let e=0;e\u003C=d;e++){let t=e\u002Fd*100,n=e%r.length,i=(e+1)%r.length;if(s+=`${t.toFixed(2)}% { background: linear-gradient(${a}, ${r[n].trim()}, ${r[i].trim()}); }`,e\u003Cd){let e=100\u002Fd;for(let n=1;n\u003C=o;n++){let l=t+e*(n\u002F(o+1)),d=i,c=(i+1)%r.length;s+=`${l.toFixed(2)}% { background: linear-gradient(${a}, ${r[d].trim()}, ${r[c].trim()}); }`}}}s+=\"}\";let c=document.createElement(\"style\");if(c.textContent=s,document.head.appendChild(c),e.css({animation:`${l} ${n} ${i} infinite`,\"background-size\":\"400% 400%\"}),e.hasClass(\"elementor-element-edit-mode\")){let t=e.find(\".animated-gradient\");if(t.length>0){let e=t.data(\"color\")||t.attr(\"data-color\"),a=t.data(\"angle\")||t.attr(\"data-angle\"),n=t.data(\"duration\")||t.attr(\"data-duration\")||\"6s\";if(e&&a){let r=e.split(\",\");if(r.length>=2){let e=\"jltma-animated-gradient-editor-\"+Math.random().toString(36).substring(2,11),l=`@keyframes ${e} {`,s=r.length;for(let e=0;e\u003C=s;e++){let t=e\u002Fs*100,n=e%r.length,i=(e+1)%r.length;if(l+=`${t.toFixed(2)}% { background: linear-gradient(${a}, ${r[n].trim()}, ${r[i].trim()}); }`,e\u003Cs){let e=100\u002Fs;for(let n=1;n\u003C=o;n++){let s=t+e*(n\u002F(o+1)),d=i,c=(i+1)%r.length;l+=`${s.toFixed(2)}% { background: linear-gradient(${a}, ${r[d].trim()}, ${r[c].trim()}); }`}}}l+=\"}\";let d=document.createElement(\"style\");d.textContent=l,document.head.appendChild(d),t.css({animation:`${e} ${n} ${i} infinite`,\"background-size\":\"400% 400%\"})}}}}}},MA_Image_Comparison:function(e,t){var a=e.find(\".jltma-image-comparison\").eq(0),n=a.data(\"image-comparison-settings\");a.twentytwenty({default_offset_pct:n.visible_ratio,orientation:n.orientation,before_label:n.before_label,after_label:n.after_label,move_slider_on_hover:n.slider_on_hover,move_with_handle_only:n.slider_with_handle,click_to_move:n.slider_with_click,no_overlay:n.no_overlay})},MA_BarCharts:function(e){r(e[0],function(){var t=e.find(\".jltma-bar-chart-container\"),a=e.find(\"#jltma-bar-chart\"),n=t.data(\"settings\");t.length&&new Chart(a,n)})},MA_PieCharts:function(e,t){r(e[0],function(){e.find(\".ma-el-piechart .ma-el-percentage\").each(function(){var e=t(this).data(\"track-color\"),a=t(this).data(\"bar-color\");t(this).easyPieChart({animate:2e3,lineWidth:10,barColor:a,trackColor:e,scaleColor:!1,lineCap:\"square\",size:220})})})},ProgressBars:function(e,t){r(e[0],function(){e.find(\".jltma-stats-bar-content\").each(function(){var e=t(this).data(\"perc\");t(this).animate({width:e+\"%\"},20*e)})})},MA_Toggle_Content:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-toggle-content\"),o={active:l.getElementSettings.jltma_toggle_content_active_index};\"\"!==l.getElementSettings.jltma_toggle_content_indicator_color&&(o.indicatorColor=l.getElementSettings.jltma_toggle_content_indicator_color),l.getElementSettings.jltma_toggle_content_indicator_speed.size&&(o.speed=l.getElementSettings.jltma_toggle_content_indicator_speed.size),elementorFrontend.isEditMode()&&(o.watchControls=!0),a.MA_ToggleElement(o)},MA_Comment_Form_reCaptcha:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-comments-wrap\");a.data(\"recaptcha\"),a.data(\"jltma-comment-settings\").reCaptchaprotected},MA_Counter_Up:function(e,t){var a=e.find(\".jltma-counter-up-number\");t.isFunction(t.fn.counterUp)&&a.counterUp({duration:2e3,delay:15})},MA_CountdownTimer:function(e,t){var a=e.find(\".jltma-widget-countdown\");t.fn.MasterCountDownTimer=function(){var e=t(this).find(\".jltma-countdown-wrapper\"),a={year:e.data(\"countdown-year\"),month:e.data(\"countdown-month\"),day:e.data(\"countdown-day\"),hour:e.data(\"countdown-hour\"),min:e.data(\"countdown-min\"),sec:e.data(\"countdown-sec\")},n=(e.data(\"countdown-infinite\"),new Date(a.year,a.month,a.day,a.hour,a.min,a.sec)),o=e.find(\".jltma-countdown-year\"),i=e.find(\".jltma-countdown-month\"),r=e.find(\".jltma-countdown-day\"),l=e.find(\".jltma-countdown-hour\"),s=e.find(\".jltma-countdown-min\"),d=e.find(\".jltma-countdown-sec\"),c=setInterval(function(){var e=new Date,t=(Date.parse(n)-Date.parse(e))\u002F1e3;if(t\u003C=0)return o.text(0),i.text(0),r.text(0),l.text(0),s.text(0),d.text(0),void clearInterval(c);var a=t,m=Math.floor(a\u002F31536e3);a%=31536e3;var f=Math.floor(a\u002F2592e3);a%=2592e3;var p=Math.floor(a\u002F86400);a%=86400;var u=Math.floor(a\u002F3600);a%=3600;var _=Math.floor(a\u002F60),v=Math.floor(a%60);o.text(m),i.text(f),r.text(p),l.text(u),s.text(_),d.text(v)},1e3)},a.each(function(){t(this).MasterCountDownTimer()})},MA_Fancybox_Popup:function(e,t){var a;(a=jQuery).isFunction(a.fn.fancybox)&&a(\"[data-fancybox]\").fancybox({})},MA_Reveal:function(e,t){var a;if(l.MA_Reveal.elementSettings=n(e),l.MA_Reveal.revealAction=function(){a=new RevealFx(i,{revealSettings:{bgcolor:l.MA_Reveal.elementSettings.reveal_bgcolor,direction:l.MA_Reveal.elementSettings.reveal_direction,duration:100*Number(l.MA_Reveal.elementSettings.reveal_speed.size),delay:100*Number(l.MA_Reveal.elementSettings.reveal_delay.size),onCover:function(e,t){e.style.opacity=1}}})},l.MA_Reveal.runReveal=function(){a.reveal()},l.MA_Reveal.elementSettings.enabled_reveal){var o=\"#reveal-\"+e.data(\"id\"),i=document.querySelector(o);jQuery(o).hasClass(\"block-revealer\")||l.MA_Reveal.revealAction(),l.MA_Reveal.waypointOptions={offset:\"100%\",triggerOnce:!0},r(i,l.MA_Reveal.runReveal,l.MA_Reveal.waypointOptions)}},MA_Rellax:function(e,t){var o=n(e),i=null;t(window).on(\"resize\",function(){i&&(i.destroy(),i&&r())});var r=function(){if(o.enabled_rellax){if(\"undefined\"==typeof Rellax)return;var n=\"speed_rellax\",r=0;\"desktop\"!=(a=elementorFrontend.getCurrentDeviceMode())&&(n=\"speed_rellax_\"+a);var l=o[n];l&&void 0!==l.size&&(r=l.size);var s=\"#rellax-\"+e.data(\"id\");if(t(s).length)try{i=new Rellax(s,{speed:r})}catch(e){}}};r()},MA_Rellax_Final:function(e,t,a){l.getElementSettings=n(o);var o=a.$el;o.find(\"#scene\")},MA_Entrance_Animation:function(e,t){var a=(e=e||t(this)).hasClass(\"jltma-appear-watch-animation\")?e:e.find(\".jltma-appear-watch-animation\"),n=t(\"body\").hasClass(\"jltma-page-animation\");a.length&&(n?document.body.addEventListener(\"JltmaPageAnimationDone\",function(e){a.appearl({offset:\"200px\",insetOffset:\"0px\"}).one(\"appear\",function(e,t){this.classList.add(\"jltma-animated\"),this.classList.add(\"jltma-animated-once\")})}):a.appearl({offset:\"200px\",insetOffset:\"0px\"}).one(\"appear\",function(e,t){this.classList.add(\"jltma-animated\"),this.classList.add(\"jltma-animated-once\")}))},MA_Wrapper_Link:function(e,t){t(\"body\").off(\"click.onWrapperLink\",\"[data-jltma-wrapper-link]\"),t(\"body\").on(\"click.onWrapperLink\",\"[data-jltma-wrapper-link]\",function(e){e.preventDefault(),e.stopPropagation();var a=t(this),n=a.data(\"jltma-wrapper-link\"),o=a.data(\"id\"),i=document.createElement(\"a\");i.id=\"master-addons-wrapper-link-\"+o,i.href=n.url,i.target=n.is_external?\"_blank\":\"_self\",i.rel=n.nofollow?\"nofollow noreferer\":\"\",i.style.display=\"none\",document.body.appendChild(i),document.getElementById(i.id),n&&n.url&&(n.is_external?window.open(n.url,\"_blank\",n.nofollow?\"noopener,noreferrer\":\"noopener\"):window.location.href=n.url)})},MA_Restrict_Content_Ajax:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-restrict-content-wrap\").eq(0),o=e.data(\"id\"),i=a.data(\"restrict-layout-type\"),r=a.data(\"restrict-type\"),s=a.data(\"error-message\"),d=(a.data(\"rc-ajaxify\"),\"ma_el_rc_\"+o),c=e.find(\".jltma-restrict-form\").eq(0).data(\"form-id\"),m=e.find(\".jltma-restrict-content-popup-content\"),f=a.data(\"content-pass\")?a.data(\"content-pass\"):\"\",p=m.data(\"popup-type\")?m.data(\"popup-type\"):\"\",u=e.find(\".jltma-restrict-age-wrapper\").eq(0),_={min_age:u.data(\"min-age\"),age_type:u.data(\"age-type\"),age_title:u.data(\"age-title\"),age_content:u.data(\"age-content\"),age_submit:t(\"#\"+c).find('button[name=\"submit\"]').val(),checkbox_msg:u.data(\"checkbox-msg\")?u.data(\"checkbox-msg\"):\"\",empty_bday:u.data(\"empty-bday\")?u.data(\"empty-bday\"):\"\",non_exist_bday:u.data(\"non-exist-bday\")?u.data(\"non-exist-bday\"):\"\"};if(localStorage.getItem(d))t(\".jltma-rc-button\").addClass(\"d-none\"),t(\"#\"+c).addClass(\"d-none\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"card\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"text-center\"),t(\"#restrict-content-\"+o).addClass(\"d-block\");else{if(\"popup\"==i)var v=\"#jltma-rc-modal-\"+o;else v=\"#jltma-restrict-content-\"+o;t(v).on(\"click\",\".jltma_ra_select\",function(){var e=t(this).closest(\".jltma_ra_select_wrap\");e.find(\".jltma_ra_options\").hasClass(\"jltma_ra_active\")?e.find(\".jltma_ra_options\").removeClass(\"jltma_ra_active\"):(t(\".jltma_ra_options\").removeClass(\"jltma_ra_active\"),e.find(\".jltma_ra_options\").addClass(\"jltma_ra_active\"),e.find(\".jltma_ra_options\").find('li:contains(\"'+e.find(\".jltma_ra_select_val\").html()+'\")').addClass(\"jltma_ra_active\"))}),t(v).on(\"click\",\".jltma_ra_options ul li\",function(){var e=t(this).closest(\".jltma_ra_select_wrap\");e.find(\".jltma_ra_select_val\").html(t(this).html()),e.find(\"select\").val(t(this).attr(\"data-val\")),e.find(\".jltma_ra_options\").removeClass(\"jltma_ra_active\")}),t(v).on(\"mouseover\",\".jltma_ra_options ul li\",function(){t(\".jltma_ra_options ul li\").hasClass(\"jltma_ra_active\")&&t(\".jltma_ra_options ul li\").removeClass(\"jltma_ra_active\")}),t(document).click(function(e){\"jltma_ra_select\"==t(e.target).attr(\"class\")||t(\".jltma_ra_select\").find(t(e.target)).length||t(\".jltma_ra_options.jltma_ra_active\").length&&t(\".jltma_ra_options\").removeClass(\"jltma_ra_active\")}),\"windowload\"==p||\"windowloadfullscreen\"==p?t(\"#ma-el-rc-modal-hidden\").fancybox().trigger(\"click\"):t(\"[data-fancybox]\").fancybox({}),t(v).on(\"submit\",\"#\"+c,function(e){e.preventDefault();var a=t(this);a.find(\".jltma_rc_result\").remove(),t.ajax({type:\"POST\",url:JLTMA_SCRIPTS.ajaxurl,data:{action:\"jltma_restrict_content\",fields:a.serialize(),restrict_type:r,error_message:s,content_pass:f,restrict_age:_},cache:!1,success:function(e){try{if(\"success\"==(e=jQuery.parseJSON(e)).result)t(\"#restrict-content-\"+o).removeClass(\"d-none\").addClass(\"d-block\"),t(\"#\"+c).addClass(\"d-none\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"card\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"text-center\"),localStorage.setItem(d,!0),t.fancybox.close(),t(\".jltma-rc-button\").addClass(\"d-none\");else{if(\"validate\"!=e.result)throw 0;t(\"#\"+c+\" .jltma_rc_submit\").after('\u003Cdiv class=\"jltma_rc_result\">\u003Cspan class=\"eicon-info-circle-o\">\u003C\u002Fspan> '+e.output+\"\u003C\u002Fdiv>\")}}catch(e){t(\"#\"+c+\" .jltma_rc_submit\").after('\u003Cdiv class=\"jltma_rc_result\">\u003Cspan class=\"eicon-loading\">\u003C\u002Fspan> Failed, please try again.\u003C\u002Fdiv>')}}})})}},MA_Restrict_Content:function(e,t){try{!function(t){l.getElementSettings=n(e);var a=e.find(\".jltma-restrict-content-wrap\").eq(0),o=(e.data(\"id\"),a.data(\"restrict-layout-type\"),a.data(\"restrict-type\"),e.find(\".jltma-restrict-content-popup-content\"),a.data(\"content-pass\"),e.find(\".jltma-restrict-age-wrapper\").eq(0));o.data(\"min-age\"),o.data(\"age-type\"),o.data(\"age-title\"),o.data(\"age-content\"),o.data(\"checkbox-msg\"),l.MA_Restrict_Content_Ajax(e,t)}(jQuery)}catch(e){}},MA_Nav_Menu:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-nav-menu-element\"),o=a.data(\"menu-id\"),i=a.data(\"menu-layout\"),r=(a.data(\"menu-trigger\"),a.data(\"menu-offcanvas\")),s=a.data(\"menu-toggletype\"),d=a.data(\"menu-animation\"),c=a.data(\"menu-container-id\"),m=a.data(\"sticky-type\"),f=t(\"#\"+c).outerHeight(),p=t(\"#\"+c);if(\"onepage\"==i)t(document).on(\"click\",\".jltma-navbar-nav li a\",function(e){if(t(this).attr(\"href\")){var a=t(this),n=a.get(0),o=n.href,i=o.indexOf(\"#\"),r=a.parents(\".jltma-navbar-nav-default\").hasClass(\"jltma-one-page-enabled\");-1!==i&&o.length>1&&r&&n.pathname==window.location.pathname&&(e.preventDefault(),a.parents(\".jltma-menu-container\").find(\".jltma-close\").trigger(\"click\"))}}),t(document).on(\"click\",function(e){t(e.target),!0===t(\".navbar-collapse\").hasClass(\"show\")&&t(\".jltma-one-page-enabled\").removeClass(\"show\")});else{var u=t(\".jltma-dropdown.jltma-sub-menu\");if(t(\"#\"+o+\" .jltma-menu-has-children\").hover(function(){u.hasClass(\"fade-up\")&&u.removeClass(\"fade-up\"),u.hasClass(\"fade-down\")&&u.removeClass(\"fade-down\"),t(\".jltma-dropdown.jltma-sub-menu\").addClass(d)}),\"fixed-onscroll\"==m&&t(window).width()>768&&t(function(){t(window).scroll(function(){t(window).scrollTop()>=10?p.removeClass(\"\"+c).addClass(\"jltma-on-scroll-fixed\"):p.removeClass(\"jltma-on-scroll-fixed\").addClass(\"\"+c)})}),\"sticky-top\"==m&&t(window).width()>768&&t(function(){t(window).scroll(function(){t(window).scrollTop()>=10?p.removeClass(\"\"+c).addClass(\"sticky-top\"):p.removeClass(\"sticky-top\").addClass(\"\"+c)})}),\"smart-scroll\"==m&&(t(\"body\").css(\"padding-top\",f+\"px\"),p.addClass(\"jltma-smart-scroll\"),t(\".jltma-smart-scroll\").length>0)){var _=0;t(window).on(\"scroll\",function(){var e=t(this).scrollTop();e\u003C_?t(\".jltma-smart-scroll\").removeClass(\"scrolled-down\").addClass(\"scrolled-up\"):t(\".jltma-smart-scroll\").removeClass(\"scrolled-up\").addClass(\"scrolled-down\"),_=e})}\"nav-fixed-top\"==m&&t(window).width()>768&&t(function(){t(\"body\").css(\"padding-top\",f+\"px\"),p.addClass(\"jltma-fixed-top\")}),\"toggle\"==s&&t(\"#\"+o+\" .navbar-nav.toggle .jltma-menu-dropdown-toggle\").click(function(e){t(this).parents(\".dropdown\").toggleClass(\"open\"),e.stopPropagation()}),\"toggle-bar\"==r&&t(\".jltma-nav-panel .navbar-toggler\").on(\"click\",function(e){t(\".jltma-burger\").toggleClass(\"jltma-close\")}),\"offcanvas\"!=r&&\"overlay\"!=r||(t(\".jltma-nav-panel .navbar-toggler\").on(\"click\",function(e){e.preventDefault(),e.stopPropagation();var a=t(this).attr(\"data-trigger\");t(a).toggleClass(\"show\"),t(\"body\").toggleClass(\"offcanvas-active\"),t(\".jltma-nav-panel \").toggleClass(\"offcanvas-nav\"),\"overlay\"==r&&t(\".jltma-nav-panel \").toggleClass(\"offcanvas-overlay\")}),t(document).on(\"keydown\",function(e){27===e.keyCode&&(t(\".mobile-offcanvas\").removeClass(\"show\"),t(\".desktop-offcanvas\").removeClass(\"show\"),t(\"body\").removeClass(\"overlay-active\"))}),t(\".btn-close, .jltma-nav-panel .offcanvas-nav, .jltma-nav-panel.desktop .jltma-close, .jltma-close\").click(function(e){t(\".jltma-nav-panel \").removeClass(\"offcanvas-nav\"),t(\".mobile-offcanvas\").removeClass(\"show\"),t(\".desktop-offcanvas\").removeClass(\"show\"),t(\"body\").removeClass(\"offcanvas-active\"),\"overlay\"==r&&t(\".jltma-nav-panel \").removeClass(\"offcanvas-overlay\")}))}},initEvents:function(e,t){e.find(\".jltma-search-wrapper\").eq(0).data(\"search-type\");var a=e.find(\".jltma-search-main-wrap\"),n=document.getElementById(\"jltma-btn-search\"),o=document.getElementById(\"jltma-btn-search-close\"),i=e.find(\".jltma-search\"),r=i.find(\".jltma-search__input\");t(n).on(\"click\",function(){a.addClass(\"main-wrap--move\"),i.addClass(\"search--open\"),setTimeout(function(){r.focus()},600)}),t(o).on(\"click\",function(){a.removeClass(\"main-wrap--move\"),i.removeClass(\"search--open\"),r.blur(),r.value=\"\"}),document.addEventListener(\"keyup\",function(e){27==e.keyCode&&l.closeSearch()})},MA_Header_Search:function(e,t){t(\"body\").addClass(\"js\"),l.initEvents(e,t)}};function s(e){t(e).find(\".jltma-fancybox\").each(function(){const e=function(e){if(!e)return\"\";const t=document.createElement(\"textarea\");return t.innerHTML=e,t.value}(t(this).data(\"caption\")),a=\u002F\\son\\w+\\s*=\u002Fi.test(e),n=\u002F\u003C\\s*script\u002Fi.test(e),o=\u002Fjavascript:\u002Fi.test(e);e&&(a||n||o)&&(t(this).attr(\"data-caption\",\"\"),t(this).closest(\".elementor-element\").remove())})}t(document).ready(function(){s(document.body),new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{1===e.nodeType&&s(e)})})}).observe(document.body,{childList:!0,subtree:!0})}),t(window).on(\"elementor\u002Ffrontend\u002Finit\",function(){elementorFrontend.isEditMode(),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_AnimatedGradient),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fcontainer\",l.MA_AnimatedGradient),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_BgSlider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fcontainer\",l.MA_BgSlider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_ParticlesBG),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fcontainer\",l.MA_ParticlesBG),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_Reveal),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_Rellax),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_Wrapper_Link),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-headlines.default\",l.MA_Animated_Headlines),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-advanced-accordion.default\",l.MA_Accordion),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-tabs.default\",l.MA_Tabs),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbar.default\",l.MA_ProgressBar),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-team-members-slider.default\",l.MA_TeamSlider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-image-carousel.default\",l.MA_Image_Carousel),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-blog-post.default\",l.MA_Blog),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-news-ticker.default\",l.MA_NewsTicker),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-el-countdown-timer.default\",l.MA_CountdownTimer),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-counter-up.default\",l.MA_Counter_Up),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-piecharts.default\",l.MA_PieCharts),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-timeline.default\",l.MA_Timeline),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-image-filter-gallery.default\",l.MA_Image_Filter_Gallery),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-gallery-slider.default\",l.MA_Gallery_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-el-image-comparison.default\",l.MA_Image_Comparison),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-el-restrict-content.default\",l.MA_Restrict_Content),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-search.default\",l.MA_Header_Search),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbars.default\",l.ProgressBars),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-instagram-feed.default\",l.MA_Instagram_Feed),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-toggle-content.default\",l.MA_Toggle_Content),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-comments.default\",l.MA_Comment_Form_reCaptcha),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-logo-slider.default\",l.MA_Logo_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-twitter-slider.default\",l.MA_Twitter_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-advanced-image.default\",l.MA_Advanced_Image),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-tooltip.default\",l.MA_Tooltip),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-image-hotspot.default\",l.MA_Image_Hotspot),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-pricing-table.default\",l.MA_Pricing_Table),elementorFrontend.isEditMode()&&(elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-headlines.default\",l.MA_Animated_Headlines),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-piecharts.default\",l.MA_PieCharts),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbars.default\",l.ProgressBars),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbar.default\",l.MA_ProgressBar),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-news-ticker.default\",l.MA_NewsTicker),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-gallery-slider.default\",l.MA_Gallery_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-counter-up.default\",l.MA_Counter_Up),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-tooltip.default\",l.MA_Tooltip))})}(jQuery);\n\\ No newline at end of file\n+!function(t){\"use strict\";var a=\"\",n=function(e,t){var a={},n=e.data(\"model-cid\");if(elementorFrontend.isEditMode()&&n){var i=elementorFrontend.config.elements.data[n],r=i.attributes.widgetType||i.attributes.elType,l=elementorFrontend.config.elements.keys[r];l||(l=elementorFrontend.config.elements.keys[r]=[],jQuery.each(i.controls,function(e,t){t.frontend_available&&l.push(e)})),jQuery.each(i.getActiveControls(),function(e){-1!==l.indexOf(e)&&(a[e]=i.attributes[e])})}else a=e.data(\"settings\")||{};return o(a,t)},o=function(e,t){if(t){var a=t.split(\".\"),n=a.splice(0,1);if(!a.length)return e[n];if(!e[n])return;return this.getItems(e[n],a.join(\".\"))}return e},i=function(e){return e.data(\"jltma-template-widget-id\")?e.data(\"jltma-template-widget-id\"):e.data(\"id\")};function r(e,t){new IntersectionObserver(function(e,a){e.forEach(function(e){e.isIntersecting&&t(e)})},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).observe(e)}var l={animatedProgressbar:function(e,a,n,o,i,r,l){var s=\".jltma-progress-bar-\"+e;\"line\"==a&&new ldBar(s,{type:\"stroke\",path:\"M0 10L100 10\",\"aspect-ratio\":\"none\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n),\"line-bubble\"==a&&(new ldBar(s,{type:\"stroke\",path:\"M0 10L100 10\",\"aspect-ratio\":\"none\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n),t(t(\".jltma-progress-bar-\"+e).find(\".ldBar-label\")).animate({left:n+\"%\"},1e3,\"swing\")),\"circle\"==a&&new ldBar(s,{type:\"stroke\",path:\"M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10\",\"stroke-dir\":\"normal\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n),\"fan\"==a&&new ldBar(s,{type:\"stroke\",path:\"M10 90A40 40 0 0 1 90 90\",stroke:o,\"stroke-trail\":i,\"stroke-width\":r,\"stroke-trail-width\":l}).set(n)},MA_Accordion:function(e,t){var a=n(e),o=e.find(\".jltma-accordion-header\"),i=a.accordion_type,r=a.toggle_speed?a.toggle_speed:300;o.each(function(){t(this).hasClass(\"active-default\")&&(t(this).addClass(\"show active\"),t(this).next().slideDown(r))}),o.unbind(\"click\"),o.click(function(e){e.preventDefault();var a=t(this);\"accordion\"===i?a.hasClass(\"show\")?(a.removeClass(\"show active\"),a.next().slideUp(r)):(a.parent().parent().find(\".jltma-accordion-header\").removeClass(\"show active\"),a.parent().parent().find(\".jltma-accordion-tab-content\").slideUp(r),a.toggleClass(\"show active\"),a.next().slideDown(r)):a.hasClass(\"show\")?(a.removeClass(\"show active\"),a.next().slideUp(r)):(a.addClass(\"show active\"),a.next().slideDown(r))})},MA_Tabs:function(e,t){try{a=jQuery,n=e.find(\"[data-tabs]\"),o=n.data(\"tab-effect\"),n.each(function(){var e=a(this),t=!1;e.find(\"[data-tab]\").each(function(){a(this).hasClass(\"active\")}),e.find(\".jltma--advance-tab-content\").each(function(){a(this).hasClass(\"active\")&&(t=!0)}),t||e.find(\".jltma--advance-tab-content\").eq(0).addClass(\"active\"),\"hover\"==o?e.find(\"[data-tab]\").hover(function(){var e=a(this).data(\"tab-id\");a(this).siblings().removeClass(\"active\"),a(this).addClass(\"active\"),a(this).closest(\"[data-tabs]\").find(\".jltma--advance-tab-content\").removeClass(\"active\"),a(\"#\"+e).addClass(\"active\")}):e.find(\"[data-tab]\").click(function(){var e=a(this).data(\"tab-id\");a(this).siblings().removeClass(\"active\"),a(this).addClass(\"active\"),a(this).closest(\"[data-tabs]\").find(\".jltma--advance-tab-content\").removeClass(\"active\"),a(\"#\"+e).addClass(\"active\")})})}catch(e){}var a,n,o},MA_ProgressBar:function(e,t){var a=e.data(\"id\"),n=e.find(\".jltma-progress-bar-\"+a),o=n.data(\"type\"),i=n.data(\"progress-bar-value\"),r=n.data(\"progress-bar-stroke-width\"),s=n.data(\"progress-bar-stroke-trail-width\"),d=n.data(\"stroke-color\"),c=n.data(\"stroke-trail-color\");n.find(\"svg\").remove(),n.find(\".ldBar-label\").remove(),n.removeClass(\"ldBar\"),l.animatedProgressbar(a,o,i,d,c,r,s)},MA_Image_Hotspot:function(e,t){n(e);var a=e.find(\".jltma-hotspots-container\");if(a.length){var o=a.find(\"> .jltma-tooltip-item\"),i=e.data(\"id\");o.each(function(e){tippy(this,{allowHTML:!1,theme:\"jltma-tippy-\"+i})})}},MA_Pricing_Table:function(e,t){var a=e.find(\".jltma-price-table-details ul\");if(a.length){var n=a.find(\"> .jltma-tooltip-item\"),o=e.data(\"id\");n.each(function(e){tippy(this,{allowHTML:!1,theme:\"jltma-pricing-table-tippy-\"+o,appendTo:document.body})})}},JLTMA_Data_Table:function(t,a){var n=t.find(\".jltma-data-table-container\"),o=n.data(\"source\"),i=n.data(\"sourcecsv\");if(1==n.data(\"buttons\"))var r=\"Bfrtip\";else r=\"frtip\";if(\"custom\"==o){var l=t.find(\"table thead tr th\").length;t.find(\"table tbody tr\").each(function(){if(e(this).find(\"td\").length\u003Cl){var t=l-e(this).find(\"td\").length;e(this).append(new Array(++t).join(\"\u003Ctd>\u003C\u002Ftd>\"))}}),t.find(\".jltma-data-table\").DataTable({dom:r,paging:n.data(\"paging\"),pagingType:\"numbers\",pageLength:n.data(\"pagelength\"),info:n.data(\"info\"),scrollX:!0,searching:n.data(\"searching\"),ordering:n.data(\"ordering\"),buttons:[{extend:\"csvHtml5\",text:JLTMA_DATA_TABLE.csvHtml5},{extend:\"excelHtml5\",text:JLTMA_DATA_TABLE.excelHtml5},{extend:\"pdfHtml5\",text:JLTMA_DATA_TABLE.pdfHtml5},{extend:\"print\",text:JLTMA_DATA_TABLE.print}],language:{lengthMenu:JLTMA_DATA_TABLE.lengthMenu,zeroRecords:JLTMA_DATA_TABLE.zeroRecords,info:JLTMA_DATA_TABLE.info,infoEmpty:JLTMA_DATA_TABLE.infoEmpty,infoFiltered:JLTMA_DATA_TABLE.infoFiltered,search:\"\",searchPlaceholder:JLTMA_DATA_TABLE.searchPlaceholder,processing:JLTMA_DATA_TABLE.processing}})}else\"csv\"==o&&function(n){var o=(n=n||{}).csv_path||\"\",i=t.element||a(\"#table-container\"),r=t.csv_options||{},l=t.datatables_options||{},s=t.custom_formatting||[],d={};a.each(s,function(e,t){var a=t[0],n=t[1];d[a]=n});var c=a('\u003Ctable class=\"jltma-data-table cell-border\" style=\"width:100%;visibility:hidden;\">');i.empty().append(c),a.when(a.get(o)).then(function(t){for(var n=e.csv.toArrays(t,r),o=a(\"\u003Cthead>\u003C\u002Fthead>\"),i=n[0],s=a(\"\u003Ctr>\u003C\u002Ftr>\"),m=0;m\u003Ci.length;m++)s.append(a(\"\u003Cth>\u003C\u002Fth>\").text(i[m]));o.append(s),c.append(o);for(var f=a(\"\u003Ctbody>\u003C\u002Ftbody>\"),p=1;p\u003Cn.length;p++)for(var u=a(\"\u003Ctr>\u003C\u002Ftr>\"),_=0;_\u003Cn[p].length;_++){var v=a(\"\u003Ctd>\u003C\u002Ftd>\"),g=d[_];g?v.html(g(n[p][_])):v.text(n[p][_]),u.append(v),f.append(u)}c.append(f),c.DataTable(l)})}({csv_path:i,element:n,datatables_options:{dom:r,paging:n.data(\"paging\"),pagingType:\"numbers\",pageLength:n.data(\"pagelength\"),info:n.data(\"info\"),scrollX:!0,searching:n.data(\"searching\"),ordering:n.data(\"ordering\"),buttons:[{extend:\"csvHtml5\",text:JLTMA_DATA_TABLE.csvHtml5},{extend:\"excelHtml5\",text:JLTMA_DATA_TABLE.excelHtml5},{extend:\"pdfHtml5\",text:JLTMA_DATA_TABLE.pdfHtml5},{extend:\"print\",text:JLTMA_DATA_TABLE.print}],language:{lengthMenu:JLTMA_DATA_TABLE.lengthMenu,zeroRecords:JLTMA_DATA_TABLE.zeroRecords,info:JLTMA_DATA_TABLE.info,infoEmpty:JLTMA_DATA_TABLE.infoEmpty,infoFiltered:JLTMA_DATA_TABLE.infoFiltered,search:\"\",searchPlaceholder:JLTMA_DATA_TABLE.searchPlaceholder,processing:JLTMA_DATA_TABLE.processing}}});t.find(\".jltma-data-table\").css(\"visibility\",\"visible\")},JLTMA_Dropdown_Button:function(e,t){e.find(\".jltma-dropdown\").hover(function(){e.find(\".jltma-dd-menu\").addClass(\"jltma-dd-menu-opened\")},function(){e.find(\".jltma-dd-menu\").removeClass(\"jltma-dd-menu-opened\")})},JLTMA_WC_Add_To_Cart:function(e,t){t(document).on(\"click\",\".ajax_add_to_cart\",function(e){t(this).append('\u003Ci class=\"fa fa-spinner animated rotateIn infinite\">\u003C\u002Fi>')}),t(\".jltma-wc-add-to-cart-btn-custom-js\").each(function(e){var a=t(this).attr(\"data-jltma-wc-add-to-cart-btn-custom-css\");t(a).appendTo(\"head\")})},MA_Offcanvas_Menu:function(e,t){l.MA_Offcanvas_Menu.elementSettings=e.data(\"settings\");var a=\"jltma-offcanvas-menu\",n=e.data(\"id\"),o=e.data(\"settings\"),i=o.esc_close?o.esc_close:\"\",r={widget:a,triggerButton:\"jltma-offcanvas__trigger\",offcanvasContent:\"jltma-offcanvas__content\",offcanvasContentBody:\"\".concat(a,\"__body\"),offcanvasContainer:\"\".concat(a,\"__container\"),offcanvasContainerOverlay:\"\".concat(a,\"__container__overlay\"),offcanvasWrapper:\"\".concat(a,\"__wrapper\"),closeButton:\"\".concat(a,\"__close\"),menuArrow:\"\".concat(a,\"__arrow\"),menuInner:\"\".concat(a,\"__menu-inner\"),itemHasChildrenLink:\"menu-item-has-children > a\",contentClassPart:\"jltma-offcanvas-content\",contentOpenClass:\"jltma-offcanvas-content-open\",customContainer:\"\".concat(a,\"__custom-container\")},s={widget:\".\".concat(r.widget),triggerButton:\".\".concat(r.triggerButton),offcanvasContent:\".\".concat(r.offcanvasContent),offcanvasContentBody:\".\".concat(r.offcanvasContentBody),offcanvasContainer:\".\".concat(r.offcanvasContainer),offcanvasContainerOverlay:\".\".concat(r.offcanvasContainerOverlay),offcanvasWrapper:\".\".concat(r.offcanvasWrapper),closeButton:\".\".concat(r.closeButton),menuArrow:\".\".concat(r.menuArrow),menuParent:\".\".concat(r.menuInner,\" .\").concat(r.itemHasChildrenLink),contentClassPart:\".\".concat(r.contentClassPart),contentOpenClass:\".\".concat(r.contentOpenClass),customContainer:\".\".concat(r.customContainer)},d={$document:jQuery(document),$html:jQuery(document).find(\"html\"),$body:jQuery(document).find(\"body\"),$outsideContainer:jQuery(s.offcanvasContainer),$containerOverlay:jQuery(s.offcanvasContainerOverlay),$triggerButton:e.find(s.triggerButton),$offcanvasContent:e.find(s.offcanvasContent),$offcanvasContentBody:e.find(s.offcanvasContentBody),$offcanvasContainer:e.find(s.offcanvasContainer),$offcanvasWrapper:e.find(s.offcanvasWrapper),$closeButton:e.find(s.closeButton),$menuParent:e.find(s.menuParent)};return l.MA_Offcanvas_Menu.resetCanvas=function(){var e=n;d.$html.addClass(\"\".concat(r.offcanvasContent,\"-widget\")),d.$outsideContainer.length||(d.$body.append('\u003Cdiv class=\"'.concat(r.offcanvasContainerOverlay,'\" \u002F>')),d.$body.wrapInner('\u003Cdiv class=\"'.concat(r.offcanvasContainer,'\" \u002F>')),d.$offcanvasContent.insertBefore(s.offcanvasContainer));var t=d.$offcanvasWrapper.find(s.offcanvasContent);if(t.length){var a=d.$outsideContainer.find(\"> .\".concat(r.contentClassPart,\"-\").concat(e));a.length&&a.remove();var o=d.$body.find(\"> .\".concat(r.contentClassPart,\"-\").concat(e));o.length&&o.remove(),d.$html.hasClass(r.contentOpenClass)&&t.addClass(\"active\"),d.$body.prepend(t)}},l.MA_Offcanvas_Menu.offcanvasClose=function(){var e=d.$html.data(\"open-id\"),t=new RegExp(\"\".concat(r.contentClassPart,\"-.*\")),a=d.$html.attr(\"class\").split(\u002F\\s+\u002F);jQuery(\"\".concat(s.contentClassPart,\"-\").concat(e)).removeClass(\"active\"),d.$triggerButton.removeClass(\"trigger-active\"),a.forEach(function(e){e.match(t)&&d.$html.removeClass(e)}),d.$html.removeData(\"open-id\")},l.MA_Offcanvas_Menu.containerClick=function(e){var t=d.$html.data(\"open-id\");n===t&&o.overlay_close&&d.$html.hasClass(r.contentOpenClass)&&l.MA_Offcanvas_Menu.offcanvasClose()},l.MA_Offcanvas_Menu.closeESC=function(e){27===e.keyCode&&(l.MA_Offcanvas_Menu.offcanvasClose(),t(d.$triggerButton).removeClass(\"trigger-active\"))},l.MA_Offcanvas_Menu.addLoaderIcon=function(){jQuery(document).find(\".jltma-offcanvas__content\").addClass(\"jltma-loading\")},l.MA_Offcanvas_Menu.removeLoaderIcon=function(){jQuery(document).find(\".jltma-offcanvas__content\").removeClass(\"jltma-loading\")},l.MA_Offcanvas_Menu.bindEvents=function(){d.$body.on(\"click\",s.offcanvasContainerOverlay,l.MA_Offcanvas_Menu.containerClick.bind(this)),\"yes\"===i&&d.$document.on(\"keydown\",l.MA_Offcanvas_Menu.closeESC.bind(this)),d.$triggerButton.on(\"click\",l.MA_Offcanvas_Menu.offcanvasContent.bind(this)),d.$closeButton.on(\"click\",l.MA_Offcanvas_Menu.offcanvasClose.bind(this)),d.$menuParent.on(\"click\",l.MA_Offcanvas_Menu.onParentClick.bind(this)),t(d.$menuParent).on(\"change\",function(){l.MA_Offcanvas_Menu.onParentClick.bind(t(this))}),t(\"[data-settings=animation_type]\").on(\"click\",function(){l.MA_Offcanvas_Menu.changeControl.bind(t(this))})},l.MA_Offcanvas_Menu.perfectScrollInit=function(){l.MA_Offcanvas_Menu.scrollPerfect?l.MA_Offcanvas_Menu.scrollPerfect.update():l.MA_Offcanvas_Menu.scrollPerfect=new PerfectScrollbar(d.$offcanvasContentBody.get(0),{wheelSpeed:.5,suppressScrollX:!0})},l.MA_Offcanvas_Menu.onEdit=function(){l.MA_Offcanvas_Menu.isEdit&&(void 0===$element.data(\"opened\")&&$element.data(\"opened\",\"false\"),elementor.channels.editor.on(\"section:activated\",l.MA_Offcanvas_Menu.sectionActivated.bind(this)))},l.MA_Offcanvas_Menu.sectionActivated=function(e,t){var a=elementorFrontend.config.elements.data[this.getModelCID()],n=t.getOption(\"editedElementView\");if(this.getModelCID()===t.model.cid&&a.get(\"widgetType\")===n.model.get(\"widgetType\"))if(-1!==this.sectionsArray.indexOf(e)){if(\"true\"===$element.data(\"opened\")){var o=t.getOption(\"model\");l.MA_Offcanvas_Menu.offcanvasContent(null,o.get(\"id\"))}$element.data(\"opened\",\"true\")}else l.MA_Offcanvas_Menu.offcanvasClose()},l.MA_Offcanvas_Menu.offcanvasContent=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=o.canvas_position,i=o.animation_type,l=n;null!==t&&(l=t),d.$triggerButton.addClass(\"trigger-active\"),jQuery(\"\".concat(s.contentClassPart,\"-\").concat(l)).addClass(\"active\"),d.$html.addClass(\"\".concat(r.contentOpenClass)).addClass(\"\".concat(r.contentOpenClass,\"-\").concat(l)).addClass(\"\".concat(r.contentClassPart,\"-\").concat(a)).addClass(\"\".concat(r.contentClassPart,\"-\").concat(i)).data(\"open-id\",l)},l.MA_Offcanvas_Menu.onParentClick=function(e){var t=jQuery(e.target),a=t.hasClass(r.menuArrow)?t.parent():t;!t.hasClass(r.menuArrow)&&-1===[\"\",\"#\"].indexOf(t.attr(\"href\"))&&a.hasClass(\"active\")||e.preventDefault();var n=a.next();a.removeClass(\"active\"),n.slideUp(\"normal\"),n.is(\"ul\")&&!n.is(\":visible\")&&(a.addClass(\"active\"),n.slideDown(\"normal\"))},l.MA_Offcanvas_Menu.changeControl=function(){l.MA_Offcanvas_Menu.offcanvasClose()},l.MA_Offcanvas_Menu.onInit=function(){l.MA_Offcanvas_Menu.resetCanvas(),l.MA_Offcanvas_Menu.bindEvents()},l.MA_Offcanvas_Menu.onInit()},MA_Image_Filter_Gallery:function(e,t){var a=n(e),o=e.find(\".jltma-image-filter-gallery-wrapper\").eq(0),r=e.find(\".jltma-image-filter-gallery\"),l=e.find(\".jltma-image-filter-nav\"),s=e.find(\".jltma-image-filter-gallery-wrapper\"),d=i(e),c=a.ma_el_image_gallery_max_tilt,m=a.ma_el_image_gallery_perspective,f=a.ma_el_image_gallery_speed,p=a.ma_el_image_gallery_tilt_axis,u=a.ma_el_image_gallery_glare,_=(a.line_location,a.ma_el_image_gallery_tooltip),v=t(\".elementor-element-\"+d+\" .jltma-image-filter-gallery\"),g=s.hasClass(\"jltma-masonry-yes\")?\"masonry\":\"fitRows\";if(o.length){if(\"yes\"==_){var h=o.find(\"ul.jltma-tooltip\");if(!h.length)return;var y=h.find(\"> .jltma-tooltip-item\"),w=e.data(\"id\");y.each(function(e){tippy(this,{allowHTML:!1,theme:\"jltma-image-filter-tippy-\"+w})})}var b={filter:\"*\",itemSelector:\".jltma-image-filter-item\",percentPosition:!0,animationOptions:{duration:750,easing:\"linear\",queue:!1}},A=Object.assign({},b);\"fitRows\"===g&&(b.layoutMode=\"fitRows\"),\"masonry\"===g&&(A.macolumnWidthsonry=\".jltma-image-filter-item\",A.horizontalOrder=!0);var j=v.isotope(A);if(j.imagesLoaded().progress(function(){j.isotope(\"layout\"),e.find(\".jltma-image-filter-gallery\").css({\"min-height\":\"300px\"})}),t.isFunction(t.fn.imagesLoaded)&&r.imagesLoaded(function(){t.isFunction(t.fn.isotope)&&r.isotope(b)}),p=\"x\"===p?\"y\":\"y\"===p?\"x\":\"both\",\"yes\"===u)var C=a.ma_el_image_gallery_max_glare;if(u=\"yes\"===u,e.find(\".jltma-tilt-enable\")){var M={maxTilt:c,perspective:m,easing:\"linear\",scale:1,speed:f,disableAxis:p,transition:!0,reset:!0,glare:u,maxGlare:C};e.find(\".jltma-tilt\").tilt(M)}l.on(\"click\",\"li\",function(){if(l.find(\".active\").removeClass(\"active\"),t(this).addClass(\"active\"),t.isFunction(t.fn.isotope)){var e=t(this).attr(\"data-filter\");return r.isotope({filter:e}),!1}}),t(\"jltma-fancybox\").fancybox({protect:!0,animationDuration:366,transitionDuration:366,transitionEffect:\"fade\",animationEffect:\"fade\",preventCaptionOverlap:!0,infobar:!1,buttons:[\"zoom\",\"share\",\"slideShow\",\"fullScreen\",\"download\",\"thumbs\",\"close\"],afterLoad:function(e,t){var a=window.devicePixelRatio||1;a>1.5&&(t.width=t.width\u002Fa,t.height=t.height\u002Fa)}})}},MA_Carousel:function(e,a){var n=e.find(\".jltma-swiper__slide\"),o=elementorFrontend.config.breakpoints,i=e.data(\"swiper\"),r={autoHeight:a.element.autoHeight||!1,direction:a.element.direction||a.default.direction,effect:a.element.effect||a.default.effect,slidesPerView:a.default.slidesPerView,slidesPerColumn:a.default.slidesPerColumn,slidesPerColumnFill:\"row\",slidesPerGroup:a.default.slidesPerGroup,spaceBetween:a.default.spaceBetween,pagination:{},navigation:{},autoplay:a.element.autoplay||!1,grabCursor:!0,watchSlidesProgress:!0,watchSlidesVisibility:!0};return a.default.breakpoints&&(r.breakpoints={},r.breakpoints[o.md]=a.default.breakpoints.tablet,r.breakpoints[o.lg]=a.default.breakpoints.desktop),elementorFrontend.isEditMode()?(r.observer=!0,r.observeParents=!0,r.observeSlideChildren=!0):a.element.freeMode||(r.observer=!0,r.observeParents=!0,r.observeSlideChildren=!0),l.MA_Carousel.init=function(){if(!i){if(r.breakpoints&&(a.element.breakpoints.desktop.slidesPerView&&(r.breakpoints[o.lg].slidesPerView=a.stretch?Math.min(n.length,+a.element.breakpoints.desktop.slidesPerView||3):+a.element.breakpoints.desktop.slidesPerView||3),a.element.breakpoints.tablet.slidesPerView&&(r.breakpoints[o.md].slidesPerView=a.stretch?Math.min(n.length,+a.element.breakpoints.tablet.slidesPerView||2):+a.element.breakpoints.tablet.slidesPerView||2)),a.element.slidesPerView&&(r.slidesPerView=a.stretch?Math.min(n.length,+a.element.slidesPerView||1):+a.element.slidesPerView||1),r.breakpoints&&(a.element.breakpoints.desktop.slidesPerGroup&&(r.breakpoints[o.lg].slidesPerGroup=Math.min(n.length,+a.element.breakpoints.desktop.slidesPerGroup||3)),a.element.breakpoints.tablet.slidesPerGroup&&(r.breakpoints[o.md].slidesPerGroup=Math.min(n.length,+a.element.breakpoints.tablet.slidesPerGroup||2))),a.element.slidesPerGroup&&(r.slidesPerGroup=Math.min(n.length,+a.element.slidesPerGroup||1)),r.breakpoints&&(a.element.breakpoints.desktop.slidesPerColumn&&(r.breakpoints[o.lg].slidesPerColumn=a.element.breakpoints.desktop.slidesPerColumn),a.element.breakpoints.tablet.slidesPerColumn&&(r.breakpoints[o.md].slidesPerColumn=a.element.breakpoints.tablet.slidesPerColumn)),a.element.slidesPerColumn&&(r.slidesPerColumn=a.element.slidesPerColumn),r.breakpoints&&(r.breakpoints[o.lg].spaceBetween=a.element.breakpoints.desktop.spaceBetween||0,r.breakpoints[o.md].spaceBetween=a.element.breakpoints.tablet.spaceBetween||0),a.element.spaceBetween&&(r.spaceBetween=a.element.spaceBetween||0),a.element.slidesPerColumnFill&&(r.slidesPerColumnFill=a.element.slidesPerColumnFill),a.element.arrows){r.navigation.disabledClass=\"jltma-swiper__button--disabled\";var e=a.scope.find(a.element.arrowPrev),t=a.scope.find(a.element.arrowNext);if(e.length&&t.length){var s=a.element.arrowPrev+\"-\"+a.id,d=a.element.arrowNext+\"-\"+a.id;e.addClass(s.replace(\".\",\"\")),t.addClass(d.replace(\".\",\"\")),r.navigation.prevEl=s,r.navigation.nextEl=d}}return a.element.pagination&&(r.pagination.el=\".jltma-swiper__pagination-\"+a.id,r.pagination.type=a.element.paginationType,a.element.paginationClickable&&(r.pagination.clickable=!0)),a.element.loop&&(r.loop=!0),r.autoplay&&(a.element.autoplaySpeed||a.element.disableOnInteraction)&&(r.autoplay={},a.element.autoplaySpeed&&(r.autoplay.delay=a.element.autoplaySpeed),a.element.autoplaySpeed&&(r.autoplay.disableOnInteraction=a.element.disableOnInteraction)),a.element.speed&&(r.speed=a.element.speed),a.element.resistance&&(r.resistanceRatio=1-a.element.resistance),a.element.freeMode&&(r.freeMode=!0,r.freeModeSticky=a.element.freeModeSticky,r.freeModeMomentum=a.element.freeModeMomentum,r.freeModeMomentumBounce=a.element.freeModeMomentumBounce,a.element.freeModeMomentumRatio&&(r.freeModeMomentumRatio=a.element.freeModeMomentumRatio),a.element.freeModeMomentumVelocityRatio&&(r.freeModeMomentumVelocityRatio=a.element.freeModeMomentumVelocityRatio),a.element.freeModeMomentumBounceRatio&&(r.freeModeMomentumBounceRatio=a.element.freeModeMomentumBounceRatio)),r}l.MA_Carousel.destroy()},l.MA_Carousel.onAfterInit=function(e,a,n){void 0!==n&&void 0!==a&&(n.element.stopOnHover&&(e.on(\"mouseover\",function(){a.autoplay.stop()}),e.on(\"mouseout\",function(){a.autoplay.start()})),n.element.slideChangeTriggerResize&&a.on(\"slideChange\",function(){t(window).trigger(\"resize\")}),e.data(\"swiper\",a))},l.MA_Carousel.init()},MA_Gallery_Slider:function(e,t){var a=n(e),o=e.find(\".jltma-gallery-slider__slider\"),r=e.find(\".jltma-gallery-slider__carousel\"),s=i(e),d=(e.data(\"id\"),e.find(\".jltma-gallery-slider__preview\"),e.find(\".jltma-swiper__wrapper .jltma-gallery__item\"),e.find(\".jltma-gallery-slider__gallery .jltma-gallery\"),a.jltma_gallery_slider_thumb_type,a.jltma_gallery_slider_preview_position,elementorFrontend.config.is_rtl,elementorFrontend.config.is_rtl,r.length),c=null,m={key:\"slider\",scope:e,id:s,element:{autoHeight:\"yes\"===a.jltma_gallery_slider_adaptive_height,autoplay:\"yes\"===a.jltma_gallery_slider_autoplay,autoplaySpeed:!(\"yes\"!==a.jltma_gallery_slider_autoplay||!a.jltma_gallery_slider_autoplay_speed)&&a.jltma_gallery_slider_autoplay_speed.size,disableOnInteraction:\"\"!==a.autoplay_disable_on_interaction,stopOnHover:\"yes\"===a.jltma_gallery_slider_pause_on_hover,loop:\"yes\"===a.jltma_gallery_slider_infinite,arrows:\"\"!==a.jltma_gallery_slider_show_arrows,arrowPrev:\".jltma-arrow--prev\",arrowNext:\".jltma-arrow--next\",effect:a.jltma_gallery_slider_effect,speed:a.jltma_gallery_slider_speed?a.jltma_gallery_slider_speed:500,resistance:a.resistance?a.resistance.size:.25,keyboard:{enabled:!0}},default:{effect:\"slide\",direction:\"horizontal\",slidesPerView:1,slidesPerGroup:1,slidesPerColumn:1,spaceBetween:0}};if(d)var f={key:\"carousel\",scope:e,id:s,element:{direction:a.carousel_orientation,arrows:\"\"!==a.jltma_gallery_slider_thumb_show_arrows,arrowPrev:\".jltma-arrow--prev\",arrowNext:\".jltma-arrow--next\",autoHeight:!1,loop:\"yes\"===a.jltma_gallery_slider_thumb_infinite,autoplay:\"yes\"===a.jltma_gallery_slider_thumb_autoplay,autoplaySpeed:!(\"yes\"!==a.jltma_gallery_slider_thumb_autoplay||!a.jltma_gallery_slider_thumb_autoplay_speed)&&a.jltma_gallery_slider_thumb_autoplay_speed.size,stopOnHover:\"yes\"===a.jltma_gallery_slider_thumb_pause_on_hover,speed:a.jltma_gallery_slider_thumb_speed?a.jltma_gallery_slider_thumb_speed:500,slidesPerView:a.jltma_gallery_slider_thumb_items_mobile,slidesPerColumn:\"vertical\"===a.carousel_orientation?1:a.carousel_slides_per_column_mobile,slidesPerGroup:a.carousel_slides_to_scroll_mobile,resistance:a.carousel_resistance?a.carousel_resistance.size:.15,spaceBetween:a.carousel_spacing_mobile?a.carousel_spacing_mobile.size:0,breakpoints:{tablet:{slidesPerView:a.jltma_gallery_slider_thumb_items_tablet,slidesPerColumn:\"vertical\"===a.carousel_orientation?1:a.carousel_slides_per_column_tablet,slidesPerGroup:a.carousel_slides_to_scroll_tablet,spaceBetween:a.carousel_spacing_tablet?a.carousel_spacing_tablet.size:0},desktop:{slidesPerView:a.jltma_gallery_slider_thumb_items,slidesPerColumn:\"vertical\"===a.carousel_orientation?1:a.carousel_slides_per_column,slidesPerGroup:a.carousel_slides_to_scroll,spaceBetween:a.carousel_spacing?a.carousel_spacing.size:0}}},default:{effect:\"slide\",slidesPerView:1,slidesPerGroup:1,slidesPerColumn:1,spaceBetween:6,breakpoints:{tablet:{slidesPerView:2,slidesPerGroup:1,slidesPerColumn:2,spaceBetween:12},desktop:{slidesPerView:3,slidesPerGroup:1,slidesPerColumn:3,spaceBetween:24}}}};l.MA_Gallery_Slider.init=function(){var t=l.MA_Carousel(o,m);if(d)var a=l.MA_Carousel(r,f);if(\"undefined\"==typeof Swiper){const n=elementorFrontend.utils.swiper;new n(o,t).then(function(t){d?new n(r,a).then(function(a){l.MA_Gallery_Slider.initSliders(e,t,a),l.MA_Carousel.onAfterInit(o,t,m),l.MA_Carousel.onAfterInit(r,a,f)}):(l.MA_Gallery_Slider.initSliders(e,t,!1),l.MA_Carousel.onAfterInit(o,t,m))})}else{if(d)var n=new Swiper(o[1],{...a}),i=new Swiper(o[0],{...t,thumbs:{swiper:n}});else i=new Swiper(o[0],{...t});d&&(c=new Swiper(r,a)),l.MA_Gallery_Slider.initSliders(e,i,c),l.MA_Carousel.onAfterInit(o,i,m),d&&l.MA_Carousel.onAfterInit(r,c,f)}},l.MA_Gallery_Slider.getSlider=function(){return e.find(\".jltma-gallery-slider__slider\")},l.MA_Gallery_Slider.getCarousel=function(){return e.find(\".jltma-gallery-slider__carousel\")},l.MA_Gallery_Slider.initSliders=function(e,t,a){var n={scope:e,slider:t,carousel:a};l.MA_Gallery_Slider.onSlideChange(n),l.MA_Gallery_Slider.events(n)},l.MA_Gallery_Slider.events=function(e){var a=e.scope.find(\".jltma-gallery__item\");e.slider.on(\"slideChange\",function(t){l.MA_Gallery_Slider.onSlideChange(e)}),a.on(\"click\",function(){var a=m.element.loop?1:0;event.preventDefault(),e.slider.slideTo(t(this).index()+a)})},l.MA_Gallery_Slider.onSlideChange=function(e){var t=m.element.loop?e.slider.realIndex:e.slider.activeIndex;d&&e.carousel.slideTo(t);var a=e.scope.find(\".jltma-gallery__item\");a.removeClass(\"is--active\"),a.eq(t).addClass(\"is--active\")},l.MA_Gallery_Slider.onThumbClicked=function(e){var a=m.element.loop?1:0;e.preventDefault(),null.slideTo(t(this).index()+a,500,!0)},l.onElementRemove(e,function(){e.find(\".swiper-container\").each(function(){t(this).data(\"swiper\")&&t(this).data(\"swiper\").destroy()})}),l.MA_Gallery_Slider.init()},onElementRemove:function(e,t){elementorFrontend.isEditMode()&&elementor.channels.data.on(\"element:before:remove\",function(a){e.data(\"id\")===a.id&&t()})},MA_Timeline:function(e,t){var a=n(e),o=e.find(\".jltma-timeline\"),r=e.find(\".jltma-timeline-slider\"),s=a.ma_el_timeline_type||\"custom\",d=a.ma_el_timeline_design_type||\"vertical\",c={};if(r.length,i(e),\"horizontal\"===d){var m=e.find(\".jltma-timeline-carousel-slider\");if(!m.length)return;var f=e.find(\".swiper\"),p=m.data(\"settings\"),u=elementorFrontend.utils.swiper;async function _(){await new u(f[0],p),p.pauseOnHover&&f.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}_()}\"vertical\"!==d&&\"post\"!==s||(o=e.find(\".jltma-timeline\"),c={},l.MA_Timeline.init=function(){elementorFrontend.isEditMode()&&(c.scope=window.elementor.$previewContents),void 0!==a.line_location&&a.line_location.size&&(c.lineLocation=a.line_location.size),o.maTimeline(c)},l.MA_Timeline.init())},MA_NewsTicker:function(e,t){try{var a=e.find(\".jltma-news-ticker\"),n=(a.data(\"tickertype\"),a.data(\"tickerid\"),a.data(\"feedurl\"),a.data(\"feedanimation\"),a.data(\"limitposts\"),a.data(\"scroll\")||\"slide-h\"),o=a.data(\"autoplay\"),i=a.data(\"timer\")||3e3,r=e.find(\".jltma-ticker-content-inner.swiper\")[0];if(!r)return;var l={loop:!0,slidesPerView:1,spaceBetween:0,speed:500,navigation:{nextEl:e.find(\".jltma-ticker-next\")[0],prevEl:e.find(\".jltma-ticker-prev\")[0]}};\"slide-v\"===n?l.direction=\"vertical\":\"scroll-h\"===n?(l.direction=\"horizontal\",l.freeMode={enabled:!0,momentum:!1},l.speed=5e3,l.autoplay={delay:0,disableOnInteraction:!1,pauseOnMouseEnter:!0}):l.direction=\"horizontal\",o&&\"scroll-h\"!==n&&(l.autoplay={delay:i,disableOnInteraction:!1,pauseOnMouseEnter:!0}),new Swiper(r,l)}catch(e){console.log(\"News Ticker Error:\",e)}},MA_Blog:function(e,t){n(e),i(e),e.data(\"id\"),e.find(\".jltma-swiper__container\"),e.find(\".jltma-grid__item\");var a=e.find(\".jltma-blog-wrapper\"),o=(a.data(\"col\"),a.data(\"carousel\"));a.data(\"grid\"),e.find(\".jltma-blog-cats-container li a\").click(function(n){n.preventDefault(),e.find(\".jltma-blog-cats-container li .active\").removeClass(\"active\"),t(this).addClass(\"active\");var o=t(this).attr(\"data-filter\");return a.isotope({filter:o}),!1}),a.hasClass(\"jltma-blog-masonry\")&&!o&&a.imagesLoaded(function(){a.isotope({itemSelector:\".jltma-post-outer-container\",percentPosition:!0,animationOptions:{duration:750,easing:\"linear\",queue:!1}})});var r=e.find(\".jltma-blog-carousel-slider\");if(r.length){var l=e.find(\".swiper\"),s=r.data(\"settings\"),d=elementorFrontend.utils.swiper;!async function(){await new d(l[0],s),s.pauseOnHover&&l.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}()}},MA_Image_Carousel:function(e,t){var a=e.find(\".jltma-image-carousel-slider\");if(a.length){var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;!async function(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}()}},MA_Logo_Slider:function(e,t){var a=e.find(\".jltma-logo-carousel-slider\");if(a.length){var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;!async function(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}(),a.find(\".jltma-logo-slider-figure\").on(\"click\",\".item-hover-icon\",function(){var e=t(this);e.toggleClass(\"hide\"),e.siblings(\".jltma-hover-click\").toggleClass(\"show\")}),a.find(\".jltma-logo-slider-item\").each(function(e){var a=t(this).attr(\"id\");if(a){var n,o=t(this).data(\"id\"),i=t(this).data(\"tooltip-settings\"),r=\"#\"+a;n=1==i.follow_cursor?{followCursor:!0}:{placement:i.placement,followCursor:!1};var l=!1;1==i.arrow&&(l=\"round\"!=i.arrow_type||tippy.roundArrow),tippy(r,{content:i.text,...n,animation:i.animation,arrow:l,duration:i.duration,delay:i.delay,trigger:i.trigger,offset:[i.x_offset,i.y_offset],zIndex:999999,allowHTML:!1,theme:\"jltma-tippy-\"+o,onShow(e){var a=e.popper;t(a).addClass(o)}})}})}},MA_TeamSlider:function(e,t){if(\"-content-drawer\"==e.find(\".jltma-team-carousel-wrapper\").eq(0).data(\"team-preset\"))try{jQuery(\".gridder\").gridderExpander({scroll:!1,scrollOffset:0,scrollTo:\"panel\",animationSpeed:400,animationEasing:\"easeInOutExpo\",showNav:!0,nextText:\"\u003Cspan>\u003C\u002Fspan>\",prevText:\"\u003Cspan>\u003C\u002Fspan>\",closeText:\"\",onStart:function(){},onContent:function(){},onClosed:function(){}})}catch(r){}else{var a=e.find(\".jltma-team-carousel-slider\");if(!a.length)return;var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;async function l(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}l()}},MA_Advanced_Image:function(e,t){l.MA_Advanced_Image.elementSettings=n(e),e.find(\".jltma-img-dynamic-dropshadow\").each(function(){var e,t,a;if(this instanceof jQuery){if(!this||!this[0])return;a=this[0]}else a=this;a.classList.contains(\"jltma-img-has-shadow\")||(e=document.createElement(\"div\"),(t=a.cloneNode()).classList.add(\"jltma-img-dynamic-dropshadow-cloned\"),t.classList.remove(\"jltma-img-dynamic-dropshadow\"),a.classList.add(\"jltma-img-has-shadow\"),e.classList.add(\"jltma-img-dynamic-dropshadow-frame\"),a.parentNode.appendChild(e),e.appendChild(a),e.appendChild(t))}),e.find(\".jltma-tilt-box\").tilt({maxTilt:t(this).data(\"max-tilt\"),easing:\"cubic-bezier(0.23, 1, 0.32, 1)\",speed:t(this).data(\"time\"),perspective:2e3})},MA_Tooltip:function(e,t){if(e&&e.length&&t)if(\"undefined\"!=typeof tippy){e.removeData(\"ma-tooltip-retry\");var a=n(e),o=e.data(\"id\"),i=null;if(o&&\"string\"==typeof o){try{if(!(i=document.getElementById(\"jltma-tooltip-\"+o))){var r=e.find(\"#jltma-tooltip-\"+o);if(r&&r.length>0){var s=r[0];s&&1===s.nodeType&&(i=s)}}if(!i||!i.nodeType||1!==i.nodeType)return;if(i.jquery&&(!(i=i[0])||!i.nodeType))return}catch(e){return}var d=function(){try{if(i&&i._maTooltipInitializing)return;if(!a||\"object\"!=typeof a)return;var t=a.ma_el_tooltip_text;if(!t||\"string\"!=typeof t)return;i&&(i._maTooltipInitializing=!0);var n=t.replace(\u002F\u003C\\\u002F?[^>]+(>|$)\u002Fg,\"\"),r=a.ma_el_tooltip_direction||\"top\",l=a.jltma_tooltip_animation||\"shift-away\",s=!1!==a.jltma_tooltip_arrow,d=parseInt(a.jltma_tooltip_duration)||300,c=parseInt(a.jltma_tooltip_delay)||300,m=a.jltma_tooltip_arrow_type||\"sharp\",f=a.jltma_tooltip_trigger||\"mouseenter\",p=a.jltma_tooltip_custom_trigger,u=\"fill\"===a.jltma_tooltip_animation;d=Math.max(100,Math.min(5e3,d)),c=Math.max(0,Math.min(5e3,c));var _=0,v=0;try{a.jltma_tooltip_x_offset&&void 0!==a.jltma_tooltip_x_offset.size&&(_=parseInt(a.jltma_tooltip_x_offset.size)||0),a.jltma_tooltip_y_offset&&void 0!==a.jltma_tooltip_y_offset.size&&(v=parseInt(a.jltma_tooltip_y_offset.size)||0)}catch(e){_=0,v=0}var g=200;try{a.ma_el_tooltip_text_width&&a.ma_el_tooltip_text_width.size&&(g=parseInt(a.ma_el_tooltip_text_width.size)||200)}catch(e){g=200}if(!i||!i.nodeType||1!==i.nodeType)return;if(!n||!n.trim())return;try{var h=i.parentElement;if(h&&h.classList&&h.classList.contains(\"jltma-tooltip-element\"))return}catch(e){}var y={content:n,animation:l,arrow:s,duration:[d,c],trigger:f,animateFill:u,flipOnUpdate:!0,maxWidth:Math.max(50,Math.min(1e3,g)),zIndex:999,allowHTML:!1,theme:\"jltma-tooltip-tippy-\"+o,interactive:!0,hideOnClick:!0,offset:[Math.max(-500,Math.min(500,_)),Math.max(-500,Math.min(500,v))],appendTo:function(){try{return\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()?document.body:\"parent\"}catch(e){return\"parent\"}},onShow:function(e){try{e&&e.popper&&\"undefined\"!=typeof jQuery&&jQuery(e.popper).attr(\"data-tippy-popper-id\",o)}catch(e){}},onCreate:function(e){try{e&&e.reference&&!e.reference.nodeType&&e.reference.jquery&&(e.reference=e.reference[0])}catch(e){}},onDestroy:function(){i&&(i._tippyInstance=null)}};if(s&&\"round\"===m)try{\"undefined\"!=typeof tippy&&tippy.roundArrow&&(y.arrow=tippy.roundArrow)}catch(e){y.arrow=!0}if(\"yes\"===a.jltma_tooltip_follow_cursor||!0===a.jltma_tooltip_follow_cursor?y.followCursor=!0:r&&\"string\"==typeof r&&-1!==[\"top\",\"bottom\",\"left\",\"right\",\"top-start\",\"top-end\",\"bottom-start\",\"bottom-end\",\"left-start\",\"left-end\",\"right-start\",\"right-end\",\"auto\"].indexOf(r)&&(y.placement=r),\"manual\"===f&&p&&\"string\"==typeof p)try{var w=p.replace(\u002F[\u003C>'\"]\u002Fg,\"\"),b=document.querySelector(w);if(b&&1===b.nodeType){y.trigger=\"manual\",y.hideOnClick=!1;var A=function(){var e=i;e&&e.jquery&&(e=e[0]);var t=e?e._tippyInstance:null;t&&t.state&&(t.state.isVisible?t.hide():(t.show(),setTimeout(function(){t&&!t.state.isDestroyed&&t.hide()},1500)))};b.addEventListener(\"click\",A),i._maTooltipCleanup||(i._maTooltipCleanup=[]),i._maTooltipCleanup.push({element:b,event:\"click\",handler:A})}}catch(e){}try{['[data-tippy-popper-id=\"'+o+'\"]',\".tippy-popper[data-tippy-root]\",'.tippy-box[data-theme*=\"'+o+'\"]'].forEach(function(e){try{document.querySelectorAll(e).forEach(function(e){e&&e.parentNode&&e.parentNode.removeChild(e)})}catch(e){}}),i._tippyInstance&&(i._tippyInstance.destroy(),i._tippyInstance=null),i._tippy&&(i._tippy.destroy(),i._tippy=null),i._maTooltipCleanup&&(i._maTooltipCleanup.forEach(function(e){try{e.element.removeEventListener(e.event,e.handler)}catch(e){}}),i._maTooltipCleanup=[])}catch(e){}if(!i||!i.nodeType||1!==i.nodeType)return;var j={};for(var C in y)y.hasOwnProperty(C)&&(j[C]=y[C]);if(\"function\"==typeof j.appendTo)try{var M=j.appendTo();\"parent\"===M?j.appendTo=\"parent\":M&&M.nodeType?j.appendTo=M:j.appendTo=\"parent\"}catch(e){j.appendTo=\"parent\"}try{var k=i;if(k&&k.jquery&&(k=k[0]),!k||!k.nodeType||1!==k.nodeType)throw new Error(\"Invalid DOM element for tooltip\");var T=tippy(k,j);T&&Array.isArray(T)&&T.length>0&&(k._tippyInstance=T[0],i._tippyInstance=T[0],e.data(\"ma-tooltip-active\",!0))}catch(e){return}finally{i&&(i._maTooltipInitializing=!1)}}catch(e){return void(i&&(i._maTooltipInitializing=!1))}};if(d(),\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode())try{e.data(\"ma-tooltip-initialized\",!0);var c=null,m=!1;if(\"undefined\"!=typeof elementorModules&&elementorModules.frontend&&elementorModules.frontend.handlers&&elementorModules.frontend.handlers.Base){var f=elementorModules.frontend.handlers.Base.extend({onElementChange:function(t){!t||\"string\"!=typeof t||0!==t.indexOf(\"ma_el_tooltip\")&&0!==t.indexOf(\"jltma_tooltip\")||m||(c&&clearTimeout(c),c=setTimeout(function(){try{m=!0,a=n(e),document.querySelectorAll(\".tippy-popper:not([data-tippy-popper-id])\").forEach(function(e){e.parentNode&&e.parentNode.removeChild(e)}),d(),c=null,setTimeout(function(){m=!1},100)}catch(e){m=!1}},200))},onDestroy:function(){if(c&&clearTimeout(c),i&&i._tippyInstance)try{i._tippyInstance.destroy()}catch(e){}}});try{elementorFrontend.elementsHandler.addHandler(f,{$element:e})}catch(t){e.one(\"remove\",function(){if(c&&clearTimeout(c),i&&i._tippyInstance)try{i._tippyInstance.destroy()}catch(e){}})}}}catch(e){}if(\"undefined\"!=typeof window&&window.addEventListener){var p=function(){if(i){if(i._tippyInstance)try{i._tippyInstance.destroy()}catch(e){}i._maTooltipCleanup&&i._maTooltipCleanup.forEach(function(e){try{e.element.removeEventListener(e.event,e.handler)}catch(e){}})}};window.addEventListener(\"beforeunload\",p),window.addEventListener(\"pagehide\",p)}}}else{var u=(e.data(\"ma-tooltip-retry\")||0)+1;u\u003C=10&&(e.data(\"ma-tooltip-retry\",u),setTimeout(function(){l.MA_Tooltip(e,t)},100))}},MA_Twitter_Slider:function(e,t){var a=e.find(\".jltma-twitter-carousel-slider\");if(a.length){var n=e.find(\".swiper\"),o=a.data(\"settings\"),i=elementorFrontend.utils.swiper;!async function(){await new i(n[0],o),o.pauseOnHover&&n.hover(function(){this.swiper.autoplay.stop()},function(){this.swiper.autoplay.start()})}()}},MA_ParticlesBG:function(e,t){function a(){return\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()}if(e.hasClass(\"jltma-particle-yes\")||e.attr(\"data-jltma-particle\")||e.find(\".jltma-particle-wrapper\").attr(\"data-jltma-particles-editor\")){let t,n=e.data(\"element_type\"),o=encodeURIComponent(e.data(\"id\"));if(t=a()?e.find(\".jltma-particle-wrapper\").attr(\"data-jltma-particles-editor\"):e.attr(\"data-jltma-particle\"),(\"section\"===n||\"column\"===n||\"container\"===n)&&t)if(a())if(e.hasClass(\"jltma-particle-yes\"))try{let a=JSON.parse(t);particlesJS(\"jltma-particle-\"+o,a),e.find(\".elementor-column\").css(\"z-index\",9),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},500),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},1500)}catch(e){}else e.find(\".jltma-particle-wrapper\").remove();else{e.prepend('\u003Cdiv class=\"jltma-particle-wrapper\" id=\"jltma-particle-'+o+'\">\u003C\u002Fdiv>');try{let e=JSON.parse(t);particlesJS(\"jltma-particle-\"+o,e),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},500),setTimeout(function(){window.dispatchEvent(new Event(\"resize\"))},1500)}catch(e){}}}},MA_BgSlider:function(e,t){function a(){return\"undefined\"!=typeof elementorFrontend&&elementorFrontend.isEditMode()}if(a()){if(!e.find(\".ma-el-section-bs\").length)return}else if(!e.hasClass(\"has_ma_el_bg_slider\"))return;var n,o,i,r,l,s,d,c,m,f,p,u,_=[];(a()?(f=e.find(\".ma-el-section-bs-inner\")).length&&(m=f.attr(\"data-ma-el-bg-slider\")):m=e.attr(\"data-ma-el-bg-slider-images\"),m)&&(a()?(o=(f=e.find(\".ma-el-section-bs-inner\")).attr(\"data-ma-el-bg-slider-transition\"),i=f.attr(\"data-ma-el-bg-slider-animation\"),r=f.attr(\"data-ma-el-bg-custom-overlay\"),s=f.attr(\"data-ma-el-bg-slider-cover\"),d=f.attr(\"data-ma-el-bs-slider-delay\"),c=f.attr(\"data-ma-el-bs-slider-timer\"),l=\"yes\"==r?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\":(p=f.attr(\"data-ma-el-bg-slider-overlay\"))&&\"00.png\"!==p?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F\"+p:JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\"):(o=e.attr(\"data-ma-el-bg-slider-transition\"),i=e.attr(\"data-ma-el-bg-slider-animation\"),r=e.attr(\"data-ma-el-bg-custom-overlay\"),s=e.attr(\"data-ma-el-bg-slider-cover\"),d=e.attr(\"data-ma-el-bs-slider-delay\"),c=e.attr(\"data-ma-el-bs-slider-timer\"),l=\"yes\"==r?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\":(p=e.attr(\"data-ma-el-bg-slider-overlay\"))?JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F\"+p+\".png\":JLTMA_SCRIPTS.plugin_url+\"\u002Fassets\u002Fvendor\u002Fvegas\u002Foverlays\u002F00.png\"),n=m.split(\",\"),jQuery.each(n,function(e,t){var a=[];a.src=t,_.push(a)}),e.find(\".ma-el-section-bs\").length||e.prepend('\u003Cdiv class=\"ma-el-section-bs\">\u003Cdiv class=\"ma-el-section-bs-inner\">\u003C\u002Fdiv>\u003C\u002Fdiv>'),(u=e.find(\".ma-el-section-bs-inner\")).vegas({slides:_,transition:o,animation:i,overlay:l,cover:\"true\"==s,delay:parseInt(d)||5e3,timer:\"true\"==c,init:function(){\"yes\"==r&&u.children(\".vegas-overlay\").css(\"background-image\",\"\")}}))},MA_AnimatedGradient:function(e,t){if(e.hasClass(\"ma-el-animated-gradient-yes\")){let t=e.data(\"color\")||e.attr(\"data-color\"),a=e.data(\"angle\")||e.attr(\"data-angle\"),n=e.data(\"duration\")||e.attr(\"data-duration\")||\"6s\",o=parseInt(e.data(\"smoothness\")||e.attr(\"data-smoothness\")||3),i=e.data(\"easing\")||e.attr(\"data-easing\")||\"cubic-bezier(0.4, 0.0, 0.2, 1)\";if(!t||!a)return;let r=t.split(\",\");if(r.length\u003C2)return;let l=\"jltma-animated-gradient-\"+Math.random().toString(36).substring(2,11),s=`@keyframes ${l} {`,d=r.length;for(let e=0;e\u003C=d;e++){let t=e\u002Fd*100,n=e%r.length,i=(e+1)%r.length;if(s+=`${t.toFixed(2)}% { background: linear-gradient(${a}, ${r[n].trim()}, ${r[i].trim()}); }`,e\u003Cd){let e=100\u002Fd;for(let n=1;n\u003C=o;n++){let l=t+e*(n\u002F(o+1)),d=i,c=(i+1)%r.length;s+=`${l.toFixed(2)}% { background: linear-gradient(${a}, ${r[d].trim()}, ${r[c].trim()}); }`}}}s+=\"}\";let c=document.createElement(\"style\");if(c.textContent=s,document.head.appendChild(c),e.css({animation:`${l} ${n} ${i} infinite`,\"background-size\":\"400% 400%\"}),e.hasClass(\"elementor-element-edit-mode\")){let t=e.find(\".animated-gradient\");if(t.length>0){let e=t.data(\"color\")||t.attr(\"data-color\"),a=t.data(\"angle\")||t.attr(\"data-angle\"),n=t.data(\"duration\")||t.attr(\"data-duration\")||\"6s\";if(e&&a){let r=e.split(\",\");if(r.length>=2){let e=\"jltma-animated-gradient-editor-\"+Math.random().toString(36).substring(2,11),l=`@keyframes ${e} {`,s=r.length;for(let e=0;e\u003C=s;e++){let t=e\u002Fs*100,n=e%r.length,i=(e+1)%r.length;if(l+=`${t.toFixed(2)}% { background: linear-gradient(${a}, ${r[n].trim()}, ${r[i].trim()}); }`,e\u003Cs){let e=100\u002Fs;for(let n=1;n\u003C=o;n++){let s=t+e*(n\u002F(o+1)),d=i,c=(i+1)%r.length;l+=`${s.toFixed(2)}% { background: linear-gradient(${a}, ${r[d].trim()}, ${r[c].trim()}); }`}}}l+=\"}\";let d=document.createElement(\"style\");d.textContent=l,document.head.appendChild(d),t.css({animation:`${e} ${n} ${i} infinite`,\"background-size\":\"400% 400%\"})}}}}}},MA_Image_Comparison:function(e,t){var a=e.find(\".jltma-image-comparison\").eq(0),n=a.data(\"image-comparison-settings\");a.twentytwenty({default_offset_pct:n.visible_ratio,orientation:n.orientation,before_label:n.before_label,after_label:n.after_label,move_slider_on_hover:n.slider_on_hover,move_with_handle_only:n.slider_with_handle,click_to_move:n.slider_with_click,no_overlay:n.no_overlay})},MA_BarCharts:function(e){r(e[0],function(){var t=e.find(\".jltma-bar-chart-container\"),a=e.find(\"#jltma-bar-chart\"),n=t.data(\"settings\");t.length&&new Chart(a,n)})},MA_PieCharts:function(e,t){r(e[0],function(){e.find(\".ma-el-piechart .ma-el-percentage\").each(function(){var e=t(this).data(\"track-color\"),a=t(this).data(\"bar-color\");t(this).easyPieChart({animate:2e3,lineWidth:10,barColor:a,trackColor:e,scaleColor:!1,lineCap:\"square\",size:220})})})},ProgressBars:function(e,t){r(e[0],function(){e.find(\".jltma-stats-bar-content\").each(function(){var e=t(this).data(\"perc\");t(this).animate({width:e+\"%\"},20*e)})})},MA_Toggle_Content:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-toggle-content\"),o={active:l.getElementSettings.jltma_toggle_content_active_index};\"\"!==l.getElementSettings.jltma_toggle_content_indicator_color&&(o.indicatorColor=l.getElementSettings.jltma_toggle_content_indicator_color),l.getElementSettings.jltma_toggle_content_indicator_speed.size&&(o.speed=l.getElementSettings.jltma_toggle_content_indicator_speed.size),elementorFrontend.isEditMode()&&(o.watchControls=!0),a.MA_ToggleElement(o)},MA_Comment_Form_reCaptcha:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-comments-wrap\");a.data(\"recaptcha\"),a.data(\"jltma-comment-settings\").reCaptchaprotected},MA_Counter_Up:function(e,t){var a=e.find(\".jltma-counter-up-number\");t.isFunction(t.fn.counterUp)&&a.counterUp({duration:2e3,delay:15})},MA_CountdownTimer:function(e,t){var a=e.find(\".jltma-widget-countdown\");t.fn.MasterCountDownTimer=function(){var e=t(this).find(\".jltma-countdown-wrapper\"),a={year:e.data(\"countdown-year\"),month:e.data(\"countdown-month\"),day:e.data(\"countdown-day\"),hour:e.data(\"countdown-hour\"),min:e.data(\"countdown-min\"),sec:e.data(\"countdown-sec\")},n=(e.data(\"countdown-infinite\"),new Date(a.year,a.month,a.day,a.hour,a.min,a.sec)),o=e.find(\".jltma-countdown-year\"),i=e.find(\".jltma-countdown-month\"),r=e.find(\".jltma-countdown-day\"),l=e.find(\".jltma-countdown-hour\"),s=e.find(\".jltma-countdown-min\"),d=e.find(\".jltma-countdown-sec\"),c=setInterval(function(){var e=new Date,t=(Date.parse(n)-Date.parse(e))\u002F1e3;if(t\u003C=0)return o.text(0),i.text(0),r.text(0),l.text(0),s.text(0),d.text(0),void clearInterval(c);var a=t,m=Math.floor(a\u002F31536e3);a%=31536e3;var f=Math.floor(a\u002F2592e3);a%=2592e3;var p=Math.floor(a\u002F86400);a%=86400;var u=Math.floor(a\u002F3600);a%=3600;var _=Math.floor(a\u002F60),v=Math.floor(a%60);o.text(m),i.text(f),r.text(p),l.text(u),s.text(_),d.text(v)},1e3)},a.each(function(){t(this).MasterCountDownTimer()})},MA_Fancybox_Popup:function(e,t){var a;(a=jQuery).isFunction(a.fn.fancybox)&&a(\"[data-fancybox]\").fancybox({})},MA_Reveal:function(e,t){var a;if(l.MA_Reveal.elementSettings=n(e),l.MA_Reveal.revealAction=function(){a=new RevealFx(i,{revealSettings:{bgcolor:l.MA_Reveal.elementSettings.reveal_bgcolor,direction:l.MA_Reveal.elementSettings.reveal_direction,duration:100*Number(l.MA_Reveal.elementSettings.reveal_speed.size),delay:100*Number(l.MA_Reveal.elementSettings.reveal_delay.size),onCover:function(e,t){e.style.opacity=1}}})},l.MA_Reveal.runReveal=function(){a.reveal()},l.MA_Reveal.elementSettings.enabled_reveal){var o=\"#reveal-\"+e.data(\"id\"),i=document.querySelector(o);jQuery(o).hasClass(\"block-revealer\")||l.MA_Reveal.revealAction(),l.MA_Reveal.waypointOptions={offset:\"100%\",triggerOnce:!0},r(i,l.MA_Reveal.runReveal,l.MA_Reveal.waypointOptions)}},MA_Rellax:function(e,t){var o=n(e),i=null;t(window).on(\"resize\",function(){i&&(i.destroy(),i&&r())});var r=function(){if(o.enabled_rellax){if(\"undefined\"==typeof Rellax)return;var n=\"speed_rellax\",r=0;\"desktop\"!=(a=elementorFrontend.getCurrentDeviceMode())&&(n=\"speed_rellax_\"+a);var l=o[n];l&&void 0!==l.size&&(r=l.size);var s=\"#rellax-\"+e.data(\"id\");if(t(s).length)try{i=new Rellax(s,{speed:r})}catch(e){}}};r()},MA_Rellax_Final:function(e,t,a){l.getElementSettings=n(o);var o=a.$el;o.find(\"#scene\")},MA_Entrance_Animation:function(e,t){var a=(e=e||t(this)).hasClass(\"jltma-appear-watch-animation\")?e:e.find(\".jltma-appear-watch-animation\"),n=t(\"body\").hasClass(\"jltma-page-animation\");a.length&&(n?document.body.addEventListener(\"JltmaPageAnimationDone\",function(e){a.appearl({offset:\"200px\",insetOffset:\"0px\"}).one(\"appear\",function(e,t){this.classList.add(\"jltma-animated\"),this.classList.add(\"jltma-animated-once\")})}):a.appearl({offset:\"200px\",insetOffset:\"0px\"}).one(\"appear\",function(e,t){this.classList.add(\"jltma-animated\"),this.classList.add(\"jltma-animated-once\")}))},MA_Wrapper_Link:function(e,t){t(\"body\").off(\"click.onWrapperLink\",\"[data-jltma-wrapper-link]\"),t(\"body\").on(\"click.onWrapperLink\",\"[data-jltma-wrapper-link]\",function(e){e.preventDefault(),e.stopPropagation();var a=t(this),n=a.data(\"jltma-wrapper-link\"),o=a.data(\"id\"),i=document.createElement(\"a\");i.id=\"master-addons-wrapper-link-\"+o,i.href=n.url,i.target=n.is_external?\"_blank\":\"_self\",i.rel=n.nofollow?\"nofollow noreferer\":\"\",i.style.display=\"none\",document.body.appendChild(i),document.getElementById(i.id),n&&n.url&&(n.is_external?window.open(n.url,\"_blank\",n.nofollow?\"noopener,noreferrer\":\"noopener\"):window.location.href=n.url)})},MA_Restrict_Content_Ajax:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-restrict-content-wrap\").eq(0),o=e.data(\"id\"),i=a.data(\"restrict-layout-type\"),r=a.data(\"restrict-type\"),s=a.data(\"error-message\"),d=(a.data(\"rc-ajaxify\"),\"ma_el_rc_\"+o),c=e.find(\".jltma-restrict-form\").eq(0).data(\"form-id\"),m=e.find(\".jltma-restrict-content-popup-content\"),f=a.data(\"content-pass\")?a.data(\"content-pass\"):\"\",p=m.data(\"popup-type\")?m.data(\"popup-type\"):\"\",u=e.find(\".jltma-restrict-age-wrapper\").eq(0),_={min_age:u.data(\"min-age\"),age_type:u.data(\"age-type\"),age_title:u.data(\"age-title\"),age_content:u.data(\"age-content\"),age_submit:t(\"#\"+c).find('button[name=\"submit\"]').val(),checkbox_msg:u.data(\"checkbox-msg\")?u.data(\"checkbox-msg\"):\"\",empty_bday:u.data(\"empty-bday\")?u.data(\"empty-bday\"):\"\",non_exist_bday:u.data(\"non-exist-bday\")?u.data(\"non-exist-bday\"):\"\"};if(localStorage.getItem(d))t(\".jltma-rc-button\").addClass(\"d-none\"),t(\"#\"+c).addClass(\"d-none\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"card\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"text-center\"),t(\"#restrict-content-\"+o).addClass(\"d-block\");else{if(\"popup\"==i)var v=\"#jltma-rc-modal-\"+o;else v=\"#jltma-restrict-content-\"+o;t(v).on(\"click\",\".jltma_ra_select\",function(){var e=t(this).closest(\".jltma_ra_select_wrap\");e.find(\".jltma_ra_options\").hasClass(\"jltma_ra_active\")?e.find(\".jltma_ra_options\").removeClass(\"jltma_ra_active\"):(t(\".jltma_ra_options\").removeClass(\"jltma_ra_active\"),e.find(\".jltma_ra_options\").addClass(\"jltma_ra_active\"),e.find(\".jltma_ra_options\").find('li:contains(\"'+e.find(\".jltma_ra_select_val\").html()+'\")').addClass(\"jltma_ra_active\"))}),t(v).on(\"click\",\".jltma_ra_options ul li\",function(){var e=t(this).closest(\".jltma_ra_select_wrap\");e.find(\".jltma_ra_select_val\").html(t(this).html()),e.find(\"select\").val(t(this).attr(\"data-val\")),e.find(\".jltma_ra_options\").removeClass(\"jltma_ra_active\")}),t(v).on(\"mouseover\",\".jltma_ra_options ul li\",function(){t(\".jltma_ra_options ul li\").hasClass(\"jltma_ra_active\")&&t(\".jltma_ra_options ul li\").removeClass(\"jltma_ra_active\")}),t(document).click(function(e){\"jltma_ra_select\"==t(e.target).attr(\"class\")||t(\".jltma_ra_select\").find(t(e.target)).length||t(\".jltma_ra_options.jltma_ra_active\").length&&t(\".jltma_ra_options\").removeClass(\"jltma_ra_active\")}),\"windowload\"==p||\"windowloadfullscreen\"==p?t(\"#ma-el-rc-modal-hidden\").fancybox().trigger(\"click\"):t(\"[data-fancybox]\").fancybox({}),t(v).on(\"submit\",\"#\"+c,function(e){e.preventDefault();var a=t(this);a.find(\".jltma_rc_result\").remove(),t.ajax({type:\"POST\",url:JLTMA_SCRIPTS.ajaxurl,data:{action:\"jltma_restrict_content\",nonce:JLTMA_SCRIPTS.nonce,fields:a.serialize(),restrict_type:r,error_message:s,content_pass:f,restrict_age:_},cache:!1,success:function(e){try{if(\"success\"==(e=jQuery.parseJSON(e)).result)t(\"#restrict-content-\"+o).removeClass(\"d-none\").addClass(\"d-block\"),t(\"#\"+c).addClass(\"d-none\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"card\"),t(\"#jltma-restrict-age-\"+o).removeClass(\"text-center\"),localStorage.setItem(d,!0),t.fancybox.close(),t(\".jltma-rc-button\").addClass(\"d-none\");else{if(\"validate\"!=e.result)throw 0;t(\"#\"+c+\" .jltma_rc_submit\").after('\u003Cdiv class=\"jltma_rc_result\">\u003Cspan class=\"eicon-info-circle-o\">\u003C\u002Fspan> '+e.output+\"\u003C\u002Fdiv>\")}}catch(e){t(\"#\"+c+\" .jltma_rc_submit\").after('\u003Cdiv class=\"jltma_rc_result\">\u003Cspan class=\"eicon-loading\">\u003C\u002Fspan> Failed, please try again.\u003C\u002Fdiv>')}}})})}},MA_Restrict_Content:function(e,t){try{!function(t){l.getElementSettings=n(e);var a=e.find(\".jltma-restrict-content-wrap\").eq(0),o=(e.data(\"id\"),a.data(\"restrict-layout-type\"),a.data(\"restrict-type\"),e.find(\".jltma-restrict-content-popup-content\"),a.data(\"content-pass\"),e.find(\".jltma-restrict-age-wrapper\").eq(0));o.data(\"min-age\"),o.data(\"age-type\"),o.data(\"age-title\"),o.data(\"age-content\"),o.data(\"checkbox-msg\"),l.MA_Restrict_Content_Ajax(e,t)}(jQuery)}catch(e){}},MA_Nav_Menu:function(e,t){l.getElementSettings=n(e);var a=e.find(\".jltma-nav-menu-element\"),o=a.data(\"menu-id\"),i=a.data(\"menu-layout\"),r=(a.data(\"menu-trigger\"),a.data(\"menu-offcanvas\")),s=a.data(\"menu-toggletype\"),d=a.data(\"menu-animation\"),c=a.data(\"menu-container-id\"),m=a.data(\"sticky-type\"),f=t(\"#\"+c).outerHeight(),p=t(\"#\"+c);if(\"onepage\"==i)t(document).on(\"click\",\".jltma-navbar-nav li a\",function(e){if(t(this).attr(\"href\")){var a=t(this),n=a.get(0),o=n.href,i=o.indexOf(\"#\"),r=a.parents(\".jltma-navbar-nav-default\").hasClass(\"jltma-one-page-enabled\");-1!==i&&o.length>1&&r&&n.pathname==window.location.pathname&&(e.preventDefault(),a.parents(\".jltma-menu-container\").find(\".jltma-close\").trigger(\"click\"))}}),t(document).on(\"click\",function(e){t(e.target),!0===t(\".navbar-collapse\").hasClass(\"show\")&&t(\".jltma-one-page-enabled\").removeClass(\"show\")});else{var u=t(\".jltma-dropdown.jltma-sub-menu\");if(t(\"#\"+o+\" .jltma-menu-has-children\").hover(function(){u.hasClass(\"fade-up\")&&u.removeClass(\"fade-up\"),u.hasClass(\"fade-down\")&&u.removeClass(\"fade-down\"),t(\".jltma-dropdown.jltma-sub-menu\").addClass(d)}),\"fixed-onscroll\"==m&&t(window).width()>768&&t(function(){t(window).scroll(function(){t(window).scrollTop()>=10?p.removeClass(\"\"+c).addClass(\"jltma-on-scroll-fixed\"):p.removeClass(\"jltma-on-scroll-fixed\").addClass(\"\"+c)})}),\"sticky-top\"==m&&t(window).width()>768&&t(function(){t(window).scroll(function(){t(window).scrollTop()>=10?p.removeClass(\"\"+c).addClass(\"sticky-top\"):p.removeClass(\"sticky-top\").addClass(\"\"+c)})}),\"smart-scroll\"==m&&(t(\"body\").css(\"padding-top\",f+\"px\"),p.addClass(\"jltma-smart-scroll\"),t(\".jltma-smart-scroll\").length>0)){var _=0;t(window).on(\"scroll\",function(){var e=t(this).scrollTop();e\u003C_?t(\".jltma-smart-scroll\").removeClass(\"scrolled-down\").addClass(\"scrolled-up\"):t(\".jltma-smart-scroll\").removeClass(\"scrolled-up\").addClass(\"scrolled-down\"),_=e})}\"nav-fixed-top\"==m&&t(window).width()>768&&t(function(){t(\"body\").css(\"padding-top\",f+\"px\"),p.addClass(\"jltma-fixed-top\")}),\"toggle\"==s&&t(\"#\"+o+\" .navbar-nav.toggle .jltma-menu-dropdown-toggle\").click(function(e){t(this).parents(\".dropdown\").toggleClass(\"open\"),e.stopPropagation()}),\"toggle-bar\"==r&&t(\".jltma-nav-panel .navbar-toggler\").on(\"click\",function(e){t(\".jltma-burger\").toggleClass(\"jltma-close\")}),\"offcanvas\"!=r&&\"overlay\"!=r||(t(\".jltma-nav-panel .navbar-toggler\").on(\"click\",function(e){e.preventDefault(),e.stopPropagation();var a=t(this).attr(\"data-trigger\");t(a).toggleClass(\"show\"),t(\"body\").toggleClass(\"offcanvas-active\"),t(\".jltma-nav-panel \").toggleClass(\"offcanvas-nav\"),\"overlay\"==r&&t(\".jltma-nav-panel \").toggleClass(\"offcanvas-overlay\")}),t(document).on(\"keydown\",function(e){27===e.keyCode&&(t(\".mobile-offcanvas\").removeClass(\"show\"),t(\".desktop-offcanvas\").removeClass(\"show\"),t(\"body\").removeClass(\"overlay-active\"))}),t(\".btn-close, .jltma-nav-panel .offcanvas-nav, .jltma-nav-panel.desktop .jltma-close, .jltma-close\").click(function(e){t(\".jltma-nav-panel \").removeClass(\"offcanvas-nav\"),t(\".mobile-offcanvas\").removeClass(\"show\"),t(\".desktop-offcanvas\").removeClass(\"show\"),t(\"body\").removeClass(\"offcanvas-active\"),\"overlay\"==r&&t(\".jltma-nav-panel \").removeClass(\"offcanvas-overlay\")}))}},initEvents:function(e,t){e.find(\".jltma-search-wrapper\").eq(0).data(\"search-type\");var a=e.find(\".jltma-search-main-wrap\"),n=document.getElementById(\"jltma-btn-search\"),o=document.getElementById(\"jltma-btn-search-close\"),i=e.find(\".jltma-search\"),r=i.find(\".jltma-search__input\");t(n).on(\"click\",function(){a.addClass(\"main-wrap--move\"),i.addClass(\"search--open\"),setTimeout(function(){r.focus()},600)}),t(o).on(\"click\",function(){a.removeClass(\"main-wrap--move\"),i.removeClass(\"search--open\"),r.blur(),r.value=\"\"}),document.addEventListener(\"keyup\",function(e){27==e.keyCode&&l.closeSearch()})},MA_Header_Search:function(e,t){t(\"body\").addClass(\"js\"),l.initEvents(e,t)}};function s(e){t(e).find(\".jltma-fancybox\").each(function(){const e=function(e){if(!e)return\"\";const t=document.createElement(\"textarea\");return t.innerHTML=e,t.value}(t(this).data(\"caption\")),a=\u002F\\son\\w+\\s*=\u002Fi.test(e),n=\u002F\u003C\\s*script\u002Fi.test(e),o=\u002Fjavascript:\u002Fi.test(e);e&&(a||n||o)&&(t(this).attr(\"data-caption\",\"\"),t(this).closest(\".elementor-element\").remove())})}t(document).ready(function(){s(document.body),new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{1===e.nodeType&&s(e)})})}).observe(document.body,{childList:!0,subtree:!0})}),t(window).on(\"elementor\u002Ffrontend\u002Finit\",function(){elementorFrontend.isEditMode(),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_AnimatedGradient),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fcontainer\",l.MA_AnimatedGradient),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_BgSlider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fcontainer\",l.MA_BgSlider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_ParticlesBG),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fcontainer\",l.MA_ParticlesBG),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_Reveal),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_Rellax),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fglobal\",l.MA_Wrapper_Link),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-headlines.default\",l.MA_Animated_Headlines),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-advanced-accordion.default\",l.MA_Accordion),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-tabs.default\",l.MA_Tabs),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbar.default\",l.MA_ProgressBar),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-team-members-slider.default\",l.MA_TeamSlider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-image-carousel.default\",l.MA_Image_Carousel),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-blog-post.default\",l.MA_Blog),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-news-ticker.default\",l.MA_NewsTicker),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-el-countdown-timer.default\",l.MA_CountdownTimer),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-counter-up.default\",l.MA_Counter_Up),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-piecharts.default\",l.MA_PieCharts),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-timeline.default\",l.MA_Timeline),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-image-filter-gallery.default\",l.MA_Image_Filter_Gallery),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-gallery-slider.default\",l.MA_Gallery_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-el-image-comparison.default\",l.MA_Image_Comparison),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-el-restrict-content.default\",l.MA_Restrict_Content),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-search.default\",l.MA_Header_Search),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbars.default\",l.ProgressBars),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-instagram-feed.default\",l.MA_Instagram_Feed),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-toggle-content.default\",l.MA_Toggle_Content),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-comments.default\",l.MA_Comment_Form_reCaptcha),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-logo-slider.default\",l.MA_Logo_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-twitter-slider.default\",l.MA_Twitter_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-advanced-image.default\",l.MA_Advanced_Image),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-tooltip.default\",l.MA_Tooltip),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-image-hotspot.default\",l.MA_Image_Hotspot),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-pricing-table.default\",l.MA_Pricing_Table),elementorFrontend.isEditMode()&&(elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-headlines.default\",l.MA_Animated_Headlines),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-piecharts.default\",l.MA_PieCharts),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbars.default\",l.ProgressBars),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-progressbar.default\",l.MA_ProgressBar),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-news-ticker.default\",l.MA_NewsTicker),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-gallery-slider.default\",l.MA_Gallery_Slider),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fjltma-counter-up.default\",l.MA_Counter_Up),elementorFrontend.hooks.addAction(\"frontend\u002Felement_ready\u002Fma-tooltip.default\",l.MA_Tooltip))})}(jQuery);\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fvendor\u002Fpopper.min.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fvendor\u002Fpopper.min.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fassets\u002Fvendor\u002Fpopper.min.js\t2021-09-24 14:29:22.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fassets\u002Fvendor\u002Fpopper.min.js\t2026-06-01 13:31:18.000000000 +0000\n@@ -1,5 +1,6 @@\n \u002F**\n- * @popperjs\u002Fcore v2.9.3 - MIT License\n+ * @popperjs\u002Fcore v2.11.8 - MIT License\n  *\u002F\n \n-\"use strict\";!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){function t(e){return null==e?window:\"[object Window]\"!==e.toString()?(e=e.ownerDocument)&&e.defaultView||window:e}function n(e){return e instanceof t(e).Element||e instanceof Element}function o(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function r(e){return\"undefined\"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}function i(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),r=1,i=1;return o(e)&&t&&(r=n.width\u002Fe.offsetWidth||1,i=n.height\u002Fe.offsetHeight||1),{width:q(n.width\u002Fr),height:q(n.height\u002Fi),top:q(n.top\u002Fi),right:q(n.right\u002Fr),bottom:q(n.bottom\u002Fi),left:q(n.left\u002Fr),x:q(n.left\u002Fr),y:q(n.top\u002Fi)}}function a(e){return{scrollLeft:(e=t(e)).pageXOffset,scrollTop:e.pageYOffset}}function s(e){return e?(e.nodeName||\"\").toLowerCase():null}function f(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return i(f(e)).left+a(e).scrollLeft}function c(e){return t(e).getComputedStyle(e)}function l(e){return e=c(e),\u002Fauto|scroll|overlay|hidden\u002F.test(e.overflow+e.overflowY+e.overflowX)}function u(e,n,r){void 0===r&&(r=!1);var c,u=o(n);if(c=o(n)){var d=(c=n.getBoundingClientRect()).height\u002Fn.offsetHeight||1;c=1!==(c.width\u002Fn.offsetWidth||1)||1!==d}d=c,c=f(n),e=i(e,d),d={scrollLeft:0,scrollTop:0};var h={x:0,y:0};return(u||!u&&!r)&&((\"body\"!==s(n)||l(c))&&(d=n!==t(n)&&o(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:a(n)),o(n)?((h=i(n,!0)).x+=n.clientLeft,h.y+=n.clientTop):c&&(h.x=p(c))),{x:e.left+d.scrollLeft-h.x,y:e.top+d.scrollTop-h.y,width:e.width,height:e.height}}function d(e){var t=i(e),n=e.offsetWidth,o=e.offsetHeight;return 1>=Math.abs(t.width-n)&&(n=t.width),1>=Math.abs(t.height-o)&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function h(e){return\"html\"===s(e)?e:e.assignedSlot||e.parentNode||(r(e)?e.host:null)||f(e)}function m(e){return 0\u003C=[\"html\",\"body\",\"#document\"].indexOf(s(e))?e.ownerDocument.body:o(e)&&l(e)?e:m(h(e))}function v(e,n){var o;void 0===n&&(n=[]);var r=m(e);return e=r===(null==(o=e.ownerDocument)?void 0:o.body),o=t(r),r=e?[o].concat(o.visualViewport||[],l(r)?r:[]):r,n=n.concat(r),e?n:n.concat(v(h(r)))}function g(e){return o(e)&&\"fixed\"!==c(e).position?e.offsetParent:null}function y(e){for(var n=t(e),r=g(e);r&&0\u003C=[\"table\",\"td\",\"th\"].indexOf(s(r))&&\"static\"===c(r).position;)r=g(r);if(r&&(\"html\"===s(r)||\"body\"===s(r)&&\"static\"===c(r).position))return n;if(!r)e:{if(r=-1!==navigator.userAgent.toLowerCase().indexOf(\"firefox\"),-1===navigator.userAgent.indexOf(\"Trident\")||!o(e)||\"fixed\"!==c(e).position)for(e=h(e);o(e)&&0>[\"html\",\"body\"].indexOf(s(e));){var i=c(e);if(\"none\"!==i.transform||\"none\"!==i.perspective||\"paint\"===i.contain||-1!==[\"transform\",\"perspective\"].indexOf(i.willChange)||r&&\"filter\"===i.willChange||r&&i.filter&&\"none\"!==i.filter){r=e;break e}e=e.parentNode}r=null}return r||n}function b(e){function t(e){o.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){o.has(e)||(e=n.get(e))&&t(e)})),r.push(e)}var n=new Map,o=new Set,r=[];return e.forEach((function(e){n.set(e.name,e)})),e.forEach((function(e){o.has(e.name)||t(e)})),r}function w(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}function x(e){return e.split(\"-\")[0]}function O(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&r(n))do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function j(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function E(e,n){if(\"viewport\"===n){n=t(e);var r=f(e);n=n.visualViewport;var s=r.clientWidth;r=r.clientHeight;var l=0,u=0;n&&(s=n.width,r=n.height,\u002F^((?!chrome|android).)*safari\u002Fi.test(navigator.userAgent)||(l=n.offsetLeft,u=n.offsetTop)),e=j(e={width:s,height:r,x:l+p(e),y:u})}else o(n)?((e=i(n)).top+=n.clientTop,e.left+=n.clientLeft,e.bottom=e.top+n.clientHeight,e.right=e.left+n.clientWidth,e.width=n.clientWidth,e.height=n.clientHeight,e.x=e.left,e.y=e.top):(u=f(e),e=f(u),s=a(u),n=null==(r=u.ownerDocument)?void 0:r.body,r=U(e.scrollWidth,e.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),l=U(e.scrollHeight,e.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),u=-s.scrollLeft+p(u),s=-s.scrollTop,\"rtl\"===c(n||e).direction&&(u+=U(e.clientWidth,n?n.clientWidth:0)-r),e=j({width:r,height:l,x:u,y:s}));return e}function D(e,t,r){return t=\"clippingParents\"===t?function(e){var t=v(h(e)),r=0\u003C=[\"absolute\",\"fixed\"].indexOf(c(e).position)&&o(e)?y(e):e;return n(r)?t.filter((function(e){return n(e)&&O(e,r)&&\"body\"!==s(e)})):[]}(e):[].concat(t),(r=(r=[].concat(t,[r])).reduce((function(t,n){return n=E(e,n),t.top=U(n.top,t.top),t.right=z(n.right,t.right),t.bottom=z(n.bottom,t.bottom),t.left=U(n.left,t.left),t}),E(e,r[0]))).width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function L(e){return 0\u003C=[\"top\",\"bottom\"].indexOf(e)?\"x\":\"y\"}function M(e){var t=e.reference,n=e.element,o=(e=e.placement)?x(e):null;e=e?e.split(\"-\")[1]:null;var r=t.x+t.width\u002F2-n.width\u002F2,i=t.y+t.height\u002F2-n.height\u002F2;switch(o){case\"top\":r={x:r,y:t.y-n.height};break;case\"bottom\":r={x:r,y:t.y+t.height};break;case\"right\":r={x:t.x+t.width,y:i};break;case\"left\":r={x:t.x-n.width,y:i};break;default:r={x:t.x,y:t.y}}if(null!=(o=o?L(o):null))switch(i=\"y\"===o?\"height\":\"width\",e){case\"start\":r[o]-=t[i]\u002F2-n[i]\u002F2;break;case\"end\":r[o]+=t[i]\u002F2-n[i]\u002F2}return r}function P(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function k(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function W(e,t){void 0===t&&(t={});var o=t;t=void 0===(t=o.placement)?e.placement:t;var r=o.boundary,a=void 0===r?\"clippingParents\":r,s=void 0===(r=o.rootBoundary)?\"viewport\":r;r=void 0===(r=o.elementContext)?\"popper\":r;var p=o.altBoundary,c=void 0!==p&&p;o=P(\"number\"!=typeof(o=void 0===(o=o.padding)?0:o)?o:k(o,N));var l=e.elements.reference;p=e.rects.popper,a=D(n(c=e.elements[c?\"popper\"===r?\"reference\":\"popper\":r])?c:c.contextElement||f(e.elements.popper),a,s),c=M({reference:s=i(l),element:p,strategy:\"absolute\",placement:t}),p=j(Object.assign({},p,c)),s=\"popper\"===r?p:s;var u={top:a.top-s.top+o.top,bottom:s.bottom-a.bottom+o.bottom,left:a.left-s.left+o.left,right:s.right-a.right+o.right};if(e=e.modifiersData.offset,\"popper\"===r&&e){var d=e[t];Object.keys(u).forEach((function(e){var t=0\u003C=[\"right\",\"bottom\"].indexOf(e)?1:-1,n=0\u003C=[\"top\",\"bottom\"].indexOf(e)?\"y\":\"x\";u[e]+=d[n]*t}))}return u}function A(){for(var e=arguments.length,t=Array(e),n=0;n\u003Ce;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&\"function\"==typeof e.getBoundingClientRect)}))}function B(e){void 0===e&&(e={});var t=e.defaultModifiers,o=void 0===t?[]:t,r=void 0===(e=e.defaultOptions)?X:e;return function(e,t,i){function a(){f.forEach((function(e){return e()})),f=[]}void 0===i&&(i=r);var s={placement:\"bottom\",orderedModifiers:[],options:Object.assign({},X,r),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},f=[],p=!1,c={state:s,setOptions:function(i){return a(),s.options=Object.assign({},r,s.options,i),s.scrollParents={reference:n(e)?v(e):e.contextElement?v(e.contextElement):[],popper:v(t)},i=function(e){var t=b(e);return _.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}(function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}([].concat(o,s.options.modifiers))),s.orderedModifiers=i.filter((function(e){return e.enabled})),s.orderedModifiers.forEach((function(e){var t=e.name,n=e.options;n=void 0===n?{}:n,\"function\"==typeof(e=e.effect)&&(t=e({state:s,name:t,instance:c,options:n}),f.push(t||function(){}))})),c.update()},forceUpdate:function(){if(!p){var e=s.elements,t=e.reference;if(A(t,e=e.popper))for(s.rects={reference:u(t,y(e),\"fixed\"===s.options.strategy),popper:d(e)},s.reset=!1,s.placement=s.options.placement,s.orderedModifiers.forEach((function(e){return s.modifiersData[e.name]=Object.assign({},e.data)})),t=0;t\u003Cs.orderedModifiers.length;t++)if(!0===s.reset)s.reset=!1,t=-1;else{var n=s.orderedModifiers[t];e=n.fn;var o=n.options;o=void 0===o?{}:o,n=n.name,\"function\"==typeof e&&(s=e({state:s,options:o,name:n,instance:c})||s)}}},update:w((function(){return new Promise((function(e){c.forceUpdate(),e(s)}))})),destroy:function(){a(),p=!0}};return A(e,t)?(c.setOptions(i).then((function(e){!p&&i.onFirstUpdate&&i.onFirstUpdate(e)})),c):c}}function H(e){var n,o=e.popper,r=e.popperRect,i=e.placement,a=e.offsets,s=e.position,p=e.gpuAcceleration,l=e.adaptive;if(!0===(e=e.roundOffsets)){e=a.y;var u=window.devicePixelRatio||1;e={x:F(F(a.x*u)\u002Fu)||0,y:F(F(e*u)\u002Fu)||0}}else e=\"function\"==typeof e?e(a):a;e=void 0===(e=(u=e).x)?0:e,u=void 0===(u=u.y)?0:u;var d=a.hasOwnProperty(\"x\");a=a.hasOwnProperty(\"y\");var h,m=\"left\",v=\"top\",g=window;if(l){var b=y(o),w=\"clientHeight\",x=\"clientWidth\";b===t(o)&&(\"static\"!==c(b=f(o)).position&&(w=\"scrollHeight\",x=\"scrollWidth\")),\"top\"===i&&(v=\"bottom\",u-=b[w]-r.height,u*=p?1:-1),\"left\"===i&&(m=\"right\",e-=b[x]-r.width,e*=p?1:-1)}return o=Object.assign({position:s},l&&K),p?Object.assign({},o,((h={})[v]=a?\"0\":\"\",h[m]=d?\"0\":\"\",h.transform=2>(g.devicePixelRatio||1)?\"translate(\"+e+\"px, \"+u+\"px)\":\"translate3d(\"+e+\"px, \"+u+\"px, 0)\",h)):Object.assign({},o,((n={})[v]=a?u+\"px\":\"\",n[m]=d?e+\"px\":\"\",n.transform=\"\",n))}function T(e){return e.replace(\u002Fleft|right|bottom|top\u002Fg,(function(e){return ee[e]}))}function R(e){return e.replace(\u002Fstart|end\u002Fg,(function(e){return te[e]}))}function S(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function C(e){return[\"top\",\"right\",\"bottom\",\"left\"].some((function(t){return 0\u003C=e[t]}))}var q=Math.round,N=[\"top\",\"bottom\",\"right\",\"left\"],V=N.reduce((function(e,t){return e.concat([t+\"-start\",t+\"-end\"])}),[]),I=[].concat(N,[\"auto\"]).reduce((function(e,t){return e.concat([t,t+\"-start\",t+\"-end\"])}),[]),_=\"beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite\".split(\" \"),U=Math.max,z=Math.min,F=Math.round,X={placement:\"bottom\",modifiers:[],strategy:\"absolute\"},Y={passive:!0},G={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:function(e){var n=e.state,o=e.instance,r=(e=e.options).scroll,i=void 0===r||r,a=void 0===(e=e.resize)||e,s=t(n.elements.popper),f=[].concat(n.scrollParents.reference,n.scrollParents.popper);return i&&f.forEach((function(e){e.addEventListener(\"scroll\",o.update,Y)})),a&&s.addEventListener(\"resize\",o.update,Y),function(){i&&f.forEach((function(e){e.removeEventListener(\"scroll\",o.update,Y)})),a&&s.removeEventListener(\"resize\",o.update,Y)}},data:{}},J={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:function(e){var t=e.state;t.modifiersData[e.name]=M({reference:t.rects.reference,element:t.rects.popper,strategy:\"absolute\",placement:t.placement})},data:{}},K={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"},Q={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:function(e){var t=e.state,n=e.options;e=void 0===(e=n.gpuAcceleration)||e;var o=n.adaptive;o=void 0===o||o,n=void 0===(n=n.roundOffsets)||n,e={placement:x(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,H(Object.assign({},e,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:n})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,H(Object.assign({},e,{offsets:t.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:n})))),t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-placement\":t.placement})},data:{}},Z={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},i=t.elements[e];o(i)&&s(i)&&(Object.assign(i.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?\"\":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],i=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]=\"\",e}),{}),o(r)&&s(r)&&(Object.assign(r.style,e),Object.keys(i).forEach((function(e){r.removeAttribute(e)})))}))}},requires:[\"computeStyles\"]},$={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:function(e){var t=e.state,n=e.name,o=void 0===(e=e.options.offset)?[0,0]:e,r=(e=I.reduce((function(e,n){var r=t.rects,i=x(n),a=0\u003C=[\"left\",\"top\"].indexOf(i)?-1:1,s=\"function\"==typeof o?o(Object.assign({},r,{placement:n})):o;return r=(r=s[0])||0,s=((s=s[1])||0)*a,i=0\u003C=[\"left\",\"right\"].indexOf(i)?{x:s,y:r}:{x:r,y:s},e[n]=i,e}),{}))[t.placement],i=r.x;r=r.y,null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=r),t.modifiersData[n]=e}},ee={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"},te={start:\"end\",end:\"start\"},ne={name:\"flip\",enabled:!0,phase:\"main\",fn:function(e){var t=e.state,n=e.options;if(e=e.name,!t.modifiersData[e]._skip){var o=n.mainAxis;o=void 0===o||o;var r=n.altAxis;r=void 0===r||r;var i=n.fallbackPlacements,a=n.padding,s=n.boundary,f=n.rootBoundary,p=n.altBoundary,c=n.flipVariations,l=void 0===c||c,u=n.allowedAutoPlacements;c=x(n=t.options.placement),i=i||(c!==n&&l?function(e){if(\"auto\"===x(e))return[];var t=T(e);return[R(e),t,R(t)]}(n):[T(n)]);var d=[n].concat(i).reduce((function(e,n){return e.concat(\"auto\"===x(n)?function(e,t){void 0===t&&(t={});var n=t.boundary,o=t.rootBoundary,r=t.padding,i=t.flipVariations,a=t.allowedAutoPlacements,s=void 0===a?I:a,f=t.placement.split(\"-\")[1];0===(i=(t=f?i?V:V.filter((function(e){return e.split(\"-\")[1]===f})):N).filter((function(e){return 0\u003C=s.indexOf(e)}))).length&&(i=t);var p=i.reduce((function(t,i){return t[i]=W(e,{placement:i,boundary:n,rootBoundary:o,padding:r})[x(i)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:s,rootBoundary:f,padding:a,flipVariations:l,allowedAutoPlacements:u}):n)}),[]);n=t.rects.reference,i=t.rects.popper;var h=new Map;c=!0;for(var m=d[0],v=0;v\u003Cd.length;v++){var g=d[v],y=x(g),b=\"start\"===g.split(\"-\")[1],w=0\u003C=[\"top\",\"bottom\"].indexOf(y),O=w?\"width\":\"height\",j=W(t,{placement:g,boundary:s,rootBoundary:f,altBoundary:p,padding:a});if(b=w?b?\"right\":\"left\":b?\"bottom\":\"top\",n[O]>i[O]&&(b=T(b)),O=T(b),w=[],o&&w.push(0>=j[y]),r&&w.push(0>=j[b],0>=j[O]),w.every((function(e){return e}))){m=g,c=!1;break}h.set(g,w)}if(c)for(o=function(e){var t=d.find((function(t){if(t=h.get(t))return t.slice(0,e).every((function(e){return e}))}));if(t)return m=t,\"break\"},r=l?3:1;0\u003Cr&&\"break\"!==o(r);r--);t.placement!==m&&(t.modifiersData[e]._skip=!0,t.placement=m,t.reset=!0)}},requiresIfExists:[\"offset\"],data:{_skip:!1}},oe={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:function(e){var t=e.state,n=e.options;e=e.name;var o=n.mainAxis,r=void 0===o||o,i=void 0!==(o=n.altAxis)&&o;o=void 0===(o=n.tether)||o;var a=n.tetherOffset,s=void 0===a?0:a,f=W(t,{boundary:n.boundary,rootBoundary:n.rootBoundary,padding:n.padding,altBoundary:n.altBoundary});n=x(t.placement);var p=t.placement.split(\"-\")[1],c=!p,l=L(n);n=\"x\"===l?\"y\":\"x\",a=t.modifiersData.popperOffsets;var u=t.rects.reference,h=t.rects.popper,m=\"function\"==typeof s?s(Object.assign({},t.rects,{placement:t.placement})):s;if(s={x:0,y:0},a){if(r||i){var v=\"y\"===l?\"top\":\"left\",g=\"y\"===l?\"bottom\":\"right\",b=\"y\"===l?\"height\":\"width\",w=a[l],O=a[l]+f[v],j=a[l]-f[g],E=o?-h[b]\u002F2:0,D=\"start\"===p?u[b]:h[b];p=\"start\"===p?-h[b]:-u[b],h=t.elements.arrow,h=o&&h?d(h):{width:0,height:0};var M=t.modifiersData[\"arrow#persistent\"]?t.modifiersData[\"arrow#persistent\"].padding:{top:0,right:0,bottom:0,left:0};v=M[v],g=M[g],h=U(0,z(u[b],h[b])),D=c?u[b]\u002F2-E-h-v-m:D-h-v-m,u=c?-u[b]\u002F2+E+h+g+m:p+h+g+m,c=t.elements.arrow&&y(t.elements.arrow),m=t.modifiersData.offset?t.modifiersData.offset[t.placement][l]:0,c=a[l]+D-m-(c?\"y\"===l?c.clientTop||0:c.clientLeft||0:0),u=a[l]+u-m,r&&(r=o?z(O,c):O,j=o?U(j,u):j,r=U(r,z(w,j)),a[l]=r,s[l]=r-w),i&&(r=(i=a[n])+f[\"x\"===l?\"top\":\"left\"],f=i-f[\"x\"===l?\"bottom\":\"right\"],r=o?z(r,c):r,o=o?U(f,u):f,o=U(r,z(i,o)),a[n]=o,s[n]=o-i)}t.modifiersData[e]=s}},requiresIfExists:[\"offset\"]},re={name:\"arrow\",enabled:!0,phase:\"main\",fn:function(e){var t,n=e.state,o=e.name,r=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=x(n.placement);if(e=L(s),s=0\u003C=[\"left\",\"right\"].indexOf(s)?\"height\":\"width\",i&&a){r=P(\"number\"!=typeof(r=\"function\"==typeof(r=r.padding)?r(Object.assign({},n.rects,{placement:n.placement})):r)?r:k(r,N));var f=d(i),p=\"y\"===e?\"top\":\"left\",c=\"y\"===e?\"bottom\":\"right\",l=n.rects.reference[s]+n.rects.reference[e]-a[e]-n.rects.popper[s];a=a[e]-n.rects.reference[e],a=(i=(i=y(i))?\"y\"===e?i.clientHeight||0:i.clientWidth||0:0)\u002F2-f[s]\u002F2+(l\u002F2-a\u002F2),s=U(r[p],z(a,i-f[s]-r[c])),n.modifiersData[o]=((t={})[e]=s,t.centerOffset=s-a,t)}},effect:function(e){var t=e.state;if(null!=(e=void 0===(e=e.options.element)?\"[data-popper-arrow]\":e)){if(\"string\"==typeof e&&!(e=t.elements.popper.querySelector(e)))return;O(t.elements.popper,e)&&(t.elements.arrow=e)}},requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]},ie={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:function(e){var t=e.state;e=e.name;var n=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,i=W(t,{elementContext:\"reference\"}),a=W(t,{altBoundary:!0});n=S(i,n),o=S(a,o,r),r=C(n),a=C(o),t.modifiersData[e]={referenceClippingOffsets:n,popperEscapeOffsets:o,isReferenceHidden:r,hasPopperEscaped:a},t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-reference-hidden\":r,\"data-popper-escaped\":a})}},ae=B({defaultModifiers:[G,J,Q,Z]}),se=[G,J,Q,Z,$,ne,oe,re,ie],fe=B({defaultModifiers:se});e.applyStyles=Z,e.arrow=re,e.computeStyles=Q,e.createPopper=fe,e.createPopperLite=ae,e.defaultModifiers=se,e.detectOverflow=W,e.eventListeners=G,e.flip=ne,e.hide=ie,e.offset=$,e.popperGenerator=B,e.popperOffsets=J,e.preventOverflow=oe,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n+!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){\"use strict\";function t(e){if(null==e)return window;if(\"[object Window]\"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return\"undefined\"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+\"\u002F\"+e.version})).join(\" \"):navigator.userAgent}function c(){return!\u002F^((?!chrome|android).)*safari\u002Fi.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)\u002Fe.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)\u002Fe.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))\u002Ff,h=(a.top+(l&&u?u.offsetTop:0))\u002Fp,m=a.width\u002Ff,v=a.height\u002Fp;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||\"\").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return\u002Fauto|scroll|overlay|hidden\u002F.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)\u002Fe.offsetWidth||1,r=s(t.height)\u002Fe.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&((\"body\"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)\u003C=1&&(n=t.width),Math.abs(t.height-r)\u003C=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return\"html\"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return[\"html\",\"body\",\"#document\"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return[\"table\",\"td\",\"th\"].indexOf(l(e))>=0}function j(e){return r(e)&&\"fixed\"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&\"static\"===m(i).position;)i=j(i);return i&&(\"html\"===l(i)||\"body\"===l(i)&&\"static\"===m(i).position)?n:i||function(e){var t=\u002Ffirefox\u002Fi.test(f());if(\u002FTrident\u002Fi.test(f())&&r(e)&&\"fixed\"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&[\"html\",\"body\"].indexOf(l(n))\u003C0;){var i=m(n);if(\"none\"!==i.transform||\"none\"!==i.perspective||\"paint\"===i.contain||-1!==[\"transform\",\"perspective\"].indexOf(i.willChange)||t&&\"filter\"===i.willChange||t&&i.filter&&\"none\"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D=\"top\",A=\"bottom\",L=\"right\",P=\"left\",M=\"auto\",k=[D,A,L,P],W=\"start\",B=\"end\",H=\"viewport\",T=\"popper\",R=k.reduce((function(e,t){return e.concat([t+\"-\"+W,t+\"-\"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+\"-\"+W,t+\"-\"+B])}),[]),V=[\"beforeRead\",\"read\",\"afterRead\",\"beforeMain\",\"main\",\"afterMain\",\"beforeWrite\",\"write\",\"afterWrite\"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function I(e,r,o){return r===H?N(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&\"fixed\"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,\"fixed\"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):N(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return\"rtl\"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function _(e,t,o,s){var f=\"clippingParents\"===t?function(e){var t=w(b(e)),o=[\"absolute\",\"fixed\"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&C(e,o)&&\"body\"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=I(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),I(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function F(e){return e.split(\"-\")[0]}function U(e){return e.split(\"-\")[1]}function z(e){return[\"top\",\"bottom\"].indexOf(e)>=0?\"x\":\"y\"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?F(o):null,a=o?U(o):null,s=n.x+n.width\u002F2-r.width\u002F2,f=n.y+n.height\u002F2-r.height\u002F2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p=\"y\"===c?\"height\":\"width\";switch(a){case W:t[c]=t[c]-(n[p]\u002F2-r[p]\u002F2);break;case B:t[c]=t[c]+(n[p]\u002F2-r[p]\u002F2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?\"clippingParents\":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y(\"number\"!=typeof b?b:G(b,k)),w=m===T?\"reference\":T,O=e.rects.popper,j=e.elements[y?w:m],E=_(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:\"absolute\",placement:i}),W=N(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?\"y\":\"x\";R[e]+=V[n]*t}))}return R}var K={placement:\"bottom\",modifiers:[],strategy:\"absolute\"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n\u003Ce;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&\"function\"==typeof e.getBoundingClientRect)}))}function Z(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,o=void 0===r?[]:r,i=t.defaultOptions,a=void 0===i?K:i;return function(e,t,r){void 0===r&&(r=a);var i,s,f={placement:\"bottom\",orderedModifiers:[],options:Object.assign({},K,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},c=[],p=!1,u={state:f,setOptions:function(r){var i=\"function\"==typeof r?r(f.options):r;l(),f.options=Object.assign({},a,f.options,i),f.scrollParents={reference:n(e)?w(e):e.contextElement?w(e.contextElement):[],popper:w(t)};var s,p,d=function(e){var t=q(e);return V.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((s=[].concat(o,f.options.modifiers),p=s.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(p).map((function(e){return p[e]}))));return f.orderedModifiers=d.filter((function(e){return e.enabled})),f.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if(\"function\"==typeof o){var i=o({state:f,name:t,instance:u,options:r}),a=function(){};c.push(i||a)}})),u.update()},forceUpdate:function(){if(!p){var e=f.elements,t=e.reference,n=e.popper;if(Q(t,n)){f.rects={reference:y(t,E(n),\"fixed\"===f.options.strategy),popper:g(n)},f.reset=!1,f.placement=f.options.placement,f.orderedModifiers.forEach((function(e){return f.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r\u003Cf.orderedModifiers.length;r++)if(!0!==f.reset){var o=f.orderedModifiers[r],i=o.fn,a=o.options,s=void 0===a?{}:a,c=o.name;\"function\"==typeof i&&(f=i({state:f,options:s,name:c,instance:u})||f)}else f.reset=!1,r=-1}}},update:(i=function(){return new Promise((function(e){u.forceUpdate(),e(f)}))},function(){return s||(s=new Promise((function(e){Promise.resolve().then((function(){s=void 0,e(i())}))}))),s}),destroy:function(){l(),p=!0}};if(!Q(e,t))return u;function l(){c.forEach((function(e){return e()})),c=[]}return u.setOptions(r).then((function(e){!p&&r.onFirstUpdate&&r.onFirstUpdate(e)})),u}}var $={passive:!0};var ee={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:function(e){var n=e.state,r=e.instance,o=e.options,i=o.scroll,a=void 0===i||i,s=o.resize,f=void 0===s||s,c=t(n.elements.popper),p=[].concat(n.scrollParents.reference,n.scrollParents.popper);return a&&p.forEach((function(e){e.addEventListener(\"scroll\",r.update,$)})),f&&c.addEventListener(\"resize\",r.update,$),function(){a&&p.forEach((function(e){e.removeEventListener(\"scroll\",r.update,$)})),f&&c.removeEventListener(\"resize\",r.update,$)}},data:{}};var te={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=X({reference:t.rects.reference,element:t.rects.popper,strategy:\"absolute\",placement:t.placement})},data:{}},ne={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function re(e){var n,r=e.popper,o=e.popperRect,i=e.placement,a=e.variation,f=e.offsets,c=e.position,p=e.gpuAcceleration,u=e.adaptive,l=e.roundOffsets,h=e.isFixed,v=f.x,y=void 0===v?0:v,g=f.y,b=void 0===g?0:g,x=\"function\"==typeof l?l({x:y,y:b}):{x:y,y:b};y=x.x,b=x.y;var w=f.hasOwnProperty(\"x\"),O=f.hasOwnProperty(\"y\"),j=P,M=D,k=window;if(u){var W=E(r),H=\"clientHeight\",T=\"clientWidth\";if(W===t(r)&&\"static\"!==m(W=d(r)).position&&\"absolute\"===c&&(H=\"scrollHeight\",T=\"scrollWidth\"),W=W,i===D||(i===P||i===L)&&a===B)M=A,b-=(h&&W===k&&k.visualViewport?k.visualViewport.height:W[H])-o.height,b*=p?1:-1;if(i===P||(i===D||i===A)&&a===B)j=L,y-=(h&&W===k&&k.visualViewport?k.visualViewport.width:W[T])-o.width,y*=p?1:-1}var R,S=Object.assign({position:c},u&&ne),V=!0===l?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:s(n*o)\u002Fo||0,y:s(r*o)\u002Fo||0}}({x:y,y:b},t(r)):{x:y,y:b};return y=V.x,b=V.y,p?Object.assign({},S,((R={})[M]=O?\"0\":\"\",R[j]=w?\"0\":\"\",R.transform=(k.devicePixelRatio||1)\u003C=1?\"translate(\"+y+\"px, \"+b+\"px)\":\"translate3d(\"+y+\"px, \"+b+\"px, 0)\",R)):Object.assign({},S,((n={})[M]=O?b+\"px\":\"\",n[j]=w?y+\"px\":\"\",n.transform=\"\",n))}var oe={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,f=void 0===s||s,c={placement:F(t.placement),variation:U(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:\"fixed\"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,re(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,re(Object.assign({},c,{offsets:t.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-placement\":t.placement})},data:{}};var ie={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&l(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?\"\":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]=\"\",e}),{});r(o)&&l(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:[\"computeStyles\"]};var ae={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=S.reduce((function(e,n){return e[n]=function(e,t,n){var r=F(e),o=[P,D].indexOf(r)>=0?-1:1,i=\"function\"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function fe(e){return e.replace(\u002Fleft|right|bottom|top\u002Fg,(function(e){return se[e]}))}var ce={start:\"end\",end:\"start\"};function pe(e){return e.replace(\u002Fstart|end\u002Fg,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[F(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:\"flip\",enabled:!0,phase:\"main\",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=F(v),g=f||(y===v||!h?[fe(v)]:function(e){if(F(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(F(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k\u003Cb.length;k++){var B=b[k],H=F(B),T=U(B)===W,R=[D,A].indexOf(H)>=0,S=R?\"width\":\"height\",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var C=fe(q),N=[];if(i&&N.push(V[H]\u003C=0),s&&N.push(V[q]\u003C=0,V[C]\u003C=0),N.every((function(e){return e}))){E=B,j=!1;break}O.set(B,N)}if(j)for(var I=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,\"break\"},_=h?3:1;_>0;_--){if(\"break\"===I(_))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:[\"offset\"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=F(t.placement),w=U(t.placement),O=!w,j=z(x),M=\"x\"===j?\"y\":\"x\",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T=\"function\"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R=\"number\"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,C=\"y\"===j?D:P,N=\"y\"===j?A:L,I=\"y\"===j?\"height\":\"width\",_=k[j],X=_+b[C],Y=_-b[N],G=m?-H[I]\u002F2:0,K=w===W?B[I]:H[I],Q=w===W?-H[I]:-B[I],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData[\"arrow#persistent\"]?t.modifiersData[\"arrow#persistent\"].padding:{top:0,right:0,bottom:0,left:0},te=ee[C],ne=ee[N],re=de(0,B[I],$[I]),oe=O?B[I]\u002F2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[I]\u002F2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?\"y\"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=_+ie-fe,pe=de(m?a(X,_+oe-fe-se):X,_,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-_}if(c){var ue,le=\"x\"===j?D:P,he=\"x\"===j?A:L,me=k[M],ve=\"y\"===M?\"height\":\"width\",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:[\"offset\"]};var me={name:\"arrow\",enabled:!0,phase:\"main\",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=F(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?\"height\":\"width\";if(i&&a){var p=function(e,t){return Y(\"number\"!=typeof(e=\"function\"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l=\"y\"===f?D:P,d=\"y\"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?\"y\"===f?v.clientHeight||0:v.clientWidth||0:0,b=h\u002F2-m\u002F2,x=p[l],w=y-u[c]-p[d],O=y\u002F2-u[c]\u002F2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?\"[data-popper-arrow]\":n;null!=r&&(\"string\"!=typeof r||(r=t.elements.popper.querySelector(r)))&&C(t.elements.popper,r)&&(t.elements.arrow=r)},requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:\"reference\"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-reference-hidden\":p,\"data-popper-escaped\":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n+\u002F\u002F# sourceMappingURL=popper.min.js.map\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fclass-master-elementor-addons.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fclass-master-elementor-addons.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fclass-master-elementor-addons.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fclass-master-elementor-addons.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -470,7 +470,6 @@\n \t\t\t\t\t'Shortcode_Manager' => 'class-shortcode-manager.php',\n \t\t\t\t\t'Control_Manager' => 'class-control-manager.php',\n \t\t\t\t\t'Icon_Library_Helper' => 'icon-library-helper.php',\n-\t\t\t\t\t'Widget_Builder' => 'widget-builder.php',\n \t\t\t\t\t'Control_Base' => 'controls\u002Fclass-control-base.php',\n \t\t\t\t];\n \t\t\t\tif (isset($wb_file_map[$wb_class])) {\n@@ -1147,7 +1146,7 @@\n \n \t\t\t\\MasterAddons\\Inc\\Admin\\Theme_Builder\\Loader::get_instance();\n \t\t\t\\MasterAddons\\Inc\\Admin\\PopupBuilder\\Popup_Builder_Init::get_instance();\n-\t\t\t\u002F\u002F \\MasterAddons\\Inc\\Admin\\WidgetBuilder\\Widget_Builder_Init::get_instance();\n+\t\t\t\\MasterAddons\\Inc\\Admin\\WidgetBuilder\\Widget_Builder_Init::get_instance();\n \t\t\tREST_API::get_instance();\n \n \t\t\t\\MasterAddons\\Inc\\Admin\\Page_Importer::get_instance();\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0: components.json\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fconfig.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fconfig.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fconfig.php\t2026-04-05 10:30:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fconfig.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -2010,7 +2010,7 @@\n                         'custom-js' => [\n                             'title'    => 'Custom JS',\n                             'icon'     => 'eicon-code-bold',\n-                            'class'    => 'MasterAddons\\Modules\\Utilities\\CustomJs',\n+                            'class'    => 'MasterAddons\\Pro\\Modules\\Utilities\\CustomJs',\n                             'demo_url' => 'https:\u002F\u002Fmaster-addons.com\u002Fextension\u002Fcustom-js\u002F',\n                             'docs_url' => 'https:\u002F\u002Fmaster-addons.com\u002Fdocs\u002Fextensions\u002Fcustom-js\u002F',\n                             'tuts_url' => 'https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8G4JLw0s8sI',\n@@ -2020,7 +2020,7 @@\n                                 \"Runs only on the target element\",\n                                 \"No extra plugin or coding setup\"\n                             ],\n-                            'is_pro'   => false,\n+                            'is_pro'   => true,\n                         ],\n                         'duplicator' => [\n                             'title'    => 'Post\u002FPage Duplicator',\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-cpt.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-cpt.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-cpt.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-cpt.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -447,6 +447,10 @@\n     public function get_shortcode_ajax() {\n         check_ajax_referer('jltma_popup_nonce', '_nonce');\n \n+        if ( ! current_user_can( 'edit_posts' ) ) {\n+            wp_send_json_error( [ 'message' => __( 'Insufficient permissions', 'master-addons' ) ] );\n+        }\n+\n         $post_id = isset( $_POST['post_id'] ) ? absint( $_POST['post_id'] ) : 0;\n         $shortcode = '[jltma_popup id=\"' . $post_id . '\"]';\n \n@@ -541,6 +545,17 @@\n             return $allcaps;\n         }\n \n+        \u002F\u002F Security: only grant the cap if the user already has a base editing\n+        \u002F\u002F capability through their role. Without this guard, any logged-in user\n+        \u002F\u002F (incl. subscribers) visiting the Elementor edit URL for a popup would be\n+        \u002F\u002F granted edit_post for that request — a privilege escalation. With\n+        \u002F\u002F capability_type='post' on the CPT, authors+ already have edit_posts\n+        \u002F\u002F natively, so the workaround stays a no-op for them and is fully off for\n+        \u002F\u002F lower-privileged users.\n+        if (empty($user->allcaps['edit_posts']) && empty($user->allcaps['edit_pages'])) {\n+            return $allcaps;\n+        }\n+\n         \u002F\u002F Grant edit capability for this specific post type\n         if (isset($caps[0]) && in_array($caps[0], ['edit_post', 'edit_posts'])) {\n             $allcaps[$caps[0]] = true;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-frontend.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-frontend.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-frontend.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fpopup-builder\u002Fclass-popup-frontend.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -504,27 +504,24 @@\n         if ($expiration > 0) {\n              $max_age = $expiration - time();\n         \n-            ?>\n-            \u003Cscript>\n-                const cookieName = '\u003C?php echo esc_js($cookie_name); ?>';\n-                const value = '\u003C?php echo absint( time() ); ?>';\n-                const maxAge = \u003C?php echo (int) $max_age; ?>;\n-                const path = '\u002F';\n-\n-                document.cookie = `${cookieName}=${value}; max-age=${maxAge}; path=${path};`;\n-            \u003C\u002Fscript>\n-        \u003C?php\n-            \u002F\u002F setcookie($cookie_name, time(), $expiration, '\u002F');\n+            $cookie_js = sprintf(\n+                'document.cookie = \"%1$s=%2$d; max-age=%3$d; path=\u002F;\";',\n+                esc_js($cookie_name),\n+                absint(time()),\n+                (int) $max_age\n+            );\n+            $this->add_popup_inline_script($cookie_js);\n         }\n \n         if ($frequency === 'once_session') {\n             \u002F\u002F Session cookie (no max-age\u002Fexpires) — cleared automatically when the browser closes.\n             \u002F\u002F Avoids PHP sessions, which break full-page caching on the frontend.\n-            ?>\n-            \u003Cscript>\n-                document.cookie = '\u003C?php echo esc_js($cookie_name); ?>=\u003C?php echo absint(time()); ?>; path=\u002F;';\n-            \u003C\u002Fscript>\n-            \u003C?php\n+            $session_js = sprintf(\n+                'document.cookie = \"%1$s=%2$d; path=\u002F;\";',\n+                esc_js($cookie_name),\n+                absint(time())\n+            );\n+            $this->add_popup_inline_script($session_js);\n         }\n     }\n \n@@ -539,9 +536,24 @@\n         if ( is_feed() || is_admin() || isset($_COOKIE['ma_popup_visitor']) || isset($_GET['elementor-preview']) || ( defined('ELEMENTOR_VERSION') && \\Elementor\\Plugin::$instance->preview->is_preview_mode() ) ) { \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only existence check, no data processed\n             return;\n         }\n-        echo '\u003Cscript>if (document.cookie.indexOf(\"ma_popup_visitor=\") === -1) {\n-            document.cookie = \"ma_popup_visitor=1; max-age=31536000; path=\u002F;\";\n-        }\u003C\u002Fscript>';\n+        $this->add_popup_inline_script('if (document.cookie.indexOf(\"ma_popup_visitor=\") === -1) { document.cookie = \"ma_popup_visitor=1; max-age=31536000; path=\u002F;\"; }');\n+    }\n+\n+    \u002F**\n+     * Queue a small inline script through the enqueue API (printed in the footer)\n+     * instead of echoing a hardcoded \u003Cscript> tag. Multiple calls accumulate on the\n+     * same inline-only handle.\n+     *\n+     * @param string $js\n+     *\u002F\n+    private function add_popup_inline_script($js) {\n+        if (!wp_script_is('jltma-popup-inline', 'registered')) {\n+            wp_register_script('jltma-popup-inline', false, array(), JLTMA_VER, true);\n+        }\n+        if (!wp_script_is('jltma-popup-inline', 'enqueued')) {\n+            wp_enqueue_script('jltma-popup-inline');\n+        }\n+        wp_add_inline_script('jltma-popup-inline', $js);\n     }\n \n     private function get_popup_settings($popup_id) {\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fsettings\u002Fsettings.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fsettings\u002Fsettings.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fsettings\u002Fsettings.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fsettings\u002Fsettings.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -114,7 +114,7 @@\n         add_action('current_screen', [$this, 'jltma_set_page_title']);\n         add_action('admin_enqueue_scripts', [$this, 'jltma_admin_settings_scripts'], 99);\n         add_action('admin_body_class', [$this, 'jltma_admin_body_class']);\n-        add_action('admin_head', [$this, 'jltma_global_admin_css']);\n+        add_action('admin_enqueue_scripts', [$this, 'jltma_global_admin_css']);\n         add_action('wp_ajax_jltma_subscribe', [$this, 'handle_subscribe_ajax']);\n     }\n \n@@ -151,7 +151,7 @@\n      *\u002F\n     public function jltma_global_admin_css()\n     {\n-        echo '\u003Cstyle type=\"text\u002Fcss\">\n+        $css = '\n             \u002F* Hide separator below Master Addons menu *\u002F\n             #adminmenu #toplevel_page_master-addons-settings + .wp-menu-separator {\n                 display: none !important;\n@@ -236,10 +236,10 @@\n             .wrap .jltma-cpt-btn-youtube svg {\n                 fill: #ff0000;\n             }\n-        \u003C\u002Fstyle>';\n+        ';\n \n         \u002F\u002F JS to reorder submenu items and add separator\u002Fpricing classes\n-        echo '\u003Cscript type=\"text\u002Fjavascript\">\n+        $js = '\n             document.addEventListener(\"DOMContentLoaded\", function() {\n                 var menu = document.getElementById(\"toplevel_page_master-addons-settings\");\n                 if (!menu) return;\n@@ -286,7 +286,17 @@\n                     }\n                 });\n             });\n-        \u003C\u002Fscript>';\n+        ';\n+\n+        \u002F\u002F Load the menu styling and ordering through the core enqueue APIs\n+        \u002F\u002F (inline-only handles) instead of hardcoded \u003Cstyle>\u002F\u003Cscript> tags.\n+        wp_register_style('jltma-admin-menu', false, array(), JLTMA_VER);\n+        wp_enqueue_style('jltma-admin-menu');\n+        wp_add_inline_style('jltma-admin-menu', $css);\n+\n+        wp_register_script('jltma-admin-menu', false, array(), JLTMA_VER, true);\n+        wp_enqueue_script('jltma-admin-menu');\n+        wp_add_inline_script('jltma-admin-menu', $js);\n     }\n \n \t\u002F**\n@@ -331,9 +341,9 @@\n             remove_action('admin_notices', 'update_nag', 3);\n             remove_action('admin_notices', 'maintenance_nag', 10);\n \n-            \u002F\u002F Hide any remaining notices via CSS\n-            add_action('admin_head', function () {\n-                echo '\u003Cstyle type=\"text\u002Fcss\">\n+            \u002F\u002F Hide any remaining admin notices on our settings screen. Attached to the\n+            \u002F\u002F settings stylesheet (enqueued below) instead of a hardcoded \u003Cstyle> tag.\n+            $jltma_hide_notices_css = '\n                     .notice, .error, .updated, .update-nag, .admin-notice,\n                     .jltma-plugin-update-notice, .fs-notice, .fs-slug-master-addons,\n                     #wpbody-content > .notice, #wpbody-content > .error, #wpbody-content > .updated,\n@@ -345,9 +355,7 @@\n                     }\n                     #wpfooter {\n                         display: none !important;\n-                    }\n-                \u003C\u002Fstyle>';\n-            });\n+                    }';\n \n             \u002F\u002F Dequeue Spectra (UAG) zipwp-images style to prevent CSS conflicts on settings page\n             add_action('admin_enqueue_scripts', function () {\n@@ -369,6 +377,8 @@\n             wp_enqueue_style('jltma-admin-settings');\n             wp_enqueue_script('jltma-admin-settings');\n \n+            wp_add_inline_style('jltma-admin-settings', $jltma_hide_notices_css);\n+\n             \u002F\u002F White Label logo & Hidden Nav Menus\n             $white_label_settings = jltma_settings()->get('jltma_white_label_settings');\n             $white_label_settings = is_array($white_label_settings) ? $white_label_settings : [];\n@@ -460,13 +470,9 @@\n         remove_all_actions('network_admin_notices');\n         remove_all_actions('user_admin_notices');\n \n-        add_action('admin_head', function () {\n-            echo '\u003Cstyle type=\"text\u002Fcss\">\n-                #wpfooter {\n-                    display: none !important;\n-                }\n-            \u003C\u002Fstyle>';\n-        });\n+        \u002F\u002F Hide the footer for the full-screen wizard (attached to the wizard\n+        \u002F\u002F stylesheet below instead of a hardcoded \u003Cstyle> tag).\n+        $jltma_wizard_css = '#wpfooter { display: none !important; }';\n \n         \u002F\u002F Elementor icons for addon card icons\n         if (wp_style_is('elementor-icons', 'registered')) {\n@@ -478,6 +484,8 @@\n         wp_enqueue_style('jltma-setup-wizard');\n         wp_enqueue_script('jltma-setup-wizard');\n \n+        wp_add_inline_style('jltma-setup-wizard', $jltma_wizard_css);\n+\n         \u002F\u002F Build recommended plugins data with pre-computed install status.\n         $recommended_instance = Recommended_Plugins::get_instance();\n         $raw_plugins          = $recommended_instance->plugins_list();\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftemplates\u002Fincludes\u002Fclasses\u002Fmanager.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftemplates\u002Fincludes\u002Fclasses\u002Fmanager.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftemplates\u002Fincludes\u002Fclasses\u002Fmanager.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftemplates\u002Fincludes\u002Fclasses\u002Fmanager.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -713,7 +713,20 @@\n \t\tpublic function get_template_data()\n \t\t{\n \n-\t\t\t$template = $this->get_template_data_array($_REQUEST); \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended -- no nonce available for this AJAX handler\n+\t\t\t\u002F\u002F Extract and sanitize only the specific fields we need (never forward the whole superglobal).\n+\t\t\t$source = isset( $_REQUEST['source'] ) ? wp_unslash( $_REQUEST['source'] ) : ''; \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only fetch gated by edit_posts capability in get_template_data_array()\n+\t\t\tif ( is_array( $source ) ) {\n+\t\t\t\t$source = array_map( 'sanitize_text_field', $source );\n+\t\t\t} else {\n+\t\t\t\t$source = sanitize_text_field( $source );\n+\t\t\t}\n+\t\t\t$request_data = array(\n+\t\t\t\t'template_id' => isset( $_REQUEST['template_id'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['template_id'] ) ) : '', \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only fetch gated by edit_posts capability in get_template_data_array()\n+\t\t\t\t'tab'         => isset( $_REQUEST['tab'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['tab'] ) ) : '', \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only fetch gated by edit_posts capability in get_template_data_array()\n+\t\t\t\t'source'      => $source,\n+\t\t\t);\n+\n+\t\t\t$template = $this->get_template_data_array($request_data);\n \n \t\t\tif (!$template) {\n \t\t\t\twp_send_json_error();\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftemplates\u002Fkits\u002Fclass-importer.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftemplates\u002Fkits\u002Fclass-importer.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftemplates\u002Fkits\u002Fclass-importer.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftemplates\u002Fkits\u002Fclass-importer.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -94,7 +94,7 @@\n      *\u002F\n     public function activate_required_theme()\n     {\n-        $nonce = $_POST['nonce'];\n+        $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';\n \n         if (!wp_verify_nonce($nonce, 'jltma-template-kits-js') || !current_user_can('manage_options')) {\n             exit;\n@@ -130,9 +130,11 @@\n     public function sanitize_svg_on_upload($file)\n     {\n         if ($file['type'] === 'image\u002Fsvg+xml') {\n-            $file_content = file_get_contents($file['tmp_name']);\n+            \u002F\u002F Direct file ops on the PHP upload temp path, before WordPress moves it.\n+            \u002F\u002F WP_Filesystem (ftp\u002Fssh methods) cannot reach the local upload temp file.\n+            $file_content = file_get_contents($file['tmp_name']); \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- reading the PHP upload temp file for sanitization\n             $sanitized_content = $this->sanitize_svg($file_content);\n-            file_put_contents($file['tmp_name'], $sanitized_content);\n+            file_put_contents($file['tmp_name'], $sanitized_content); \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_file_put_contents -- writing back the sanitized SVG to the PHP upload temp file before WordPress moves it\n         }\n         return $file;\n     }\n@@ -1533,7 +1535,7 @@\n \n             $image_data = wp_remote_retrieve_body($response);\n             $tmp = wp_tempnam();\n-            file_put_contents($tmp, $image_data);\n+            file_put_contents($tmp, $image_data); \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_file_put_contents -- writing to a wp_tempnam() temp file that media_handle_sideload() then processes\n \n             if (!file_exists($tmp) || filesize($tmp) === 0) {\n                 wp_delete_file($tmp);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftemplates\u002Flibrary\u002Ftemplate-library.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftemplates\u002Flibrary\u002Ftemplate-library.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftemplates\u002Flibrary\u002Ftemplate-library.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftemplates\u002Flibrary\u002Ftemplate-library.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -280,6 +280,25 @@\n     \u002F**\n      * Get cached kit categories\n      *\u002F\n+    \u002F**\n+     * Write a file through the WP_Filesystem API.\n+     *\n+     * @param string $file\n+     * @param string $contents\n+     * @return bool\n+     *\u002F\n+    private function fs_put_contents($file, $contents) {\n+        global $wp_filesystem;\n+        if (empty($wp_filesystem)) {\n+            require_once ABSPATH . 'wp-admin\u002Fincludes\u002Ffile.php';\n+            WP_Filesystem();\n+        }\n+        if (empty($wp_filesystem)) {\n+            return false;\n+        }\n+        return $wp_filesystem->put_contents($file, $contents, FS_CHMOD_FILE);\n+    }\n+\n     private function get_cached_kit_categories($force_refresh = false) {\n         $upload_dir = wp_upload_dir();\n         $categories_file = $upload_dir['basedir'] . '\u002Fmaster_addons\u002Ftemplates_kits\u002Fkit-categories.json';\n@@ -302,7 +321,7 @@\n                 $cached = $cache_manager->get_cached_kit_categories($force_refresh);\n                 if ($cached !== false) {\n                     if (!file_exists($categories_file) && !empty($cached)) {\n-                        @file_put_contents($categories_file, json_encode($cached));\n+                        $this->fs_put_contents($categories_file, wp_json_encode($cached));\n                     }\n                     return $cached;\n                 }\n@@ -331,7 +350,7 @@\n                 set_transient($transient_key, $fresh_categories, $cache_expiry);\n \n                 \u002F\u002F Save to local file\n-                @file_put_contents($categories_file, json_encode($fresh_categories));\n+                $this->fs_put_contents($categories_file, wp_json_encode($fresh_categories));\n \n                 return $fresh_categories;\n             }\n@@ -1328,6 +1347,11 @@\n             return;\n         }\n \n+        if (!current_user_can('manage_options')) {\n+            wp_send_json_error(['message' => 'Insufficient permissions']);\n+            return;\n+        }\n+\n         $plugins_with_status = array();\n \n         if( isset($_POST['required_plugins']) && !empty( $_POST['required_plugins'])){\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fapi\u002Fselect2-api.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fapi\u002Fselect2-api.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fapi\u002Fselect2-api.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fapi\u002Fselect2-api.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -14,10 +14,10 @@\n      * This is called by WordPress REST API on each request\n      *\u002F\n     public function check_for_permission(){\n-        \u002F\u002F Allow any logged-in user who can read posts\n-        \u002F\u002F Using 'read' capability instead of 'edit_posts' to be more permissive\n-        \u002F\u002F Individual methods will perform their own capability checks as needed\n-        return current_user_can('read');\n+        \u002F\u002F These endpoints feed editor-only post\u002Fpage\u002Fterm pickers, so require\n+        \u002F\u002F the same capability needed to edit content. The REST API validates the\n+        \u002F\u002F X-WP-Nonce cookie nonce before this callback runs for logged-in users.\n+        return current_user_can('edit_posts');\n     }\n \n \n@@ -104,18 +104,10 @@\n \n \n     public function get_singular_list(){\n-        \u002F\u002F Only perform security checks if user is logged in\n-        if (is_user_logged_in()) {\n-            \u002F\u002F Verify REST API nonce that comes from JavaScript - be more lenient with nonce check\n-            $nonce = $this->request->get_header('X-WP-Nonce');\n-            if ($nonce && !wp_verify_nonce($nonce, 'wp_rest')) {\n-                \u002F\u002F If nonce verification fails, don't block the request\n-            }\n-\n-            \u002F\u002F Check if user can read posts\n-            if (!current_user_can('read')) {\n-                return new \\WP_Error( 'rest_forbidden', __( 'Insufficient permissions.', 'master-addons' ), [ 'status' => 403 ] );\n-            }\n+        \u002F\u002F Capability is enforced here (and by check_for_permission()); the REST\n+        \u002F\u002F API has already validated the X-WP-Nonce cookie nonce at this point.\n+        if ( ! current_user_can('edit_posts') ) {\n+            return new \\WP_Error( 'rest_forbidden', __( 'Insufficient permissions.', 'master-addons' ), [ 'status' => 403 ] );\n         }\n \n         $query_args = [\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fcpt-hooks.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fcpt-hooks.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fcpt-hooks.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Fcpt-hooks.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -272,21 +272,21 @@\n                     }\n                 } else {\n                     \u002F\u002F Fallback to post content\n-                    echo \\do_shortcode( $template_post->post_content );\n+                    echo \\wp_kses_post( \\do_shortcode( $template_post->post_content ) );\n                 }\n-                \n+\n                 $content = \\ob_get_clean();\n                 return $content;\n-                \n+\n             } catch ( \\Exception $e ) {\n                 \\ob_end_clean();\n                 \u002F\u002F Return post content as fallback if Elementor fails\n-                return \\do_shortcode( $template_post->post_content );\n+                return \\wp_kses_post( \\do_shortcode( $template_post->post_content ) );\n             }\n         }\n \n         \u002F\u002F Fallback: Return post content if Elementor is not available\n-        return \\do_shortcode( $template_post->post_content );\n+        return \\wp_kses_post( \\do_shortcode( $template_post->post_content ) );\n     }\n \n     public static function instance()\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Ftheme-builder-assets.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Ftheme-builder-assets.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Ftheme-builder-assets.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Ftheme-builder\u002Finc\u002Ftheme-builder-assets.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -12,7 +12,7 @@\n     public function __construct()\n     {\n \n-        add_action('admin_print_scripts', [$this, 'jltma_admin_js']);\n+        add_action('admin_enqueue_scripts', [$this, 'jltma_admin_js']);\n \n         \u002F\u002F enqueue scripts\n         add_action('admin_enqueue_scripts', [$this, 'jltma_header_footer_enqueue_scripts']);\n@@ -21,9 +21,11 @@\n     \u002F\u002F Declare Variable for Rest API\n     public function jltma_admin_js()\n     {\n-        echo \"\u003Cscript type='text\u002Fjavascript'>\\n\";\n-        echo $this->jltma_common_js(); \u002F\u002F phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- outputs safe JS built by jltma_common_js()\n-        echo \"\\n\u003C\u002Fscript>\";\n+        \u002F\u002F Output the REST var through the enqueue API (inline-only handle) instead of a\n+        \u002F\u002F hardcoded \u003Cscript> tag.\n+        wp_register_script('jltma-theme-builder-vars', false, array(), JLTMA_VER, false);\n+        wp_enqueue_script('jltma-theme-builder-vars');\n+        wp_add_inline_script('jltma-theme-builder-vars', $this->jltma_common_js());\n     }\n \n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-control-manager.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-control-manager.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-control-manager.php\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-control-manager.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -130,14 +130,27 @@\n     private function build_fallback_control($control_key, $field, $type) {\n         $label = !empty($field['label']) ? esc_js($field['label']) : 'Control';\n \n+        \u002F\u002F Elementor control constants are upper-case (e.g. REPEATER, SELECT). Normalise\n+        \u002F\u002F the type to a safe constant name so the generated PHP is always valid.\n+        $type_const = strtoupper(preg_replace('\u002F[^A-Za-z0-9_]\u002F', '', (string) $type));\n+        if ('' === $type_const) {\n+            $type_const = 'TEXT';\n+        }\n+\n         $content = \"\\t\\t\\$this->add_control(\\n\";\n         $content .= \"\\t\\t\\t'{$control_key}',\\n\";\n         $content .= \"\\t\\t\\t[\\n\";\n         $content .= \"\\t\\t\\t\\t'label' => esc_html__('{$label}', 'master-addons'),\\n\";\n-        $content .= \"\\t\\t\\t\\t'type' => Controls_Manager::{$type},\\n\";\n+        $content .= \"\\t\\t\\t\\t'type' => Controls_Manager::{$type_const},\\n\";\n+\n+        \u002F\u002F REPEATER must always carry a 'fields' array, otherwise Elementor's\n+        \u002F\u002F sanitize_settings() throws a TypeError when iterating null fields.\n+        if ('REPEATER' === $type_const) {\n+            $content .= \"\\t\\t\\t\\t'fields' => array(),\\n\";\n+        }\n \n         if (isset($field['default'])) {\n-            $default = is_string($field['default']) ? \"'\" . esc_js($field['default']) . \"'\" : $field['default'];\n+            $default = $this->export_default_value($field['default']);\n             $content .= \"\\t\\t\\t\\t'default' => {$default},\\n\";\n         }\n \n@@ -146,4 +159,29 @@\n \n         return $content;\n     }\n+\n+    \u002F**\n+     * Convert a control default value into a valid PHP literal for the generated file.\n+     * Arrays (e.g. repeater\u002Fgroup-control defaults) must never be interpolated directly,\n+     * which would emit the literal token \"Array\" and produce a fatal parse error.\n+     *\n+     * @param mixed $value\n+     * @return string\n+     *\u002F\n+    private function export_default_value($value) {\n+        if (is_array($value)) {\n+            \u002F\u002F phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export -- generating PHP source, not debug output\n+            return var_export($value, true);\n+        }\n+        if (is_bool($value)) {\n+            return $value ? 'true' : 'false';\n+        }\n+        if (is_int($value) || is_float($value)) {\n+            return (string) $value;\n+        }\n+        if (null === $value) {\n+            return \"''\";\n+        }\n+        return \"'\" . esc_js((string) $value) . \"'\";\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-rest-controller.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-rest-controller.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-rest-controller.php\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-rest-controller.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -627,33 +627,25 @@\n         $css_code = '';\n         $js_code = '';\n \n-        \u002F\u002F Sanitize HTML code - allow all HTML\u002FPHP for widget development\n+        \u002F\u002F Sanitize HTML code. PHP is NEVER allowed (no arbitrary code execution),\n+        \u002F\u002F regardless of capability. Inline \u003Cscript> is stripped — JavaScript belongs\n+        \u002F\u002F in the JS field, which is enqueued separately. Dynamic values use {{placeholders}}.\n         if (isset($data['html_code'])) {\n-            \u002F\u002F For admin users with widget building capability, we allow unfiltered HTML\n-            \u002F\u002F This is necessary for Elementor widget development\n-            if (current_user_can('unfiltered_html')) {\n-                $html_code = $data['html_code'];\n-            } else {\n-                \u002F\u002F For other users, use wp_kses_post which allows safe HTML\n-                $html_code = wp_kses_post($data['html_code']);\n-            }\n+            $html_code = $this->strip_php_tags($data['html_code']);\n+            $html_code = preg_replace('#\u003Cscript\\b[^>]*>.*?\u003C\u002Fscript>#is', '', $html_code);\n+            $html_code = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $html_code);\n         }\n \n-        \u002F\u002F Sanitize CSS code - allow CSS but strip PHP\u002FJS tags\n+        \u002F\u002F Sanitize CSS code - strip PHP\u002Fscript\u002Fstyle tags and dangerous constructs.\n         if (isset($data['css_code'])) {\n-            \u002F\u002F Remove any potential PHP\u002Fscript tags from CSS\n             $css_code = $this->sanitize_css($data['css_code']);\n         }\n \n-        \u002F\u002F Sanitize JavaScript code - allow JS but validate syntax\n+        \u002F\u002F Sanitize JavaScript code. PHP is NEVER allowed; \u003Cscript> tags are stripped so\n+        \u002F\u002F the value cannot break out of the generated\u002Fenqueued script context.\n         if (isset($data['js_code'])) {\n-            \u002F\u002F For admin users, allow JavaScript for widget development\n-            if (current_user_can('unfiltered_html')) {\n-                $js_code = $data['js_code'];\n-            } else {\n-                \u002F\u002F For other users, strip tags\n-                $js_code = wp_strip_all_tags($data['js_code']);\n-            }\n+            $js_code = $this->strip_php_tags($data['js_code']);\n+            $js_code = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $js_code);\n         }\n \n         \u002F\u002F Also save data in unified format for widget generator\n@@ -671,6 +663,23 @@\n     }\n \n     \u002F**\n+     * Strip every PHP open\u002Fclose tag (and null bytes) from a string so user input\n+     * can never become executable PHP once written into a generated widget file.\n+     *\n+     * @param string $code\n+     * @return string\n+     *\u002F\n+    private function strip_php_tags($code) {\n+        if (!is_string($code) || '' === $code) {\n+            return '';\n+        }\n+        $code = str_replace(chr(0), '', $code);\n+        $code = preg_replace('\u002F\u003C\\?php\u002Fi', '', $code);\n+        $code = str_replace(array('\u003C?=', '\u003C?', '?>'), '', $code);\n+        return $code;\n+    }\n+\n+    \u002F**\n      * Sanitize CSS code\n      *\n      * @param string $css\n@@ -678,11 +687,19 @@\n      *\u002F\n     private function sanitize_css($css) {\n         \u002F\u002F Remove any PHP tags\n-        $css = preg_replace('\u002F\u003C\\?php.*?\\?>\u002Fs', '', $css);\n-        $css = preg_replace('\u002F\u003C\\?.*?\\?>\u002Fs', '', $css);\n+        $css = $this->strip_php_tags($css);\n \n-        \u002F\u002F Remove any script tags\n+        \u002F\u002F Remove any \u003Cstyle>\u002F\u003Cscript> tags so the value cannot break out of the\n+        \u002F\u002F generated inline \u003Cstyle> block.\n+        $css = preg_replace('#\u003C\u002F?style\\b[^>]*>#i', '', $css);\n         $css = preg_replace('\u002F\u003Cscript\\b[^>]*>(.*?)\u003C\\\u002Fscript>\u002Fis', '', $css);\n+        $css = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $css);\n+\n+        \u002F\u002F Remove dangerous CSS constructs.\n+        $css = preg_replace('\u002F@import\\b\u002Fi', '', $css);\n+        $css = preg_replace('\u002Fexpression\\s*\\(\u002Fi', '', $css);\n+        $css = preg_replace('\u002F(javascript|vbscript)\\s*:\u002Fi', '', $css);\n+        $css = preg_replace('\u002Fbehavior\\s*:\u002Fi', '', $css);\n \n         \u002F\u002F Remove any JavaScript event handlers\n         $css = preg_replace('\u002Fon\\w+\\s*=\\s*[\"\\'].*?[\"\\']\u002Fi', '', $css);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-admin.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-admin.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-admin.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-admin.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -795,11 +795,13 @@\n     }\n \n     \u002F**\n-     * Render widget preview with PHP execution\n-     * Handles AJAX request to render widget HTML with PHP code executed\n+     * Render a static widget preview.\n+     * Handles the AJAX request to render widget HTML with mock control values.\n+     * No user-supplied PHP or JavaScript is ever executed — placeholders are\n+     * replaced with escaped default values and the markup is escaped on output.\n      *\u002F\n     public function render_preview() {\n-        \u002F\u002F Capability check: only administrators can execute widget previews (contains eval)\n+        \u002F\u002F Capability check: only administrators can request a widget preview.\n         if (!current_user_can('manage_options')) {\n             wp_send_json_error(['message' => 'You do not have permission to perform this action.'], 403);\n             return;\n@@ -811,13 +813,25 @@\n             return;\n         }\n \n-        $html_code = isset($_POST['html_code']) ? wp_kses_post( wp_unslash( $_POST['html_code'] ) ) : ''; \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce verified above\n+        $html_code = isset($_POST['html_code']) ? wp_unslash( $_POST['html_code'] ) : ''; \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- nonce verified above; PHP\u002Fscript stripped and output escaped below\n         $css_code = isset($_POST['css_code']) ? sanitize_textarea_field( wp_unslash( $_POST['css_code'] ) ) : ''; \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce verified above\n         $controls = isset($_POST['controls']) ? json_decode( sanitize_textarea_field( wp_unslash( $_POST['controls'] ) ), true ) : []; \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce verified above\n \n-        \u002F\u002F Build mock settings array from controls\n+        \u002F\u002F Preview NEVER executes user code: strip PHP tags and inline \u003Cscript>.\n+        $html_code = str_replace(chr(0), '', $html_code);\n+        $html_code = preg_replace('\u002F\u003C\\?php\u002Fi', '', $html_code);\n+        $html_code = str_replace(array('\u003C?=', '\u003C?', '?>'), '', $html_code);\n+        $html_code = preg_replace('#\u003Cscript\\b[^>]*>.*?\u003C\u002Fscript>#is', '', $html_code);\n+        $html_code = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $html_code);\n+\n+        \u002F\u002F Strip \u003C\u002Fstyle> and PHP from preview CSS so it cannot break out of \u003Cstyle>.\n+        $css_code = preg_replace('#\u003C\u002F?style\\b[^>]*>#i', '', $css_code);\n+        $css_code = preg_replace('\u002F\u003C\\?php\u002Fi', '', $css_code);\n+        $css_code = str_replace(array('\u003C?=', '\u003C?', '?>'), '', $css_code);\n+\n+        \u002F\u002F Build mock settings array from control defaults.\n         $settings = [];\n-        if (!empty($controls)) {\n+        if (!empty($controls) && is_array($controls)) {\n             foreach ($controls as $control) {\n                 if (isset($control['name']) && isset($control['default'])) {\n                     $settings[$control['name']] = $control['default'];\n@@ -825,86 +839,25 @@\n             }\n         }\n \n-        \u002F\u002F Replace placeholders with PHP variables using regex to handle dot notation\n-        \u002F\u002F Handles: {{field}}, {{field.property}}, {{field.property.subproperty}}\n-        if (!empty($controls)) {\n-            foreach ($controls as $control) {\n-                if (isset($control['name'])) {\n-                    $control_name = $control['name'];\n-\n-                    \u002F\u002F Regex to match {{control_name}} or {{control_name.property}} or {{control_name.property.subproperty}}\n-                    \u002F\u002F Pattern: {{control_name}} followed by optional .property.property...\n-                    $pattern = '\u002F\\{\\{' . preg_quote($control_name, '\u002F') . '((?:\\.[a-zA-Z0-9_]+)*)\\}\\}\u002F';\n-\n-                    $html_code = preg_replace_callback($pattern, function($matches) use ($control_name) {\n-                        $properties = $matches[1]; \u002F\u002F e.g., \"\" or \".tabs\" or \".property.subproperty\"\n-\n-                        if (empty($properties)) {\n-                            \u002F\u002F No properties, just {{control_name}}\n-                            \u002F\u002F Return: $settings['control_name']\n-                            return \"\\$settings['\" . $control_name . \"']\";\n-                        } else {\n-                            \u002F\u002F Has properties like .tabs or .property.subproperty\n-                            \u002F\u002F Convert to: $settings['control_name']['tabs'] or $settings['control_name']['property']['subproperty']\n-                            $props = explode('.', ltrim($properties, '.'));\n-                            $result = \"\\$settings['\" . $control_name . \"']\";\n-                            foreach ($props as $prop) {\n-                                if (!empty($prop)) {\n-                                    $result .= \"['\" . $prop . \"']\";\n-                                }\n-                            }\n-                            return $result;\n-                        }\n-                    }, $html_code);\n+        \u002F\u002F Substitute {{field}} \u002F {{field.prop}} placeholders with the mock default\n+        \u002F\u002F VALUE (escaped). This is a static render — no PHP is evaluated.\n+        $html_code = preg_replace_callback('\u002F\\{\\{([^}]+)\\}\\}\u002F', function($matches) use ($settings) {\n+            $path = array_filter(array_map('trim', explode('.', trim($matches[1]))), 'strlen');\n+            $value = $settings;\n+            foreach ($path as $key) {\n+                if (is_array($value) && isset($value[$key])) {\n+                    $value = $value[$key];\n+                } else {\n+                    return '';\n                 }\n             }\n-        }\n-\n-        \u002F\u002F Execute PHP code in the HTML\n-        ob_start();\n-\n-        \u002F\u002F Make settings available in the PHP context\n-        extract($settings, EXTR_SKIP);\n-\n-        \u002F\u002F Render the code\n-        if (strpos($html_code, '\u003C?php') === false && strpos($html_code, '\u003C?=') === false) {\n-            \u002F\u002F No PHP code, just output as is\n-            echo wp_kses_post( $html_code );\n-        } else {\n-            \u002F\u002F Has PHP code: write it to a temporary file in the uploads directory\n-            \u002F\u002F and include it. include is used instead of eval(), which is not\n-            \u002F\u002F permitted in WordPress.org hosted plugins.\n-            $upload_dir = wp_upload_dir();\n-            $tmp_dir    = trailingslashit($upload_dir['basedir']) . 'master-addons\u002Fwidget-builder\u002Ftmp\u002F';\n-\n-            if (!file_exists($tmp_dir)) {\n-                wp_mkdir_p($tmp_dir);\n-                file_put_contents($tmp_dir . 'index.php', \"\u003C?php\\n\u002F\u002F Silence is golden.\\n\");\n-            }\n-\n-            $tmp_file = $tmp_dir . 'preview-' . wp_generate_password(20, false) . '.php';\n-\n-            if (false !== file_put_contents($tmp_file, $html_code)) {\n-                try {\n-                    include $tmp_file;\n-                } catch (ParseError $e) {\n-                    echo '\u003Cdiv style=\"color:red;padding:20px;background:#fff3cd;border:1px solid #ffc107;\">';\n-                    echo '\u003Ch3>PHP Parse Error in Preview:\u003C\u002Fh3>';\n-                    echo '\u003Cpre>' . esc_html($e->getMessage()) . '\u003C\u002Fpre>';\n-                    echo '\u003Ch4>Line ' . absint( $e->getLine() ) . '\u003C\u002Fh4>';\n-                    echo '\u003C\u002Fdiv>';\n-                } catch (Exception $e) {\n-                    echo '\u003Cdiv style=\"color:red;padding:20px;background:#fff3cd;border:1px solid #ffc107;\">';\n-                    echo '\u003Ch3>PHP Error in Preview:\u003C\u002Fh3>';\n-                    echo '\u003Cpre>' . esc_html($e->getMessage()) . '\u003C\u002Fpre>';\n-                    echo '\u003C\u002Fdiv>';\n-                } finally {\n-                    wp_delete_file($tmp_file);\n-                }\n+            if (is_array($value)) {\n+                $value = isset($value['url']) ? $value['url'] : '';\n             }\n-        }\n+            return esc_html((string) $value);\n+        }, $html_code);\n \n-        $rendered_html = ob_get_clean();\n+        $rendered_html = wp_kses_post($html_code);\n \n         \u002F\u002F Build full HTML document with CSS\n         $output = '\u003C!DOCTYPE html>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-builder-init.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-builder-init.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-builder-init.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-builder-init.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -26,6 +26,7 @@\n     private function __construct() {\n         add_action('init', [$this, 'initialize'], 1);\n         add_action('admin_init', [$this, 'admin_redirects']);\n+        add_action('admin_init', [$this, 'maybe_migrate']);\n     }\n \n     public function initialize() {\n@@ -146,4 +147,135 @@\n         }\n         \u002F\u002F phpcs:enable WordPress.Security.NonceVerification.Recommended\n     }\n+\n+    \u002F**\n+     * One-time migration. Re-sanitizes stored widget code (strips any PHP\u002Fscript that\n+     * older versions may have persisted), purges stale generated files from current and\n+     * legacy locations, and regenerates every widget from the now-clean data. Existing\n+     * widget posts are never deleted — only their data is scrubbed and files rebuilt.\n+     * Runs once per version (gated by an option) inside an authorised admin request.\n+     *\u002F\n+    public function maybe_migrate() {\n+        $option_key = 'jltma_widget_builder_migrated';\n+        $version    = '3.1.1';\n+\n+        if (get_option($option_key) === $version) {\n+            return;\n+        }\n+\n+        if (!current_user_can('manage_options')) {\n+            return;\n+        }\n+\n+        \u002F\u002F 1) Remove stale generated trees (current + legacy locations).\n+        $upload = wp_upload_dir();\n+        $base   = trailingslashit($upload['basedir']);\n+        $this->delete_directory($base . 'master_addons\u002Fwidgets');\n+        $this->delete_directory($base . 'master-addons\u002Fwidget-builder\u002Fgenerated');\n+        $this->delete_directory($base . 'master-addons\u002Fwidget-builder\u002Ftmp');\n+\n+        \u002F\u002F 2) Scrub persisted widget data, then regenerate files from clean data.\n+        $widget_ids = get_posts([\n+            'post_type'      => 'jltma_widget',\n+            'post_status'    => 'any',\n+            'posts_per_page' => -1,\n+            'fields'         => 'ids',\n+        ]);\n+\n+        foreach ($widget_ids as $widget_id) {\n+            $data = get_post_meta($widget_id, '_jltma_widget_data', true);\n+            if (is_array($data)) {\n+                if (isset($data['html_code'])) {\n+                    $data['html_code'] = $this->scrub_html($data['html_code']);\n+                }\n+                if (isset($data['css_code'])) {\n+                    $data['css_code'] = $this->scrub_css($data['css_code']);\n+                }\n+                if (isset($data['js_code'])) {\n+                    $data['js_code'] = $this->scrub_js($data['js_code']);\n+                }\n+                update_post_meta($widget_id, '_jltma_widget_data', $data);\n+            }\n+\n+            $generator = new Widget_Generator($widget_id);\n+            $generator->generate();\n+        }\n+\n+        \u002F\u002F 3) Drop the orphaned option left by the old option-based builder.\n+        delete_option('jltma_custom_widgets');\n+\n+        update_option($option_key, $version);\n+    }\n+\n+    \u002F**\n+     * Strip PHP tags and inline \u003Cscript> from widget HTML.\n+     *\n+     * @param string $code\n+     * @return string\n+     *\u002F\n+    private function scrub_html($code) {\n+        if (!is_string($code) || '' === $code) {\n+            return '';\n+        }\n+        $code = str_replace(chr(0), '', $code);\n+        $code = preg_replace('\u002F\u003C\\?php\u002Fi', '', $code);\n+        $code = str_replace(['\u003C?=', '\u003C?', '?>'], '', $code);\n+        $code = preg_replace('#\u003Cscript\\b[^>]*>.*?\u003C\u002Fscript>#is', '', $code);\n+        $code = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $code);\n+        return $code;\n+    }\n+\n+    \u002F**\n+     * Strip PHP tags and \u003Cstyle>\u002F\u003Cscript> tags from widget CSS.\n+     *\n+     * @param string $code\n+     * @return string\n+     *\u002F\n+    private function scrub_css($code) {\n+        if (!is_string($code) || '' === $code) {\n+            return '';\n+        }\n+        $code = str_replace(chr(0), '', $code);\n+        $code = preg_replace('\u002F\u003C\\?php\u002Fi', '', $code);\n+        $code = str_replace(['\u003C?=', '\u003C?', '?>'], '', $code);\n+        $code = preg_replace('#\u003C\u002F?style\\b[^>]*>#i', '', $code);\n+        $code = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $code);\n+        return $code;\n+    }\n+\n+    \u002F**\n+     * Strip PHP tags and \u003Cscript> tags from widget JS.\n+     *\n+     * @param string $code\n+     * @return string\n+     *\u002F\n+    private function scrub_js($code) {\n+        if (!is_string($code) || '' === $code) {\n+            return '';\n+        }\n+        $code = str_replace(chr(0), '', $code);\n+        $code = preg_replace('\u002F\u003C\\?php\u002Fi', '', $code);\n+        $code = str_replace(['\u003C?=', '\u003C?', '?>'], '', $code);\n+        $code = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $code);\n+        return $code;\n+    }\n+\n+    \u002F**\n+     * Recursively delete a directory via WP_Filesystem.\n+     *\n+     * @param string $dir\n+     *\u002F\n+    private function delete_directory($dir) {\n+        if (empty($dir) || !is_dir($dir)) {\n+            return;\n+        }\n+        global $wp_filesystem;\n+        if (empty($wp_filesystem)) {\n+            require_once ABSPATH . 'wp-admin\u002Fincludes\u002Ffile.php';\n+            WP_Filesystem();\n+        }\n+        if (!empty($wp_filesystem)) {\n+            $wp_filesystem->delete($dir, true);\n+        }\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-generator.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-generator.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-generator.php\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fadmin\u002Fwidget-builder\u002Fclass-widget-generator.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -154,12 +154,43 @@\n      *\u002F\n     private function create_directory() {\n         if (!file_exists($this->widget_dir)) {\n-            return wp_mkdir_p($this->widget_dir);\n+            if (!wp_mkdir_p($this->widget_dir)) {\n+                return false;\n+            }\n         }\n+\n+        \u002F\u002F Defense in depth: drop a silence index.php into the base and per-widget\n+        \u002F\u002F directories so generated files cannot be listed\u002Fbrowsed directly. Generated\n+        \u002F\u002F PHP is plugin-authored and ABSPATH-guarded, so it is inert over the web.\n+        $this->harden_directory($this->upload_dir);\n+        $this->harden_directory($this->widget_dir);\n+\n         return true;\n     }\n \n     \u002F**\n+     * Write a silence index.php into a generated directory.\n+     *\n+     * @param string $dir\n+     *\u002F\n+    private function harden_directory($dir) {\n+        if (empty($dir)) {\n+            return;\n+        }\n+\n+        global $wp_filesystem;\n+        if (empty($wp_filesystem)) {\n+            require_once(ABSPATH . '\u002Fwp-admin\u002Fincludes\u002Ffile.php');\n+            WP_Filesystem();\n+        }\n+\n+        $index = trailingslashit($dir) . 'index.php';\n+        if (!file_exists($index)) {\n+            $wp_filesystem->put_contents($index, \"\u003C?php\\n\u002F\u002F Silence is golden.\\n\", FS_CHMOD_FILE);\n+        }\n+    }\n+\n+    \u002F**\n      * Generate PHP widget file\n      *\n      * @return bool|WP_Error\n@@ -397,6 +428,8 @@\n      *\u002F\n     private function build_get_icon() {\n         $icon = !empty($this->widget_data['icon']) ? $this->widget_data['icon'] : 'eicon-code';\n+        \u002F\u002F Escape for safe interpolation into a single-quoted PHP string literal.\n+        $icon = addslashes(sanitize_text_field($icon));\n \n         $content = \"\\tpublic function get_icon() {\\n\";\n         $content .= \"\\t\\treturn '{$icon}';\\n\";\n@@ -412,6 +445,8 @@\n      *\u002F\n     private function build_get_categories() {\n         $category = !empty($this->widget_data['category']) ? $this->widget_data['category'] : 'master-addons';\n+        \u002F\u002F Escape for safe interpolation into a single-quoted PHP string literal.\n+        $category = addslashes(sanitize_text_field($category));\n \n         $content = \"\\tpublic function get_categories() {\\n\";\n         $content .= \"\\t\\treturn ['{$category}'];\\n\";\n@@ -1020,7 +1055,7 @@\n \n                     \u002F\u002F For simple variable references, wrap in echo with appropriate escaping\n                     if (in_array(strtolower($control_type), ['wysiwyg', 'code'])) {\n-                        return '\u003C' . '?php echo ' . $var_ref . '; ?' . '>';\n+                        return '\u003C' . '?php echo wp_kses_post(' . $var_ref . '); ?' . '>';\n                     } else {\n                         return '\u003C' . '?php echo esc_html(' . $var_ref . '); ?' . '>';\n                     }\n@@ -1251,12 +1286,13 @@\n             return '';\n         }\n \n-        \u002F\u002F Ensure the HTML doesn't contain closing PHP tags that would break the context\n-        \u002F\u002F This is a security measure to prevent breaking out of the render method\n-        \u002F\u002F We replace any standalone PHP tag boundaries\n-        $html = str_replace('?' . '>\u003C' . '?php', '\u003C!-- php-boundary -->', $html);\n-\n-        \u002F\u002F Ensure the html does not contain {{  }} template string\n+        \u002F\u002F Security: strip every PHP open\u002Fclose tag so user-supplied markup can never\n+        \u002F\u002F execute as PHP once written into the generated widget file. Generated files\n+        \u002F\u002F contain only plugin-authored PHP; user HTML is treated as inert markup whose\n+        \u002F\u002F {{placeholders}} are converted to escaped echo statements elsewhere.\n+        $html = str_replace(chr(0), '', $html);\n+        $html = preg_replace('\u002F\u003C\\?php\u002Fi', '', $html);\n+        $html = str_replace(array('\u003C?=', '\u003C?', '?>'), '', $html);\n \n         return $html;\n     }\n@@ -1419,9 +1455,9 @@\n \n         $css = trim($css);\n \n-        \u002F\u002F Remove any PHP tags\n-        $css = preg_replace('\u002F\u003C\\?php.*?\\?>\u002Fs', '', $css);\n-        $css = preg_replace('\u002F\u003C\\?.*?\\?>\u002Fs', '', $css);\n+        \u002F\u002F Remove any PHP tags (balanced and bare) so nothing executes as PHP.\n+        $css = preg_replace('\u002F\u003C\\?php\u002Fi', '', $css);\n+        $css = str_replace(array('\u003C?=', '\u003C?', '?>'), '', $css);\n \n         \u002F\u002F Remove any HTML script tags\n         $css = preg_replace('\u002F\u003Cscript\\b[^>]*>(.*?)\u003C\\\u002Fscript>\u002Fis', '', $css);\n@@ -1452,16 +1488,17 @@\n \n         $js = trim($js);\n \n-        \u002F\u002F Remove any PHP tags\n-        $js = preg_replace('\u002F\u003C\\?php.*?\\?>\u002Fs', '', $js);\n-        $js = preg_replace('\u002F\u003C\\?.*?\\?>\u002Fs', '', $js);\n+        \u002F\u002F Remove any PHP tags (balanced and bare) so nothing executes as PHP.\n+        $js = preg_replace('\u002F\u003C\\?php\u002Fi', '', $js);\n+        $js = str_replace(array('\u003C?=', '\u003C?', '?>'), '', $js);\n+\n+        \u002F\u002F Strip \u003Cscript> tags so the value cannot break out of the enqueued\u002Finline\n+        \u002F\u002F \u003Cscript> context. JS string literals should not contain literal script tags.\n+        $js = preg_replace('#\u003C\u002F?script\\b[^>]*>#i', '', $js);\n \n         \u002F\u002F Remove null bytes\n         $js = str_replace(chr(0), '', $js);\n \n-        \u002F\u002F Note: We don't strip HTML tags from JS as they might be part of string literals\n-        \u002F\u002F The responsibility is on the admin user to write secure code\n-\n         return $js;\n     }\n \nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fadmin\u002Fwidget-builder: widget-builder.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fajax-queries.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fajax-queries.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fajax-queries.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fajax-queries.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -237,10 +237,14 @@\n     \u002F\u002F Restrict Content\n     public function jltma_restrict_content()\n     {\n+        \u002F\u002F Verify nonce first (localized to the frontend script as JLTMA_SCRIPTS.nonce).\n+        if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'master-addons-elementor' ) ) {\n+            wp_send_json_error( __( 'Security check failed.', 'master-addons' ) );\n+        }\n \n-        parse_str( isset( $_POST['fields'] ) ? sanitize_text_field( wp_unslash( $_POST['fields'] ) ) : '', $output ); \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- no nonce available for this AJAX handler\n+        parse_str( isset( $_POST['fields'] ) ? sanitize_text_field( wp_unslash( $_POST['fields'] ) ) : '', $output ); \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce verified above\n \n-        if (!empty($_POST['fields'])) { \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- no nonce available for this AJAX handler\n+        if (!empty($_POST['fields'])) { \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce verified above\n \n             \u002F\u002F Math Captcha\n             if ( isset( $_POST['restrict_type'] ) && $_POST['restrict_type'] == 'math_captcha' ) { \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Missing -- no nonce available for this AJAX handler\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Ffeedback.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Ffeedback.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Ffeedback.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Ffeedback.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -63,6 +63,10 @@\n     {\n         check_ajax_referer('jltma_deactivation_nonce');\n \n+        if ( ! current_user_can( 'deactivate_plugins' ) ) {\n+            wp_send_json_error( [ 'message' => __( 'Insufficient permissions', 'master-addons' ) ] );\n+        }\n+\n         $deactivation_reason  = !empty($_POST['deactivation_reason']) ? sanitize_text_field(wp_unslash($_POST['deactivation_reason'])) : '';\n \n         if (empty($deactivation_reason)) {\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fhelper.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fhelper.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fhelper.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fhelper.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -1183,12 +1183,23 @@\n \t\t\t'category'            => '',\n \t\t\t'orderby'             => '',\n \t\t\t'posts_per_page'      => 1,\n-\t\t\t'paged'               => $paged,\n-\t\t\t'offset'              => $new_offset,\n \t\t\t'ignore_sticky_posts' => 1,\n \t\t);\n \n \t\t$query_args = wp_parse_args( $args, $defaults );\n+\n+\t\t\u002F\u002F WordPress ignores 'paged' whenever 'offset' is set, and mixing the two breaks\n+\t\t\u002F\u002F pagination (it can silently skip to older posts). $new_offset already encodes\n+\t\t\u002F\u002F the current page, so use exactly one pagination source: offset when there is\n+\t\t\u002F\u002F an offset to apply, otherwise paged.\n+\t\tif ( $new_offset > 0 ) {\n+\t\t\t$query_args['offset'] = $new_offset;\n+\t\t\tunset( $query_args['paged'] );\n+\t\t} else {\n+\t\t\t$query_args['paged'] = max( 1, (int) $paged );\n+\t\t\tunset( $query_args['offset'] );\n+\t\t}\n+\n \t\t$posts = get_posts( $query_args );\n \t\twp_reset_postdata();\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fnotifications\u002Fnotifications.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fnotifications\u002Fnotifications.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fnotifications\u002Fnotifications.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fnotifications\u002Fnotifications.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -52,6 +52,10 @@\n \t{\n \t\tcheck_ajax_referer('jltma_notification_nonce');\n \n+\t\tif ( ! current_user_can( 'manage_options' ) ) {\n+\t\t\twp_send_json_error( [ 'message' => __( 'Insufficient permissions', 'master-addons' ) ] );\n+\t\t}\n+\n \t\t$action_type       = !empty($_REQUEST['action_type']) ? sanitize_key($_REQUEST['action_type']) : '';\n \t\t$notification_type = !empty($_REQUEST['notification_type']) ? sanitize_key($_REQUEST['notification_type']) : '';\n \t\t$trigger_time      = !empty($_REQUEST['trigger_time']) ? sanitize_text_field(wp_unslash($_REQUEST['trigger_time'])) : '';\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fnotifications\u002Fsubscribe.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fnotifications\u002Fsubscribe.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fnotifications\u002Fsubscribe.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fnotifications\u002Fsubscribe.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -42,6 +42,10 @@\n \t\t{\n \t\t\tcheck_ajax_referer('jltma_subscribe_nonce');\n \n+\t\t\tif ( ! current_user_can( 'manage_options' ) ) {\n+\t\t\t\twp_send_json_error( [ 'message' => __( 'Insufficient permissions', 'master-addons' ) ] );\n+\t\t\t}\n+\n \t\t\t$name  = !empty($_POST['name']) ? sanitize_text_field(wp_unslash($_POST['name'])) : '';\n \t\t\t$email = !empty($_POST['email']) ? sanitize_email(wp_unslash($_POST['email'])) : '';\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fnotifications\u002Fwhat-we-collect.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fnotifications\u002Fwhat-we-collect.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Fnotifications\u002Fwhat-we-collect.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Fnotifications\u002Fwhat-we-collect.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -43,6 +43,10 @@\n \t\t{\n \t\t\tcheck_ajax_referer('jltma_allow_collect_nonce');\n \n+\t\t\tif ( ! current_user_can( 'manage_options' ) ) {\n+\t\t\t\twp_send_json_error( [ 'message' => __( 'Insufficient permissions', 'master-addons' ) ] );\n+\t\t\t}\n+\n \t\t\t$this->jltma_collect_ajax_data();\n \n \t\t}\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Ftemplate-library-cache.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Ftemplate-library-cache.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fclasses\u002Ftemplate-library-cache.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fclasses\u002Ftemplate-library-cache.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -98,14 +98,14 @@\n \n             \u002F\u002F Create .htaccess for security\n             $htaccess_content = \"Options -Indexes\\n\u003CFiles \\\"*.json\\\">\\nOrder allow,deny\\nAllow from all\\n\u003C\u002FFiles>\";\n-            file_put_contents($this->cache_dir . '.htaccess', $htaccess_content);\n+            $this->fs_put_contents($this->cache_dir . '.htaccess', $htaccess_content);\n \n             \u002F\u002F Create index.php files\n             $index_content = \"\u003C?php\\n\u002F\u002F Silence is golden.\\n\";\n-            file_put_contents($this->cache_dir . 'index.php', $index_content);\n+            $this->fs_put_contents($this->cache_dir . 'index.php', $index_content);\n \n             foreach ($subdirs as $subdir) {\n-                file_put_contents($this->cache_dir . $subdir . '\u002Findex.php', $index_content);\n+                $this->fs_put_contents($this->cache_dir . $subdir . '\u002Findex.php', $index_content);\n             }\n         }\n \n@@ -504,7 +504,7 @@\n \n         $image_data = wp_remote_retrieve_body($response);\n \n-        if (file_put_contents($local_file, $image_data)) {\n+        if ($this->fs_put_contents($local_file, $image_data)) {\n             return $local_file;\n         }\n \n@@ -580,6 +580,26 @@\n     }\n \n     \u002F**\n+     * Write a file through the WP_Filesystem API.\n+     *\n+     * @param string $file\n+     * @param string $contents\n+     * @return bool\n+     *\u002F\n+    private function fs_put_contents($file, $contents)\n+    {\n+        global $wp_filesystem;\n+        if (empty($wp_filesystem)) {\n+            require_once ABSPATH . 'wp-admin\u002Fincludes\u002Ffile.php';\n+            WP_Filesystem();\n+        }\n+        if (empty($wp_filesystem)) {\n+            return false;\n+        }\n+        return $wp_filesystem->put_contents($file, $contents, FS_CHMOD_FILE);\n+    }\n+\n+    \u002F**\n      * Write cache file\n      *\u002F\n     private function write_cache_file($file_path, $data)\n@@ -590,7 +610,7 @@\n         }\n \n         $json = wp_json_encode($data, JSON_PRETTY_PRINT);\n-        return file_put_contents($file_path, $json) !== false;\n+        return $this->fs_put_contents($file_path, $json) !== false;\n     }\n \n     \u002F**\n@@ -604,7 +624,7 @@\n             'expiry' => $this->cache_expiry\n         ];\n \n-        return file_put_contents($meta_file, wp_json_encode($meta)) !== false;\n+        return $this->fs_put_contents($meta_file, wp_json_encode($meta)) !== false;\n     }\n \n     \u002F**\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fmodules\u002Fdisplay\u002Fmega-menu\u002Finc\u002Fmegamenu-assets.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fmodules\u002Fdisplay\u002Fmega-menu\u002Finc\u002Fmegamenu-assets.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fmodules\u002Fdisplay\u002Fmega-menu\u002Finc\u002Fmegamenu-assets.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fmodules\u002Fdisplay\u002Fmega-menu\u002Finc\u002Fmegamenu-assets.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -14,7 +14,7 @@\n \n         add_action('admin_enqueue_scripts', [$this, 'admin_enqueue_scripts']);\n         add_action('wp_enqueue_scripts', [$this, 'frontend_js']);\n-        add_action('admin_print_scripts', [$this, 'admin_js']);\n+        add_action('admin_enqueue_scripts', [$this, 'admin_js']);\n     }\n \n     public function common_js()\n@@ -90,9 +90,11 @@\n     \u002F\u002F Admin Rest API Variable\n     public function admin_js()\n     {\n-        echo \"\u003Cscript type='text\u002Fjavascript'>\\n\";\n-        echo $this->common_js(); \u002F\u002F phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- common_js returns safe JS script content\n-        echo \"\\n\u003C\u002Fscript>\";\n+        \u002F\u002F Output the REST var through the enqueue API (inline-only handle) instead of a\n+        \u002F\u002F hardcoded \u003Cscript> tag.\n+        wp_register_script('jltma-megamenu-vars', false, array(), JLTMA_VER, false);\n+        wp_enqueue_script('jltma-megamenu-vars');\n+        wp_add_inline_script('jltma-megamenu-vars', $this->common_js());\n     }\n \n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fmodules\u002Futilities\u002Fcustom-css\u002Fcustom-css.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fmodules\u002Futilities\u002Fcustom-css\u002Fcustom-css.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fmodules\u002Futilities\u002Fcustom-css\u002Fcustom-css.php\t2026-03-08 11:32:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fmodules\u002Futilities\u002Fcustom-css\u002Fcustom-css.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -30,6 +30,87 @@\n \n \t\t\u002F\u002F Render the custom CSS\n \t\tadd_action('elementor\u002Felement\u002Fparse_css', array($this, 'jltma_add_post_css'), 10, 2);\n+\n+\t\t\u002F\u002F Security: sanitize Custom CSS on save. The control is registered only for\n+\t\t\u002F\u002F edit_posts users, but Elementor saves can be crafted directly via admin-ajax\n+\t\t\u002F\u002F (elementor_ajax), so the stored value must be cleaned of tag-breakout vectors\n+\t\t\u002F\u002F (e.g. \"\u003C\u002Fstyle>\u003Cscript>\") before it is persisted and later added to the\n+\t\t\u002F\u002F (possibly inline) stylesheet.\n+\t\tadd_filter('elementor\u002Fdocument\u002Fsave\u002Fdata', array($this, 'jltma_sanitize_custom_css_on_save'), 10, 2);\n+\t}\n+\n+\t\u002F**\n+\t * Sanitize the 'custom_css' element settings in the data being saved.\n+\t *\n+\t * @param array $data     Document data ('settings' + 'elements').\n+\t * @param mixed $document  Elementor document instance.\n+\t * @return array\n+\t *\u002F\n+\tpublic function jltma_sanitize_custom_css_on_save($data, $document)\n+\t{\n+\t\tif (isset($data['settings']['custom_css'])) {\n+\t\t\t$data['settings']['custom_css'] = $this->jltma_sanitize_css($data['settings']['custom_css']);\n+\t\t}\n+\n+\t\tif (!empty($data['elements']) && is_array($data['elements'])) {\n+\t\t\t$data['elements'] = $this->jltma_sanitize_element_custom_css($data['elements']);\n+\t\t}\n+\n+\t\treturn $data;\n+\t}\n+\n+\t\u002F**\n+\t * Recursively sanitize the 'custom_css' setting in element data.\n+\t *\n+\t * @param array $elements\n+\t * @return array\n+\t *\u002F\n+\tprivate function jltma_sanitize_element_custom_css($elements)\n+\t{\n+\t\tforeach ($elements as &$element) {\n+\t\t\tif (isset($element['settings']['custom_css'])) {\n+\t\t\t\t$element['settings']['custom_css'] = $this->jltma_sanitize_css($element['settings']['custom_css']);\n+\t\t\t}\n+\t\t\tif (!empty($element['elements']) && is_array($element['elements'])) {\n+\t\t\t\t$element['elements'] = $this->jltma_sanitize_element_custom_css($element['elements']);\n+\t\t\t}\n+\t\t}\n+\t\tunset($element);\n+\n+\t\treturn $elements;\n+\t}\n+\n+\t\u002F**\n+\t * Strip tag-breakout and active vectors from a CSS string. Valid CSS never needs\n+\t * HTML tags, PHP tags, expression(), @import or javascript:\u002Fbehavior: — removing\n+\t * them prevents breaking out of an inline \u003Cstyle> block (XSS) while leaving normal\n+\t * declarations intact.\n+\t *\n+\t * @param string $css\n+\t * @return string\n+\t *\u002F\n+\tprivate function jltma_sanitize_css($css)\n+\t{\n+\t\tif (!is_string($css) || '' === $css) {\n+\t\t\treturn '';\n+\t\t}\n+\n+\t\t$css = str_replace(chr(0), '', $css);\n+\n+\t\t\u002F\u002F PHP tags.\n+\t\t$css = preg_replace('\u002F\u003C\\?php\u002Fi', '', $css);\n+\t\t$css = str_replace(array('\u003C?=', '\u003C?', '?>'), '', $css);\n+\n+\t\t\u002F\u002F Any HTML tag (kills \u003C\u002Fstyle>\u002F\u003Cscript> breakout).\n+\t\t$css = preg_replace('#\u003C\u002F?[a-z!][^>]*>#i', '', $css);\n+\n+\t\t\u002F\u002F Dangerous CSS constructs.\n+\t\t$css = preg_replace('\u002Fexpression\\s*\\(\u002Fi', '', $css);\n+\t\t$css = preg_replace('\u002F(javascript|vbscript)\\s*:\u002Fi', '', $css);\n+\t\t$css = preg_replace('\u002Fbehavior\\s*:\u002Fi', '', $css);\n+\t\t$css = preg_replace('\u002F@import\\b\u002Fi', '', $css);\n+\n+\t\treturn $css;\n \t}\n \n \n@@ -108,6 +189,10 @@\n \n \t\t$css = trim($element_settings['custom_css']);\n \n+\t\t\u002F\u002F Defense in depth: strip tag-breakout\u002Factive vectors before adding the CSS to\n+\t\t\u002F\u002F the (possibly inline) stylesheet — covers values saved before this fix.\n+\t\t$css = $this->jltma_sanitize_css($css);\n+\n \t\tif (empty($css)) {\n \t\t\treturn;\n \t\t}\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fmodules\u002Futilities: custom-js\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fmodules\u002Futilities\u002Freading-progress-bar\u002Freading-progress-bar.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fmodules\u002Futilities\u002Freading-progress-bar\u002Freading-progress-bar.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Finc\u002Fmodules\u002Futilities\u002Freading-progress-bar\u002Freading-progress-bar.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Finc\u002Fmodules\u002Futilities\u002Freading-progress-bar\u002Freading-progress-bar.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -217,7 +217,10 @@\n \t\t\t\t\t$jltma_r_p_b_custom_css .= '.ma-el-page-scroll-indicator{top:inherit !important; bottom:0;}';\n \t\t\t\t}\n \t\t\t}\n-\t\t\techo '\u003Cstyle>' . wp_strip_all_tags( $jltma_r_p_b_custom_css ) . '\u003C\u002Fstyle>'; \u002F\u002F phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- CSS value, tags stripped\n+\t\t\t\u002F\u002F Inline CSS through the enqueue API (late-printed in the footer) instead of a hardcoded \u003Cstyle> tag.\n+\t\t\twp_register_style('jltma-reading-progress-bar', false, array(), JLTMA_VER);\n+\t\t\twp_enqueue_style('jltma-reading-progress-bar');\n+\t\t\twp_add_inline_style('jltma-reading-progress-bar', wp_strip_all_tags($jltma_r_p_b_custom_css));\n \t\t}\n \t}\n \n@@ -243,7 +246,7 @@\n \n \t\t\tif ($page_settings_model->get_settings('jltma_enable_reading_progress_bar') == 'yes') {\n \n-\t\t\t\techo '\u003Cscript>\n+\t\t\t\t$jltma_rpb_js = '\n \t\t\t\t\t(function() {\n \t\t\t\t\t    \"use strict\";\n \t\t\t\t\t\tfunction initProgressBar() {\n@@ -277,7 +280,11 @@\n \t\t\t\t\t\t\tinitProgressBar();\n \t\t\t\t\t\t}\n \t\t\t\t\t})();\n-\t\t\t\t\u003C\u002Fscript>';\n+\t\t\t\t';\n+\t\t\t\t\u002F\u002F Output through the enqueue API (footer) instead of a hardcoded \u003Cscript> tag.\n+\t\t\t\twp_register_script('jltma-reading-progress-bar', false, array(), JLTMA_VER, true);\n+\t\t\t\twp_enqueue_script('jltma-reading-progress-bar');\n+\t\t\t\twp_add_inline_script('jltma-reading-progress-bar', $jltma_rpb_js);\n \t\t\t} \u002F\u002F Enable Progress Bar\n \n \n@@ -309,7 +316,10 @@\n \t\t\t\t$jltma_r_p_b_custom_css .= '.logged-in.admin-bar .ma-el-page-scroll-indicator{top:32px;}';\n \t\t\t}\n \n-\t\t\techo '\u003Cstyle>' . wp_strip_all_tags( $jltma_r_p_b_custom_css ) . '\u003C\u002Fstyle>'; \u002F\u002F phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- CSS value, tags stripped\n+\t\t\t\u002F\u002F Inline CSS through the enqueue API (late-printed in the footer) instead of a hardcoded \u003Cstyle> tag.\n+\t\t\twp_register_style('jltma-reading-progress-bar', false, array(), JLTMA_VER);\n+\t\t\twp_enqueue_style('jltma-reading-progress-bar');\n+\t\t\twp_add_inline_style('jltma-reading-progress-bar', wp_strip_all_tags($jltma_r_p_b_custom_css));\n \t\t}\n \t}\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Flib\u002Fmarkdown.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Flib\u002Fmarkdown.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Flib\u002Fmarkdown.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Flib\u002Fmarkdown.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -46,73 +46,12 @@\n }\n \n \n-if (isset($wp_version)) {\n-\t# More details about how it works here:\n-\t# \u003Chttp:\u002F\u002Fmichelf.ca\u002Fweblog\u002F2005\u002Fwordpress-text-flow-vs-markdown\u002F>\n-\n-\t# Post content and excerpts\n-\t# - Remove WordPress paragraph generator.\n-\t# - Run Markdown on excerpt, then remove all tags.\n-\t# - Add paragraph tag around the excerpt, but remove it for the excerpt rss.\n-\tif (MARKDOWN_WP_POSTS) {\n-\t\tremove_filter('the_content',     'wpautop');\n-        remove_filter('the_content_rss', 'wpautop');\n-\t\tremove_filter('the_excerpt',     'wpautop');\n-\t\tadd_filter('the_content',     'Markdown', 6);\n-        add_filter('the_content_rss', 'Markdown', 6);\n-\t\tadd_filter('get_the_excerpt', 'Markdown', 6);\n-\t\tadd_filter('get_the_excerpt', 'trim', 7);\n-\t\tadd_filter('the_excerpt',     'mdwp_add_p');\n-\t\tadd_filter('the_excerpt_rss', 'mdwp_strip_p');\n-\n-\t\tremove_filter('content_save_pre',  'balanceTags', 50);\n-\t\tremove_filter('excerpt_save_pre',  'balanceTags', 50);\n-\t\tadd_filter('the_content',  \t  'balanceTags', 50);\n-\t\tadd_filter('get_the_excerpt', 'balanceTags', 9);\n-\t}\n-\n-\t# Comments\n-\t# - Remove WordPress paragraph generator.\n-\t# - Remove WordPress auto-link generator.\n-\t# - Scramble important tags before passing them to the kses filter.\n-\t# - Run Markdown on excerpt then remove paragraph tags.\n-\tif (MARKDOWN_WP_COMMENTS) {\n-\t\tremove_filter('comment_text', 'wpautop', 30);\n-\t\tremove_filter('comment_text', 'make_clickable');\n-\t\tadd_filter('pre_comment_content', 'Markdown', 6);\n-\t\tadd_filter('pre_comment_content', 'mdwp_hide_tags', 8);\n-\t\tadd_filter('pre_comment_content', 'mdwp_show_tags', 12);\n-\t\tadd_filter('get_comment_text',    'Markdown', 6);\n-\t\tadd_filter('get_comment_excerpt', 'Markdown', 6);\n-\t\tadd_filter('get_comment_excerpt', 'mdwp_strip_p', 7);\n-\n-\t\tglobal $mdwp_hidden_tags, $mdwp_placeholders;\n-\t\t$mdwp_hidden_tags = explode(' ',\n-\t\t\t'\u003Cp> \u003C\u002Fp> \u003Cpre> \u003C\u002Fpre> \u003Col> \u003C\u002Fol> \u003Cul> \u003C\u002Ful> \u003Cli> \u003C\u002Fli>');\n-\t\t$mdwp_placeholders = explode(' ',\n-\t\t\t'cRw07MooOM H1xdtu4j4c cer2mzrA6X DGv31g9cer by0ZC1wmWE '.\n-\t\t\t'ZY5VwzoEby hyNAv1AfTL W7mEYWdChy yvN8pgy16G X9aubbHUyv');\n-\t}\n-\n-\tfunction mdwp_add_p($text) {\n-\t\tif (!preg_match('{^$|^\u003C(p|ul|ol|dl|pre|blockquote)>}i', $text)) {\n-\t\t\t$text = '\u003Cp>'.$text.'\u003C\u002Fp>';\n-\t\t\t$text = preg_replace('{\\n{2,}}', \"\u003C\u002Fp>\\n\\n\u003Cp>\", $text);\n-\t\t}\n-\t\treturn $text;\n-\t}\n-\n-\tfunction mdwp_strip_p($t) { return preg_replace('{\u003C\u002F?p>}i', '', $t); }\n-\n-\tfunction mdwp_hide_tags($text) {\n-\t\tglobal $mdwp_hidden_tags, $mdwp_placeholders;\n-\t\treturn str_replace($mdwp_hidden_tags, $mdwp_placeholders, $text);\n-\t}\n-\tfunction mdwp_show_tags($text) {\n-\t\tglobal $mdwp_hidden_tags, $mdwp_placeholders;\n-\t\treturn str_replace($mdwp_placeholders, $mdwp_hidden_tags, $text);\n-\t}\n-}\n+# NOTE (Master Addons): The upstream PHP-Markdown WordPress auto-integration block\n+# was removed. It hooked Markdown() onto the_content\u002Fthe_excerpt\u002Fcomment_text for\n+# the whole site, which (a) is not how this plugin uses the parser — we only call\n+# Markdown( $string ) directly to render bundled readme\u002Fchangelog text in admin —\n+# and (b) would output parser-generated HTML through the_content without escaping.\n+# The Markdown() function and parser class above are retained for that direct use.\n \n \n ### bBlog Plugin Info ###\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fmaster-addons.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fmaster-addons.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Fmaster-addons.php\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Fmaster-addons.php\t2026-06-01 13:31:18.000000000 +0000\n@@ -10,7 +10,7 @@\n  * Domain Path: \u002Flanguages\n  * License: GPLv2 or later\n  * License URI: https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\n- * Version: 3.1.0\n+ * Version: 3.1.1\n  * Elementor tested up to: 4.0.4\n  * Elementor Pro tested up to: 4.0.4\n  * Wordfence Vendor Key: qgxtflvqaabgarz4gu9nozmceloswzrg\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Freadme.txt \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Freadme.txt\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0\u002Freadme.txt\t2026-05-19 13:15:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.1\u002Freadme.txt\t2026-06-01 13:31:18.000000000 +0000\n@@ -4,7 +4,7 @@\n Requires at least: 5.0\n Tested up to: 6.9\n Requires PHP: 7.0\n-Stable tag: 3.1.0\n+Stable tag: 3.1.1\n License: GPLv2\n License URI: https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\n \n@@ -385,6 +385,16 @@\n \n \n == Changelog ==\n+= Master Elementor Addons 3.1.1 (23-05-2026) =\n+* Security: Widget Builder no longer accepts or executes arbitrary PHP. PHP tags are stripped from all widget HTML\u002FCSS\u002FJS on save and during generation, so generated widget files contain only plugin-authored code. Dynamic values use {{placeholders}} that are escaped on output.\n+* Security: Removed the Widget Builder preview path that wrote user code to a temporary PHP file and included it. Previews now render statically with escaped mock values — no user PHP or JavaScript is executed.\n+* Security: Fixed an authenticated (author+) Stored XSS via the 'jtlma_custom_js' page setting \u002F 'custom_js' element setting of the Custom JS extension (reported in versions up to 3.1.0). The extension is removed from the free plugin entirely (no render path remains); in Master Addons Pro the unfiltered_html capability is now enforced on save (the value is stripped for unprivileged users via the elementor\u002Fdocument\u002Fsave filter) and at render (output gated by the post author's capability), not only during control registration.\n+* Security: Hardened the Custom CSS extension against tag-breakout XSS. The 'custom_css' element setting is now sanitized on save (via the elementor\u002Fdocument\u002Fsave filter) and again on render before it is added to the stylesheet, stripping HTML\u002FPHP tags (e.g. a \"\u003C\u002Fstyle>\u003Cscript>\" breakout), expression(), @import and javascript:\u002Fbehavior: — closing the same direct-AJAX save bypass.\n+* Security: Added a nonce check to the Content Restriction AJAX handler and a capability check to the popup shortcode and template plugin-status AJAX handlers.\n+* Security: Sanitized the Select2 REST nonce flow (fail-closed) and tightened its capability to edit_posts; sanitized the template-data request and template-kit theme-activation nonce.\n+* Security: The bundled Markdown library no longer hooks the_content\u002Fcomment filters globally; the jltma_template shortcode now escapes its returned markup.\n+* Maintenance: Updated @popperjs\u002Fcore from 2.9.3 to 2.11.8. Removed the legacy option-based Widget Builder. Existing custom widgets are migrated automatically (data scrubbed and files regenerated; no widgets are deleted).\n+\n = Master Elementor Addons 3.1.0 (19-05-2026) =\n * Compliance: Documented every external service the plugin contacts (Master Addons template API, Pixar Labs API, Google reCAPTCHA, Twitter\u002FX, WhatsApp, Freemius) with terms and privacy links.\n * Compliance: Removed the Template Kit \"fix compatibility\" routine that rewrote the active_plugins option.\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0: tsconfig.json\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0: tsconfig.node.json\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0: vite.config.assets.js\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fmaster-addons\u002F3.1.0: vite.config.js\n","An attacker with at least Author-level permissions can exploit this vulnerability by bypassing the Elementor Editor UI and interacting directly with the AJAX API. First, the attacker creates or edits a post and extracts a valid Elementor AJAX nonce from the editor environment (typically found in 'window.elementorCommonConfig.ajax.nonce'). They then send a POST request to '\u002Fwp-admin\u002Fadmin-ajax.php?action=elementor_ajax' containing a 'save_page_settings' action payload. This payload includes the 'jtlma_custom_js' parameter set to a malicious JavaScript string. Since the plugin does not verify the user's 'unfiltered_html' capability during the save process, the script is persisted in post metadata and will execute whenever a user views the affected page.","gemini-3-flash-preview","2026-06-26 03:35:34","2026-06-26 03:36:36",{"type":41,"vulnerable_version":42,"fixed_version":11,"vulnerable_browse":43,"vulnerable_zip":44,"fixed_browse":45,"fixed_zip":46,"all_tags":47},"plugin","3.1.0","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fmaster-addons\u002Ftags\u002F3.1.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmaster-addons.3.1.0.zip","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fmaster-addons\u002Ftags\u002F3.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmaster-addons.3.1.1.zip","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fmaster-addons\u002Ftags"]