Direkt zum Inhalt
ZUBEHÖR FÜR HAUSHALTSGERÄTE

Zubehör, das Ihre Geräte zuverlässig ergänzt.

Sorgfältig ausgewählte Helfer für Pflege, Schutz und den täglichen Einsatz – verständlich erklärt und passend zum jeweiligen Gerät.

Unsere Auswahl

20 Empfehlungen

ZUBEHÖR FÜR

Waschen & Trocknen

WERBUNG

Hinrichs Antirutschmatte für Waschmaschine und Trockner, 60 × 60 cm

Die 60 × 60 cm große und 0,6 cm starke Gummimatte stabilisiert Waschmaschine oder Trockner und dämpft Vibrationen sowie Laufgeräusche. Sie wird in Deutschland gefertigt, ist rutschhemmend, strapazierfähig und kann passend zugeschnitten werden.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Dr. Beckmann Waschmaschinen-Reiniger, 250 g

Der 250-g-Hygienereiniger ist für eine gezielte Anwendung in der leeren Waschmaschine vorgesehen. Das Pulver erreicht Trommel, Leitungen, Dichtungen und schwer zugängliche Bereiche und unterstützt dabei, Waschmittelrückstände sowie geruchsbildende Ablagerungen zu entfernen.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

VIOKS Auffangwanne für Waschmaschinen, 665 × 665 × 60 mm

Die robuste Kunststoffwanne mit 665 × 665 × 60 mm wird unter Waschmaschine oder Geschirrspüler gestellt und fängt bei einem Defekt austretendes Wasser auf. Ein integrierter Ablauf erleichtert das kontrollierte Entleeren und schützt empfindliche Böden zusätzlich.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

aumondo Trocknerbälle aus Schafwolle, 6 Stück

Die sechs handgefertigten XXL-Trocknerbälle aus Schafwolle lockern die Wäsche auf und verbessern die Luftzirkulation im Trockner. Sie eignen sich auch für Daunen, können statische Aufladung reduzieren und sind eine wiederverwendbare Alternative zu flüssigem Weichspüler.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Xavax Wasserstoppschlauch, 1,5 m

Der 1,5 m lange, VDE-geprüfte Wasserstoppschlauch eignet sich für Waschmaschinen und Geschirrspüler. Bei einer Beschädigung stoppt die äußere Schutzhülle den Wasserzulauf; eine rote Anzeige signalisiert das Leck. Das eingesetzte Sieb hält zusätzlich Rostpartikel zurück.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Xavax Zwischenbausatz, 60 × 60 cm

Der universelle Metall-Zwischenrahmen verbindet kompatible Geräte mit 60 × 60 cm Stellfläche zu einer platzsparenden Waschsäule. Für einen sicheren Aufbau wird der Rahmen an der Waschmaschinenabdeckung befestigt; Gerätefront, Schublade und Reinigungsklappe sollten vorher geprüft werden.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Wäschenetz-Set für die Waschmaschine, 9 Stück

Das Set enthält neun Wäschenetze in drei Größen für Socken, Hemden, Pullover und weitere empfindliche Textilien. Das feinmaschige, wasserdurchlässige Polyester schützt die Wäsche vor Verheddern; der abgedeckte Reißverschluss schont Textilien und Trommel.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Calgon 4-in-1 Tabs und Sagrotan Wäsche-Hygienespüler

Das Kombipaket enthält 77 Calgon 4-in-1 Power Tabs und 1,5 Liter Sagrotan Wäsche-Hygienespüler. Die Tabs unterstützen den Schutz der Waschmaschine vor Kalk, Schmutz und Korrosion, während der Hygienespüler für hygienisch frische Wäsche auch bei niedrigen Temperaturen vorgesehen ist.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de

ZUBEHÖR FÜR

Spülen

WERBUNG

Dr. Beckmann Spülmaschinen Hygiene-Reiniger, 75 g + Tuch

Das Set aus 75 g Reinigungspulver und Spezialtuch ist für die hygienische Pflege der gesamten Spülmaschine ausgelegt. Es erreicht Innenraum, Sprüharme, Leitungen, Dichtungen und Kanten und hilft, Fett, Ablagerungen sowie geruchsbildende Rückstände zu lösen.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Lichtblau Universal-Besteckkorb, 240 × 140 mm

Der graue Universal-Besteckkorb aus hitzebeständigem Kunststoff misst etwa 240 × 140 mm. Seine offene Struktur unterstützt die Wasserzirkulation rund um das Besteck; Griff und verschließbares Fach erleichtern das Einsetzen und Sortieren kleiner Teile.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Finish Spezial-Salz, 8 × 1,2 kg

Das Multipack enthält acht Packungen Finish Spezialsalz à 1,2 kg. Das Regeneriersalz enthärtet das Spülwasser und unterstützt dadurch den Schutz von Maschine, Filtern, Sprüharmen, Geschirr und Gläsern vor Kalkablagerungen und Wasserflecken.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Finish Ultimate Plus Infinity Shine Citrus, 105 Caps

Die Packung enthält 105 Finish Ultimate Plus Spülmaschinen-Caps mit drei Kammern. Pulver und Gel lösen angetrocknete sowie fettige Rückstände, während der flüssige Powerball Glanz unterstützt. Die Caps sind ohne Vorspülen für den regulären Spülgang konzipiert.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de

ZUBEHÖR FÜR

Kühlen

WERBUNG

TFA Dostmann analoges Kühlthermometer

Das analoge Kühlthermometer misst Temperaturen von −30 bis +30 °C und hilft, Kühl- und Gefrierbereiche zu kontrollieren. Die gut ablesbare Skala zeigt die passenden Temperaturzonen; das kompakte Gerät kann im Kühlschrank aufgestellt oder aufgehängt werden.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Kühlschrank-Organizer, 6-teilig und stapelbar

Das sechsteilige Organizer-Set umfasst drei unterschiedlich breite Boxen mit jeweils 31,5 cm Länge. Die transparenten Behälter sind stapelbar, besitzen integrierte Griffe und erleichtern den Überblick sowie den Zugriff auf Lebensmittel im Kühlschrank.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Dr. Beckmann Kühlschrank Hygiene-Reiniger, 250 ml

Das 250-ml-Spray ist für die hygienische Reinigung von Kühlschrank und Gefrierfach vorgesehen. Es eignet sich für Ablagen, Schubladen und Innenwände, löst Lebensmittelrückstände und kann nach kurzer Einwirkzeit ohne zusätzliches Nachspülen abgewischt werden.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Dr. Beckmann Kühlschrank Frische, 2 × 40 g

Die beiden Kühlschrank-Frischeelemente neutralisieren unangenehme Gerüche, ohne die natürlichen Aromen der Lebensmittel zu überdecken. Sie lassen sich platzsparend im Eierfach aufbewahren und wirken laut Produktangabe jeweils mindestens zwei Monate.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de

ZUBEHÖR FÜR

Kochen & Backen

WERBUNG

TFA Dostmann analoges Backofenthermometer

Das analoge Backofenthermometer aus Edelstahl kontrolliert die tatsächliche Temperatur im Garraum. Es ist für jeden Backofen geeignet, hitzebeständig und kann dank seiner kompakten Bauform von etwa 77 × 42 × 71 mm gut sichtbar platziert werden.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Zenker ausziehbares Herdbackblech, 37–52 cm

Das ausziehbare Backblech lässt sich von 37 bis 52 cm an verschiedene Backöfen anpassen und wird auf dem Rost verwendet. Die Antihaftbeschichtung erleichtert das Ablösen von Pizza und Gebäck; zur Reinigung genügen Wasser und ein weicher Schwamm.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Fackelmann Kochfeldschaber mit Edelstahlklinge

