<!DOCTYPE html>
<html class='{{ globalState.displayAlignment }}' lang='{{ selectedLocale.lang_code }}'>
<head>
<meta charset='UTF-8'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=no' name='viewport'>
<meta content='black-translucent' name='apple-mobile-web-app-status-bar-style'>
<meta content='yes' name='apple-mobile-web-app-capable'>
<meta name='google' value='notranslate'>
<meta content='K0MakaChlI5s9r7Y8jDMKgqkK4T23K--eikmGGFBics' name='google-site-verification'>
<meta content='3710747612763141776375' property='qc:admins'>
<title>Kaligo - 900,000 Hotels. Incredible Rewards.</title>
<meta content='Book hotels &amp; earn miles rapidly to get flights or upgrades on over 70 airlines' name='description'>
<base href='/'>
<!-- DNS prewarming to avoid intermitten delay in dns resolution -->
<link href='//s3-ap-southeast-1.amazonaws.com' rel='dns-prefetch'>
<link href='//d2xr67b5foriew.cloudfront.net' rel='dns-prefetch'>
<link href='//cloud.typography.com' rel='dns-prefetch'>
<link href='//www.google-analytics.com' rel='dns-prefetch'>
<link href='//kaligopress.herokuapp.com' rel='dns-prefetch'>
<link href='https://www.kaligo.com/assets/application-343e7ec5d91ec2b1306749f1f1377921a6dd7a4666ee69a2e010b98c9b85373b.css' media='all' rel='stylesheet'>
<link href='https://www.kaligo.com/assets/v2/kaligo-927a78c29168cef9b01b99c926ff1e3a6d12d8cbb122a2dcad960d634a27885f.css' media='all' rel='stylesheet'>
<link href='https://www.kaligo.com/assets/v2/kaligo2-0d92c5db2621d4f912e895bf2610c337d09e34b92ff2c49971d9c80c384f2cbb.css' media='all' rel='stylesheet'>

<link href='https://www.kaligo.com/assets/whitelabel/vma/vma-ca0c12675f56472cf8145a344df4627de5f7070affbdef6a3e9751c275ead7dc.css' media='all' rel='stylesheet'>
<script src="https://www.kaligo.com/packs/518-27d071be855dc3930416.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/552-47046f233370c1d19ac7.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/779-1b094dcc8b2eecbf6cf3.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/496-2ee31a15b6ade056bcbf.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/936-b9df9a28e5874f41edc1.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/508-f592daa7a63d5df8b08e.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/vma-f91c820b9ca67949e9b7.js" defer="defer"></script>
<link rel="stylesheet" href="https://www.kaligo.com/packs/css/552-b2a6f535.css" defer="defer" />
<!-- Unfortunately Stripe does not recommend self-hosting this JS file, so we load from CDN -->
<script src='https://js.stripe.com/v3/'></script>
<script>
  var stripe = Stripe('pk_live_cX7OHHaQlSdUvzoiHAggzbvi00YFCR5XLZ')
</script>

<script src='https://www.kaligo.com/assets/jquery.min-1f0d066ae70fef9e51ba021950d35ac19371c126be52c2bc09a9ab11268819a5.js'></script>
<script src='//assets.adobedtm.com/aaa86c73d744/e3185619c50a/launch-e70ac855b712.min.js'></script>
<!-- Unfortunately Stripe does not recommend self-hosting this JS file, so we load from CDN -->
<script src='https://js.stripe.com/v2/'></script>
<script>
  Stripe.setPublishableKey('pk_live_cX7OHHaQlSdUvzoiHAggzbvi00YFCR5XLZ')
</script>

<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="R85WXKoNaG9XWBhM_TAHt201dXlbeaCYA6jMEDGKc91XasJCLPb0BP9Ko_mQW2SEPo3JrYTXSvo9VlLhzATYug" />

