1<!DOCTYPE html> 2<html> 3<head> 4 <title>DimBud</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6<!-- This site is hosted on Netlify. Anyone can build and deploy a site 7 like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=d91535b6-6974-4fc3-8fa8-bec377a13238 8 Netlify hosting facts for this site: static/SSR served via Netlify Edge. --> 9 <meta name="viewport" content="user-scalable=no, initial-scale=0.5, width=device-width, viewport-fit=cover" /> 10 <link rel="preload" href="script.js?v=1747384430856" as="script"/> 11<link rel="preload" href="media/panorama_703CAFBF_7B4E_770D_41A7_781E8F54D2F2_0/l/3/0_0.jpg?v=1747384430856" as="image"/> 12<link rel="preload" href="media/panorama_703CAFBF_7B4E_770D_41A7_781E8F54D2F2_0/r/3/0_0.jpg?v=1747384430856" as="image"/> 13<link rel="preload" href="media/panorama_703CAFBF_7B4E_770D_41A7_781E8F54D2F2_0/u/3/0_0.jpg?v=1747384430856" as="image"/> 14<link rel="preload" href="media/panorama_703CAFBF_7B4E_770D_41A7_781E8F54D2F2_0/d/3/0_0.jpg?v=1747384430856" as="image"/> 15<link rel="preload" href="media/panorama_703CAFBF_7B4E_770D_41A7_781E8F54D2F2_0/f/3/0_0.jpg?v=1747384430856" as="image"/> 16<link rel="preload" href="media/panorama_703CAFBF_7B4E_770D_41A7_781E8F54D2F2_0/b/3/0_0.jpg?v=1747384430856" as="image"/>
17<script>
vendor: 323 bytes, line 17
17(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,"script","//www.google-analytics.com/analytics.js","ga");ga("create", "
17UA-116087-3
vendor: 35 bytes, line 17
17", "auto"); ga("send", "pageview");
17</script>
17 18<meta name="description" content="Virtual Tour"/> 19<meta name="theme-color" content="#FFFFFF"/> 20
20<script src="lib/tdvplayer.js?v=1747384430856"></script>
20 21
21<script type="text/javascript"> 22 var player; 23 var playersPlayingTmp = []; 24 var isInitialized = false; 25 var isPaused = false; 26 27 function loadTour() 28 { 29 if(player) 30 return; 31 32 var beginFunc = function(event){ 33 if(event.name == 'begin') 34 { 35 var camera = event.data.source.get('camera'); 36 if(camera && camera.get('initialSequence') && camera.get('initialSequence').get('movements').length > 0) 37 return; 38 } 39 40 if(event.sourceClassName == "MediaAudio") 41 return; 42 43 isInitialized = true; 44 45 player.unbind('preloadMediaShow', beginFunc, player, true); 46 player.unbindOnObjectsOf('PanoramaPlayListItem', 'begin', beginFunc, player, true); 47 player.unbind('stateChange', beginFunc, player, true); 48 window.parent.postMessage("tourLoaded", '*'); 49 50 disposePreloader(); 51 52 onVirtualTourLoaded(); 53 }; 54 55 var settings = new TDV.PlayerSettings(); 56 57 settings.set(TDV.PlayerSettings.CONTAINER, document.getElementById('viewer')); 58 settings.set(TDV.PlayerSettings.SCRIPT_URL, 'script.js?v=1747384430856'); 59 settings.set(TDV.PlayerSettings.WEBVR_POLYFILL_URL, 'lib/WebVRPolyfill.js?v=1747384430856'); 60 settings.set(TDV.PlayerSettings.HLS_URL, 'lib/Hls.js?v=1747384430856'); 61 settings.set(TDV.PlayerSettings.QUERY_STRING_PARAMETERS, 'v=1747384430856'); 62 window.tdvplayer = player = TDV.PlayerAPI.create(settings); 63 player.bind('preloadMediaShow', beginFunc, player, true); 64 player.bind('stateChange', beginFunc, player, true); 65 player.bindOnObjectsOf('PanoramaPlayListItem', 'begin', beginFunc, player, true); 66 player.bindOnObject('rootPlayer', 'start', function(e){ 67 var queryDict = {}; location.search.substr(1).split("&").forEach(function(item) {var k = item.split("=")[0], v = decodeURIComponent(item.split("=")[1]);queryDict[k] = v}); 68 var item = undefined; 69 if("media-index" in queryDict){ 70 item = setMediaByIndex(parseInt(queryDict["media-index"]) - 1); 71 } 72 else if("media-name" in queryDict){ 73 item = setMediaByName(queryDict["media-name"]); 74 } 75 else{ 76 item = setMediaByIndex(0); 77 } 78 if(item != undefined && "trigger-overlay-name" in queryDict){ 79 triggerOverlayByName(item, queryDict["trigger-overlay-name"], "trigger-overlay-event" in queryDict ? queryDict["trigger-overlay-event"] : "click"); 80 } 81 82 player.getById('rootPlayer').bind('tourEnded', function(){ 83 onVirtualTourEnded(); 84 }, player, true); 85 }, player, false); 86 87 /* Listen messages */ 88 window.addEventListener('message', function (e) { 89 //Listen to messages for make actions to player in the format function:param1,param2 90 var action = e.data; 91 if (action == 'pauseTour' || action == 'resumeTour') { 92 this[action].apply(this); 93 } 94 }); 95 } 96 97 function pauseTour() 98 { 99 isPaused = true; 100 if(!isInitialized) 101 return; 102 103 var playLists = player.getByClassName('PlayList'); 104 for(var i = 0, count = playLists.length; i<count; i++) 105 { 106 var playList = playLists[i]; 107 var index = playList.get('selectedIndex'); 108 if(index != -1) 109 { 110 var item = playList.get('items')[index]; 111 var itemPlayer = item.get('player'); 112 if(itemPlayer && itemPlayer.pause) 113 { 114 playersPlayingTmp.push(itemPlayer); 115 itemPlayer.pause(); 116 } 117 } 118 } 119 120 player.getById('pauseGlobalAudios')(); 121 } 122 123 function resumeTour() 124 { 125 isPaused = false; 126 if(!isInitialized) 127 return; 128 129 while(playersPlayingTmp.length) 130 { 131 var viewer = playersPlayingTmp.pop(); 132 viewer.play(); 133 } 134 135 player.getById('resumeGlobalAudios')(); 136 } 137 138 function onVirtualTourLoaded() 139 { 140 if(isPaused) 141 pauseTour(); 142 } 143 144 function onVirtualTourEnded() 145 { 146 147 } 148 149 function getRootPlayer() 150 { 151 return window.tdvplayer !== undefined ? window.tdvplayer.getById('rootPlayer') : undefined; 152 } 153 154 function setMediaByIndex(index) 155 { 156 var rootPlayer = getRootPlayer(); 157 if(rootPlayer !== undefined) { 158 return rootPlayer.setMainMediaByIndex(index); 159 } 160 } 161 162 function setMediaByName(name) 163 { 164 var rootPlayer = getRootPlayer(); 165 if(rootPlayer !== undefined) { 166 return rootPlayer.setMainMediaByName(name); 167 } 168 } 169 170 function triggerOverlayByName(item, name, eventName) 171 { 172 var rootPlayer = getRootPlayer(); 173 if(rootPlayer !== undefined) { 174 item.bind('begin', function(e){
175 item.unbind('begin', arguments.callee, this); 176 var overlay = rootPlayer.getPanoramaOverlayByName(item.get('media'), name); 177 if(overlay) 178 rootPlayer.triggerOverlay(overlay, eventName); 179 }, rootPlayer); 180 } 181 } 182 183 function showPreloader() 184 { 185 var preloadContainer = document.getElementById('preloadContainer'); 186 if(preloadContainer != undefined) 187 preloadContainer.style.opacity = 1; 188 } 189 190 function disposePreloader() 191 { 192 var preloadContainer = document.getElementById('preloadContainer'); 193 if(preloadContainer == undefined) 194 return; 195 196 var transitionEndName = transitionEndEventName(); 197 if(transitionEndName) 198 { 199 preloadContainer.addEventListener(transitionEndName, hide, false); 200 preloadContainer.style.opacity = 0; 201 setTimeout(hide, 500); //Force hide. Some cases the transitionend event isn't dispatched with an iFrame. 202 } 203 else 204 { 205 hide(); 206 } 207 208 function hide() 209 { 210 211 preloadContainer.style.visibility = 'hidden'; 212 preloadContainer.style.display = 'none'; 213 } 214 215 function transitionEndEventName () { 216 var el = document.createElement('div'); 217 var transitions = { 218 'transition':'transitionend', 219 'OTransition':'otransitionend', 220 'MozTransition':'transitionend', 221 'WebkitTransition':'webkitTransitionEnd' 222 }; 223 224 var t; 225 for (t in transitions) { 226 if (el.style[t] !== undefined) { 227 return transitions[t]; 228 } 229 } 230 231 return undefined; 232 } 233 } 234 235 function onBodyClick(){ 236 document.body.removeEventListener("click", onBodyClick); 237 document.body.removeEventListener("touchend", onBodyClick); 238 loadTour(); 239 } 240 241 function onLoad() { 242 if (/AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent)) 243 { 244 var inIFrame = false; 245 try 246 { 247 inIFrame = (window.self !== window.top); 248 } 249 catch (e) 250 { 251 inIFrame = true; 252 } 253 if (!inIFrame) 254 { 255 var onResize = function(async) 256 { 257 [0, 250, 1000, 2000].forEach(function(delay) 258 { 259 setTimeout(function() 260 { 261 var viewer = document.querySelector('#viewer'); 262 var scale = window.innerWidth / document.documentElement.clientWidth; 263 var width = document.documentElement.clientWidth; 264 var height = Math.round(window.innerHeight / scale); 265 viewer.style.width = width + 'px'; 266 viewer.style.height = height + 'px'; 267 viewer.style.left = Math.round((window.innerWidth - width) * 0.5) + 'px'; 268 viewer.style.top = Math.round((window.innerHeight - height) * 0.5) + 'px'; 269 viewer.style.transform = 'scale(' + scale + ', ' + scale + ')'; 270 window.scrollTo(0,0); 271 }, delay); 272 }); 273 }; 274 window.addEventListener('resize', onResize); 275 onResize(); 276 } 277 } 278 279 280 if (isOVRWeb()){ 281 showPreloader(); 282 loadTour(); 283 return; 284 } 285 286 showPreloader(); 287loadTour() 288 } 289 290 function playVideo(video) { 291 function isSafariDesktopV11orGreater() { 292 return /^((?!chrome|android|crios|ipad|iphone).)*safari/i.test(navigator.userAgent) && parseFloat(/Version\/([0-9]+\.[0-9]+)/i.exec(navigator.userAgent)[1]) >= 11; 293 } 294 295 function detectUserAction() { 296 var onVideoClick = function(e) { 297 if(video.paused) { 298 video.play(); 299 } 300 video.muted = false; 301 e.stopPropagation(); 302 e.stopImmediatePropagation(); 303 e.preventDefault(); 304 video.removeEventListener('click', onVideoClick); 305 video.removeEventListener('touchend', onVideoClick); 306 }; 307 video.addEventListener("click", onVideoClick); 308 video.addEventListener("touchend", onVideoClick); 309 } 310 311 if (isSafariDesktopV11orGreater()) { 312 video.muted = true; 313 video.play(); 314 } else { 315 var canPlay = true; 316 var promise = video.play(); 317 if (promise) { 318 promise.catch(function() { 319 video.muted = true; 320 video.play(); 321 detectUserAction(); 322 }); 323 } else { 324 canPlay = false; 325 } 326 327 if (!canPlay || video.muted) { 328 detectUserAction(); 329 } 330 } 331 } 332 333 function isOVRWeb(){ 334 return window.location.hash.substring(1).split('&').indexOf('ovrweb') > -1; 335 } 336 </script>
336 337 <style type="text/css"> 338 html, body { width: 100%; height: 100%; margin: 0; padding: 0; padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); } 339 340 #viewer { background-color: #FFFFFF; z-index:1; position:absolute; width: 100%; height: 100%; top: 0; } 341 #preloadContainer { z-index:2; position:relative; width:100%; height:100%; transition: opacity 0.5s; -webkit-transition: opacity 0.5s; -moz-transition: opacity 0.5s; -o-transition: opacity 0.5s;} 342 </style> 343 344</head> 345<body onload="onLoad()"> 346 <div id="preloadContainer" style="background-color:rgba(255,255,255,1)"><div style="z-index: 4; position: absolute; background-image: url('loading/HTMLImage_96B50222_8C31_ADC4_41DF_98A3DF187693.jpg'); background-size: cover; background-repeat: no-repeat; background-position: center center; overflow: hidden; right: 0%; bottom: 0%; width: 100.00%; height: 100.00%"></div><div style="z-index: 5; position: absolute; left: 0%; top: 50%; width: 100.00%; height: 10.00%"><div style="text-align:left; color:#000; "><p STYLE="margin:0; line-height:1.23vmin;"><BR STYLE="letter-spacing:0vmin;color:#777777;font-size:1.23vmin;font-family:Arial, Helvetica, sans-serif;"/></p><p STYLE="margin:0; line-height:1.23vmin;"><BR STYLE="letter-spacing:0vmin;color:#000000;font-size:1.23vmin;font-family:'Segoe UI';"/></p></div></div></div> 347 <div id="viewer"></div> 348</body> 349</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.