Der etwa 16 cm lange Reinigungsschaber eignet sich für glatte Flächen wie Glas, Ceran- und Kochfelder. Die Edelstahlklinge lässt sich im Kunststoffgriff arretieren und zum sicheren Aufbewahren einziehen; die Reinigung erfolgt einfach von Hand.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
WERBUNG

Dr. Beckmann Backofen & Grill Power-Gel, 2 × 375 ml

Das Power-Gel im Doppelpack löst hartnäckige Verkrustungen, eingebrannte Speisereste und Fett an Backofen und Grill. Die haftende Formel kann auch auf senkrechten Flächen einwirken und eignet sich laut Produktangabe zusätzlich für Pfannen und Kaminofenglas.

Bei Amazon ansehen (Partnerlink)Amazon-Partnerlink – Weiterleitung zu Amazon.de
Zum Zoomen auf das Bild klicken
WERBUNG

Bei Amazon ansehenAmazon-Partnerlink – Weiterleitung zu Amazon.de
PHN0eWxlPgogIC5kcmF3ZXIgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogIH0KPC9zdHlsZT4KPGNhcnQtZHJhd2VyIGNsYXNzPSJkcmF3ZXJ7JSBpZiBjYXJ0ID09IGVtcHR5ICV9IGlzLWVtcHR5eyUgZW5kaWYgJX0gY29sb3Ite3sgc2V0dGluZ3MuZHJhd2VyX2NvbG9yX3NjaGVtZSB9fSBncmFkaWVudCI+CiAgPGRpdiBpZD0iQ2FydERyYXdlciIgY2xhc3M9ImNhcnQtZHJhd2VyIj4KICAgIDxkaXYgaWQ9IkNhcnREcmF3ZXItT3ZlcmxheSIgY2xhc3M9ImNhcnQtZHJhd2VyX19vdmVybGF5Ij48L2Rpdj4KICAgIDxzdWJjYXJ0LWRyYXdlciBjbGFzcz0iZ2xvYmFsLXNldHRpbmdzLWRyYXdlciB7JSB1bmxlc3Mgc2V0dGluZ3MudXBzZWxscCA9PSB0cnVlICV9aXMtZW1wdHlybXYgeyUgZW5kdW5sZXNzICV9IiByb2xlPSJkaWFsb2ciIGFyaWEtbW9kYWw9InRydWUiIGFyaWEtbGFiZWw9Int7ICdzZWN0aW9ucy5jYXJ0LnRpdGxlJyB8IHQgfX0iIHRhYmluZGV4PSItMSI+CiAgICAgIDxkaXYgY2xhc3M9InVwc2VsbGlubmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ3YnN1Yl9oZWFkIj4KICAgICAgICAgIHslLSBpZiBzZXR0aW5ncy53YnVwaGVhZCAtJX08c3BhbiBjbGFzcz0id2JzdWJfaGVhZGluZyI+e3sgc2V0dGluZ3Mud2J1cGhlYWQgfX08L3NwYW4+eyUtIGVuZGlmIC0lfQogICAgICAgICAgPGJ1dHRvbiBpZD0ic3ViX2RfY2xvc2UiICB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9Int7ICdhY2Nlc3NpYmlsaXR5LmNsb3NlJyB8IHQgfX0iPgogICAgICAgICAgICB7JSByZW5kZXIgJ2ljb24tY2xvc2UnICV9CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICB7JSBjb21tZW50ICV9Q2FydCB1cHNlbGwgcHJvZHVjdHslIGVuZGNvbW1lbnQgJX0KICAgICAgICB7JS0gaWYgc2V0dGluZ3MudXBzZWxscCAtJX0KICAgICAgICAgIDxkaXYgY2xhc3M9IndiY2FydHVwc2VsbCIgPgogICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIHslLSBpZiBzZXR0aW5ncy51cHNlbGxjb2xsZWN0aW9uICE9IGJsYW5rIC0lfQogICAgICAgICAgICAgICAgICB7JS0gYXNzaWduIHVwc2VsbF9jb3VudCA9IDAgLSV9CiAgICAgICAgICAgICAgICAgIHslLSBmb3IgcHJvZHVjdCBpbiBzZXR0aW5ncy51cHNlbGxjb2xsZWN0aW9uLnByb2R1Y3RzIC0lfQogICAgICAgICAgICAgICAgICAgIHslLSBpZiBwcm9kdWN0LmF2YWlsYWJsZSAtJX0KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2FydHVwY2luZXIgdXBzZWxsY29sbGVjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIHslIHJlbmRlciAnY2FyZC1wcm9kdWN0dXBzZWxsJywgY2FyZF9wcm9kdWN0OiBwcm9kdWN0ICV9CiAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgeyUtIGFzc2lnbiB1cHNlbGxfY291bnQgPSB1cHNlbGxfY291bnQgfCBwbHVzOiAxIC0lfQogICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHVwc2VsbF9jb3VudCA+PSBzZXR0aW5ncy51cHNlbGxfdG9fc2hvdyAtJX17JS0gYnJlYWsgLSV9eyUtIGVuZGlmIC0lfQogICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX0KICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfQogICAgICAgICAgICAgICAgeyUtIGZvciBpIGluICgxLi40KSAtJX0KICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjYXJ0dXBjaW5lciB1cHNlbGxjb2xsZWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgd2Jwcm9kdWN0LWNvbnRhaW5lciBjb2xsYWdlYmcgcHJvZHVjdC1jYXJkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ2FwXzEwIGNhcmQgY2FyZC0te3sgc2V0dGluZ3MuY2FyZF9zdHlsZSB9fQogICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIGNhcmRfcHJvZHVjdC5mZWF0dXJlZF9tZWRpYSAlfSBjYXJkLS1tZWRpYXslIGVsc2UgJX0gY2FyZC0tdGV4dHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgc2V0dGluZ3MuY2FyZF9zdHlsZSA9PSAnY2FyZCcgJX0gY29sb3Ite3sgc2V0dGluZ3MuY2FyZF9jb2xvcl9zY2hlbWUgfX0gZ3JhZGllbnR7JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIGltYWdlX3NoYXBlIGFuZCBpbWFnZV9zaGFwZSAhPSAnZGVmYXVsdCcgJX0gY2FyZC0tc2hhcGV7JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIGV4dGVuZF9oZWlnaHQgJX0gY2FyZC0tZXh0ZW5kLWhlaWdodHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgaG9yaXpvbnRhbF9jbGFzcyAlfSBjYXJkLS1ob3Jpem9udGFseyUgZW5kaWYgJX0iPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndiaW1nYmxvY2sgY2FyZF9faW5uZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdW1teXN2ZyI+e3sgJ3NlY3Rpb25zLmNhcnQuaGVhZGluZ3MuaW1hZ2UnIHwgdCB9fTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndicHJvZHVjdGRlcyBjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwcm9kdWN0LXRpdGxlIj57eyAnb25ib2FyZGluZy5wcm9kdWN0X3RpdGxlJyB8IHQgfX08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSByZW5kZXIgJ3ByaWNlJyAlfQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICB7JS0gZW5kZm9yIC0lfQogICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICB7JSBjb21tZW50ICV9IENhcnQgdXBzZWxsIHByb2R1Y3Qgb3ZlciB7JSBlbmRjb21tZW50ICV9CiAgICAgIDwvZGl2PgogICAgPC9zdWJjYXJ0LWRyYXdlcj4KICAgIDxkaXYgY2xhc3M9ImRyYXdlcl9faW5uZXIgZ2xvYmFsLXNldHRpbmdzLWRyYXdlciIgcm9sZT0iZGlhbG9nIiBhcmlhLW1vZGFsPSJ0cnVlIiBhcmlhLWxhYmVsPSJ7eyAnc2VjdGlvbnMuY2FydC50aXRsZScgfCB0IH19IiB0YWJpbmRleD0iLTEiPgogICAgICB7JS0gaWYgc2V0dGluZ3Mud2JfZnJlZV9zaGlwcGluZ19jb25mZXR0aSAtJX0KICAgICAgICA8ZGl2IGNsYXNzPSJkcmF3ZXItY29uZmV0dGkiIGlkPSJkcmF3ZXJDb25mZXR0aSI+PC9kaXY+CiAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgeyUtIGlmIGNhcnQgPT0gZW1wdHkgLSV9CiAgICAgICAgPGRpdiBjbGFzcz0iZHJhd2VyX19pbm5lci1lbXB0eSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0LWRyYXdlcl9fd2FybmluZ3MgY2VudGVyeyUgaWYgc2V0dGluZ3MuY2FydF9kcmF3ZXJfY29sbGVjdGlvbiAhPSBibGFuayAlfSBjYXJ0LWRyYXdlcl9fd2FybmluZ3MtLWhhcy1jb2xsZWN0aW9ueyUgZW5kaWYgJX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0LWRyYXdlcl9fZW1wdHktY29udGVudCI+CiAgICAgICAgICAgICAgPHAgY2xhc3M9ImNhcnRfX2VtcHR5LXRleHQgaDIiPnt7ICdzZWN0aW9ucy5jYXJ0LmVtcHR5JyB8IHQgfX08L3A+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZHJhd2VyX19jbG9zZSIgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ0aGlzLmNsb3Nlc3QoJ2NhcnQtZHJhd2VyJykuY2xvc2UoKSIgYXJpYS1sYWJlbD0ie3sgJ2FjY2Vzc2liaWxpdHkuY2xvc2UnIHwgdCB9fSI+CiAgICAgICAgICAgICAgICB7JSByZW5kZXIgJ2ljb24tY2xvc2UnICV9CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGEgaHJlZj0ie3sgcm91dGVzLmFsbF9wcm9kdWN0c19jb2xsZWN0aW9uX3VybCB9fSIgY2xhc3M9ImJ1dHRvbiBjb250X3Nob3AiPgogICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2dlbmVyYWwuY29udGludWVfc2hvcHBpbmcnIHwgdCB9fTwvc3Bhbj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgeyUtIGlmIHNob3AuY3VzdG9tZXJfYWNjb3VudHNfZW5hYmxlZCBhbmQgY3VzdG9tZXIgPT0gbnVsbCAtJX0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjYXJ0X19sb2dpbi10aXRsZSBoMyI+e3sgJ3NlY3Rpb25zLmNhcnQubG9naW4udGl0bGUnIHwgdCB9fTwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjYXJ0X19sb2dpbi1wYXJhZ3JhcGgiPgogICAgICAgICAgICAgICAgICB7eyAnc2VjdGlvbnMuY2FydC5sb2dpbi5wYXJhZ3JhcGhfaHRtbCcgfCB0OiBsaW5rOiByb3V0ZXMuYWNjb3VudF9sb2dpbl91cmwgfX0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICB7JS0gaWYgc2V0dGluZ3MuY2FydF9kcmF3ZXJfY29sbGVjdGlvbiAhPSBibGFuayAtJX0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FydC1kcmF3ZXJfX2NvbGxlY3Rpb24iPgogICAgICAgICAgICAgIHslIHJlbmRlciAnY2FyZC1jb2xsZWN0aW9uJywgY2FyZF9jb2xsZWN0aW9uOiBzZXR0aW5ncy5jYXJ0X2RyYXdlcl9jb2xsZWN0aW9uLCBjb2x1bW5zOiAxICV9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgIDwvZGl2PgogICAgICB7JS0gZW5kaWYgLSV9CiAgICAgIDxkaXYgY2xhc3M9ImRyYXdlcl9faGVhZGVyIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZHJhd2VyX19oZWFkaW5nIj57eyAnc2VjdGlvbnMuY2FydC50aXRsZScgfCB0IH19ICh7eyBjYXJ0Lml0ZW1fY291bnQgfX0pPC9kaXY+CiAgICAgICAgICB7JSBpZiBzZXR0aW5ncy53YmVuYWJsZV9zaGlwICV9CiAgICAgICAgICAgIHslLSBsaXF1aWQKICAgICAgICAgICAgICAgIGFzc2lnbiBpc051bWJlciA9IHNldHRpbmdzLndibWluX29yZGVyIHwgcGx1czogMAogICAgICAgICAgICAgICAgaWYgaXNOdW1iZXIgIT0gMAogICAgICAgICAgICAgICAgICBhc3NpZ24gc2hpcG1pbnByaWNlID0gc2V0dGluZ3Mud2JtaW5fb3JkZXIgfCB0aW1lczogMTAwCiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIGFzc2lnbiBzaGlwX211bHRpY3VycmVuY2llcyA9IHNldHRpbmdzLndibWluX29yZGVyIHwgc3BsaXQ6ICIsIgogICAgICAgICAgICAgICAgICBmb3Igc2hpcF9tdWx0aWN1cnJlbmN5IGluIHNoaXBfbXVsdGljdXJyZW5jaWVzCiAgICAgICAgICAgICAgICAgICAgYXNzaWduIHNoaXBtaW5wcmljZXMgPSBzaGlwX211bHRpY3VycmVuY3kgfCBzcGxpdDogIjoiCiAgICAgICAgICAgICAgICAgICAgaWYgc2hpcG1pbnByaWNlcy5maXJzdCA9PSBsb2NhbGl6YXRpb24uY291bnRyeS5jdXJyZW5jeS5pc29fY29kZQogICAgICAgICAgICAgICAgICAgICAgYXNzaWduIHNoaXBtaW5wcmljZSA9IHNoaXBtaW5wcmljZXMubGFzdCB8IHRpbWVzOiAxMDAKICAgICAgICAgICAgICAgICAgICBlbmRpZgogICAgICAgICAgICAgICAgICBlbmRmb3IKICAgICAgICAgICAgICAgIGVuZGlmCiAgICAgICAgICAgIC0lfQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3YnNoaXAiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Indic2hpcF93cmFwcGVyeyUgaWYgY2FydC50b3RhbF9wcmljZSA+PSBzaGlwbWlucHJpY2UgJX0gd2JzaGlwX2Z1bGxfd3JhcHBlcnslIGVuZGlmICV9Ij4KICAgICAgICAgICAgICAgICAgeyUgaWYgY2FydC50b3RhbF9wcmljZSA+PSBzaGlwbWlucHJpY2UgJX0KICAgICAgICAgICAgICAgICAgICB7JSByZW5kZXIgJ2ljb24tYmVsbCcgJX0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3YnNoaXBpbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBzZXR0aW5ncy5kcmF3ZXJfZnJlZSAhPSBibGFuayAlfQogICAgICAgICAgICAgICAgICAgICAgICB7eyBzZXR0aW5ncy5kcmF3ZXJfZnJlZSB9fQogICAgICAgICAgICAgICAgICAgICAgeyUgZWxzZSAlfQogICAgICAgICAgICAgICAgICAgICAgICB7eyAnd2JjdXN0b21sYWJlbC53YmFsbHRleHQuZnJlZV9zaGlwJyB8IHQgfX0KICAgICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgICA8Yj4mbmJzcDt7eyAnd2JjdXN0b21sYWJlbC53YmFsbHRleHQuZnJlZV9zaGlwaW5uZXInIHwgdCB9fTwvYj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnslIHJlbmRlciAnaWNvbi10cnVjaycgJX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIHslIGVsc2lmIGNhcnQudG90YWxfcHJpY2UgPCBzaGlwbWlucHJpY2UgJX0KICAgICAgICAgICAgICAgICAgICB7JSBpZiBzZXR0aW5ncy5kcmF3ZXJfZnJlZV9hd2F5ICE9IGJsYW5rICV9CiAgICAgICAgICAgICAgICAgICAgICB7eyBzZXR0aW5ncy5kcmF3ZXJfZnJlZV9hd2F5IH19CiAgICAgICAgICAgICAgICAgICAgeyUgZWxzZSAlfQogICAgICAgICAgICAgICAgICAgICAge3sgJ3diY3VzdG9tbGFiZWwud2JhbGx0ZXh0LmZyZWVfc2hpcG9ubHknIHwgdCB9fSAKICAgICAgICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgIDxiPgogICAgICAgICAgICAgICAgICAgICAgeyUgaWYgc2V0dGluZ3MuY3VycmVuY3lfY29kZV9lbmFibGVkICV9CiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNoaXBtaW5wcmljZSB8IG1pbnVzOiBjYXJ0LnRvdGFsX3ByaWNlIHwgbW9uZXlfd2l0aF9jdXJyZW5jeSB9fQogICAgICAgICAgICAgICAgICAgICAgeyUgZWxzZSAlfQogICAgICAgICAgICAgICAgICAgICAgICB7eyBzaGlwbWlucHJpY2UgfCBtaW51czogY2FydC50b3RhbF9wcmljZSB8IG1vbmV5IH19CiAgICAgICAgICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgIDwvYj4mbmJzcDsKICAgICAgICAgICAgICAgICAgICB7JSBpZiBzZXR0aW5ncy5kcmF3ZXJfZnJlZV9hd2F5X2FmdGVyICE9IGJsYW5rICV9CiAgICAgICAgICAgICAgICAgICAgICB7eyBzZXR0aW5ncy5kcmF3ZXJfZnJlZV9hd2F5X2FmdGVyIH19CiAgICAgICAgICAgICAgICAgICAgeyUgZWxzZSAlfQogICAgICAgICAgICAgICAgICAgICAge3sgJ3diY3VzdG9tbGFiZWwud2JhbGx0ZXh0LmZyZWVfc2hpcGF3YXknIHwgdCB9fQogICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZGV0ZXJtaW5hdGUiCiAgICAgICAgICAgICAgICAgICAgICBpZD0iZnJlZVNoaXBwaW5nQmFyIgogICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOiB7eyBjYXJ0LnRvdGFsX3ByaWNlIHwgdGltZXM6IDEwMCB8IGRpdmlkZWRfYnk6IHNoaXBtaW5wcmljZSB8IHJvdW5kIHwgYXRfbW9zdDogMTAwIH19JTsiCiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRocmVzaG9sZD0ieyUgaWYgY2FydC50b3RhbF9wcmljZSA+PSBzaGlwbWlucHJpY2UgJX10cnVleyUgZWxzZSAlfWZhbHNleyUgZW5kaWYgJX0iCiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRyYXdlcl9fY2xvc2UiIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0idGhpcy5jbG9zZXN0KCdjYXJ0LWRyYXdlcicpLmNsb3NlKCkiIGFyaWEtbGFiZWw9Int7ICdhY2Nlc3NpYmlsaXR5LmNsb3NlJyB8IHQgfX0iPgogICAgICAgICAgICB7JSByZW5kZXIgJ2ljb24tY2xvc2UnICV9CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIHslLSBpZiBzZXR0aW5ncy5zaG93X2NhcnRfY291bnRkb3duIC0lfQogICAgICAgIDxkaXYgY2xhc3M9ImNvdW50bWFyZ2luIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNkb3ducmlnaHQte3sgc2VjdGlvbi5pZCB9fSBjb2xvci17eyBzZXR0aW5ncy5jZHJhd2VyX2NvbG9yX3NjaGVtZSB9fSBncmFkaWVudCBjb3VudGRvd25fd3JhcHBlciBjb250ZW50LWNvbnRhaW5lciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvdW50ZG93bi1oZWFkaW5nLXdyYXBwZXIiPgogICAgICAgICAgICAgIHslIGlmIHNldHRpbmdzLmhlYWRpbmcgIT0gYmxhbmsgJX0KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWFkaW5nIGlubGluZS1yaWNodGV4dCBoMyI+e3sgc2V0dGluZ3MuaGVhZGluZyB9fTwvc3Bhbj4KICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY291bnRkb3duLWRhdGUtd3JhcHBlciI+CiAgICAgICAgICAgICAgPGRpdiBkYXRhLWRhdGU9Int7IHNldHRpbmdzLndiX2VuZGRhdGUgfX0iIGNsYXNzPSJ3Yl9wcm9kdWN0X2NvdW50ZG93biBjb3VudGRfYWxsIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW1lIG1haW5fY2RheXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY291bnQgd2JfY2RheXMiPjAwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwiPnt7ICd3YmN1c3RvbWxhYmVsLndiYWxsdGV4dC50aW1lX2RheXMnIHwgdCB9fTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW1lIG1haW5fY2hvdXJzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvdW50IHdiX2Nob3VycyI+MDA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+e3sgJ3diY3VzdG9tbGFiZWwud2JhbGx0ZXh0LnRpbWVfaG91cicgfCB0IH19PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpbWUgbWFpbl9jbWludXRlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudCB3Yl9jbWludXRlcyI+MDA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+e3sgJ3diY3VzdG9tbGFiZWwud2JhbGx0ZXh0LnRpbWVfbWluJyB8IHQgfX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZSBtYWluX2NzZWNvbmRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvdW50IHdiX2NzZWNvbmRzIj4wMDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj57eyAnd2JjdXN0b21sYWJlbC53YmFsbHRleHQudGltZV9zZWMnIHwgdCB9fTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgeyUtIGVuZGlmIC0lfQogICAgICAgIDxjYXJ0LWRyYXdlci1pdGVtcyB7JSBpZiBjYXJ0ID09IGVtcHR5ICV9Y2xhc3M9ImlzLWVtcHR5InslIGVuZGlmICV9PgogICAgICAgICAgPGZvcm0gYWN0aW9uPSJ7eyByb3V0ZXMuY2FydF91cmwgfX0iIGlkPSJDYXJ0RHJhd2VyLUZvcm0iIGNsYXNzPSJjYXJ0X19jb250ZW50cyBjYXJ0LWRyYXdlcl9fZm9ybSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgPGRpdiBpZD0iQ2FydERyYXdlci1DYXJ0SXRlbXMiIGNsYXNzPSJkcmF3ZXJfX2NvbnRlbnRzIGpzLWNvbnRlbnRzIj4KICAgICAgICAgICAgICB7JS0gaWYgY2FydCAhPSBlbXB0eSAtJX0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyYXdlcl9fY2FydC1pdGVtcy13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjYXJ0LWl0ZW1zIiByb2xlPSJ0YWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5IHJvbGU9InJvd2dyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgIHslLSBmb3IgaXRlbSBpbiBjYXJ0Lml0ZW1zIC0lfQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgaWQ9IkNhcnREcmF3ZXItSXRlbS17eyBpdGVtLmluZGV4IHwgcGx1czogMSB9fSIgY2xhc3M9ImNhcnQtaXRlbSB7JSBpZiBpdGVtLmltYWdlID09IGJsYW5rICV9IGNhcnRfbm9fbWVkaWF7JSBlbmRpZiAlfSIgcm9sZT0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBpdGVtLmltYWdlICE9IGJsYW5rICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNhcnQtaXRlbV9fbWVkaWEiIHJvbGU9ImNlbGwiIGhlYWRlcnM9IkNhcnREcmF3ZXItQ29sdW1uUHJvZHVjdEltYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgaXRlbS5pbWFnZSAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGNvbW1lbnQgJX0gTGVhdmUgZW1wdHkgc3BhY2UgZHVlIHRvIGE6ZW1wdHkgQ1NTIGRpc3BsYXk6IG5vbmUgcnVsZSB7JSBlbmRjb21tZW50ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ie3sgaXRlbS51cmwgfX0iIGNsYXNzPSJjYXJ0LWl0ZW1fX2xpbmsiIHRhYmluZGV4PSItMSIgYXJpYS1oaWRkZW49InRydWUiPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImNhcnQtaXRlbV9faW1hZ2UiIHNyYz0ie3sgaXRlbS5pbWFnZSB8IGltYWdlX3VybDogd2lkdGg6IDMwMCB9fSIgYWx0PSJ7eyBpdGVtLmltYWdlLmFsdCB8IGVzY2FwZSB9fSIgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjE1MCIgaGVpZ2h0PSJ7eyAxNTAgfCBkaXZpZGVkX2J5OiBpdGVtLmltYWdlLmFzcGVjdF9yYXRpbyB8IGNlaWwgfX0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1vdmVybGF5IGhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZy1vdmVybGF5X19zcGlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJzcGlubmVyIiB2aWV3Qm94PSIwIDAgNjYgNjYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9InBhdGgiIGZpbGw9Im5vbmUiIHN0cm9rZS13aWR0aD0iNiIgY3g9IjMzIiBjeT0iMzMiIHI9IjMwIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNhcnQtaXRlbV9fZGV0YWlscyIgcm9sZT0iY2VsbCIgaGVhZGVycz0iQ2FydERyYXdlci1Db2x1bW5Qcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBzZXR0aW5ncy5lbmFibGVfdmVuZG9yIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ic3ZlbmQiPnt7IGl0ZW0ucHJvZHVjdC52ZW5kb3IgfX08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ7eyBpdGVtLnVybCB9fSIgY2xhc3M9ImNhcnQtaXRlbV9fbmFtZSBoNCBicmVhayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7LSBpdGVtLnByb2R1Y3QudGl0bGUgfCBlc2NhcGUgLX19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgaXRlbS5wcm9kdWN0Lmhhc19vbmx5X2RlZmF1bHRfdmFyaWFudCA9PSBmYWxzZSBvciBpdGVtLnByb3BlcnRpZXMuc2l6ZSAhPSAwIG9yIGl0ZW0uc2VsbGluZ19wbGFuX2FsbG9jYXRpb24gIT0gbnVsbCAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBpdGVtLnByb2R1Y3QuaGFzX29ubHlfZGVmYXVsdF92YXJpYW50ID09IGZhbHNlIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGZvciBvcHRpb24gaW4gaXRlbS5vcHRpb25zX3dpdGhfdmFsdWVzIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LW9wdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pnt7IG9wdGlvbi5uYW1lIH19OjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIC19fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGZvciBwcm9wZXJ0eSBpbiBpdGVtLnByb3BlcnRpZXMgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gYXNzaWduIHByb3BlcnR5X2ZpcnN0X2NoYXIgPSBwcm9wZXJ0eS5maXJzdCB8IHNsaWNlOiAwIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHByb3BlcnR5Lmxhc3QgIT0gYmxhbmsgYW5kIHByb3BlcnR5X2ZpcnN0X2NoYXIgIT0gJ18nIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9kdWN0LW9wdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pnt7IHByb3BlcnR5LmZpcnN0IH19OjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHByb3BlcnR5Lmxhc3QgY29udGFpbnMgJy91cGxvYWRzLycgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Int7IHByb3BlcnR5Lmxhc3QgfX0iIGNsYXNzPSJsaW5rIiB0YXJnZXQ9Il9ibGFuayIgYXJpYS1kZXNjcmliZWRieT0iYTExeS1uZXctd2luZG93LW1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb3BlcnR5Lmxhc3QgfCBzcGxpdDogJy8nIHwgbGFzdCB9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvcGVydHkubGFzdCB9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcm9kdWN0LW9wdGlvbiI+e3sgaXRlbS5zZWxsaW5nX3BsYW5fYWxsb2NhdGlvbi5zZWxsaW5nX3BsYW4ubmFtZSB9fTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZGlzY291bnRzIGxpc3QtdW5zdHlsZWQiIGFyaWEtbGFiZWw9Int7ICdjdXN0b21lci5vcmRlci5kaXNjb3VudCcgfCB0IH19Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGZvciBkaXNjb3VudCBpbiBpdGVtLmRpc2NvdW50cyAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRpc2NvdW50c19fZGlzY291bnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIHJlbmRlciAnaWNvbi1kaXNjb3VudCcgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkaXNjb3VudC50aXRsZSB9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsIGNsYXNzPSJpdGVtLXByaWNlLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgaXRlbS5vcmlnaW5hbF9saW5lX3ByaWNlICE9IGl0ZW0uZmluYWxfbGluZV9wcmljZSAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0LWl0ZW1fX2Rpc2NvdW50ZWQtcHJpY2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncHJvZHVjdHMucHJvZHVjdC5wcmljZS5zYWxlX3ByaWNlJyB8IHQgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZSBwcmljZS0tZW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHNldHRpbmdzLmN1cnJlbmN5X2NvZGVfZW5hYmxlZCAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmZpbmFsX2xpbmVfcHJpY2UgfCBtb25leV93aXRoX2N1cnJlbmN5IH19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZmluYWxfbGluZV9wcmljZSB8IG1vbmV5IH19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3Byb2R1Y3RzLnByb2R1Y3QucHJpY2UucmVndWxhcl9wcmljZScgfCB0IH19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cyBjbGFzcz0iY2FydC1pdGVtX19vbGQtcHJpY2UgcHJpY2UgcHJpY2UtLWVuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiBzZXR0aW5ncy5jdXJyZW5jeV9jb2RlX2VuYWJsZWQgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5vcmlnaW5hbF9saW5lX3ByaWNlIHwgbW9uZXlfd2l0aF9jdXJyZW5jeSB9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm9yaWdpbmFsX2xpbmVfcHJpY2UgfCBtb25leSB9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcm9kdWN0LW9wdGlvbiBwcmljZS1vcmlnaW5hbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gaWYgc2V0dGluZ3MuY3VycmVuY3lfY29kZV9lbmFibGVkIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm9yaWdpbmFsX2xpbmVfcHJpY2UgfCBtb25leV93aXRoX2N1cnJlbmN5IH19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5vcmlnaW5hbF9saW5lX3ByaWNlIHwgbW9uZXkgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGl0ZW0udmFyaWFudC5hdmFpbGFibGUgYW5kIGl0ZW0udW5pdF9wcmljZV9tZWFzdXJlbWVudCAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+e3sgJ3Byb2R1Y3RzLnByb2R1Y3QucHJpY2UudW5pdF9wcmljZScgfCB0IH19PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHNldHRpbmdzLmN1cnJlbmN5X2NvZGVfZW5hYmxlZCAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS52YXJpYW50LnVuaXRfcHJpY2UgfCBtb25leV93aXRoX2N1cnJlbmN5IH19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS52YXJpYW50LnVuaXRfcHJpY2UgfCBtb25leSB9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Jm5ic3A7e3sgJ2FjY2Vzc2liaWxpdHkudW5pdF9wcmljZV9zZXBhcmF0b3InIHwgdCB9fSZuYnNwOzwvc3BhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGlmIGl0ZW0udmFyaWFudC51bml0X3ByaWNlX21lYXN1cmVtZW50LnJlZmVyZW5jZV92YWx1ZSAhPSAxIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gaXRlbS52YXJpYW50LnVuaXRfcHJpY2VfbWVhc3VyZW1lbnQucmVmZXJlbmNlX3ZhbHVlIC19fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS52YXJpYW50LnVuaXRfcHJpY2VfbWVhc3VyZW1lbnQucmVmZXJlbmNlX3VuaXQgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhcnREcmF3ZXItTGluZUl0ZW1FcnJvci17eyBpdGVtLmluZGV4IHwgcGx1czogMSB9fSIgY2xhc3M9ImNhcnQtaXRlbV9fZXJyb3IiIHJvbGU9ImFsZXJ0IiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iY2FydC1pdGVtX19lcnJvci10ZXh0Ij48L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWVycm9yIiB2aWV3Qm94PSIwIDAgMTMgMTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9IjYuNSIgY3k9IjYuNTAwNDkiIHI9IjUuNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi41IiBjeT0iNi41IiByPSI1LjUiIGZpbGw9IiNFQjAwMUIiIHN0cm9rZT0iI0VCMDAxQiIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNS44NzQxMyAzLjUyODMyTDUuOTc0MzkgNy41NzIxNkg3LjAyNzEzTDcuMTI3MzkgMy41MjgzMkg1Ljg3NDEzWk02LjUwMDc2IDkuNjYwOTFDNi44ODA5MSA5LjY2MDkxIDcuMTgxNjkgOS4zNzI2NyA3LjE4MTY5IDkuMDA1MDRDNy4xODE2OSA4LjYzNzQyIDYuODgwOTEgOC4zNDkxNyA2LjUwMDc2IDguMzQ5MTdDNi4xMjA2MSA4LjM0OTE3IDUuODE5ODIgOC42Mzc0MiA1LjgxOTgyIDkuMDA1MDRDNS44MTk4MiA5LjM3MjY3IDYuMTIwNjEgOS42NjA5MSA2LjUwMDc2IDkuNjYwOTFaIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg3NDEzIDMuMTc4MzJINS41MTUzNUw1LjUyNDI0IDMuNTM3TDUuNjI0NSA3LjU4MDgzTDUuNjMyOTYgNy45MjIxNkg1Ljk3NDM5SDcuMDI3MTNINy4zNjg1Nkw3LjM3NzAyIDcuNTgwODNMNy40NzcyOCAzLjUzN0w3LjQ4NjE3IDMuMTc4MzJINy4xMjczOUg1Ljg3NDEzWk02LjUwMDc2IDEwLjAxMDlDNy4wNjEyMSAxMC4wMTA5IDcuNTMxNyA5LjU3ODcyIDcuNTMxNyA5LjAwNTA0QzcuNTMxNyA4LjQzMTM3IDcuMDYxMjEgNy45OTkxOCA2LjUwMDc2IDcuOTk5MThDNS45NDAzMSA3Ljk5OTE4IDUuNDY5ODIgOC40MzEzNyA1LjQ2OTgyIDkuMDA1MDRDNS40Njk4MiA5LjU3ODcyIDUuOTQwMzEgMTAuMDEwOSA2LjUwMDc2IDEwLjAxMDlaIiBmaWxsPSJ3aGl0ZSIgc3Ryb2tlPSIjRUIwMDFCIiBzdHJva2Utd2lkdGg9IjAuNyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjYXJ0LWl0ZW1fX3RvdGFscyByaWdodCIgcm9sZT0iY2VsbCIgaGVhZGVycz0iQ2FydERyYXdlci1Db2x1bW5Ub3RhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0LXJpZ2h0LWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhcnQtcmVtb3ZlLWJ1dHRvbiBjbGFzcz0iYnV0dG9uIiBpZD0iQ2FydERyYXdlci1SZW1vdmUte3sgaXRlbS5pbmRleCB8IHBsdXM6IDEgfX0iIGRhdGEtaW5kZXg9Int7IGl0ZW0uaW5kZXggfCBwbHVzOiAxIH19Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57JSByZW5kZXIgJ2ljb24tcmVtb3ZlJyAlfTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jYXJ0LXJlbW92ZS1idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdWFudGl0eS1pbnB1dCBjbGFzcz0icXVhbnRpdHkgY2FydC1xdWFudGl0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icXVhbnRpdHlfX2J1dHRvbiBuby1qcy1oaWRkZW4iIG5hbWU9Im1pbnVzIiB0eXBlPSJidXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7LSAncHJvZHVjdHMucHJvZHVjdC5xdWFudGl0eS5kZWNyZWFzZScgfCB0OiBwcm9kdWN0OiBpdGVtLnByb2R1Y3QudGl0bGUgfCBlc2NhcGUgLX19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSByZW5kZXIgJ2ljb24tbWludXMnICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0icXVhbnRpdHlfX2lucHV0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1xdWFudGl0eS12YXJpYW50LWlkPSJ7eyBpdGVtLnZhcmlhbnQuaWQgfX0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJ1cGRhdGVzW10iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0ie3sgaXRlbS5xdWFudGl0eSB9fSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslICMgdGhlbWUtY2hlY2stZGlzYWJsZSAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1jYXJ0LXF1YW50aXR5PSJ7eyBjYXJ0IHwgaXRlbV9jb3VudF9mb3JfdmFyaWFudDogaXRlbS52YXJpYW50LmlkIH19IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPSJ7eyBpdGVtLnZhcmlhbnQucXVhbnRpdHlfcnVsZS5taW4gfX0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBpdGVtLnZhcmlhbnQucXVhbnRpdHlfcnVsZS5tYXggIT0gbnVsbCAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9Int7IGl0ZW0udmFyaWFudC5xdWFudGl0eV9ydWxlLm1heCB9fSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPSJ7eyBpdGVtLnZhcmlhbnQucXVhbnRpdHlfcnVsZS5pbmNyZW1lbnQgfX0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSAjIHRoZW1lLWNoZWNrLWVuYWJsZSAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ie3sgJ3Byb2R1Y3RzLnByb2R1Y3QucXVhbnRpdHkuaW5wdXRfbGFiZWwnIHwgdDogcHJvZHVjdDogaXRlbS5wcm9kdWN0LnRpdGxlIHwgZXNjYXBlIH19IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9IkRyYXdlci1xdWFudGl0eS17eyBpdGVtLmluZGV4IHwgcGx1czogMSB9fSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaW5kZXg9Int7IGl0ZW0uaW5kZXggfCBwbHVzOiAxIH19IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJxdWFudGl0eV9fYnV0dG9uIG5vLWpzLWhpZGRlbiIgbmFtZT0icGx1cyIgdHlwZT0iYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ey0gJ3Byb2R1Y3RzLnByb2R1Y3QucXVhbnRpdHkuaW5jcmVhc2UnIHwgdDogcHJvZHVjdDogaXRlbS5wcm9kdWN0LnRpdGxlIHwgZXNjYXBlIC19fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgcmVuZGVyICdpY29uLXBsdXMnICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXVhbnRpdHktaW5wdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgICAgICAgIDxwIGlkPSJDYXJ0RHJhd2VyLUxpdmVSZWdpb25UZXh0IiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIiByb2xlPSJzdGF0dXMiPjwvcD4KICAgICAgICAgICAgICA8cCBpZD0iQ2FydERyYXdlci1MaW5lSXRlbVN0YXR1cyIgY2xhc3M9InZpc3VhbGx5LWhpZGRlbiIgYXJpYS1oaWRkZW49InRydWUiIHJvbGU9InN0YXR1cyI+CiAgICAgICAgICAgICAgICB7eyAnYWNjZXNzaWJpbGl0eS5sb2FkaW5nJyB8IHQgfX0KICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJDYXJ0RHJhd2VyLUNhcnRFcnJvcnMiIHJvbGU9ImFsZXJ0Ij48L2Rpdj4KICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L2NhcnQtZHJhd2VyLWl0ZW1zPgogICAgICAgIHslIGNvbW1lbnQgJX1DYXJ0IHVwc2VsbCBwcm9kdWN0eyUgZW5kY29tbWVudCAlfQogICAgICAgIHslLSBpZiBzZXR0aW5ncy51cHNlbGxwIC0lfQogICAgICAgICAgPHNsaWRlci1jb21wb25lbnQgY2xhc3M9ImRlc2t0b3BjYXJ0dXBzZWxsIHdiY2FydHVwc2VsbCB7JSB1bmxlc3Mgc2V0dGluZ3MudXBzZWxscCA9PSB0cnVlICV9aXMtZW1wdHlybXYgeyUgZW5kdW5sZXNzICV9Ij4KICAgICAgICAgICAgeyUtIGlmIHNldHRpbmdzLndidXBoZWFkIC0lfTxwIGNsYXNzPSJ1cHNoZWFkIj57eyBzZXR0aW5ncy53YnVwaGVhZCB9fTwvcD57JS0gZW5kaWYgLSV9CiAgICAgICAgICAgICAgPHVsIGNsYXNzPSJncmlkIHNsaWRlciBjb250YWlucy1jYXJkLS1wcm9kdWN0IiBpZD0iU2xpZGVyLXt7IHNlY3Rpb24uaWQgfX0iPgogICAgICAgICAgICAgICAgeyUtIGlmIHNldHRpbmdzLnVwc2VsbGNvbGxlY3Rpb24gIT0gYmxhbmsgLSV9CiAgICAgICAgICAgICAgICAgIHslLSBhc3NpZ24gdXBzZWxsX2NvdW50ID0gMCAtJX0KICAgICAgICAgICAgICAgICAgeyUtIGZvciBwcm9kdWN0IGluIHNldHRpbmdzLnVwc2VsbGNvbGxlY3Rpb24ucHJvZHVjdHMgLSV9CiAgICAgICAgICAgICAgICAgICAgeyUtIGlmIHByb2R1Y3QuYXZhaWxhYmxlIC0lfQogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjYXJ0dXBjaW5lciBzbGlkZXJfX3NsaWRlIHVwc2VsbGNvbGxlY3Rpb24iIGlkPSJTbGlkZS17eyBzZWN0aW9uLmlkIH19LXt7IGZvcmxvb3AuaW5kZXggfX0iPgogICAgICAgICAgICAgICAgICAgICAgICB7JSByZW5kZXIgJ2NhcmQtcHJvZHVjdHVwc2VsbCcsIGNhcmRfcHJvZHVjdDogcHJvZHVjdCAlfQogICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgIHslLSBhc3NpZ24gdXBzZWxsX2NvdW50ID0gdXBzZWxsX2NvdW50IHwgcGx1czogMSAtJX0KICAgICAgICAgICAgICAgICAgICAgIHslLSBpZiB1cHNlbGxfY291bnQgPj0gc2V0dGluZ3MudXBzZWxsX3RvX3Nob3cgLSV9eyUtIGJyZWFrIC0lfXslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICAgICAgICB7JS0gZW5kaWYgLSV9CiAgICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9CiAgICAgICAgICAgICAgICB7JS0gZWxzZSAtJX0KICAgICAgICAgICAgICAgIHslLSBmb3IgaSBpbiAoMS4uNCkgLSV9CiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2FydHVwY2luZXIgc2xpZGVyX19zbGlkZSB1cHNlbGxjb2xsZWN0aW9uIiBpZD0iU2xpZGUte3sgc2VjdGlvbi5pZCB9fS17eyBmb3Jsb29wLmluZGV4IH19Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgd2Jwcm9kdWN0LWNvbnRhaW5lciBjb2xsYWdlYmcgcHJvZHVjdC1jYXJkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCBjYXJkLS17eyBzZXR0aW5ncy5jYXJkX3N0eWxlIH19CiAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgY2FyZF9wcm9kdWN0LmZlYXR1cmVkX21lZGlhICV9IGNhcmQtLW1lZGlheyUgZWxzZSAlfSBjYXJkLS10ZXh0eyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBzZXR0aW5ncy5jYXJkX3N0eWxlID09ICdjYXJkJyAlfSBjb2xvci17eyBzZXR0aW5ncy5jYXJkX2NvbG9yX3NjaGVtZSB9fSBncmFkaWVudHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgaW1hZ2Vfc2hhcGUgYW5kIGltYWdlX3NoYXBlICE9ICdkZWZhdWx0JyAlfSBjYXJkLS1zaGFwZXslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgZXh0ZW5kX2hlaWdodCAlfSBjYXJkLS1leHRlbmQtaGVpZ2h0eyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBob3Jpem9udGFsX2NsYXNzICV9IGNhcmQtLWhvcml6b250YWx7JSBlbmRpZiAlfSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2JpbWdibG9jayBjYXJkX19pbm5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR1bW15c3ZnIj57eyAnc2VjdGlvbnMuY2FydC5oZWFkaW5ncy5pbWFnZScgfCB0IH19PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2Jwcm9kdWN0ZGVzIGNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InByb2R1Y3QtdGl0bGUiPnt7ICdvbmJvYXJkaW5nLnByb2R1Y3RfdGl0bGUnIHwgdCB9fTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIHJlbmRlciAncHJpY2UnICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIHslLSBlbmRmb3IgLSV9CiAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndiaG9tZXNidG4gbm8tanMtaGlkZGVuIj4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2xpZGVyLWJ1dHRvbiBzbGlkZXItYnV0dG9uLS1wcmV2IGZvY3VzLWluc2V0IiBuYW1lPSJwcmV2aW91cyIgYXJpYS1sYWJlbD0ie3sgJ2dlbmVyYWwuc2xpZGVyLnByZXZpb3VzX3NsaWRlJyB8IHQgfX0iIGFyaWEtY29udHJvbHM9IlNsaWRlci17eyBzZWN0aW9uLmlkIH19IiBkYXRhLXN0ZXA9IjEiPnslIHJlbmRlciAnaWNvbi1jYXJldCcgJX08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2xpZGVyLWJ1dHRvbiBzbGlkZXItYnV0dG9uLS1uZXh0IGZvY3VzLWluc2V0IiBuYW1lPSJuZXh0IiBhcmlhLWxhYmVsPSJ7eyAnZ2VuZXJhbC5zbGlkZXIubmV4dF9zbGlkZScgfCB0IH19IiBhcmlhLWNvbnRyb2xzPSJTbGlkZXIte3sgc2VjdGlvbi5pZCB9fSIgZGF0YS1zdGVwPSIxIj57JSByZW5kZXIgJ2ljb24tY2FyZXQnICV9PC9idXR0b24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3NsaWRlci1jb21wb25lbnQ+CiAgICAgICAgeyUtIGVuZGlmIC0lfQogICAgICAgIDxkaXYgY2xhc3M9ImRyYXdlcl9fZm9vdGVyIj4KICAgICAgICAgIHslLSBpZiBzZXR0aW5ncy5zaG93X2NhcnRfbm90ZSAtJX0KICAgICAgICAgICAgPGRldGFpbHMgaWQ9IkRldGFpbHMtQ2FydERyYXdlciI+CiAgICAgICAgICAgICAgPHN1bW1hcnk+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3VtbWFyeV9fdGl0bGUiPgogICAgICAgICAgICAgICAgICB7eyAnc2VjdGlvbnMuY2FydC5ub3RlJyB8IHQgfX0KICAgICAgICAgICAgICAgICAgeyUgcmVuZGVyICdpY29uLWNhcmV0JyAlfQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICA8Y2FydC1ub3RlIGNsYXNzPSJjYXJ0X19ub3RlIGZpZWxkIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0idmlzdWFsbHktaGlkZGVuIiBmb3I9IkNhcnREcmF3ZXItTm90ZSI+e3sgJ3NlY3Rpb25zLmNhcnQubm90ZScgfCB0IH19PC9sYWJlbD4KICAgICAgICAgICAgICAgIDx0ZXh0YXJlYQogICAgICAgICAgICAgICAgICBpZD0iQ2FydERyYXdlci1Ob3RlIgogICAgICAgICAgICAgICAgICBjbGFzcz0idGV4dC1hcmVhIHRleHQtYXJlYS0tcmVzaXplLXZlcnRpY2FsIGZpZWxkX19pbnB1dCIKICAgICAgICAgICAgICAgICAgbmFtZT0ibm90ZSIKICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Int7ICdzZWN0aW9ucy5jYXJ0Lm5vdGUnIHwgdCB9fSIKICAgICAgICAgICAgICAgID57eyBjYXJ0Lm5vdGUgfX08L3RleHRhcmVhPgogICAgICAgICAgICAgIDwvY2FydC1ub3RlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICB7JS0gZW5kaWYgLSV9CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0LWRyYXdlcl9fZm9vdGVyIiB7eyBibG9jay5zaG9waWZ5X2F0dHJpYnV0ZXMgfX0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvdGFscyIgcm9sZT0ic3RhdHVzIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG90YWxzX19zdWJ0b3RhbCI+e3sgJ3NlY3Rpb25zLmNhcnQuc3VidG90YWwnIHwgdCB9fSAoe3sgY2FydC5pdGVtX2NvdW50IH19KTwvc3Bhbj4KICAgICAgICAgICAgICA8cCBjbGFzcz0icHJvZHVjdC1vcHRpb24gcHJpY2Utb3JpZ2luYWwiPgogICAgICAgICAgICAgICAgeyUtIGlmIHNldHRpbmdzLmN1cnJlbmN5X2NvZGVfZW5hYmxlZCAtJX0KICAgICAgICAgICAgICAgICAge3sgY2FydC50b3RhbF9wcmljZSB8IG1vbmV5X3dpdGhfY3VycmVuY3kgfX0KICAgICAgICAgICAgICAgIHslLSBlbHNlIC0lfQogICAgICAgICAgICAgICAgICB7eyBjYXJ0LnRvdGFsX3ByaWNlIHwgbW9uZXkgfX0KICAgICAgICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0X19jdGFzIGNhcnRkcmF3YnRuIiB7eyBibG9jay5zaG9waWZ5X2F0dHJpYnV0ZXMgfX0+CiAgICAgICAgICAgIDxub3NjcmlwdD4KICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImNhcnRfX3VwZGF0ZS1idXR0b24gYnV0dG9uIGJ1dHRvbi0tc2Vjb25kYXJ5IiBmb3JtPSJDYXJ0RHJhd2VyLUZvcm0iPgogICAgICAgICAgICAgICAgPHNwYW4+e3sgJ3NlY3Rpb25zLmNhcnQudXBkYXRlJyB8IHQgfX08L3NwYW4+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvbm9zY3JpcHQ+CiAgICAgICAgICAgIDxhIGhyZWY9Int7IHJvdXRlcy5jYXJ0X3VybCB9fSIgY2xhc3M9ImJ1dHRvbiBidXR0b24tLXByaW1hcnkgYnRuLWJsb2NrIj48c3Bhbj57eyAnd2JjdXN0b21sYWJlbC53YmFsbHRleHQudmlld2NhcnQnIHwgdCB9fTwvc3Bhbj48L2E+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBpZD0iQ2FydERyYXdlci1DaGVja291dCIgY2xhc3M9ImNhcnRfX2NoZWNrb3V0LWJ1dHRvbiBidXR0b24gYnV0dG9uLS1wcmltYXJ5IiBuYW1lPSJjaGVja291dCIgZm9ybT0iQ2FydERyYXdlci1Gb3JtInslIGlmIGNhcnQgPT0gZW1wdHkgJX0gZGlzYWJsZWR7JSBlbmRpZiAlfT4KICAgICAgICAgICAgICA8c3Bhbj57eyAnc2VjdGlvbnMuY2FydC5jaGVja291dCcgfCB0IH19PC9zcGFuPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgeyUtIGlmIHNldHRpbmdzLnNob3dfY2FydHBheW1lbnQgLSV9IAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJ0ZHJhd2ZwYXkgdGV4dC1jZW50ZXIiPiAKICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj57eyAnc2VjdGlvbnMuZm9vdGVyLnBheW1lbnQnIHwgdCB9fTwvc3Bhbj4KICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICB7JS0gZm9yIHR5cGUgaW4gc2hvcC5lbmFibGVkX3BheW1lbnRfdHlwZXMgLSV9CiAgICAgICAgICAgICAgICAgIDxsaT57eyB0eXBlIHwgcGF5bWVudF90eXBlX3N2Z190YWc6IGNsYXNzOiAnaWNvbicgfX08L2xpPgogICAgICAgICAgICAgICAgeyUtIGVuZGZvciAtJX0KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIHslLSBlbmRpZiAtJX0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2NhcnQtZHJhd2VyPgoKPHNjcmlwdD4KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgZnVuY3Rpb24gaXNJRSgpIHsKICAgICAgY29uc3QgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDsKICAgICAgY29uc3QgbXNpZSA9IHVhLmluZGV4T2YoJ01TSUUgJyk7CiAgICAgIGNvbnN0IHRyaWRlbnQgPSB1YS5pbmRleE9mKCdUcmlkZW50LycpOwogICAgICByZXR1cm4gbXNpZSA+IDAgfHwgdHJpZGVudCA+IDA7CiAgICB9CiAgICBpZiAoIWlzSUUoKSkgcmV0dXJuOwogICAgY29uc3QgY2FydFN1Ym1pdElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKICAgIGNhcnRTdWJtaXRJbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnY2hlY2tvdXQnKTsKICAgIGNhcnRTdWJtaXRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2FydCcpLmFwcGVuZENoaWxkKGNhcnRTdWJtaXRJbnB1dCk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2hlY2tvdXQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2FydCcpLnN1Ym1pdCgpOwogICAgfSk7CiAgfSk7Cjwvc2NyaXB0PgoK