1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4
4<script> 5 (function () { 6 var proto = XMLHttpRequest.prototype; 7 var open = proto.open, setRequestHeader = proto.setRequestHeader, send = proto.send; 8 var TOKEN_KEY = 'base44_access_token'; 9 var storedTokenHeader = function () { 10 try { return 'Bearer ' + localStorage.getItem(TOKEN_KEY); } catch (e) { return null; } 11 }; 12 var forgetStoredToken = function () { 13 try { localStorage.removeItem(TOKEN_KEY); localStorage.removeItem('token'); } catch (e) {} 14 }; 15 16 proto.open = function (method, url) { 17 this.__b44IsAuthCheck = /\/entities\/User\/me(\?|$)/.test(url); 18 return open.apply(this, arguments); 19 }; 20 21 proto.setRequestHeader = function (name, value) { 22 if (this.__b44IsAuthCheck && name.toLowerCase() === 'authorization' && value === storedTokenHeader()) { 23 this.__b44SentToken = value; 24 } 25 return setRequestHeader.call(this, name, value); 26 }; 27 28 proto.send = function () { 29 this.addEventListener('loadend', function () { 30 var rejectedTokenStillStored = this.status === 401 && this.__b44SentToken === storedTokenHeader(); 31 if (rejectedTokenStillStored) forgetStoredToken(); 32 }); 33 return send.apply(this, arguments); 34 }; 35})(); 36 </script>
36 37 <meta charset="utf-8"/> 38 <link href="https://media.base44.com/images/public/6a60bfa46861e1ef54be65a6/2fcc903f3_MUNIOfavicon2022-16x16pixels-1200dpi.png" rel="icon" sizes="16x16" type="image/png"/> 39 <link href="https://media.base44.com/images/public/6a60bfa46861e1ef54be65a6/2fcc903f3_MUNIOfavicon2022-16x16pixels-1200dpi.png" rel="icon" sizes="32x32" type="image/png"/> 40 <link href="https://media.base44.com/images/public/6a60bfa46861e1ef54be65a6/2fcc903f3_MUNIOfavicon2022-16x16pixels-1200dpi.png" rel="apple-touch-icon"/> 41 <meta content="#1a1a1a" name="theme-color"/> 42 <meta content="width=device-width, initial-scale=1.0" name="viewport"/> 43 <link href="/manifest.json" rel="manifest"/> 44 <meta content="Search on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products." name="description"/> 45 <meta content="Search | MUNIO Self Defense website" property="og:title"/> 46 <meta content="Search on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products." property="og:description"/> 47 <meta content="https://media.base44.com/images/public/marketing-site-assets/branded/favicon-branded-v2.png/v1/fill/w_1200,h_630/favicon-branded-v2.png" property="og:image"/> 48 <title> 49 Search | MUNIO Self Defense website 50 </title> 51 <link href="https://fonts.googleapis.com" rel="preconnect"/> 52 <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/> 53 <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,300;1,9..40,400&family=DM+Serif+Display:ital@0;1&display=swap" rel="stylesheet"/> 54
54<script crossorigin="" src="/assets/index-mbye_aiI.js" type="module"> 55 </script>
55 56 <link crossorigin="" href="/assets/index-CIVzTxGN.css" rel="stylesheet"/> 57
57<script type="module"> 58 if (window.self === window.top) { 59 let lastPath = ""; 60 function getPageNameFromPath(path) { 61 const segments = path.split("/").filter(Boolean); 62 return segments[0] || null; 63 } 64 function trackPageView() { 65 const path = window.location.pathname; 66 if (path === lastPath) return; 67 lastPath = path; 68 const pageName = getPageNameFromPath(path) || "home"; 69 const appId = "6a60bfa46861e1ef54be65a6"; 70 if (!appId) return; 71 fetch(`/api/app-logs/${appId}/log-user-in-app/${pageName}`, { 72 method: "POST", 73 }).catch(() => {}); 74 } 75 const originalPushState = history.pushState.bind(history); 76 history.pushState = function (...args) { 77 originalPushState(...args); 78 trackPageView(); 79 }; 80 const originalReplaceState = history.replaceState.bind(history); 81 history.replaceState = function (...args) { 82 originalReplaceState(...args); 83 trackPageView(); 84 }; 85 window.addEventListener("popstate", trackPageView); 86 trackPageView(); 87} 88 </script>
88 89 <meta content="https://munio-self-defense-website.base44.app/search" property="og:url"/> 90 <meta content="website" property="og:type"/> 91 <meta content="MUNIO Self Defense website" property="og:site_name"/> 92 <meta content="Search | MUNIO Self Defense website" name="twitter:title"/> 93 <meta content="Search on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products." name="twitter:description"/> 94 <meta content="https://media.base44.com/images/public/marketing-site-assets/branded/favicon-branded-v2.png/v1/fill/w_1200,h_630/favicon-branded-v2.png" name="twitter:image"/> 95 <meta content="summary_large_image" name="twitter:card"/> 96 <meta content="https://munio-self-defense-website.base44.app/search" name="twitter:url"/> 97
97<script> 98 (function () { 99 var titles = {"/": "MUNIO Self Defense website", "/shop": "Shop | MUNIO Self Defense website", "/about-munio": "About Munio | MUNIO Self Defense website", "/wholesale": "Wholesale | MUNIO Self Defense website", "/wholesale-confirmation": "Wholesale Confirmation | MUNIO Self Defense website", "/blog": "Blog | MUNIO Self Defense website", "/free-resources": "Free Resources | MUNIO Self Defense website", "/free-ebook": "Free Ebook | MUNIO Self Defense website", "/cart": "Cart | MUNIO Self Defense website", "/checkout": "Checkout | MUNIO Self Defense website", "/privacy-policy": "Static Page | MUNIO Self Defense website", "/terms-conditions": "Static Page | MUNIO Self Defense website", "/refund-policy": "Static Page | MUNIO Self Defense website", "/disclaimer": "Static Page | MUNIO Self Defense website", "/lifetime-warranty": "Static Page | MUNIO Self Defense website", "/legal-statement": "Static Page | MUNIO Self Defense website", "/cpsia-information": "Static Page | MUNIO Self Defense website", "/comparison-chart": "Comparison Chart | MUNIO Self Defense website", "/search": "Search | MUNIO Self Defense website", "/faq": "FAQ | MUNIO Self Defense website", "/complete-order": "Complete Order | MUNIO Self Defense website", "/login": "Login | MUNIO Self Defense website", "/register": "Register | MUNIO Self Defense website", "/forgot-password": "Forgot Password | MUNIO Self Defense website", "/reset-password": "Reset Password | MUNIO Self Defense website", "/admin": "Admin / Admin Dashboard | MUNIO Self Defense website", "/admin/orders": "Admin / Admin Orders | MUNIO Self Defense website", "/admin/resellers": "Admin / Admin Resellers | MUNIO Self Defense website", "/admin/inventory": "Admin / Admin Inventory | MUNIO Self Defense website", "/admin/discount-codes": "Admin / Admin Discount Codes | MUNIO Self Defense website", "/admin/email-preview": "Admin / Email Preview | MUNIO Self Defense website", "/admin/layout-lab": "Admin / Layout Lab | MUNIO Self Defense website", "/home": "MUNIO Self Defense website"}; 100 // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind 101 // (old Safari fails to PARSE a lookbehind, taking the whole script down). 102 var dashed = function (s) { 103 return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2"); 104 }; 105 var decode = function (s) { 106 // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a 107 // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title. 108 try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; } 109 }; 110 var segments = function (path) { return path.split("/").filter(Boolean).map(decode); }; 111 var norm = function (path) { 112 var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); }); 113 return parts.length ? "/" + parts.join("/") : "/"; 114 }; 115 var lastPath = location.pathname, written = document.title, on = true; 116 var sync = function () { 117 // Path only: a hash/query change is the same page, and the SDK strips its own auth 118 // params with replaceState -- neither must clobber a server-rendered title in place. 119 if (!on || location.pathname === lastPath) return; 120 lastPath = location.pathname; 121 if (document.title !== written) { on = false; return; } 122 // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the 123 // map cannot carry, and writing a placeholder there is destructive, not merely vague: the 124 // prerender worker runs no setUserAgent, so its capture browser reads as human and executes 125 // this script, and coordinator.js's settle wait explicitly tolerates a full navigation -- 126 // a redirect landing on an unmapped path would bake the placeholder into the stored 127 // snapshot. Leaving the title alone degrades to today's behavior instead. 128 // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up 129 // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the 130 // dashes there, and the client cannot tell the two apart. The map emits every reach
130able 131 // shape per segment instead (_client_url_variants). 132 var title = titles[norm(location.pathname)]; 133 if (title === undefined) return; 134 document.title = title; 135 // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so 136 // keeping the assigned string would make the next sync() read our own write as the app's. 137 written = document.title; 138 }; 139 var wrap = function (fn) { 140 // The history entry is already pushed by the time sync() runs, so a throw here would 141 // surface inside the host app's router and break navigation. This is injected into apps 142 // we cannot test, so it swallows rather than trusting the trace. 143 return function () { 144 var r = fn.apply(this, arguments); 145 try { sync(); } catch (e) {} 146 return r; 147 }; 148 }; 149 history.pushState = wrap(history.pushState); 150 history.replaceState = wrap(history.replaceState); 151 window.addEventListener("popstate", sync); 152})(); 153 </script>
153 154 <meta content="yes" name="mobile-web-app-capable"/> 155 <meta content="black" name="apple-mobile-web-app-status-bar-style"/> 156 <meta content="MUNIO Self Defense website" name="apple-mobile-web-app-title"/> 157 <link href="https://munio-self-defense-website.base44.app/search" rel="canonical"/> 158
158<script data-seo-source="builder" type="application/ld+json"> 159 {"name": "MUNIO Self Defense website", "@context": "https://schema.org", "@type": "WebSite", "url": "https://munioselfdefense.com"} 160 </script>
160 161
161<script data-seo-source="builder" type="application/ld+json"> 162 {"name": "MUNIO Self Defense website", "@context": "https://schema.org", "@type": "Organization", "url": "https://munioselfdefense.com"} 163 </script>
163 164
164<script data-seo-source="builder" type="application/ld+json"> 165 {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://munio-self-defense-website.base44.app/"}, {"@type": "ListItem", "position": 2, "name": "Search | MUNIO Self Defense website", "item": "https://munio-self-defense-website.base44.app/search"}]} 166 </script>
166 167 <meta content="noindex, follow" name="robots"/> 168 </head> 169 <body> 170 <div id="root"> 171 <div data-seo-source="builder" id="seo-snapshot" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"> 172 <main> 173 <header> 174 <h1> 175 Search | MUNIO Self Defense website 176 </h1> 177 <p> 178 Search on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 179 </p> 180 </header> 181 <nav aria-label="Pages"> 182 <h2> 183 Pages 184 </h2> 185 <ul> 186 <li> 187 <a href="/"> 188 Home 189 </a> 190 </li> 191 <li> 192 <a href="/shop"> 193 Shop 194 </a> 195 â Shop on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 196 </li> 197 <li> 198 <a href="/about-munio"> 199 About Munio 200 </a> 201 â About Munio on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 202 </li> 203 <li> 204 <a href="/wholesale"> 205 Wholesale 206 </a> 207 â Wholesale on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 208 </li> 209 <li> 210 <a href="/wholesale-confirmation"> 211 Wholesale Confirmation 212 </a> 213 â Wholesale Confirmation on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 214 </li> 215 <li> 216 <a href="/blog"> 217 Blog 218 </a> 219 â Blog on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 220 </li> 221 <li> 222 <a href="/free-resources"> 223 Free Resources 224 </a> 225 â Free Resources on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 226 </li> 227 <li> 228 <a href="/free-ebook"> 229 Free Ebook 230 </a> 231 â Free Ebook on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 232 </li> 233 <li> 234 <a href="/cart"> 235 Cart 236 </a> 237 â Cart on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 238 </li> 239 <li> 240 <a href="/checkout"> 241 Checkout 242 </a> 243 â Checkout on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 244 </li> 245 <li> 246 <a href="/privacy-policy"> 247 Static Page 248 </a> 249 â Static Page on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 250 </li> 251 <li> 252 <a href="/comparison-chart"> 253 Comparison Chart 254 </a> 255 â Comparison Chart on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 256 </li> 257 <li> 258 <a href="/search"> 259 Search 260 </a> 261 â Search on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 262 </li> 263 <li> 264 <a href="/faq"> 265 FAQ 266 </a> 267 â FAQ on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 268 </li> 269 <li> 270 <a href="/complete-order"> 271 Complete Order 272 </a> 273 â Complete Order on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 274 </li> 275 <li> 276 <a href="/login"> 277 Login 278 </a> 279 â Login on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 280 </li> 281 <li> 282 <a href="/register"> 283 Register 284 </a> 285 â Register on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 286 </li> 287 <li> 288 <a href="/forgot-password"> 289 Forgot Password 290 </a> 291 â Forgot Password on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 292 </li> 293 <li> 294 <a href="/reset-password"> 295 Reset Password 296 </a> 297 â Reset Password on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 298 </li> 299 <li> 300 <a href="/admin"> 301 Admin Dashboard 302 </a> 303 â Admin / Admin Dashboard on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 304 </li> 305 <li> 306 <a href="/admin/orders"> 307 Admin Orders 308 </a> 309 â Admin / Admin Orders on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 310 </li> 311 <li> 312 <a href="/admin/resellers"> 313 Admin Resellers 314 </a> 315 â Admin / Admin Resellers on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 316 </li> 317 <li> 318 <a href="/admin/inventory"> 319 Admin Inventory 320 </a> 321 â Admin / Admin Inventory on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 322 </li> 323 <li> 324 <a href="/admin/discount-codes"> 325 Admin Discount Codes 326 </a> 327 â Admin / Admin Discount Codes on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 328 </li> 329 <li> 330 <a href="/admin/email-preview"> 331 Email Preview 332 </a> 333 â Admin / Email Preview on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 334 </li> 335 <li> 336 <a href="/admin/layout-lab"> 337 Layout Lab 338 </a> 339 â Admin / Layout Lab on MUNIO Self Defense website. MUNIO Self Defense website brings together 30 pages for self defense products. 340 </li> 341 </ul> 342 </nav> 343 </main> 344 </div> 345 </div> 346 </body> 347</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.