Sat 24 Oct 2026 · Etihad Arena, Yas Island · Abu Dhabi Showdown Week
UFC 333 Abu Dhabi tickets and hospitality
Two world titles. One night at Etihad Arena. As an official reseller for UFC Abu Dhabi , ES Sport puts you in the seat and the hotel. Pick your category and we handle the rest.
First bell 00 Days to go · Saturday 24 October 202600 00 00
Titles 02 Featherweight and bantamweight, on one card
UFC events 24 Staged in Abu Dhabi since 2010
Capacity 18,000 Etihad Arena, Yas Island
About the event
UFC 333 in Abu Dhabi
UFC 333 lands at Etihad Arena, Yas Island on Saturday 24 October 2026, heading
Abu Dhabi Showdown Week. It is the capital’s 24th UFC event since 2010 and its
11th numbered card. Numbered events are where the UFC stages its biggest
matchups, and this one carries two titles.
24
UFC events in Abu Dhabi
11th
Numbered event in the city
18,000
Etihad Arena capacity
Where you sit
Your view of the Octagon
The official Etihad Arena layout for UFC 333. Reservations are made by category,
not by individual seat or section. Tap anywhere in a category to select it,
set your guests, and send the enquiry straight to our team. Every package includes
your official match ticket and one night’s hotel stay, priced per person on a
double-sharing basis.
+
−
↺
Ctrl + scroll to zoom · drag to pan · section numbers for orientation only
315
115
114
113
112
111
110
101
102
103
104
105
106
301
314
302
313
303
312
304
311
305
310
309
308
307
306
109
107
115
114
113
112
101
102
103
104
116
116
116
116
108
109
108
107
110
106
A
B
C
F
E
G
The card
UFC 333 fight card
Open any bout for the tale of the tape, a head-to-head read on the technical
numbers, and where each fight is actually decided. Card subject to change.
The venue
Etihad Arena
Voted the third-best UFC venue in the world by USA TODAY readers in 2026.
Here is what earns it that.
Etihad Arena // Yas Bay, Yas Island // 18,000 capacity
Most arenas earn their reputation over decades. This one opened with a UFC card
and never looked back.
Read the full story
Close the story
Built from a weave
HOK drew the exterior from sadu, the traditional Bedouin weaving of the Gulf.
The fascia folds and overlaps like fabric on a loom, and after dark it lights
from within, so the building reads as a lantern from across the marina.
Anchor of Yas Bay
It was finished in January 2021 as the centrepiece of Yas Bay, the waterfront
district on the southern tip of Yas Island. At 18,000 seats it is the largest
indoor arena in the Middle East.
It opened with a fight
The first event ever staged here was a UFC card. In January 2021, during the
Fight Island run, Holloway versus Kattar put spectators back inside a UFC arena
for the first time since the pandemic closed the doors.
Then came McGregor
Eight days later, UFC 257 gave the new building Poirier versus McGregor 2 as
its debut pay-per-view. UFC 267 followed that autumn and made Abu Dhabi the first
city outside Las Vegas to host four numbered events.
October belongs to Abu Dhabi
Then 280, 294, 308 and 321, each one carrying a title fight. Six numbered cards
in five years have fixed a date in October that the sport now plans its calendar
around.
Inside the room
A steep single rake puts the Octagon close and low, every seat holds a clear
view, and the ceiling carries a full production rig. Yas Bay Waterfront runs the
promenade outside, with hotels within walking distance.
Capacity 18,000
Opened January 2021
Architect HOK
Location Yas Bay, Yas Island
First ever event UFC on ABC Holloway vs Kattar
Numbered UFC cards 257 · 267 · 280 294 · 308 · 321
Global ranking No.3 UFC venue USA TODAY 2026
Sightlines Unrestricted, every tier
Parking On site, free
Accessibility Step-free, all tiers
Full house. Eighteen thousand seats wrapped tight around the floor, with the numbered cards here playing to sold-out crowds.
Fight configuration. The Octagon sits low and central with the rig overhead. This is the room UFC 333 will be staged in.
Packages
Your UFC experience starts here
ES Sport is an official reseller for UFC Abu Dhabi ticket and hotel packages,
working with Ethara and Abu Dhabi’s Department of Culture and Tourism. Every
package includes your official match ticket, one night’s accommodation on Yas
Island, all taxes and VAT, and the services of the ES Sport team in Abu Dhabi.
Tell us the category and we will come back with availability and pricing.
Categories 6, 7 and 8
Upper tier
Official match ticket, full-card seating
One night’s hotel on Yas Island
All taxes and VAT included
Best value entry into the building
Group bookings available
Enquire about this category →
Categories 3, 4 and 5
Lower bowl
Official match ticket, closer to the Octagon
One night’s hotel on Yas Island
All taxes and VAT included
Extend your stay for Showdown Week
Multi-ticket packages available
Enquire about this category →
VIP
Floor and hospitality
Floor seating closest to the Octagon
Hospitality with food and drinks included
Stay at a premium hotel on Yas Island
Dedicated contact for corporate hosting
Email info@es-sport.ae for group builds
Enquire about this category →
Partner
Working with Abu Dhabi
We’re thrilled to announce ES Sport as one of the official packages partner for sporting events in Abu Dhabi, including UFC Abu Dhabi events. This partnership strengthens our relationship and enhances the fan experience with expertly curated ticket and hotel packages in collaboration with Ethara. Our goal is to make every Abu Dhabi event unforgettable, and we are confident that ES Sport will help us achieve this. Noura Kahil Section Head, Events Bureau Abu Dhabi Tourism (DCT)
Latest articles
Read the latest from ES Sport
Booking questions
Questions
Register interest
Get in touchwith an expert.
Tell us the category, the number of seats and your dates. We will come back
with what is available and what it costs, from the people who handle these
bookings every October.
×
Enquire
Tell us what you need. We will get back to you.
d2luZG93LmVzT3BlbkVucXVpcnk9d2luZG93LmVzT3BlbkVucXVpcnl8fGZ1bmN0aW9uKGludGVyZXN0LG1lc3NhZ2Upe3ZhciBzZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIngtY2F0IiksbXNnPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ4LW1zZyIpO2lmKHNlbCYmaW50ZXJlc3Qpe2Zvcih2YXIgaT0wO2k8c2VsLm9wdGlvbnMubGVuZ3RoO2krKylpZihzZWwub3B0aW9uc1tpXS50ZXh0PT09aW50ZXJlc3Qpe3NlbC5zZWxlY3RlZEluZGV4PWk7YnJlYWt9fXZhciBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltkYXRhLW9wZW4teHFdIik7aWYoYiliLmNsaWNrKCl9Owp3aW5kb3cuZXNNYXBGbGFzaD13aW5kb3cuZXNNYXBGbGFzaHx8ZnVuY3Rpb24oZWwsbXNnKXt2YXIgZj1lbC5xdWVyeVNlbGVjdG9yKCIubWFwLWZsYXNoIik7aWYoIWYpe2Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zi5jbGFzc05hbWU9Im1hcC1mbGFzaCI7Zi5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpO2VsLmFwcGVuZENoaWxkKGYpfWYudGV4dENvbnRlbnQ9bXNnO2YuY2xhc3NMaXN0LmFkZCgib24iKTtjbGVhclRpbWVvdXQoZi5fdCk7Zi5fdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpfSwxNDAwKX07CiFmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlcy1wYWdlIik7ZSYmZS5jbGFzc0xpc3QuYWRkKCJqcyIpO2NvbnN0IHQ9Imh0dHBzOi8vdWZjLmNvbS9pbWFnZXMvc3R5bGVzL2F0aGxldGVfYmlvX2Z1bGxfYm9keS9zMy8iLG49W3sic2xvdCI6Ik1haW4gZXZlbnQiLCJ3ZWlnaHQiOiJGZWF0aGVyd2VpZ2h0IHRpdGxlIGJvdXQiLCJyb3VuZHMiOiI1IHJvdW5kcyIsInRpdGxlIjp0cnVlLCJyZWQiOnsiZmlyc3QiOiJBbGV4YW5kZXIiLCJsYXN0IjoiVm9sa2Fub3Zza2kiLCJuaWNrIjoiVGhlIEdyZWF0IiwiaW5pdGlhbHMiOiJBViIsImltZyI6dCsiMjAyNi0wMS9WT0xLQU5PVlNLSV9BTEVYQU5ERVJfTF9CRUxUXzAxLTMxLnBuZz9pdG9rPWhmWlI4MXhoIiwiZmxhZyI6IkFVUyIsInJhbmsiOiJDaGFtcGlvbiIsInBmcCI6IiMyIFBGUCIsInJlY29yZCI6IjI4LTQtMCIsImFnZSI6MzgsImhlaWdodCI6IjUnNlwiIiwicmVhY2giOiI3MS41XCIiLCJsZWdSZWFjaCI6IjM2XCIiLCJneW0iOiJGcmVlc3R5bGUgRmlnaHRpbmcgR3ltIiwic3R5bGUiOiJGcmVlc3R5bGUiLCJhdmdUaW1lIjoiMTY6NTAiLCJzbHBtIjo1Ljk5LCJzYXBtIjozLjMxLCJzdHJBY2MiOjU3LCJzdHJEZWYiOjU5LCJ0ZDE1IjoxLjYzLCJ0ZERlZiI6NjksImtkMTUiOjAuMywic3ViMTUiOjAuMiwiZmluaXNoIjp7ImtvIjo0NiwiZGVjIjo0Mywic3ViIjoxMX0sInRhcmdldCI6eyJoZWFkIjo2NSwiYm9keSI6MTAsImxlZyI6MjV9LCJ0cmFpdHMiOlsiT3ZlcmhhbmQgcmlnaHQiLCJMZWcta2ljayB2b2x1bWUiLCJIYWxmLWd1YXJkIGdyb3VuZCBhbmQgcG91bmQiLCJCcm93biBiZWx0IEJKSiIsIk5hdGlvbmFsIHdyZXN0bGluZyBnb2xkIiwiMTEgc3RyYWlnaHQgdGl0bGUgZmlnaHRzIl0sInJlYWQiOiI1Ljk5IHNpZ25pZmljYW50IHN0cmlrZXMgYSBtaW51dGUgYXQgNTclIGFjY3VyYWN5IGFjcm9zcyAzLDE3OCBhdHRlbXB0cywgdGhlIGxhcmdlc3QgYm9keSBvZiB3b3JrIG9uIHRoZSBjYXJkLiBBIHF1YXJ0ZXIgb2YgZXZlcnl0aGluZyBoZSB0aHJvd3MgZ29lcyB0byB0aGUgbGVncywgNDQ3IGxlZyBzdHJpa2VzIG9uIHJlY29yZCwgd2hpY2ggaXMgaG93IGhlIGJ1eXMgdGhlIHJhbmdlIGZvciB0aGUgb3ZlcmhhbmQgcmlnaHQuIEhlIGdyYXBwbGVzIG9uIGhpcyBvd24gdGVybXM6IDc2JSBvZiBoaXMgc3RyaWtlcyBsYW5kIHN0YW5kaW5nLiJ9LCJibHVlIjp7ImZpcnN0IjoiTW92c2FyIiwibGFzdCI6IkV2bG9ldiIsIm5pY2siOiIiLCJpbml0aWFscyI6Ik1FIiwiaW1nIjp0KyIyMDI2LTAzL0VWTE9FVl9NT1ZTQVJfTF8wMy0yMS5wbmc/aXRvaz1YMnFBdUc3VCIsImZsYWciOiJSVVMiLCJyYW5rIjoiIzEiLCJwZnAiOiIiLCJyZWNvcmQiOiIyMC0wLTAiLCJhZ2UiOjMyLCJoZWlnaHQiOiI1JzdcIiIsInJlYWNoIjoiNzIuNVwiIiwibGVnUmVhY2giOiIzNlwiIiwiZ3ltIjoiQW1lcmljYW4gVG9wIFRlYW0iLCJzdHlsZSI6IkZyZWVzdHlsZSIsImF2Z1RpbWUiOiIxNjowMCIsInNscG0iOjMuOTEsInNhcG0iOjIuOCwic3RyQWNjIjo0OCwic3RyRGVmIjo2MSwidGQxNSI6NC43OCwidGREZWYiOjYxLCJrZDE1IjowLCJzdWIxNSI6MC4xOSwiZmluaXNoIjp7ImtvIjoxNSwiZGVjIjo2NSwic3ViIjoyMH0sInRhcmdldCI6eyJoZWFkIjo3NywiYm9keSI6MTUsImxlZyI6OH0sInRyYWl0cyI6WyJHcmVjby1Sb21hbiBjaGFpbiB3cmVzdGxpbmciLCJSZWFyLW5ha2VkIGNob2tlIGZpbmlzaGVyIiwiTmV2ZXIgYmVlbiBkcm9wcGVkIiwiSGVhZC1odW50aW5nIDc3JSIsIlVuZGVmZWF0ZWQgaW4gMjAiXSwicmVhZCI6IlVuZGVmZWF0ZWQgaW4gdHdlbnR5IGFuZCBjYXJyeWluZyB0aGUgaGlnaGVzdCB0YWtlZG93biByYXRlIGluIHRoaXMgZmlnaHQgYXQgNC43OCBwZXIgZmlmdGVlbiBtaW51dGVzLiBIaXMga25vY2tkb3duIGF2ZXJhZ2UgYWdhaW5zdCBzaXRzIGF0IGEgZmxhdCAwLjAwIGFjcm9zcyB0d2VudHkgZmlnaHRzLiBUaGUgc3RyaWtpbmcgaXMgdGhlcmUgdG8gc2V0IHVwIHRoZSBsZXZlbCBjaGFuZ2U6IDc3JSBvZiBoaXMgdm9sdW1lIGdvZXMgdG8gdGhlIGhlYWQsIGFuZCBhbGwgZm91ciBvZiBoaXMgc3VibWlzc2lvbnMgYXJlIHJlYXItbmFrZWQgY2hva2VzLiJ9LCJ2ZXJkaWN0IjoiVm9sa2Fub3Zza2kncyA2OSUgdGFrZWRvd24gZGVmZW5jZSBhZ2FpbnN0IEV2bG9ldidzIDQuNzggdGFrZWRvd25zIHBlciBmaWZ0ZWVuIG1pbnV0ZXMuIFN0YW5kaW5nLCB0aGUgY2hhbXBpb24gaG9sZHMgYSB0d28tc3RyaWtlLXBlci1taW51dGUgb3V0cHV0IGFkdmFudGFnZSBhbmQgZXZlcnkgYWNjdXJhY3kgbWV0cmljLiBJZiBFdmxvZXYgZ2V0cyB0byB0aGUgaGlwcyBhbmQga2VlcHMgaGltIHRoZXJlLCBhbiB1bmJlYXRlbiAyMC0wIHJlY29yZCB3YWxrcyBpbnRvIHRoZSBjaGFtcGlvbnNoaXAgcm91bmRzIHdpdGggdGhlIGJlbHQgaW4gcmVhY2guIn0seyJzbG90IjoiQ28tbWFpbiBldmVudCIsIndlaWdodCI6IkJhbnRhbXdlaWdodCB0aXRsZSBib3V0Iiwicm91bmRzIjoiNSByb3VuZHMiLCJ0aXRsZSI6dHJ1ZSwicmVkIjp7ImZpcnN0IjoiUGV0ciIsImxhc3QiOiJZYW4iLCJuaWNrIjoiTm8gTWVyY3kiLCJpbml0aWFscyI6IlBZIiwiaW1nIjp0KyIyMDI1LTEyL1lBTl9QRVRSX0xfQkVMVF8wNC0wOS5wbmc/aXRvaz1yRUlRaE52dyIsImZsYWciOiJSVVMiLCJyYW5rIjoiQ2hhbXBpb24iLCJwZnAiOiIjNCBQRlAiLCJyZWNvcmQiOiIyMC01LTAiLCJhZ2UiOjMzLCJoZWlnaHQiOiI1JzcuNVwiIiwicmVhY2giOiI2N1wiIiwibGVnUmVhY2giOiIzOFwiIiwiZ3ltIjoiVW5kaXNjbG9zZWQiLCJzdHlsZSI6IkJveGVyIiwiYXZnVGltZSI6IjE3OjM4Iiwic2xwbSI6NS4xNiwic2FwbSI6NC4yNCwic3RyQWNjIjo1NSwic3RyRGVmIjo2MCwidGQxNSI6MS43LCJ0ZERlZiI6ODYsImtkMTUiOjAuNTMsInN1YjE1IjowLjExLCJmaW5pc2giOnsia28iOjM1LCJkZWMiOjYwLCJzdWIiOjV9LCJ0YXJnZXQiOnsiaGVhZCI6NjksImJvZHkiOjE5LCJsZWciOjEyfSwidHJhaXRzIjpbIk1hc3RlciBvZiBTcG9ydCwgYm94aW5nIiwiVXBwZXJjdXQiLCJCb2R5IGludmVzdG1lbnQgMTklIiwiODYlIHRha2Vkb3duIGRlZmVuY2UiLCJSZWNsYWltZWQgdGhlIGJlbHQgYXQgVUZDIDMyMyJdLCJyZWFkIjoiVGhlIHB1cmVzdCBib3hlciBpbiB0aGUgYnVpbGRpbmcuIDU1JSBhY2N1cmFjeSBhY3Jvc3MgMiw2NTIgYXR0ZW1wdHMgYW5kIDg2JSB0YWtlZG93biBkZWZlbmNlLCB0aGUgc2luZ2xlIG51bWJlciB0aGF0IGRlY2lkZWQgdGhlIHJlbWF0Y2ggaW4gRGVjZW1iZXIuIEhlIGludmVzdHMgaW4gdGhlIGJvZHksIDE5JSBvZiB0b3RhbCB2b2x1bWUsIHdoaWNoIGlzIHdoeSBoaXMgb3Bwb25lbnRzIHJlYWNoIHRoZSBjaGFtcGlvbnNoaXAgcm91bmRzIGFscmVhZHkgd29ybiBkb3duLiJ9LCJibHVlIjp7ImZpcnN0IjoiTWVyYWIiLCJsYXN0IjoiRHZhbGlzaHZpbGkiLCJuaWNrIjoiVGhlIE1hY2hpbmUiLCJpbml0aWFscyI6Ik1EIiwiaW1nIjp0KyIyMDIyLTA4L0RWQUxJU0hWSUxJX01FUkFCX0xfMDgtMjAucG5nP2l0b2s9VU5meEN1Y0IiLCJmbGFnIjoiR0VPIiwicmFuayI6IiMxIiwicGZwIjoiIzkgUEZQIiwicmVjb3JkIjoiMjEtNS0wIiwiYWdlIjozNSwiaGVpZ2h0IjoiNSc2XCIiLCJyZWFjaCI6IjY4XCIiLCJsZWdSZWFjaCI6IjM4XCIiLCJneW0iOiJUZWFtIFNlcnJhL0xvbmdvIiwic3R5bGUiOiJGcmVlc3R5bGUiLCJhdmdUaW1lIjoiMTc6MzYiLCJzbHBtIjo0LjQyLCJzYXBtIjoyLjgsInN0ckFjYyI6NDIsInN0ckRlZiI6NTQsInRkMTUiOjUuOTcsInRkRGVmIjo3Niwia2QxNSI6MC4wNSwic3ViMTUiOjAuMzUsImZpbmlzaCI6eyJrbyI6MTQsImRlYyI6NzYsInN1YiI6MTB9LCJ0YXJnZXQiOnsiaGVhZCI6NjcsImJvZHkiOjE3LCJsZWciOjE2fSwidHJhaXRzIjpbIkp1ZG8gYmxhY2sgYmVsdCIsIlNhbWJvIGJhc2UiLCIzMzggY2FyZWVyIHRha2Vkb3duIGF0dGVtcHRzIiwiUGFjZSBvdmVyIHBvd2VyIiwiTG9uZ2VzdCBCVyB3aW4gc3RyZWFrICgxMykiXSwicmVhZCI6IjMzOCB0YWtlZG93biBhdHRlbXB0cyBpcyB0aGUgaGVhdmllc3Qgd29ya2xvYWQgaW4gVUZDIGJhbnRhbXdlaWdodCBoaXN0b3J5LiA0MiUgc3RyaWtpbmcgYWNjdXJhY3kgcmVhZHMgbG93IHVudGlsIHlvdSByZWFkIGl0IGFzIHByZXNzdXJlOiBoZSB0aHJvd3MgdG8gY2xvc2UgZGlzdGFuY2UsIHRoZW4gY2hhaW5zIGF0dGVtcHRzIHVudGlsIG9uZSBzdGlja3MuIDIxJSBvZiBoaXMgc3RyaWtlcyBjb21lIGZyb20gdG9wIHBvc2l0aW9uLiBIZSBhYnNvcmJzIDIuODAgYSBtaW51dGUsIHNvIHRoZSBjYXJkaW8gaG9sZHMuIn0sInZlcmRpY3QiOiI4NiUgdGFrZWRvd24gZGVmZW5jZSBhZ2FpbnN0IDUuOTcgdGFrZWRvd24gYXR0ZW1wdHMgcGVyIGZpZnRlZW4gbWludXRlcywgdGhlIG1vc3QgZGlyZWN0IHN0eWxpc3RpYyBjb2xsaXNpb24gb24gdGhlIGNhcmQuIFlhbiBzb2x2ZWQgaXQgb25jZSBhbHJlYWR5LCBvdmVyIGZpdmUgcm91bmRzLCBpbiBEZWNlbWJlci4gRHZhbGlzaHZpbGkgYXJyaXZlcyB3aXRoIHRlbiBtb250aHMgb2YgdGFwZSBhbmQgYSBoYWJpdCBvZiBjaGFuZ2luZyBoaXMgYW5zd2VyIHRoZSBzZWNvbmQgdGltZSBhcm91bmQuIn0seyJzbG90IjoiTWFpbiBjYXJkIiwid2VpZ2h0IjoiRmx5d2VpZ2h0IGJvdXQiLCJyb3VuZHMiOiIzIHJvdW5kcyIsInRpdGxlIjpmYWxzZSwicmVkIjp7ImZpcnN0IjoiTG9uZSdlciIsImxhc3QiOiJLYXZhbmFnaCIsIm5pY2siOiIiLCJpbml0aWFscyI6IkxLIiwiaW1nIjp0KyIyMDI1LTAzL0tBVkFOQUdIX0xPTkVFUl9MXzAzLTIyLnBuZz9pdG9rPVR1ZHpRLTRiIiwiZmxhZyI6IkVORyIsInJhbmsiOiIjNiIsInBmcCI6IiIsInJlY29yZCI6IjEwLTItMCIsImFnZSI6MjcsImhlaWdodCI6IjUnNlwiIiwicmVhY2giOiI2N1wiIiwibGVnUmVhY2giOiIzNi41XCIiLCJneW0iOiJHQiBUb3AgVGVhbSIsInN0eWxlIjoiS2lja2JveGVyIiwiYXZnVGltZSI6IjEzOjI3Iiwic2xwbSI6NC4xMywic2FwbSI6My45NCwic3RyQWNjIjo1MCwic3RyRGVmIjo1NCwidGQxNSI6MS4xMiwidGREZWYiOjgzLCJrZDE1IjowLjM3LCJzdWIxNSI6MC4zNywiZmluaXNoIjp7ImtvIjo0MCwiZGVjIjo1MCwic3ViIjoxMH0sInRhcmdldCI6eyJoZWFkIjo1NiwiYm9keSI6MjUsImxlZyI6MTl9LCJ0cmFpdHMiOlsiS2lja2JveGluZyBiYXNlIiwiODElIHN0YW5kaW5nIHZvbHVtZSIsIjgzJSB0YWtlZG93biBkZWZlbmNlIiwiU3RvcHBlZCBDaGFybGVzIEpvaG5zb24gaW4gdHdvIiwiRml2ZSByb3VuZHMgd2l0aCBCcmFuZG9uIE1vcmVubyJdLCJyZWFkIjoiQSBwdXJlIGtpY2tib3hlcidzIGRpc3RyaWJ1dGlvbjogODElIG9mIGhpcyBzdHJpa2VzIGxhbmQgYXQgcmFuZ2UgYW5kIDQ0JSBnbyBiZWxvdyB0aGUgaGVhZCwgdGhlIG1vc3QgYmFsYW5jZWQgdGFyZ2V0IHNwbGl0IGluIHRoaXMgYm91dC4gODMlIHRha2Vkb3duIGRlZmVuY2Uga2VlcHMgdGhlIGZpZ2h0IHdoZXJlIGhlIHdhbnRzIGl0LiBIZSBjb21lcyBpbiBvZmYgYSB0aGlyZC1yb3VuZCBzdWJtaXNzaW9uIGxvc3MgdG8gQnJhbmRvbiBSb3l2YWwgaW4gSnVseSwgc28gdGhlIHNjcmFtYmxlIGV4Y2hhbmdlcyBhcmUgdGhlIGxpdmUgcXVlc3Rpb24uIn0sImJsdWUiOnsiZmlyc3QiOiJSYW1hemFuIiwibGFzdCI6IlRlbWlyb3YiLCJuaWNrIjoiVGVtdXJsYW4iLCJpbml0aWFscyI6IlJUIiwiaW1nIjp0KyIyMDI0LTExL1RFTUlST1ZfUkFNQVpBTl9MXzEwLTEyLnBuZz9pdG9rPUtfRXI2V1BRIiwiZmxhZyI6IlVaQiIsInJhbmsiOiIjMTAiLCJwZnAiOiIiLCJyZWNvcmQiOiIyMC0zLTAiLCJhZ2UiOjI5LCJoZWlnaHQiOiI1JzRcIiIsInJlYWNoIjoiNjNcIiIsImxlZ1JlYWNoIjoiMzZcIiIsImd5bSI6IkxlZ2lvbiBGaWdodCBDbHViIiwic3R5bGUiOiJTdHJpa2VyIiwiYXZnVGltZSI6IjA3OjI0Iiwic2xwbSI6NC43Mywic2FwbSI6My42NSwic3RyQWNjIjo0MSwic3RyRGVmIjo2MiwidGQxNSI6MC42OCwidGREZWYiOjEwMCwia2QxNSI6My4zOCwic3ViMTUiOjAsImZpbmlzaCI6eyJrbyI6NjAsImRlYyI6MzUsInN1YiI6NX0sInRhcmdldCI6eyJoZWFkIjo4MSwiYm9keSI6MTcsImxlZyI6Mn0sInRyYWl0cyI6WyIxMiB3aW5zIGJ5IGtub2Nrb3V0IiwiMTEgZmlyc3Qtcm91bmQgZmluaXNoZXMiLCIzLjM4IGtub2NrZG93bnMgcGVyIDE1IG1pbiIsIjEwMCUgdGFrZWRvd24gZGVmZW5jZSIsIjEyLWZpZ2h0IHdpbiBzdHJlYWsiXSwicmVhZCI6IjMuMzgga25vY2tkb3ducyBwZXIgZmlmdGVlbiBtaW51dGVzLCBhIGZpZ3VyZSBvbmx5IGEgdGhyZWUtbWludXRlIFVGQyBzYW1wbGUgZWxzZXdoZXJlIG9uIHRoaXMgY2FyZCBiZWF0cy4gODclIG9mIGhpcyBzdHJpa2VzIGxhbmQgc3RhbmRpbmcgYW5kIDgxJSBnbyB0byB0aGUgaGVhZCwgc28gdGhlIGludGVudCBpcyBwbGFpbi4gSGlzIGF2ZXJhZ2UgZmlnaHQgbGFzdHMgc2V2ZW4gbWludXRlcyB0d2VudHktZm91ci4gSGUgc3RvcHBlZCBTdGV2ZSBFcmNlZyBpbnNpZGUgYSByb3VuZCBpbiB0aGlzIHNhbWUgYnVpbGRpbmcgaW4gSnVseS4ifSwidmVyZGljdCI6IkEgc3RyaWtlcidzIGZpZ2h0IGJvdGggbWVuIGFjdGl2ZWx5IHdhbnQuIFRlbWlyb3YgcHV0cyBzb21lYm9keSBvbiB0aGUgY2FudmFzIGV2ZXJ5IGZvdXIgYW5kIGEgaGFsZiBtaW51dGVzIG9mIGNhZ2UgdGltZSwgYW5kIGhpcyByZWNvcmQgaXMgYnVpbHQgYWxtb3N0IGVudGlyZWx5IGluc2lkZSB0aGUgb3BlbmluZyByb3VuZHMuIEthdmFuYWdoIGhhcyB0aGUgbG9uZ2VyIGVuZ2luZSwgdGhlIGhpZ2hlciB3b3JrIHJhdGUgYW5kIGEgZml2ZS1yb3VuZCB3aW4gb3ZlciBCcmFuZG9uIE1vcmVuby4gUm91bmQgb25lIGJlbG9uZ3MgdG8gVGVtaXJvdjsgZXZlcnl0aGluZyBhZnRlciBiZWxvbmdzIHRvIEthdmFuYWdoLiJ9LHsic2xvdCI6Ik1haW4gY2FyZCIsIndlaWdodCI6IkhlYXZ5d2VpZ2h0IGJvdXQiLCJyb3VuZHMiOiIzIHJvdW5kcyIsInRpdGxlIjpmYWxzZSwicmVkIjp7ImZpcnN0IjoiQWxleGFuZGVyIiwibGFzdCI6IlZvbGtvdiIsIm5pY2siOiJEcmFnbyIsImluaXRpYWxzIjoiQVYiLCJpbWciOnQrIjIwMjYtMDUvVk9MS09WX0FMRVhBTkRFUl9MXzA1LTA5LnBuZz9pdG9rPVo3UHQ0cDNhIiwiZmxhZyI6IlJVUyIsInJhbmsiOiIjMiIsInBmcCI6IiIsInJlY29yZCI6IjQwLTExLTAiLCJhZ2UiOjM3LCJoZWlnaHQiOiI2JzdcIiIsInJlYWNoIjoiODBcIiIsImxlZ1JlYWNoIjoiNDcuNVwiIiwiZ3ltIjoiR2xvYmFsIEZpZ2h0IEd5bSIsInN0eWxlIjoiQnJhemlsaWFuIEppdS1KaXRzdSIsImF2Z1RpbWUiOiIxMzowOSIsInNscG0iOjQuODQsInNhcG0iOjIuOSwic3RyQWNjIjo1OCwic3RyRGVmIjo1NCwidGQxNSI6MC41NCwidGREZWYiOjY5LCJrZDE1IjowLjIyLCJzdWIxNSI6MC4yMiwiZmluaXNoIjp7ImtvIjo2MCwiZGVjIjozMCwic3ViIjoxMH0sInRhcmdldCI6eyJoZWFkIjo1NywiYm9keSI6MjQsImxlZyI6MTl9LCJ0cmFpdHMiOlsiODBpbiByZWFjaCIsIjU4JSBzdHJpa2luZyBhY2N1cmFjeSIsIjI0IHdpbnMgYnkga25vY2tvdXQiLCI1MSBwcm9mZXNzaW9uYWwgZmlnaHRzIiwiVHdvIHN0cmFpZ2h0IHdpbnMiXSwicmVhZCI6IlRoZSBsb25nZXN0IGZyYW1lIG9uIHRoZSBjYXJkIGF0IDZmdCA3aW4gd2l0aCBhbiA4MC1pbmNoIHJlYWNoLCBhbmQgdGhlIG1vc3QgYWNjdXJhdGUgaGVhdnl3ZWlnaHQgaGVyZSBhdCA1OCUgYWNyb3NzIDIsMzA1IGF0dGVtcHRzLiA4MiUgb2YgaGlzIHN0cmlrZXMgbGFuZCBzdGFuZGluZyBhbmQgaGUgc3ByZWFkcyB0aGVtLCAyNCUgdG8gdGhlIGJvZHkgYW5kIDE5JSB0byB0aGUgbGVncy4gNTEgcHJvZmVzc2lvbmFsIGZpZ2h0cyBhbmQgMjQga25vY2tvdXRzLiBIZSBhYnNvcmJzIDIuOTAgYSBtaW51dGUsIGxvdyBmb3IgYSBtYW4gd2hvIHN0YW5kcyBhdCByYW5nZSB0aGlzIGxvbmcuIn0sImJsdWUiOnsiZmlyc3QiOiJSaXp2YW4iLCJsYXN0IjoiS3VuaWV2IiwibmljayI6IiIsImluaXRpYWxzIjoiUksiLCJpbWciOnQrIjIwMjYtMDcvS1VOSUVWX1JJWlZBTl9MXzA3LTI1LnBuZz9pdG9rPVBTenhkR21ZIiwiZmxhZyI6IlJVUyIsInJhbmsiOiIjNyIsInBmcCI6IiIsInJlY29yZCI6IjE0LTMtMSIsImFnZSI6MzQsImhlaWdodCI6IjYnNFwiIiwicmVhY2giOiI3NlwiIiwibGVnUmVhY2giOiI0MVwiIiwiZ3ltIjoiQW1lcmljYW4gVG9wIFRlYW0iLCJzdHlsZSI6Ik5vdCBsaXN0ZWQiLCJhdmdUaW1lIjoiMTE6MjYiLCJzbHBtIjo0LjMyLCJzYXBtIjoyLjIyLCJzdHJBY2MiOjU1LCJzdHJEZWYiOjQ5LCJ0ZDE1IjowLjc5LCJ0ZERlZiI6OTQsImtkMTUiOjAuNTIsInN1YjE1IjowLCJmaW5pc2giOnsia28iOjUwLCJkZWMiOjM2LCJzdWIiOjE0fSwidGFyZ2V0Ijp7ImhlYWQiOjcwLCJib2R5IjoyMywibGVnIjo2fSwidHJhaXRzIjpbIjk0JSB0YWtlZG93biBkZWZlbmNlIiwiMzElIG9mIHN0cmlrZXMgaW4gdGhlIGNsaW5jaCIsIjcgd2lucyBieSBrbm9ja291dCIsIlRocmVlIHN0cmFpZ2h0IFVGQyB3aW5zIiwiQmVhdCBCbGF5ZGVzIGFuZCBBbG1laWRhIl0sInJlYWQiOiJUaHJlZSBVRkMgd2lucyBpbiBhIHJvdywgb3ZlciBDdXJ0aXMgQmxheWRlcywgSmFpbHRvbiBBbG1laWRhIGFuZCBUeXJlbGwgRm9ydHVuZSwgdGhlIGxhc3QgYnkgdGhpcmQtcm91bmQgc3RvcHBhZ2UgaW4gSnVseS4gMzElIG9mIGhpcyBzaWduaWZpY2FudCBzdHJpa2VzIGxhbmQgaW4gdGhlIGNsaW5jaCwgdGhlIGhpZ2hlc3QgY2xpbmNoIHNoYXJlIG9uIHRoZSBjYXJkLCBhbmQgOTQlIHRha2Vkb3duIGRlZmVuY2UgbWVhbnMgaGUgZGVjaWRlcyB3aGVyZSB0aGUgZmlnaHQgaGFwcGVucy4gSGUgYWJzb3JicyAyLjIyIGEgbWludXRlLiBUaGUgbnVtYmVyIHRvIHdhdGNoIGlzIDQ5JSBzdHJpa2luZyBkZWZlbmNlIGFnYWluc3QgYSBtYW4gd2hvIGxhbmRzIDU4JSBvZiB3aGF0IGhlIHRocm93cy4ifSwidmVyZGljdCI6IlRocmVlIGluY2hlcyBvZiBoZWlnaHQgYW5kIGZvdXIgb2YgcmVhY2ggdG8gVm9sa292LCB3aG8gaGFzIGZvdWdodCA1MSB0aW1lcyBhbmQgbGFuZHMgNTglIGF0IHJhbmdlLiBLdW5pZXYncyByb3V0ZSBpcyB0aGUgY2xpbmNoLCB3aGVyZSBuZWFybHkgYSB0aGlyZCBvZiBoaXMgc3RyaWtlcyBsYW5kLCBhbmQgaGlzIDk0JSB0YWtlZG93biBkZWZlbmNlIGtlZXBzIGl0IHRoZXJlLiBJZiBWb2xrb3YgaG9sZHMgdGhlIGRpc3RhbmNlIGZvciBmaWZ0ZWVuIG1pbnV0ZXMgdGhlIGFjY3VyYWN5IGVkZ2UgaXMgZGVjaXNpdmU7IGlmIEt1bmlldiBjbG9zZXMgaXQsIHRoZSBmaWdodCBjaGFuZ2VzIHNoYXBlLiJ9LHsic2xvdCI6Ik1haW4gY2FyZCIsIndlaWdodCI6IkZlYXRoZXJ3ZWlnaHQgYm91dCIsInJvdW5kcyI6IjMgcm91bmRzIiwidGl0bGUiOmZhbHNlLCJyZWQiOnsiZmlyc3QiOiJBcm5vbGQiLCJsYXN0IjoiQWxsZW4iLCJuaWNrIjoiQWxtaWdodHkiLCJpbml0aWFscyI6IkFBIiwiaW1nIjp0KyIyMDI2LTA1L0FMTEVOX0FSTk9MRF9MXzA1LTE2LnBuZz9pdG9rPWQybDhnVnAtIiwiZmxhZyI6IkVORyIsInJhbmsiOiIjNyIsInBmcCI6IiIsInJlY29yZCI6IjIxLTQtMCIsImFnZSI6MzIsImhlaWdodCI6IjUnOFwiIiwicmVhY2giOiI3MFwiIiwibGVnUmVhY2giOiIzOVwiIiwiZ3ltIjoiQktLIC8gVHJpc3RhciIsInN0eWxlIjoiTU1BIiwiYXZnVGltZSI6IjE0OjI4Iiwic2xwbSI6My41Miwic2FwbSI6My4xNSwic3RyQWNjIjo0NCwic3RyRGVmIjo2MCwidGQxNSI6MS4yNCwidGREZWYiOjczLCJrZDE1IjowLjI4LCJzdWIxNSI6MC4yOCwiZmluaXNoIjp7ImtvIjozMywiZGVjIjo0OCwic3ViIjoxOX0sInRhcmdldCI6eyJoZWFkIjo3MywiYm9keSI6MTgsImxlZyI6OH0sInRyYWl0cyI6WyJUaHJlZSBzdHJhaWdodCB3aW5zIiwiRml2ZS1yb3VuZCBkZWNpc2lvbiBpbiBNYXkiLCI2MCUgc3RyaWtpbmcgZGVmZW5jZSIsIjg5JSBvZiBzdHJpa2VzIHN0YW5kaW5nIiwiTG9zdCB0byBFdmxvZXYgaW4gMjAyNCJdLCJyZWFkIjoiVGhyZWUgd2lucyBpbiBhIHJvdyBzaW5jZSB0aGUgRXZsb2V2IGxvc3MsIHRoZSBtb3N0IHJlY2VudCBvdmVyIGZpdmUgcm91bmRzIGFnYWluc3QgTWVscXVpemFlbCBDb3N0YSBpbiBNYXkuIDg5JSBvZiBoaXMgc3RyaWtlcyBsYW5kIHN0YW5kaW5nIGFuZCA3MyUgZ28gdG8gdGhlIGhlYWQsIGJlaGluZCA2MCUgc3RyaWtpbmcgZGVmZW5jZSwgdGhlIGJlc3Qgb2YgdGhlIGZvdXIgZmVhdGhlcndlaWdodHMgb3V0c2lkZSB0aGUgdGl0bGUgZmlnaHQuIE91dHB1dCBpcyBtb2Rlc3QgYXQgMy41MiBhIG1pbnV0ZTsgaGUgd2lucyByb3VuZHMgb24gZGVmZW5jZSBhbmQgdGltaW5nIHJhdGhlciB0aGFuIHZvbHVtZS4gNDglIG9mIGhpcyB3aW5zIHJlYWNoIHRoZSBqdWRnZXMuIn0sImJsdWUiOnsiZmlyc3QiOiJBYXJvbiIsImxhc3QiOiJQaWNvIiwibmljayI6IiIsImluaXRpYWxzIjoiQVAiLCJpbWciOnQrIjIwMjUtMDgvUElDT19BQVJPTl9SXzA4LTE2LnBuZz9pdG9rPTkweHZ2d1NaIiwiZmxhZyI6IlVTQSIsInJhbmsiOiIjMTEiLCJwZnAiOiIiLCJyZWNvcmQiOiIxNC01LTAiLCJhZ2UiOjI5LCJoZWlnaHQiOiI1JzhcIiIsInJlYWNoIjoiNzAuNVwiIiwibGVnUmVhY2giOiJuL2EiLCJneW0iOiJKYWNrc29uIFdpbmsgTU1BIEFjYWRlbXkiLCJzdHlsZSI6IkJveGluZyIsImF2Z1RpbWUiOiIwOToxMSIsInNscG0iOjYuMTYsInNhcG0iOjMuMTEsInN0ckFjYyI6NTQsInN0ckRlZiI6NDUsInRkMTUiOjYuNTQsInRkRGVmIjpudWxsLCJrZDE1IjowLCJzdWIxNSI6MCwiZmluaXNoIjp7ImtvIjo2NCwiZGVjIjoyMSwic3ViIjoxNH0sInRhcmdldCI6eyJoZWFkIjo3NiwiYm9keSI6MTQsImxlZyI6MTB9LCJ0cmFpdHMiOlsiNi4xNiBzdHJpa2VzIGEgbWludXRlIiwiNi41NCB0YWtlZG93biBhdHRlbXB0cyBwZXIgMTUgbWluIiwiOSB3aW5zIGJ5IGtub2Nrb3V0IiwiQmVhdCBQYXRyaWNpbyBQaXRidWxsIGluIEFwcmlsIiwiVHdvIFVGQyBmaWdodHMiXSwicmVhZCI6IlR3byBVRkMgZmlnaHRzOiBhIGZpcnN0LXJvdW5kIGtub2Nrb3V0IGxvc3MgdG8gTGVyb25lIE11cnBoeSwgdGhlbiBhIGRlY2lzaW9uIG92ZXIgUGF0cmljaW8gUGl0YnVsbCBpbiBBcHJpbC4gVGhlIHNhbXBsZSBpcyBzbWFsbCBhdCAyMTAgYXR0ZW1wdHMsIGJ1dCB0aGUgc2hhcGUgaXMgY2xlYXI6IDYuMTYgc2lnbmlmaWNhbnQgc3RyaWtlcyBhIG1pbnV0ZSwgdGhlIGhpZ2hlc3Qgb24gdGhlIGNhcmQsIGFuZCA2LjU0IHRha2Vkb3duIGF0dGVtcHRzIHBlciBmaWZ0ZWVuIG1pbnV0ZXMgYmVoaW5kIHRoZW0uIDQ1JSBzdHJpa2luZyBkZWZlbmNlIGlzIHRoZSBjb3N0IG9mIHRoYXQgcHJlc3N1cmUuIE5pbmUgb2YgaGlzIGZvdXJ0ZWVuIHdpbnMgYXJlIGtub2Nrb3V0cy4ifSwidmVyZGljdCI6IlBpY28gdGhyb3dzIGFsbW9zdCB0d2ljZSBBbGxlbidzIHZvbHVtZSBhbmQgYWRkcyBzaXggdGFrZWRvd24gYXR0ZW1wdHMgcGVyIGZpZnRlZW4gbWludXRlcyBvbiB0b3A7IEFsbGVuJ3MgNjAlIHN0cmlraW5nIGRlZmVuY2UgYW5kIDczJSB0YWtlZG93biBkZWZlbmNlIGFyZSBidWlsdCBmb3IgZXhhY3RseSB0aGF0LiBQaWNvJ3MgYXZlcmFnZSBmaWdodCBsYXN0cyBuaW5lIG1pbnV0ZXMsIEFsbGVuJ3MgZm91cnRlZW4gYW5kIGEgaGFsZi4gVGhlIGxhdGVyIGl0IGdvZXMsIHRoZSBtb3JlIGl0IGJlbG9uZ3MgdG8gQWxsZW4uIn0seyJzbG90IjoiUHJlbGltcyIsIndlaWdodCI6IkxpZ2h0IGhlYXZ5d2VpZ2h0IGJvdXQiLCJyb3VuZHMiOiIzIHJvdW5kcyIsInRpdGxlIjpmYWxzZSwicmVkIjp7ImZpcnN0IjoiQXphbWF0IiwibGFzdCI6Ik11cnpha2Fub3YiLCJuaWNrIjoiUHJvZmVzc2lvbmFsIiwiaW5pdGlhbHMiOiJBTSIsImltZyI6dCsiMjAyNi0wNC9NVVJaQUtBTk9WX0FaQU1BVF9MXzA0LTExLnBuZz9pdG9rPW1xUWE5bnJhIiwiZmxhZyI6IlJVUyIsInJhbmsiOiIjOCIsInBmcCI6IiIsInJlY29yZCI6IjE2LTEtMCIsImFnZSI6MzcsImhlaWdodCI6IjUnMTBcIiIsInJlYWNoIjoiNzEuNVwiIiwibGVnUmVhY2giOiI0MVwiIiwiZ3ltIjoiSyBEb2pvIFdhcnJpb3IgVHJpYmUiLCJzdHlsZSI6Ik1NQSIsImF2Z1RpbWUiOiIwODoxNyIsInNscG0iOjQuNCwic2FwbSI6My4yLCJzdHJBY2MiOjU2LCJzdHJEZWYiOjU2LCJ0ZDE1IjowLjY4LCJ0ZERlZiI6ODksImtkMTUiOjEuNTgsInN1YjE1IjowLjIzLCJmaW5pc2giOnsia28iOjc1LCJkZWMiOjE5LCJzdWIiOjZ9LCJ0YXJnZXQiOnsiaGVhZCI6NzEsImJvZHkiOjI2LCJsZWciOjR9LCJ0cmFpdHMiOlsiMTIgS09zIGZyb20gMTYgd2lucyIsIjEwIGZpcnN0LXJvdW5kIGZpbmlzaGVzIiwiODklIHRha2Vkb3duIGRlZmVuY2UiLCIzw5cgaGFuZC10by1oYW5kIHdvcmxkIGNoYW1waW9uIiwiU3RvcHBlZCBSYWtpxIcgYXQgRXRpaGFkIEFyZW5hIl0sInJlYWQiOiI3NSUgb2YgaGlzIHdpbnMgYXJyaXZlIGJ5IGtub2Nrb3V0IGFuZCB0ZW4gb2YgdGhlbSBsYW5kZWQgaW4gcm91bmQgb25lLiA1NiUgYWNjdXJhY3kgcGFpcmVkIHdpdGggMS41OCBrbm9ja2Rvd25zIHBlciBmaWZ0ZWVuIG1pbnV0ZXMgcmVhZHMgYXMgYSBmaW5pc2hpbmcgcmF0ZS4gSGUgc3RvcHBlZCBBbGVrc2FuZGFyIFJha2nEhyBpbnNpZGUgYSByb3VuZCBhdCBFdGloYWQgQXJlbmEgbGFzdCBPY3RvYmVyLiBIaXMgZmlyc3QgY2FyZWVyIGxvc3MgY2FtZSBpbiByb3VuZCB0aHJlZSBhZ2FpbnN0IFBhdWxvIENvc3RhIGluIEFwcmlsLCB0aGUgb25seSB0aW1lIGFueW9uZSBoYXMgYXNrZWQgaGltIGEgbG9uZyBxdWVzdGlvbi4ifSwiYmx1ZSI6eyJmaXJzdCI6IkRvbWluaWNrIiwibGFzdCI6IlJleWVzIiwibmljayI6IlRoZSBEZXZhc3RhdG9yIiwiaW5pdGlhbHMiOiJEUiIsImltZyI6dCsiMjAyNi0wNC9SRVlFU19ET01JTklDS19MXzA0LTExLnBuZz9pdG9rPTdIU1Z0djFwIiwiZmxhZyI6IlVTQSIsInJhbmsiOiIjMTAiLCJwZnAiOiIiLCJyZWNvcmQiOiIxNi01LTAiLCJhZ2UiOjM2LCJoZWlnaHQiOiI2JzRcIiIsInJlYWNoIjoiNzdcIiIsImxlZ1JlYWNoIjoiNDMuNVwiIiwiZ3ltIjoiQ29icmEgS2FpIFZpY3RvcnZpbGxlIiwic3R5bGUiOiJLaWNrYm94ZXIiLCJhdmdUaW1lIjoiMDc6NTEiLCJzbHBtIjo0Ljk5LCJzYXBtIjozLjQsInN0ckFjYyI6NTQsInN0ckRlZiI6NTAsInRkMTUiOjAuMjUsInRkRGVmIjo4Mywia2QxNSI6MC44OSwic3ViMTUiOjAuMjUsImZpbmlzaCI6eyJrbyI6NjMsImRlYyI6MjUsInN1YiI6MTN9LCJ0YXJnZXQiOnsiaGVhZCI6NTYsImJvZHkiOjI0LCJsZWciOjIwfSwidHJhaXRzIjpbIjc3aW4gcmVhY2giLCJIZWFkIGtpY2siLCIxMCB3aW5zIGJ5IGtub2Nrb3V0IiwiNCBmaW5pc2hlcyBpbnNpZGUgYSBtaW51dGUiLCJUd28gdGl0bGUgY2hhbGxlbmdlcyJdLCJyZWFkIjoiU2l4IGluY2hlcyBvZiBoZWlnaHQgYW5kIDUuNSBpbmNoZXMgb2YgcmVhY2ggb3ZlciBNdXJ6YWthbm92LCBwbHVzIHRoZSBsb25nZXN0IGxlZ3MgaW4gdGhlIGJvdXQgYXQgNDMuNSBpbmNoZXMuIEZvdXIgb2YgaGlzIGZpbmlzaGVzIGNhbWUgaW5zaWRlIHNpeHR5IHNlY29uZHMuIFRoZSB2dWxuZXJhYmlsaXR5IHNpdHMgcGxhaW5seSBvbiB0aGUgcmVjb3JkOiA1MCUgc3RyaWtpbmcgZGVmZW5jZSwgdGhlIGxvd2VyIGZpZ3VyZSBpbiB0aGlzIGJvdXQsIGFuZCBmb3VyIHN0b3BwYWdlIGxvc3Nlcy4ifSwidmVyZGljdCI6IlR3byBvZiB0aGUgaGlnaGVzdCBmaW5pc2hpbmcgcmF0ZXMgaW4gdGhlIGRpdmlzaW9uIGFjcm9zcyA0NyBjb21iaW5lZCBmaWdodHMsIG9ubHkgZWxldmVuIG9mIHdoaWNoIHJlYWNoZWQgYSBkZWNpc2lvbi4gUmV5ZXMgb3ducyB0aGUgbGVuZ3RoOyBNdXJ6YWthbm92IG93bnMgdGhlIGFjY3VyYWN5IGVkZ2UgYW5kIDg5JSB0YWtlZG93biBkZWZlbmNlLiBCb3RoIG1lbiBzaXQgYXQgNTYlIHN0cmlraW5nIGRlZmVuY2Ugb3IgYmVsb3csIGFuZCBib3RoIGF2ZXJhZ2UgdW5kZXIgbmluZSBtaW51dGVzIG9mIGNhZ2UgdGltZSBwZXIgZmlnaHQuIFdob2V2ZXIgbGFuZHMgY2xlYW5seSBmaXJzdCBhbG1vc3QgY2VydGFpbmx5IGVuZHMgaXQuIn0seyJzbG90IjoiUHJlbGltcyIsIndlaWdodCI6IkxpZ2h0IGhlYXZ5d2VpZ2h0IGJvdXQiLCJyb3VuZHMiOiIzIHJvdW5kcyIsInRpdGxlIjpmYWxzZSwicmVkIjp7ImZpcnN0IjoiTmlraXRhIiwibGFzdCI6IktyeWxvdiIsIm5pY2siOiJUaGUgTWluZXIiLCJpbml0aWFscyI6Ik5LIiwiaW1nIjp0KyIyMDI2LTA3L0tSWUxPVl9OSUtJVEFfTF8wNy0xMS5wbmc/aXRvaz1HLVNLRVhzNSIsImZsYWciOiJSVVMiLCJyYW5rIjoiIzE1IiwicGZwIjoiIiwicmVjb3JkIjoiMzEtMTItMCIsImFnZSI6MzQsImhlaWdodCI6IjYnM1wiIiwicmVhY2giOiI3Ny41XCIiLCJsZWdSZWFjaCI6IjQ0LjVcIiIsImd5bSI6IkZpZ2h0IENsdWIgTm8xIiwic3R5bGUiOiJLYXJhdGUiLCJhdmdUaW1lIjoiMDc6MDkiLCJzbHBtIjo0LjM4LCJzYXBtIjoyLjc1LCJzdHJBY2MiOjU0LCJzdHJEZWYiOjQ4LCJ0ZDE1IjoyLjE5LCJ0ZERlZiI6NTMsImtkMTUiOjAuNTcsInN1YjE1IjoxLjE0LCJmaW5pc2giOnsia28iOjQyLCJkZWMiOjYsInN1YiI6NTJ9LCJ0YXJnZXQiOnsiaGVhZCI6NTksImJvZHkiOjI1LCJsZWciOjE2fSwidHJhaXRzIjpbIjE2IHdpbnMgYnkgc3VibWlzc2lvbiIsIjEzIHdpbnMgYnkga25vY2tvdXQiLCIyIG9mIDMxIHdpbnMgYnkgZGVjaXNpb24iLCJTdG9wcGVkIFdoaXR0YWtlciBpbiBKdWx5IiwiVGhyZWUgc3RyYWlnaHQga25vY2tvdXRzIl0sInJlYWQiOiJUd2VudHktbmluZSBvZiBoaXMgdGhpcnR5LW9uZSB3aW5zIGFyZSBmaW5pc2hlcywgc2l4dGVlbiBieSBzdWJtaXNzaW9uIGFuZCB0aGlydGVlbiBieSBrbm9ja291dCwgYW5kIGhpcyBhdmVyYWdlIGZpZ2h0IGxhc3RzIHNldmVuIG1pbnV0ZXMgbmluZS4gVGhyZWUgc3RyYWlnaHQga25vY2tvdXRzLCB0aGUgbGF0ZXN0IG92ZXIgUm9iZXJ0IFdoaXR0YWtlciBpbiBKdWx5LiBUaGUgZXhwb3N1cmUgaXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGxlZGdlcjogNDglIHN0cmlraW5nIGRlZmVuY2UgYW5kIDUzJSB0YWtlZG93biBkZWZlbmNlLCBib3RoIHRoZSBsb3dlciBmaWd1cmVzIGluIHRoaXMgYm91dCwgYW5kIGEgZmlyc3Qtcm91bmQga25vY2tvdXQgbG9zcyB0byBEb21pbmljayBSZXllcywgd2hvIGZpZ2h0cyBvbiB0aGUgc2FtZSBjYXJkLiJ9LCJibHVlIjp7ImZpcnN0IjoiQWJkdWwgUmFraG1hbiIsImxhc3QiOiJZYWtoeWFldiIsIm5pY2siOiJUaGUgSHVudGVyIiwiaW5pdGlhbHMiOiJBWSIsImltZyI6dCsiMjAyNi0wNi9ZQUtIWUFFVl9BQkRVTF9SQUtITUFOX0xfMDYtMjcucG5nP2l0b2s9cjI1b3VKMHMiLCJmbGFnIjoiVFVSIiwicmFuayI6IiIsInBmcCI6IiIsInJlY29yZCI6IjEwLTAtMCIsImFnZSI6MjUsImhlaWdodCI6IjYnMlwiIiwicmVhY2giOiI3OFwiIiwibGVnUmVhY2giOiI0NFwiIiwiZ3ltIjoiTU1BIE51ZXJuYmVyZyIsInN0eWxlIjoiTU1BIiwiYXZnVGltZSI6IjAxOjAxIiwic2xwbSI6OC42NCwic2FwbSI6Mi4yMiwic3RyQWNjIjo2OSwic3RyRGVmIjo1OSwidGQxNSI6MTEuMTEsInRkRGVmIjoxMDAsImtkMTUiOjExLjExLCJzdWIxNSI6Ny40MSwiZmluaXNoIjp7ImtvIjo0MCwiZGVjIjoxMCwic3ViIjo1MH0sInRhcmdldCI6eyJoZWFkIjo4OSwiYm9keSI6OSwibGVnIjozfSwidHJhaXRzIjpbIjEwLTAgdW5kZWZlYXRlZCIsIlRocmVlIFVGQyB3aW5zLCBhbGwgaW5zaWRlIGEgcm91bmQiLCJFaWdodC1zZWNvbmQga25vY2tvdXQgaW4gSnVuZSIsIjUgd2lucyBieSBzdWJtaXNzaW9uIiwiQXZlcmFnZSBmaWdodCB0aW1lIDE6MDEiXSwicmVhZCI6IlRocmVlIFVGQyBmaWdodHMsIHRocmVlIGZpcnN0LXJvdW5kIGZpbmlzaGVzLCBhbmQgYSBjb21iaW5lZCBjYWdlIHRpbWUgb2YganVzdCBvdmVyIHRocmVlIG1pbnV0ZXM6IHR3byBzdWJtaXNzaW9ucywgdGhlbiBhbiBlaWdodC1zZWNvbmQga25vY2tvdXQgb2YgSnVsaXVzIFdhbGtlciBpbiBKdW5lLiBFdmVyeSBwZXItbWludXRlIGZpZ3VyZSBpcyBpbmZsYXRlZCBieSB0aGF0IHNhbXBsZSwgc28gcmVhZCB0aGVtIGFzIGludGVudCByYXRoZXIgdGhhbiBhdmVyYWdlcy4gNjAlIG9mIGhpcyBzdHJpa2VzIGhhdmUgbGFuZGVkIGZyb20gdGhlIGdyb3VuZCBhbmQgbmluZSBvZiBoaXMgdGVuIHdpbnMgYXJlIGZpbmlzaGVzLiBOb2JvZHkgaGFzIHRha2VuIGhpbSBwYXN0IGEgcm91bmQuIn0sInZlcmRpY3QiOiJOZWl0aGVyIG1hbiBwbGFucyBvbiB0aGUganVkZ2VzOiAyOSBvZiBLcnlsb3YncyAzMSB3aW5zIGFuZCA5IG9mIFlha2h5YWV2J3MgMTAgYXJlIGZpbmlzaGVzLiBLcnlsb3YgaGFzIDQzIGZpZ2h0cyBvZiB0YXBlIGFuZCB0aHJlZSBzdHJhaWdodCBrbm9ja291dHM7IFlha2h5YWV2IGhhcyB0aHJlZSBtaW51dGVzIG9mIFVGQyBmb290YWdlIGFuZCBhIDEwMCUgdGFrZWRvd24gZGVmZW5jZSB0aGF0IGhhcyBuZXZlciBiZWVuIHRlc3RlZC4gS3J5bG92J3MgNTMlIHRha2Vkb3duIGRlZmVuY2UgaXMgdGhlIG9wZW5pbmcsIGFuZCB0aGUgZmlyc3Qgc2NyYW1ibGUgd2lsbCBzYXkgbW9zdCBvZiBpdC4ifSx7InNsb3QiOiJQcmVsaW1zIiwid2VpZ2h0IjoiTWlkZGxld2VpZ2h0IGJvdXQiLCJyb3VuZHMiOiIzIHJvdW5kcyIsInRpdGxlIjpmYWxzZSwicmVkIjp7ImZpcnN0IjoiQWJ1cyIsImxhc3QiOiJNYWdvbWVkb3YiLCJuaWNrIjoiIiwiaW5pdGlhbHMiOiJBTSIsImltZyI6dCsiMjAyNi0wNi9NQUdPTUVET1ZfQUJVU19MXzA2LTI3LnBuZz9pdG9rPVNMbXpYaldwIiwiZmxhZyI6IkdFUiIsInJhbmsiOiIjMTIiLCJwZnAiOiIiLCJyZWNvcmQiOiIyOS03LTEiLCJhZ2UiOjM2LCJoZWlnaHQiOiI2JzJcIiIsInJlYWNoIjoiNzhcIiIsImxlZ1JlYWNoIjoiNDNcIiIsImd5bSI6IlVuZGlzY2xvc2VkIiwic3R5bGUiOiJNTUEiLCJhdmdUaW1lIjoiMDk6NDYiLCJzbHBtIjozLjA2LCJzYXBtIjozLjM0LCJzdHJBY2MiOjQ5LCJzdHJEZWYiOjU2LCJ0ZDE1IjoyLjUsInRkRGVmIjoxMDAsImtkMTUiOjAuMzgsInN1YjE1IjowLjU4LCJmaW5pc2giOnsia28iOjQ4LCJkZWMiOjI0LCJzdWIiOjI4fSwidGFyZ2V0Ijp7ImhlYWQiOjU2LCJib2R5IjozMSwibGVnIjoxM30sInRyYWl0cyI6WyIxMDAlIHRha2Vkb3duIGRlZmVuY2UiLCIzMSUgb2Ygc3RyaWtlcyB0byB0aGUgYm9keSIsIlN1Ym1pdHRlZCBQeWZlciBhbmQgT2xla3NpZWpjenVrIiwiMjIgZmluaXNoZXMgaW4gMjkgd2lucyIsIlRocmVlIHN0cmFpZ2h0IHdpbnMiXSwicmVhZCI6IlRocmVlIHN0cmFpZ2h0IHdpbnMsIHRoZSBsYXN0IHR3byBieSBzdWJtaXNzaW9uIGluc2lkZSB0d28gcm91bmRzLCBvdmVyIEpvZSBQeWZlciBhbmQgTWljaGFsIE9sZWtzaWVqY3p1ay4gMzElIG9mIGhpcyBzdHJpa2VzIGdvIHRvIHRoZSBib2R5LCB0aGUgaGVhdmllc3QgYm9keSBpbnZlc3RtZW50IG9uIHRoZSBjYXJkLCBhbmQgMTAwJSB0YWtlZG93biBkZWZlbmNlIGFjcm9zcyBoaXMgVUZDIHJ1bi4gT3V0cHV0IGlzIGxvdyBhdCAzLjA2IGEgbWludXRlIGFuZCBoZSBhYnNvcmJzIHNsaWdodGx5IG1vcmUgdGhhbiBoZSBsYW5kcywgc28gdGhlIHJvdW5kcyBhcmUgd29uIG9uIHRoZSBmaW5pc2ggcmF0aGVyIHRoYW4gdGhlIHNjb3JlY2FyZHM6IDIyIG9mIGhpcyAyOSB3aW5zIGFyZSBzdG9wcGFnZXMuIn0sImJsdWUiOnsiZmlyc3QiOiJDYW0iLCJsYXN0IjoiUm93c3RvbiIsIm5pY2siOiIiLCJpbml0aWFscyI6IkNSIiwiaW1nIjp0KyIyMDI2LTA0L1JPV1NUT05fQ0FNX0xfMDUtMDIucG5nP2l0b2s9dXFEV3EwTzAiLCJmbGFnIjoiQVVTIiwicmFuayI6IiIsInBmcCI6IiIsInJlY29yZCI6IjE1LTMtMCIsImFnZSI6MzEsImhlaWdodCI6IjYnM1wiIiwicmVhY2giOiI3OFwiIiwibGVnUmVhY2giOiI0NVwiIiwiZ3ltIjoiQ2l0eSBLaWNrYm94aW5nIiwic3R5bGUiOiJCcmF6aWxpYW4gSml1LUppdHN1IiwiYXZnVGltZSI6IjA4OjU3Iiwic2xwbSI6NC42LCJzYXBtIjoyLjEyLCJzdHJBY2MiOjQ5LCJzdHJEZWYiOjUyLCJ0ZDE1IjoxLjM0LCJ0ZERlZiI6MzMsImtkMTUiOjEuMCwic3ViMTUiOjAuMzMsImZpbmlzaCI6eyJrbyI6NDAsImRlYyI6MTMsInN1YiI6NDd9LCJ0YXJnZXQiOnsiaGVhZCI6NzgsImJvZHkiOjEyLCJsZWciOjEwfSwidHJhaXRzIjpbIlRocmVlIFVGQyB3aW5zIGZyb20gdGhyZWUiLCI3IHdpbnMgYnkgc3VibWlzc2lvbiIsIjEuMDAga25vY2tkb3ducyBwZXIgMTUgbWluIiwiMzMlIG9mIHN0cmlrZXMgZnJvbSB0aGUgZ3JvdW5kIiwiQ2l0eSBLaWNrYm94aW5nIl0sInJlYWQiOiJUaHJlZSBVRkMgZmlnaHRzLCB0aHJlZSB3aW5zLCB0d28gb2YgdGhlbSBrbm9ja291dHMgaW5zaWRlIHR3byByb3VuZHMuIEhlIGxhbmRzIDQuNjAgYSBtaW51dGUgYW5kIGFic29yYnMgMi4xMiwgdGhlIGJlc3QgZGlmZmVyZW50aWFsIGluIHRoaXMgYm91dCwgYW5kIGEgdGhpcmQgb2YgaGlzIHN0cmlrZXMgY29tZSBmcm9tIHRoZSBncm91bmQsIHdoZXJlIHNldmVuIG9mIGhpcyBmaWZ0ZWVuIHdpbnMgaGF2ZSBlbmRlZCBieSBzdWJtaXNzaW9uLiBUaGUgZ2FwIGlzIDMzJSB0YWtlZG93biBkZWZlbmNlLCB0aGUgbG93ZXN0IGZpZ3VyZSBvbiB0aGUgY2FyZCwgYWdhaW5zdCBhbiBvcHBvbmVudCB3aG8gYXR0ZW1wdHMgMi41MCB0YWtlZG93bnMgcGVyIGZpZnRlZW4gbWludXRlcy4ifSwidmVyZGljdCI6IlJvd3N0b24ncyAzMyUgdGFrZWRvd24gZGVmZW5jZSBhZ2FpbnN0IE1hZ29tZWRvdidzIDIuNTAgdGFrZWRvd24gYXR0ZW1wdHMgcGVyIGZpZnRlZW4gbWludXRlcyBhbmQgMTAwJSBkZWZlbmNlIG9mIGhpcyBvd246IHRoZSBncmFwcGxpbmcgZXhjaGFuZ2VzIHJ1biBvbmUgd2F5IG9uIHBhcGVyLiBTdGFuZGluZywgUm93c3RvbiBoYXMgdGhlIGJldHRlciBudW1iZXJzIG9uIGJvdGggc2lkZXMsIDQuNjAgbGFuZGVkIHRvIDMuMDYgYW5kIDIuMTIgYWJzb3JiZWQgdG8gMy4zNC4gTWFnb21lZG92J3MgYm9keSB3b3JrIGlzIGhvdyBoZSBzbG93cyBhIHlvdW5nZXIgbWFuOyBSb3dzdG9uJ3Mga25vY2tkb3duIHJhdGUgaXMgaG93IGhlIGVuZHMgaXQgZWFybHkuIn0seyJzbG90IjoiUHJlbGltcyIsIndlaWdodCI6IkxpZ2h0d2VpZ2h0IGJvdXQiLCJyb3VuZHMiOiIzIHJvdW5kcyIsInRpdGxlIjpmYWxzZSwicmVkIjp7ImZpcnN0IjoiR3JhbnQiLCJsYXN0IjoiRGF3c29uIiwibmljayI6IktHRCIsImluaXRpYWxzIjoiR0QiLCJpbWciOnQrIjIwMjYtMDUvREFXU09OX0dSQU5UX0xfMDUtMDkucG5nP2l0b2s9SnVWRWhSb18iLCJmbGFnIjoiVVNBIiwicmFuayI6IiIsInBmcCI6IiIsInJlY29yZCI6IjI0LTMtMSIsImFnZSI6MzIsImhlaWdodCI6IjUnMTBcIiIsInJlYWNoIjoiNzJcIiIsImxlZ1JlYWNoIjoiNDBcIiIsImd5bSI6IkFtZXJpY2FuIFRvcCBUZWFtIiwic3R5bGUiOiJHcmFwcGxlciIsImF2Z1RpbWUiOiIxMTowMCIsInNscG0iOjMuMTQsInNhcG0iOjIuMTQsInN0ckFjYyI6NTEsInN0ckRlZiI6NDUsInRkMTUiOjMuNTgsInRkRGVmIjo2Nywia2QxNSI6MC4wOSwic3ViMTUiOjEuMzYsImZpbmlzaCI6eyJrbyI6MjEsImRlYyI6MjEsInN1YiI6NTh9LCJ0YXJnZXQiOnsiaGVhZCI6NjksImJvZHkiOjE5LCJsZWciOjEyfSwidHJhaXRzIjpbIkJKSiBibGFjayBiZWx0IiwiMTQgc3VibWlzc2lvbnMsIDEyIGJ5IFJOQyIsIjQyJSBvZiBzdHJpa2VzIGZyb20gdGhlIGdyb3VuZCIsIjEuMzYgc3VibWlzc2lvbiBhdmVyYWdlIiwiVHJpYW5nbGUgYW5kIGVsYm93cyJdLCJyZWFkIjoiNTglIG9mIGhpcyB3aW5zIGNvbWUgYnkgc3VibWlzc2lvbiBhbmQgdHdlbHZlIG9mIHRoZSBmb3VydGVlbiBhcmUgcmVhci1uYWtlZCBjaG9rZXMuIDQyJSBvZiBoaXMgc2lnbmlmaWNhbnQgc3RyaWtlcyBsYW5kIGZyb20gdGhlIGdyb3VuZCwgYmVjYXVzZSB0aGUgc3RyaWtlcyBleGlzdCB0byBvcGVuIHVwIHRoZSBiYWNrLiAzLjE0IHN0cmlrZXMgYSBtaW51dGUgaXMgYW1vbmcgdGhlIGxvd2VzdCBvdXRwdXRzIG9uIHRoZSBjYXJkIGFuZCBpdCBpcyBlbnRpcmVseSBkZWxpYmVyYXRlLiJ9LCJibHVlIjp7ImZpcnN0IjoiTnVydWxsbyIsImxhc3QiOiJBbGlldiIsIm5pY2siOiJUYWppayBFYWdsZSIsImluaXRpYWxzIjoiTkEiLCJpbWciOnQrIjIwMjYtMDcvQUxJRVZfTlVSVUxMT19MXzA3LTI1LnBuZz9pdG9rPTJKUFVYQURHIiwiZmxhZyI6IlRKSyIsInJhbmsiOiIiLCJwZnAiOiIiLCJyZWNvcmQiOiIxMi0wLTAiLCJhZ2UiOjI1LCJoZWlnaHQiOiI1JzEwXCIiLCJyZWFjaCI6IjcyXCIiLCJsZWdSZWFjaCI6IjM4XCIiLCJneW0iOiJVbmRpc2Nsb3NlZCIsInN0eWxlIjoiV3Jlc3RsaW5nIiwiYXZnVGltZSI6IjEyOjU1Iiwic2xwbSI6Mi4yOSwic2FwbSI6MS41OSwic3RyQWNjIjo0NCwic3RyRGVmIjo1NSwidGQxNSI6My40OCwidGREZWYiOjgwLCJrZDE1IjowLCJzdWIxNSI6MC40NiwiZmluaXNoIjp7ImtvIjoxNywiZGVjIjo4Mywic3ViIjowfSwidGFyZ2V0Ijp7ImhlYWQiOjgyLCJib2R5IjoxNCwibGVnIjo0fSwidHJhaXRzIjpbIjEyLTAgdW5kZWZlYXRlZCIsIkNvbWJhdCBzYW1ibyBBc2lhbiBjaGFtcGlvbiIsIjLDlyBXb3JsZCBQYW5rcmF0aW9uIGNoYW1waW9uIiwiODAlIHRha2Vkb3duIGRlZmVuY2UiLCI0MyUgb2Ygc3RyaWtlcyBmcm9tIHRoZSBncm91bmQiXSwicmVhZCI6IlVuZGVmZWF0ZWQgYXQgMTItMCwgd2l0aCB0ZW4gb2YgdGhvc2Ugd2lucyBieSBkZWNpc2lvbi4gSGUgd2lucyBvbiBjb250cm9sOiBoZSBhYnNvcmJzIDEuNTkgc3RyaWtlcyBhIG1pbnV0ZSwgdGhlIGxvd2VzdCBmaWd1cmUgb24gdGhlIGVudGlyZSBjYXJkLCBhbmQgbGFuZHMgODIlIG9mIGhpcyBvd24gdG8gdGhlIGhlYWQgZnJvbSB0b3AgcG9zaXRpb24uIElkZW50aWNhbCBoZWlnaHQgYW5kIHJlYWNoIHRvIERhd3Nvbiwgc2V2ZW4geWVhcnMgeW91bmdlci4ifSwidmVyZGljdCI6IlRoZSBvbmx5IGJvdXQgb24gdGhlIGNhcmQgd2hlcmUgYm90aCBtZW4gbGFuZCBtb3JlIHRoYW4gNDAlIG9mIHRoZWlyIHNpZ25pZmljYW50IHN0cmlrZXMgZnJvbSB0aGUgZ3JvdW5kLiBEYXdzb24ncyAxLjM2IHN1Ym1pc3Npb24gYXZlcmFnZSBpcyB0aGUgaGlnaGVzdCBvZiBhbnlvbmUgaGVyZSB3aXRoIGEgZnVsbCBVRkMgc2FtcGxlOyBBbGlldidzIGFuc3dlciBpcyA4MCUgdGFrZWRvd24gZGVmZW5jZSBhbmQgYW4gdW5iZWF0ZW4gcmVjb3JkLiBXaG9ldmVyIHdpbnMgdGhlIGZpcnN0IHNjcmFtYmxlIHZlcnkgbGlrZWx5IHdpbnMgdGhlIGZpZ2h0LiJ9XSxhPWU9PlN0cmluZyhlKS5yZXBsYWNlKC9bJjw+Il0vZyxlPT4oeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyJ9W2VdKSksaT1be2s6InNscG0iLGw6IlN0cmlrZXMgbGFuZGVkPGJyPnBlciBtaW4iLGRvbTo3LGRsOiIwIOKAkyA3LjAwIixmOmU9PmUudG9GaXhlZCgyKX0se2s6InN0ckFjYyIsbDoiU3RyaWtpbmc8YnI+YWNjdXJhY3kiLGRvbToxMDAsZGw6IjAg4oCTIDEwMCUiLGY6ZT0+bnVsbD09ZT8ibi9hIjplKyIlIn0se2s6InN0ckRlZiIsbDoiU3RyaWtpbmc8YnI+ZGVmZW5jZSIsZG9tOjEwMCxkbDoiMCDigJMgMTAwJSIsZjplPT5udWxsPT1lPyJuL2EiOmUrIiUifSx7azoidGQxNSIsbDoiVGFrZWRvd25zPGJyPnBlciAxNSBtaW4iLGRvbTo3LGRsOiIwIOKAkyA3LjAwIixmOmU9PmUudG9GaXhlZCgyKX0se2s6InRkRGVmIixsOiJUYWtlZG93bjxicj5kZWZlbmNlIixkb206MTAwLGRsOiIwIOKAkyAxMDAlIixmOmU9Pm51bGw9PWU/Im4vYSI6ZSsiJSJ9LHtrOiJrZDE1IixsOiJLbm9ja2Rvd25zPGJyPnBlciAxNSBtaW4iLGRvbTo0LGRsOiIwIOKAkyA0LjAwIixmOmU9PmUudG9GaXhlZCgyKX1dO2Z1bmN0aW9uIHMoZSx0KXtjb25zdCBuPXQubWFwKGU9PmUudj4wP2A8c3BhbiBjbGFzcz0iJHtlLmN9IiBzdHlsZT0iZmxleDowIDAgJHtlLnZ9JSI+JHtlLnY+PTE4P2EoZS5rKSsiICIrZS52KyIlIjoiIn08L3NwYW4+YDoiIikuam9pbigiIiksaT10LmZpbHRlcihlPT5lLnY+MCkubWFwKGU9PmA8c3Bhbj48aSBjbGFzcz0iJHtlLmN9Ij48L2k+JHthKGUuayl9ICR7ZS52fSU8L3NwYW4+YCkuam9pbigiIik7cmV0dXJuYDxkaXYgY2xhc3M9InNwbGl0LWxhYmVsIj4ke2EoZSl9PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz0ic3BsaXQiPiR7bn08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQiPiR7aX08L2Rpdj5gfWZ1bmN0aW9uIG8oZSl7cmV0dXJuYDxkaXYgY2xhc3M9InRhcGUtZ3JpZCI+XG4gICAgPGRpdiBjbGFzcz0idGFwZS1jZWxsIj48ZGl2IGNsYXNzPSJrIj5SZWNvcmQ8L2Rpdj48ZGl2IGNsYXNzPSJ2Ij4ke2EoZS5yZWNvcmQpfTwvZGl2PjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9InRhcGUtY2VsbCI+PGRpdiBjbGFzcz0iayI+QWdlPC9kaXY+PGRpdiBjbGFzcz0idiI+JHtlLmFnZX08L2Rpdj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJ0YXBlLWNlbGwiPjxkaXYgY2xhc3M9ImsiPkhlaWdodDwvZGl2PjxkaXYgY2xhc3M9InYiPiR7YShlLmhlaWdodCl9PC9kaXY+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0idGFwZS1jZWxsIj48ZGl2IGNsYXNzPSJrIj5SZWFjaDwvZGl2PjxkaXYgY2xhc3M9InYiPiR7YShlLnJlYWNoKX08L2Rpdj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJ0YXBlLWNlbGwiPjxkaXYgY2xhc3M9ImsiPkxlZyByZWFjaDwvZGl2PjxkaXYgY2xhc3M9InYiPiR7YShlLmxlZ1JlYWNoKX08L2Rpdj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJ0YXBlLWNlbGwiPjxkaXYgY2xhc3M9ImsiPkF2ZyBmaWdodCB0aW1lPC9kaXY+PGRpdiBjbGFzcz0idiI+JHthKGUuYXZnVGltZSl9PC9kaXY+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0idGFwZS1jZWxsIj48ZGl2IGNsYXNzPSJrIj5TdHlsZTwvZGl2PjxkaXYgY2xhc3M9InYiPiR7YShlLnN0eWxlKX08L2Rpdj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJ0YXBlLWNlbGwiPjxkaXYgY2xhc3M9ImsiPkNhbXA8L2Rpdj48ZGl2IGNsYXNzPSJ2IiBzdHlsZT0iZm9udC1zaXplOjAuNjg3NXJlbSI+JHthKGUuZ3ltKX08L2Rpdj48L2Rpdj5cbiAgPC9kaXY+YH1mdW5jdGlvbiByKGUsdCl7Y29uc3Qgbj1bZS5yYW5rLGUucGZwXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIC8vICIpO3JldHVybmA8ZGl2IGNsYXNzPSJjb3JuZXIgJHt0fSI+XG4gICAgPGRpdiBjbGFzcz0iZmlnIj5cbiAgICAgIDxpbWcgc3JjPSIke2UuaW1nfSIgYWx0PSIke2EoZS5maXJzdCl9ICR7YShlLmxhc3QpfSIgbG9hZGluZz0ibGF6eSIgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIlxuICAgICAgICAgICBvbmVycm9yPSJ0aGlzLmNsb3Nlc3QoJy5maWcnKS5jbGFzc0xpc3QuYWRkKCdmYWlsZWQnKSI+XG4gICAgICA8c3BhbiBjbGFzcz0ibW9uby1mYiI+JHthKGUuaW5pdGlhbHMpfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPSJmbGFnIj4ke2EoZS5mbGFnKX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT0ibWluLXdpZHRoOjA7cGFkZGluZy1ib3R0b206NnB4Ij5cbiAgICAgICR7ZS5uaWNrP2A8ZGl2IGNsYXNzPSJmLW5pY2siPiIke2EoZS5uaWNrKX0iPC9kaXY+YDoiIn1cbiAgICAgIDxkaXYgY2xhc3M9ImYtbmFtZSI+JHthKGUuZmlyc3QpfTxicj4ke2EoZS5sYXN0KX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9ImYtc3ViIj4ke2UucmVjb3JkfSAke24/YDxzcGFuIGNsYXNzPSJmLXJhbmsiPi8vICR7YShuKX08L3NwYW4+YDoiIn08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+YH1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm91dHMiKS5pbm5lckhUTUw9bi5tYXAoKGUsdCk9PntyZXR1cm5gXG4gIDxhcnRpY2xlIGNsYXNzPSJib3V0JHtlLnRpdGxlPyIgdGl0bGUtYm91dCI6IiJ9IiBkYXRhLW9wZW49ImZhbHNlIj5cbiAgICA8YnV0dG9uIGNsYXNzPSJib3V0LWhlYWQiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJwYW5lbC0ke3R9Ij5cbiAgICAgIDxkaXYgY2xhc3M9ImJvdXQtc3RyaXAiPlxuICAgICAgICA8c3BhbiBjbGFzcz0ic2xvdCI+JHthKGUuc2xvdCl9PC9zcGFuPlxuICAgICAgICAke2UudGl0bGU/JzxzcGFuIGNsYXNzPSJiZWx0Ij5UaXRsZSBvbiB0aGUgbGluZTwvc3Bhbj4nOiIifVxuICAgICAgICA8c3BhbiBjbGFzcz0id2VpZ2h0Ij4ke2EoZS53ZWlnaHQpfSAvLyAke2EoZS5yb3VuZHMpfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0idGFwZSI+XG4gICAgICAgICR7cihlLnJlZCwicmVkIil9XG4gICAgICAgIDxkaXYgY2xhc3M9InZzLXNwaW5lIj48c3BhbiBjbGFzcz0ic3BpbmUtcnVsZSI+PC9zcGFuPlZTPHNwYW4gY2xhc3M9InNwaW5lLXJ1bGUiPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgJHtyKGUuYmx1ZSwiYmx1ZSIpfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSJleHBhbmQtY3VlIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZS1zaHV0Ij5UZWNobmljYWwgYnJlYWtkb3duPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY3VlLW9wZW4iPkNsb3NlIGJyZWFrZG93bjwvc3Bhbj5cbiAgICAgICAgPHN2ZyBjbGFzcz0iY2FyZXQiIHdpZHRoPSIxMSIgaGVpZ2h0PSI3IiB2aWV3Qm94PSIwIDAgMTEgNyIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPlxuICAgICAgICAgIDxwYXRoIGQ9Ik0xIDFsNC41IDQuNUwxMCAxIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjYiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPSJwYW5lbC13cmFwIiBpZD0icGFuZWwtJHt0fSI+XG4gICAgICA8ZGl2IGNsYXNzPSJwYW5lbCI+XG4gICAgICAgIDxkaXYgY2xhc3M9InBhbmVsLWluIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1sYWJlbCI+SGVhZCB0byBoZWFkPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz0iY21wIj4ke249ZS5yZWQsZD1lLmJsdWUsaS5tYXAoZT0+e2NvbnN0IHQ9bltlLmtdLGE9ZFtlLmtdLGk9TWF0aC5taW4oMTAwLCh0fHwwKS9lLmRvbSoxMDApLHM9TWF0aC5taW4oMTAwLChhfHwwKS9lLmRvbSoxMDApLG89dD5hLHI9YT50O3JldHVybmA8ZGl2IGNsYXNzPSJjbXAtcm93Ij5cbiAgICAgICAgPGRpdiBjbGFzcz0iY21wLXZhbCBsJHtvPyIiOiIgZGltIn0iPiR7ZS5mKHQpfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFjayBsIj48c3BhbiBjbGFzcz0iZmlsbCR7bz8iIGxlYWQiOiIifSIgZGF0YS13PSIke2l9IiBzdHlsZT0id2lkdGg6MCUiPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0iY21wLWtleSI+JHtlLmx9PHNwYW4gY2xhc3M9ImRvbSI+JHtlLmRsfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0idHJhY2sgciI+PHNwYW4gY2xhc3M9ImZpbGwke3I/IiBsZWFkIjoiIn0iIGRhdGEtdz0iJHtzfSIgc3R5bGU9IndpZHRoOjAlIj48L3NwYW4+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9ImNtcC12YWwgciR7cj8iIjoiIGRpbSJ9Ij4ke2UuZihhKX08L2Rpdj5cbiAgICAgIDwvZGl2PmB9KS5qb2luKCIiKX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJzY2FsZS1ub3RlIj5cbiAgICAgICAgICAgIEJhcnMgYXJlIGRyYXduIHRvIHRoZSBmaXhlZCBzY2FsZSBzaG93biBiZXNpZGUgZWFjaCBtZXRyaWMuIEEgNTElIGJhciBmaWxsc1xuICAgICAgICAgICAgNTElIG9mIGl0cyB0cmFjay4gSGF0Y2hlZCBmaWxsIG1hcmtzIHdob2V2ZXIgbGVhZHMgdGhlIHJvdy5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1sYWJlbCI+RmlnaHRlciBwcm9maWxlczwvZGl2PlxuICAgICAgICAgICR7ZnVuY3Rpb24oZSx0KXtjb25zdCBuPShlLHQsbik9PmBcbiAgICA8ZGl2IGNsYXNzPSJwYyBsZWZ0JHtuPyIgaGRyIjoiIGJhbmQifSI+JHtlfTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9InBjIHJpZ2h0JHtuPyIgaGRyIjoiIGJhbmQifSI+JHt0fTwvZGl2PmA7cmV0dXJuYDxkaXYgY2xhc3M9InByb2ZpbGVzIj5cbiAgICAke24oYDxoNCBjbGFzcz0icHJvZi1uYW1lIHJlZC1uIj4ke2EoZS5maXJzdCl9ICR7YShlLmxhc3QpfTwvaDQ+XG4gICAgICAgPGRpdiBjbGFzcz0iY29ybmVyLXRhZyI+UmVkIGNvcm5lciR7ZS5uaWNrPycgLy8gIicrYShlLm5pY2spKyciJzoiIn08L2Rpdj5gLGA8aDQgY2xhc3M9InByb2YtbmFtZSBibHVlLW4iPiR7YSh0LmZpcnN0KX0gJHthKHQubGFzdCl9PC9oND5cbiAgICAgICA8ZGl2IGNsYXNzPSJjb3JuZXItdGFnIj5CbHVlIGNvcm5lciR7dC5uaWNrPycgLy8gIicrYSh0Lm5pY2spKyciJzoiIn08L2Rpdj5gLCEwKX1cbiAgICAke24obyhlKSxvKHQpKX1cbiAgICAke24oYDxkaXYgY2xhc3M9InRyYWl0cyI+JHtlLnRyYWl0cy5tYXAoZT0+YDxzcGFuIGNsYXNzPSJ0cmFpdCI+JHthKGUpfTwvc3Bhbj5gKS5qb2luKCIiKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJ0cmFpdHMiPiR7dC50cmFpdHMubWFwKGU9PmA8c3BhbiBjbGFzcz0idHJhaXQiPiR7YShlKX08L3NwYW4+YCkuam9pbigiIil9PC9kaXY+YCl9XG4gICAgJHtuKGA8cCBjbGFzcz0icmVhZCI+JHthKGUucmVhZCl9PC9wPmAsYDxwIGNsYXNzPSJyZWFkIj4ke2EodC5yZWFkKX08L3A+YCl9XG4gICAgJHtuKHMoIldpbiBtZXRob2QgZGlzdHJpYnV0aW9uIixbe2M6InNwLWtvIixrOiJLTyIsdjplLmZpbmlzaC5rb30se2M6InNwLWRlYyIsazoiREVDIix2OmUuZmluaXNoLmRlY30se2M6InNwLXN1YiIsazoiU1VCIix2OmUuZmluaXNoLnN1Yn1dKSxzKCJXaW4gbWV0aG9kIGRpc3RyaWJ1dGlvbiIsW3tjOiJzcC1rbyIsazoiS08iLHY6dC5maW5pc2gua299LHtjOiJzcC1kZWMiLGs6IkRFQyIsdjp0LmZpbmlzaC5kZWN9LHtjOiJzcC1zdWIiLGs6IlNVQiIsdjp0LmZpbmlzaC5zdWJ9XSkpfVxuICAgICR7bihzKCJTaWduaWZpY2FudCBzdHJpa2VzIGJ5IHRhcmdldCIsW3tjOiJzcC1oZWFkIixrOiJIZWFkIix2OmUudGFyZ2V0LmhlYWR9LHtjOiJzcC1ib2R5IixrOiJCb2R5Iix2OmUudGFyZ2V0LmJvZHl9LHtjOiJzcC1sZWciLGs6IkxlZyIsdjplLnRhcmdldC5sZWd9XSkscygiU2lnbmlmaWNhbnQgc3RyaWtlcyBieSB0YXJnZXQiLFt7Yzoic3AtaGVhZCIsazoiSGVhZCIsdjp0LnRhcmdldC5oZWFkfSx7Yzoic3AtYm9keSIsazoiQm9keSIsdjp0LnRhcmdldC5ib2R5fSx7Yzoic3AtbGVnIixrOiJMZWciLHY6dC50YXJnZXQubGVnfV0pKX1cbiAgPC9kaXY+YH0oZS5yZWQsZS5ibHVlKX1cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJkaWN0Ij5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZrIj5XaGVyZSB0aGlzIGZpZ2h0IGlzIGRlY2lkZWQ8L2Rpdj5cbiAgICAgICAgICAgIDxwPiR7YShlLnZlcmRpY3QpfTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJzcmMiPlNvdXJjZTogVUZDLmNvbSBhdGhsZXRlIHJlY29yZHMsIHJldHJpZXZlZCA2IE9jdCAyMDI2PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYXJ0aWNsZT5cbmA7dmFyIG4sZH0pLmpvaW4oIiIpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ib3V0LWhlYWQiKS5mb3JFYWNoKGU9PntlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2NvbnN0IHQ9ZS5jbG9zZXN0KCIuYm91dCIpLG49InRydWUiPT09dC5kYXRhc2V0Lm9wZW47dC5kYXRhc2V0Lm9wZW49U3RyaW5nKCFuKSxlLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKCFuKSk7Y29uc3QgYT10LnF1ZXJ5U2VsZWN0b3JBbGwoIi50cmFjayAuZmlsbCIpO24/YS5mb3JFYWNoKGU9PntlLnN0eWxlLndpZHRoPSIwJSJ9KTooYS5mb3JFYWNoKGU9PntlLnN0eWxlLndpZHRoPSIwJSJ9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2EuZm9yRWFjaCgoZSx0KT0+e3NldFRpbWVvdXQoKCk9PntlLnN0eWxlLndpZHRoPWUuZGF0YXNldC53KyIlIn0sMTIwKzQwKnQpfSl9KSkpfSl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmFxIikuaW5uZXJIVE1MPVt7cToiV2hlbiBhbmQgd2hlcmUgaXMgVUZDIDMzMz8iLGE6IlVGQyAzMzMgdGFrZXMgcGxhY2Ugb24gU2F0dXJkYXkgMjQgT2N0b2JlciAyMDI2IGF0IEV0aWhhZCBBcmVuYSwgWWFzIElzbGFuZCwgQWJ1IERoYWJpLCBoZWFkbGluaW5nIEFidSBEaGFiaSBTaG93ZG93biBXZWVrLiBNYWluIGNhcmQgaXMgc2NoZWR1bGVkIGZvciAyMjowMCBHdWxmIFN0YW5kYXJkIFRpbWUsIHdpdGggcHJlbGltcyBmcm9tIDIwOjAwIGFuZCBlYXJseSBwcmVsaW1zIGZyb20gMTg6MDAuIENoZWNrIHlvdXIgdGlja2V0IGZvciBmaW5hbCBkb29yIHRpbWVzLiJ9LHtxOiJXaG8gaXMgZmlnaHRpbmcgYXQgVUZDIDMzMz8iLGE6IkFsZXhhbmRlciBWb2xrYW5vdnNraSBkZWZlbmRzIHRoZSBmZWF0aGVyd2VpZ2h0IHRpdGxlIGFnYWluc3QgTW92c2FyIEV2bG9ldiBpbiB0aGUgbWFpbiBldmVudCwgYW5kIFBldHIgWWFuIGRlZmVuZHMgdGhlIGJhbnRhbXdlaWdodCB0aXRsZSBhZ2FpbnN0IE1lcmFiIER2YWxpc2h2aWxpIGluIHRoZSBjby1tYWluLiBUaGUgbWFpbiBjYXJkIGFsc28gaGFzIExvbmUnZXIgS2F2YW5hZ2ggdnMgUmFtYXphbiBUZW1pcm92IGF0IGZseXdlaWdodCwgQWxleGFuZGVyIFZvbGtvdiB2cyBSaXp2YW4gS3VuaWV2IGF0IGhlYXZ5d2VpZ2h0IGFuZCBBcm5vbGQgQWxsZW4gdnMgQWFyb24gUGljbyBhdCBmZWF0aGVyd2VpZ2h0LiBPbiB0aGUgcHJlbGltczogQXphbWF0IE11cnpha2Fub3YgdnMgRG9taW5pY2sgUmV5ZXMgYW5kIE5pa2l0YSBLcnlsb3YgdnMgQWJkdWwgUmFraG1hbiBZYWtoeWFldiBhdCBsaWdodCBoZWF2eXdlaWdodCwgQWJ1cyBNYWdvbWVkb3YgdnMgQ2FtIFJvd3N0b24gYXQgbWlkZGxld2VpZ2h0LCBhbmQgR3JhbnQgRGF3c29uIHZzIE51cnVsbG8gQWxpZXYgYXQgbGlnaHR3ZWlnaHQuIFRoZSBjYXJkIGlzIHN1YmplY3QgdG8gY2hhbmdlLiJ9LHtxOiJXaGF0IGRvZXMgYSBVRkMgQWJ1IERoYWJpIHRpY2tldCBhbmQgaG90ZWwgcGFja2FnZSBpbmNsdWRlPyIsYToiRXZlcnkgcGFja2FnZSBpbmNsdWRlcyB5b3VyIG9mZmljaWFsIG1hdGNoIHRpY2tldCBpbiB5b3VyIGNob3NlbiBjYXRlZ29yeSwgb25lIG5pZ2h0J3MgYWNjb21tb2RhdGlvbiBvbiBvciBuZWFyIFlhcyBJc2xhbmQsIGFsbCB0YXhlcyBhbmQgVkFULCBhbmQgdGhlIHNlcnZpY2VzIG9mIHRoZSBFUyBTcG9ydCB0ZWFtIGluIEFidSBEaGFiaS4gQ2F0ZWdvcmllcyBydW4gZnJvbSA4IHRocm91Z2ggdG8gMywgcGx1cyBWSVAgZmxvb3Igc2VhdGluZy4gU3RheXMgY2FuIGJlIGV4dGVuZGVkIGJleW9uZCBvbmUgbmlnaHQgYW5kIG11bHRpcGxlIHRpY2tldHMgY2FuIGJlIGJvb2tlZCB1bmRlciBhIHNpbmdsZSBwYWNrYWdlLiBUZWxsIHVzIHdoYXQgeW91IG5lZWQgb24gdGhlIGVucXVpcnkgZm9ybS4ifSx7cToiSXMgdGhlcmUgcGFya2luZyBhdCBFdGloYWQgQXJlbmE/IixhOiJZZXMuIE9uLXNpdGUgcGFya2luZyBhdCBZYXMgQmF5IGlzIGZyZWUgYW5kIHNpZ25wb3N0ZWQgZnJvbSB0aGUgWWFzIElzbGFuZCBhcHByb2FjaCByb2Fkcy4gQXJyaXZlIGVhcmx5IG9uIGZpZ2h0IG5pZ2h0LiBUaGUgYXJlbmEgc2l0cyBhbG9uZ3NpZGUgdGhlIFlhcyBCYXkgV2F0ZXJmcm9udCByZXN0YXVyYW50cyBhbmQgdGhlIGFyZWEgZmlsbHMgd2VsbCBiZWZvcmUgZmlyc3QgYmVsbC4ifSx7cToiSG93IHdpbGwgSSByZWNlaXZlIG15IHRpY2tldCBhbmQgY29uZmlybWF0aW9uPyIsYToiQ29uZmlybWF0aW9uIGlzIGVtYWlsZWQgb25jZSB5b3VyIHBhY2thZ2UgaXMgc2VjdXJlZC4gVGlja2V0cyBhcmUgaXNzdWVkIGRpZ2l0YWxseSBhaGVhZCBvZiB0aGUgZXZlbnQsIHdpdGggY29sbGVjdGlvbiBkZXRhaWxzIGNvbmZpcm1lZCBpbiB3cml0aW5nIGJlZm9yZWhhbmQuIElmIGFueXRoaW5nIGlzIHVuY2xlYXIsIHJlcGx5IHRvIHlvdXIgY29uZmlybWF0aW9uIGVtYWlsIGFuZCBpdCBnb2VzIHN0cmFpZ2h0IHRvIHRoZSB0ZWFtIGhhbmRsaW5nIHlvdXIgYm9va2luZy4ifSx7cToiQ2FuIEkgYm9vayBmb3IgYSBncm91cCBvciBmb3IgY29ycG9yYXRlIGhvc3Rpbmc/IixhOiJZZXMuIEdyb3VwIGFuZCBjb3Jwb3JhdGUgYm9va2luZ3MgYXJlIGhhbmRsZWQgZGlyZWN0bHkgYnkgdGhlIEVTIFNwb3J0IHRlYW0uIEVtYWlsIGluZm9AZXMtc3BvcnQuYWUgd2l0aCB0aGUgaGVhZGNvdW50LCB0aGUgY2F0ZWdvcnkgYW5kIHdoZXRoZXIgeW91IG5lZWQgaG9zcGl0YWxpdHksIGFuZCB3ZSB3aWxsIGNvbWUgYmFjayB3aXRoIGEgdGFpbG9yZWQgcHJvcG9zYWwuIn1dLm1hcCgoZSx0KT0+YFxuICA8ZGl2IGNsYXNzPSJmYXEtaXRlbSIgZGF0YS1vcGVuPSJmYWxzZSI+XG4gICAgPGJ1dHRvbiBjbGFzcz0iZmFxLXEiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJmYS0ke3R9Ij5cbiAgICAgIDxzcGFuIGNsYXNzPSJpeCI+JHtTdHJpbmcodCsxKS5wYWRTdGFydCgyLCIwIil9PC9zcGFuPlxuICAgICAgPHNwYW4+JHthKGUucSl9PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9InBtIiBhcmlhLWhpZGRlbj0idHJ1ZSI+Kzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPSJmYXEtd3JhcCIgaWQ9ImZhLSR7dH0iPlxuICAgICAgPGRpdiBjbGFzcz0iZmFxLWEiPjxkaXYgY2xhc3M9ImZhcS1hLWluIj4ke2EoZS5hKX08L2Rpdj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+YCkuam9pbigiIiksZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmZhcS1xIikuZm9yRWFjaChlPT57ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pntjb25zdCB0PWUuY2xvc2VzdCgiLmZhcS1pdGVtIiksbj0idHJ1ZSI9PT10LmRhdGFzZXQub3Blbjt0LmRhdGFzZXQub3Blbj1TdHJpbmcoIW4pLGUuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoIW4pKX0pfSksZnVuY3Rpb24oKXtjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2c3RvcnkiKTtpZighZSlyZXR1cm47Y29uc3QgdD1lLnF1ZXJ5U2VsZWN0b3IoIi52c3RvcnktaGVhZCIpO3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57Y29uc3Qgbj0idHJ1ZSI9PT1lLmRhdGFzZXQub3BlbjtlLmRhdGFzZXQub3Blbj1TdHJpbmcoIW4pLHQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoIW4pKX0pfSgpO2NvbnN0IGQ9bmV3IERhdGUoIjIwMjYtMTAtMjRUMTg6MDA6MDArMDQ6MDAiKS5nZXRUaW1lKCksYz1lPT5TdHJpbmcoZSkucGFkU3RhcnQoMiwiMCIpO2Z1bmN0aW9uIGwoKXtjb25zdCBlPWQtRGF0ZS5ub3coKTtlPD0wP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZC1jZWxscyIpLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iY2QtY2VsbCIgc3R5bGU9ImZsZXg6MSI+PGRpdiBjbGFzcz0iY2QtbiI+TElWRTwvZGl2PjxkaXYgY2xhc3M9ImNkLWwiPkV0aWhhZCBBcmVuYTwvZGl2PjwvZGl2Pic6KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZC1kIikudGV4dENvbnRlbnQ9TWF0aC5mbG9vcihlLzg2NGU1KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2QtaCIpLnRleHRDb250ZW50PWMoTWF0aC5mbG9vcihlJTg2NGU1LzM2ZTUpKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2QtbSIpLnRleHRDb250ZW50PWMoTWF0aC5mbG9vcihlJTM2ZTUvNmU0KSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNkLXMiKS50ZXh0Q29udGVudD1jKE1hdGguZmxvb3IoZSU2ZTQvMWUzKSkpfWwoKSxzZXRJbnRlcnZhbChsLDFlMyk7dmFyIHU9e2V2ZW50OiJVRkMgMzMzIix2ZW51ZToiRXRpaGFkIEFyZW5hLCBBYnUgRGhhYmkiLGN1cnJlbmN5OiJBRUQiLGRlZmF1bHRHdWVzdHM6MSxjYXRlZ29yaWVzOnsxOntuYW1lOiJDYXRlZ29yeSAxIixhcmVhOiJGbG9vciIsY29sb3VyOiIjNkExMDEwIixwcmljZTpudWxsLG5vdGU6IiJ9LDI6e25hbWU6IkNhdGVnb3J5IDIiLGFyZWE6IkZsb29yIixjb2xvdXI6IiMwODZGODEiLHByaWNlOjEzNjIwLG5vdGU6IlN1YmplY3QgdG8gYXZhaWxhYmlsaXR5In0sMzp7bmFtZToiQ2F0ZWdvcnkgMyIsYXJlYToiRmxvb3IiLGNvbG91cjoiI0QzMUM1NSIscHJpY2U6MTExMjAsbm90ZToiU3ViamVjdCB0byBhdmFpbGFiaWxpdHkifSw0OntuYW1lOiJDYXRlZ29yeSA0IixhcmVhOiJGbG9vciIsY29sb3VyOiIjMjlBOUQ5IixwcmljZToxMjIxMCxub3RlOiJTdWJqZWN0IHRvIGF2YWlsYWJpbGl0eSJ9LDU6e25hbWU6IkNhdGVnb3J5IDUiLGFyZWE6Ikxvd2VyIGJvd2wiLGNvbG91cjoiIzI5NzM1OSIscHJpY2U6NzI4NSxub3RlOiIifSw2OntuYW1lOiJDYXRlZ29yeSA2IixhcmVhOiJMb3dlciBib3dsIixjb2xvdXI6IiM5RDVDMkYiLHByaWNlOjIzNzAsbm90ZToiIn0sNzp7bmFtZToiQ2F0ZWdvcnkgNyIsYXJlYToiTG93ZXIgYm93bCIsY29sb3VyOiIjOUQ5OENBIixwcmljZToxNDUwLG5vdGU6IiJ9LDg6e25hbWU6IkNhdGVnb3J5IDgiLGFyZWE6IlVwcGVyIGJvd2wiLGNvbG91cjoiIzg1ODk4RCIscHJpY2U6MTYyMCxub3RlOiIifX0sc29sZE91dENhdGVnb3JpZXM6W10saGlkZGVuRmllbGROYW1lOiJzZWF0bWFwLXNlbGVjdGlvbiIsZW5xdWlyeVVybDoiIixvbkVucXVpcmU6bnVsbH07IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc1NlYXRNYXAiKTtpZihlKXt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtU3RhZ2UiKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc21TdmciKSxhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc21WcCIpLGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVzbVRpcCIpLHM9dSxvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4ucXVlcnlTZWxlY3RvckFsbCgiLmVzbS1ibGsiKSkscj17fSxkPW51bGwsYz0ibW91c2UiO28uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZSgiZGF0YS1jYXQiKTtTKHQpP2UuY2xhc3NMaXN0LmFkZCgiaXMtb3V0Iik6KGUuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSxlLnNldEF0dHJpYnV0ZSgicm9sZSIsImJ1dHRvbiIpLGUuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiU2VsZWN0ICIrcy5jYXRlZ29yaWVzW3RdLm5hbWUrIiAoIitzLmNhdGVnb3JpZXNbdF0uYXJlYSsiKSwgIitmdW5jdGlvbihlKXt2YXIgdD1zLmNhdGVnb3JpZXNbZV0ucHJpY2U7cmV0dXJuIG51bGw9PT10PyJwcmljZSBvbiByZXF1ZXN0IjpzLmN1cnJlbmN5KyIgIit4KHQpKyIgcGVyIHBlcnNvbiJ9KHQpKSl9KTt2YXIgbCxoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc21CYW5kcyIpO28uZm9yRWFjaChmdW5jdGlvbihlKXtlLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixmdW5jdGlvbihlKXtjPWUucG9pbnRlclR5cGV9KSxlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0QXR0cmlidXRlKCJkYXRhLWNhdCIpLGE9ZS5nZXRBdHRyaWJ1dGUoImRhdGEtYmxrIiksbz1zLmNhdGVnb3JpZXNbbl0scj1lLmNsYXNzTGlzdC5jb250YWlucygiaXMtb3V0Iik7aS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS10aXBjIixvLmNvbG91ciksaS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImVzbS10aXAtayI+JytvLmFyZWErKGE/IiAmbWlkZG90OyBuZWFyIHNlY3Rpb24gIithOiIiKSsnPC9kaXY+PGRpdiBjbGFzcz0iZXNtLXRpcC1uIj4nK28ubmFtZSsiPC9kaXY+Iisocj8nPGRpdiBjbGFzcz0iZXNtLXRpcC1wIGlzLXJlcSIgc3R5bGU9ImNvbG9yOnZhcigtLWRpbSkiPlNvbGQgb3V0PC9kaXY+JzpudWxsPT09by5wcmljZT8nPGRpdiBjbGFzcz0iZXNtLXRpcC1wIj5PbiByZXF1ZXN0PC9kaXY+JzonPGRpdiBjbGFzcz0iZXNtLXRpcC1wIj48c21hbGw+JytzLmN1cnJlbmN5KyI8L3NtYWxsPiIreChvLnByaWNlKSsiPC9kaXY+IikrJzxkaXYgY2xhc3M9ImVzbS10aXAteCI+Jysocj8iQ3VycmVudGx5IHVuYXZhaWxhYmxlIjoiUGVyIHBlcnNvbiAmbWlkZG90OyByZXNlcnZlZCBieSBjYXRlZ29yeSIpKyI8L2Rpdj4iLGkuY2xhc3NMaXN0LmFkZCgiaXMtb24iKSxDKHQpfShlLHQpfSksZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLEMpLGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsSSksZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24odCl7a3x8KHQuc3RvcFByb3BhZ2F0aW9uKCksTShlKSwidG91Y2giPT09YyYmKGNsZWFyVGltZW91dChsKSxsPXNldFRpbWVvdXQoSSwxNjAwKSkpfSksZS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixmdW5jdGlvbih0KXsiRW50ZXIiIT09dC5rZXkmJiIgIiE9PXQua2V5fHwodC5wcmV2ZW50RGVmYXVsdCgpLE0oZSkpfSl9KTt2YXIgbT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtTGlzdCIpLGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVzbUVtcHR5IiksZz17fTt2YXIgZXNtU2VuZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtU2VuZCIpO2Z1bmN0aW9uIHVwZGF0ZUVzbUN0YSgpe3ZhciB0PVIoKSxuNT10Lml0ZW1zLmxlbmd0aD09PTEmJk51bWJlcihTdHJpbmcodC5pdGVtc1swXS5jYXRlZ29yeSkucmVwbGFjZSgvXEQvZywiIikpPT09NTtlc21TZW5kLnRleHRDb250ZW50PW41PyJCdXkgTm93IjoiU2VuZCBlbnF1aXJ5Ijtlc21TZW5kLmNsYXNzTGlzdC50b2dnbGUoImVzLWhvdGVsLWJ1eSIsbjUpO2VzbVNlbmQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixuNT8iQnV5IE5vdyI6IlNlbmQgZW5xdWlyeSIpO2lmKG41KXtlc21TZW5kLmNsYXNzTGlzdC5hZGQoImVzLWhvdGVsLWJvb2stdHJpZ2dlciIpO2VzbVNlbmQuc2V0QXR0cmlidXRlKCJkYXRhLW9wZW4taG90ZWwtYm9va2luZyIsIiIpfWVsc2V7ZXNtU2VuZC5jbGFzc0xpc3QucmVtb3ZlKCJlcy1ob3RlbC1ib29rLXRyaWdnZXIiKTtlc21TZW5kLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1vcGVuLWhvdGVsLWJvb2tpbmciKX19ZXNtU2VuZC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZXYpe3ZhciB0PVIoKSxuNT10Lml0ZW1zLmxlbmd0aD09PTEmJk51bWJlcihTdHJpbmcodC5pdGVtc1swXS5jYXRlZ29yeSkucmVwbGFjZSgvXEQvZywiIikpPT09NTtpZihuNSl7d2luZG93LkVTX0hPVEVMX0JPT0tfQ09ORklHPXtwcm9kdWN0SWQ6ODE3NSxwcm9kdWN0TmFtZToiVUZDIDMzMyBDQVQgNSBUaWNrZXQgKyBIb3RlbCAoSGF3dGhvcm4gU3VpdGVzIGJ5IFd5bmRoYW0gQWJ1IERoYWJpKSIscHJvZHVjdFByaWNlOjcyODUsbWluaW11bVN0YXk6Mixob3RlbElkczoiIixjaXR5SWQ6IiIsY291bnRyeUNvZGU6IkFFIixjYW5jZWxsYXRpb246ZmFsc2UsZGlzcGxheUhvdGVsUHJpY2U6ZmFsc2UsYWpheFVybDoiaHR0cHM6Ly93d3cuZXMtc3BvcnQuYWUvd3AtYWRtaW4vYWRtaW4tYWpheC5waHAifTtyZXR1cm47fWRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJlc3Nwb3J0OnNlYXRtYXAtZW5xdWlyeSIse2RldGFpbDp0LGJ1YmJsZXM6ITB9KSk7dmFyIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9Iicrcy5oaWRkZW5GaWVsZE5hbWUrJyJdJyk7aWYobnx8KChuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnR5cGU9ImhpZGRlbiIsbi5uYW1lPXMuaGlkZGVuRmllbGROYW1lLGUuYXBwZW5kQ2hpbGQobikpLG4udmFsdWU9dC5zdW1tYXJ5KyJcblxuRXN0aW1hdGVkIHRvdGFsOiAiK3MuY3VycmVuY3krIiAiK3godC5lc3RpbWF0ZWRUb3RhbCkrIiAoZXhjbC4gVkFUKSIsImZ1bmN0aW9uIiE9dHlwZW9mIHMub25FbnF1aXJlfHwhMCE9PXMub25FbnF1aXJlKHQpKWlmKHMuZW5xdWlyeVVybCl7dmFyIGE9bmV3IFVSTFNlYXJjaFBhcmFtcyh7ZXZlbnQ6dC5ldmVudCxzZWF0czp0LnN1bW1hcnksZ3Vlc3RzOnQudG90YWxHdWVzdHMsdG90YWw6dC5lc3RpbWF0ZWRUb3RhbH0pO3dpbmRvdy5sb2NhdGlvbi5ocmVmPXMuZW5xdWlyeVVybCsocy5lbnF1aXJ5VXJsLmluZGV4T2YoIj8iKT4tMT8iJiI6Ij8iKSthLnRvU3RyaW5nKCl9ZWxzZSBlc09wZW5FbnF1aXJ5KCJUaWNrZXQgYW5kIGhvdGVsIHBhY2thZ2UiLCIiKX0pO3VwZGF0ZUVzbUN0YSgpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc21DbGVhciIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3I9e30sJCgpLHEoKSxEKCl9KTt2YXIgdixwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc21Ub2FzdCIpLHk9e2s6MSx4OjAseTowfTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtSW4iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgZT1IKCk7TigxLjQ1LGVbMF0sZVsxXSl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtT3V0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGU9SCgpO04oMS8xLjQ1LGVbMF0sZVsxXSl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtUnN0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7eT17azoxLHg6MCx5OjB9LEYoKX0pLHQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLGZ1bmN0aW9uKGUpe2lmKCFlLmN0cmxLZXkmJiFlLm1ldGFLZXkpe2VzTWFwRmxhc2godCwiQ3RybCArIHNjcm9sbCB0byB6b29tIik7cmV0dXJufWUucHJldmVudERlZmF1bHQoKTt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO04oZS5kZWx0YVk8MD8xLjE4OjEvMS4xOCxlLmNsaWVudFgtbi5sZWZ0LGUuY2xpZW50WS1uLnRvcCl9LHtwYXNzaXZlOiExfSk7dmFyIGI9ITEsaz0hMSx3PW51bGwsRT17fSxMPW51bGw7aWYodC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsZnVuY3Rpb24oZSl7aWYoRVtlLnBvaW50ZXJJZF09e3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZfSwyPT09T2JqZWN0LmtleXMoRSkubGVuZ3RoKXt2YXIgdD1PYmplY3Qua2V5cyhFKSxuPUVbdFswXV0sYT1FW3RbMV1dO3JldHVybiBMPU1hdGguaHlwb3Qobi54LWEueCxuLnktYS55KSx2b2lkKGI9ITEpfWI9ITAsaz0hMSx3PXt4OmUuY2xpZW50WCx5OmUuY2xpZW50WX19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGZ1bmN0aW9uKGUpe0VbZS5wb2ludGVySWRdJiYoRVtlLnBvaW50ZXJJZF09e3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZfSk7dmFyIG49T2JqZWN0LmtleXMoRSk7aWYoMj09PW4ubGVuZ3RoJiZMKXt2YXIgYT1FW25bMF1dLGk9RVtuWzFdXSxzPU1hdGguaHlwb3QoYS54LWkueCxhLnktaS55KSxvPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIE4ocy9MLChhLngraS54KS8yLW8ubGVmdCwoYS55K2kueSkvMi1vLnRvcCksdm9pZChMPXMpfWlmKGIpe3ZhciBwej1lc21QWCgpLHI9KGUuY2xpZW50WC13LngpL3B6LnMsZD0oZS5jbGllbnRZLXcueSkvcHoucztNYXRoLmFicyhyKStNYXRoLmFicyhkKT40JiYoaz0hMCx0LmNsYXNzTGlzdC5hZGQoImlzLXBhbm5pbmciKSxJKCkpLHkueCs9cix5LnkrPWQsdz17eDplLmNsaWVudFgseTplLmNsaWVudFl9LEYoKX19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixVKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsVSksdC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLGZ1bmN0aW9uKCl7SSgpfSksd2luZG93LkVTU2VhdE1hcD17Y29uZmlnOnMsZ2V0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIFIoKX0sY2xlYXI6ZnVuY3Rpb24oKXtyPXt9LCQoKSxxKCksRCgpfSxzZWxlY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5xdWVyeVNlbGVjdG9yKCcuZXNtLWJsa1tkYXRhLWNhdD0iJytlKyciXScpO3QmJk0odCl9LHNldFNvbGRPdXQ6ZnVuY3Rpb24oZSl7cy5zb2xkT3V0Q2F0ZWdvcmllcz1lfHxbXSxvLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9UyhlLmdldEF0dHJpYnV0ZSgiZGF0YS1jYXQiKSk7ZS5jbGFzc0xpc3QudG9nZ2xlKCJpcy1vdXQiLHQpLHQ/ZS5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iik6ZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpfSkscSgpfSxzZXRQcmljZTpmdW5jdGlvbihlLHQpe3MuY2F0ZWdvcmllc1tlXS5wcmljZT10LHEoKSxEKCl9fSx3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihob3Zlcjogbm9uZSkiKS5tYXRjaGVzKXt2YXIgQT1lLnF1ZXJ5U2VsZWN0b3IoIi5lc20taGludCIpO0EmJihBLnRleHRDb250ZW50PSJQaW5jaCB0byB6b29tIMK3IGRyYWcgdG8gcGFuIil9cSgpLEQoKSxGKCl9ZnVuY3Rpb24geChlKXtyZXR1cm4gZS50b0xvY2FsZVN0cmluZygiZW4tVVMiKX1mdW5jdGlvbiBUKGUpe3JldHVybiBTdHJpbmcoZSl9ZnVuY3Rpb24gUyhlKXtyZXR1cm4gcy5zb2xkT3V0Q2F0ZWdvcmllcy5pbmRleE9mKE51bWJlcihlKSk+LTF9ZnVuY3Rpb24gcSgpe2guaW5uZXJIVE1MPSIiLE9iamVjdC5rZXlzKHMuY2F0ZWdvcmllcykuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1zLmNhdGVnb3JpZXNbZV0sbj1zLnNvbGRPdXRDYXRlZ29yaWVzLmluZGV4T2YoTnVtYmVyKGUpKT4tMSxhPXJbZV0/cltlXS5ndWVzdHM6MCxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO2kudHlwZT0iYnV0dG9uIixpLmNsYXNzTmFtZT0iZXNtLWJhbmQiKyhkPT1lPyIgaXMtYWN0aXZlIjoiIiksaS5zZXRBdHRyaWJ1dGUoImRhdGEtY2F0IixlKSxpLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixkPT1lPyJ0cnVlIjoiZmFsc2UiKTt2YXIgbz1uPyc8c3BhbiBjbGFzcz0iZXNtLWJhbmQtcCBpcy1yZXEiPlNvbGQgb3V0PC9zcGFuPic6bnVsbD09PXQucHJpY2U/JzxzcGFuIGNsYXNzPSJlc20tYmFuZC1wIGlzLXJlcSI+T24gcmVxdWVzdDwvc3Bhbj4nOic8c3BhbiBjbGFzcz0iZXNtLWJhbmQtcCI+PHNwYW4+JytzLmN1cnJlbmN5KyI8L3NwYW4+Iit4KHQucHJpY2UpKyI8L3NwYW4+IjtpLmlubmVySFRNTD0nPHNwYW4gY2xhc3M9ImVzbS1iYW5kLWNoaXAiIHN0eWxlPSJiYWNrZ3JvdW5kOicrdC5jb2xvdXIrJyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJlc20tYmFuZC1uIj4nK3QubmFtZSsiPHM+Iit0LmFyZWErKHQubm90ZT8iICZtaWRkb3Q7ICIrdC5ub3RlOiIiKSsiPC9zPjwvc3Bhbj4iK28rKGE/JzxzcGFuIGNsYXNzPSJlc20tYmFuZC1jIj4nK2ErIjwvc3Bhbj4iOiIiKSxpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyFmdW5jdGlvbihlKXtkPWQ9PWU/bnVsbDplLEIoZCksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVzbUZpbHRlck5vdGUiKS50ZXh0Q29udGVudD1kP3MuY2F0ZWdvcmllc1tkXS5uYW1lKyIgb25seSI6IkFsbCBzaG93biIscSgpfShlKX0pLGkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtkfHxCKGUpfSksaS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe2R8fEIobnVsbCl9KSxoLmFwcGVuZENoaWxkKGkpfSl9ZnVuY3Rpb24gQih0KXtlLmNsYXNzTGlzdC50b2dnbGUoImlzLWZpbHRlcmVkIixudWxsIT09dCksby5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LnRvZ2dsZSgiaXMtbGl0IixudWxsIT09dCYmZS5nZXRBdHRyaWJ1dGUoImRhdGEtY2F0Iik9PXQpfSl9ZnVuY3Rpb24gQyhlKXt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9ZS5jbGllbnRYLW4ubGVmdCsxNixzPWUuY2xpZW50WS1uLnRvcCsxNjthK2kub2Zmc2V0V2lkdGg+bi53aWR0aC04JiYoYT1lLmNsaWVudFgtbi5sZWZ0LWkub2Zmc2V0V2lkdGgtMTIpLHMraS5vZmZzZXRIZWlnaHQ+bi5oZWlnaHQtOCYmKHM9ZS5jbGllbnRZLW4udG9wLWkub2Zmc2V0SGVpZ2h0LTEyKSxpLnN0eWxlLmxlZnQ9TWF0aC5tYXgoNixhKSsicHgiLGkuc3R5bGUudG9wPU1hdGgubWF4KDYscykrInB4In1mdW5jdGlvbiBJKCl7aS5jbGFzc0xpc3QucmVtb3ZlKCJpcy1vbiIpfWZ1bmN0aW9uIE0oZSl7aWYoZS5jbGFzc0xpc3QuY29udGFpbnMoImlzLW91dCIpKU8oIlRoYXQgY2F0ZWdvcnkgaXMgc29sZCBvdXQiKTtlbHNle3ZhciB0PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWNhdCIpLG49VCh0KTtyW25dP2RlbGV0ZSByW25dOihyW25dPXtjYXQ6TnVtYmVyKHQpLGd1ZXN0czpzLmRlZmF1bHRHdWVzdHN9LE8ocy5jYXRlZ29yaWVzW3RdLm5hbWUrIiBzZWxlY3RlZCIpKSwkKCkscSgpLEQoKSxyW25dJiZvLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5nZXRBdHRyaWJ1dGUoImRhdGEtY2F0Iik9PT10JiYoZS5jbGFzc0xpc3QucmVtb3ZlKCJtby1oaXQiKSxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGUuY2xhc3NMaXN0LmFkZCgibW8taGl0IiksZS5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLGZ1bmN0aW9uIHQoKXtlLmNsYXNzTGlzdC5yZW1vdmUoIm1vLWhpdCIpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIix0KX0pKX0pfX1mdW5jdGlvbiAkKCl7by5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PSEhcltUKGUuZ2V0QXR0cmlidXRlKCJkYXRhLWNhdCIpKV07ZS5jbGFzc0xpc3QudG9nZ2xlKCJpcy1zZWwiLHQpLGUuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLHQ/InRydWUiOiJmYWxzZSIpfSl9ZnVuY3Rpb24gRCgpe3ZhciBlPU9iamVjdC5rZXlzKHIpO20uaW5uZXJIVE1MPSIiLGYuc3R5bGUuZGlzcGxheT1lLmxlbmd0aD8ibm9uZSI6ImJsb2NrIixlLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gcltlXS5jYXQtclt0XS5jYXR9KSxlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9cltlXSxuPXMuY2F0ZWdvcmllc1t0LmNhdF0sYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0iZXNtLXJvdyIsYS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1yb3djIixuLmNvbG91ciksYS5pbm5lckhUTUw9JzxzcGFuIGNsYXNzPSJlc20tcm93LWJhciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJlc20tcm93LW4iPicrbi5uYW1lKyI8cz4iK24uYXJlYSsiICZtaWRkb3Q7ICIrKG51bGw9PT1uLnByaWNlPyJvbiByZXF1ZXN0IjpzLmN1cnJlbmN5KyIgIit4KG4ucHJpY2UpKyIgcHAiKSsnPC9zPjwvc3Bhbj48c3BhbiBjbGFzcz0iZXNtLXF0eSI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtYT0iLSIgYXJpYS1sYWJlbD0iRmV3ZXIgZ3Vlc3RzIj4mbWludXM7PC9idXR0b24+PHNwYW4+Jyt0Lmd1ZXN0cysnPC9zcGFuPjxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWE9IisiIGFyaWEtbGFiZWw9Ik1vcmUgZ3Vlc3RzIj4rPC9idXR0b24+PC9zcGFuPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZXNtLWRlbCIgZGF0YS1hPSJ4IiBhcmlhLWxhYmVsPSJSZW1vdmUgJytuLm5hbWUrJyI+JnRpbWVzOzwvYnV0dG9uPicsZ1tlXXx8YS5jbGFzc0xpc3QuYWRkKCJtby1uZXciKSxhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihuKXt2YXIgYT1uLnRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtYSIpO2EmJigiKyI9PT1hJiZ0Lmd1ZXN0cysrLCItIj09PWEmJih0Lmd1ZXN0cz1NYXRoLm1heCgxLHQuZ3Vlc3RzLTEpKSwieCI9PT1hJiZkZWxldGUgcltlXSwkKCkscSgpLEQoKSl9KSxtLmFwcGVuZENoaWxkKGEpfSk7dmFyIHQ9MCxuPTAsYT0hMTtlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIGk9cltlXSxvPXMuY2F0ZWdvcmllc1tpLmNhdF0ucHJpY2U7bis9aS5ndWVzdHMsbnVsbD09PW8/YT0hMDp0Kz1vKmkuZ3Vlc3RzfSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVzbUNvdW50IikudGV4dENvbnRlbnQ9ZS5sZW5ndGgrKDE9PT1lLmxlbmd0aD8iIGNhdGVnb3J5IjoiIGNhdGVnb3JpZXMiKSsobj8iIMK3ICIrbisoMT09PW4/IiBndWVzdCI6IiBndWVzdHMiKToiIiksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVzbVRvdGFsIikuaW5uZXJIVE1MPSI8c21hbGw+IitzLmN1cnJlbmN5KyI8L3NtYWxsPiIreCh0KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtTm90ZSIpLmlubmVySFRNTD1lLmxlbmd0aD8iRXhjbHVkZXMgNSUgVkFULiIrKGE/IiBDYXRlZ29yeSZuYnNwOzEgaXMgcHJpY2VkIG9uIHJlcXVlc3QgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHRvdGFsLiI6IiIpOiIiLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc21TZW5kIikuZGlzYWJsZWQ9IWUubGVuZ3RoO3ZhciBlc21Jc0NhdDU9ZS5sZW5ndGg9PT0xJiZOdW1iZXIocltlWzBdXS5jYXQpPT09NSxlc21CdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVzbVNlbmQiKTtlc21CdG4udGV4dENvbnRlbnQ9ZXNtSXNDYXQ1PyJCdXkgTm93IjoiU2VuZCBlbnF1aXJ5Ijtlc21CdG4uY2xhc3NMaXN0LnRvZ2dsZSgiZXMtaG90ZWwtYnV5Iixlc21Jc0NhdDUpO2VzbUJ0bi5jbGFzc0xpc3QudG9nZ2xlKCJlcy1ob3RlbC1ib29rLXRyaWdnZXIiLGVzbUlzQ2F0NSk7ZXNtSXNDYXQ1P2VzbUJ0bi5zZXRBdHRyaWJ1dGUoImRhdGEtb3Blbi1ob3RlbC1ib29raW5nIiwiIik6ZXNtQnRuLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1vcGVuLWhvdGVsLWJvb2tpbmciKTtnPXt9LGUuZm9yRWFjaChmdW5jdGlvbihlKXtnW2VdPSEwfSl9ZnVuY3Rpb24gUigpe3ZhciBlPVtdLHQ9MCxuPTAsYT0hMTtyZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgbz1yW2ldLGQ9cy5jYXRlZ29yaWVzW28uY2F0XTtuKz1vLmd1ZXN0cyxudWxsPT09ZC5wcmljZT9hPSEwOnQrPWQucHJpY2Uqby5ndWVzdHMsZS5wdXNoKHtjYXRlZ29yeTpkLm5hbWUsYXJlYTpkLmFyZWEsZ3Vlc3RzOm8uZ3Vlc3RzLHByaWNlUGVyUGVyc29uOmQucHJpY2UsbGluZVRvdGFsOm51bGw9PT1kLnByaWNlP251bGw6ZC5wcmljZSpvLmd1ZXN0c30pfSksZS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY2F0ZWdvcnkubG9jYWxlQ29tcGFyZSh0LmNhdGVnb3J5KX0pLHtldmVudDpzLmV2ZW50LHZlbnVlOnMudmVudWUsY3VycmVuY3k6cy5jdXJyZW5jeSxpdGVtczplLHRvdGFsR3Vlc3RzOm4sZXN0aW1hdGVkVG90YWw6dCxpbmNsdWRlc09uUmVxdWVzdDphLHN1bW1hcnk6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2F0ZWdvcnkrIiAoIitlLmFyZWErIikgeCIrZS5ndWVzdHMrIiBndWVzdCIrKDE9PT1lLmd1ZXN0cz8iIjoicyIpKyIg4oCUICIrKG51bGw9PT1lLnByaWNlUGVyUGVyc29uPyJvbiByZXF1ZXN0IjpzLmN1cnJlbmN5KyIgIit4KGUubGluZVRvdGFsKSl9KS5qb2luKCJcbiIpfX1mdW5jdGlvbiBPKGUpe3AudGV4dENvbnRlbnQ9ZSxwLmNsYXNzTGlzdC5hZGQoImlzLW9uIiksY2xlYXJUaW1lb3V0KHYpLHY9c2V0VGltZW91dChmdW5jdGlvbigpe3AuY2xhc3NMaXN0LnJlbW92ZSgiaXMtb24iKX0sMjQwMCl9ZnVuY3Rpb24gRigpe2Euc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit5LngrIiwiK3kueSsiKSBzY2FsZSgiK3kuaysiKSIpfWZ1bmN0aW9uIGVzbVBYKCl7dmFyIHN0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc21TdGFnZSIpLHI9c3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksc2M9TWF0aC5taW4oci53aWR0aC8xMTkzLjUsci5oZWlnaHQvOTM2LjkpfHwxO3JldHVybntzOnNjLG94OihyLndpZHRoLTExOTMuNSpzYykvMixveTooci5oZWlnaHQtOTM2Ljkqc2MpLzJ9fWZ1bmN0aW9uIE4oZSx0LG4pe3ZhciBwPWVzbVBYKCk7dD02MjYuOCsodC1wLm94KS9wLnMsbj02OC42KyhuLXAub3kpL3Auczt2YXIgYT1NYXRoLm1pbig2LE1hdGgubWF4KDEseS5rKmUpKTtpZihhIT09eS5rKXt2YXIgaT15Lms/YS95Lms6MTt5Lng9dC0odC15LngpKmkseS55PW4tKG4teS55KSppLHkuaz1hLDE9PT15LmsmJih5Lng9MCx5Lnk9MCksRigpfX1mdW5jdGlvbiBIKCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS53aWR0aC8yLGUuaGVpZ2h0LzJdfWZ1bmN0aW9uIFUoZSl7ZGVsZXRlIEVbZS5wb2ludGVySWRdLE9iamVjdC5rZXlzKEUpLmxlbmd0aDwyJiYoTD1udWxsKSxiPSExLHQuY2xhc3NMaXN0LnJlbW92ZSgiaXMtcGFubmluZyIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtrPSExfSwwKX19KCksZnVuY3Rpb24oKXtpZighKHdpbmRvdy5tYXRjaE1lZGlhJiZtYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSIpLm1hdGNoZXN8fCJ1bmRlZmluZWQiPT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpKXtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibW8iKTt2YXIgZT1bXTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY3RhLWluID4gKiwgLmVzbSIpLmZvckVhY2goZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSk7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlYXRtYXAgLnNlYy1oZWFkIik7dCYmZS5wdXNoKHQpO3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmYXEiKTtpZihuKXt2YXIgYT1uLmNsb3Nlc3QoIi53cmFwIikmJm4uY2xvc2VzdCgiLndyYXAiKS5xdWVyeVNlbGVjdG9yKCIuc2VjLWhlYWQiKTthJiZlLnB1c2goYSl9dmFyIGk9W107ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKCJkYXRhLW1vIiwiIiksaS5wdXNoKGUpfSksWyIudGllcnMgPiAudGllciIsIi52aXRhbHMgPiAqIiwiLmFydHMgPiAqIiwiLmZhcS1pdGVtIiwiLnZlbnVlLXNwZWNzID4gKiJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxuPTA7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPWUucGFyZW50Tm9kZTtuPWE9PT10P24rMTowLHQ9YSxlLnNldEF0dHJpYnV0ZSgiZGF0YS1tbyIsIiIpLGUuc3R5bGUuc2V0UHJvcGVydHkoIi0tbW8tZCIsTWF0aC5taW4oNTAqbiwzMDApKyJtcyIpLGkucHVzaChlKX0pfSk7dmFyIHM9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGUpe2UuZm9yRWFjaChmdW5jdGlvbihlKXtlLmlzSW50ZXJzZWN0aW5nJiYoZS50YXJnZXQuY2xhc3NMaXN0LmFkZCgibW8tbGl0Iikscy51bm9ic2VydmUoZS50YXJnZXQpKX0pfSx7dGhyZXNob2xkOi4xOCxyb290TWFyZ2luOiIwcHggMHB4IC02JSAwcHgifSk7aS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Mub2JzZXJ2ZShlKX0pO3ZhciBvPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5pZGVudC1udW0iKTtvJiZsKG8sby50ZXh0Q29udGVudC50cmltKCkuc3BsaXQoIiIpLDMwMCwxODApLFsiY2QtZCIsImNkLWgiLCJjZC1tIiwiY2QtcyJdLmZvckVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTtuJiZsKG4sbi50ZXh0Q29udGVudC50cmltKCkuc3BsaXQoIiIpLDI2MCsxNTAqdCw2MCl9KTt2YXIgcj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXNtU3RhZ2UiKTtpZihyKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkLmNsYXNzTmFtZT0iZXNtLXNjYW5saW5lIixyLmFwcGVuZENoaWxkKGQpO3ZhciBjPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5pc0ludGVyc2VjdGluZyYmKGQuY2xhc3NMaXN0LmFkZCgicnVuIiksZC5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLGZ1bmN0aW9uKCl7ZC5yZW1vdmUoKX0pLGMuZGlzY29ubmVjdCgpKX0pfSx7dGhyZXNob2xkOi4zNX0pO2Mub2JzZXJ2ZShyKX19ZnVuY3Rpb24gbChlLHQsbixhKXt2YXIgaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO2kmJihlLnN0eWxlLndpZHRoPWkrInB4Iik7dmFyIHM9dC5tYXAoZnVuY3Rpb24oZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiBuLnRleHRDb250ZW50PWUsbi5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLG4uc3R5bGUud2lkdGg9MTAwL3QubGVuZ3RoKyIlIixuLnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIixufSk7ZS50ZXh0Q29udGVudD0iIixzLmZvckVhY2goZnVuY3Rpb24odCl7ZS5hcHBlbmRDaGlsZCh0KX0pO3ZhciBvPXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITF9KSxyPXNldEludGVydmFsKGZ1bmN0aW9uKCl7cy5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7b1tuXSYmIWlzTmFOKHBhcnNlSW50KHRbbl0sMTApKXx8aXNOYU4ocGFyc2VJbnQodFtuXSwxMCkpfHwoZS50ZXh0Q29udGVudD1TdHJpbmcoTWF0aC5mbG9vcigxMCpNYXRoLnJhbmRvbSgpKSkpfSl9LDQ4KTtzLmZvckVhY2goZnVuY3Rpb24oaSxzKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7b1tzXT0hMCxpLnRleHRDb250ZW50PXRbc10sby5ldmVyeShCb29sZWFuKSYmKGNsZWFySW50ZXJ2YWwociksZS50ZXh0Q29udGVudD10LmpvaW4oIiIpLGUuc3R5bGUud2lkdGg9IiIpfSxuK3MqYSl9KX19KCksZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHQ9d2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSIpLm1hdGNoZXMsbj1udWxsO3RyeXtuPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJlc1RoZW1lIil9Y2F0Y2goZil7fSJsaWdodCI9PT1ufHwiZGFyayI9PT1uP2Uuc2V0QXR0cmlidXRlKCJkYXRhLXRoZW1lIixuKTp3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIikubWF0Y2hlcyYmZS5zZXRBdHRyaWJ1dGUoImRhdGEtdGhlbWUiLCJsaWdodCIpO3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVtZUJ0biIpO2Z1bmN0aW9uIGkodCl7ZS5zZXRBdHRyaWJ1dGUoImRhdGEtdGhlbWUiLHQpO3RyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZXNUaGVtZSIsdCl9Y2F0Y2goZil7fX1hJiZhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3ZhciBuPSJsaWdodCI9PT1lLmdldEF0dHJpYnV0ZSgiZGF0YS10aGVtZSIpPyJkYXJrIjoibGlnaHQiO2lmKGEuY2xhc3NMaXN0LmFkZCgic3BpbiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmNsYXNzTGlzdC5yZW1vdmUoInNwaW4iKX0sNTIwKSwhdCYmZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbil7dmFyIHM9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXMubGVmdCtzLndpZHRoLzIscj1zLnRvcCtzLmhlaWdodC8yLGQ9TWF0aC5oeXBvdChNYXRoLm1heChvLHdpbmRvdy5pbm5lcldpZHRoLW8pLE1hdGgubWF4KHIsd2luZG93LmlubmVySGVpZ2h0LXIpKTtkb2N1bWVudC5zdGFydFZpZXdUcmFuc2l0aW9uKGZ1bmN0aW9uKCl7aShuKX0pLnJlYWR5LnRoZW4oZnVuY3Rpb24oKXtlLmFuaW1hdGUoe2NsaXBQYXRoOlsiY2lyY2xlKDBweCBhdCAiK28rInB4ICIrcisicHgpIiwiY2lyY2xlKCIrZCsicHggYXQgIitvKyJweCAiK3IrInB4KSJdfSx7ZHVyYXRpb246NjIwLGVhc2luZzoiY3ViaWMtYmV6aWVyKC40LDAsLjIsMSkiLHBzZXVkb0VsZW1lbnQ6Ijo6dmlldy10cmFuc2l0aW9uLW5ldyhyb290KSJ9KX0pLmNhdGNoKGZ1bmN0aW9uKCl7fSl9ZWxzZSFmdW5jdGlvbih0KXtlLmNsYXNzTGlzdC5hZGQoInRoZW1pbmciKSxpKHQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmNsYXNzTGlzdC5yZW1vdmUoInRoZW1pbmciKX0sNTYwKX0obil9KTt2YXIgcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmF2Iik7ZnVuY3Rpb24gbygpe3MuY2xhc3NMaXN0LnRvZ2dsZSgic2Nyb2xsZWQiLHdpbmRvdy5zY3JvbGxZPjYwKX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixvLHtwYXNzaXZlOiEwfSksbygpO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuYXZCdXJnZXIiKSxkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuYXZQYW5lbCIpLGM9bnVsbDtmdW5jdGlvbiBsKCl7Y2xlYXJUaW1lb3V0KGMpLGQuY2xhc3NMaXN0LnJlbW92ZSgiaXMtY2xvc2luZyIpLGQuaGlkZGVuPSExLGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZC5vZmZzZXRXaWR0aCxkLmNsYXNzTGlzdC5hZGQoImlzLW9wZW4iKSxyLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsInRydWUiKSxyLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIkNsb3NlIG1lbnUiKX1mdW5jdGlvbiB1KCl7ZC5oaWRkZW58fChkLmNsYXNzTGlzdC5yZW1vdmUoImlzLW9wZW4iKSxkLmNsYXNzTGlzdC5hZGQoImlzLWNsb3NpbmciKSxyLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsImZhbHNlIiksci5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCJPcGVuIG1lbnUiKSxjbGVhclRpbWVvdXQoYyksYz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5oaWRkZW49ITAsZC5jbGFzc0xpc3QucmVtb3ZlKCJpcy1jbG9zaW5nIiksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iIn0sdD8wOjI2MCkpfXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7ZC5oaWRkZW4/bCgpOnUoKX0pLGQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtY2xvc2UtbWVudV0iKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7dSgpfSl9KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixmdW5jdGlvbihlKXsiRXNjYXBlIiE9PWUua2V5fHxkLmhpZGRlbnx8KHUoKSxyLmZvY3VzKCkpfSk7dmFyIGg9d2luZG93Lm1hdGNoTWVkaWEoIihtaW4td2lkdGg6IDEwMDFweCkiKSxtPWZ1bmN0aW9uKGUpe2UubWF0Y2hlcyYmdSgpfTtoLmFkZEV2ZW50TGlzdGVuZXI/aC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLG0pOmguYWRkTGlzdGVuZXImJmguYWRkTGlzdGVuZXIobSl9KCksZnVuY3Rpb24oKXtpZigoIXdpbmRvdy5tYXRjaE1lZGlhfHwhd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikubWF0Y2hlcykmJiJJbnRlcnNlY3Rpb25PYnNlcnZlciJpbiB3aW5kb3cpe2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtbyIpO3ZhciBlPVsiLnN0YWNrID4gLml0ZW0iLCIuYWNjLWl0ZW0iLCIuZmFxLWl0ZW0iLCIuYm91dCIsIi52c3RvcnkiLCIudGtib3giLCIuYWItZnJhbWUiLCIuY21wIHRib2R5IHRkIiwiLmNtcCB0aGVhZCB0aCIsIi50YXBlLWNlbGwiLCIudnMtcm93IiwiLnZlbnVlLXNwZWNzID4gKiIsIi56cC10aWVyIiwiLnRrZ3JpZCB0ZCIsIi5zdGF0cyA+IC5zdGF0IiwiLnN0YXRzID4gLnN0IiwiLnZpdGFscyA+IC52aXRhbCIsIi5oZXJvLW1ldGEgPiAuaG0iLCIudGllcnMgPiAudGllciIsIi52Z3JpZCA+IC52YmxvY2siLCIua2MtY2FyZCIsIi5hYi1zcGVjIiwiLmluYy1saXN0ID4gbGkiLCIuYXJ0cyA+IC5hcnQiLCIuZm9yayA+IC5yb3V0ZSIsIi5jYXRhbG9ndWUgLm5jYXJkIiwiLm9jYXJkIiwiLnBjYXJkIiwiLmJjYXJkIiwiLnBjYXJkcCIsIi5maXZldy1ncmlkID4gKiIsIi5sb2dvcyA+IC5sb2dvIiwiLmVzbS1iYW5kIiwiLm1hcC1jaGlwIiwiLnRhcGUtZ3JpZCA+IC50YXBlLWNlbGwiLCIuZ2NhcmQiXSx0PWUuam9pbigiLCIpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLW1vXSIpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5tYXRjaGVzKHQpfHxlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tbyIpfSk7dmFyIG49W107aWYoZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0LGE9bnVsbCxpPTA7dHJ5e3Q9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKX1jYXRjaChzKXtyZXR1cm59dC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKCFlLmhhc0F0dHJpYnV0ZSgiZGF0YS1tbyIpKXt2YXIgdD1lLnBhcmVudE5vZGU7aT10PT09YT9pKzE6MCxhPXQsZS5zZXRBdHRyaWJ1dGUoImRhdGEtbW8iLCIiKSxlLnN0eWxlLnNldFByb3BlcnR5KCItLW1vLWQiLE1hdGgubWluKDUwKmksMzAwKSsibXMiKSxuLnB1c2goZSl9fSl9KSxuLmxlbmd0aCl7dmFyIGE9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGUpe2UuZm9yRWFjaChmdW5jdGlvbihlKXtlLmlzSW50ZXJzZWN0aW5nJiYoZS50YXJnZXQuY2xhc3NMaXN0LmFkZCgibW8tbGl0IiksYS51bm9ic2VydmUoZS50YXJnZXQpKX0pfSx7cm9vdE1hcmdpbjoiMHB4IDBweCAtNiUgMHB4Iix0aHJlc2hvbGQ6LjA1fSk7bi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Eub2JzZXJ2ZShlKX0pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJtby1saXQiKSl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0LnRvcDxpbm5lckhlaWdodCYmdC5ib3R0b20+MCYmZS5jbGFzc0xpc3QuYWRkKCJtby1saXQiKX19KX0sNGUzKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKCFlLmNsYXNzTGlzdC5jb250YWlucygibW8tbGl0Iikpe3ZhciB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC50b3A8aW5uZXJIZWlnaHQmJnQuYm90dG9tPjAmJnQuaGVpZ2h0JiZlLmNsYXNzTGlzdC5hZGQoIm1vLWxpdCIpfX0pfSw2MCl9KX19fSgpLGZ1bmN0aW9uKCl7WyJ4cUZvcm0iLCJyZmkiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO3QmJnQuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IixmdW5jdGlvbihlKXt0LmNoZWNrVmFsaWRpdHkoKSYmKCh0LmdldEF0dHJpYnV0ZSgiZGF0YS1lbmRwb2ludCIpfHwiIikudHJpbSgpfHwod2luZG93LmxvY2F0aW9uLmhyZWY9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1lLnF1ZXJ5U2VsZWN0b3IoIltuYW1lPWV2ZW50LW5hbWVdIik7cmV0dXJuIG4mJnQucHVzaCgiRW5xdWlyeTogIituLnZhbHVlKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0Om5vdChbdHlwZT1oaWRkZW5dKSxzZWxlY3QsdGV4dGFyZWEiKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBhPWUucXVlcnlTZWxlY3RvcignbGFiZWxbZm9yPSInK24uaWQrJyJdJyksaT1hP2EudGV4dENvbnRlbnQudHJpbSgpOm4ubmFtZXx8bi5pZDtuLnZhbHVlJiZ0LnB1c2goaSsiOiAiK24udmFsdWUpfSksIm1haWx0bzppbmZvQGVzLXNwb3J0LmFlP3N1YmplY3Q9IitlbmNvZGVVUklDb21wb25lbnQoKG4/bi52YWx1ZToiV2Vic2l0ZSBlbnF1aXJ5IikrIiAtIGVucXVpcnkiKSsiJmJvZHk9IitlbmNvZGVVUklDb21wb25lbnQodC5qb2luKCJcbiIpKX0odCkpKX0sITApfSk7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInhxTW9kYWwiKTtpZihlJiYhZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoImRhdGEteHEtbmF0aXZlIikpe3ZhciB0LG49d2luZG93Lm1hdGNoTWVkaWEmJm1hdGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikubWF0Y2hlcyxhPW51bGw7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtb3Blbi14cV0iKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2kuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKHMpe3MucHJldmVudERlZmF1bHQoKSxmdW5jdGlvbihpKXtjbGVhclRpbWVvdXQodCksYT1pLGUuaGlkZGVuPSExLGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZS5vZmZzZXRXaWR0aCxlLmNsYXNzTGlzdC5hZGQoImlzLW9wZW4iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHQ9ZS5xdWVyeVNlbGVjdG9yKCJpbnB1dDpub3QoW3R5cGU9aGlkZGVuXSkiKTt0JiZ0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9LG4/MDoyNjApfShpKX0pfSksZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtY2xvc2UteHFdIikuZm9yRWFjaChmdW5jdGlvbihlKXtlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixzKX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGZ1bmN0aW9uKHQpeyJFc2NhcGUiIT09dC5rZXl8fGUuaGlkZGVufHxzKCl9KTt2YXIgaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieHFGb3JtIik7aSYmaS5hZGRFdmVudExpc3RlbmVyKCJzdWJtaXQiLGZ1bmN0aW9uKGUpe2lmKGUucHJldmVudERlZmF1bHQoKSxpLmNoZWNrVmFsaWRpdHkoKSl7dmFyIHQ9aS5nZXRBdHRyaWJ1dGUoImRhdGEtZW5kcG9pbnQiKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ4cVNlbnQiKSxhPWZ1bmN0aW9uKCl7biYmbi5jbGFzc0xpc3QuYWRkKCJvbiIpO2kucmVzZXQoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7biYmbi5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpfSw3MDAwKX07dD9mZXRjaCh0LHttZXRob2Q6IlBPU1QiLGJvZHk6bmV3IEZvcm1EYXRhKGkpfSkudGhlbihhKS5jYXRjaChhKTphKCl9ZWxzZSBpLnJlcG9ydFZhbGlkaXR5KCl9KX1mdW5jdGlvbiBzKCl7ZS5oaWRkZW58fChlLmNsYXNzTGlzdC5yZW1vdmUoImlzLW9wZW4iKSxjbGVhclRpbWVvdXQodCksdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5oaWRkZW49ITAsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iIixhJiZhLmZvY3VzJiZhLmZvY3VzKCksYT1udWxsfSxuPzA6MzYwKSl9fSgpfSgpOwo7KGZ1bmN0aW9uKCl7dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5hdiIpO2lmKCFuKXJldHVybjt2YXIgZj1mdW5jdGlvbigpe24uY2xhc3NMaXN0LnRvZ2dsZSgic2Nyb2xsZWQiLHdpbmRvdy5zY3JvbGxZPjYwKX07ZigpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsZik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGYpO30pKCk7CjsoZnVuY3Rpb24oKXt2YXIgdGllcnM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmVzLXBnIC50aWVyW2RhdGEteHEtaW50ZXJlc3RdIik7aWYoIXRpZXJzLmxlbmd0aClyZXR1cm47ZnVuY3Rpb24gb3Blbih0KXt2YXIgc2VsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ4LWNhdCIpLG1zZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgieC1tc2ciKTtpZihzZWwpe2Zvcih2YXIgaT0wO2k8c2VsLm9wdGlvbnMubGVuZ3RoO2krKylpZihzZWwub3B0aW9uc1tpXS50ZXh0PT09dC5nZXRBdHRyaWJ1dGUoImRhdGEteHEtaW50ZXJlc3QiKSl7c2VsLnNlbGVjdGVkSW5kZXg9aTticmVha319dmFyIGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW2RhdGEtb3Blbi14cV0iKTtpZihiKWIuY2xpY2soKX10aWVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0LmNsb3Nlc3QoImEiKSlyZXR1cm47b3Blbih0KX0pO3QuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZnVuY3Rpb24oZSl7aWYoZS5rZXk9PT0iRW50ZXIifHxlLmtleT09PSIgIil7ZS5wcmV2ZW50RGVmYXVsdCgpO29wZW4odCl9fSl9KX0pKCk7Cg==
LyogZXNGb3JtSnM6IGVucXVpcnkgZm9ybXMgZGVsaXZlciBzb21ld2hlcmUgYW5kIHRlbGwgdGhlIHRydXRoIChDTC0yMDI2MTAwMi0xMiwgMiBPY3QgMjAy
Njsgc3RhdHVzIG5hbWVzIGZpeGVkIGluCiAgIENMLTIwMjYxMDAyLTE0IHRoZSBzYW1lIG5pZ2h0KS4KICAgVGFrZXMgdGhlIHN1Ym1pdCBvZiAjcmZpIGFu
ZCAjeHFGb3JtIGF0IHRoZSBjYXB0dXJlIHBoYXNlLCBhaGVhZCBvZiB0aGUgb2xkZXIgaGFuZGxlcnMgaW4gdGhlIG1haW4gYW5kIGV2ZW50CiAgIHBheWxv
YWRzICh3aGljaCBzaG93ZWQgUmVjZWl2ZWQgd2l0aCBubyBkZWxpdmVyeSwgb3IgaGFuZGVkIGEgbWFpbHRvOiBsaW5rIHRvIHRoZSBtYWlsIGNsaWVudCku
CiAgIFJvdXRlIDE6IGRhdGEtZW5kcG9pbnQgc2V0IChhbiBodHRwcyBVUkwsIGUuZy4gdGhlIG44biB3ZWJob29rKTogUE9TVCB0aGUgRm9ybURhdGEgdGhl
cmUsIHN1Y2Nlc3Mgb24gYSAyeHguCiAgIFJvdXRlIDI6IG5vIGVuZHBvaW50OiBoYW5kIHRoZSBlbnF1aXJ5IHRvIHRoZSBzaXRlJ3Mgb3duIENvbnRhY3Qg
Rm9ybSA3IGZvcm0gODY3LCB3aGljaCBpcyBpbiB0aGUgcGFnZSAodGhlIG9sZAogICB0aGVtZSdzIGVucXVpcnkgcG9wdXApLCB3aXRoIENGNydzIHJlQ0FQ
VENIQSB2MyBhbmQgQWtpc21ldCBjaGVja3MsIGFuZCByZWFkIENGNydzIG91dGNvbWUuCiAgIENGNyByZXBvcnRzIHRoZSBvdXRjb21lIHR3aWNlOiB0aGUg
d3BjZjdzdWJtaXQgZXZlbnQgb24gdGhlIGZvcm0ncyB3cmFwcGVyIGNhcnJpZXMgdGhlIEFQSSBzdGF0dXMgKG1haWxfc2VudCwKICAgbWFpbF9mYWlsZWQs
IHZhbGlkYXRpb25fZmFpbGVkLCBhY2NlcHRhbmNlX21pc3NpbmcsIHNwYW0sIGFib3J0ZWQpLCBhbmQgdGhlIHdwY2Y3c3RhdHVzY2hhbmdlZCBldmVudCBv
biB0aGUgZm9ybQogICBjYXJyaWVzIHRoZSBzaG9ydCBmb3JtIChzZW50LCBmYWlsZWQsIGludmFsaWQsIHVuYWNjZXB0ZWQsIHNwYW0sIGFib3J0ZWQpLiBC
b3RoIGFyZSBhY2NlcHRlZCBoZXJlOyB0aGUgZmlyc3QKICAgdmVyc2lvbiBsaXN0ZW5lZCBmb3IgdGhlIGxvbmcgbmFtZXMgb24gdGhlIHNlY29uZCBldmVu
dCwgc28gc2VudCBhbmQgZmFpbGVkIHdlcmUgbmV2ZXIgc2VlbiBhbmQgdGhlIGZvcm0gd2FpdGVkCiAgIGZvciB0aGUgdGltZW91dC4gQW55dGhpbmcgYnV0
IHN1Y2Nlc3Mgc2hvd3MgYW4gZXJyb3Igd2l0aCB0aGUgb2ZmaWNlIGVtYWlsIGFuZCBwaG9uZSBhbmQga2VlcHMgdGhlIHZhbHVlcy4gKi8KKGZ1bmN0aW9u
ICgpIHsKICB2YXIgRk9STVMgPSAnZm9ybSNyZmksIGZvcm0jeHFGb3JtJzsKICB2YXIgRU1BSUwgPSAnaW5mb0Blcy1zcG9ydC5hZScsIFBIT05FID0gJys5
NzEgNCA0MzUgNjYxMicsIENGN19JRCA9ICc4NjcnLCBXQUlUID0gNDUwMDA7CiAgdmFyIE9LID0geyBtYWlsX3NlbnQ6IDEsIHNlbnQ6IDEgfTsKICB2YXIg
QkFEID0geyBtYWlsX2ZhaWxlZDogMSwgZmFpbGVkOiAxLCBzcGFtOiAxLCB2YWxpZGF0aW9uX2ZhaWxlZDogMSwgaW52YWxpZDogMSwgYWNjZXB0YW5jZV9t
aXNzaW5nOiAxLCB1bmFjY2VwdGVkOiAxLCBhYm9ydGVkOiAxLCBwYXltZW50X3JlcXVpcmVkOiAxLCAncGF5bWVudC1yZXF1aXJlZCc6IDEgfTsKICB2YXIg
TE9ORyA9IHsgc2VudDogJ21haWxfc2VudCcsIGZhaWxlZDogJ21haWxfZmFpbGVkJywgaW52YWxpZDogJ3ZhbGlkYXRpb25fZmFpbGVkJywgdW5hY2NlcHRl
ZDogJ2FjY2VwdGFuY2VfbWlzc2luZycsICdwYXltZW50LXJlcXVpcmVkJzogJ3BheW1lbnRfcmVxdWlyZWQnIH07CiAgdmFyIFJFQVNPTiA9IHsgdmFsaWRh
dGlvbl9mYWlsZWQ6ICdhIGZpZWxkIHdhcyByZWplY3RlZCcsIHNwYW06ICd0aGUgc3BhbSBmaWx0ZXIgYmxvY2tlZCBpdCcsIG1haWxfZmFpbGVkOiAndGhl
IG1haWwgc2VydmVyIGRpZCBub3QgYWNjZXB0IGl0JywKICAgICAgICAgICAgICAgICBhY2NlcHRhbmNlX21pc3Npbmc6ICdjb25zZW50IHdhcyBtaXNzaW5n
JywgYWJvcnRlZDogJ2l0IHdhcyBpbnRlcnJ1cHRlZCcsIHBheW1lbnRfcmVxdWlyZWQ6ICdwYXltZW50IHdhcyByZXF1ZXN0ZWQnLCB0aW1lb3V0OiAnbm8g
cmVwbHkgaW4gdGltZScsCiAgICAgICAgICAgICAgICAgbmV0d29yazogJ2EgY29ubmVjdGlvbiBwcm9ibGVtJywgZXhjZXB0aW9uOiAnYSBzY3JpcHQgZXJy
b3InLCAnbm8gZGVzdGluYXRpb24nOiAndGhlIGZvcm0gaGFzIG5vd2hlcmUgdG8gc2VuZCcgfTsKICB2YXIgRklFTEQgPSB7ICd5b3VyLW5hbWUnOiAnZmly
c3QgbmFtZScsICdsYXN0LW5hbWUnOiAnbGFzdCBuYW1lJywgJ3RleHQtOTk4JzogJ2NvbXBhbnknLCAneW91ci1lbWFpbCc6ICdlbWFpbCcsICd5b3VyLXRl
bCc6ICdwaG9uZScsICd5b3VyLW1lc3NhZ2UnOiAnbWVzc2FnZScgfTsKICBmdW5jdGlvbiBsb2coeCkgeyB0cnkgeyAod2luZG93LmVzRm9ybUxvZyA9IHdp
bmRvdy5lc0Zvcm1Mb2cgfHwgW10pLnB1c2goeCk7IH0gY2F0Y2ggKGVycikge30gfQogIGZ1bmN0aW9uIHNlbnRFbChmKSB7IHJldHVybiBmLnF1ZXJ5U2Vs
ZWN0b3IoJy5zZW50JykgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbnQnKTsgfQogIGZ1bmN0aW9uIHNob3coZiwgb2ssIG1zZykgewogICAgdmFy
IHMgPSBzZW50RWwoZik7IGlmICghcykgcmV0dXJuOwogICAgaWYgKCFzLmdldEF0dHJpYnV0ZSgnZGF0YS1vcmlnJykpIHMuc2V0QXR0cmlidXRlKCdkYXRh
LW9yaWcnLCBzLnRleHRDb250ZW50KTsKICAgIHMudGV4dENvbnRlbnQgPSBvayA/IHMuZ2V0QXR0cmlidXRlKCdkYXRhLW9yaWcnKSA6IG1zZzsKICAgIHMu
Y2xhc3NMaXN0LnRvZ2dsZSgnaXMtZXJyJywgIW9rKTsgcy5jbGFzc0xpc3QuYWRkKCdvbicpOwogICAgY2xlYXJUaW1lb3V0KHMuX2VzVCk7CiAgICBzLl9l
c1QgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcy5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOyBzLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWVycicpOyBzLnRl
eHRDb250ZW50ID0gcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtb3JpZycpOyB9LCBvayA/IDcwMDAgOiAyNTAwMCk7CiAgfQogIGZ1bmN0aW9uIGJ1c3koZiwgb24p
IHsKICAgIHZhciBiID0gZi5xdWVyeVNlbGVjdG9yKCdbdHlwZT0ic3VibWl0Il0nKTsgaWYgKCFiKSByZXR1cm47CiAgICBiLmRpc2FibGVkID0gb247CiAg
ICBpZiAob24pIHsgaWYgKCFiLmdldEF0dHJpYnV0ZSgnZGF0YS1sYWJlbCcpKSBiLnNldEF0dHJpYnV0ZSgnZGF0YS1sYWJlbCcsIGIudGV4dENvbnRlbnQp
OyBiLnRleHRDb250ZW50ID0gJ1NlbmRpbmcnOyB9CiAgICBlbHNlIGlmIChiLmdldEF0dHJpYnV0ZSgnZGF0YS1sYWJlbCcpKSBiLnRleHRDb250ZW50ID0g
Yi5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGFiZWwnKTsKICB9CiAgZnVuY3Rpb24gdmFsKGYsIG4pIHsgdmFyIGUgPSBmLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSIn
ICsgbiArICciXScpOyByZXR1cm4gZSA/IFN0cmluZyhlLnZhbHVlIHx8ICcnKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpIDogJyc7IH0KICBmdW5jdGlv
biBjb25zZW50KGYpIHsgdmFyIGMgPSBmLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJjb25zZW50Il0nKTsgcmV0dXJuIGMgJiYgYy5jaGVja2VkID8gJ3llcycg
OiAnbm8nOyB9CiAgZnVuY3Rpb24gY2Y3Zm9ybSgpIHsgdmFyIGkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJfd3BjZjciXVt2YWx1
ZT0iJyArIENGN19JRCArICciXScpOyByZXR1cm4gaSA/IGkuY2xvc2VzdCgnZm9ybScpIDogbnVsbDsgfQogIGZ1bmN0aW9uIHZpYUNmNyhmLCBkb25lKSB7
CiAgICB2YXIgYyA9IGNmN2Zvcm0oKTsKICAgIGlmICghYyB8fCAhd2luZG93LndwY2Y3IHx8IHR5cGVvZiB3aW5kb3cud3BjZjcuc3VibWl0ICE9PSAnZnVu
Y3Rpb24nKSByZXR1cm4gZmFsc2U7CiAgICBmdW5jdGlvbiBzZXQobiwgdikgeyB2YXIgZSA9IGMucXVlcnlTZWxlY3RvcignW25hbWU9IicgKyBuICsgJyJd
Jyk7IGlmIChlKSBlLnZhbHVlID0gdjsgfQogICAgdmFyIGludGVyZXN0ID0gdmFsKGYsICdpbnRlcmVzdCcpLCBldiA9IHZhbChmLCAnZXZlbnQtbmFtZScp
IHx8ICdXZWJzaXRlIGVucXVpcnknOwogICAgc2V0KCd5b3VyLW5hbWUnLCB2YWwoZiwgJ2ZpcnN0LW5hbWUnKSB8fCAnV2Vic2l0ZScpOyBzZXQoJ2xhc3Qt
bmFtZScsIHZhbChmLCAnbGFzdC1uYW1lJykgfHwgJ0VucXVpcnknKTsKICAgIHNldCgndGV4dC05OTgnLCB2YWwoZiwgJ2NvbXBhbnknKSB8fCAnTm90IGdp
dmVuJyk7IHNldCgneW91ci1lbWFpbCcsIHZhbChmLCAnZW1haWwnKSk7IHNldCgneW91ci10ZWwnLCB2YWwoZiwgJ3Bob25lJykpOwogICAgc2V0KCdpbnRl
cmVzdGVkLWluJywgaW50ZXJlc3QpOyBzZXQoJ2V2ZW50LW5hbWUnLCBldik7CiAgICBzZXQoJ3lvdXItbWVzc2FnZScsIFt2YWwoZiwgJ21lc3NhZ2UnKSB8
fCAnTm8gbWVzc2FnZSBsZWZ0LicsICcnLCAnSW50ZXJlc3RlZCBpbjogJyArIGludGVyZXN0LCAnRXZlbnQ6ICcgKyBldiwKICAgICAgJ1JvdXRpbmc6ICcg
KyB2YWwoZiwgJ2VlYl9ldmVudCcpICsgJyAvICcgKyB2YWwoZiwgJ2VlYl9jYXRlZ29yeScpICsgJyAvICcgKyB2YWwoZiwgJ2VlYl9yZWFzb24nKSwKICAg
ICAgJ0NvbnNlbnQgdG8gY29udGFjdDogJyArIGNvbnNlbnQoZiksICdTZW50IGZyb206ICcgKyBsb2NhdGlvbi5ocmVmXS5qb2luKCdcbicpKTsKICAgIHZh
ciBzZXR0bGVkID0gZmFsc2UsIHQ7CiAgICBmdW5jdGlvbiBmaW5pc2gob2ssIHN0YXR1cywgZXh0cmEpIHsKICAgICAgaWYgKHNldHRsZWQpIHJldHVybjsg
c2V0dGxlZCA9IHRydWU7IGNsZWFyVGltZW91dCh0KTsKICAgICAgYy5yZW1vdmVFdmVudExpc3RlbmVyKCd3cGNmN3N0YXR1c2NoYW5nZWQnLCBvblN0YXR1
cyk7IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dwY2Y3c3VibWl0Jywgb25TdWJtaXQpOwogICAgICBkb25lKG9rLCBzdGF0dXMsIGV4dHJhKTsK
ICAgIH0KICAgIGZ1bmN0aW9uIHNldHRsZShzdCwgZCkgewogICAgICBzdCA9IFN0cmluZyhzdCB8fCAnJyk7CiAgICAgIGlmIChPS1tzdF0pIHsgZmluaXNo
KHRydWUsICdtYWlsX3NlbnQnKTsgcmV0dXJuOyB9CiAgICAgIGlmICghQkFEW3N0XSkgcmV0dXJuOwogICAgICB2YXIgZXh0cmEgPSAnJywgaW52ID0gZCAm
JiBkLmFwaVJlc3BvbnNlICYmIGQuYXBpUmVzcG9uc2UuaW52YWxpZF9maWVsZHM7CiAgICAgIGlmIChpbnYgJiYgaW52Lmxlbmd0aCkgeyB2YXIgbmFtZXMg
PSBbXTsgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnYubGVuZ3RoOyBpKyspIG5hbWVzLnB1c2goRklFTERbaW52W2ldLmZpZWxkXSB8fCBpbnZbaV0uZmllbGQp
OyBleHRyYSA9IG5hbWVzLmpvaW4oJywgJyk7IH0KICAgICAgaWYgKGQgJiYgZC5hcGlSZXNwb25zZSAmJiBkLmFwaVJlc3BvbnNlLm1lc3NhZ2UpIGxvZygn
Y2Y3OiAnICsgZC5hcGlSZXNwb25zZS5tZXNzYWdlKTsKICAgICAgZmluaXNoKGZhbHNlLCBMT05HW3N0XSB8fCBzdCwgZXh0cmEpOwogICAgfQogICAgLyog
c3RhdHVzY2hhbmdlZCBmaXJlcyBmaXJzdCwgaW5zaWRlIENGNydzIHNldFN0YXR1czsgYSB0aWNrIGxhdGVyIHRoZSBzdWJtaXQgZXZlbnQgYnJpbmdzIHRo
ZSBkZXRhaWwgKHJlamVjdGVkCiAgICAgICBmaWVsZHMsIG1lc3NhZ2UpLCBzbyBsZXQgdGhhdCBvbmUgc2V0dGxlIGZpcnN0IHdoZW4gaXQgY29tZXMgKi8K
ICAgIGZ1bmN0aW9uIG9uU3RhdHVzKGUpIHsgdmFyIHN0ID0gKGUuZGV0YWlsICYmIGUuZGV0YWlsLnN0YXR1cykgfHwgYy5nZXRBdHRyaWJ1dGUoJ2RhdGEt
c3RhdHVzJyk7IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBzZXR0bGUoc3QpOyB9LCAwKTsgfQogICAgZnVuY3Rpb24gb25TdWJtaXQoZSkgeyB2YXIgZCA9
IGUuZGV0YWlsIHx8IHt9OyBpZiAoU3RyaW5nKGQuY29udGFjdEZvcm1JZCkgIT09IENGN19JRCkgcmV0dXJuOyBzZXR0bGUoZC5zdGF0dXMsIGQpOyB9CiAg
ICBjLmFkZEV2ZW50TGlzdGVuZXIoJ3dwY2Y3c3RhdHVzY2hhbmdlZCcsIG9uU3RhdHVzKTsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dwY2Y3
c3VibWl0Jywgb25TdWJtaXQpOwogICAgdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBmaW5pc2goZmFsc2UsICd0aW1lb3V0Jyk7IH0sIFdBSVQpOwog
ICAgdHJ5IHsgd2luZG93LndwY2Y3LnN1Ym1pdChjKTsgfSBjYXRjaCAoZXJyKSB7IGZpbmlzaChmYWxzZSwgJ2V4Y2VwdGlvbicpOyB9CiAgICByZXR1cm4g
dHJ1ZTsKICB9CiAgZnVuY3Rpb24gdmlhRW5kcG9pbnQoZiwgdXJsLCBkb25lKSB7CiAgICB2YXIgY3RsID0gKCdBYm9ydENvbnRyb2xsZXInIGluIHdpbmRv
dykgPyBuZXcgQWJvcnRDb250cm9sbGVyKCkgOiBudWxsOwogICAgdmFyIHQgPSBjdGwgPyBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgY3RsLmFib3J0KCk7
IH0sIFdBSVQpIDogbnVsbDsKICAgIHZhciBvcHRzID0geyBtZXRob2Q6ICdQT1NUJywgYm9keTogbmV3IEZvcm1EYXRhKGYpIH07IGlmIChjdGwpIG9wdHMu
c2lnbmFsID0gY3RsLnNpZ25hbDsKICAgIGZldGNoKHVybCwgb3B0cykudGhlbihmdW5jdGlvbiAocikgeyBpZiAodCkgY2xlYXJUaW1lb3V0KHQpOyBkb25l
KHIub2ssICdodHRwICcgKyByLnN0YXR1cyk7IH0pCiAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7IGlmICh0KSBjbGVhclRpbWVvdXQodCk7IGRvbmUoZmFs
c2UsICduZXR3b3JrJyk7IH0pOwogIH0KICBmdW5jdGlvbiBmYWlsKGYsIHN0YXR1cywgZXh0cmEpIHsKICAgIGJ1c3koZiwgZmFsc2UpOwogICAgdmFyIHdo
eSA9IChSRUFTT05bc3RhdHVzXSB8fCBzdGF0dXMpICsgKGV4dHJhID8gJzogJyArIGV4dHJhIDogJycpOwogICAgc2hvdyhmLCBmYWxzZSwgJ1NvcnJ5LCB0
aGF0IGRpZCBub3Qgc2VuZCAoJyArIHdoeSArICcpLiBFbWFpbCAnICsgRU1BSUwgKyAnIG9yIGNhbGwgJyArIFBIT05FICsgJy4nKTsKICAgIGxvZyhzdGF0
dXMpOwogIH0KICBmdW5jdGlvbiBzdWNjZXNzKGYpIHsgYnVzeShmLCBmYWxzZSk7IHNob3coZiwgdHJ1ZSk7IGYucmVzZXQoKTsgbG9nKCdtYWlsX3NlbnQn
KTsgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGZ1bmN0aW9uIChlKSB7CiAgICB2YXIgZiA9IGUudGFyZ2V0OwogICAgaWYgKCFm
IHx8ICFmLm1hdGNoZXMgfHwgIWYubWF0Y2hlcyhGT1JNUykpIHJldHVybjsKICAgIGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsg
ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgIGlmICghZi5jaGVja1ZhbGlkaXR5KCkpIHsgZi5yZXBvcnRWYWxpZGl0eSgpOyByZXR1cm47IH0K
ICAgIGlmIChmLmdldEF0dHJpYnV0ZSgnZGF0YS1zZW5kaW5nJykgPT09ICcxJykgcmV0dXJuOwogICAgZi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2VuZGluZycs
ICcxJyk7IGJ1c3koZiwgdHJ1ZSk7CiAgICB2YXIgZG9uZSA9IGZ1bmN0aW9uIChvaywgc3RhdHVzLCBleHRyYSkgeyBmLnJlbW92ZUF0dHJpYnV0ZSgnZGF0
YS1zZW5kaW5nJyk7IGlmIChvaykgc3VjY2VzcyhmKTsgZWxzZSBmYWlsKGYsIHN0YXR1cywgZXh0cmEpOyB9OwogICAgdmFyIHVybCA9IChmLmdldEF0dHJp
YnV0ZSgnZGF0YS1lbmRwb2ludCcpIHx8ICcnKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpOwogICAgaWYgKHVybCkgeyB2aWFFbmRwb2ludChmLCB1cmws
IGRvbmUpOyByZXR1cm47IH0KICAgIGlmICh2aWFDZjcoZiwgZG9uZSkpIHJldHVybjsKICAgIGRvbmUoZmFsc2UsICdubyBkZXN0aW5hdGlvbicpOwogIH0s
IHRydWUpOwogIC8qIHRoZSBvZmZpY2UgZm9ybSB0aGF0IHJlY2VpdmVzIHRoZSBlbnF1aXJ5IHJlcXVpcmVzIGEgcGhvbmUgbnVtYmVyICovCiAgdmFyIGZv
cm1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChGT1JNUyk7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3Jtcy5sZW5ndGg7IGkrKykgeyB2YXIgcCA9
IGZvcm1zW2ldLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJwaG9uZSJdJyk7IGlmIChwKSBwLnJlcXVpcmVkID0gdHJ1ZTsgfQp9KSgpOwo=
LyogZXNSZmlKczogb3BlbmluZyB0aGUgZW5xdWlyeSBmb3JtIGtlZXBzIHRoZSBwYWdlIHdoZXJlIGl0IGlzIChDTC0yMDI2MTAwNi0wMSwgNiBPY3QgMjAy
NikuCiAgIEV2ZXJ5IGNvbnRyb2wgdGhhdCBvcGVucyBhIGZvcm0gaXMgYW4gYW5jaG9yIHRvICNlbnF1aXJlLCB0aGUgaW4tcGFnZSBmYWxsYmFjayBmb3Ig
cmVhZGVycyB3aXRob3V0IHNjcmlwdC4KICAgVGhlIG9sZCB0aGVtZSdzIGN1c3RvbS1zY3JpcHQuanMgbGlzdGVucyBvbiBkb2N1bWVudCBmb3IgZXZlcnkg
Y2xpY2sgb24gYVtocmVmKj0iIyJdIGFuZCBzbW9vdGgtc2Nyb2xscyB0bwogICB0aGF0IHNlY3Rpb24sIHNvIHRoZSBwYWdlIHNsaWQgdG8gdGhlIGJvdHRv
bSB1bmRlciB0aGUgb3BlbiBmb3JtLiBPdXIgb3BlbmVyIHJ1bnMgb24gdGhlIGVsZW1lbnQgYW5kIGNhbGxzCiAgIHByZXZlbnREZWZhdWx0LCB3aGljaCBk
b2VzIG5vdCBzdG9wIGEgZGVsZWdhdGVkIGhhbmRsZXIgb24gZG9jdW1lbnQ7IHN0b3BwaW5nIHRoZSBjbGljayBmcm9tIHJlYWNoaW5nIGRvY3VtZW50CiAg
IGRvZXMuIFRoZSBzdG9wIGhhcHBlbnMgb24gYm9keSwgYWZ0ZXIgZXZlcnkgaGFuZGxlciBvbiB0aGUgZWxlbWVudCBpdHNlbGYgaGFzIHJ1biAodGhlIG9w
ZW5lciwgdGhlCiAgICJJbnRlcmVzdGVkIGluIiBwcmVzZWxlY3QpLCBhbmQgb25seSBmb3IgY2xpY2tzIG9uIGEgZm9ybSBvcGVuZXIuIExpbmtzIHRoYXQg
b25seSBwb2ludCBhdCAjZW5xdWlyZSBzdGlsbCBzY3JvbGwuCiAgIFNvdXJjZSBvZiB0cnV0aDogdGVtcGxhdGUvZnJhZ21lbnRzL3JmaS1qcy5qcywgc2hp
cHBlZCBieSBzY3JpcHRzL3JmaV9ub19zY3JvbGxfMjAyNi0xMC0wNi5weS4gKi8KKGZ1bmN0aW9uICgpIHsKICB2YXIgU0VMID0gJ1tkYXRhLW9wZW4tcmZp
XSwgW2RhdGEtb3Blbi14cV0nOwogIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTsKICBpZiAoIWJvZHkgfHwgIWJvZHkuYWRkRXZlbnRMaXN0ZW5lcikgcmV0
dXJuOwogIGJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgdmFyIGVsID0gZS50YXJnZXQ7CiAgICB3aGlsZSAoZWwg
JiYgZWwgIT09IGJvZHkpIHsKICAgICAgaWYgKGVsLm1hdGNoZXMgJiYgZWwubWF0Y2hlcyhTRUwpKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IHJldHVybjsg
fQogICAgICBlbCA9IGVsLnBhcmVudE5vZGU7CiAgICB9CiAgfSwgZmFsc2UpOwp9KSgpOwo=
LyogZXNDYXJ0SnM6IHRoZSBjYXJ0IGljb24gaW4gdGhlIG5hdiBzaG93cyBob3cgbWFueSBpdGVtcyBhcmUgaW4gdGhlIHZpc2l0b3IncyBiYXNrZXQgKENM
LTIwMjYxMDA5LTAyLCA5IE9jdCAyMDI2KS4KICAgTG91aXM6ICJDYW4gd2UgYWRkIGEgY2FydCBpY29uIHRvIHRoZSB0b3AgcmlnaHQgb2YgdGhlIG5ldyBz
aXRlIHNvIHRoYXQgcGVvcGxlIGNhbiBuYXZpZ2F0ZSB0aGUgd2Vic2l0ZSBhZnRlcgogICBhZGRlZCB0byBjYXJ0IGFuZCB0aGVuIGdvIGJhY2sgdG8gcGF5
PyBPdGhlcndpc2UgaXQncyBub3Qgb2J2aW91cyBob3cgeW91J2Qgc2VlIHdoYXQncyBpbiB5b3VyIGJhc2tldCBpZiB5b3UKICAgbmF2aWdhdGVkIGF3YXkg
ZnJvbSB0aGUgY2hlY2tvdXQgcGFnZSIuIFRoZSBpY29uIGl0c2VsZiBpcyBwbGFpbiBtYXJrdXAgKGEgbGluayB0byAvY2FydC8pLCBzbyBpdCB3b3JrcyB3
aXRob3V0CiAgIHNjcmlwdC4gVGhpcyByZWFkcyB0aGUgV29vQ29tbWVyY2UgU3RvcmUgQVBJIGZvciB0aGUgdmlzaXRvcidzIG93biBzZXNzaW9uIChzYW1l
LW9yaWdpbiBjb29raWVzLCBubyBub25jZSBuZWVkZWQKICAgZm9yIGEgcmVhZCkgYW5kIHNob3dzIHRoZSBjb3VudCBiYWRnZSB3aGVuIHRoZSBiYXNrZXQg
aGFzIGFueXRoaW5nIGluIGl0OyBhIGZhaWxlZCBvciBlbXB0eSByZWFkIGxlYXZlcyB0aGUgYmFkZ2UKICAgaGlkZGVuLiBSZS1yZWFkIHdoZW4gdGhlIHBh
Z2UgaXMgc2hvd24gYWdhaW4gZnJvbSB0aGUgYmFjay1mb3J3YXJkIGNhY2hlLCB3aGljaCBpcyBob3cgcGVvcGxlIGNvbWUgYmFjayBmcm9tIHRoZQogICBj
YXJ0LiBTb3VyY2Ugb2YgdHJ1dGg6IHRlbXBsYXRlL2ZyYWdtZW50cy9jYXJ0LWpzLmpzLCBzaGlwcGVkIGJ5IHNjcmlwdHMvY2FydF9pY29uXzIwMjYtMTAt
MDkucHkuICovCihmdW5jdGlvbiAoKSB7CiAgdmFyIGJhZGdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdkNhcnROJyk7CiAgaWYgKCFiYWRnZSkg
cmV0dXJuOwogIHZhciBVUkwgPSAnaHR0cHM6Ly93d3cuZXMtc3BvcnQuYWUvd3AtanNvbi93Yy9zdG9yZS92MS9jYXJ0JzsKICBmdW5jdGlvbiBzaG93KG4p
IHsKICAgIG4gPSBwYXJzZUludChuLCAxMCkgfHwgMDsKICAgIGJhZGdlLnRleHRDb250ZW50ID0gbiA+IDk5ID8gJzk5KycgOiBTdHJpbmcobik7CiAgICBi
YWRnZS5oaWRkZW4gPSBuIDwgMTsKICAgIHZhciBhID0gYmFkZ2UucGFyZW50Tm9kZTsKICAgIGlmIChhKSBhLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcs
IG4gPiAwID8gJ1lvdXIgY2FydCwgJyArIG4gKyAobiA9PT0gMSA/ICcgaXRlbScgOiAnIGl0ZW1zJykgOiAnWW91ciBjYXJ0Jyk7CiAgfQogIGZ1bmN0aW9u
IHJlYWQoKSB7CiAgICBpZiAoIXdpbmRvdy5mZXRjaCkgcmV0dXJuOwogICAgZmV0Y2goVVJMLCB7IGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLCBjYWNo
ZTogJ25vLXN0b3JlJywgaGVhZGVyczogeyAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nIH0gfSkKICAgICAgLnRoZW4oZnVuY3Rpb24gKHIpIHsgcmV0
dXJuIHIub2sgPyByLmpzb24oKSA6IG51bGw7IH0pCiAgICAgIC50aGVuKGZ1bmN0aW9uIChjKSB7IGlmIChjKSBzaG93KGMuaXRlbXNfY291bnQpOyB9KQog
ICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogIH0KICByZWFkKCk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzaG93JywgZnVuY3Rpb24g
KGUpIHsgaWYgKGUucGVyc2lzdGVkKSByZWFkKCk7IH0pOwogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5jdGlv
biAoKSB7IGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykgcmVhZCgpOyB9KTsKfSkoKTsK
Step 1 of 5
When are you staying?
UFC 333 CAT 4 Ticket + Hotel (Ramada by Wyndham Abu Dhabi) needs at least 2 nights. We've set the minimum stay — change the dates if you're staying longer.
Dates and guests
Check in – check out
Select dates
Mo Tu We Th Fr Sa Su
Select check-in, then check-out · min 2 nights
Guests and rooms
1 adult · 1 room
Adults
18 and over · one race ticket each
Children
2–12 · circuit entry is free
Rooms
Max 4 guests per room
Step 2 of 5
Pick your hotel
← Back to all hotels
Step 3 of 5
Choose a room
Step 4 of 5
Who is travelling?
Names must match the passport or Emirates ID used at check-in and at the circuit gate. Tickets are issued in the lead guest's name.
Step 5 of 5
Check it over
Nothing is charged yet. The cart holds your rate for 20 minutes.
I've checked the guest names and dates, and I accept the ticket and hotel terms. ES Sport can contact me about this booking.