<!-- favicon types -->
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='https://www.kaligo.com/assets/favico/favicon.metro0-c9c6d9cbce1539c6cba06ce098c0235c19efb1bd69da55fe246ba5ecc808cb7c.png' name='msapplication-TileImage'>
<meta content='https://www.kaligo.com/assets/favico/favicon.metro70-35cd69a913787edd720a90a298db7e4f1590daebc45d1737ca74f57d7580a92b.png' name='msapplication-square70x70logo'>
<meta content='https://www.kaligo.com/assets/favico/favicon.metro150-1a229b585081db3c0fb21799a4b82229dad0387051f9026728de25a2615e8b2b.png' name='msapplication-square150x150logo'>
<meta content='https://www.kaligo.com/assets/favico/favicon.metro3115-37d795dc6315e652eca772b9915a1b6f11bb5f18748d7f9387a326b5e94bd876.png' name='msapplication-wide310x150logo'>
<meta content='https://www.kaligo.com/assets/favico/favicon.metro310-9e03c36b39cd1e02c21bbcf6343fb7d35917ea99459031d54107f5a6a3f6e117.png' name='msapplication-square310x310logo'>
<link href='https://www.kaligo.com/assets/favico/favicon-985e872eb37f914de0eb5ed2e918db0d435298b7816360902d11a5698ed1e4e1.ico' rel='shortcut icon' type='image/x-icon'>
<link href='https://www.kaligo.com/assets/favico/favicon.72-1be6841cb374d17cf87cb298a71ff867eeb64c3aaae6fe8ca5b1b54f6a041283.png' rel='apple-touch-icon-precomposed' sizes='72x72'>
<link href='https://www.kaligo.com/assets/favico/favicon.120-6380a60387ead5943725f9a61df02f2f7ff2c2972763f3acc7ad9c640f71143e.png' rel='apple-touch-icon-precomposed' sizes='120x120'>
<link href='https://www.kaligo.com/assets/favico/favicon.144-33061a685bba6d2f8c9b27498b9530014cf64d93fb64566af34e9f274da84491.png' rel='apple-touch-icon-precomposed' sizes='144x144'>
<link href='https://www.kaligo.com/assets/favico/favicon.152-aac4cd5451103ab75ae1b0f5b342c6d52008f68587161fc45ee3374a35e0435d.png' rel='apple-touch-icon-precomposed' sizes='152x152'>
<link href='https://www.kaligo.com/assets/favico/favicon.228-235f69a27aa27c8698358e3177c68ca90b2025deb4a13ff87042d1e2606d456d.png' rel='icon' sizes='228x228'>
<link href='https://www.kaligo.com/assets/favico/favicon-985e872eb37f914de0eb5ed2e918db0d435298b7816360902d11a5698ed1e4e1.ico' rel='shortcut icon' type='image/x-icon'>
</head>
<body class='{{ $root.navBarClass }} locale-{{selectedLocale.code}} currency-{{selectedCurrency.code}}' ng-class='lockBody' ng-controller='MainCtrl' watch-width=''>
<!-- Load tracking libraries only for the production environment to reduce noise -->
<google-analytics></google-analytics>
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MH3SH9" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-MH3SH9');</script>
<!-- End Google Tag Manager -->


<div id='floodlight_container'></div>
<div id='checkout_enrollment_form' style='display: none'></div>
<style parse-style='$root.landingPage.styles' type='text/css'></style>
<style>
  hotel-result-filter-mobile #mobile-popup-header,
  hotel-result-sort-mobile #mobile-popup-header,
  hotel-result-map-mobile #mobile-popup-header,
  .room-details-modal .title-content {
    background-color: {{ pointsPartner.settings.colors.backgroundColor }};
  }
  .partner-bg-color,
  #search-bottom-sheet {
    background-color: {{ pointsPartner.settings.colors.backgroundColor }};
  }
  .color-points {
    color: {{ pointsPartner.settings.colors.fontColor }};
  }
