1<!DOCTYPE html> 2<html id="XF" lang="en-US" dir="LTR" 3 data-xf="2.3" 4 data-app="public" 5 6 7 data-template="search_form" 8 data-container-key="" 9 data-content-key="" 10 data-logged-in="false" 11 data-cookie-prefix="xf_" 12 data-csrf="1790920781,1c786cbe3e230949db8fba3e76386ce8" 13 class="has-no-js template-search_form" 14 > 15<head> 16 17 18 19 20 <meta charset="utf-8" /> 21 <title>Search | FanVerse</title> 22 <link rel="manifest" href="/webmanifest.php"> 23 <link href="/opensans.css" rel="stylesheet"> 24 25 <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 26 <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> 27 28 29 <meta name="theme-color" content="#272727" /> 30 31 32 <meta name="apple-mobile-web-app-title" content="FanVerse"> 33 34 <link rel="apple-touch-icon" href="/styles/pwa/192x192.png"> 35 36 37 38 <meta name="robots" content="noindex" /> 39 40 41 42 43 44 45 <meta property="og:site_name" content="FanVerse" /> 46 47 48 49 50 51 52 53 <meta property="og:type" content="website" /> 54 55 56 57 58 59 60 61 62 <meta property="og:title" content="Search" /> 63 <meta property="twitter:title" content="Search" /> 64 65 66 67 68 69 70 71 72 73 <meta property="og:url" content="https://www.fanverse.org/search/" /> 74 75 76 77 78 79 80 81 82 83 84 <link rel="stylesheet" href="/css.php?css=public%3Anormalize.css%2Cpublic%3Afa.css%2Cpublic%3Acore.less%2Cpublic%3Aapp.less&s=1&l=1&d=1790890032&k=05e89bcae4b310806a6922d715a2f467ba0a9b23" /> 85 86 87 88<link rel="stylesheet" href="/css.php?css=public%3Aozzmodz_badges.less%2Cpublic%3Aextra.less&s=1&l=1&d=1790890032&
88k=c8529761a65af7b6cbc17677631daf900ba87eb1" /> 89 90 91 92 93 94
94<script src="/js/xf/preamble.min.js?_v=461a0a82"></script>
94 95 96 97 98
98<script src="/js/vendor/vendor-compiled.js?_v=461a0a82" defer></script>
98 99
99<script src="/js/xf/core-compiled.js?_v=461a0a82" defer></script>
99 100 101
101<script> 102 XF.ready(() => 103 { 104 XF.extendObject(true, XF.config, { 105 // 106 userId: 0, 107 enablePush: true, 108 pushAppServerKey: 'BKu70K7hacapzW5rsw_slABl7z2dBFBfmsmsFakmex_lzRnhKEoa-vJYHoNdA8D0Ox5EGXSlduBnGDenMAprrT8', 109 url: { 110 fullBase: 'https://www.fanverse.org/', 111 basePath: '/', 112 css: '/css.php?css=__SENTINEL__&s=1&l=1&d=1790890032', 113 js: '/js/__SENTINEL__?_v=461a0a82', 114 icon: '/data/local/icons/__VARIANT__.svg?v=1790889936#__NAME__', 115 iconInline: '/styles/fa/__VARIANT__/__NAME__.svg?v=5.15.3', 116 keepAlive: '/login/keep-alive' 117 }, 118 cookie: { 119 path: '/', 120 domain: '', 121 prefix: 'xf_', 122 secure: true, 123 consentMode: 'disabled', 124 consented: ["optional","_third_party"] 125 }, 126 cacheKey: 'f3ed7234243583f554e27d349fe769c5', 127 csrf: '1790920781,1c786cbe3e230949db8fba3e76386ce8', 128 js: {}, 129 fullJs: false, 130 css: {"public:ozzmodz_badges.less":true,"public:extra.less":true}, 131 time: { 132 now: 1790920781, 133 today: 1790913600, 134 todayDow: 5, 135 tomorrow: 1791000000, 136 yesterday: 1790827200, 137 week: 1790395200, 138 month: 1790827200, 139 year: 1767243600 140 }, 141 style: { 142 light: '', 143 dark: '', 144 defaultColorScheme: 'light' 145 }, 146 borderSizeFeature: '3px', 147 fontAwesomeWeight: 'r', 148 enableRtnProtect: true, 149 150 enableFormSubmitSticky: true, 151 imageOptimization: 'optimize', 152 imageOptimizationQuality: 0.9, 153 uploadMaxFilesize: 67108864, 154 uploadMaxWidth: 0, 155 uploadMaxHeight: 0, 156 allowedVideoExtensions: ["m4v","mov","mp4","mp4v","mpeg","mpg","ogv","webm"], 157 allowedAudioExtensions: ["mp3","opus","ogg","wav"], 158 shortcodeToEmoji: true, 159 visitorCounts: { 160 conversations_unread: '0', 161 alerts_unviewed: '0', 162 total_unread: '0', 163 title_count: true, 164 icon_indicator: true 165 }, 166 jsMt: {"xf\/action.js":"828c762d","xf\/embed.js":"828c762d","xf\/form.js":"828c762d","xf\/structure.js":"828c762d","xf\/tooltip.js":"828c762d"}, 167 jsState: {}, 168 publicMetadataLogoUrl: '', 169 publicPushBadgeUrl: 'https://www.fanverse.org/styles/default/xenforo/bell.png' 170 }) 171 172 XF.extendObject(XF.phrases, { 173 // 174"svStandardLib_time.day": "{count} day", 175"svStandardLib_time.days": "{count} days", 176"svStandardLib_time.hour": "{count} hour", 177"svStandardLib_time.hours": "{count} hours", 178"svStandardLib_time.minute": "{count} minutes", 179"svStandardLib_time.minutes": "{count} minutes", 180"svStandardLib_time.month": "{count} month", 181"svStandardLib_time.months": "{count} months", 182"svStandardLib_time.second": "{count} second", 183"svStandardLib_time.seconds": "{count} seconds", 184"svStandardLib_time.week": "time.week", 185"svStandardLib_time.weeks": "{count} weeks", 186"svStandardLib_time.year": "{count} year", 187"svStandardLib_time.years": "{count} years", 188 189fv_transcription_button: "Transcribe audio", 190fv_transcription_file_info: "{name} ({size})", 191fv_transcription_record_start: "Record audio", 192fv_transcription_record_stop: "Stop recording", 193fv_transcription_recording: "Recording⦠{time}", 194fv_transcription_record_denied: "Microphone access was denied.", 195fv_transcription_record_unsupported: "Audio recording is not supported in this browser.", 196fv_transcription_record_error: "The recording could not be started.", 197fv_transcription_preload: "Load model", 198fv_transcription_preloading: "Loading model⦠{progress}%", 199fv_transcription_preloaded: "Model loaded.", 200fv_transcription_preload_failed: "The model could not be loaded.", 201fv_transcription_status_preparing: "Preparing audioâ¦", 202fv_transcription_status_retrying: "Network problem. Retrying in {seconds}sâ¦", 203fv_transcription_status_loading: "Loading {file}â¦", 204fv_transcription_status_loading_mb: "Loading {file} â {loaded} of {total}", 205fv_transcription_status_downloading: "Downloading model files â {loaded} of {total}", 206fv_transcription_status_loading_model: "Loading modelâ¦", 207fv_transcription_status_ready: "Model ready.", 208fv_transcription_status_detecting: "Detecting languageâ¦", 209fv_transcription_status_cancelled: "Cancelled.", 210fv_transcription_status_transcribing: "Transcribingâ¦", 211fv_transcription_status_window: "Window {current} of ~{total} · {remaining} remaining · {skipped} silent skipped", 212fv_transcription_status_window_unknown: "Window {current} of ~{total} · {skipped} silent skipped", 213fv_transcription_status_window_no_skip: "Window {current} of ~{total} · {remaining} remaining", 214fv_transcription_status_window_unknown_no_skip: "Window {current} of ~{total}",
215fv_transcription_status_cached: "Loaded from browser cache.", 216fv_transcription_status_done: "Transcription complete.", 217fv_transcription_status_done_engine: "Transcription complete ({device}, {dtype}).", 218fv_transcription_error_unsupported: "Unsupported audio format. Use MP3, MP4, WAV, M4A, WebM, or OGG.", 219fv_transcription_error_too_large: "The audio file exceeds the maximum size of {maxSize} MB.", 220fv_transcription_error_too_long: "The audio file exceeds the maximum duration of {maxDuration} minutes.", 221fv_transcription_error_decode: "The audio file could not be decoded.", 222fv_transcription_error_worker: "The transcription worker could not be started.", 223fv_transcription_error_worker_timeout: "The transcription worker stopped responding.", 224fv_transcription_error_cache: "The browser transcript cache could not be read.", 225fv_transcription_error_failed: "Transcription failed.", 226fv_transcription_error_webgpu: "WebGPU is not available in this browser.", 227fv_transcription_error_timestamps_missing: "Timestamps are not available for this transcription.", 228fv_transcription_clear_cache: "Clear cached models and transcripts", 229fv_transcription_clear_cache_confirm: "Delete cached Whisper models and transcripts from this browser?", 230fv_transcription_clear_cache_done: "Cached models and transcripts deleted.", 231fv_transcription_clear_cache_failed: "The browser cache could not be cleared.", 232fv_transcription_preferences_save_failed: "The browser-specific transcription settings could not be saved.", 233fv_transcription_storage_loading: "Calculating storage usageâ¦",
234fv_transcription_storage_empty: "No cached transcription data.", 235fv_transcription_storage_transcripts: "{count} transcript(s) ({size})", 236fv_transcription_storage_transcripts_no_size: "{count} transcript(s)", 237fv_transcription_storage_models_no_size: "{count} model file(s)", 238fv_transcription_storage_origin: "Browser storage: {used} of {quota}", 239fv_transcription_storage_persistent: "Persistent storage granted.", 240fv_transcription_storage_not_persistent: "Persistent storage not granted.", 241fv_transcription_storage_failed: "Storage usage could not be determined.", 242 243 date_x_at_time_y: "{date} at {time}", 244 day_x_at_time_y: "{day} at {time}", 245 yesterday_at_x: "Yesterday at {time}", 246 x_minutes_ago: "{minutes} minutes ago", 247 one_minute_ago: "1 minute ago", 248 a_moment_ago: "A moment ago", 249 today_at_x: "Today at {time}", 250 in_a_moment: "In a moment", 251 in_a_minute: "In a minute", 252 in_x_minutes: "In {minutes} minutes", 253 later_today_at_x: "Later today at {time}", 254 tomorrow_at_x: "Tomorrow at {time}", 255 short_date_x_minutes: "{minutes}m", 256 short_date_x_hours: "{hours}h", 257 short_date_x_days: "{days}d", 258 259 day0: "Sunday", 260 day1: "Monday", 261 day2: "Tuesday", 262 day3: "Wednesday", 263 day4: "Thursday", 264 day5: "Friday", 265 day6: "Saturday", 266 267 dayShort0: "Sun", 268 dayShort1: "Mon", 269 dayShort2: "Tue", 270 dayShort3: "Wed", 271 dayShort4: "Thu", 272 dayShort5: "Fri", 273 dayShort6: "Sat", 274 275 month0: "January", 276 month1: "February", 277 month2: "March", 278 month3: "April", 279 month4: "May", 280 month5: "June", 281 month6: "July", 282 month7: "August", 283 month8: "September", 284 month9: "October", 285 month10: "November", 286 month11: "December", 287 288 active_user_changed_reload_page: "The active user has changed. Reload the page for the latest version.", 289 server_did_not_respond_in_time_try_again: "The server did not respond in time. Please try again.", 290 oops_we_ran_into_some_problems: "Oops! We ran into some problems.", 291 oops_we_ran_into_some_problems_more_details_console: "Oops! We ran into some problems. Please try again later. More error details may be in the browser console.", 292 file_too_large_to_upload: "The file is too large to be uploaded.", 293 uploaded_file_is_too_large_for_server_to_process: "The uploaded file is too large for the server to process.", 294 files_being_uploaded_are_you_sure: "Files are still being uploaded. Are you sure you want to submit this form?", 295 attach: "Attach files", 296 rich_text_box: "Rich text box", 297 close: "Close", 298 link_copied_to_clipboard: "Link copied to clipboard.", 299 text_copied_to_clipboard: "Text copied to clipboard.", 300 loading: "Loadingâ¦", 301 you_have_exceeded_maximum_number_of_selectable_items: "You have exceeded the maximum number of selectable items.", 302 303 processing: "Processing", 304 'processing...': "Processingâ¦", 305 306 showing_x_of_y_items: "Showing {count} of {total} items", 307 showing_all_items: "Showing all items", 308 no_items_to_display: "No items to display", 309 310 number_button_up: "Increase", 311 number_button_down: "Decrease", 312 313 push_enable_notification_title: "Push notifications enabled successfully at FanVerse", 314 push_enable_notification_body: "Thank you for enabling push notifications!", 315 316 pull_down_to_refresh: "Pull down to refresh", 317 release_to_refresh: "Release to refresh", 318 refreshing: "Refreshingâ¦" 319 }) 320 }) 321 </script>
321 322 323
323<script> 324XF.ready(() => 325{ 326 327var SV = window.SV || {}; 328SV.extendObject = SV.extendObject || XF.extendObject || jQuery.extend; 329SV.extendObject(XF.config, { 330 contentrating : { 331 tooltipDelay: 400, 332 menuDelay: 100, 333 } 334}); 335 336}) 337</script>
vendor: 1 bytes, line 337
337
338<script> 339XF.ready(() => 340{ 341 342 343 344 345 346(function () { 347 function activate(event) { 348 var label = event.target.closest && event.target.closest('.fvNavDrawer-label[role="button"]'); 349 if (!label) { return; } 350 if (event.type === 'keydown' && event.key !== 'Enter' && event.key !== ' ') { return; } 351 var item = label.parentElement; 352 var menu = item.querySelector('.fvNavDrawer-submenu'); 353 var toggle = document.getElementById('fvSidebarToggle'); 354 if (!menu || !toggle) { return; } 355 event.preventDefault(); 356 var expanded = window.innerWidth >= 1280 ? toggle.checked : !toggle.checked; 357 if (!expanded) { 358 toggle.checked = window.innerWidth >= 1280; 359 toggle.dispatchEvent(new Event('change', {bubbles: true})); 360 menu.open = true; 361 } else { 362 menu.open = !menu.open; 363 } 364 label.setAttribute('aria-expanded', menu.open ? 'true' : 'false'); 365 } 366 document.addEventListener('click', activate); 367 document.addEventListener('keydown', activate); 368 document.addEventListener('toggle', function (event) { 369 if (!event.target.matches || !event.target.matches('.fvNavDrawer-submenu')) { return; } 370 var label = event.target.parentElement.querySelector('.fvNavDrawer-label[role="button"]'); 371 if (label) { label.setAttribute('aria-expanded', event.target.open ? 'true' : 'false'); } 372 }, true); 373})(); 374 375(function () { 376 document.addEventListener('submit', function (event) { 377 var form = event.target; 378 if (!form.matches || !form.matches('form.fvHeaderSearch')) { return; } 379 var keywords = form.querySelector('[name="keywords"]'); 380 var member = form.querySelector('[name="c[users]"]'); 381 if (keywords && !keywords.value.trim() && (!member || !member.value.trim())) { 382 event.preventDefault(); 383 window.location.assign(form.getAttribute('data-search-url')); 384 } 385 }); 386})(); 387 388 389(function () { 390 var tip, active; 391 function hide() { 392 if (active) { 393 if (active.previousDescription === null) { active.node.removeAttribute('aria-describedby'); } 394 else { active.node.setAttribute('aria-describedby', active.previousDescription); } 395 } 396 active = null; 397 if (tip) { tip.hidden = true; } 398 } 399 function show(event) { 400 var node = event.target.closest && event.target.closest('.fvNavDrawer-link, .fvNavDrawer-label'); 401 var toggle = document.getElementById('fvSidebarToggle'); 402 var width = window.innerWidth; 403 var collapsed = toggle && width > 700 && (width >= 1280 ? !toggle.checked : toggle.checked); 404 if (!node || !collapsed) { return; } 405 if (active && active.node === node) { return; } 406 var rect = node.getBoundingClientRect(); 407 hide(); 408 var text = node.getAttribute('aria-label'); 409 if (!text) { return; } 410 if (!tip) { 411 tip = document.createElement('div'); 412 tip.id = 'fvDrawerTooltip'; 413 tip.className = 'fvDrawerTooltip'; 414 tip.setAttribute('role', 'tooltip'); 415 document.body.appendChild(tip); 416 } 417 tip.textContent = text; 418 tip.hidden = false; 419 var tipWidth = tip.offsetWidth; 420 var tipHeight = tip.offsetHeight; 421 var left = Math.max(8, Math.min(rect.right + 10, width - tipWidth - 8)); 422 var top = Math.max(8, Math.min(rect.top + (rect.height - tipHeight) / 2, window.innerHeight - tipHeight - 8)); 423 tip.style.left = left + 'px'; 424 tip.style.top = top + 'px'; 425 var previous = node.getAttribute('aria-describedby'); 426 active = {node: node, previousDescription: previous}; 427 node.setAttribute('aria-describedby', (previous ? previous + ' ' : '') + tip.id); 428 } 429 document.addEventListener('mouseover', show); 430 document.addEventListener('focusin', show); 431 function leave(event) { 432 if (active && active.node.contains(event.target) && !active.node.contains(event.relatedTarget)) { hide(); } 433 } 434 document.addEventListener('mouseout', leave); 435 document.addEventListener('focusout', leave); 436 document.addEventListener('keydown', function (event) { if (event.key === 'Escape') { hide(); } }); 437 document.addEventListener('change', function (event) { if (event.target.id === 'fvSidebarToggle') { hide(); } }); 438 document.addEventListener('click', hide); 439 window.addEventListener('resize', hide); 440 document.addEventListener('scroll', hide, true); 441})(); 442 443}) 444</script>
444 445 446 447 448 449 450 <link rel="icon" href="/styles/pwa/32x32.png" /> 451 452 453 454</head> 455<body data-template="search_form"> 456 457 458<div class="p-pageWrapper" id="top"> 459 <input type="checkbox" id="fvSidebarToggle" class="fvSidebarToggle u-srOnly" checked="checked" 460 aria-label="Navigation" /> 461
461<script> 462(function () { 463 var storageKey = 'fanverse-sidebar-state-v1'; 464 var toggle = document.getElementById('fvSidebarToggle'); 465 if (!toggle) { return; } 466 467 function isWideDesktop() { 468 return window.matchMedia('(min-width: 1280px)').matches; 469 } 470 471 function readState() { 472 try { 473 var state = window.localStorage.getItem(storageKey); 474 return state === 'expanded' || state === 'collapsed' ? state : null; 475 } catch (error) { 476 return null; 477 } 478 } 479 480 function writeState() { 481 var expanded = isWideDesktop() ? toggle.checked : !toggle.checked; 482 try { 483 window.localStorage.setItem(storageKey, expanded ? 'expanded' : 'collapsed'); 484 } catch (error) { 485 // A blocked storage area should not prevent the drawer from toggling. 486 } 487 } 488 489 function applyState() { 490 var state = readState() || 'collapsed'; 491 var expanded = state === 'expanded'; 492 toggle.checked = isWideDesktop() ? expanded : !expanded; 493 } 494 495 applyState(); 496 toggle.addEventListener('change', writeState); 497 498 // Register during parsing: closing does not wait for deferred XenForo JS. 499 document.addEventListener('click', function (event) { 500 var button = event.target.closest && event.target.closest('button.fvSidebar-close'); 501 if (!button) { return; } 502 event.preventDefault(); 503 toggle.checked = !isWideDesktop(); 504 toggle.dispatchEvent(new Event('change', { bubbles: true })); 505 }); 506 507 var previousDesktopMode = isWideDesktop(); 508 window.addEventListener('resize', function () { 509 var currentDesktopMode = isWideDesktop(); 510 if (currentDesktopMode !== previousDesktopMode) { 511 previousDesktopMode = currentDesktopMode; 512 applyState(); 513 } 514 }); 515})(); 516 </script>
516 517 518 519 520 <header class="p-header header-1" id="header"> 521 522 <div class="p-header-inner"> 523 <div class="p-header-content"> 524 <div class="p-header-logo p-header-logo--image"> 525 <a href="/"> 526 527 528 529 530 531 532 533 534 535 536 537 538 539 <picture data-variations="{"default":{"1":"\/styles\/icon.svg","2":null}}"> 540 541 542 543 544 545 546 <img src="/styles/icon.svg" width="34" height="34" alt="FanVerse" /> 547 </picture> 548 549 550 </a> 551 </div> 552 553 554 </div> 555 </div> 556 </header> 557 558 559 560 561 562 <div class="p-navSticky p-navSticky--primary" data-xf-init="sticky-header"> 563 564 <nav class="p-nav"> 565 <div class="p-nav-inner"> 566 <label for="fvSidebarToggle" class="fvSidebarTrigger" aria-label="Menu"> 567 <span class="fvSidebarTriggerIcon" aria-hidden="true"><i class="fa--xf far fa-bars "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#bars"></use></svg></i></span> 568 <span class="u-srOnly">Menu</span> 569 </label> 570 571 <div class="p-nav-smallLogo"> 572 <a href="/"> 573 574 575 576 577 578 579 580 581 582 583 584 585 586 <picture data-variations="{"default":{"1":"\/styles\/icon.svg","2":null}}"> 587 588 589 590 591 592 593 <img src="/styles/icon.svg" width="34" height="34" alt="FanVerse" /> 594 </picture> 595 596 597 </a> 598 </div> 599 600 <div class="fvHeader-context"> 601 <span class="fvHeader-contextTitle">Search</span> 602 </div> 603 604 605 <div class="fvHeaderSearch-slot"> 606 607 <form class="fvHeaderSearch" data-filter-state-key="fanverse-search-filters-v1-0" data-xf-init="quick-search" data-search-url="/search/" action="/search/search" method="post" role="search"> 608 <input type="text" class="input fvHeaderSearch-input" name="keywords" placeholder="Searchâ¦" aria-label="Search" /> 609 610 <span class="fvHeaderSearch-chips" hidden> 611 <button type="button" class="fvHeaderSearch-chip fvHeaderSearch-chip--title" hidden title="Search titles only" aria-label="Remove: Search titles only"> 612 <span>Title</span><i class="fa--xf far fa-times "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#times"></use></svg></i> 613 </button> 614 <button type="button" class="fvHeaderSearch-chip fvHeaderSearch-chip--member" hidden data-remove-label="Remove"> 615 <i class="fa--xf far fa-user "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#user"></use></svg></i><span class="fvHeaderSearch-memberName"></span><i class="fa--xf far fa-times "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#times"></use></svg></i> 616 </button> 617 </span> 618 <details class="fvHeaderSearch-filters"> 619 <summary class="fvHeaderSearch-advanced" aria-label="Filters" title="Filters"> 620 <i class="fa--xf far fa-sliders-h "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#sliders-h"></use></svg></i><span class="fvHeaderSearch-filterCount" hidden></span> 621 </summary> 622 <div class="fvHeaderSearch-filterPanel" role="group" aria-label="Filters"> 623 <div class="fvHeaderSearch-filterRow fvHeaderSearch-titleRow"> 624 <label class="iconic"><input type="checkbox" name="c[title_only]" value="1" /><i aria-hidden="true"></i><span class="iconic-label">Search titles only</span></label> 625 626 627 <button type="button" class="fvHeaderSearch-titleHelp" data-xf-init="tooltip" data-trigger="hover focus click" title="Tags will also be searched in content where tags are supported" aria-label="Note"> 628 <i class="fa--xf far fa-question-circle "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#question-circle"></use></svg></i> 629 </button> 630 631 </div> 632 <label class="fvHeaderSearch-filterRow fvHeaderSearch-memberLabel">
633 <span>Member</span> 634 <input type="text" class="input fvHeaderSearch-memberInput" data-xf-init="auto-complete" data-single="true" data-selection-error="The requested user could not be found." placeholder="Member" autocomplete="off" /> 635 </label> 636 <input type="hidden" name="c[users]" value="" /> 637 <div class="fvHeaderSearch-filterActions"> 638 <div class="fvHeaderSearch-filterFooter"> 639 <button type="button" class="button fvHeaderSearch-filterReset"><span class="button-text"><i class="fa--xf far fa-undo "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#undo"></use></svg></i> Reset</span></button> 640 <button type="button" class="button button--primary fvHeaderSearch-filterApply"><span class="button-text"><i class="fa--xf far fa-check "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#check"></use></svg></i> Confirm</span></button> 641 </div> 642 <a class="fvHeaderSearch-filterAdvanced" href="/search/">Advanced searchâ¦</a> 643 </div> 644 </div> 645 </details> 646 <button class="fvHeaderSearch-submit" type="submit" aria-label="Search"><i class="fa--xf far fa-search "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#search"></use></svg></i></button> 647 <input type="hidden" name="_xfToken" value="1790920781,1c786cbe3e230949db8fba3e76386ce8" /> 648 </form>
649<script> 650(function () { 651 function formOf(node) { 652 return node && node.closest && node.closest('form.fvHeaderSearch'); 653 } 654 var restoredForms = new WeakSet(); 655 var storedStates = new WeakMap(); 656 function stateKey(form) { return form.getAttribute('data-filter-state-key'); } 657 function restoreState(form, force) { 658 if (!force && restoredForms.has(form)) { return; } 659 restoredForms.add(form); 660 var key = stateKey(form); 661 if (!key) { return; } 662 try { 663 var state = JSON.parse(window.sessionStorage.getItem(key) || 'null'); 664 if (state && typeof state.title === 'boolean' && typeof state.member === 'string') { 665 form.querySelector('[name="c[title_only]"]').checked = state.title; 666 form.querySelector('[name="c[users]"]').value = state.member; 667 form.querySelector('.fvHeaderSearch-memberInput').value = state.member; 668 } else if (force) { 669 form.querySelector('[name="c[title_only]"]').checked = false; 670 form.querySelector('[name="c[users]"]').value = ''; 671 form.querySelector('.fvHeaderSearch-memberInput').value = ''; 672 } 673 } catch (error) { /* A blocked storage area must not disable the search. */ } 674 } 675 function persistState(form) { 676 var key = stateKey(form); 677 if (!key) { return; } 678 var state = { 679 title: form.querySelector('[name="c[title_only]"]').checked, 680 member: form.querySelector('[name="c[users]"]').value.trim() 681 }; 682 var json = JSON.stringify(state); 683 if (storedStates.get(form) === json) { return; } 684 try { 685 if (state.title || state.member) { window.sessionStorage.setItem(key, json); } 686 else { window.sessionStorage.removeItem(key); } 687 storedStates.set(form, json); 688 } catch (error) { /* Keep the current form functional without storage. */ } 689 } 690 function sync(form) { 691 if (!form) { return; } 692 var title = form.querySelector('[name="c[title_only]"]'); 693 var member = form.querySelector('[name="c[users]"]'); 694 var chips = form.querySelector('.fvHeaderSearch-chips'); 695 if (!title || !member || !chips) { return; } 696 var input = form.querySelector('.fvHeaderSearch-memberInput'); 697 var value = member.value.trim(); 698 var pending = input.value.trim() !== value; 699 input.setCustomValidity(pending ? input.getAttribute('data-selection-error') : ''); 700 form.querySelector('.fvHeaderSearch-filterApply').disabled = pending; 701 var titleChip = chips.querySelector('.fvHeaderSearch-chip--title'); 702 var memberChip = chips.querySelector('.fvHeaderSearch-chip--member'); 703 titleChip.hidden = !title.checked; 704 memberChip.hidden = !value; 705 var name = memberChip.querySelector('.fvHeaderSearch-memberName'); 706 if (name.textContent !== value) { name.textContent = value; } 707 memberChip.title = value; 708 memberChip.setAttribute('aria-label', memberChip.getAttribute('data-remove-label') + ': ' + value); 709 var count = (title.checked ? 1 : 0) + (value ? 1 : 0); 710 chips.hidden = count === 0; 711 var badge = form.querySelector('.fvHeaderSearch-filterCount'); 712 if (badge.textContent !== String(count)) { badge.textContent = String(count); } 713 badge.hidden = count === 0; 714 persistState(form); 715 } 716 function hideSuggestions(form) { 717 var input = form.querySelector('.fvHeaderSearch-memberInput'); 718 if (!input || !window.XF || !XF.Element || !XF.Element.getHandler) { return; } 719 var handler = XF.Element.getHandler(input, 'auto-complete'); 720 if (!handler) { return; } 721 if (handler.loadTimer) { clearTimeout(handler.loadTimer); handler.loadTimer = null; } 722 if (handler.abortController) { handler.abortController.abort(); handler.abortController = null; } 723 handler.hideResults(); 724 handler.loadVal = ''; // Permit the same prefix to be requested again after closing/resetting. 725 } 726 function close(form, restoreFocus) { 727 var menu = form.querySelector('.fvHeaderSearch-filters'); 728 if (!menu) { return; } 729 hideSuggestions(form); 730 menu.open = false; 731 if (restoreFocus) { menu.querySelector('summary').focus(); } 732 } 733 var boundMembers = new WeakSet(); 734 function syncAll() { 735 document.querySelectorAll('form.fvHeaderSearch').forEach(function (form) { 736 restoreState(form, false); 737 var input = form.querySelector('.fvHeaderSearch-memberInput'); 738 if (input && !boundMembers.has(input) && window.XF && XF.on) { 739 // Register with XF's event registry: XF.trigger does not dispatch unregistered custom events. 740 XF.on(input, 'auto-complete:insert', memberSelected); 741 boundMembers.add(input); 742 } 743 sync(form); 744 }); 745 } 746 function memberSelected(event) { 747 var input = event.target; 748 var form = formOf(input); 749 if (!form || !input.matches('.fvHeaderSearch-memberInput')) { return; } 750 // XF emits this event only after inserting a server-supplied suggestion. 751 var inserted = event.inserted || (event.detail && event.detail.inserted); 752 if (!inserted) { return; }
753 input.value = String(inserted).trim(); 754 form.querySelector('[name="c[users]"]').value = input.value; 755 sync(form); 756 } 757 document.addEventListener('input', function (event) { 758 var form = formOf(event.target); 759 if (form && event.target.matches('.fvHeaderSearch-memberInput') && !event.target.value.trim()) { 760 form.querySelector('[name="c[users]"]').value = ''; 761 } 762 sync(form); 763 }); 764 document.addEventListener('change', function (event) { sync(formOf(event.target)); }); 765 document.addEventListener('focusout', function (event) { 766 var form = formOf(event.target); 767 if (form) { window.requestAnimationFrame(function () { sync(form); }); } 768 }); 769 document.addEventListener('click', function (event) { 770 var form = formOf(event.target); 771 var button = event.target.closest && event.target.closest('.fvHeaderSearch-chip, .fvHeaderSearch-filterReset, .fvHeaderSearch-filterApply'); 772 if (form && button) { 773 if (button.matches('.fvHeaderSearch-chip--title, .fvHeaderSearch-filterReset')) { 774 var title = form.querySelector('[name="c[title_only]"]'); 775 title.checked = false; 776 title.dispatchEvent(new Event('change', {bubbles: true})); 777 } 778 if (button.matches('.fvHeaderSearch-chip--member, .fvHeaderSearch-filterReset')) { 779 var member = form.querySelector('[name="c[users]"]'); 780 hideSuggestions(form); 781 member.value = ''; 782 form.querySelector('.fvHeaderSearch-memberInput').value = ''; 783 member.dispatchEvent(new Event('input', {bubbles: true})); 784 member.dispatchEvent(new Event('change', {bubbles: true})); 785 } 786 sync(form); 787 if (button.matches('.fvHeaderSearch-filterApply')) { close(form, true); } 788 else if (button.matches('.fvHeaderSearch-chip')) { form.querySelector('[name="keywords"]').focus(); } 789 } 790 // XF may render autocomplete suggestions outside the details element. 791 var suggestion = event.target.closest && event.target.closest('.autoCompleteList, .autoCompleteListItem'); 792 document.querySelectorAll('form.fvHeaderSearch').forEach(function (searchForm) { 793 var menu = searchForm.querySelector('.fvHeaderSearch-filters'); 794 if (menu && menu.open && !searchForm.contains(event.target) && !suggestion) { close(searchForm, false); } 795 }); 796 // Read the final input value after XF's autocomplete selection handlers. 797 if (form || suggestion) { window.requestAnimationFrame(syncAll); } 798 }); 799 document.addEventListener('toggle', function (event) { 800 if (event.target.matches && event.target.matches('.fvHeaderSearch-filters') && !event.target.open) { 801 var form = formOf(event.target); 802 if (form) { hideSuggestions(form); } 803 } 804 }, true); 805 document.addEventListener('keydown', function (event) { 806 var form = formOf(event.target); 807 if (form && event.key === 'Escape' && !event.defaultPrevented) { 808 var menu = form.querySelector('.fvHeaderSearch-filters'); 809 if (menu && menu.open) { event.preventDefault(); close(form, true); } 810 } 811 }); 812 document.addEventListener('submit', function (event) { 813 var form = formOf(event.target); 814 if (!form) { return; } 815 sync(form); 816 var input = form.querySelector('.fvHeaderSearch-memberInput'); 817 if (!input.checkValidity()) { 818 event.preventDefault(); event.stopImmediatePropagation(); 819 form.querySelector('.fvHeaderSearch-filters').open = true; 820 input.reportValidity(); input.focus(); return; 821 } 822 close(form, false); 823 }, true); 824 document.addEventListener('invalid', function (event) { 825 var form = formOf(event.target); 826 if (form && event.target.matches('.fvHeaderSearch-memberInput')) { 827 form.querySelector('.fvHeaderSearch-filters').open = true; 828 } 829 }, true); 830 document.addEventListener('reset', function (event) { 831 if (formOf(event.target)) { window.requestAnimationFrame(syncAll); } 832 }); 833 document.addEventListener('DOMContentLoaded', syncAll); 834 window.addEventListener('pageshow', function (event) { 835 if (event.persisted) { 836 document.querySelectorAll('form.fvHeaderSearch').forEach(function (form) { restoreState(form, true); }); 837 } 838 syncAll(); 839 }); 840 // This script follows the rendered form, so restore chips before subsequent content paints. 841 syncAll(); 842})(); 843</script>
843 844 845 846 </div> 847 <div class="p-nav-opposite"> 848 <div class="p-navgroup p-account p-navgroup--guest"> 849 850 <a href="/login/" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--logIn" 851 data-xf-click="overlay" data-follow-redirects="on"> 852 <span class="p-navgroup-linkText">Log in</span> 853 </a> 854 855 <a href="/login/register" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--register" 856 data-xf-click="overlay" data-follow-redirects="on"> 857 <span class="p-navgroup-linkText">Register</span> 858 </a> 859 860 861 </div> 862 863 <div class="p-navgroup p-discovery"> 864 865 866 <a href="/search/" 867 class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search" 868 data-xf-click="menu" 869 data-xf-key="/" 870 aria-label="Search" 871 aria-expanded="false" 872 aria-haspopup="true" 873 title="Search"> 874 <i aria-hidden="true"></i> 875 <span class="p-navgroup-linkText">Search</span> 876 </a> 877 <div class="menu menu--structural menu--wide" data-menu="menu" aria-hidden="true"> 878 <form action="/search/search" method="post" 879 class="menu-content" 880 data-xf-init="quick-search"> 881 882 <h3 class="menu-header">Search</h3> 883 884 <div class="menu-row"> 885 886 <input type="text" class="input" name="keywords" data-acurl="/search/auto-complete" placeholder="Searchâ¦" aria-label="Search" data-menu-autofocus="true" /> 887 888 </div> 889 890 891 <div class="menu-row"> 892 <label class="iconic"><input type="checkbox" name="c[title_only]" value="1" /><i aria-hidden="true"></i><span class="iconic-label">Search titles only 893 894 895 <span tabindex="0" role="button" 896 data-xf-init="tooltip" data-trigger="hover focus click" title="Tags will also be searched in content where tags are supported"> 897 898 <i class="fa--xf far fa-question-circle u-muted u-smaller"><svg xmlns="http://www.w3.org/2000/svg" role="img" ><title>Note</title><use href="/data/local/icons/regular.svg?v=1790889936#question-circle"></use></svg></i> 899 </span></span></label> 900 901 </div> 902 903 <div class="menu-row"> 904 <div class="inputGroup"> 905 <span class="inputGroup-text" id="ctrl_search_menu_by_member">By:</span> 906 <input type="text" class="input" name="c[users]" data-xf-init="auto-complete" placeholder="Member" aria-labelledby="ctrl_search_menu_by_member" /> 907 </div> 908 </div> 909 <div class="menu-footer"> 910 <span class="menu-footer-controls"> 911 <button type="submit" class="button button--icon button--icon--search button--primary"><i class="fa--xf far fa-search "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#search"></use></svg></i><span class="button-text">Search</span></button> 912 <button type="submit" class="button " name="from_search_menu"><span class="button-text">Advanced searchâ¦</span></button> 913 </span> 914 </div> 915 916 <input type="hidden" name="_xfToken" value="1790920781,1c786cbe3e230949db8fba3e76386ce8" /> 917 </form> 918 </div> 919 920 921 </div> 922 </div> 923 </div> 924 </nav> 925 926 </div> 927 928 929 <aside data-visitor-id="0" class="fvSidebar" aria-label="Navigation">
930<script> 931(function () { 932 var drawer = document.currentScript.parentElement; 933 var staff = drawer.parentElement.querySelector('.p-staffBar.header-2'); 934 var pending = false; 935 var previous = -1; 936 function update() { 937 pending = false; 938 var rect = staff && staff.getBoundingClientRect(); 939 var offset = rect && rect.height > 0 && rect.top < window.innerHeight 940 ? Math.max(0, Math.min(window.innerHeight, rect.bottom)) : 0; 941 if (offset !== previous) { 942 drawer.style.setProperty('--fv-drawer-top', offset + 'px'); 943 previous = offset; 944 } 945 } 946 function schedule() { 947 if (!pending) { pending = true; window.requestAnimationFrame(update); } 948 } 949 update(); 950 if (staff && window.ResizeObserver) { new ResizeObserver(schedule).observe(staff); } 951 window.addEventListener('resize', schedule, { passive: true }); 952 window.addEventListener('scroll', schedule, { passive: true }); 953 window.addEventListener('pageshow', schedule); 954 if (window.visualViewport) { 955 window.visualViewport.addEventListener('resize', schedule, { passive: true }); 956 window.visualViewport.addEventListener('scroll', schedule, { passive: true }); 957 } 958})(); 959</script>
vendor: 1 bytes, line 959
959
960<script>document.currentScript.parentElement.style.visibility = 'hidden';</script>
960 961 <div class="fvNavDrawer-header"> 962 <a class="fvNavDrawer-brand" href="/" aria-label="FanVerse"> 963 <span class="fvNavDrawer-mark"> 964 <span class="fvNavDrawer-markCrop"> 965 966 967 968 969 970 971 972 973 974 975 976 977 978 <picture data-variations="{"default":{"1":"\/styles\/icon.svg","2":null}}"> 979 980 981 982 983 984 985 <img src="/styles/icon.svg" width="34" height="34" alt="FanVerse" /> 986 </picture> 987 988 989 </span> 990 </span> 991 <span class="fvNavDrawer-wordmark">FanVerse</span>
991<script> 992(function () { 993 var el = document.currentScript.previousElementSibling; 994 var title = el.textContent; 995 if (title === 'FanVerse') { 996 el.textContent = ''; 997 var first = document.createElement('span'); 998 first.textContent = title.slice(0, 3); 999 var accent = document.createElement('span'); 1000 accent.className = 'fvNavDrawer-wordmarkAccent'; 1001 accent.textContent = title.slice(3); 1002 el.appendChild(first); el.appendChild(accent); 1003 } 1004})(); 1005</script>
1005 1006 </a> 1007 <button type="button" class="fvSidebar-close" aria-label="Close"> 1008 <span class="fvSidebar-closeIcon" aria-hidden="true"><i class="fa--xf far fa-chevron-left "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#chevron-left"></use></svg></i></span> 1009 <span class="u-srOnly">Close</span> 1010 </button> 1011 </div> 1012 <nav class="fvNavDrawer-body"> 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 <div class="fvNavDrawer-item fvNavDrawer-forumLinks "> 1039 <div class="fvNavDrawer-submenuContent"> 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 <a href="/search/?type=post" 1096 class="menu-linkRow " 1097 1098 1099 data-nav-id="searchForums">Search forums</a> 1100 1101 1102 1103 1104 1105 1106 </div> 1107 </div> 1108 1109 1110 1111 1112 1113 1114 1115 1116 <div class="fvNavDrawer-item fvNavDrawer-item--hasChildren "> 1117 1118 <a href="/whats-new/" 1119 class="fvNavDrawer-link " 1120 1121 data-nav-id="whatsNew" 1122 aria-label="What's new"> 1123 <span class="fvNavDrawer-icon" aria-hidden="true"> 1124 1125 <i class="fa--xf far fa-bolt "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#bolt"></use></svg></i> 1126 1127 </span> 1128 <span class="fvNavDrawer-text">What's new</span> 1129 1130 </a> 1131 1132 1133 <details class="fvNavDrawer-submenu" > 1134 <summary aria-label="What's new"><i class="fa--xf far fa-chevron-down "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#chevron-down"></use></svg></i></summary> 1135 <div class="fvNavDrawer-submenuContent"> 1136 1137 1138 1139 1140 1141 1142 1143 1144 <a href="/featured/" 1145 class="menu-linkRow " 1146 1147 1148 data-nav-id="featured">Featured content</a> 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 <a href="/whats-new/posts/" 1162 class="menu-linkRow " 1163 rel="nofollow" 1164 1165 data-nav-id="whatsNewPosts">New posts</a> 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 <a href="/whats-new/media/" 1179 class="menu-linkRow " 1180 rel="nofollow" 1181 1182 data-nav-id="xfmgWhatsNewNewMedia">New media</a> 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 <a href="/whats-new/media-comments/" 1196 class="menu-linkRow " 1197 rel="nofollow" 1198 1199 data-nav-id="xfmgWhatsNewMediaComments">New media comments</a> 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 <a href="/whats-new/ubs-blog-entries/" 1213 class="menu-linkRow " 1214 rel="nofollow" 1215 1216 data-nav-id="xaUbsWhatsNewNewBlogEntries">New blog entries</a> 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 <a href="/whats-new/profile-posts/" 1230 class="menu-linkRow " 1231 rel="nofollow" 1232 1233 data-nav-id="whatsNewProfilePosts">New profile posts</a> 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 <a href="/whats-new/ubs-comments/" 1247 class="menu-linkRow " 1248 rel="nofollow" 1249 1250 data-nav-id="xaUbsWhatsNewBlogEntryComments">New blog entry comments</a> 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 <a href="/whats-new/threadmarks/" 1264 class="menu-linkRow " 1265 rel="nofollow" 1266 1267 data-nav-id="whatsNewThreadmarks">New threadmarks</a> 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 <a href="/whats-new/latest-activity" 1281 class="menu-linkRow " 1282 rel="nofollow" 1283 1284 data-nav-id="latestActivity">Latest activity</a> 1285 1286 1287 1288 1289 1290 </div> 1291 </details> 1292 1293 </div> 1294 1295 1296 1297 1298 1299 1300 1301 <div class="fvNavDrawer-item fvNavDrawer-item--hasChildren "> 1302 1303 <a href="/tickets/" 1304 class="fvNavDrawer-link " 1305 1306 data-nav-id="fvTickets" 1307 aria-label="Support"> 1308 <span class="fvNavDrawer-icon" aria-hidden="true"> 1309 1310 <i class="fa--xf far fa-life-ring "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#life-ring"></use></svg></i> 1311 1312 </span> 1313 <span class="fvNavDrawer-text">Support</span> 1314 1315 </a> 1316 1317 1318 <details class="fvNavDrawer-submenu" > 1319 <summary aria-label="Support"><i class="fa--xf far fa-chevron-down "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#chevron-down"></use></svg></i></summary> 1320 <div class="fvNavDrawer-submenuContent"> 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 <a href="/tickets/create" 1348 class="menu-linkRow " 1349 data-xf-click="overlay" 1350 1351 data-nav-id="fvTicketsOpenNewTicket">Open new ticket</a> 1352 1353 1354 1355 1356 1357 </div> 1358 </details> 1359 1360 </div> 1361 1362 1363 1364 1365 1366 1367 1368 <div class="fvNavDrawer-item "> 1369 1370 <a href="/media/" 1371 class="fvNavDrawer-link " 1372 1373 data-nav-id="xfmg" 1374 aria-label="Media"> 1375 <span class="fvNavDrawer-icon" aria-hidden="true"> 1376 1377 <i class="fa--xf far fa-images "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#images"></use></svg></i> 1378 1379 </span> 1380 <span class="fvNavDrawer-text">Media</span> 1381 1382 </a> 1383 1384 1385 </div> 1386 1387 1388 1389 1390 1391 1392 1393 <div class="fvNavDrawer-item fvNavDrawer-item--hasChildren "> 1394 1395 <a href="/blogs/" 1396 class="fvNavDrawer-link " 1397 1398 data-nav-id="xa_ubs" 1399 aria-label="Blogs"> 1400 <span class="fvNavDrawer-icon" aria-hidden="true"> 1401 1402 <i class="fa--xf far fa-newspaper "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#newspaper"></use></svg></i> 1403 1404 </span> 1405 <span class="fvNavDrawer-text">Blogs</span> 1406 1407 </a> 1408 1409 1410 <details class="fvNavDrawer-submenu" > 1411 <summary aria-label="Blogs"><i class="fa--xf far fa-chevron-down "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#chevron-down"></use></svg></i></summary> 1412 <div class="fvNavDrawer-submenuContent"> 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 <a href="/blogs/latest-reviews" 1496 class="menu-linkRow " 1497 1498 1499 data-nav-id="xa_ubsLatestReviews">Latest reviews</a> 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 <a href="/blogs/blog/" 1531 class="menu-linkRow " 1532 1533 1534 data-nav-id="xa_ubsBlogList">Blog list</a> 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 <a href="/blogs/authors/" 1566 class="menu-linkRow " 1567 1568 1569 data-nav-id="xa_ubsAuthorList">Author list</a> 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 <a href="/blogs/series/" 1601 class="menu-linkRow " 1602 1603 1604 data-nav-id="xa_ubsSeries">Series list</a> 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 <a href="/search/?type=ubs_blog_entry" 1636 class="menu-linkRow " 1637 1638 1639 data-nav-id="xa_ubsSearchBlogs">Search blogs</a> 1640 1641 1642 1643 1644 1645 </div> 1646 </details> 1647 1648 </div> 1649 1650 1651 1652 1653 1654 </nav>
1655<script> 1656(function () { 1657 function normaliseUrl(href) { 1658 var url; 1659 try { url = new URL(href, document.baseURI); } catch (e) { return null; } 1660 url.hash = ''; 1661 url.searchParams.delete('page'); 1662 url.pathname = url.pathname.replace(/\/page-\d+\/?$/, '').replace(/\/+$/, '') || '/'; 1663 url.searchParams.sort(); 1664 return url; 1665 } 1666 function sameUrl(linkUrl, currentUrl) { 1667 if (!linkUrl || !currentUrl || linkUrl.origin !== currentUrl.origin) { return false; } 1668 return linkUrl.pathname === currentUrl.pathname && linkUrl.search === currentUrl.search; 1669 } 1670 function hasRequiredQuery(linkUrl, currentUrl) { 1671 return Array.from(linkUrl.searchParams.entries()).every(function (entry) { 1672 return currentUrl.searchParams.getAll(entry[0]).indexOf(entry[1]) !== -1; 1673 }); 1674 } 1675 function isRoutePrefix(linkUrl, currentUrl) { 1676 if (!linkUrl || !currentUrl || linkUrl.origin !== currentUrl.origin) { return false; } 1677 if (!hasRequiredQuery(linkUrl, currentUrl)) { return false; } 1678 if (linkUrl.pathname === '/') { return false; } 1679 return currentUrl.pathname === linkUrl.pathname || 1680 currentUrl.pathname.indexOf(linkUrl.pathname + '/') === 0; 1681 } 1682 function specificity(candidate) { 1683 return candidate.url.pathname.length * 1000 + Array.from(candidate.url.searchParams.entries()).length; 1684 } 1685 function openAncestors(link) { 1686 var parent = link.parentElement; 1687 while (parent && !parent.classList.contains('fvNavDrawer-body')) { 1688 if (parent.tagName === 'DETAILS') { 1689 parent.open = true; 1690 var summary = parent.querySelector('summary'); 1691 if (summary) { summary.setAttribute('aria-expanded', 'true'); } 1692 } 1693 parent = parent.parentElement; 1694 } 1695 } 1696 function markCurrent() { 1697 var current = normaliseUrl(window.location.href); 1698 // The yours route redirects to the signed-in member's ticket listing. 1699 var visitorId = document.querySelector('.fvSidebar').getAttribute('data-visitor-id'); 1700 var memberRoute = current && current.pathname.match(/^(.*\/tickets)\/members\/(?:[^/]*\.)?(\d+)$/); 1701 if (memberRoute && visitorId !== '0' && memberRoute[2] === visitorId) { 1702 current.pathname = memberRoute[1] + '/yours'; 1703 } 1704 var selectedArea = document.querySelector('.fvNavDrawer-item.is-selected'); 1705 var activityNode = document.querySelector('.fvNavDrawer-item > [data-nav-id="whatsNew"], .fvNavDrawer-item > [data-nav-id="whats-new"]'); 1706 var activityLink = activityNode && activityNode.matches('a[href]') ? activityNode : Array.from(document.querySelectorAll('.fvNavDrawer-item > a.fvNavDrawer-link[href]')).find(function (link) { 1707 var url = normaliseUrl(link.href); 1708 return url && /\/whats-new$/.test(url.pathname); 1709 }); 1710 var activityArea = (activityNode && activityNode.closest('.fvNavDrawer-item')) || (activityLink && activityLink.closest('.fvNavDrawer-item')); 1711 var activityBase = activityLink && normaliseUrl(activityLink.href); 1712 var activityPath = activityBase ? activityBase.pathname : '/whats-new'; 1713 var isActivityRoute = current && activityPath && (!activityBase || hasRequiredQuery(activityBase, current)) && (current.pathname === activityPath || current.pathname.indexOf(activityPath + '/') === 0); 1714 1715 // Keep activity shortcuts in one canonical group. Remove duplicate 1716 // New posts/profile/blog/media links from Forums, Members and other groups. 1717 if (activityArea) { 1718 var canonical = []; 1719 activityArea.querySelectorAll('a.menu-linkRow[href]').forEach(function (link) { 1720 var url = normaliseUrl(link.href); 1721 if (url) { canonical.push(url); } 1722 }); 1723 document.querySelectorAll('.fvNavDrawer-item').forEach(function (area) { 1724 if (area === activityArea) { return; } 1725 area.querySelectorAll('a.menu-linkRow[href]').forEach(function (link) { 1726 var url = normaliseUrl(link.href); 1727 if (url && canonical.some(function (candidate) { return sameUrl(candidate, url); })) { 1728 link.remove(); 1729 } 1730 }); 1731 }); 1732 } 1733 1734 // A generated Overview must not compete with a named child at the same URL. 1735 document.querySelectorAll('.fvNavDrawer-overview[href]').forEach(function (overview) { 1736 var branch = overview.closest('.fvNavDrawer-branch'); 1737 if (branch && Array.from(branch.querySelectorAll('a.menu-linkRow[href]')).some(function (link) { 1738 return link !== overview && !link.classList.contains('fvNavDrawer-overview') && sameUrl(normaliseUrl(link.href), normaliseUrl(overview.href)); 1739 })) { overview.remove(); } 1740 }); 1741 1742 // Resolve ownership from the actual destinations when pageSection is wrong. 1743 var destinations = Array.from(document.querySelectorAll('.fvNavDrawer-submenuContent a.menu-linkRow[href]')).map(function (link) { 1744 return {link: link, url: normaliseUrl(link.href)}; 1745 }); 1746 var exactOwners = destinations.filter(function (candidate) { return sameUrl(candidate.url, current); }); 1747 var owners = exactOwners.length ? exactOwners : destinations.filter(function (candidate) { return isRoutePrefix(candidate.url, current); }); 1748 owners.sort(function (a, b) { 1749 return specificity(b) - specificity(a) || Number(b.link.closest('.fvNavDrawer-item') === selectedArea) - Number(a.link.closest('.fvNavDrawer-item') === selectedArea); 1750 }); 1751 var resolvedArea = isActivityRoute && activityArea ? activityArea : owners.length ? owners[0].link.closest('.fvNavDrawer-item') : selectedArea; 1752 if (resolvedArea) { 1753 document.querySelectorAll('.fvNavDrawer-item.is-selected').forEach(function (item) { 1754 if (item !== resolvedArea) { 1755 item.classList.remove('is-selected'); 1756 var oldMenu = item.querySelector('.fvNavDrawer-submenu'); 1757 if (oldMenu) { oldMenu.open = false; } 1758 var oldLabel = item.querySelector('.fvNavDrawer-label[aria-expanded]'); 1759 if (oldLabel) { oldLabel.setAttribute('aria-expanded', 'false'); } 1760 } 1761 }); 1762 selectedArea = resolvedArea; 1763 selectedArea.classList.add('is-selected'); 1764 var activityMenu = selectedArea.querySelector('.fvNavDrawer-submenu');
1765 if (activityMenu) { activityMenu.open = true; } 1766 var activityLabel = selectedArea.querySelector('.fvNavDrawer-label[aria-expanded]'); 1767 if (activityLabel) { activityLabel.setAttribute('aria-expanded', 'true'); } 1768 } 1769 1770 document.querySelectorAll('.fvNavDrawer-item.has-active-child').forEach(function (item) { 1771 item.classList.remove('has-active-child'); 1772 }); 1773 document.querySelectorAll('.fvNavDrawer-submenuContent a.menu-linkRow[href]').forEach(function (link) { 1774 link.classList.remove('is-current'); 1775 link.removeAttribute('aria-current'); 1776 }); 1777 1778 if (!current || !selectedArea) { return; } 1779 1780 var candidates = Array.from(selectedArea.querySelectorAll('.fvNavDrawer-submenuContent a.menu-linkRow[href]')) 1781 .map(function (link) { return { link: link, url: normaliseUrl(link.href) }; }) 1782 .filter(function (candidate) { return candidate.url && candidate.url.origin === current.origin; }); 1783 1784 var exact = candidates.filter(function (candidate) { return sameUrl(candidate.url, current); }); 1785 var eligible = exact.length ? exact : candidates.filter(function (candidate) { 1786 return isRoutePrefix(candidate.url, current); 1787 }); 1788 1789 eligible.sort(function (a, b) { return specificity(b) - specificity(a); }); 1790 var winner = eligible[0]; 1791 if (!winner) { return; } 1792 1793 winner.link.classList.add('is-current'); 1794 winner.link.setAttribute('aria-current', 'page'); 1795 openAncestors(winner.link); 1796 var selectedLabel = selectedArea.querySelector('.fvNavDrawer-label[aria-expanded]'); 1797 if (selectedLabel) { selectedLabel.setAttribute('aria-expanded', 'true'); } 1798 selectedArea.classList.add('has-active-child'); 1799 } 1800 try { markCurrent(); } finally { 1801 document.querySelector('.fvSidebar').style.visibility = ''; 1802 } 1803 window.addEventListener('popstate', markCurrent); 1804})(); 1805</script>
1805 1806 </aside> 1807 1808 <div class="p-body"> 1809 <div class="p-body-inner"> 1810 <!--XF:EXTRA_OUTPUT--> 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 <noscript class="js-jsWarning"><div class="blockMessage blockMessage--important blockMessage--iconic u-noJsOnly">JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.</div></noscript> 1824 1825 1826 <div class="blockMessage blockMessage--important blockMessage--iconic js-browserWarning" style="display: none">You are using an out of date browser. It may not display this or other websites correctly.<br />You should upgrade or use an <a href="https://www.google.com/chrome/" target="_blank" rel="noopener">alternative browser</a>.</div> 1827 1828 1829 1830 1831 <div class="p-body-header"> 1832 1833 1834 1835 <div class="p-title "> 1836 1837 1838 <h1 class="p-title-value">Search</h1> 1839 1840 1841 1842 </div> 1843 1844 1845 1846 1847 </div> 1848 1849 1850 <div class="p-body-main "> 1851 1852 <div class="p-body-contentCol"></div> 1853 1854 1855 1856 1857 <div class="p-body-content"> 1858 1859 1860<div class="p-body-pageContent"> 1861 1862 1863 1864 1865 1866 1867 <form action="/search/search" method="post" class="block" 1868 data-xf-init="ajax-submit" 1869 > 1870 <input type="hidden" name="_xfToken" value="1790920781,1c786cbe3e230949db8fba3e76386ce8" /> 1871 1872 <div class="block-container"> 1873 <h2 class="block-tabHeader tabs hScroller" data-xf-init="h-scroller"> 1874 <span class="hScroller-scroll">
1875 <a href="/search/" class="tabs-tab is-active">Search everything</a> 1876 1877 <a href="/search/?type=post" class="tabs-tab">Search threads</a> 1878 1879 <a href="/search/?type=ubs_blog_entry" class="tabs-tab">Search blogs</a> 1880 1881 <a href="/search/?type=xfmg_media" class="tabs-tab">Search media</a> 1882 1883 <a href="/search/?type=xfmg_album" class="tabs-tab">Search albums</a> 1884 1885 <a href="/search/?type=xfmg_comment" class="tabs-tab">Search media comments</a> 1886 1887 <a href="/search/?type=profile_post" class="tabs-tab">Search profile posts</a> 1888 1889 1890 <a href="/tags/" class="tabs-tab">Search tags</a> 1891 1892 </span> 1893 </h2> 1894 1895 <div class="block-body"> 1896 1897 1898 1899 <dl class="formRow formRow--input"> 1900 <dt> 1901 <div class="formRow-labelWrapper"> 1902 <label class="formRow-label" for="_xfUid-1-1790920781">Keywords</label></div> 1903 </dt> 1904 <dd> 1905 1906 1907 <ul class="inputList"> 1908 <li> 1909 <input type="search" class="input" name="keywords" data-acurl="/search/auto-complete" autofocus="autofocus" id="_xfUid-1-1790920781" /> 1910 </li> 1911 1912 <li> 1913 <label class="iconic"><input type="checkbox" name="c[title_only]" value="1" /><i aria-hidden="true"></i><span class="iconic-label">Search titles only 1914 1915 1916 <span tabindex="0" role="button" 1917 data-xf-init="tooltip" data-trigger="hover focus click" title="Tags will also be searched in content where tags are supported"> 1918 1919 <i class="fa--xf far fa-question-circle u-muted u-smaller"><svg xmlns="http://www.w3.org/2000/svg" role="img" ><title>Note</title><use href="/data/local/icons/regular.svg?v=1790889936#question-circle"></use></svg></i> 1920 </span> 1921 1922 1923 1924 1925 <li> 1926 <label class="iconic"><input type="checkbox" name="c[threadmark_only]" value="1" data-xf-init="disabler" data-container=".js-svThreadmarkLimitedInputs" data-hide="true" /><i aria-hidden="true"></i><span class="iconic-label">Search threadmarked content only</span></label> 1927 1928 </li> 1929 1930 1931 <li class="js-svThreadmarkLimitedInputs" style="display:none;"> 1932 <label class="iconic"><input type="checkbox" name="c[in_threadmark_categories]" value="1" data-xf-init="disabler" data-container=".js-svThreadmarkCategoriesContainer" data-hide="true" /><i aria-hidden="true"></i><span class="iconic-label">In threadmark categoriesâ¦</span></label> 1933 1934 </li> 1935 1936 <li class="js-svThreadmarkCategoriesContainer" style="display:none;"> 1937 1938 <select name="c[threadmark_categories][]" multiple="multiple" class="input"> 1939 <option value="1">Threadmarks</option> 1940 1941 </select> 1942 1943 </li></span></label> 1944 1945 </li> 1946 1947 </ul> 1948 1949 </dd> 1950 </dl> 1951 1952 1953 1954 1955 1956 <dl class="formRow formRow--input"> 1957 <dt> 1958 <div class="formRow-labelWrapper"> 1959 <label class="formRow-label" for="_xfUid-2-1790920781">Posted by</label></div> 1960 </dt> 1961 <dd> 1962 <input type="text" class="input" data-xf-init="auto-complete" name="c[users]" id="_xfUid-2-1790920781" /> 1963 <div class="formRow-explain">You may enter multiple names here.</div> 1964 </dd> 1965 </dl> 1966 1967 1968 1969 1970 1971 <dl class="formRow formRow--input"> 1972 <dt> 1973 <div class="formRow-labelWrapper"> 1974 <label class="formRow-label" for="_xfUid-3-1790920781">Newer than</label></div> 1975 </dt> 1976 <dd> 1977 <input type="date" class="input input--date " name="c[newer_than]" id="_xfUid-3-1790920781" /> 1978 </dd> 1979 </dl> 1980 1981 1982 1983 <dl class="formRow formRow--input"> 1984 <dt> 1985 <div class="formRow-labelWrapper"> 1986 <label class="formRow-label" for="_xfUid-4-1790920781">Older than</label></div> 1987 </dt> 1988 <dd> 1989 <input type="date" class="input input--date " name="c[older_than]" id="_xfUid-4-1790920781" /> 1990 </dd> 1991 </dl> 1992 1993 1994 1995 1996 1997 1998 <dl class="formRow"> 1999 <dt> 2000 <div class="formRow-labelWrapper"> 2001 <label class="formRow-label">Order by</label></div> 2002 </dt> 2003 <dd> 2004 2005 <ul class="inputChoices" role="radiogroup" aria-labelledby="_xfUid-5-1790920781"> 2006 <li class="inputChoices-choice"><label class="iconic iconic--radio"><input type="radio" name="order" value="relevance" checked="checked" /><i aria-hidden="true"></i><span class="iconic-label">Relevance</span></label></li> 2007<li class="inputChoices-choice"><label class="iconic iconic--radio"><input type="radio" name="order" value="date" /><i aria-hidden="true"></i><span class="iconic-label">Date</span></label></li> 2008 2009 </ul> 2010 2011 </dd> 2012 </dl> 2013 2014 2015 2016 2017 </div> 2018 2019 2020 <dl class="formRow formSubmitRow formSubmitRow--sticky" data-xf-init="form-submit-row"> 2021 <dt></dt> 2022 <dd> 2023 <div class="formSubmitRow-main"> 2024 <div class="formSubmitRow-bar"></div> 2025 <div class="formSubmitRow-controls"><button type="submit" class="button button--icon button--icon--search button--primary"><i class="fa--xf far fa-search "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#search"></use></svg></i><span class="button-text">Search</span></button></div> 2026 </div>
2027 </dd> 2028 </dl> 2029 2030 </div> 2031 2032 <input type="hidden" name="search_type" value="" /> 2033 2034 2035 </form> 2036 </div> 2037 2038 2039 </div> 2040 2041 2042 </div> 2043 2044 2045 2046 2047 2048 2049 </div> 2050 </div> 2051 2052 <footer class="p-footer" id="footer"> 2053 <div class="p-footer-inner"> 2054 2055 <div class="p-footer-row"> 2056 2057 <div class="p-footer-row-main"> 2058 <ul class="p-footer-linkList"> 2059 2060 2061 2062 2063 <li> 2064 2065 2066 <a href="/misc/style" data-xf-click="overlay" 2067 data-xf-init="tooltip" title="Style chooser" rel="nofollow"> 2068 <i class="fa--xf far fa-paint-brush "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#paint-brush"></use></svg></i> Light Fan Style 2069 </a> 2070 2071 2072 2073 </li> 2074 2075 2076 <li><a href="/misc/language" data-xf-click="overlay" 2077 data-xf-init="tooltip" title="Language chooser" rel="nofollow"> 2078 <i class="fa--xf far fa-globe "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#globe"></use></svg></i> English (US)</a></li> 2079 2080 2081 </ul> 2082 </div> 2083 2084 <div class="p-footer-row-opposite"> 2085 <ul class="p-footer-linkList"> 2086 2087 2088 <li><a href="/misc/contact" data-xf-click="overlay">Contact us</a></li> 2089 2090 2091 2092 2093 <li><a href="/help/terms/">Terms and rules</a></li> 2094 2095 2096 2097 <li><a href="/help/privacy-policy/">Privacy policy</a></li> 2098 2099 2100 2101 <li><a href="/help/">Help</a></li> 2102 2103 2104 2105 2106 <li><a href="/forums/-/index.rss" target="_blank" rel="noopener" class="p-footer-rssLink" title="RSS"><span aria-hidden="true"><i class="fa--xf far fa-rss "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#rss"></use></svg></i><span class="u-srOnly">RSS</span></span></a></li> 2107 </ul> 2108 </div> 2109 </div> 2110 2111 2112 <div class="p-footer-copyright"> 2113 2114 <a href="https://xenforo.com" class="u-concealed" dir="ltr" target="_blank" rel="sponsored noopener">Community platform by XenForo<sup>®</sup> <span class="copyright">© 2010-2025 XenForo Ltd.</span></a> 2115 2116 2117 </div> 2118 2119 2120 2121 </div> 2122 </footer> 2123</div> <!-- closing p-pageWrapper --> 2124 2125<div class="u-bottomFixer js-bottomFixTarget"> 2126 2127 2128</div> 2129 2130<div class="u-navButtons js-navButtons"> 2131 <a href="javascript:" class="button button--scroll"><span class="button-text"><i class="fa--xf far fa-arrow-left "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#arrow-left"></use></svg></i><span class="u-srOnly">Back</span></span></a> 2132</div> 2133 2134 2135 <div class="u-scrollButtons js-scrollButtons" data-trigger-type="both"> 2136 <a href="#top" class="button button--scroll" data-xf-click="scroll-to"><span class="button-text"><i class="fa--xf far fa-arrow-up "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#arrow-up"></use></svg></i><span class="u-srOnly">Top</span></span></a> 2137 2138 <a href="#footer" class="button button--scroll" data-xf-click="scroll-to"><span class="button-text"><i class="fa--xf far fa-arrow-down "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/regular.svg?v=1790889936#arrow-down"></use></svg></i><span class="u-srOnly">Bottom</span></span></a> 2139 2140 </div> 2141 2142 2143 2144 <form style="display:none" hidden="hidden"> 2145 <input type="text" name="_xfClientLoadTime" value="" id="_xfClientLoadTime" title="_xfClientLoadTime" tabindex="-1" /> 2146 </form> 2147 2148 2149 2150 2151 2152 2153 2154 2155</body> 2156</html> 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169
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.