1<!DOCTYPE html> 2<html 3 lang="en" 4 class="light-style customizer-hide" 5 dir="ltr" 6 data-theme="theme-default" 7 data-assets-path="../../assets/" 8 data-template="vertical-menu-template"> 9 10 <head> 11 <meta charset="utf-8" /> 12 <meta 13 name="viewport" 14 content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> 15 16 <title>Login | Gym Zones</title> 17 18 <meta name="description" content="" /> 19 20 <!-- Favicon --> 21 <link rel="icon" type="image/x-icon" href="https://gym-zones.com/assets/img/favicon/favicon.ico" /> 22 23 <!-- Fonts --> 24 <link rel="preconnect" href="https://fonts.googleapis.com" /> 25 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 26 <link 27 href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap" 28 rel="stylesheet" /> 29 30 <!-- Icons --> 31 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/fonts/fontawesome.css" /> 32 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/fonts/tabler-icons.css" /> 33 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/fonts/flag-icons.css" /> 34 35 <!-- Core CSS --> 36 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/css/rtl/core.css" class="template-customizer-core-css" /> 37 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/css/rtl/theme-default.css" class="template-customizer-theme-css" /> 38 <link rel="stylesheet" href="https://gym-zones.com/assets/css/demo.css" /> 39 40 <!-- Vendors CSS --> 41 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.css" /> 42 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/node-waves/node-waves.css" /> 43 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/typeahead-js/typeahead.css" /> 44 <!-- Vendor --> 45 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/css/formValidation.min.css" /> 46 47 <!-- Page CSS --> 48 <!-- Page --> 49 <link rel="stylesheet" href="https://gym-zones.com/assets/vendor/css/pages/page-auth.css" /> 50 <!-- Helpers --> 51 52 <!--! Template customizer & Theme config files MUST be included after core stylesheets and helpers.js in the <head> section --> 53 <!--? Template customizer: To hide customizer set displayCustomizer value false in config.js. --> 54
54<script src="https://gym-zones.com/assets/vendor/js/template-customizer.js"></script>
54 55 <!--? Config: Mandatory theme config file contain global vars & default theme options, Set your preferred theme option in this file. --> 56
56<script src="https://gym-zones.com/assets/js/config.js"></script>
56 57 </head> 58 59 <body> 60 61<style> 62 .light-style .authentication-wrapper.authentication-bg { 63 background-color:rgb(255, 255, 255); 64 overflow-y: auto; 65 min-height: 100vh; 66 } 67 68 h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1, p, .form-label { 69 color: #ffffff; 70 } 71 72 .light-style .auth-cover-bg-color { 73 background-color:rgb(255, 255, 255); 74 } 75 76 .authentication-wrapper.authentication-cover .authentication-inner .auth-cover-bg .auth-illustration { 77 max-height: 100%; 78 } 79 80 /* Custom styles for the new design */ 81 .login-form-container { 82 background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%); 83 border-radius: 20px; 84 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); 85 padding: 2rem; 86 max-height: 90vh; 87 overflow-y: auto; 88 position: relative; 89 /* Mobile responsive adjustments */ 90 margin: 1rem; 91 } 92 93 /* Mobile specific styles */ 94 @media (max-width: 768px) { 95 .login-form-container { 96 max-height: 95vh; 97 margin: 0.5rem; 98 padding: 1.5rem; 99 border-radius: 15px; 100 } 101 102 .authentication-wrapper.authentication-bg { 103 padding: 0.5rem; 104 } 105 106 .authentication-inner { 107 margin: 0; 108 } 109 110 /* Ensure proper scrolling on mobile */ 111 .d-flex.col-12.col-lg-5 { 112 padding: 0.5rem !important; 113 min-height: 100vh; 114 align-items: flex-start !important; 115 padding-top: 2rem !important; 116 } 117 } 118 119 /* Extra small devices */ 120 @media (max-width: 576px) { 121 .login-form-container { 122 margin: 0.25rem; 123 padding: 1rem; 124 max-height: 98vh; 125 } 126 127 .top-right-decoration { 128 width: 120px; 129 height: 120px; 130 top: -20px; 131 right: -20px; 132 } 133 134 .logo-container img { 135 width: 60px !important; 136 height: 60px !important; 137 } 138 139 /* Improve form spacing on very small screens */ 140 .form-control { 141 padding: 10px 14px; 142 font-size: 14px; 143 } 144 145 .btn-primary { 146 padding: 10px 20px; 147 font-size: 14px; 148 } 149 } 150 151 /* Smooth scrolling for better mobile experience */ 152 .login-form-container { 153 -webkit-overflow-scrolling: touch; 154 scroll-behavior: smooth; 155 } 156 157 /* Ensure modal is also scrollable on mobile */ 158 @media (max-width: 768px) { 159 .forgot-password-modal { 160 margin: 0.5rem; 161 max-height: 90vh; 162 overflow-y: auto; 163 } 164 165 .modal-dialog { 166 margin: 0.5rem; 167 } 168 } 169 170 .form-control { 171 border: 2px solid #e9ecef; 172 border-radius: 12px; 173 padding: 12px 16px; 174 font-size: 16px; 175 transition: all 0.3s ease; 176 } 177 178 .form-control:focus { 179 border-color: #6f42c1; 180 box-shadow: 0 0 0 0.2rem rgba(111, 66, 193, 0.25); 181 } 182 183 .btn-primary { 184 background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%); 185 border: none; 186 border-radius: 12px; 187 padding: 12px 24px; 188 font-weight: 600; 189 transition: all 0.3s ease; 190 } 191 192 .btn-primary:hover { 193 transform: translateY(-2px); 194 box-shadow: 0 8px 25px rgba(111, 66, 193, 0.3); 195 } 196 197 .logo-container img { 198 filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.1)); 199 } 200 201 /* Top right decorative image */ 202 .top-right-decoration { 203 position: absolute; 204 top: -30px; 205 right: -40px; 206 width: 180px; 207 height: 180px; 208 z-index: 1; 209 opacity: 0.9; 210 filter: drop-shadow(0 8px 20px rgba(111, 66, 193, 0.4)); 211 } 212 213 .top-right-decoration img { 214 width: 100%; 215 height: 100%; 216 object-fit: contain; 217 filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.3)); 218 } 219 220 /* Forgot Password Modal Styles */ 221 .forgot-password-modal { 222 background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%); 223 border-radius: 20px; 224 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); 225 } 226 227 .forgot-password-modal .modal-header { 228 border-bottom: none; 229 padding-bottom: 0; 230 } 231 232 .forgot-password-modal .modal-body { 233 padding-top: 0; 234 } 235 236 .forgot-password-modal .form-control { 237 border: 2px solid #e9ecef; 238 border-radius: 12px; 239 padding: 12px 16px; 240 font-size: 16px; 241 } 242 243 .forgot-password-modal .btn-primary { 244 background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%); 245 border: none; 246 border-radius: 12px; 247 padding: 12px 24px; 248 font-weight: 600; 249 } 250 251 /* Toast Notification Styles */ 252 .toast-notification { 253 position: fixed; 254 top: 20px; 255 right: 20px; 256 z-index: 9999; 257 min-width: 300px; 258 background: white; 259 border-radius: 12px; 260 box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); 261 border-left: 4px solid #6f42c1; 262 transform: translateX(400px); 263 transition: transform 0.3s ease; 264 } 265 266 .toast-notification.show { 267 transform: translateX(0); 268 } 269 270 .toast-header { 271 padding: 15px 20px 10px; 272 border-bottom: 1px solid #e9ecef; 273 } 274 275 .toast-body { 276 padding: 15px 20px 20px; 277 } 278 279 .toast-progress { 280 height: 4px; 281 background: #e9ecef; 282 border-radius: 2px; 283 overflow: hidden; 284 margin-top: 10px; 285 } 286 287 .toast-progress-bar { 288 height: 100%; 289 background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%); 290 width: 100%; 291 animation: progress 5s linear; 292 } 293 294 @keyframes progress { 295 from { width: 100%; } 296 to { width: 0%; } 297 } 298 299 .btn-sending { 300 position: relative; 301 pointer-events: none; 302 } 303 304 .btn-sending .spinner-border { 305 width: 1rem; 306 height: 1rem; 307 margin-right: 8px; 308 } 309 310 /* Forgot Password Modal Styles */ 311 .forgot-password-modal { 312 background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%); 313 border-radius: 20px; 314 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); 315 } 316 317 .forgot-password-modal .modal-header { 318 border-bottom: none; 319 padding-bottom: 0; 320 } 321 322 .forgot-password-modal .modal-body { 323 padding-top: 0; 324 } 325 326 .forgot-password-modal .form-control { 327 border: 2px solid #e9ecef; 328 border-radius: 12px; 329 padding: 12px 16px; 330 font-size: 16px; 331 } 332 333 .forgot-password-modal .btn-primary { 334 background: linear-gradient(135deg, #6f42c1 0%, #8e44ad 100%); 335 border: none; 336 border-radius: 12px; 337 padding: 12px 24px; 338 font-weight: 600; 339 } 340</style> 341 342<!-- Content --> 343<div class="authentication-wrapper authentication-cover authentication-bg"> 344 <div class="authentication-inner row"> 345 <!-- Left Side - Gym Image --> 346 <div class="d-none d-lg-flex col-lg-7 p-0"> 347 <div class="auth-cover-bg auth-cover-bg-color d-flex justify-content-center align-items-center"> 348 <img 349 src="https://gym-zones.com/assets/img/gymowner/log-in.png" 350 alt="auth-login-cover" 351 class="img-fluid my-5 auth-illustration" 352 style="width: 732px; height: auto;" 353 data-app-light-img="gymowner/log-in.png" 354 data-app-dark-img="gymowner/log-in.png" /> 355 356 <img 357 src="https://gym-zones.com/assets/img/illustrations/bg-shape-image-light.png" 358 alt="auth-login-cover" 359 class="platform-bg" 360 data-app-light-img="illustrations/bg-shape-image-light.png" 361 data-app-dark-img="illustrations/bg-shape-image-dark.png" /> 362 </div> 363 </div> 364 365 <!-- Right Side - Login Form --> 366 <div class="d-flex col-12 col-lg-5 align-items-center justify-content-center p-4"> 367 <div class="login-form-container w-100" style="max-width: 538px; "> 368 <!-- Top Right Decorative Image --> 369 <div class="top-right-decoration" style="z-index: 1000; position: absolute; top: 0; right: 0;"> 370 <img src="https://gym-zones.com/assets/img/gymowner/Rectangle.png" 371 alt="Decorative Element" 372 class="img-fluid"> 373 </div> 374 375 <!-- Logo Section --> 376 <div class="text-center mb-5 logo-container"> 377 <div class="d-inline-block mb-3"> 378 <img src="https://gym-zones.com/assets/img/favicon/favicon.ico" 379 alt="Gym Zones Logo" 380 style="width: 80px; height: 80px;"> 381 </div> 382 <h2 class="h3 fw-bold text-primary mb-2">Gym Zones</h2> 383 <p class="text-muted mb-0">Every Gym. One Membership.</p> 384 </div> 385 386 <!-- Arabic Text --> 387 <div class="text-center mb-4"> 388 <p class="h6 text-dark mb-1 fw-semibold">Ù Ù ÙØ¶ÙÙ</p> 389 <p class="text-muted">Ø¥Ù ÙØ£ Ø¨ÙØ§Ùات٠ÙÙØ¯Ø®Ù٠إÙÙ ÙÙØØ© Ø§ÙØªØÙÙ </p> 390 </div> 391 392 <!-- Login Form --> 393 <form action="https://gym-zones.com/authenticate" method="POST"> 394 <input type="hidden" name="_token" value="NufSUZ81ARHCSgTtvsyi0i1kZSZkrbUkxY7iB1IJ" autocomplete="off"> 395 <!-- Email Field --> 396 <div class="mb-4"> 397 <label for="email" class="form-label fw-semibold text-dark">Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ</label> 398 <input type="email" 399 class="form-control "
400 id="email" 401 name="email" 402 placeholder="Ø£Ø¯Ø®Ù Ø¨Ø±ÙØ¯Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙ" 403 value="" 404 required 405 autofocus> 406 </div> 407 408 <!-- Password Field --> 409 <div class="mb-4"> 410 <label for="password" class="form-label fw-semibold text-dark">ÙÙÙ Ø© اÙÙ Ø±ÙØ±</label> 411 <div class="input-group"> 412 <input type="password" 413 class="form-control " 414 id="password" 415 name="password" 416 placeholder="أدخ٠ÙÙÙ Ø© اÙÙ Ø±ÙØ±" 417 required> 418 <button class="btn btn-outline-secondary" type="button" id="togglePassword"> 419 <i class="ti ti-eye-off"></i> 420 </button> 421 </div> 422 423 <!-- Forgot Password Link --> 424 <div class="text-end mt-2"> 425 <a href="#" class="text-decoration-none text-primary small" onclick="openForgotPasswordModal()"> 426 ÙØ³Ùت ÙÙÙ Ø© اÙÙ Ø±ÙØ± Ø 427 </a> 428 </div> 429 </div> 430 431 <!-- Login Button --> 432 <button type="submit" class="btn btn-primary w-100 mb-4 fw-semibold py-3"> 433 تسجÙÙ Ø§ÙØ¯Ø®ÙÙ 434 </button> 435 </form> 436 437 <!-- Terms and Conditions --> 438 <div class="text-center"> 439 <p class="text-muted small mb-0"> 440 Ù Ù Ø®ÙØ§Ù Ø§ÙØªØ³Ø¬ÙÙ Ø£ÙØª ØªÙØ§Ù٠عÙÙ 441 <a href="https://gym-zones.com/terms-and-conditions" class="text-decoration-none text-primary fw-semibold">Ø§ÙØ´Ø±ÙØ· ÙØ§ÙØ£ØÙا٠</a> 442 </p> 443 </div> 444 </div> 445 </div> 446 </div> 447</div> 448 449<!-- Forgot Password Modal --> 450<div class="modal fade" id="forgotPasswordModal" tabindex="-1" aria-labelledby="forgotPasswordModalLabel" aria-hidden="true"> 451 <div class="modal-dialog modal-dialog-centered"> 452 <div class="modal-content forgot-password-modal"> 453 <div class="modal-header text-center border-0"> 454 <div class="w-100"> 455 <!-- Logo --> 456 <div class="text-center mb-3"> 457 <img src="https://gym-zones.com/assets/img/favicon/favicon.ico" 458 alt="Gym Zones Logo" 459 style="width: 60px; height: 60px;"> 460 <h4 class="fw-bold text-primary mb-1">Gym Zones</h4> 461 </div> 462 463 <!-- Arabic Instructions --> 464 <div class="text-center mb-3"> 465 <p class="h6 text-dark mb-1 fw-semibold">Ù Ù ÙØ¶ÙÙ</p> 466 <p class="text-muted">Ø£Ø¯Ø®Ù Ø¨Ø±ÙØ¯Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙ ÙØªØºÙÙØ± ÙÙÙ Ø© اÙÙ Ø±ÙØ±</p> 467 </div> 468 </div> 469 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 470 </div> 471 472 <div class="modal-body"> 473 <form id="forgotPasswordForm" action="https://gym-zones.com/gymowner-forgot-password" method="POST"> 474 <input type="hidden" name="_token" value="NufSUZ81ARHCSgTtvsyi0i1kZSZkrbUkxY7iB1IJ" autocomplete="off"> <div class="mb-4"> 475 <label for="forgot_email" class="form-label fw-semibold text-dark">Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ</label> 476 <input type="email" 477 class="form-control " 478 id="forgot_email" 479 name="email" 480 placeholder="Ø£Ø¯Ø®Ù Ø¨Ø±ÙØ¯Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙ" 481 required> 482 </div> 483 484 <button type="submit" class="btn btn-primary w-100 mb-3 fw-semibold py-3"> 485 إرسا٠486 </button> 487 </form> 488 </div> 489 </div> 490 </div> 491</div> 492 493 494 495<!-- Password Toggle Script -->
496<script> 497document.getElementById('togglePassword').addEventListener('click', function() { 498 const passwordInput = document.getElementById('password'); 499 const icon = this.querySelector('i'); 500 501 if (passwordInput.type === 'password') { 502 passwordInput.type = 'text'; 503 icon.classList.remove('ti-eye-off'); 504 icon.classList.add('ti-eye'); 505 } else { 506 passwordInput.type = 'password'; 507 icon.classList.remove('ti-eye'); 508 icon.classList.add('ti-eye-off'); 509 } 510}); 511 512// Function to open forgot password modal 513function openForgotPasswordModal() { 514 const modal = new bootstrap.Modal(document.getElementById('forgotPasswordModal')); 515 modal.show(); 516} 517 518// Handle forgot password form submission 519document.getElementById('forgotPasswordForm').addEventListener('submit', function(e) { 520 e.preventDefault(); 521 522 const submitBtn = this.querySelector('button[type="submit"]'); 523 const originalText = submitBtn.innerHTML; 524 525 // Show loading state 526 submitBtn.innerHTML = '<span class="spinner-border" role="status" aria-hidden="true"></span> Ø¬Ø§Ø±Ù Ø§ÙØ¥Ø±Ø³Ø§Ù...'; 527 submitBtn.classList.add('btn-sending'); 528 529 const formData = new FormData(this); 530 531 fetch(this.action, { 532 method: 'POST', 533 body: formData, 534 headers: { 535 'X-Requested-With': 'XMLHttpRequest' 536 } 537 }) 538 .then(response => { 539 // Check if response is JSON 540 const contentType = response.headers.get('content-type'); 541 if (contentType && contentType.includes('application/json')) { 542 return response.json(); 543 } else { 544 // If not JSON, check status 545 if (response.ok) { 546 return { success: true, message: 'ت٠إرسا٠رابط إعادة تعÙÙÙ ÙÙÙ Ø© اÙÙ Ø±ÙØ± Ø¨ÙØ¬Ø§Ø' }; 547 } else { 548 throw new Error('Network response was not ok'); 549 } 550 } 551 }) 552 .then(data => { 553 // Show success toast 554 555 showToast('ÙØ¬Ø Ø§ÙØ¥Ø±Ø³Ø§Ù', 'ت٠إرسا٠رابط إعادة تعÙÙÙ ÙÙÙ Ø© اÙÙ Ø±ÙØ± Ø¥ÙÙ Ø¨Ø±ÙØ¯Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙ', 'success'); 556 557 // Close modal 558 const modal = bootstrap.Modal.getInstance(document.getElementById('forgotPasswordModal')); 559 modal.hide(); 560 561 // Reset form 562 this.reset(); 563 }) 564 .catch(error => { 565 console.error('Error:', error); 566 // Show error toast 567 showToast('خطأ ÙÙ Ø§ÙØ¥Ø±Ø³Ø§Ù', 'ØØ¯Ø« خطأ Ø£Ø«ÙØ§Ø¡ Ø¥Ø±Ø³Ø§Ù Ø§ÙØ·Ùب. ÙØ±Ø¬Ù اÙÙ ØØ§ÙÙØ© ٠رة أخرÙ.', 'error'); 568 }) 569 .finally(() => { 570 // Reset button state 571 submitBtn.innerHTML = originalText; 572 submitBtn.classList.remove('btn-sending'); 573 }); 574}); 575 576 577// Function to show toast notification 578function showToast(title, message, type = 'info') { 579 // Remove existing toasts 580 const existingToasts = document.querySelectorAll('.toast-notification'); 581 existingToasts.forEach(toast => toast.remove()); 582 583 // Create toast element 584 const toast = document.createElement('div'); 585 toast.className = 'toast-notification'; 586 587 const borderColor = type === 'success' ? '#28a745' : type === 'error' ? '#dc3545' : '#6f42c1'; 588 589 toast.innerHTML = ` 590 <div class="toast-header"> 591 <h6 class="mb-0 fw-bold" style="color: ${borderColor};">${title}</h6> 592 </div> 593 <div class="toast-body"> 594 <p class="mb-0 text-dark">${message}</p> 595 <div class="toast-progress"> 596 <div class="toast-progress-bar" style="border-left-color: ${borderColor};"></div> 597 </div> 598 </div> 599 `; 600 601 // Add to page 602 document.body.appendChild(toast); 603 604 // Show toast 605 setTimeout(() => toast.classList.add('show'), 100); 606 607 // Auto-hide after 5 seconds 608 setTimeout(() => { 609 toast.classList.remove('show'); 610 setTimeout(() => toast.remove(), 300); 611 }, 5000); 612} 613</script>
613 614 615 616 <!-- / Content --> 617 618 <!-- Core JS --> 619 <!-- build:js assets/vendor/js/core.js --> 620
620<script src="https://gym-zones.com/assets/vendor/libs/jquery/jquery.js"></script>
620 621
621<script src="https://gym-zones.com/assets/vendor/libs/popper/popper.js"></script>
621 622
622<script src="https://gym-zones.com/assets/vendor/js/bootstrap.js"></script>
622 623
623<script src="https://gym-zones.com/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.js"></script>
623 624
624<script src="https://gym-zones.com/assets/vendor/libs/node-waves/node-waves.js"></script>
624 625 626
626<script src="https://gym-zones.com/assets/vendor/libs/hammer/hammer.js"></script>
626 627
627<script src="https://gym-zones.com/assets/vendor/libs/i18n/i18n.js"></script>
627 628
628<script src="https://gym-zones.com/assets/vendor/libs/typeahead-js/typeahead.js"></script>
628 629 630
630<script src="https://gym-zones.com/assets/vendor/js/menu.js"></script>
630 631 <!-- endbuild --> 632 633 <!-- Vendors JS --> 634
634<script src="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/js/FormValidation.min.js"></script>
634 635
635<script src="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js"></script>
635 636
636<script src="https://gym-zones.com/assets/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js"></script>
636 637 638 <!-- Main JS --> 639
639<script src="https://gym-zones.com/assets/js/main.js"></script>
639 640 641 <!-- Page JS --> 642
642<script src="https://gym-zones.com/assets/js/pages-auth.js"></script>
642 643 </body> 644</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.