PageSourceSearch

https://rvovernights.app/

html rvovernights.app collected 2026-09-28 17:24:53 UTC 40,705 bytes, 816 lines download raw bytes

1<!doctype html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5
6<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7
8<title>RVOvernights - Home</title>
9<script type="text/javascript">
10    window.bubble_session_uid = '1790616292534x146594644059588220';
11</script>
vendor: 1 bytes, line 11
11
12<script type="text/javascript">
13    window.headers_source_maps = [["plugin_main_headers_1498171554228x105618760361836540",216,220],["plugin_main_headers_1499780054879x111265002286743550",221,226],["plugin_main_headers_1511219683528x454660121898516500",227,231],["plugin_main_headers_1552401463205x225714219237769200",232,239],["plugin_main_headers_1580238841425x582072028873097200",240,271],["plugin_main_headers_1582601241392x653181519983018000",272,273],["plugin_main_headers_1599995578736x177952455708377100",274,286],["plugin_main_headers_1605374038476x675095182407893000",287,291],["plugin_main_headers_1609209698393x206083649188921340",292,293],["plugin_main_headers_1618916043803x877032991371296800",294,541],["plugin_main_headers_1656156230536x298565765509152800",542,546],["plugin_main_headers_1661717622628x490300288223674400",547,554],["plugin_main_headers_1684902368159x419120401826185200",555,629],["plugin_main_headers_1765444535861x896795619890036700",630,631],["plugin_page_headers_ABj",632,634],["plugin_page_headers_AAC",635,637],["custom_app_header",639,662]]
14</script>
vendor: 1 bytes, line 14
14
15<script type="text/javascript">
16function make_proxy(target, name) {
17  return new Proxy(target, {
18    get: function(target, prop) {
19      if (prop in target) {
20        return target[prop];
21      }
22      throw new Error('The variable ' + name + ' is not fully initialized yet');
23    }
24  });
25}
26window.appquery = make_proxy({
27  app_version: function() { return "live"; },
28  last_change: function() { return "65504620879";},
29}, 'appquery');
30window.Lib = new Proxy(function() {}, {
31  get: function(target, prop) {
32    if (prop === 'is_skeleton') {
33      return true;
34    }
35    throw new Error('The variable ' + Lib + ' is not fully initialized yet');
36  },
37  apply: function() {
38    return make_proxy({
39      current_user: function() {
40        return make_proxy({ id: "1790616292534x146594644059588220" }, 'Lib().current_user');
41      }
42    }, 'Lib()');
43  }
44});
45</script>
vendor: 1 bytes, line 45
45
46<script type="text/javascript">
47function load_error_function (event) {
48  return window.load_error_log.push({ msg: event.message, error_url: event.filename, line: event.lineno, col: event.colno })
49}
50window.load_error_log = [];
51window.addEventListener('error', load_error_function);
52window.disableLoadErrorFunction = function () {
53  window.removeEventListener('error', load_error_function);
54}
55</script>
55
56<meta name="referrer" content="origin">
57<script type="text/javascript">
58if (!window._bubble_page_load_data) {
59  window._bubble_page_load_data = {}
60}
61if (!window._bubble_page_load_data.js_execution_timings) {
62  window._bubble_page_load_data.js_execution_timings = {}
63}
64window._bubble_page_load_data.js_execution_timings['pre_early_js'] = Date.now();
65</script>
65<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/early_js/05ae9fe83d6b755291132aab9d325d70918aafd336da1bd91a41a31c8b25734b/early.js"></script>
65<script type="text/javascript">
66if (!window._bubble_page_load_data) {
67  window._bubble_page_load_data = {}
68}
69if (!window._bubble_page_load_data.js_execution_timings) {
70  window._bubble_page_load_data.js_execution_timings = {}
71}
72window._bubble_page_load_data.js_execution_timings['post_early_js'] = Date.now();
73</script>
vendor: 1 bytes, line 73
73
74<script type="text/javascript">(function () {
75    function onWebFontFinish () {
76        window.google_web_fonts_active = true;
77if (window.google_web_fonts_active_cb) {
78    window.google_web_fonts_active_cb();
79}
80        (function fontface_loaded_snippet (font) {
81  if (window.fontface_loaded == null) {
82    window.fontface_loaded = {}
83  }
84  if (font != null) {
85    window.fontface_loaded[font] = true
86  } else {
87    window.all_fontface_loaded = true
88  }
89  if (window.fontface_webfonts_loaded_cb) {
90    return window.fontface_webfonts_loaded_cb(font)
91  }
92})()
93    }
94    const WebFontConfig = {'google': { families: ["Didact Gothic:regular","Inter:300","Inter:regular","Inter:regular","Inter:500","Inter:500","Inter:600","Inter:600","Inter:700","Inter:800","League Spartan:regular","League Spartan:500","League Spartan:600","League Spartan:700","Manrope:regular","Manrope:500","Manrope:700","Manrope:800","Teachers:regular","Teachers:500","Teachers:700"] },'custom': { families: ["SF Pro Bold","SF Pro Medium","SF Pro Regular"], urls: ["https://e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/f1690907192868x210912477761751260/sfProBold.css","https://e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/f1690907207632x226087860121514180/sfProMedium.css","https://e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/f1690907213900x288645405335887800/sfProRegular.css"]},
95        active: function() {
96            onWebFontFinish()
97        },
98        inactive: function() {
99            console.log('Failed to load all the fonts');
100            onWebFontFinish()
101        },
102        fontinactive: function(family_name, fvd) {
103            console.log('fontinactive being called for ' + family_name + ', Google says the fonts didnt render');
104            onWebFontFinish()
105        }
106    }
107        window.WebFont.load(WebFontConfig);
108})();</script>
vendor: 1 bytes, line 108
108
109<script>
110(function initialize_data() {
111const xhr = new XMLHttpRequest();
112xhr.onreadystatechange = function() {
113    if (this.readyState === 4 && this.status === 200) {
114        const data = JSON.parse(this.responseText);
115
116        function init_data() {
117            data.forEach(function(d) {
118                Lib().db_instance().initialize_data(d.id, d.data, d.type, d.version);
119            })
120        }
121
122        if (window.Lib && window.Lib.is_skeleton == null) {
123            init_data();
124        } else {
125            window.Lib_post_load = init_data;
126        }
127    }
128};
129xhr.open("GET", "https://rvovernights.app/api/1.1/init/data?location=" + encodeURIComponent(window.location.href), true);
130xhr.send();
131})();
132</script>
vendor: 1 bytes, line 132
132
133<script type="text/javascript">window.gm_key = "AIzaSyBXz3n4dOfB5V8h_aw954os-lWgh8K1n64";</script>
vendor: 1 bytes, line 133
133
134<script type="text/javascript">window.glrl_key_status = false;</script>
vendor: 1 bytes, line 134
134
135<script type="text/javascript">window.bubble_page_load_id = "1790616292599x1085";</script>
vendor: 1 bytes, line 135
135
136<script type="text/javascript">window.bubble_plp_token = "1790616292892.Pn3F/JM8Bf+WY+66J/dCXzADtJup4IjA7VCti4YE22Y=";</script>
vendor: 1 bytes, line 136
136
137<script type="text/javascript">window.bubble_is_leanjs = false;</script>
vendor: 1 bytes, line 137
137
138<script type="text/javascript">window.bubble_shim_modules = false;</script>
138
139<link rel="icon" type="image/png" href="https://e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/cdn-cgi/image/w=128,h=,f=auto,dpr=1,fit=contain/f1680793168893x291265414762168060/Group%2034.png" />
140<meta name="fragment" content="!">
141<meta name="description" content="RVOvernights offers a member-based subscription to stay overnight at local businesses.">
142<link rel="canonical" href="https://rvovernights.app/"/>
143<meta property="og:title" content="RVOvernights - Let your guests stay the night" />
144<meta name="twitter:title" content="RVOvernights - Let your guests stay the night" />
145<meta property="og:site_name" content="RVOvernights" />
146<meta name="twitter:site_name" content="RVOvernights" />
147<meta property="og:description" content="RVOvernights offers a member-based subscription to stay overnight at local businesses." />
148<meta name="twitter:description" content="RVOvernights offers a member-based subscription to stay overnight at local businesses." />
149<link rel="image_src" href="https://d1muf25xaso8hp.cloudfront.net/https%3A%2F%2Fe0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io%2Ff1693685759014x379049771760762400%2FWhere%2520will%2520you%2520stay%2520next%2520%252836%2520x%252024%2520in%2529.pdf?w=&h=&auto=compress&dpr=1&fit=max" />
150<meta property="og:image" content="https://d1muf25xaso8hp.cloudfront.net/https%3A%2F%2Fe0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io%2Ff1693685759014x379049771760762400%2FWhere%2520will%2520you%2520stay%2520next%2520%252836%2520x%252024%2520in%2529.pdf?w=&amp;h=&amp;auto=compress&amp;dpr=1&amp;fit=max" />
151<meta name="twitter:image:src" content="https://d1muf25xaso8hp.cloudfront.net/https%3A%2F%2Fe0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io%2Ff1693685759014x379049771760762400%2FWhere%2520will%2520you%2520stay%2520next%2520%252836%2520x%252024%2520in%2529.pdf?w=&amp;h=&amp;auto=compress&amp;dpr=1&amp;fit=max" />
152<meta property="fb:app_id" content="560406789349169" />
153<meta property="og:url" content="https://rvovernights.app/" />
154<meta property="og:type" content="website" />
155<meta name="twitter:card" content="summary_large_image" />
156<meta name="viewport" content="width=device-width,initial-scale=1.0">
157<script type="text/javascript">window._p = '{"id":"app_team_2023","no_branding":true,"import_export_csv":true,"custom_domain":true}';</script>
vendor: 1 bytes, line 157
157
158<script type="text/javascript">window.bubble_page_name = "index";</script>
vendor: 1 bytes, line 158
158
159<script type="text/javascript">window.__bubble_module_mode = false;</script>
159
160<link type="text/css" href="/package/run_css/d2f0836f6c9b9853124a6510e48c46e1960fdbd94ad7f8fa23c6d269e94dbc9d/rvovernightsapp/live/index/xfalse/xfalse/run.css" rel="stylesheet">
161<script type="text/javascript">
162if (!window._bubble_page_load_data) {
163  window._bubble_page_load_data = {}
164}
165if (!window._bubble_page_load_data.js_execution_timings) {
166  window._bubble_page_load_data.js_execution_timings = {}
167}
168window._bubble_page_load_data.js_execution_timings['pre_run_js'] = Date.now();
169</script>
vendor: 1 bytes, line 169
169
170<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/pre_run_jquery_js/dee903a9e36db713e4c86d0cdd96d921e37be0c1293ed8dee29e2e4d7713b9ff/pre_run_jquery.js"></script>
vendor: 1 bytes, line 170
170
171<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/run_js/0e021cfb544305cb0985da3d6c5fc0d1845317f53d1318c1c7805236e6e85c77/xfalse/x29/run.js"></script>
vendor: 1 bytes, line 171
171
172<script type="text/javascript">
173if (!window._bubble_page_load_data) {
174  window._bubble_page_load_data = {}
175}
176if (!window._bubble_page_load_data.js_execution_timings) {
177  window._bubble_page_load_data.js_execution_timings = {}
178}
179window._bubble_page_load_data.js_execution_timings['post_run_js'] = Date.now();
180</script>
vendor: 1 bytes, line 180
180
181<script type="text/javascript">
182if (!window._bubble_page_load_data) {
183  window._bubble_page_load_data = {}
184}
185if (!window._bubble_page_load_data.js_execution_timings) {
186  window._bubble_page_load_data.js_execution_timings = {}
187}
188window._bubble_page_load_data.js_execution_timings['pre_static_js'] = Date.now();
189</script>
189<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/static_js/f7bc56145779e26cc79a5a529f0fe16898773b3f48b2d273d1a6d311d052ba6d/rvovernightsapp/live/index/xnull/xfalse/xfalse/xfalse/static.js"></script>
189<script type="text/javascript">
190if (!window._bubble_page_load_data) {
191  window._bubble_page_load_data = {}
192}
193if (!window._bubble_page_load_data.js_execution_timings) {
194  window._bubble_page_load_data.js_execution_timings = {}
195}
196window._bubble_page_load_data.js_execution_timings['post_static_js'] = Date.now();
197</script>
vendor: 1 bytes, line 197
197
198<script type="text/javascript">
199if (!window._bubble_page_load_data) {
200  window._bubble_page_load_data = {}
201}
202if (!window._bubble_page_load_data.js_execution_timings) {
203  window._bubble_page_load_data.js_execution_timings = {}
204}
205window._bubble_page_load_data.js_execution_timings['pre_dynamic_js'] = Date.now();
206</script>
206<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/dynamic_js/5b296ee77918bf2519293f95e854903df7caa6bb0a2aaf8c7d588103f1010801/rvovernightsapp/live/index/xnull/xfalse/xfalse/en_us/xfalse/xfalse/dynamic.js"></script>
206<script type="text/javascript">
207if (!window._bubble_page_load_data) {
208  window._bubble_page_load_data = {}
209}
210if (!window._bubble_page_load_data.js_execution_timings) {
211  window._bubble_page_load_data.js_execution_timings = {}
212}
213window._bubble_page_load_data.js_execution_timings['post_dynamic_js'] = Date.now();
214</script>
vendor: 1 bytes, line 214
214
215<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_start_execution = Date.now();</script>
215
216<!-- 1498171554228x105618760361836540 -->
217<script type="module">
218    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
219    pluginAnalyzer("1498171554228x105618760361836540");
220</script>
220
221<!-- 1499780054879x111265002286743550 -->
222<script type="module">
223    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
224    pluginAnalyzer("1499780054879x111265002286743550");
225</script>
vendor: 1 bytes, line 225
225
226<script id="apexcharts" src="https://cdnjs.cloudflare.com/ajax/libs/apexcharts/3.37.3/apexcharts.min.js"></script>
226
227<!-- 1511219683528x454660121898516500 -->
228<script type="module">
229    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
230    pluginAnalyzer("1511219683528x454660121898516500");
231</script>
231
232<!-- 1552401463205x225714219237769200 -->
233<script>
234class evaluation{constructor(e=500){this.gap=e,this.queue=[],this.isExecuting=!1,this.url=window.location.href,this.url&&-1!=this.url.indexOf("version-test")&&(this.isTestVersion=!0),window.pendingRemoveLoading&&this.removeLoading()}addToQueue(e,i={},s={}){this.queue.push({command:e,options:i,config:s}),this.processQueue()}addToTopOfQueue(e,i={},s={}){this.queue.unshift({command:e,options:i,config:s})}isPendingRemoveLoading(){return this.queue.length>0&&"removeLoading"==this.queue[0].command}processItem(){this.isExecuting=!0;var data=this.queue[0],allowed=!0;if(data.config.minVersion&&this.releaseVersion&&this.releaseVersion<data.config.minVersion&&(allowed=!1,this.showWarning("Upgrade BDK Native Engine","to use this feature")),data.config.maxVersion&&this.releaseVersion&&this.releaseVersion>data.config.maxVersion&&(allowed=!1),data.config.platform&&this.platform&&this.platform.toLowerCase()!=data.config.platform.toLowerCase()&&(allowed=!1),allowed)try{eval("$agent.trigger('"+data.command+"',"+JSON.stringify(data.options)+");")}catch(e){data.config.errorMessage&&console.log(data.config.errorMessage)}this.isNative&&this.queue.shift(),this.isNative||this.isPendingRemoveLoading||this.addToTopOfQueue("removeLoading"),setTimeout(this.processQueue.bind(this,[!0]),this.gap)}processQueue(e){e?this.queue.length>0?this.processItem():this.isExecuting=!1:!this.isExecuting&&this.queue.length>0&&this.processItem()}removeLoading(){this.isNative||this.pendingRemoveLoading||(this.addToTopOfQueue("removeLoading"),this.processQueue())}showWarning(title,description){this.isTestVersion&&eval("$agent.trigger('showBanner',"+JSON.stringify({title:title,description:description})+");")}}window.nativeprocessor=new evaluation(500);
235</script>
vendor: 1 bytes, line 235
235
236<script>
237window.injectCSS=function(e){let o=document.createElement("style");return o.innerText=e,document.head.appendChild(o),o},window.adjustedPageHeight=!1,window.advancedconfig="",document.addEventListener("DOMContentLoaded",function(){if(window){if(window.advancedconfig)try{window.bdkusersettings=JSON.parse(window.advancedconfig)}catch(e){window.bdkusersettings={}}else window.bdkusersettings={remove_loading:"automatic"};window.nativeprocessor?("manual"!==window.bdkusersettings.remove_loading?window.nativeprocessor.removeLoading():console.log("user will remove loading via workflow"),window.nativeprocessor.addToQueue("sendDeviceInfoToBubble"),window.nativeprocessor.processQueue()):window.pendingRemoveLoading=!0}else console.log("could not find window object")},!1),window.NativeReceivers={AddressBook:{},TakePhoto:{},SelectPhoto:{},Screenshot:{},AppInfo:{},ListTypeMenu:{},Barcode:{},DeviceLocation:{},DeviceVariable:{},HeaderMenuClicked:{},CaptureAudio:{},TakeVideo:{},SelectVideo:{},collectPopup:{},BackButtonPressed:{},PurchaseSuccess_ios:{},PurchaseFailed_ios:{},ReceiptsReceived_ios:{},PurchaseSuccess_android:{},PurchaseFailed_android:{},ReceiptsReceived_android:{},Datepicker:{},Optionpicker:{},Biometrics:{},SmartLogin:{}},window.activeReceivers={AddressBook:null,TakePhoto:null,SelectPhoto:null,Screenshot:null,AppInfo:null,ListTypeMenu:null,Barcode:null,DeviceLocation:null,DeviceVariable:null,HeaderMenuClicked:null,CaptureAudio:null,TakeVideo:null,SelectVideo:null,collectPopup:null,Datepicker:null,Optionpicker:null,Biometrics:null,SmartLogin:null},window.validateData=function(e){return null!=e&&(-1===e.indexOf("{{")&&-1===e.indexOf("$env")&&-1===e.indexOf("$get")&&-1===e.indexOf("$cache")&&-1===e.indexOf("}}"))},window.collectDeviceInfo=function(e,o,i,n,c,t,r,a,d,s,w,v,l,u,f,h,p,g,R,k,N){try{window.bdkNativeInfo={playerId:e,pushToken:o,deviceWidth:i,deviceHeight:n,deviceOS:c,deviceOSVersion:t,deviceLanguage:r,cameraPermissionStatus:a,contactsPermissionStatus:d,audiorecordPermissionStatus:s,externalstoragePermissionStatus:w,locationPermissionStatus:v,versionName:l,versionCode:u,deviceModel:f,bdkRelease:h,biometricsAvailable:"available"==p,smartLoginAvailable:"available"==g},window.validateData(R)&&(window.bdkNativeInfo.appTrackingPermissionStatus=R),window.validateData(k)&&(window.bdkNativeInfo.idfa=k),window.validateData(N)&&(window.bdkNativeInfo.viewType=N),window.nativeprocessor.isNative=!0,window.nativeprocessor.platform=c,window.nativeprocessor.releaseVersion=parseFloat(h),Object.keys(window.NativeReceivers.AppInfo).forEach(function(e){window.NativeReceivers.AppInfo[e](window.bdkNativeInfo)}),"ios"===c.toLowerCase()&&window.detectLinks(),window.nativeprocessor.isNative&&!window.adjustedPageHeight&&(window.injectCSS("body {\n        min-height: calc(100vh - 39px);\n      }\n      .main-page.bubble-element.Page {\n        min-height: calc(100vh - 39px);\n      }"),window.adjustedPageHeight=!0)}catch(e){}},window.checkIfVersion=function(e,o){var i=!0;return o&&Number(window.bdkNativeInfo.bdkRelease)>o?i=!1:Number(window.bdkNativeInfo.bdkRelease)<e&&(i=!1),i},window.getContacts=function(e){try{var o=window.activeReceivers.AddressBook;window.NativeReceivers.AddressBook[o](e)}catch(e){console.log("No receiver found for information")}},window.collectSnapshot=function(e){try{var o=window.activeReceivers.Screenshot;window.NativeReceivers.Screenshot[o](e)}catch(e){console.log("No receiver found for information")}},window.onBiometricAuthentication_ios=function(e,o){try{var i=window.activeReceivers.Biometrics;window.NativeReceivers.Biometrics[i](e,o)}catch(e){console.log("No receiver found for biometrics")}},window.onBiometricAuthentication_android=function(e,o){try{var i=window.activeReceivers.Biometrics;window.NativeReceivers.Biometrics[i](e,o)}catch(e){console.log("No receiver found for biometrics")}},window.onLoginViaCredentials=function(e,o){try{var i=window.activeReceivers.SmartLogin;-1!=e.indexOf("{{")&&(e=null),-1!=o.indexOf("{{")&&(o=null),window.NativeReceivers.SmartLogin[i](e,o)}catch(e){console.log("No receiver found for smartlogin")}},window.pickPhoto=function(e,o,i,n){try{var c=window.activeReceivers.SelectPhoto;window.NativeReceivers.SelectPhoto[c](e,o,i,n)}catch(e){console.log("No receiver found for information")}},window.pickVideo=function(e,o,i,n){try{var c=window.activeReceivers.SelectVideo;window.NativeReceivers.SelectVideo[c](e,o,i,n)}catch(e){console.log("No receiver found for information")}},window.capturePhoto=function(e,o,i,n){try{var c=window.activeReceivers.TakePhoto;window.NativeReceivers.TakePhoto[c](e,o,i,n)}catch(e){console.log("No receiver found for information")}}
237,window.captureVideo=function(e,o,i,n){try{var c=window.activeReceivers.TakeVideo;window.NativeReceivers.TakeVideo[c](e,o,i,n)}catch(e){console.log("No receiver found for information")}},window.collectMenuClick=function(e){try{var o=window.activeReceivers.ListTypeMenu;window.NativeReceivers.ListTypeMenu[o](e)}catch(e){console.log("No receiver found for list type menu information")}},window.collectBarcode=function(e){try{var o=window.activeReceivers.Barcode;window.NativeReceivers.Barcode[o](e)}catch(e){console.log("No receiver found for barcode information")}},window.collectLocation=function(e){try{Object.keys(window.NativeReceivers.DeviceLocation).forEach(function(o){window.NativeReceivers.DeviceLocation[o](e)})}catch(e){console.log("error capturing location info to receivers")}},window.collectDeviceVariable=function(e,o){try{var i=window.activeReceivers.DeviceVariable;window.NativeReceivers.DeviceVariable[i](e,o)}catch(e){console.log("No receiver found for device variable")}},window.headerMenuClicked=function(){try{Object.keys(window.NativeReceivers.HeaderMenuClicked).forEach(function(e){window.NativeReceivers.HeaderMenuClicked[e]()})}catch(e){console.log("error sending header menu click event to receivers")}},window.recordAudio=function(e,o,i,n){try{var c=window.activeReceivers.CaptureAudio;window.NativeReceivers.CaptureAudio[c](e,o,i,n)}catch(e){console.log("No receiver found for information")}},window.collectPopup=function(e){try{var o=window.activeReceivers.collectPopup;window.NativeReceivers.collectPopup[o](e)}catch(e){console.log("No receiver found for information")}},window.collectDateTime=function(e){try{var o=window.activeReceivers.Datepicker;window.NativeReceivers.Datepicker[o](e)}catch(e){console.log("No receiver found for date information")}},window.collectOption=function(e){try{var o=window.activeReceivers.Optionpicker;window.NativeReceivers.Optionpicker[o](e)}catch(e){console.log("No receiver found for option information")}},window.backButtonPressed=function(){try{Object.keys(window.NativeReceivers.BackButtonPressed).forEach(function(e){window.NativeReceivers.BackButtonPressed[e]()})}catch(e){console.log("error sending header menu click event to receivers")}},window.BackButtonPressed=window.backButtonPressed,window.onPurchaseSuccess_ios=function(e){try{Object.keys(window.NativeReceivers.PurchaseSuccess_ios).forEach(function(o){window.NativeReceivers.PurchaseSuccess_ios[o](e)})}catch(e){console.log("error sending successful ios in app purchase data to receivers")}},window.onPurchaseFailed_ios=function(e){try{Object.keys(window.NativeReceivers.PurchaseFailed_ios).forEach(function(o){window.NativeReceivers.PurchaseFailed_ios[o](e)})}catch(e){console.log("error sending failed ios in app purchase data to receivers")}},window.onReceiptDataReceived_ios=function(e){try{Object.keys(window.NativeReceivers.ReceiptsReceived_ios).forEach(function(o){window.NativeReceivers.ReceiptsReceived_ios[o](e)})}catch(e){console.log("error sending receipts of ios in app purchase data to receivers")}},window.onPurchaseSuccess_android=function(e){try{Object.keys(window.NativeReceivers.PurchaseSuccess_android).forEach(function(o){window.NativeReceivers.PurchaseSuccess_android[o](e)})}catch(e){console.log("error sending successful android in app purchase data to receivers")}},window.onPurchaseFailed_android=function(e){try{Object.keys(window.NativeReceivers.PurchaseFailed_android).forEach(function(o){window.NativeReceivers.PurchaseFailed_android[o](e)})}catch(e){console.log("error sending failed android in app purchase data to receivers")}},window.onReceiptDataReceived_android=function(e){try{Object.keys(window.NativeReceivers.ReceiptsReceived_android).forEach(function(o){window.NativeReceivers.ReceiptsReceived_android[o](e)})}catch(e){console.log("error sending receipts of android in app purchase data to receivers")}},window.detectLinks=function(){if(!window.detection_status){console.log("started detection");var e=document.body,o={childList:!0,subtree:!0},i=function(e){if(!window.need_to_resolve){for(var o=0;o<e.length;++o)e[o].addedNodes.length>0&&document.querySelectorAll("a[target='_blank']").length>0&&(window.need_to_resolve=!0);window.need_to_resolve&&(document.querySelectorAll("a[target='_blank']").forEach(function(e){-1==e.href.indexOf("https://bubble.io/?utm_source=app_mention")&&(e.target="_self")}),window.need_to_resolve=!1)}},n=new MutationObserver(i);n.observe(e,o)}return window.detection_status=!0,!0};
238</script>
vendor: 1 bytes, line 238
238
239<script src="https://e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/f1664489218713x811279010926034800/URI.min.js"></script>
239
240<!-- 1580238841425x582072028873097200 -->
241<style>
242    
243    blockquote {
244        border-left: 4px solid #ccc;
245   		margin-bottom: 5px;
246    	margin-top: 5px;
247        padding-left: 16px;
248    }
249    
250    ul, ol {
251    	list-style-position: outside;
252    }
253    
254    .ql-font .ql-picker-label:first-child::before {
255    	font-family: inherit;    
256        overflow: hide;
257    }
258    
259    .ql-font .ql-picker-label {
260        overflow: hidden;
261    }
262    
263    .regular-header-icon {
264        color: #444;
265    }
266    
267    .tooltip-header-icon {
268        color: #ccc;
269    }
270    
271</style>
272<!-- 1582601241392x653181519983018000 -->
273<script src="https://e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/f1581785748644x612892952682557000/papaparse.min.js"></script>
273
274<!-- 1599995578736x177952455708377100 -->
275<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/swiper-bundle.min.css"/>
276<script src="https://cdn.jsdelivr.net/npm/[email protected]/swiper-bundle.min.js"></script>
276
277<style>
278    .swiper-slide {
279        -webkit-transform-style: preserve-3d !important;
280        -webkit-backface-visibility: hidden !important;
281    }
282
283    .swiper-wrapper {
284        -webkit-transform-style: preserve-3d !important;
285    }
286</style>
287<!-- 1605374038476x675095182407893000 -->
288<script type='module'>
289  import {trackPluginUsage} from 'https://pluginpul.se/initialize.min.js'
290  trackPluginUsage('1605374038476x675095182407893000');
291</script>
291
292<!-- 1609209698393x206083649188921340 -->
293<script src="//meta.cdn.bubble.io/f1671767180129x463026607934953200/qrcode.js" type="text/javascript" charset="utf-8"></script>
293
294<!-- 1618916043803x877032991371296800 -->
295<script defer src="//meta.cdn.bubble.io/f1678588430465x230578802325048350/icons.js"></script>
295
296
297<script>
298  const allSelect2 = /\[(hi.*)\](.*)\[\/(hi.*)\]/;
299  const colormatch2 = /#[0-9A-f]{3,6}#/;
300  const fillMatcher2 = /fill="currentColor"/;
301
302  function replaceIcon(btn) {
303    const btn_nodes = Array.from(btn.childNodes);
304
305    if (!btn_nodes) return;
306
307    const text_node = btn_nodes.find(
308      (node) => node.nodeName === "#text" && node.data.trim().length > 0
309    );
310
311    if (!text_node) return;
312
313    let content = text_node.data;
314
315    let iconColor = content.match(colormatch2);
316
317    content = content.replace(colormatch2, "");
318
319    const iconMarkup = content.match(allSelect2);
320    if (!iconMarkup) {
321      if (btn.getAttribute("data-heroicon-last-text")) {
322        const current_text = Array.from(btn.childNodes).find(
323          (node) => node.nodeName === "#text" && node.data.trim().length > 0
324        );
325        if (
326          current_text &&
327          current_text.data !== btn.getAttribute("data-heroicon-last-text")
328        ) {
329          btn.setAttribute("data-heroicon-last-text", current_text.data);
330          btn.childNodes.forEach((node) => {
331            if (node.nodeName !== "#text") {
332              node.remove();
333            }
334            if (node.nodeName === "#text" && node.data.trim().length == 0) {
335              node.remove();
336            }
337          });
338        }
339      }
340      return;
341    }
342
343    if (iconMarkup[1] != iconMarkup[3]) return;
344
345    const iconProps = iconMarkup[1].slice(2).split("-");
346
347    const props = {
348      name: iconMarkup[2],
349      size: "20px",
350      color: btn.innerHTML.match(colormatch2)
351        ? btn.innerHTML.match(colormatch2)[0].slice(0, -1)
352        : undefined,
353      set: "mini",
354      position: undefined,
355      iconHTML: undefined,
356      style: 'style="',
357      spacing: "8px",
358      stroke_width: "1.5px",
359    };
360
361    if (props.color) {
362      props.iconHTML = props.iconHTML.replace(
363        fillMatcher2,
364        "fill=" + iconColor
365      );
366    }
367
368    iconProps.forEach((property) => {
369      switch (property) {
370        case "l":
371          props.position = "left";
372          break;
373        case "r":
374          props.position = "right";
375          break;
376        case "b":
377          props.position = "center";
378          break;
379        case "o":
380          props.set = "outlined";
381          break;
382        case "s":
383          props.set = "solid";
384          break;
385      }
386      if (/m[0-99]+/.test(property)) {
387        const matched = property.match(/m([0-99]+)/);
388        props.spacing = `${matched[1]}px`;
389      }
390      if (/w[0-99]+/.test(property)) {
391        const matched = property.match(/w([0-99]+)/);
392        props.stroke_width = `${matched[1]}px`;
393      }
394
395      const number = Number(property);
396
397      if (number && number > 0) {
398        props.size = String(number) + "px";
399      }
400    });
401
402    if (window[`heroicons_${props.set}`].has(props.name)) {
403      props.iconHTML = window[`heroicons_${props.set}`].get(props.name);
404    } else {
405      return;
406    }
407
408    btn.classList.add("heroicon");
409
410    props.style += ` ${props.set == "outlined" ? ` stroke-width: ${props.stroke_width};` : ""
411      } height: ${props.size}; width: ${props.size}; `;
412
413    let insertBefore = props.iconHTML.lastIndexOf("viewBox");
414
415    btn.childNodes.forEach((node) => {
416      if (node.nodeName === "#text" && node.data.trim().length > 0) {
417        node.data = node.data.replace(allSelect2, "");
418        btn.setAttribute("data-heroicon-last-text", node.data);
419      }
420    });
421
422    btn.childNodes.forEach((node) => {
423      if (node.nodeName !== "#text") {
424        node.remove();
425      }
426      if (node.nodeName === "#text" && node.data.trim().length == 0) {
427        node.remove();
428      }
429    });
430
431    if (props.position == "left") {
432      let styledHTML =
433        props.iconHTML.substring(0, insertBefore) +
434        props.style +
435        `margin-right:${props.spacing}"` +
436        props.iconHTML.substring(insertBefore);
437      btn.insertAdjacentHTML("afterbegin", styledHTML);
438    } else if (props.position == "right") {
439      let styledHTML =
440        props.iconHTML.substring(0, insertBefore) +
441        props.style +
442        `margin-left:${props.spacing}"` +
443        props.iconHTML.substring(insertBefore);
444      btn.insertAdjacentHTML("beforeend", styledHTML);
445    } else {
446      let styledHTML =
447        props.iconHTML.substring(0, insertBefore) +
448        props.style +
449        `"` +
450        props.iconHTML.substring(insertBefore);
451      btn.insertAdjacentHTML("beforeend", styledHTML);
452    }
453  }
454
455  document.addEventListener("DOMContentLoaded", function () {
456    let config = {
457      subtree: true,
458      childList: true,
459      attributes: true,
460      characterData: true,
461    };
462
463    let callback = function (mutationsList, observer) {
464      for (let mutation of mutationsList) {
465        if (mutation.target.tagName === "BUTTON") {
466          replaceIcon(mutation.target);
467        } else if (mutation.addedNodes) {
468          mutation.addedNodes.forEach((node) => {
469            if (node.tagName == "BUTTON") {
470              replaceIcon(node);
471            }
472          });
473        } else if (
474          mutation.target.nodeName === "#text" &&
475          mutation.target.parentElement &&
476          mutation.target.parentElement.tagName === "BUTTON"
477        ) {
478          replaceIcon(mutation.target.parentElement);
479        }
480        Array.from(document.querySelectorAll("button")).forEach((btn) =>
481          replaceIcon(btn)
482        );
483      }
484    };
485
486    const observer = new MutationObserver(callback);
487    observer.observe(document, config);
488  });
489</script>
489
490
491<style>
492  .animate-spin>circle {
493    color: inherit;
494    opacity: 25%;
495  }
496
497  .animate-spin {
498    animation: 1s linear infinite spin;
499  }
500
501  @keyframes spin {
502    from {
503      transform: rotate(0);
504    }
505
506    to {
507      transform: rotate(360deg);
508    }
509  }
510
511  .heroicon {
512    display: inline-flex !important;
513    align-items: center !important;
514    justify-content: center;
515    gap: 0 !important;
516  }
517
518  .dots_one {
519    stroke: currentColor;
520    fill: currentColor;
521    animation: dots 0.8s linear infinite;
522    animation-delay: -0.8s;
523    margin-right: 1px;
524  }
525
526  .dots_two {
527    animation-delay: -0.65s;
528  }
529
530  .dots_three {
531    animation-delay: -0.5s;
532  }
533
534  @keyframes dots {
535
536    93.75%,
537    100% {
538      opacity: 0.2;
539    }
540  }
541</style>
542<!-- 1656156230536x298565765509152800 -->
543<script type="module">
544    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
545    pluginAnalyzer("1656156230536x298565765509152800");
546</script>
546
547<!-- 1661717622628x490300288223674400 -->
548<script type="text/javascript">
549    (function(c,l,a,r,i,t,y){
550        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
551        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i+"?ref=bubble";
552        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
553    })(window, document, "clarity", "script", "oo7dyj80ck");
554</script>
554
555<!-- 1684902368159x419120401826185200 -->
556<script>
557    function customReplacer(key, value) {
558        if (!value) {
559            return value;
560        }
561        if (value.get) {
562            if (value.length) {
563                // a Bubble list
564                return value.get(0, value.length());
565            }
566            if (value.get("_id")) {
567                return value.get("_id");
568            }
569            if (value.get("display")) {
570                return value.get("display");
571            }
572        }
573        return value;
574    };
575    
576    function customJSONStringify(json) {
577		return JSON.stringify(json, customReplacer);
578    };
579    
580    var originalSetItem = Storage.prototype.setItem;
581    var originalRemoveItem = Storage.prototype.removeItem;
582    var originalClear = Storage.prototype.clear;
583    
584    function checkStorageIdentifier(storage) {
585        if (storage === window.localStorage) {
586            return "local";
587        }
588        if (storage === window.sessionStorage) {
589            return "session";
590        }
591        return null;
592    }
593
594    function patchedSetItem(keyName, keyValue) {
595        originalSetItem.apply(this, arguments);
596		const identifier = checkStorageIdentifier(this);
597        if (!identifier) return;
598        const event = new CustomEvent(`storage:${identifier}:set`, {detail: {keyName: keyName, keyValue: keyValue}});
599        window.dispatchEvent(event);
600    };
601    
602    if (Storage.prototype.setItem !== patchedSetItem) {
603        Storage.prototype.setItem = patchedSetItem;
604    }
605
606    function patchedRemoveItem(keyName) {
607        originalRemoveItem.apply(this, arguments);
608		const identifier = checkStorageIdentifier(this);
609        if (!identifier) return;
610        const event = new CustomEvent(`storage:${identifier}:remove`, {detail: {keyName: keyName}});
611        window.dispatchEvent(event);
612    };
613    
614    if (Storage.prototype.removeItem !== patchedRemoveItem) {
615        Storage.prototype.removeItem = patchedRemoveItem;
616    }
617
618    function patchedClear() {
619        originalClear.apply(this, arguments);
620        const identifier = checkStorageIdentifier(this);
621        if (!identifier) return;
622        const event = new CustomEvent(`storage:${identifier}:clear`);
623        window.dispatchEvent(event);
624    };
625
626	if (Storage.prototype.clear !== patchedClear) {
627        Storage.prototype.clear = patchedClear;
628    }
629</script>
629
630<!-- 1765444535861x896795619890036700 -->
631<meta name="buildprint-plugin-verification" content="buildprint-verify-sqqpw9kvkx2g37u8">
632<!-- ABj -->
633<style>.hicon {  transition-property: fill, stroke;  transition-duration: var(--transition-duration);  transition-timing-function: var(--transition-easing);}</style>
634
635<!-- AAC -->
636<!-- 
636<script type="text/javascript" id="toast-notifications" src="//e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/f1699658967437x634928126656080600/toast.js"></script>
636 -->
637
638<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_end_execution = Date.now();</script>
638
639<!-- custom app meta header -->
640<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
641
642
643<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
643
644    
644<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data.min.js"></script>
644
645
646<!-- Global site tag (gtag.js) - Google Ads -->
vendor: 64 bytes, lines 646-647
646
647<script async src="https://www.googletagmanager.com/gtag/js?id=
647AW-11448986253
vendor: 12 bytes, line 647
647"></script>
648<script>
649  
vendor: 138 bytes, lines 649-654
649window.dataLayer = window.dataLayer || [];
650  function gtag() { dataLayer.push(arguments); }
651
652  gtag('js', new Date());
653
654  gtag('config', '
654AW-11448986253
vendor: 7 bytes, lines 654-656
654');
655
656  
656gtag('set', 'linker', {
657    'domains': ['rvovernights.com', 'rvovernights.app'],
658    'accept_incoming': true,
659    'decorate_forms': true,
660    'url_position': 'query'
661  });
662</script>
662
663</head>
664<body>
664<script type="text/javascript">
665window.addEventListener('DOMContentLoaded', function () {
666  if (window.appquery == null) {
667    (function() {
668    const html = `
669      <div class="error-card">
670        <div class="error-section">
671          <div class="error-title">Your browser was unable to load some necessary resources</div>
672          <div class="error-message">Contact your IT network administrator to allow access to:
673    • d3dqmih97rcqmh.cloudfront.net
674    • e0a96cc2463e889cd2914f75aaab2cb7.cdn.bubble.io/
675    • d1muf25xaso8hp.cloudfront.net</div>
676        </div>
677      </div>
678    `
679
680    const css = document.createElement('style')
681    css.type = 'text/css'
682    css.appendChild(
683      document.createTextNode(`
684      .error-overlay {
685        width: 100%;
686        height: 100%;
687        background: rgba(0,0,0,0.30);
688        overflow: hidden;
689        display: flex;
690        justify-content: center;
691        align-items: flex-start;
692        position: fixed;
693        inset: 0;
694        z-index: 999999;
695      }
696
697      .error-card {
698        width: 500px;
699        margin: 40px;
700        background: white;
701        box-shadow: 0px 1px 2px rgba(0,0,0,0.10);
702        border-radius: 8px;
703        display: flex;
704        flex-direction: column;
705      }
706
707      .error-section {
708        padding: 40px;
709        display: flex;
710        flex-direction: column;
711        gap: 12px;
712      }
713
714      .error-title {
715        color: #1A1A1A;
716        font-size: 18px;
717        font-family: Arial, sans-serif;
718        font-weight: 600;
719        line-height: 28px;
720      }
721
722      .error-message {
723        color: #525252;
724        font-size: 14px;
725        font-family: Arial, sans-serif;
726        font-weight: 400;
727        line-height: 20px;
728        white-space: pre-wrap;
729      }
730    `)
731    )
732    document.head.appendChild(css)
733
734    const container = document.createElement('div')
735    container.className = 'error-overlay'
736    container.innerHTML = html
737    document.body.appendChild(container)
738  })()
739    httpRequest = new XMLHttpRequest();
740httpRequest.open('POST', '/user/m', true);
741httpRequest.setRequestHeader('Content-Type', 'application/json');
742httpRequest.send(JSON.stringify({measures: {page_load_error: 1, url: document.location.href, errors: window.load_error_log}}));
743  };
744});
745</script>
745<script type="text/javascript">window.addEventListener('DOMContentLoaded', function () {if (window.appquery && window.app == null) {(function() {
746    const html = `
747      <div class="error-card">
748        <div class="error-section">
749          <div class="error-title">Your browser was unable to load the application</div>
750          <div class="error-message">We&#39;ve been notified of the issue. Please try again in a few moments and make sure not to use ad-blockers.</div>
751        </div>
752      </div>
753    `
754
755    const css = document.createElement('style')
756    css.type = 'text/css'
757    css.appendChild(
758      document.createTextNode(`
759      .error-overlay {
760        width: 100%;
761        height: 100%;
762        background: rgba(0,0,0,0.30);
763        overflow: hidden;
764        display: flex;
765        justify-content: center;
766        align-items: flex-start;
767        position: fixed;
768        inset: 0;
769        z-index: 999999;
770      }
771
772      .error-card {
773        width: 500px;
774        margin: 40px;
775        background: white;
776        box-shadow: 0px 1px 2px rgba(0,0,0,0.10);
777        border-radius: 8px;
778        display: flex;
779        flex-direction: column;
780      }
781
782      .error-section {
783        padding: 40px;
784        display: flex;
785        flex-direction: column;
786        gap: 12px;
787      }
788
789      .error-title {
790        color: #1A1A1A;
791        font-size: 18px;
792        font-family: Arial, sans-serif;
793        font-weight: 600;
794        line-height: 28px;
795      }
796
797      .error-message {
798        color: #525252;
799        font-size: 14px;
800        font-family: Arial, sans-serif;
801        font-weight: 400;
802        line-height: 20px;
803        white-space: pre-wrap;
804      }
805    `)
806    )
807    document.head.appendChild(css)
808
809    const container = document.createElement('div')
810    container.className = 'error-overlay'
811    container.innerHTML = html
812    document.body.appendChild(container)
813  })()}});</script>
813
814<img style="display: none;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />
815</body>
816</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.