</style>

<div id='main' ng-cloak='' ng-controller='VmaController' role='main'>
<header ng-controller='NavBarCtrl' role='navigation'>
<div class='impersonated-banner' ng-if='$root.showE2EImpersonatedBanner'>{{ 'You are impersonating user id: ' + $root.userDetails.user.redemption_member_no  }}</div>
<div class='max-size header-content'>
<a id='brand' ng-cloak='' ng-href='#'>
<figure>
<img alt='Virgin Money' cdn-path='/vma/vm.svg'>
</figure>
</a>
<div class='points-available' ng-if='$root.isUserLoggedIn()'>
<a ng-href='{{$root.rdUrl}}/points_activity'>
<span ng-bind='$root.userDetails.user.redemption_points_balance | localeNumberFmt'></span>
<span ng-bind='$root.pointsPartner.shortCurrency'></span>
</a>
</div>
<div class='login-button' ng-if='!$root.isUserLoggedIn()'>
<a ng-href='/whitelabel/vma/login' target='_self'>
<span translate='Login'></span>
</a>
</div>
</div>
</header>

<div class='mainWrapper'>
<div autoscroll='true' class='angularWrapper' ng-view=''></div>

</div>
<div class='overlay ng-hide hidden-md hidden-lg' ng-click='globalState.showNavMenu = false' ng-show='globalState.showNavMenu'></div>
<footer class='ng-cloak' ng-class='globalStateService.currentPage'>
<div class='max-size footer-container'>
<span translate='Virgin Money 2026'></span>
</div>
<div class='max-size footer-container'>
<div class='links'>
<a class='link' href='https://virginmoney.com.au/virgin-money-app/in-app/help-and-support/faqs/loyalty' translate='FAQ'></a>
<a class='link' href='https://virginmoney.com.au/virgin-money-app/in-app/terms-and-conditions' translate='Terms &amp; Conditions'></a>
<a class='link' href='https://virginmoney.com.au/virgin-money-app/in-app/terms-and-conditions' translate='Privacy Policy'></a>
<a class='link' href='https://virginmoney.com.au/virgin-money-app/in-app/help-and-support/get-in-touch' translate='Contact us'></a>
</div>
</div>
</footer>

</div>
<div class='hidden-lg hidden-md ng-cloak ng-hide' id='menu-popup' ng-class='{&#39;is-shown&#39;: globalState.showNavMenu}' ng-controller='NavBarCtrl' ng-show='globalState.loaded'>
<div class='wrapper'>
<a class='closer' ng-click='globalState.showNavMenu = false'>✕</a>
<div class='nav-group-box'>
<div class='nav-list-item'>
<div class='nav-label' translate='Language'></div>
<div class='nav-value'>
<div class='flag flag-{{ selectedLocale.flag_code }}'></div>
<div class='nav-language-text' ng-bind='$root.selectedLocale.text'></div>
</div>
<select class='hiding' ng-change='globalState.changeLocale()' ng-model='$root.selectedLocale' ng-options='locale as locale.text for locale in enabledLocales'></select>
</div>
<div class='nav-list-item'>
<div class='nav-label' translate='Currency'></div>
<div class='nav-value' ng-bind='selectedCurrency.text'></div>
<select class='hiding' ng-change='globalState.changeCurrency()' ng-model='$root.selectedCurrency' ng-options='currency as currency.text for currency in allCurrencies'></select>
</div>
</div>
<nav role='navigation'>
<div class='nav-group-box'>
<a class='nav-list-item' ng-click='globalState.openLogin()' ng-if='!$root.userDetails.loggedIn' translate='Login / Sign-up'></a>
<a class='nav-list-item' ng-click='signOut()' ng-if='$root.userDetails.loggedIn' translate='Logout'></a>
<a class='nav-list-item' ng-click='goToAccountPage($event, &quot;booking&quot;)' ng-if='$root.userDetails.loggedIn' translate='Manage bookings'></a>
<a class='nav-list-item' ng-click='goToAccountPage($event, &quot;profile&quot;)' ng-if='$root.userDetails.loggedIn' translate='My profile'></a>
<a class='nav-list-item' ng-click='goToAccountPage($event, &quot;membership&quot;)' ng-if='$root.userDetails.loggedIn &amp;&amp; globalState.displayMemberships' translate='My memberships'></a>
<a class='nav-list-item' ng-click='goToAccountPage($event, &quot;referral&quot;)' ng-if='$root.userDetails.loggedIn &amp;&amp; globalState.displayReferrals' translate='My referrals'></a>
</div>
<div class='nav-group-box'>
<a class='nav-list-item' href='/company/about_us' translate='About us'></a>
<a class='nav-list-item' href='/company/faqs' translate='FAQs'></a>
<a class='nav-list-item' href='/terms/privacy' translate='Privacy policy'></a>
<a class='nav-list-item' href='/terms/terms_condition' translate='Terms of use'></a>
<a class='nav-list-item' href='https://www.kaligosolutions.com/affiliate-program' ng-if='$root.const.config.APPLICATION_TYPE != &#39;whitelabel&#39;' target='_blank' translate='Affiliate program'></a>
<a class='nav-list-item' href='/company/contact_us' translate='Contact us'></a>
</div>
</nav>
</div>
</div>

