a:6:{i:0;s:11653:"				<div class="h1"><h1>Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.highspiritadventures.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.highspiritadventures.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Hong Kong</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.highspiritadventures.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="74666"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_15/445618/133263.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/445618/133263.jpg"  width="150" height="150"    alt="Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour" title="Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					4.5% Govt service tax<br />
Full Day Disneyland Tour<br />
Full Day Ocean Park Tour<br />
Hong Kong by Night Tour<br />
Hong Kong Airport - Macau - Hong Kong Pier Ferry Tickets<br />
Return Macau Pier - Macau Hotel Transfers by Hotel Shuttle Service<br />
Macau Half Day City Tour without Local Lunch<br />
Ngong Ping 360 Standard Cable Car with Transfers (Without Guide) - Private<br />
Hong Kong Pier - Hotel - Hong Kong Airport Transfers<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival & welcome
								</p>
								<p class="aj">Day at leisure<br />
<br />
You have a free day today. After breakfast, you are free to visit places of your choice by yourself to make your trip memorable. While you are finalizing your travel plan, we would be happy to suggest the places you should visit on this day. Although you have an option to book it through us or visit these place by yourself.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Macau Half Day City Tour without Local Lunch
								</p>
								<p class="aj">Macau is a place where the East meets West. In this tour, you will be shown the charm of the Chinese and Portuguese heritages embraced in arrays of modernized architecture. This tour includes TOUR PRICE INLUDES Na Tcha Temple Section of the Old City Walls Ruins of St. Paul’s Fisherman’s Wharf Casino visit Temple of A-Ma</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Hong Kong by Night Tour
								</p>
								<p class="aj">Hong Kong by Night Tour (Visit to The Peak, One Way Peak Tram Ride, Aberdeen Fishing Village, Jewellery Shop Visit, Dragon Pearl Cruise (45 Mins) with Guide Service</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Full Day Disneyland Tour
								</p>
								<p class="aj">Pick Up From The Hotel (08:30 Hrs) and Duration (8 Hrs)<br />
<br />
Enter a magical kingdom inspired by fairy-tale dreams and explore 7 lands—Adventure land, Grizzly Gulch, Mystic Point, Toy Story Land, Fantasy land, Tomorrow land and Main Street, U.S.A.—filled with beauty, excitement and Disney Characters. Brave exotic jungles, tour mysterious museums, blast through mines, sail around the world and rocket into outer space. Catch beloved Disney Characters on parade, spectacular fireworks and terrific live shows packed with music and laughter.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Full Day Ocean Park Tour
								</p>
								<p class="aj">Pickup From the Hotel (08:30 Hrs) and Duration ( 8 Hrs)<br />
<br />
The park has consistently rejuvenated and reinvented itself to better serve its guests, establishing itself as a major tourist attraction both locally and abroad. Since its opening more than 30 years ago, close to 100 million guests have visited Ocean Park. Over 7.7 million guests visit Ocean Park each year. The Summit is home to Ocean Park`s many thrill rides, including Hair Raiser, Whirly Bird, Bumper Blaster, The Flash and Rev Booster. There are also rides such as the Dragon, Eagle, Crazy Galleon, Ferris wheel, Flying Swing and Abyss in the Marine World nearby. The Ocean Theatre is a family favorite where dolphins and sea lions participate in lively daily shows that both entertain and educate its audience about the habitats of these marine mammals. At the unique Sea Jelly Spectacular, guests can interact with 1,000 beautiful sea jellies set against stunning music and multimedia displays. As one of the tallest observation towers in Southeast Asia, the Ocean Park Tower boasts a 360º gently rotating viewing room 72 meters above ground that enables guests to see clear to Aberdeen and the outlying islands. And Pacific Pier brings a slice of the sunny Californian coast to Hong Kong, complete with an interactive underwater exhibit view of the sea lions at play.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Ngong Ping 360 Standard Cable Car with Transfers (Without Guide) - Private
								</p>
								<p class="aj">Lantau Island is almost twice the size of Hong Kong Island and is one of the best-loved outlying islands. With the new development of Ngong Ping Cable Car and NGONG PING CABLE CAR Ngong Ping Cable Car connects Tung Chung and Ngong Ping. The 5.7km cable car journey offers visitors spectacular 360 degree panoramic views of South China Sea, Hong Kong International Airport, Lantau North Country Park and Giant Buddha. NGONG PING VILLAGE It is set on a 1.5 hectare site on Lantau Island, adjacent of Ngong Ping Cable Car Terminal and the Tian Tan Buddha Statue.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Day at leisure
								</p>
								<p class="aj">You have a free day today. After breakfast, you are free to visit places of your choice by yourself to make your trip memorable. While you are finalizing your travel plan, we would be happy to suggest the places you should visit on this day. Although you have an option to book it through us or visit these place by yourself.<br />
<br />
Departure with sweet memories.<br />
This is your last day of the trip. After breakfast, check out from the hotel as per the timings mentioned in the voucher. We suggest that you should keep this day light and check your flight timings before hand. You will be transferred to airport from the pick up location as mentioned in the voucher (If Applicable).</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.highspiritadventures.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="74666"/>
						</form>
						</div>
						
						";i:1;s:99:"Book Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour - 6 Nights / 7 Days Tour Packages";i:2;s:157:"book hong kong 6nights / 7days return airfare ex - bangalore tour - 6 nights / 7 days tour packages, forts and palaces tour packages, hong kong tour packages";i:3;s:196:"High Spirit Adventures offers Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour - 6 Nights / 7 Days tour package, budget Forts and Palaces tour packages for Hong Kong at exciting price.";i:4;s:841:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Hong Kong"        
		                 },
		      "description": "4.5% Govt service tax
Full Day Disneyland Tour
Full Day Ocean Park Tour
Hong Kong by Night Tour
Hong Kong Airport - Macau - Hong Kong Pier Ferry Tickets
Return Macau Pier - Macau Hotel Transfers by Hotel Shuttle Service
Macau Half Day City Tour without Local Lunch
Ngong Ping 360 Standard Cable Car with Transfers (Without Guide) - Private
Hong Kong Pier - Hotel - Hong Kong Airport Transfers",
		      "name": "Hong Kong 6Nights / 7Days Return Airfare Ex - Bangalore Tour",
		      "telephone": "+91-8629029169"
		    }
		    </script>
			";i:5;N;}