1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Technologies - Fir Audio</title> 5 <link rel="stylesheet" href="/static/css/bootstrap.min.css"> 6 7 <link rel="stylesheet" type="text/css" href="/static/css/master.css?v=24"> 8 9 10 <link rel="preconnect" href="https://fonts.gstatic.com"> 11 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 12 <!-- <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet"> --> 13 14 <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap" rel="stylesheet"> 15 <link href="https://fonts.googleapis.com/css2?family=Kanit:wght@200;300;600&display=swap" rel="stylesheet"> 16 17 18 <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 19 <meta name="description" content="We make high-end In-Ear Monitors and accessories for Custom IEMs and Universal-Fit earphones."> 20 <meta property="og:title" content="Technologies - Fir Audio" /> 21 <meta property="og:image" content="http://www.firaudio.com/static/img/fir_logo_round.png" /> 22 23 <link rel="shortcut icon" href="/static/favicon.ico"> 24 25 26 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 72 bytes, lines 26-27
26 27 <script async src="https://www.googletagmanager.com/gtag/js?id=
27UA-120415184-1
vendor: 20 bytes, lines 27-28
27"></script> 28
28<script> 29
vendor: 164 bytes, lines 29-33
29window.dataLayer = window.dataLayer || []; 30 function gtag(){dataLayer.push(arguments);} 31 gtag('js', new Date()); 32 33 gtag('config', '
33UA-120415184-1
vendor: 12 bytes, lines 33-34
33'); 34
34</script>
34 35 36
36<script> 37 var S3_IMG_UPLOAD_BASE = "https://fir-web-assets.s3.us-east-2.amazonaws.com/prod/img/"; 38 </script>
38 39 </head> 40 <body> 41
41<script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","url":"https://www.firaudio.com","logo":"https://www.firaudio.com/static/img/fir_logo__500x.png"}</script>
41 42
42<script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","url":"https://www.firaudio.com","logo":"https://www.firaudio.com/static/img/fir_logo__500x.png","contactPoint":[{"@type":"ContactPoint","telephone":"+1-503-558-2091","contactType":"customer service","availableLanguage":["English","Russian","Ukrainian"]}]}</script>
42 43
43<script> 44 45 var bs = []; 46 window.bs = bs; 47 window.bs_products = bs.products || []; 48 49 50 var cic = 0; 51 52 // Global fallbacks for React components 53 if (typeof window.bs_cart_items === 'undefined') { 54 window.bs_cart_items = []; 55 } 56 if (typeof window.bs_cart_details === 'undefined') { 57 window.bs_cart_details = null; 58 } 59 </script>
59 60 61 62<header class="new2"> 63 <div class="header-left"> 64 <a href="/" class="logo"> 65 <div class="logo"> 66 <img class="img-fluid logo" src="/static/img/fir_logo_rect_white.png" /> 67 </div> 68 </a> 69 </div> 70 <nav class="header-nav"> 71 72 <a href="/store/in-ear-monitors" class="" id=""> 73 74 <span>In-Ear Monitors</span> 75 </a> 76 77 <a href="/technologies" class="active" id=""> 78 79 <span>Technologies</span> 80 </a> 81 82 <a href="/store/" class="" id=""> 83 84 <span>Accessories</span> 85 </a> 86 87 <a href="/designer" class="" id=""> 88 89 <span>IEM Designer</span> 90 </a> 91 92 <a href="/k" class="" id=""> 93 94 <span>Project K</span> 95 </a> 96 97 <a href="/artists" class="" id=""> 98 99 <span>Artists</span> 100 </a> 101 102 <a href="/about" class="" id=""> 103 104 <span>About</span> 105 </a> 106 107 <a href="/support" class="" id=""> 108 109 <span>Support</span> 110 </a> 111 112 <a href="/dealers" class="img" id=""> 113 114 <img src="/static/img/world-wide-web.png" /> 115 116 <span>Dealers</span> 117 </a> 118 119 <a href="/checkout" class="img" id="cart-link"> 120 121 <img src="/static/img/shopping-cart.png" /> 122 123 <span>Shopping Cart</span> 124 </a> 125 126 </nav> 127 <div class="hamburger"> 128 <img class="img-fluid" src="/static/img/icons/glyphicons-517-menu-hamburger.png"> 129 </div> 130 <div class="shade"></div> 131</header> 132<div id="main"> 133 134 135<div style="background-color:white;"> 136 <div id="content-pages-v2"></div> 137</div> 138 139</div> 140<div class="clearfix"></div> 141<footer class=""> 142 <div class="footer-container"> 143 <div class="header-contact container"> 144 <div class="logo small mb-4"> 145 <img class="img-fluid logo" src="/static/img/fir_logo_rect_white.png" /> 146 </div> 147 148 <div class="row"> 149 <!-- Left Column --> 150 <div class="col-lg-6"> 151 <!-- Western Hemisphere Contact --> 152 <p> 153 <b>Western Hemisphere (GMT-8) 9:00am - 5:00pm</b><br> 154 Phone: 1-503-558-5960<br> 155 Live chat support through iMessage: <a href="sms:[email protected]">[email protected]</a> (ENG)<br> 156 Email: <a href="mailto:[email protected]">[email protected]</a> 157 </p> 158 159 <!-- Eastern Hemisphere Contact --> 160 <p> 161 <b>Eastern Hemisphere (GMT+8) 9:00 - 17:00</b><br> 162 Phone: (WhatsApp / WeChat) +1-360-761-2147<br> 163 Live chat support through iMessage: <a href="sms:[email protected]">[email protected]</a> (ENG/CN)<br> 164 Email: <a href="mailto:[email protected]">[email protected]</a> 165 </p> 166 167 <!-- Resource Links --> 168 <p> 169 <b>Shipping Address Resource</b><br> 170 (Demo Product) Schedule an Appointment<br> 171 (Impressions) Name on Impressions and Contact Required<br> 172 (RMA) Required for Repair Shipments 173 </p> 174 </div> 175 176 <!-- Right Column --> 177 <div class="col-lg-6"> 178 <!-- US Locations --> 179 <p> 180 <b>Portland Metro</b><br> 181 1119 NE 95th St. Ste D<br> 182 Vancouver, WA 98665<br> 183 U.S.A. 184 </p> 185 186 <p> 187 <b>Nashville</b><br> 188 3 S 9th St<br> 189 Suite 201<br> 190 Nashville TN, 37206<br> 191 U.S.A.<br> 192 <br>Phone: +1 615-266-4088<br> 193 <br>email: <a href="mailto:[email protected]">[email protected]</a><br> 194 <i style="font-size:12px;">(By Appointment Only)</i> 195 </p> 196 197 <p> 198 <b>Los Angeles</b><br> 199 300 N. 3rd St STE 112<br> 200 Burbank, CA 91502<br> 201 U.S.A.<br> 202 <i style="font-size:12px;">(By Appointment Only)</i> 203 </p> 204 205 <!-- China Location --> 206 <p> 207 <b>Dongguan, China</b><br> 208 Dongguan FIR Audio Electronics Co., Ltd.<br> 209 Room 1101, Building 4, ZhuoDi industrial park, No.15<br> 210 Hongjin Road, Hongmei Town<br> 211 Dongguan City<br> 212 Guangdong Province<br> 213 China 523160<br> 214 <i style="font-size:12px;">(By Appointment Only)</i><br> 215 <i style="font-size:12px;">Shipping Contact: Reach our Support team for Name, Email and Phone</i> 216 </p> 217 </div> 218 </div> 219 220 <div class="row mt-3"> 221 <div class="col-12 text-center"> 222 <p>© 2025 Fir Audio</p> 223 </div> 224 </div> 225 </div> 226 </div> 227</footer> 228
229<script> 230// Hamburger menu functionality for main FiR Audio site 231document.addEventListener('DOMContentLoaded', function() { 232 // Skip hamburger menu setup on React designer pages to avoid conflicts 233 if (document.getElementById('hexy') || document.getElementById('designer')) { 234 return; 235 } 236 237 const hamburger = document.querySelector('div.hamburger'); 238 const nav = document.querySelector('nav.header-nav'); 239 const shade = document.querySelector('div.shade'); 240 241 if (!hamburger || !hamburger || !nav || !shade) { 242 return; 243 } 244 245 // Clean up jQuery handlers only if jQuery is available 246 function cleanupJQueryHandlers() { 247 if (window.$ && window.jQuery) { 248 try { 249 // Only clear hamburger-specific events, not all events 250 window.$('div.hamburger').off('click.hamburger'); 251 window.$('div.shade').off('click.hamburger'); 252 window.$('nav.header-nav a').off('click.hamburger'); 253 } catch (e) { 254 // jQuery cleanup failed, continue anyway 255 } 256 } 257 } 258 259 // Defer jQuery cleanup until after React bundle loads 260 setTimeout(cleanupJQueryHandlers, 100); 261 262 // Remove any existing vanilla JS event listeners 263 const existingHandlers = ['firHamburgerClickHandler', 'firShadeClickHandler', 'firEscapeKeyHandler']; 264 existingHandlers.forEach(handler => { 265 if (window[handler]) { 266 hamburger.removeEventListener('click', window[handler]); 267 shade.removeEventListener('click', window[handler]); 268 document.removeEventListener('keydown', window[handler]); 269 } 270 }); 271 272 // Define new handlers with unique names to avoid conflicts with AudioRiF 273 window.firHamburgerClickHandler = function(e) { 274 e.preventDefault(); 275 e.stopPropagation(); 276 277 // Check if menu is currently visible 278 const computedStyle = window.getComputedStyle(nav); 279 const isVisible = computedStyle.display === 'flex'; 280 281 if (isVisible) { 282 // Close menu 283 nav.style.display = 'none'; 284 shade.style.display = 'none'; 285 document.body.style.overflow = ''; // Restore scrolling 286 } else { 287 // Open menu 288 nav.style.display = 'flex'; 289 shade.style.display = 'block'; 290 document.body.style.overflow = 'hidden'; // Prevent background scrolling 291 } 292 }; 293 294 window.firShadeClickHandler = function(e) { 295 nav.style.display = 'none'; 296 shade.style.display = 'none'; 297 document.body.style.overflow = ''; 298 console.log('FiR main site menu closed via shade click'); 299 }; 300 301 window.firEscapeKeyHandler = function(e) { 302 if (e.key === 'Escape') { 303 nav.style.display = 'none'; 304 shade.style.display = 'none'; 305 document.body.style.overflow = ''; 306 console.log('FiR main site menu closed via escape key'); 307 } 308 }; 309 310 // Add event listeners with high priority 311 hamburger.addEventListener('click', window.firHamburgerClickHandler, true); 312 shade.addEventListener('click', window.firShadeClickHandler, true); 313 document.addEventListener('keydown', window.firEscapeKeyHandler, true); 314 315 // Close menu when clicking navigation links (mobile) 316 const navLinks = document.querySelectorAll('nav.header-nav a'); 317 navLinks.forEach(link => { 318 link.addEventListener('click', function() { 319 if (window.innerWidth <= 599) { 320 nav.style.display = 'none'; 321 shade.style.display = 'none'; 322 document.body.style.overflow = ''; 323 console.log('FiR main site menu closed via nav link click'); 324 } 325 }, true); 326 }); 327}); 328</script>
328 329 330 331 332
332<script src="/static/bundle.js?v=225"></script>
332 333
333<script src="/static/v2-bundle.js?v=42"></script>
333 334 335 336 <style> 337 .ReactModal__Overlay { 338 z-index:1000; 339 } 340 .ReactModal__Content { 341 max-height:80%; 342 } 343 </style> 344 </body> 345</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.