<div class='select2-drop-mask style-mask ng-cloak' ng-show='isSelect2DropDownOpen'></div>
<div class='cancellation-policy-overlay popup' ng-class='{&#39;is-shown&#39;: $root.globalState.isCancellationPolicyError}'>
<div class='content'>
<div class='warning-img'>
<img src='https://cdn-s3.kaligo.com/assets/images/vma/icons/icn-failed-red.svg'>
</div>
<div class='prompt-title' translate='Bummer!'></div>
<div class='prompt-content' translate='cancellation_policy_error_message'></div>
<a class='btn-backtoroom' href='' ng-click='redirectToHotelDetailsPage()' title='OK' translate='OK'></a>
</div>
</div>

<div class='partner-selector ng-cloak' ng-if='searchState.isSelectingPartner' partner-selector=''>
<div class='modal-backdrop' ng-click='searchState.finishSelectPartner()'></div>
<div class='content'>
<div class='selector-header'>
<span translate='Choose a partner for earning rewards'></span>
<a class='closer pull-right' ng-click='searchState.finishSelectPartner()'>✕</a>
</div>
<div class='selector-footer'>
<img cdn-path='/icon-blk-arrow.png' ng-click='scroll($event)'>
</div>
<div class='selector-body'>
<div class='partner-logo' ng-click='searchState.finishSelectPartner(partner.id)' ng-repeat='partner in pointsPartners.visible'>
<img ng-src='{{ partner.iconUrl }}'>
</div>
</div>
</div>
</div>

