So, you’re planning a trip to Portugal and wondering: is Porto worth visiting?
Short answer – yes, for many travellers it absolutely is. But whether it’s the right destination for you is a slightly more complex question.
Porto is one of those places that seems to reveal a little more of itself with every visit. We’ve returned multiple times – during peak summer, during the quiet shoulder seasons, and even in the midst of moody winter rains – and it continues to draw us in.
In this post, we’re breaking down what it is about Porto that keeps bringing us back, and why it might just deserve a spot on your itinerary.
But we’ll also share a few reasons it might not be for everyone – because let’s face it, not every place is a perfect fit. By the end, you’ll have a much clearer picture of whether this city belongs on your travel list.
Quick Guide: Is Porto Worth It?
In a rush? Here’s your TLDR:
- Yes – for incredible Port wine tours, gorgeous views, and a vibe that’s cheaper and friendlier than Lisbon.
- Yes – because it’s walkable, charming, and rich in history.
- Maybe not — if you hate hills, crowds, or rain.
- Definitely not — if you’re only here for a Harry Potter tour.
We’ve broken down all of this (and more) in detail below. Let’s dive in.
Port Tasting That’s More Than Just a Drink
You can’t talk about Porto without talking about Port – not just because it shares the name, but because the culture around it is woven so deeply into the city.
Whether you take a guided tour through one of the historic wine cellars or enjoy a glass riverside with a view of the bridge, it’s an experience that feels inherently tied to being in Porto.
We’ve sampled a fair few over the years, and while they all have something to offer, the one we always recommend is the Calem Port Wine Tour with Fado Show.
There’s something quite special about sipping Port while the melancholic sounds of Fado fill the air – it feels distinctly Portuguese, and deeply memorable. It’s one of those rare activities that feels both tourist-friendly and culturally rich at the same time.
🍷 Want to experience a Fado Show? Get your tickets here!
Views You Don’t Have to Work Too Hard For
For a city built on hills, Porto makes sure the effort of climbing them is rewarded.
There are viewpoints scattered throughout the city that offer glimpses into its layered skyline – a patchwork of red rooftops, azulejo-covered churches, and the glinting river that cuts through it all.
While the famous sunset from Jardim do Morro is understandably popular (and stunning), some of our favourite moments have come from the quieter, but still popular spots – like the time we wandered into Miradouro da Vitória early one morning and had the view entirely to ourselves.
The city was just waking up, the light was soft, and it felt like we’d stumbled into a postcard scene without anyone else noticing.
There are so many great views and photo spots in Porto that we’ve curated an interactive map full of the best Instagram spots – you can grab it here!
A Budget-Friendly City That Doesn’t Feel “Cheap”
One of the biggest surprises about Porto – especially when compared to Lisbon or southern Portugal – is how affordable it still feels.
Despite its rising popularity, you can enjoy a weekend in Porto without draining your travel fund.
Accommodation tends to be more reasonably priced, and meals out don’t require skipping dinner the next night to balance the budget.
We’ve done Porto on both ends of the travel style spectrum – staying in no-frills rooms during backpack-style road trips, and enjoying more mid-range hotels.
The best part? It never felt like the city was trying to squeeze every cent from us. From €1.50 espresso-and-pastry breakfasts to free historical walks along the Ribeira, there’s plenty to enjoy without spending much at all.
History That’s Hard to Miss – Even If You Try
Porto’s history isn’t something you have to dig for; it’s everywhere.
The moment you step into the Ribeira district, you’re surrounded by buildings that look like they’ve been standing watch over the river for centuries – and in many cases, they have.
There’s something particularly striking about how everyday life and deep history blend together here.
You can step into churches where the intricate wood carvings and gilded altars made the air feel heavy with age, then stepped outside to see locals sipping coffee just metres away.
Porto doesn’t force its history on you – but if you’re interested, it’s there by the bucket load.
The Azulejos: More Than Just Pretty Tiles
Porto’s blue-and-white tiles – azulejos – are undoubtedly photogenic, but they’re more than just decorative.
Many of them depict scenes from Portugal’s past, making even a walk through the city feel like a history lesson in ceramic form.
Of course, São Bento Station is the most famous spot to see them, and for good reason. But some of our favourite finds have been on quieter backstreets, far from the tourist trail.
The Douro Valley is Right on Your Doorstep
If you’re visiting Porto and have a little extra time, the Douro Valley is more than just a worthy detour – it’s a destination in its own right.
Terraced vineyards, winding roads, and some of the most scenic river views in Europe are all within easy reach of the city.
We’ve driven it ourselves, and while the roads can be slow and winding, it’s one of those journeys where the drive is part of the reward.
We’ve also spoken to friends who’ve taken the boat tour along the Douro, and the reviews are unanimously glowing. If you’re after a peaceful escape into nature with a glass of wine never far away, this is where to go.
🛳️ Hop on a scenic cruise of the Douro River – book your tickets here!
Beautiful Architecture That Feels Lived-In
Porto’s architecture is striking – from its Baroque churches to the ironwork of Dom Luís I Bridge, there’s always something to stop and look at. But what we appreciate most is how the city hasn’t been overly polished for tourism.
There’s a texture to Porto’s buildings: chipped paint, cracked tiles, and narrow staircases that remind you this is a working city, not just a postcard.
Even if you’re not typically into architecture, it’s hard not to be drawn in by the layers and character in the buildings here. It feels real, rather than curated – and we love that.
Genuinely Friendly Locals
It’s a cliché to say the people are friendly – but in Porto’s case, it’s true in the most practical and appreciated ways.
Whether it was a barista chatting about his favourite hidden viewpoints or a woman in a bakery helping us pronounce a pastry name without judgment, the kindness here has felt genuine, not performative.
Having lived in Portugal for a while now, we’ve found that Porto consistently stands out for how approachable and warm its people are, even as the city becomes more popular with tourists.
Beaches Closer Than You Think
City breaks don’t usually conjure images of sand between your toes – but Porto manages to offer both.
A short tram ride or a leisurely drive will get you to beaches like Foz do Douro or Matosinhos, where golden sands and Atlantic breezes await.
On one visit, we made it to Capela do Senhor da Pedra just in time for sunset. The tiny chapel perched on the rocks, waves crashing behind it – it was a reminder that Porto’s appeal stretches well beyond the city centre.
Day Trips That Feel Like a Whole New Destination
One of the things we love most about Porto is how many completely different landscapes and experiences are just a short drive away.
Whether you’re in a campervan, hiring a car, or using public transport, it’s incredibly easy to swap city streets for riverside walks, historic ruins, or even pastel-coloured canal towns – all without repacking your bags.
I don’t just mean the Douro Valley either (although this is a popular option). Some of our favourite day trips from Porto include Aveiro, Conimbriga Ruins and Paiva Walkways!
Walkable, But Wear Good Shoes
Porto is small enough to explore on foot – and in many ways, walking is the best way to take it all in.
That said, it’s not flat. At all.
The hills can be intense, especially in the heat, and the cobbled streets don’t play well with flimsy shoes.
We’ve never used public transport in Porto – but we’ve definitely invested in more supportive footwear after a couple of sore-footed days.
A Few Reasons Porto Might Not Be For You
While we absolutely love Porto, it wouldn’t be fair to pretend it’s perfect.
There are a few drawbacks – and a couple of overhyped myths – that won’t ruin your trip, but are worth knowing about if you’re trying to decide whether Porto is really worth visiting.
The Harry Potter Myth – Let’s Clear It Up
If you’re considering Porto because of its supposed connection to Harry Potter, this is one section you’ll want to read closely – because most of what you’ve heard? It’s just not true.
There’s a persistent rumour that Livraria Lello, the famous bookshop in Porto, inspired J.K. Rowling’s vision of Hogwarts.
And yes, it’s easy to see why that claim took off. The shop is stunning — spiral staircases, stained glass, and the kind of moody lighting that does feel like a film set. But here’s the thing: Rowling herself has confirmed she never stepped foot inside it.
She’s debunked the myth directly but despite that, it’s now one of the most hyped tourist stops in the city.
You have to buy a ticket just to get inside, and unless you go first thing in the morning, you’ll likely spend a good chunk of your day queueing.
To be clear – the bookshop is beautiful. But if you’re visiting just for the Potter connection, you’re likely to come away disappointed.
If you’re looking for a genuine Harry Potter connection in Porto, The Majestic Café on Rua de Santa Catarina is the place to go.
Rowling has said she did spend time there writing while living in the city, and it still retains that old-world, slightly magical atmosphere.
It’s not cheap – but if you’re after a literary pilgrimage that holds up, that’s where we’d point you.
The Weather Can Be… Moody
Porto isn’t known for year-round sunshine. Summers are warm and humid, but winter can bring plenty of rain – and when it rains here, it can be heavy.
We’ve visited in November and needed full waterproofs, while other times in spring have been gloriously sunny. If you’re planning a trip in shoulder season, pack layers and be ready for the weather to change on a dime.
+LmxhYmVsLWRlc2NyaXB0aW9uOjphZnRlciwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnMgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9uc09wdGlvbnNDaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vkfi5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1maWVsZFJvdyAuY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2Vkfi5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93Q2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNlJTNjL3N2ZyUzZSIpOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNlJTNjY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNlJTNjL3N2ZyUzZSIpOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWhvcml6b250YWxSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZH4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWR+LmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zIC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnNPcHRpb25zQ2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93IC5tbC1mb3JtLWludGVyZXN0R3JvdXBzUm93Q2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWNoZWNrYm94Um93IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWR+LmxhYmVsLWRlc2NyaXB0aW9uOjpiZWZvcmUgIHsKICAgICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiFpbXBvcnRhbnQ7CiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1maWVsZFJvdyAuY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1maWVsZFJvdyAuY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgICAgICAgICAgdG9wOiAycHg7CiAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnMgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9uc09wdGlvbnNDaGVja2JveCAubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnMgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9uc09wdGlvbnNDaGVja2JveCAubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgLmxhYmVsLWRlc2NyaXB0aW9uOjpiZWZvcmUsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyIHsKICAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWNoZWNrYm94Um93IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIgewogICAgICAgIHRvcDogMHB4IWltcG9ydGFudDsKICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94IWltcG9ydGFudDsKICAgICAgfQoKICAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1JvdyAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1Jvd0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIgewogICAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ghaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGxlZnQ6IC0xLjVyZW07CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgICAgaGVpZ2h0OiAxcmVtOwogICAgICAgICAgICBjb250ZW50OiAiIjsKICAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1JvdyAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1Jvd0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YmVmb3JlIHsKICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDRweDsKICAgICAgICAgIGxlZnQ6IC0xLjVyZW07CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICBib3JkZXI6ICNhZGI1YmQgc29saWQgMXB4OwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDJweCFpbXBvcnRhbnQ7CiAgICAgICAgICBsZWZ0OiAtMS41cmVtOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgIGhlaWdodDogMXJlbTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9ucyAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zT3B0aW9uc0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YmVmb3JlLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0taW50ZXJlc3RHcm91cHNSb3cgLm1sLWZvcm0taW50ZXJlc3RHcm91cHNSb3dDaGVja2JveCAubGFiZWwtZGVzY3JpcHRpb246OmJlZm9yZSwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWNoZWNrYm94Um93IC5sYWJlbC1kZXNjcmlwdGlvbjo6YmVmb3JlIHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIHRvcDogNHB4OwogICAgICAgICAgbGVmdDogLTEuNXJlbTsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICAgIGJvcmRlcjogI2FkYjViZCBzb2xpZCAxcHg7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zIC5tbC1mb3JtLWVtYmVkUGVybWlzc2lvbnNPcHRpb25zQ2hlY2tib3ggLmxhYmVsLWRlc2NyaXB0aW9uOjphZnRlciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICBsZWZ0OiAtMS41cmVtOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgIGhlaWdodDogMXJlbTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgLmxhYmVsLWRlc2NyaXB0aW9uOjphZnRlciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDBweCFpbXBvcnRhbnQ7CiAgICAgICAgICBsZWZ0OiAtMS41cmVtOwogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICB3aWR0aDogMXJlbTsKICAgICAgICAgIGhlaWdodDogMXJlbTsKICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUvNTAlIDUwJTsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZW1iZWRQZXJtaXNzaW9ucyAubWwtZm9ybS1lbWJlZFBlcm1pc3Npb25zT3B0aW9uc0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1JvdyAubWwtZm9ybS1pbnRlcmVzdEdyb3Vwc1Jvd0NoZWNrYm94IC5sYWJlbC1kZXNjcmlwdGlvbjo6YWZ0ZXIsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb246OmFmdGVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUvNTAlIDUwJTsKICAgICAgfQoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWZpZWxkUm93IC5jdXN0b20tY29udHJvbCwgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWhvcml6b250YWxSb3cgLmN1c3RvbS1jb250cm9sIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWluLWhlaWdodDogMS41cmVtOwogICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0LCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0IHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIHotaW5kZXg6IC0xOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgZm9udC1zaXplOiAxMnB4IWltcG9ydGFudDsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4OwogICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZmllbGRSb3cgLmN1c3RvbS1zZWxlY3QsICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5jdXN0b20tc2VsZWN0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7CiAgICAgICAgY29sb3I6ICMzMzMzMzMgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItY29sb3I6ICNjY2NjY2M7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIHBhZGRpbmc6IDEwcHggMjhweCAxMHB4IDEycHggIWltcG9ydGFudDsKICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgYmFja2dyb3VuZDogdXJsKCdodHRwczovL2Fzc2V0cy5tbGNkbi5jb20vbWwvaW1hZ2VzL2RlZmF1bHQvZHJvcGRvd24uc3ZnJykgbm8tcmVwZWF0IHJpZ2h0IC43NXJlbSBjZW50ZXIvOHB4IDEwcHg7CiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICBhcHBlYXJhbmNlOiBub25lOwogICAgICB9CgoKICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWhvcml6b250YWxSb3cgewogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgfQogICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5tbC1pbnB1dC1ob3Jpem9udGFsIHsgd2lkdGg6IDcwJTsgZmxvYXQ6IGxlZnQ7IH0KICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWZvcm0taG9yaXpvbnRhbFJvdyAubWwtYnV0dG9uLWhvcml6b250YWwgeyB3aWR0aDogMzAlOyBmbG9hdDogbGVmdDsgfQogICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5tbC1idXR0b24taG9yaXpvbnRhbC5sYWJlbHNPbiB7IHBhZGRpbmctdG9wOiAyNXB4OyAgfQogICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5ob3Jpem9udGFsLWZpZWxkcyB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZsb2F0OiBsZWZ0OyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0taG9yaXpvbnRhbFJvdyBpbnB1dCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgICBjb2xvcjogIzMzMzMzMzsKICAgICAgICBib3JkZXItY29sb3I6ICNjY2NjY2M7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgb3ZlcmZsb3cteTogaW5pdGlhbDsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0taG9yaXpvbnRhbFJvdyBidXR0b24gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1REJDRDIgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItY29sb3I6ICM1REJDRDI7CiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgICAgICBib3JkZXItd2lkdGg6IDFweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1ob3Jpem9udGFsUm93IGJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMyAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1jb2xvcjogIzMzMzMzMyAhaW1wb3J0YW50OwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHotaW5kZXg6IC0xOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyAubGFiZWwtZGVzY3JpcHRpb24gewogICAgICAgIGNvbG9yOiAjMDAwMDAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyBsYWJlbCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWluLWhlaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CgogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdyBsYWJlbCBhIHsKICAgICAgICBjb2xvcjogIzAwMDAwMDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgbGFiZWwgcCB7CiAgICAgICAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICAgICAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIDVweCAwIDAgIWltcG9ydGFudDsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cgbGFiZWwgcDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkU3VibWl0IHsKICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgI21sYjItMzYyMDU1MzMubWwtZm9ybS1lbWJlZENvbnRhaW5lciAubWwtZm9ybS1lbWJlZFdyYXBwZXIgLm1sLWZvcm0tZW1iZWRCb2R5IC5tbC1mb3JtLWVtYmVkU3VibWl0IGJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVEQkNEMiAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsKICAgICAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHggIWltcG9ydGFudDsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICB9CiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1lbWJlZFN1Ym1pdCBidXR0b24ubG9hZGluZyB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tZW1iZWRTdWJtaXQgYnV0dG9uOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzMzMzICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgLm1sLXN1YnNjcmliZS1jbG9zZSB7CiAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgaGVpZ2h0OiAzMHB4OwogICAgICAgIGJhY2tncm91bmQ6IHVybCgnaHR0cHM6Ly9hc3NldHMubWxjZG4uY29tL21sL2ltYWdlcy9kZWZhdWx0L21vZGFsX2Nsb3NlLnBuZycpIG5vLXJlcGVhdDsKICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDMwcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogLTEwcHg7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgfQogICAgICAubWwtZXJyb3IgaW5wdXQsIC5tbC1lcnJvciB0ZXh0YXJlYSwgLm1sLWVycm9yIHNlbGVjdCB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiByZWQhaW1wb3J0YW50OwogICAgICB9CgogICAgICAubWwtZXJyb3IgLmN1c3RvbS1jaGVja2JveC1yYWRpby1saXN0IHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQoKICAgICAgLm1sLWVycm9yIC5sYWJlbC1kZXNjcmlwdGlvbiwKICAgICAgLm1sLWVycm9yIC5sYWJlbC1kZXNjcmlwdGlvbiBwLAogICAgICAubWwtZXJyb3IgLmxhYmVsLWRlc2NyaXB0aW9uIHAgYSwKICAgICAgLm1sLWVycm9yIGxhYmVsOmZpcnN0LWNoaWxkIHsKICAgICAgICBjb2xvcjogI2ZmMDAwMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAjbWxiMi0zNjIwNTUzMy5tbC1mb3JtLWVtYmVkQ29udGFpbmVyIC5tbC1mb3JtLWVtYmVkV3JhcHBlciAubWwtZm9ybS1lbWJlZEJvZHkgLm1sLWZvcm0tY2hlY2tib3hSb3cubWwtZXJyb3IgLmxhYmVsLWRlc2NyaXB0aW9uIHAsCiAgICAgICNtbGIyLTM2MjA1NTMzLm1sLWZvcm0tZW1iZWRDb250YWluZXIgLm1sLWZvcm0tZW1iZWRXcmFwcGVyIC5tbC1mb3JtLWVtYmVkQm9keSAubWwtZm9ybS1jaGVja2JveFJvdy5tbC1lcnJvciAubGFiZWwtZGVzY3JpcHRpb24gcDpmaXJzdC1sZXR0ZXIgewogICAgICAgIGNvbG9yOiAjZmYwMDAwICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NTBweCl7CgogICAgICAgIC5tbC1mb3JtLWVtYmVkV3JhcHBlci5lbWJlZERlZmF1bHQsIC5tbC1mb3JtLWVtYmVkV3JhcHBlci5lbWJlZFBvcHVwIHsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0geyBmbG9hdDogbGVmdCFpbXBvcnRhbnQ7IH0KICAgICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IHsgaGVpZ2h0OiBhdXRvIWltcG9ydGFudDsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyBmbG9hdDogbGVmdCFpbXBvcnRhbnQ7IH0KICAgICAgICAubWwtZm9ybS1mb3JtQ29udGVudC5ob3JvemludGFsRm9ybSAubWwtZm9ybS1ob3Jpem9udGFsUm93IC5tbC1pbnB1dC1ob3Jpem9udGFsIHsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWZvcm0taG9yaXpvbnRhbFJvdyAubWwtaW5wdXQtaG9yaXpvbnRhbCA+IGRpdiB7IHBhZGRpbmctcmlnaHQ6IDBweCFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAxMHB4OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWJ1dHRvbi1ob3Jpem9udGFsIHsgd2lkdGg6IDEwMCUhaW1wb3J0YW50OyB9CiAgICAgICAgLm1sLWZvcm0tZm9ybUNvbnRlbnQuaG9yb3ppbnRhbEZvcm0gLm1sLWJ1dHRvbi1ob3Jpem9udGFsLmxhYmVsc09uIHsgcGFkZGluZy10b3A6IDBweCFpbXBvcnRhbnQ7IH0KCiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgCiAgCiAgICAKICAgIAoKICAgIAogICAgCgogICAgCiAgICAKCiAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgCgogICAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgCgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgICAKCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAKCgogICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAKCgoKICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgCgoKICAgICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAKCiAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgIAoKICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgIAoKICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgIAoKICAgICAgIAoKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIAoKICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAKCiAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgCgogICAgCgogICAgCgoKICAgICAgCgoKICAgICAgCgogICAgICAKICAgICAgCgogICAgICAKCiAgICAgIAoKCgoKCiAgICAKCiAgICAgIAogICAgPGRpdiBpZD0ibWxiMi0zNjIwNTUzMyIgY2xhc3M9Im1sLWZvcm0tZW1iZWRDb250YWluZXIgbWwtc3Vic2NyaWJlLWZvcm0gbWwtc3Vic2NyaWJlLWZvcm0tMzYyMDU1MzMiPgogICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLWFsaWduLWNlbnRlciAiPgogICAgICAgIDxkaXYgY2xhc3M9Im1sLWZvcm0tZW1iZWRXcmFwcGVyIGVtYmVkRm9ybSI+CgogICAgICAgICAgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLWVtYmVkSGVhZGVyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vc3RvcmFnZS5tbGNkbi5jb20vYWNjb3VudF9pbWFnZS81NDIzNDMvb3FvVTh5QmJSMktEdjh6VnFPNGEzWmZkU1VDbm5tRGZrbm0xYlJNRy5wbmciIGJvcmRlcj0iMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NTBweCl7CiAgICAgICAgICAgICAgICAgIC5tbC1mb3JtLWVtYmVkSGVhZGVyIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgPC9zdHlsZT4KCiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZm9ybS1lbWJlZEJvZHkgbWwtZm9ybS1lbWJlZEJvZHlEZWZhdWx0IHJvdy1mb3JtIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLWZvcm0tZW1iZWRDb250ZW50IiBzdHlsZT0iICI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8aDQ+8J+amSBPdmVyd2hlbG1lZCBieSBQbGFubmluZyBZb3VyIFBvcnR1Z2FsIFJvYWQgVHJpcD88L2g0PgogICAgICAgICAgICAgICAgPHA+R2V0IHJvYWQgdHJpcCByZWFkeSB3aXRoIG91ciZuYnNwOzxzdHJvbmc+ZnJlZSBQb3J0dWdhbCBwbGFubmVyPC9zdHJvbmc+Jm5ic3A7LSBpbmNsdWRpbmcgc2V0dXAgY2hlY2tsaXN0cywgYnVkZ2V0IHRpcHMsIHNhZmV0eSBhZHZpY2UsIGFuZCBzcGFjZSB0byBtYXAgb3V0IHlvdXIgb3duIHJvdXRlLjwvcD4KPHA+UGx1cyByZWNlaXZlIGJlaGluZC10aGUtc2NlbmVzIHN0b3JpZXMgYW5kJm5ic3A7b3VyIGJlc3QgdGlwcyBmb3Igcm9hZCB0cmlwcGluZywgc3RyYWlnaHQgdG8geW91ciBpbmJveDxicj48L3A+CgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJtbC1ibG9jay1mb3JtIiBhY3Rpb249Imh0dHBzOi8vYXNzZXRzLm1haWxlcmxpdGUuY29tL2pzb25wLzU0MjM0My9mb3Jtcy8xNzc1NzI4MTU3MTE1MDM1MjUvc3Vic2NyaWJlIiBkYXRhLWNvZGU9IiIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZm9ybS1mb3JtQ29udGVudCI+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLWZpZWxkUm93ICI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZmllbGQtZ3JvdXAgbWwtZmllbGQtZW1haWwgbWwtdmFsaWRhdGUtZW1haWwgbWwtdmFsaWRhdGUtcmVxdWlyZWQiPgoKICAgICAgICAgICAgICAgICAgICAgIAoKCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGlucHV0IC0tPgogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGFyaWEtbGFiZWw9ImVtYWlsIiBhcmlhLXJlcXVpcmVkPSJ0cnVlIiB0eXBlPSJlbWFpbCIgY2xhc3M9ImZvcm0tY29udHJvbCIgZGF0YS1pbnB1dG1hc2s9IiIgbmFtZT0iZmllbGRzW2VtYWlsXSIgcGxhY2Vob2xkZXI9IkVtYWlsIiBhdXRvY29tcGxldGU9ImVtYWlsIj4KICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL2lucHV0IC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gdGV4dGFyZWEgLS0+CiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL3RleHRhcmVhIC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc2VsZWN0IC0tPgogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIC9zZWxlY3QgLS0+CgogICAgICAgICAgICAgICAgICAgICAgPCEtLSBjaGVja2JveGVzIC0tPgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSAvY2hlY2tib3hlcyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIHJhZGlvIC0tPgogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIC9yYWRpbyAtLT4KCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNvdW50cmllcyAtLT4KICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgPCEtLSAvY291bnRyaWVzIC0tPgoKCgoKCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9Im1sLWZvcm0tZmllbGRSb3cgbWwtbGFzdC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1maWVsZC1ncm91cCBtbC1maWVsZC1uYW1lIj4KCiAgICAgICAgICAgICAgICAgICAgICAKCgogICAgICAgICAgICAgICAgICAgICAgPCEtLSBpbnB1dCAtLT4KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhcmlhLWxhYmVsPSJuYW1lIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBkYXRhLWlucHV0bWFzaz0iIiBuYW1lPSJmaWVsZHNbbmFtZV0iIHBsYWNlaG9sZGVyPSJOYW1lIiBhdXRvY29tcGxldGU9ImdpdmVuLW5hbWUiPgogICAgICAgICAgICAgICAgICAgICAgPCEtLSAvaW5wdXQgLS0+CgogICAgICAgICAgICAgICAgICAgICAgPCEtLSB0ZXh0YXJlYSAtLT4KICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgPCEtLSAvdGV4dGFyZWEgLS0+CgogICAgICAgICAgICAgICAgICAgICAgPCEtLSBzZWxlY3QgLS0+CiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL3NlbGVjdCAtLT4KCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNoZWNrYm94ZXMgLS0+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIC9jaGVja2JveGVzIC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcmFkaW8gLS0+CiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gL3JhZGlvIC0tPgoKICAgICAgICAgICAgICAgICAgICAgIDwhLS0gY291bnRyaWVzIC0tPgogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICA8IS0tIC9jb3VudHJpZXMgLS0+CgoKCgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgCgogICAgICAgICAgICAgIDwhLS0gUHJpdmFjeSBwb2xpY3kgLS0+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPCEtLSAvUHJpdmFjeSBwb2xpY3kgLS0+CgogICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgCgoKCgoKCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibWwtc3VibWl0IiB2YWx1ZT0iMSI+CgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLWZvcm0tZW1iZWRTdWJtaXQiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icHJpbWFyeSI+SSBuZWVkIHRoaXMgbm93ITwvYnV0dG9uPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8YnV0dG9uIGRpc2FibGVkPSJkaXNhYmxlZCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiB0eXBlPSJidXR0b24iIGNsYXNzPSJsb2FkaW5nIj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtZm9ybS1lbWJlZFN1Ym1pdExvYWQiPjwvZGl2PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+TG9hZGluZy4uLjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhbnRpY3NyZiIgdmFsdWU9InRydWUiPgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLXN1Y2Nlc3NCb2R5IHJvdy1zdWNjZXNzIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbC1mb3JtLXN1Y2Nlc3NDb250ZW50Ij4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxoND5UaGFuayB5b3UhPC9oND4KICAgICAgICAgICAgICAgIDxwPkNoZWNrIHlvdXIgaW5ib3ggdG8gYWNjZXNzIHlvdXIgcGxhbm5lciE8L3A+CjxwPjxzcGFuPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9ncm91cHMvcm9hZHRyaXBldXJvcGUiPjxzdHJvbmc+RG9uJ3QgZm9yZ2V0IHRvIGpvaW4gb3VyIHJvYWQgdHJpcHBpbmcgRXVyb3BlIEZhY2Vib29rIGdyb3VwIGZvciBtb3JlIGluc3BpcmF0aW9uIGZyb20gb3VyIGNvbW11bml0eTwvc3Ryb25nPiE8L2E+PC9zcGFuPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogIAoKICAKICAKICA8c2NyaXB0PgogICAgZnVuY3Rpb24gbWxfd2ViZm9ybV9zdWNjZXNzXzM2MjA1NTMzKCkgewogICAgICB2YXIgJCA9IG1sX2pRdWVyeSB8fCBqUXVlcnk7CiAgICAgICQoJy5tbC1zdWJzY3JpYmUtZm9ybS0zNjIwNTUzMyAucm93LXN1Y2Nlc3MnKS5zaG93KCk7CiAgICAgICQoJy5tbC1zdWJzY3JpYmUtZm9ybS0zNjIwNTUzMyAucm93LWZvcm0nKS5oaWRlKCk7CiAgICB9CiAgICAgIDwvc2NyaXB0PgogIAogIAogICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9ncm9vdC5tYWlsZXJsaXRlLmNvbS9qcy93L3dlYmZvcm1zLm1pbi5qcz92MTc2ZTEwYmFhNWU3ZWQ4MGQzNWFlMjM1YmUzZDUwMjQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgZmV0Y2goImh0dHBzOi8vYXNzZXRzLm1haWxlcmxpdGUuY29tL2pzb25wLzU0MjM0My9mb3Jtcy8xNzc1NzI4MTU3MTE1MDM1MjUvdGFrZWwiKQogICAgICAgIDwvc2NyaXB0Pg==
It’s Popular – And It Shows
Porto may be smaller than Lisbon, but it’s not a secret anymore.
Certain areas, particularly the Ribeira and parts of the city centre, can feel very crowded in peak season.
However, it still feels less overwhelming than Lisbon. Walk just a few blocks from the hotspots, and you’ll often find quiet corners and local cafes where the pace slows down again.
It’s about timing and being willing to wander.
Is Porto Safe?
From our own visits – admittedly only ever as a couple or with family – Porto has always felt safe.
We’ve walked through central areas at night, explored quieter neighbourhoods, and never encountered anything that gave us pause.
Like any city, pickpocketing can happen, especially in tourist-heavy zones. But overall, Porto has one of the safer reputations in Europe, and we’ve found that to hold true across all our trips.
Best Time To Visit Porto
Our favourite time for visiting Porto is autumn (September–October) – the weather’s pleasant more often than not, prices are reasonable, and it’s far less crowded than summer.
That said, if you’re interested in Port wine and don’t mind a bit of drizzle, winter can be cosy and atmospheric, especially around the holidays.
How Long Do You Need?
Porto is compact enough that you could see the main highlights in a single day, but we’d recommend 2 to 3 days to really enjoy the city’s rhythm.
If you’re adding in a day trip or want to explore the beaches or Douro Valley, 4 days makes for a well-paced visit without feeling rushed.
Final Thoughts: Is Porto Worth Visiting?
For us – and for almost everyone we’ve brought here – Porto has left a lasting impression.
It’s a city that balances beauty with substance, and tourism with authenticity.
It might not be for everyone. If you’re not into hilly cities, aren’t interested in local history or food, or just don’t like grey skies – Porto might not click for you.
But if you’re after a destination that offers rich culture, memorable experiences, and an ease of travel that still feels special, Porto might just be your favourite stop in Portugal.