<script id='search bar' type='text/ng-template'>
<div class='search-state-bar hidden-xs hidden-sm' ng-controller='HotelsSearchBarCtrl'>
<div class='max-size'>
<div class='col pull-left col-action'>
<div ng-click='editSearch()' ng-show='inResultPage' role='link' tabindex='0'>
<em class='fa fa-search'></em>
<div class='text capitalize' role='link' translate='edit'></div>
</div>
<div ng-click='backToSearchResultsPage()' ng-hide='inResultPage' role='link'>
<em class='fa icon-arrow-left'></em>
<div class='text capitalize' translate='Back'></div>
</div>
</div>
<div class='col pull-left col-destination' ng-click='editSearch()'>
<label class='uppercase font-futura' translate='Destination or Hotel'></label>
<div class='value' ng-bind='$root.destination'></div>
</div>
<div class='col pull-left col-duration'>
<div class='pull-left col-check-in' ng-click='editSearch()'>
<label class='uppercase font-futura' for='checkInDate' translate='Check In'></label>
<div class='value' ng-bind='displayCheckInDateShort'></div>
</div>
<div class='pull-left col-night'>
<div class='night-ball partner-bg-color'>
<span class='night' ng-bind='$root.duration'></span>
<i class='fa fa-moon-o'></i>
</div>
</div>
<div class='pull-left col-check-out' ng-click='editSearch()'>
<label class='uppercase font-futura' for='checkOutDate' translate='Check Out'></label>
<div class='value' ng-bind='displayCheckOutDateShort'></div>
</div>
</div>
<div class='col pull-left col-info'>
<div class='pull-left col-rooms' ng-click='editSearch()'>
<label class='uppercase font-futura' for='roomCount' translate='Rooms'></label>
<div class='value' ng-bind='$root.roomCount'></div>
</div>
<div class='pull-left col-guests' ng-click='editSearch()'>
<label class='uppercase font-futura' for='adultCount' translate='Guests'></label>
<div class='value adult-count'>
<span ng-if='adultCount == 1' translate='count.adult_one'></span>
<span ng-if='adultCount &gt; 1' translate-values='{ count: &#39;{{ adultCount }}&#39; }' translate='count.adult_other'></span>
</div>
<div class='value children-count' ng-if='childrenCount &gt; 0'>
<span class='lowercase' ng-if='childrenCount == 1' translate='count.children_one'></span>
<span class='lowercase' ng-if='childrenCount &gt; 1' translate-values='{ count: &#39;{{ childrenCount }}&#39; }' translate='count.children_other'></span>
</div>
</div>
</div>
<div class='col pull-left col-partner' ng-click='editSearch()'>
<img ng-src='{{ pointsPartner.iconUrl }}'>
</div>
</div>
</div>

</script>
<script id='search summary' type='text/ng-template'>
<div class='search-summary' ng-class='{ &#39;full&#39;: !(globalStateService.currentPage === &#39;hotel-detail&#39;) }'>
<div class='summary-container' ng-click='editSearch()' role='link'>
<div class='search-info'>
<div class='destination-container'>
<div class='destination' ng-bind='::destination'></div>
<div class='modify' translate='Modify'></div>
</div>
<div class='summary'>
<span class='check-in' ng-bind='displayCheckInDateShort'></span><span>&nbsp; - &nbsp;</span><span class='check-out' ng-bind='displayCheckOutDateShort'></span><span>&nbsp | &nbsp;</span><span class='room-count' ng-if='$root.roomCount == 1' translate='Single Room Count'></span>
<span class='room-count' ng-if='$root.roomCount &gt; 1' translate-values='{ count: &#39;{{ $root.roomCount }}&#39; }' translate='Multiple Room Count'></span><span>&nbsp | &nbsp;</span><span ng-if='guestCount == 1' translate='wl.single_guest_count_per_room'></span>
<span ng-if='guestCount &gt; 1' translate-values='{ count: &#39;{{ guestCount }}&#39; }' translate='wl.multiple_guest_count_per_room'></span>
<div class='number-of-days-container'>
<div class='number-of-day' ng-bind='$root.duration'></div>
<div class='night-logo'>
<img cdn-path='/vma/icons/icn-night.svg'>
</div>
</div>
</div>
</div>
</div>
</div>

</script>
<script id='/html/modals/hotels_search' type='text/ng-template'>
<div class='modal-body'>
<a class='modal-closer' ng-click='close()'>
<img cdn-path='/vma/icons/arrowleft-white.svg' class='close-symbol'>
</a>

<hotels-edit-search-form></hotels-edit-search-form>
</div>

</script>
<script id='/html/modals/flights_search_modal' type='text/ng-template'>
<div class='modal-body' modal-accessibility-lock=''>
<a aria-label='Close' class='modal-closer' href='#' ng-click='$ctrl.onCloseButtonClicked()'>✕</a>
<flights-search-form-component on-search='$ctrl.onSearchButtonClicked()'></flights-search-form-component>
</div>


</script>
<script id='/html/modals/price_breakdown_modal' type='text/ng-template'>
<div class='modal-content price-breakdown-modal'>
<div class='price-breakdown-header'>
<h2 translate='checkout.tax_breakdown.label.price_summary'></h2>
</div>
<div class='price-breakdown-line-items'>
<div class='line-item'>
<span class='rooms-and-duration-info lowercase'>
{{ (roomCount == 1 ? ('Single Room Count' | translate) : ('Multiple Room Count' | translate: { count: roomCount }) )}},
{{ duration == 1 ? ('Single Night Count' | translate: { count: duration }): ('Multiple Nights Count' | translate: { count: duration }) }}
</span>
<span class='amount'>{{ currency | codeSymbolFmt }}{{ base_rate }}</span>
</div>
<div class='line-item' ng-if='total_taxes_and_fees &gt; 0'>
<span class='taxes-label'>{{ 'checkout.tax_breakdown.label.taxes_and_fees' | translate }}</span>
<span class='amount'>{{ currency | codeSymbolFmt }}{{ total_taxes_and_fees }}</span>
</div>
</div>
<hr>
<div class='price-breakdown-total'>
<span class='total-label'>Total</span>
<span class='total-value'>
<span class='total-points lowercase' ng-if='points_payment &gt; 0'>
<b>{{ points_payment | localeNumberFmt }} {{ 'Points' | translate }}</b>
</span>
<span ng-if='points_payment &gt; 0 &amp;&amp; cash_payment &gt; 0'>
+
</span>
<span class='total-cash' ng-if='cash_payment &gt; 0'>
<b>{{ currency | codeSymbolFmt }}{{ cash_payment }}</b>
</span>
<span class='total-cash' ng-if='zeroFullCashPayment()'>
<b>{{ currency | codeSymbolFmt }}0</b>
</span>
</span>
</div>
<div class='price-breakdown-note' ng-if='additional_charges &gt; 0'>
<span ng-bind-html='&#39;checkout.tax_breakdown.pay_at_property_callout_content_2&#39; | translate: {
amount: additional_charges,
currency: additional_charges_currency
}'></span>
</div>
<div class='price-breakdown-actions' ng-if='toNextPage'>
<button class='select-btn' ng-click='toNextPage()'>Select</button>
</div>
</div>

</script>
<noscript>
<div class='popUp table-layout ng-hide' id='noscript'>
<div class='col'>
<div class='content'>
<div class='title'>
<em class='fa fa-exclamation-circle navy-blue'></em>
<span>
It seems JavaScript is either disabled or not supported by your browser
</span>
</div>
<p>
For a better experience on Kaligo, enable JavaScript in your browser, then try again.
</p>
<a class='btn-primary btn'>ok</a>
</div>
</div>
</div>
</noscript>

<script>
  if (!window.KaligoConfig) window.KaligoConfig = {};
  // get the subdomain info from the server.
  window.KaligoConfig['subdomain'] = 'bookings.virginmoney';
  window.KaligoConfig['cdnUrl'] = 'https://cdn-s3.kaligo.com';
  window.KaligoConfig['cdnImageUrl'] = 'https://cdn-s3.kaligo.com/assets/images';
  window.KaligoConfig['APP_VERSION'] = '2.2.0';
  window.KaligoConfig['isProduction'] = true;
  window.KaligoConfig['environment'] = "production";
  window.KaligoConfig['highResImagesCdnUrl'] = "https://d2ey9sqrvkqdfs.cloudfront.net";
  
  // Angular v2
  window.KaligoConfig['appVersion'] = '2.2.0';
</script>

<script>
  getQueryParams = function() {
    return window.location.search.split("?")[1];
  }
  
  determineProductType = function(url, options) {
    switch(url) {
      case options.redeemUrl:
        return 'redeem';
      case options.voucherUrl:
        return 'voucher';
      case options.complimentaryNightsUrl:
        return 'complimentary_nights'
      case options.cashVoucherUrl:
        return 'cash-voucher';
      case options.earnUrl:
      default:
        return 'earn';
    }
  }
  
  getDLPInfoFromUrl = function(options) {
    queryParams = getQueryParams()
    if (queryParams) {
      var params = queryParams.split("&");
      for (i = 0; i < params.length; i++ ){
        var item = params[i].split("=");
        if(item[0] == 'landingPage') {
          return {dlp: item[1], productType: determineProductType(item[1], options)}
        }
      }
    }
    // defaults
    return options.default;
  }
</script>

<script>
  (function() {
    window.KaligoConfig['APPLICATION_TYPE'] = 'whitelabel';
  
    var dlpInfo = getDLPInfoFromUrl({
      default: {dlp: 'wl-vma-redeem', productType: 'redeem'},
      earnUrl: "wl-vma-earn",
      redeemUrl: "wl-vma-redeem"
    });
  
    window.KaligoConfig['WHITELABEL_PARTNER'] = 'vma';
    window.KaligoConfig['WHITELABEL_APP'] = 'VMA';
    window.KaligoConfig['DISPLAY_COMPARE_RATE'] = true;
    window.KaligoConfig['PRODUCT_TYPE'] = dlpInfo.productType;
    window.KaligoConfig['DLP'] = dlpInfo.dlp;
  })()
</script>

<script src="https://www.kaligo.com/packs/mapbox-8fab2a3ad54f5353d927.js" defer="defer"></script>

<script>
  var _rollbarConfig = {
    accessToken: "ee3dd83a16454861b33e05486b964faf",
    captureUncaught: true,
    captureUnhandledRejections: false,
    payload: { environment: "production" }
  };
  !function(r){function e(n){if(o[n])return o[n].exports;var t=o[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}var o={};return e.m=r,e.c=o,e.p="",e(0)}([function(r,e,o){"use strict";var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.3.8/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,e){this.options=r,this._rollbarOldOnError=null;var o=s++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}function a(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(e);return n(function(){e.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),e.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=e.autoInstrument;return e.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[o]=t,t})()}}function l(r){return n(function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=o(2),s=0,d=o(3),c=function(r,e){return new t(r,e)},p=d.bind(null,c);t.prototype.loadFull=function(r,e,o,t,a){var l=function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,t,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(e);break}}"function"==typeof a&&a(e)},i=!1,s=e.createElement("script"),d=e.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,o||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw"string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e,e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,e){"use strict";function o(r,e,o){if(r){var t;"function"==typeof e._rollbarOldOnError?t=e._rollbarOldOnError:r.onerror&&!r.onerror.belongsToShim&&(t=r.onerror,e._rollbarOldOnError=t);var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};a.belongsToShim=o,r.onerror=a}}function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),e.handleUncaughtException.apply(e,n),o&&o.apply(r,n)}function t(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){t="[unhandledrejection] error getting `detail` from event"}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,e,o){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(e,r[t].prototype,o)}}function l(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports={captureUncaughtExceptions:o,captureUnhandledRejections:t,wrapGlobals:a}},function(r,e){"use strict";function o(r,e){this.impl=r(e,this),this.options=e,n(o.prototype)}function n(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}o.prototype._swapAndProcessMessages=function(r,e){this.impl=r(this.options);for(var o,n,t;o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=o},function(r,e){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){r=r||{};for(var o,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);
</script>

<div class='popup' ng-hide='!$root.isLoading || globalState.isNewSearch'>
<div class='loading-gif-container'>
<img alt='VMA Loading' class='loading-gif' height='200' loop='infinite' src='https://cdn-s3.kaligo.com/assets/images/vma/icons/loading.gif' width='200'>
</div>
</div>
</body>
</html>
