My.Helianthus.annuus

by 向日

Устаревшая версия на 17.03.2017. Перейти к последней версии.

/*
 * Copyright (C) 2013  向日
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

// ==UserScript==
// @name My.Helianthus.annuus
// @namespace https://greasyfork.org/users/1006-peach
// @description by 向日
// @version 3.10.14.6175.x.2
// @build-time 2015-01-25 23:03:19
// @include http://*.hkgolden.com/*
// @exclude http://*.hkgolden.com/mtgamer/*
// @include https://*.hkgolden.com/*
// @exclude https://*.hkgolden.com/mtgamer/*
// @run-at document-start
// @grant none
// ==/UserScript==

(function(encoded)
{
	var
	script = document.createElement('script');

	script.id = 'annuus-script-v3';
	script.appendChild(document.createTextNode(atob(encoded)));

	(function append()
	{
		document.documentElement ? document.documentElement.appendChild(script) : setTimeout(append, 50);
	})();
})('LyoKIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCAKIEBwcm9qZWN0IGpxdWVyeS5zcHJpbnRmCiovCihmdW5jdGlvbigpe3ZhciBDPXdpbmRvdy5sb2NhdGlvbiwkPXdpbmRvdy5oaXN0b3J5LFNhPXdpbmRvdy5uYXZpZ2F0b3I7aWYoIXdpbmRvdy5BTiYmL15odHRwOlwvXC8oPyEoPzp3d3d8bVxkKnxhcnRpY2xlaHRtbClcLilbXi5dK1wuaGtnb2xkZW5cLmNvbVwvKD8hW14uXSs/X2FkKS9pLnRlc3QoQy5ocmVmKSl7ZG9jdW1lbnQuZG9tYWluPSJoa2dvbGRlbi5jb20iO2lmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpeyhmdW5jdGlvbigpe3ZhciBiPS9ibWVkaWFhc2lhfHBpeGVsLT9oa3xpbXJ3b3JsZHdpZGV8Z29vZ2xlc3luZGljYXRpb258X2dldFRyYWNrZXJ8KD86UGFnZXxJbmxpbmV8R29vZ2xlfFxiKVtBYV1kcz9cYnxzY29yZWNhcmRyZXNlYXJjaHxhZGR0aGlzLzsod2luZG93Lm9wZXJhfHxkb2N1bWVudCkuYWRkRXZlbnRMaXN0ZW5lcih3aW5kb3cub3BlcmE/IkJlZm9yZVNjcmlwdCI6ImJlZm9yZWxvYWQiLGZ1bmN0aW9uKGMpe2IudGVzdChjLnVybHx8Yy5lbGVtZW50LnNyY3x8CmMuZWxlbWVudC50ZXh0KSYmYy5wcmV2ZW50RGVmYXVsdCgpfSwhMCl9KSgpO3ZhciBpYT1mdW5jdGlvbigpe2MmJiJsb2FkaW5nIj09PWRvY3VtZW50LnJlYWR5U3RhdGUmJihjLmhvbGRSZWFkeSghMCksYyhkb2N1bWVudCkub25lKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2MuaG9sZFJlYWR5KCExKX0pKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsaWEsITEpfTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsaWEsITEpfWRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2FbaHJlZipceDNkImJtZWRpYWFzaWEiXSwgZGl2W2lkXHgzZCJTdXBlciBCYW5uZXIiXSB+ICosIGRpdltpZF5ceDNkIlRvcCBUZXh0bGluayJdIH4gKiwgc3BhbltpZCpceDNkIkdvb2dsZUFkIl0sIHNwYW5baWQqXHgzZCJMaW5lQWQiXSwgc3BhbltpZF5ceDNkImxpbmVJbWFnZSJdLCAuUGFnZU1pZGRsZUZ1bmN0aW9ucywgLkNvbnRlbnRQYW5lbCBceDNlIGNlbnRlciArIGJyLCAuQ29udGVudFBhbmVsIFx4M2UgY2VudGVyICsgYnIgKyBiciwgI21haW5Ub3BpY1RhYmxlIFx4M2UgdGJvZHkgXHgzZSB0cjpudGgtY2hpbGQoMikgfiB0cjpub3QoW3VzZXJpZF0pLCB0ZFtjb2xzcGFuXVtoZWlnaHRceDNkIjUyIl0sICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3ZpZXdfZm9ybSBceDNlIGRpdltzdHlsZSpceDNkIjk0NXB4Il0gXHgzZSB0YWJsZVt3aWR0aFx4M2QiMTAwJSJdIFx4M2UgdGJvZHkgXHgzZSB0ciBceDNlIHRkOm5vdChbYWxpZ25ceDNkImxlZnQiXSksIG5vc2NyaXB0LCBzY3JpcHQgKyBpbnMsIHNjcmlwdCArIG9iamVjdCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSAjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV92aWV3X2Zvcm0gXHgzZSBkaXZbc3R5bGUqXHgzZCI5NTRweCJdIFx4M2UgZGl2OmZpcnN0LWNoaWxkICAgeyB3aWR0aDogYXV0byAhaW1wb3J0YW50OyB9ICcpKTsKdmFyIGQ9d2luZG93LkFOPXttb2Q6e30sdmVyc2lvbjoiMy4xMC4xNC42MTc1In0sYWEsYyx2LGJhLEs9eyJiYWxsb29uLS1taW51cyI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUNDRWxFUVZSNDJzM1NYMGhUVVJ3SDhPTnZSR0dBWkVoWVJSSUJCUlRnV3hEUW5vS2d4d2hpV1ZGSk9Bd2lCS1NjdHN5WGdKVVV1bUNRTU85RUl3aHlRSzRYUTBEbWxqWmFCcTVzMTIzM3pxNUx1YnY3MC9MWDd5Znp3a3g3NmFVREg4N2huTi8zZHkrY0k4Ui9OVVpib2NaL0U2emtLbWtqN1dWdDVUMHIxMndhZnQwS1I4ZnUxTGZQalhYNWpjV1F2SnFQRjdDWVJDd21jRFgvcldDb1FYbnVqY1BQTlZ4YkVYNWxoMzJCemtOT1habU1ZKzRyb3Y2WnpHNUFlN2tZNm9sMzhZQ2p3Y2taczhITEZyaW9mSkRDbUtXaWxjamY2WjlRQ1huQ25ERWJqTndBUjJrNW1zVk1HTmVWdEhIVWxTSFU1TWVvem5kajZzdmROYnpXNHU0c1o4d0d2bWE0OXpNelkrRFNGSmEraitOeXdvUHArUWRVN055VUV1c3hPR00yOEY2RDYvTGtzMGhSQytDUGhTZTRKTHUybEZsNGhMTnZteU9jTVJzTVhJR0RMMjd2NzFXamZhbXM2a1U5NmRsU2N2cCthdmhXWFM5bkttN2krV2xvOU5wclhVR2ZiV0l4K2xRMVVrUEZRbm9FQytsaHpCT2VnNFBuSjd6MlhTN1BKV2cwZzVJUWJwOFFVMnRBVEV2YlJVeXFGb21CaHFxUGZUWndyL3VsK1pIbmZodnNydmh5UHdWelRVMjRFZS96K1psakFDMm5MQ2NlbnJOSTdJOFgyRTEvMEVYRm5VS0VTSmp1NW4ySEVET1hoUmlrNDhPRVg5MXg2eEc0MEhIV01zcHJjb0JVbTAxT0NsRkZrNFZzSXp2SVRzSnZ2cGJVa1Qya251d3RyMnZLdGY4K2ZnTjBSSTJVYlRSSDF3QUFBQUJKUlU1RXJrSmdnZ1x4M2RceDNkIiwKImJhbGxvb24tLXBsdXMiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDSGtsRVFWUjQybU5nR0ZSZ2F5NFQvN1k4SmtjZ1RnYmlVaUN1aE9KU3FKZ2pTQTFXelZ0eW1UUjNWMHRXM3RuZHNPM2I2N09QLy8xNDlQUC9yMmYvLy85Nit2L2ZqNGMvdjcwOC9mak9ycnB0SURVZ3RTaWFOMll6U2UrcFYycjY4dUxrby8vZjcvLy8vK1VtRU45QXcwQ3g3M2YvZjNsNitOR2VPb1Vta0I2NEFldXltR0pmWEZwMjd2OVhvS0pQbC9Iakw5Zi92emc3OXh4SUQ5eUExUmxNZFg4K1h2djYvLzI1L3pEODUrMmgvMTllclBqLzl2SEUveThmdFB4L2ZxOEdqRUhzdDQ5bWZnWHBnUnV3UEkycDhmZjdpOS8rdnp2ei84K2JRLzgvUHAzNy85V0RWcURpSnF6NHhkMjJieUE5Y0FPV3BEQ2xQajQ1Ni9LdnQzditmM2d5NWYrN3gvMDQ4ZnNuRS83ZjJKdDJHYVFIYnNEQ1JDWjVxOGxDbDdVMzZmNUtPdVR6Lzh1enVUanhzd3ZOejFjVmlrNEM2VUdKQ1k2Rnd0ZFMzcFgrVjFxbStPWDF0YWt2dnoxZjhldm5xOVgvZjc1YTlmOEhFSVBvMDB2RGp5N0pGdXlmRzg5a2hOQTVSMmdtdzF5aE15QWMranJ0UC9jTXdidUMwd1NlbXJieFhKMGV3elFUaHYrKzNmWWZSTStJWVJKR1RVRlRCYzQ0UGcvNmo0NUI0aUJwTDEwbXBpd0hac3Z1VU9abElJeVpCSHY1WmpMMDhKMWg2T1k3cS9QSTlqOURGOTk1aGs2K2l3d1ozRXVCc2lwQURFcDFlbzRhVEZHMXZzeGJRV3dnbGdWaUxvUWhydXlNREUwOFo2WHVhLzhIMHVlQUl0eEFERXJ6UWtBc0NzVGlRQ3dKeEZKUU5raU9GZFVsdVd3ekdUSlp6NEJwRWdBQUdNV1dGUFZlKzNFQUFBQUFTVVZPUks1Q1lJSVx4M2QiLAoiY2hhaW4tLWFycm93IjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQmhVbEVRVlI0Mm1OZ0dBVmdFQndjYkJ3U0VoSVB4T2xJT0I0a2prOE9yTm5IeDhjMFBUMjk5dGl4WTdmdjNyMzc5L0hqeC84ZlBIanc5OFNKRTNjZEhSMnJRUmliSEVnUFNDK0RxNnRyNnFGREIrODBOTlFmRlJJUzZtZGhZZW5xNk9qNFAzUG1UQlFNRWdQSmdkU0ExSUwwZ1BReVdGbFpGVjIrZlBtSHZMeGNBOGhGSUVWQXlmL1hybDM5LytyVnEvK3ZYNy8rZit2V3JmOUFWNEFOQUtrQnFRWHBBZWxsME5mWHo5dTBhY2Y5dXJybWJRSUNBa1hNek16VjVlWGwvN0Zoa0J4SURVZ3RTQTlJTHdNdkw2K1RscGJPdERsemxqNCtjdVRpbnl0WEh2OC9lZkw2bjNuemxqOEdpYVBMVlc5NS9yOTIwWkdQSUhHUVhwQ0xoSUFtaHdPZDF3UnlJaEp1QW9wSGd6Q3luR0h6MFJkR0xjZWV5UWRXVFFQcEJSbkFDY1JpUUN5RkRTc2x6MXFwMjNMMklqS2UvdlQvZnhDdEVEOGxoV0FhVWE0OGZHYlM0Ly8vczY3Ky94OTdFWUdMYi96L0Q1SWphSUJrenZhWkVsbGJ6eUJqaTZQLy80Tm9vRndNeWFtV04yYjVHUkRtaTFzWlExYXlad3VjTXhPSTRab0JzR2tQVXdCS3BRNEFBQUFBU1VWT1JLNUNZSUlceDNkIiwKImNvbnRyb2wtMjcwIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQS8wbEVRVlI0Mm1OZ0dBVmdZRHY3bWJIOTNCZG5TTUVnUFhBRHJLWS9FcldZY245ZDV0NFB6eWJkKy9lLzY5b2ZGTng1RllMN2J2MzluN2JyL1RPUVdwQWVGRmNZOTkwVTFXdS90QzU1NjR0bjlhZS8vMDllLytwLzVOSUgvLzFuWC92dk9mWGkvNFExZC84SEw3My9ES1FHcEJhclZ6UWJUb3NxVng1ZUY3ejB6clBZVFkvL1cwKzlETVpCSysvL2Q1MTE3UmxJRHFRR2IzaklGdTRSbGNqYXVzNTgrclZuWmxzKy9qZlkrT0cvN3FRcnowQmlJRG1pQXBYVEtGeVVOMmI1T3NuZXk4OGtlaTQvQTdGQllzVG9GUUJpTFZDUU1Ba3FPTEQ2VE5rTXdpQTJTQXlJOVlCWUJJZ1pjUm5BQWNRZ202UndZSEVnNXNKbndFZ0VBRnJEb3J2VEJmSmFBQUFBQUVsRlRrU3VRbUNDIiwiY29udHJvbC1lamVjdCI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUJORWxFUVZSNDJtTmdHTFRBZnQ3TEdDQStBNkpKMW13OTQzR005Y3duWjJZKy9mOGZSSVA0UkdzMm0zZ254bXpTM1RQVEgvLy9YMzM4eC8rcEQvLzlCL0ZCNGdRMTYzZGVpVEhvdW5wbTh2MS8vM04zZm9ManZsdC8vb1BFUWZJNE5XczBuSTdSYkR4enB2LzJuLzlwbTk3OVQxejc4bi80NHZ2L2ZXZGUvZTh4NWNMLzhzT3YvNFBrUWVvd05DdVdIWXhSS2o5MHB1Zkc3LzlsaHo3L3o5cis0bi9jNnJ2L1kxYmUvaCsxL05iL2lLVTMvNGN2dWZFL2MvdVQveUIxSVBVb0Jzams3NW9wbmJmekRMRVlwSjY2Y2M0VHRYUW1iL1N5TThSaWtIb1VBemhDNXAvUk9QRC92K1R1Ly8vRmQvMy9MN0x6LzMraEhmLy9Dd0F4My9iLy8zbTIvZi9QRGNTY1d5RnNrSHBrL2N6TTFzWHptZjFtbmlFYUE5V0Q5TUVOQUdKK0lKWUVZaWtpc0NSVVBmUGd5SFFBdGZQcGNXNzNYWlFBQUFBQVNVVk9SSzVDWUlJXHgzZCIsCiJjb250cm9sLXN0b3AtMjcwIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQkhrbEVRVlI0Mm1OZ0dCN0FmdDdMbVVCOGhnUThFOFVBbTVsUFlxeG5QRDR6OCtuLy83MDMvNkxnbmhzSVBPM1IvLzhnZFNEMUdLNHdtM2dueG5UQzdUUFRILy8vbjcvN013YWVjT2ZQZjVBOFNCMU9yK2gzWEk3UmE3OTBadUxkUC85alZ6NzlIemozNW4vdjZaZi9ONXo1OEI4a0RwSW5HQjdxZFNkajFHcFBuS2s3L2VHLzg4U3ovOHVQdlBrUDRvUEVpUTVVK1pKOU1YSkZlODlrSEh6N0gwU0QrQ1RIakZqNnBoaXhqTTFuUURSQnhYeXhLMmJ5eDYwOFF5d0dxVWN4Z0ROMHdabW9zLy8vKzUvNC85L2orUC8vamtmKy83YzgvUCsvd1lILy96WDIvZjh2ditmL2YvR2QvLzhMN1BqL24zLzcvLzhnOWNqNm1abXRpK2N6KzgwOFF6UUdxZ2ZwZ3hzQXhQeEFMQW5FVWtSZ1NhaDY1c0dSandCWStQTGRDallLU1FBQUFBQkpSVTVFcmtKZ2dnXHgzZFx4M2QiLAoiY3Jvc3Mtc2hpZWxkIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQ04wbEVRVlI0WHBXTlRVZ1RZQmpILytaQXA0dmh2Z3lJUVlvSWJFa3dUME1RY1RCQXNja00xWlBvUmM4VlhvSUlLS0NnUzFSUnRGQldtMTlCV2xOTUtJSXlRSmFUTnRKOVlJUG1tREhWeTBURXArZUJsMWd3Z2Y3d2crZDluditQRjZkbENtaGtQaWdhOFQ5NUJSaUN3SHlxbytPM0lEUHZ6S2NLTDduQTNQVURGeGc3ejlQckxTMi85a2RIYVc5a2hMNjN0bTd6N28zY3BDTmRjYUNDQ1dBbDA5dDdFS3lzL0RhcDFhN0ZYSzdjenZBd2JYUjMwdytQaDdLRGd4UnRiOThKOGkzQW5XUlgxNEU0VUlFUCtNekNTWHBnZ0g3Mjk1TmsxZVg2QjBtaXA0ZmlYaTl0OWZXZGlBTVZQQU9XazE3djhTZW5rNG9qNzFLN05iZjdXQnlvNERFd0UrdnNQRnh1YnFhcHVqcVNGQW9GeW1hemxFcWxLQjZQVXpLWnBLYzFOZVF6bTJuQmJqOFVCeXA0QUR4YWJXdmJmKzl3MEdKVEU3MHdHaWtjRGxNa0VxRllMRWFKUklKOExJOHJacTNXUFhZZVFnWDNnZXNobXkyelpMZlR0TWxFazF3cWx0UHB0T3dFbXVHNzMyRElzSE1OS3JnSHVQblh6WS8xOVRSZlFzNWtNcFRMNWVSR0N4WUxQZEZxTjhXQkNtNEQranRsWlN0ZkdocU9pdVZaRmdTUjgvbThRRXNtMDVGMHhVRnhiZ0UzeC9YNnJiZjhnOGh6TEg1VnlDeXk3SjVYVkd4SkY1SmliZ0RHcThCaVFLL2ZEaG1OdEc0d1VJUUZCYjFqL0ZWVjI5S1JMa3JsTW1BZEFpYkdOSnJvbkU2M3U4R1NJUE5ZZVhsVWJ0SXA1WjVoZEl5bEZqaC9DUmk2QW9RQzFkVTVRV2JaeVExQXJYU1Y4emNhZGJBeER1RXM0T1RmWG5zWW1XV251TWljVXc3K0FLdlFjdlMrNkVNNUFBQUFBRWxGVGtTdVFtQ0MiLAoiZmlsbS0tYXJyb3ciOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDWEVsRVFWUjRYbzJTVFVoVVVSaUduM1BQdlROTzZreXBTQ29aK1VzR3VKS1d1bTRWZzRLZ0V5RVNFUlFCYllKd1ZWQ2J5RWdJRXlKa1F0QWtJREJvWXhEUXhxQ1ZPbVJGRWlCUU1ZN3plKzg5WDFNelkybUFQZkRDNGZLY2wrKzdIQ1VpV0paMUVXZ3I1Yi80V001RG14SnRpNHVMWGRGbzFMOC85eTdxR3dFVUlnQ0NFVUdNb0JSY2kvVXRsbDBBS2dWVzhjTUhvQjBsWkFzdUlJaUFBQ0tsY3pxNTg3ZHJBVmlWZ29XRmhVNUFpekVvSlZDTWlNRjNYYkxwRE91clgxaGIyd1RRWmRmYU04SGc0T0Fub0NPYmNrbWw4L2llajdJTWtZaEZ6bVJ4alllZ0t1Ni9FOHpQejU4QXRDOEtKK2dRYnFpbXVhbVc0N1dhN3NZUXpjMWhxc00xQUxyczdwMWdhR2hvRStnOEZLbENlejRpa016a01WcXdIWTIyQTdTMjErMjYrd3YwM054Y3kvRHdzSDcyNFBJcXdOYldscDlJSlBMc1F5bjF5MjB0dWw4Qkt1OWdtaEpkRTlQdiszMmpTS1k5ZkYrb0lDSVk0ek45L2ZScklFR0pDN3NyeE9QeHhwR1JFVjBWQ3BJckdJSlZpako3U3JySEpyc0hCM29qdDg0TnJPeFpvWGo1RzlDQWFBcFpIMjFaMklGU3YvRU5udXZpRlZ5Q1RTZHJYMnpnSE8wL254STc5S2RnZG5hMkxoYUwyZm1VS1JZSXJ1dmhlVmtTQ2pLV3huWXNMR1dUUys5dzlkclorc21kblI3blNNdG81Ujg4cFVUUHhOUkdieWJuNG5rK1RraXovRDNKNkZnZmE5dVE4dGlsTVFqUG43eFpzY3U3VmMvTXpEamo0K08xZ2laVVUwdzRnTmFLdzl0SkhrOHRvNVdBZ3M4YnEvbU9LNWVDUzNjZUpaMjZZL2QrVDZDVXVndWNBbm81Z09venQrdXhuWXk3L25JcEVHNGN0aWx4QXdnREZnZmcycEdia3YzeDFsMS9GUzhBUHdILzVCRVFHQlQxendBQUFBQkpSVTVFcmtKZ2dnXHgzZFx4M2QiLAoiaGlnaGxpZ2h0ZXItLW1pbnVzIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQTNFbEVRVlI0MnUzUHNRc0JZUmdHOE9lK081SkxDSWxTUnpFb3BmZ2ovQXNXTnJ2MUpvUDl5dVJXdzkxZ3dXQmdWWlp2dmY5Q1Z1TjVQaWhkcGh2bHJkL3k5ajd2KzMxQWpEb2NVRVhjT2g0eDJPOGhOeHU0c2NPWEM4SWd3TlgzTVlrZDlqekkxUXE5Zi9pM3dvWmg5QzNMMm40TGU0RHJBekpLOVI5aFhkZWI1RHFPRTNMSk9YcDV5ZUhiYUJSR3FmNTd3U01zaE5ocG1qYTFiWmlmcjV2ejBvekRVYXFQMCtuNTUxZDRES0JNSlNwUW5yS1VvVFNsS0FuQVVIZEp3M29OdVZoQU5ob1lBdWhTaDlyVW9qclZxRUpGeXBINVdwUWdjUWNKbThHb2pLUlc3QUFBQUFCSlJVNUVya0pnZ2dceDNkXHgzZCIsImhpZ2hsaWdodGVyLS1wbHVzIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQkRFbEVRVlI0Mm1OZ0lBUHMyc1VneFVBdTJMMmJ3V1BiTm9Zekd6WXd6Q1JiODVzM0RQK3ZYbVY0dDN3NVF4clptcGN0WXppemFCR0Q4YWhtdW10ZUtUb1RpTStBYWJKc1hpSnlKdVZkNlg4UWphR1poWVhGUkVGQllTTld6WE9FWmpMTUZUb0R3cUd2MC83RDJHQnhFR0JtWmxZRjRwbjkvZjMvZ1lZY3g3QjVxc0FaeCtkQi85RXhTQnhtQUZnekV4UFRKa1pHeHNLcUtnWnVGT2YxOHMxazZPRTdBOEk2ajJ6L3c5aGc4U05ISUg2R2FvNEhLaGNIWWxFZ0ZnWmlRU0RtQjJKZUlPWmlhT0k1SjNWZit6K1FQZ3V5RjRnWkdWYXZaamd6YVJMREdTVWxoa2lnZ0FFUTZ3S3hGaENyQWJFaUVNc0NzU1FRaXpENHN5NWd5R0E5eHhESU9oZklad1ZpSmdDRGx0Vm9FVFdwbmdBQUFBQkpSVTVFcmtKZ2dnXHgzZFx4M2QiLAoiaW1hZ2UtZXhwb3J0IjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQjZFbEVRVlI0MnNXVE1XZ1RZUlNBdjd0YzdreXMyQTdXeEZKVVJBVUwyc0VHRFM0UzZTQ0VTRUhjbklPVDRGSXNiY0VPRVltTFVMQW9oU29CMFVGb3RrSUdRVHVvazROUTBWQlVVcHFpc1RHWDVQNjczUE9hMGNuUXdRKys4WDA4SGp4TlJOZ05PcnRFdXpvN213WU8wUnNWRVNrQ01ERTFsWlVlMlprSlpFZkQ4enpkRitGQ3JrMUlCOU1BWDZEVGdmMFI2TE9FcUFsbkQwUFUvY0FldlU2NzFUSUNjWlhxQmpSUGhNUlJqYjJXZEljOEgwTFFEU29QZEExT3h1RHI1MDJ1WlRMY1gxcUtpTWhZMDdiZkdhN3I2cDd2OCt2blEyTERaemcrZUE0ZGpmNm9VUHZkcEduWEVMWEYrcWNmS05XbVVxM3l0bEM0TjVMSjNCWVJuWXZaN00xdHBlVFVqYlNjbjd3dStlVVZXVjJyeTZ1UERYbi9wU2xyRlVlcTI1NDRyaTkvY3lTVm10R1ZVdDBOS3QvcnJKZXJQQzR1Y3V2UkpQUEZlUXFsNXp3cnZXUngrUVVQbmo3aDdzSUMzelkyQUlnbGszUEJIVXE2NnpqZFFMenZDb1BSREFQaHkrd0xYUUlabzhWcDJwRUV4RkpFUnlad0hJZmhlSnorMGRHYzAycXRpTWdiUXlrVjZvaGdXWkZBQ3pNd1pJUVIwV2c3UXFQaEl1S2kzREFkOHdCVCtUd0hoNGJzSVBEYUNJZlJqbzJQVDY4V2kzZUNFUCtDYVpvazAra1pZQTdBMkN5WHF5Y1NpUnc5MExIdExiL1pCRUFETEdDZ2g3L3dnUnJnQVB6L2Ivd0R5UG96bVZVQnBHTUFBQUFBU1VWT1JLNUNZSUlceDNkIiwKIm1hZ25pZmllci16b29tLWluIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQ05rbEVRVlI0Mm1OZ3dBT1NXbDVwcExTOW1RdkU5NEg0RjVTZUN4Sm5JQVFpcXU0SFJ0Yyt2TiswNE9tSnJTZmY3cnJ6L011Sm8xYytIZWhkL3ZJVVNCd2tqMU96UjlaNURaKzhpL2VuYlh5NDQ4aU4xNGRlZnZ4eDY5TzMzODlmZi9wNSs5R2JiMmZuYjMreXl4Y29EMUtIMVFDcm1BTno4M3N2bnRoOTZjV0JxNDgvbmdCcEJvcjlCOUZQM240N2QrM0pweE1sRXk2ZEFxbkRhb0NPMzZiN2M3ZmQzWDdtM3JzTGQxOStlZkR1eTY4UFFMSC9JQnJFQjRrdjNYTi9EMGdkVmdOVTNGYi8ybm4rK1FHUVlpRDdQenIrK08zM3M4UFhYaDhEcWNOcWdKTEwydnNMdHQvYkRiSUpwUGpuNzcrZmdXTC9RVFE0TEQ3K3ZMVnEzOE5ESUhWWURWRDMzREUzdSszODJmMVhYeDIrLy9McmFaQW1vQmc4RElBQmVhNjQrK0lsa0Rxc0JwZzdaVm9aQlI5K01XL3pnN00zbjMwK0RRcDlXQ3c4ZS8vOTRvYjlyMDRaaDV5OHJ4ZHdERE1XcksydDVXMXNiSW83SnUvNWJ4VjU0Vlhqak9lWFRsNzVjdnI1dXgvWFQxMzljcVpqN3N0ck5uRzM3cHRIWHNkTUIwQ05XbTV1N2pVN2R1ejVMeW9xMXF4bTFXTG5tUHg4TGhEZkIrSmZVSHF1ZmVJVFRKdHRiVzB0QWdPRDI0NGNPZk5mVVZHcGg0V0ZSWldCV0dCblorZWRrSkF5NGVMRnUvLzE5QXltQVRVYk01QUN6TTNOUzI3ZGV2WGYzdDU1SGxDekN3T0pnRU5VVk5SRlJFU2tCYWc1RzhqWEJ5VkdJQWI1VXdXSTVZRllHb2pGZ0ZnUWlIbEFlb0NZRllpWlFBYXdRQ1dsZ0ZnU2lDV2dmQkVnRmdKaUFTRG1BMkp1SU9ZRVlqYW9IbVlnWmdRQUpNQlRSYm5Rc2NnQUFBQUFTVVZPUks1Q1lJSVx4M2QiLAoibWFnbmlmaWVyLXpvb20tb3V0IjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQ0UwbEVRVlI0Mm1OZ3dBT1NXbDVwcExTOW1RdkU5NEg0RjVTZUN4Sm5JQVFpcXU0SFJ0Yyt2TiswNE9tSnJTZmY3cnJ6L011Sm8xYytIZWhkL3ZJVVNCd2tqMU96UjlaNURaKzhpL2VuYlh5NDQ4aU4xNGNldmZsMjlzbmJiK2RBR01TZXYvM0pMbCtnUEVnZFZnT3NZZzdNemUrOWVHTDNwUmNIcmo3K2VBS21HWWF2UGZsMG9tVENwVk1nZFZnTjBQSGJkSC91dHJ2Yno5eDdkK0h1eXk4UDBERklmT21lKzN0QTZyQWFvT0syK3RmTzg4OFBnQlFEMmYvUjhjZHZ2NThkdnZiNkdFZ2RWZ09VWE5iZVg3RDkzbTZRVFNERm43NzlmbzZNWDMvOGVXdlZ2b2VIUU9xd0dxRHV1V051ZHR2NXMvdXZ2anA4LytYWDAraGhBQXpJYzhYZEZ5K0IxR0Uxd053cDA4b28rUENMZVpzZm5MMzU3RE9LQWMvZWY3KzRZZityVThZaEorL3JCUnpEakFWcmEydDVHeHViNG83SmUvNWJSVjU0MVRqaithV1RWNzZjZnY3dXgvVlRWNytjNlpqNzhwcE4zSzM3NXBIWE1kTUJVS09XbTV0N3pZNGRlLzZMaW9vMXExbTEyRGttUDU4THhQZUIrQmVVbm11ZitBVFRabHRiVzR2QXdPQzJJMGZPL0ZkVVZPcGhZV0ZSWlNBVzJOblplU2NrcEV5NGVQSHVmejA5ZzJsQXpjWU1wQUJ6Yy9PU1c3ZGUvYmUzZDU0SDFPekNRQ0xnRUJVVmRSRVJFV2tCYXM0Rzh2VkJpUkdJUWY1VUFXSjVJSllHWWpFZ0ZnUmlIcEFlSUdZRllpYVFBU3hRU1NrZ2xnUmlDU2hmQklpRmdGZ0FpUG1BbUJ1SU9ZR1lEYXFIR1lnWkFWSThWdFczWjJGWkFBQUFBRWxGVGtTdVFtQ0MiLAoicGljdHVyZS0tbWludXMiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFCeUVsRVFWUjQyc1dUUDJ0VFVSaUhuM3Z1bTV1YmMvL2wxc1NTeEJvYVFZY0tVVHBWRUFvNkNMcTRPam40UGZ3VVVoMEtYUVhwNU9qaVlBZkJEZ29LSlFnRlJSY2xiYlJwN2owbjErRm1DSXFDZGZEZHpnL2VoK2R3ZmdmKzl6Z1AxbmtFcko1dy81WFlLYXUzdHQ2ZkNQRDBiZzh4RnBSUzNIblNSVGxRY1VGY3lBd1VCY1ExaUgwUUJiMEdyTFRBVEdHdHNZK3hJTmFDNjdyMHo0QW5rTlNnRWNEblE2aFZ5bk1CREkvZ1lodjZIVGpLd0oyNldBdVNXeEFSMnNFTHpyZVdTWU0yUlFFWEZtRXhLa0hqREhxblNwT0pLYUV5RVhJTFlrd0plTGE3eVk2dnVYSDVOdXNyMXhCVkd2VWFNTTVoUVVOdXkweFh3RnJCbURtRHZjRWU5YVRPNDlFV0I2T1BMRFhQMGxwWTRuU2NVdk44Y0hTNTdKVlhPODVtQnZuTVlITFE0Y3MzNGZ0WGorM2hHMnIrZ0VBSGhFRklHSVpFWVVRU3hTdzEyeXczTzF6dENMa0J5V2FBWHVzNm51ZFJyVmJSV2hORklVa1NrYVl4YVJxUkpBRng3Qk1FRlZSVklYSk1adVlNNXFjb0NveXhqTWNaU28xcFA3eVB2LytPWENrT0hRZkhVVHpYQmQxUGRHVTRLcC94NWNhOTN4Wm1lMlBBelN1WGZzbmZ2dDdWenBySFp1clEvMVBqemhtNnVrRC9uSCtBSFFmd2dEb2dmOWxrQXd6LytUZitBSTBzaUJicUFmRVBBQUFBQUVsRlRrU3VRbUNDIiwKInNtaWxleS10d2lzdCI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUNYVWxFUVZSNDJvV1NjVWhUWVJURkx5VUJhd0JCaVFaSVJvSm9RYkRJMUlqSS9vcFlCUnVRQklWZ2tFQ01XUDlGVUFUS0FpeHd4RE9jekxLTm9IQkNXRzV2WWhubVdqSTAwMjBzWXhDcFcrc3h3ZHJZZHZ2T1Y4WW1RaDhjRHZlYzM3MDg0QkdKNXlKU0hoTVozcHBKdC9LVWpFS0trRThvOE5jeEc5R0RBMC9GejBFVUhLbXFDbnZxS0pqeUh3cG52dHpXOGtsbmx0UFBDM0RNeU5HREExOXlvRnNFcTVmT1puKyt0MmljVkpoWGhCSk81dVNqUDQ1WjVPakJkUmNmaVBXUnJxZFdIQmk3b0szTlgrVmcvMUZPVFZ1NThNMHU5RUE2WnVUb3dZSEhuandRNlNYajErSGFTT0h6RmRhbVRCeCsxc0xlcnIzOGZhcWRnNDVtNlppUm93Y0hIbnZ5d0p5ZGxOVnBrNVlQbmVabFh3dm5jaGsyWEZiazByb3dJMGNQRGp6MjVJSFFQZkpsWnM5bkY1N1U4OUpJRThlSGpuRGMwOFJMTDQveEQvOEo2WmlSb3djSEhudnlRTUJHZ2R5TXVkRFhVY2FEMS9Uc3VWbkJvNTNWSlYrQUdUbDZjT0N4Snc5TTNDSGYydVNwck51cTQ0OGZWSTdGWXV6MWVqZDE5T0RBWTA4ZThOMGdaZmxGb3padXErQ1pWNTJjeitjNUdvMXU2dWpCZ2NlZVBEQmtJZU5FVjNra01kekFubHQ3T1A1SjVWQW94T2wwdXNTUm93Y0hIbnZ5d0dBNzZRYmF5TDNnT0pCWWRCL20wYnYxUE9hNnpvdno3L2oxdUY4Nlp1VG93WUhIM3IrZnFiZVZhdm92bHFsekR3MkpsUGNjenpxYitjMzkvYXphOWtuSGpCdzlPUEMwOFZtT1U0M2RURzZQdFRJY2M1M1VOSDlyOXRka1d3R09HVGw2Y0J0M3R3cVZDOVh0MUZPajZTQjEyTTdRUUkrSlZMRVFnR05HTHZvR3dWVUw2WXNQYkJIYUxyUkxhUGQvVkNtMFEyamIrdkp2QmN3UVFEN1FDNzhBQUFBQVNVVk9SSzVDWUlJXHgzZCIsCiJ0aWNrLXNoaWVsZCI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUNXMGxFUVZSNDJwV1NiMGhUWVJTSDMrbGdwdHZrYnJ2VE5vbDFwNjZZUmpXU0dsRkZsdVdNaVRTcGtpaWhndnBZRVVBUUFRVVVCQkJWVUk1YSs1Zk9vQTFtVkZFSXBtVzJLWTV5MUZvYjdZSUxLajhORVUvbnZhNXVxd2wwNE9HZWU4NTVmc0RsRXJKWTliSW01SGtlRS9tdjhtcFV4SzhKYlpucytFcWhQYzdZeFFVUEhuZzBsNGhic3h4cHdMN1A4bXJIbC8ycEU3RHY4M0ZvR3QzSjQreWhzS00zOUpZNnY4dWxIclpOZGMzSWZMcEltVjhmdFk2MVRUcytIb1dXeUY2QlBSK09nUFZOV3hiM1VabFhGOWsyNFppaGpoamdWQTExZmpvMjMvNytNTmpmSFJLa1RTL3RCVmdIYmJCOXJCTmFKdzdBN3RqQmVlcUlBYmVZcDdiSnJybjFMM1pCTVZhRk53T3QyMG0zOEw3MWRjY2NkY1NBRzB5ZythMGpaM25TRE9iUVJxQlBLdFVHMW9IdW5obFNxUlNrMDJuZ2VSNVlaejJzQ0c3SVVVY011RnA1M1RwayswSGxYQzRITmY1R1VMbU13RGc1U0NRU1FrQW1reEhlbWJzYzZIc2J2cU56VFF5NG9qeHRDalpsdlBFQXhHSXh5R2F6d0hqK2tsMG8zK2RBMDFlSHZTR0R6aWt4NExLeWhla3h4QTBEYTRTQWVEeGVLUHRRRGkzQWh1dWg3S1kyVGgweDRJSzhVbkpSTWN3TnJwMVY5UnNMNVg0VW40bW9IOWZPRXJ5bFR1SFBkTDdpbk9LT1Bsazl1aEtZSUxjZzQ1TVpFVkdOR0VIV3d5YnA3YjkvNDlseU5Ua3BlNlQwNm5oMnZBNVVBL2dSeHptUktBZmxiaTFQYjRUYm9tV1hMaVBkcFM3cG1TVXhlWERwTjJZS1JZVDJwVGlqTytHbVNKVWdja1JMcWlRMVpMV2ttemdrNFFvZk8wMmh2VENqTzBLcThyY2xmd1pJOHdzelloRlFFQ3V4a3dla0hhSDlyemtoalVoMTNpRS9BUTRzWTBWMnErRWZBQUFBQUVsRlRrU3VRbUNDIiwKImdub21lLW1pbWUtaW1hZ2UtYm1wIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUEwQ0FZQUFBRE1rN3VSQUFBTjRFbEVRVlI0WHUyYXlZOGwyVlhHZjNlSTZVMDVadzA5dUtvOXQyVUJ3Z3RqYi9xUFlBVWJXQ0VRWXNPQ2haZVdOeTN2RUF0Z2hXQ0RhSG1CTFhuQndsamdCbGtNN2NiZFhkMDE1MVJaV1puNXhwanZ3S3VycnU2Z244dEZKekpHd2wvcTZNWTdjZlh1ZCtLYzc4U05GOG5QR2IrQW9ndVFnT0RqUXdLQ255MUVoNS92T3ZuYTE3NTJicGJvK1B3RkYvQmNISnZBT1FGc0FPT2Z0b1plNGh2ZitNYW1EbDRoNU5lLy92VWQvcGZndlgvYThVN0h0N01jbnh5dmpLKysrdW9VUUVJSWdGVUUvd2YyODBYZ3NqSjJhMWZ3ZngyckZ6cncxbndFMy92eElmMSt4TDBITSs0ZUZiengxZ0h6U2hCSE1FdzBHMFBOK2pCaXVMVCtJS01wRzdJNEF1RXA4b1pJUzVJMHdWcEgweGlxb21CN2E0MzFZY3Bna05MUFl2cXhSR3FQRXBCRUNpa2x6am04OTArSUJwOVltZ1NVbE1FbnNLeG5LVjJzQktDRUpGT2FRYWJwSlphZDlSN05jWU5yRFVhMEtEVGVRVjFDUHM4eHJhSGZyeEhlMDh0U1JzT1lOSWxwR2t2bFBUNVM0RHhDU01Bam5TV1JnalRSeEpFZ1VncXQ5UWRCR0dPdzFxS1VDcVNWbEVRNkJBazRjUHowQVBKOGpzU1NUeXRNVVJNcGg0d2RIbzBYTGM3Q1pOWlF0R1VRbEJNS3psdDJSd21wVGhDdFFpY0tFVWxFSm9naWpkWUtheXlpbGVoWUErQzhRNkJRQW9KSkFWSVJLVW5UR295MVNDbFFTbjRvWGljUUNNQS9QWUR4ckthc1c4Yno1ZGhDYlJ4U1dCSUp3eXpGZU1uWnBHSmVQUFpMaUF4YU8xSnAyUndKeXRiaWlqcVFkaDZra3NTeElva0YzcmRMMDBnVkJ4RnFyUU5CS1lQeEJMRVFLS2R4N29QT0U3SmlyQ2RXQ3QyWnF6OHE0UEc4SW12bGNpeVo1ZzdqRmNNc0pwV2dKSXlMa3NJNGpCVGdMYmFWYUsrWVY1YlRjVUVjYTBTa2NkWlNMbkt5TEVWbW1qaFJaRm90UngySXg5RlA3SEFmMXI0SFp4M2VXd2dCT0lxNlJxVlpOd0FoK1FpY2NVZ1hZeXRCR2NySTBFOFNSc01ldzk2SVVkb25EbGNOOEpvZ1JPMFFTbkJ5Vm5KL2Y4cGtrck5ZVkRnMFNybWxXZUk0Sms0UzRwNUdwcDQ0OWlqcFFFQW9SZWZnL2I0djRJUFNramljczVUT01Xc3N4b1U1VDgvQXh1WVE2VHo5UVVxeXFHaVFPQ3V3M21KOFRqeUkySWlHTkdkekRKNUlhVEl0aUlSSHA0bzJsR0VWdFBQQzFSMml5S1BmRjZTVUN1dkFPWWt6QXE5RXQ0bmpBVHJrUElGczBJTXhocm8yK1A0elJJeDBhQVZyYXhsNTB6SS9uTkZhU1ZrTHlzWlFtWllvVGNsU1RlRU1mbW1tOGtSUkVtcThiajE1R1RQSVZFZzdnQXRYMk5PMkxkNkNFZ0lWS1lnbEFrTEg2ZDVwcGV3SUZ4QkEwSXlLOEo0dS9Fb0cydGF6MXBjZ0hKdWpoTWtrWXU4a0Q0dFpCOVpJWEZXRnRpaFZST1VhYWdWeE5VTzAzMlB2L3J1OCtQd3I2T2UvUkRrdmlJWEdDay9WZU5iU2lEZ1dHRy94L1JUdkkwQ2doVm1hUktFRFVlLzlCK2E4QUNHUjBoQXBqNlFMaE94R0NqRHFPMHhWQldGR3dyTFdUNWVXSVJEVXRhT3FIRzBUUkVXQTBVUnRROU00RUgxTThUYm5wOStqbk43azNzMGZNSnRQbU04TnM5bU1zcXFvcW5acGxucHBUZE11cmNGWWczMi9USnh6d2J6M0gvckNXcngvM25henM2cUJXN2UremIxMzMrWXJYL2tORnRPV1llOHE2OE1FVzBpS3FnbGZobk1nSUN5RVI3WTMyUjNNS0twM0dVWXBzYTFKNUh2VTVZd0hKeW5YMTc1S2xtaVNPRUZLRUVMaFdacVhPTzl3Rmx5NDIwTG8vMElBUEFrZytCcG5rVkt1YkNkVzlrTHZ2dk02NTR2djgxZC84N3Y4K1ovOUFkLzl6cXQ4NGlvTWRZdXpKYTJ5R0F0MUk2aHFhQzA0bTNLdzl4YTM3dTV4c044UWxRV0h0MStIOUNxanpaZUpCTVJKVEd0YWhQQWdIYld2TU5MajBCZ3ZNQlphWXpIVzBTN05PSS8xWUlEYU9lcktoZk5QaFAyRXN3UjhzQURRemxKUHdaU1MyYlRnL3Y3cnZQYXRQMWdTK2k2WGg1cEVTcVR5NE1FN2h4T1c4Y2tCcmQybXNkY1pKdXZjM1QvZ2pUZHY4bS8vL1BjYzNYbUg2VFFINzlGS0F5S0lWaTR0Wk5DSGNzRVkweW1oVmZQT2hYTHJhTmoveEM1MDkrWWVhYXlvNXBhdDdZenp5WnpqZTdmSSsyZGNqeEtTN011MGJRVFVDQ1RDSktSWHY4ejA2RnM4Tnp4aDBUYnNINVFNdG5hdzFSSENQMElxaVk0aXNsNE1tRURZR2tzclBEYTAwdkJOU0R6K0EyNGlqR1ZaVUpzVzc0TEFFUVNRcG1uL0MxLzR3dHBLQ1gzMjA1L0MwV0tVNGV5MG9abzU1bVBML3Y0eFAvekJuekkvK2c1SzNPRFJ3Ujh6T1hxTjZmaUg2T2JISk9vK3M4VWRpbm9XcnZCSXAzeitjNy9FY0xETjFuQWRMY0VJUi9pemNta0thd1cxYTNucnZSOXg0L1lOWnVXYzAra3A5NC92Y3pJN1pWd3UrTXZYL29MZi84UGY0WjNiYjZIVWh3RkEwT0NxaU8vY1B1RFNsZXNjbmQ5azgxTEM0YjBGNklSSWFGSUJ0OS84YXk1OVpwUDg2QlJyTTdhdld2STJRdm9Cby9WUE1wN2NvbktXNDdNWnJWd2UrNFJQZnVwekZPVWFkL2JmQW1kNC92SkxIRDU0ajMvOHAyL2o1WndIRC9hSmRMUnN2MWVaVGlyYXR1REZGM2M0UDYwNVBNeVpMU3ErLy9yZjBSckhsUy85R2o2T250eTlWMHVvS0EzLzhjWWVMM3p1Q2dmSGUxeTZwdWdQUFNoTmZtNVoxNUpxTW1FNFNwbE5HcENDd2haUVdzNGZXc3B5VERUUXpLZFRvbnBCZGZ1UTEvNzJKdEZJOGZEa0NJa2xpVEtjRmN6T3A1amFNbHBMTUhIRTIrKzlneFFRYWNuKzBhTlFNdW02UnExWjNyenpIZTQvK0FjKy8rS2ZNTHoyeFNldGRIVXY1SlhqNE1HVU4vN2xEck5KaTR3MTg5b3dtVFRFZlVNeU1relBhNnhydUh6Tk1CeHBhQ1Fpc3N6ek1WSkNQbmUwZGMxODNQRGdxR1J2NzEwbTQ3dE1IbzVKazViWitJd2IvM3JFbzcyVzB5TkIyNVJrQTh0ODRqamN5NmxxeTZPemh2MjlPVkliYkR0Rmlobmo4U0dMZWQ0dEllUkhoWnpuQ3phdVNEYXZ4bmlYOGVpZXc1WVJUU0Y0Y04raDlaREJSb3hIazg4azFjS0NsVWlaaEk3UzFJTEZ6Sk1PUU1hUzFrcnkzSFBqMzJmb09BNnRjREZ6U0JGaEhVU1pCRzI1OGVZWWdNM2RDRVRKWW01bzJvakorUnhuTlZvSDNlRDg2bDVJZEovK2xTZ1liTGJFSTBjeDEyeHVTVVliaEN1ZVhOZEVVYzdHTmp6WXE2bExTWkUxWkgzQm8rT0czaUJtK3JEQnU1ZzQ5YUhGYmwzVnhHbkx4cVVZN3l6Z0E1bWRLeGwxM2FKU1dBNUlOY0Q3bHJZeExLYVN0WTJJd3pzelp0TVVKUm91dnhCajJnWXBYZURhellDZ2cydzRZSFltYUdyTFlMdGw4emxGMDFZc3B1Q1Y0UGllWDJZbEl0SXhadTZJaENDS1BTKzk3R2xOalJTU3RVMURsRVJJSjdoeXZVVnB4ekJOYVV2RjJWN0N5VjJEemp4SXorTE1VRTRsL1Q1b0hkSEwxdG5lSFlRMisvS3ZYbUUwa2pTbG9pb3N5SWltOFFCUFJDeFd1bEE2c213blBmWnZ6OEY3cXZXS3RvbFpuRm5RRVl1RllIeFVrZzBFbXpzeFRXdDU5STdoeXJXRWgzY0t0aTRuakRZajJtckI4eThKbXRyUjMvU29KSWN6aVZLUzRVNUVYaGVNdGpSdENXMHRHVzFha29FbmlwdlE4NTFYNEFXTGFjUEdiZzlySGYyUkprNWtOd05vNkdZQmFpczRQcTd4UnBIMEpIVWxLUmVnUk13Z1RkaCsyZEZMTkcxcGcwN0dEMDA0ZnJUWDBFOFRMbjhpcGl4S3ZJMTVlTkNRclczVHRET2EyakRhOGZSNkZldXRZcGFETVhwSnpnS2VmQzZZamcxVldYRDEyb0FzQlNGTHRuWlRqRE8wdGVmdzdnTHZSUGVITUtHQjdvNlVzME1venlXTHMrYjlPNmdsZTB4K3EwOFVwVXlQVDViRXdkbUVLQ25ZdmJKR0pCWGVlZktxREYzQ0dvZE1zbVZ3QXQ4YTBCNlBwRGp6eERKc3AwbTB3QXNUZEdLTllyNW9hTTdoOHRWMStwbGdldFp3Y2p4bXNCN1IzNVJZRDgycFFRZ1A4SFFOQ0FRK0dLU1pSRXJObGM4TTZHODNITjhmVTR3SDdOK1UzUHh4emNrQkhCMHVPTmlmVTd1RzNSYzh2VFdCUTlNZktCQ2VzckNVdVVLaWNMVllaZ29ldk9meHRhWXRXNXJLMHgrbE9DTXhyU1B0ZWJ5VElTaWxZcndWS0RUMUhMejExRlViUk55OUQ0aHVCclJPcUhOTDBrdFlXNCs1OWxuTGxVOEhjZE5MZTVTemdwMmRQdXVqTmNhUEhNWFlZWFBGNHRIU3ppWDlubVk0a0p3K2FIRkcwOVFWaTNGRE5Ya3NXRW03R0hCNjZMbjN0a0g0R0swVnMzRkptZ2cydGpJMk5uZVFqSkNrZUt0WlRBVE5QRUU0V044YWd1Y0orV0Fha0oySUtNNGIydXB4QjdoRXNsWlMxWTZIRDJkNDQraHZQOTQ2OURtYm5PUDdjUDZ1SlZZMjlQdDhrbE9IWC9BeWlyd0FtMkxyQnAxcWZHUEp6eDNXV3JMMU9WbFBrNlkyUEc4Z0ZXM2JzTFlSMCtTU04zOTBoOTJyMjlSVncySldJeUNNbytjOFp5Y1Z4dnhYRGNpUGFnRGxlZjZ6Q3RYUHc4MUUyaTJHK290c3JXM3hpV3ZicExzMVJlbFFDTFplU0lteWlDZ09qNWNVVThtdEh5MllIa2RnSGd0eGpmbkVVT2FXdWpaaFRqNnpOSFhMY3krbFRFOXJwREFrRWZSNkFodWVGeFNlaXZIcEFpRVZveDNCcGV1R2ZtYkp0RUhwRGxkQUF0MHlZcmlocVNyWTM1c3lmdFN3dlRsaS8vNE5vbDZmbzRjNXRsNUQySmhQZm1iRXI3eXlHOXFvYzQ2cWFIR3RBQ3NvWnczRmZFNFVDWHI5bURpT3NGWlE1QTFWN3ZGRTNIcXJJaDhuUzAxWUZBcFRnOVlObTdzSlFzalFwcDF0Nlc4bzhxS20zNHU1OW1sSjJtT2xDM1Uxd08vOTloOXhkbmFDMEFKblBKR1d2UExMamtocTBqU2hLQnY4NDg4SnBFbktWNTlmaEFEd0F1OEJQRUtBbEFxbENQM2J1YkFBWG9RUklRVE9leVRnOFdUckVtY0VUV21JWWcwQ1ZDU29DNFBRSHF3alNpVlpsbkQ5dWM4SHJpdHQ5QWwrODlkLzY2SXZMRlo5VDMrcDhhenpxM05XL2F2M2dXZmo0c0dzamhjbjMvVjFBd2lwdlRoaExrSjhsZnl6TDBEWEp6VEF6eW9EcThRdlRqN29MSUFWRFZqQWRiT3d1aWpCZjhHUzZhSkw1a0xrdS81dUNmbU9NNUM5UUtsOGpIblBDSFRsM0dydzNkMm9mb3FvZmlZNldQWHhMRUUvTlV2V1dxRUJCMFRmL09ZM0d5NksvM21nRjhtNnN0WWFBZXdDVndBUHRJQzR3TDhQQ01DdmZPNzZWNDh0NERzKy9USG5SOEE5RGN3QUI4ak9vcXk4UDE0NTE4SHF0c1R4YkhUSldDRDZlUE9EbFFLUWdPSy9pNmRueFFHZWk4RUQ0bVBPRHlQL3ovRUwvQUwvQ1JNakFXNm0rakxUQUFBQUFFbEZUa1N1UW1DQyJ9LApkYT1be2Rlc2M6Ilx1ODA1Nlx1OGE5NVx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYSIsaHRtbDp7cGF0aDoiZmFjZXMveG1hcyIsdGFibGU6W1tbIltPOi0peF0iLCJhbmdlbCJdLFsiW3h4KHhdIiwiZGVhZCJdLFsiWzopeF0iLCJzbWlsZSJdLFsiWzpvKXhdIiwiY2xvd24iXSxbIls6bylqeF0iLCJjbG93bl9qZXN1cyJdLFsiWzotKHhdIiwiZnJvd24iXSxbIls6fih4XSIsImNyeSJdLFsiWzstKXhdIiwid2luayJdLFsiWzotW3hdIiwiYW5ncnkiXSxbIls6LV14XSIsImRldmlsIl0sWyJbOkR4XSIsImJpZ2dyaW4iXSxbIls6T3hdIiwib2giXSxbIls6UHhdIiwidG9uZ3VlIl0sWyJbXjNeeF0iLCJraXNzIl0sWyJbP18/eF0iLCJ3b25kZXIiXSxbIiN5dXB4IyIsImFncmVlIl0sWyIjbmd4IyIsImRvbm5vIl0sWyIjaGVoZXgjIiwiaGVoZSJdLFsiI2xvdmV4IyIsImxvdmUiXSxbIiNvaHgjIiwic3VycHJpc2UiXV0sW1siI2Fzc3gjIiwiYXNzIl0sWyJbc29zYWR4XSIsInNvc2FkIl0sClsiI2dvb2R4IyIsImdvb2QiXSxbIiNob2hveCMiLCJob2hvIl0sWyIja2lsbHgjIiwia2lsbCJdLFsiI2J5ZXgjIiwiYnllIl0sWyJbWl9aeF0iLCJ6Il0sWyJbQF9AeF0iLCJAIl0sWyIjYWRvcmV4IyIsImFkb3JlIl0sWyIjYWRvcmUyeCMiLCJhZG9yZTIiXSxbIls/Pz94XSIsIndvbmRlcjIiXSxbIltiYW5naGVhZHhdIiwiYmFuZ2hlYWQiXSxbIltib3VuY2VyeF0iLCJib3VuY2VyIl1dLFtbIltjZW5zb3JlZHhdIiwiY2Vuc29yZWQiXSxbIltmbG93ZXJmYWNleF0iLCJmbG93ZXJmYWNlIl0sWyJbc2hvY2tpbmd4XSIsInNob2NraW5nIl0sWyJbcGhvdG94XSIsInBob3RvIl0sWyJbeWlwZXN4XSIsInlpcGVzIl0sWyJbeWlwZXMyeF0iLCJ5aXBlczIiXSxbIlt5aXBlczN4XSIsInlpcGVzMyJdLFsiW3lpcGVzNHhdIiwieWlwZXM0Il0sWyJbMzY5eF0iLCIzNjkiXSxbIltib21ieF0iLCJib21iIl0sWyJbc2xpY2t4XSIsInNsaWNrIl0sWyJbZnVja3hdIiwiZGl1Il0sWyIjbm94IyIsCiJubyJdLFsiI2tpbGwyeCMiLCJraWxsMiJdXSxbWyIja2lsbDN4IyIsImtpbGwzIl0sWyIjY254IyIsImNoaWNrZW4iXSxbIiNjbjJ4IyIsImNoaWNrZW4yIl0sWyJbYm91bmN5eF0iLCJib3VuY3kiXSxbIltib3VuY3kyeF0iLCJib3VuY3kyIl0sWyIjZmlyZXgjIiwiZmlyZSJdXV0sc3BhbjpbWyJbb2ZmdG9waWN4XSIsIm9mZnRvcGljIl1dfX0se2Rlc2M6Ilx1N2RhMFx1NWUzZFx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYSIsaHRtbDp7cGF0aDoiZmFjZXMveG1hcy9ncmVlbiIsdGFibGU6W1tbIls6KWd4XSIsInNtaWxlIl0sWyJbOm8pZ3hdIiwiY2xvd24iXSxbIls6LShneF0iLCJmcm93biJdLFsiWzp+KGd4XSIsImNyeSJdLFsiI3l1cGd4IyIsImFncmVlIl1dLFtbIltzb3NhZGd4XSIsInNvc2FkIl0sWyIjZ29vZGd4IyIsImdvb2QiXSxbIiNieWVneCMiLCJieWUiXV0sW1siWzM2OWd4XSIsIjM2OSJdLFsiW2Z1Y2tneF0iLCJkaXUiXV1dfX0se2Rlc2M6Ilx1NjViMFx1NWU3NFx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYSIsCmh0bWw6e3BhdGg6ImZhY2VzL25ld3llYXIiLHRhYmxlOltbWyJbOm8pbl0iLCJjbG93biJdLFsiWzpvKTJuXSIsImNsb3duMiJdLFsiWzpvKTNuXSIsImNsb3duMyJdLFsiI2Fzc24jIiwiYXNzIl0sWyJbc29zYWRuXSIsInNvc2FkIl0sWyJbc29zYWQybl0iLCJzb3NhZDIiXSxbIltzb3NhZDNuXSIsInNvc2FkMyJdLFsiW2JhbmdoZWFkbl0iLCJiYW5naGVhZCJdLFsiW2JhbmdoZWFkMm5dIiwiYmFuZ2hlYWQyIl1dLFtbIlt5aXBlc25dIiwieWlwZXMiXSxbIlszNjluXSIsIjM2OSJdLFsiWzM2OTJuXSIsIjM2OTIiXSxbIltmdWNrbl0iLCJkaXUiXSxbIltib3VuY2Vybl0iLCJib3VuY2VyIl1dXSxzcGFuOltbIltvZmZ0b3BpY25dIiwib2ZmdG9waWMiXSxbIltvZmZ0b3BpYzJuXSIsIm9mZnRvcGljMiJdXX19LHtkZXNjOiJcdTgxNjZcdTliNTRcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2EiLGh0bWw6e3BhdGg6ImZhY2VzL2xvbW9yZSIsdGFibGU6W1tbInh4KGxtIiwiZGVhZCJdLApbIjopbG0iLCJzbWlsZSJdLFsiOm8pbG0iLCJjbG93biJdLFsiOm8pMmxtIiwiY2xvd24yIl0sWyI6bykzbG0iLCJjbG93bjMiXSxbIjpvKTRsbSIsImNsb3duNCJdLFsiOi0obG0iLCJmcm93biJdLFsiOn4obG0iLCJjcnkiXSxbIjstKWxtIiwid2luayJdLFsiOi1bbG0iLCJhbmdyeSJdLFsiOi1dbG0iLCJkZXZpbCJdLFsiOkRsbSIsImJpZ2dyaW4iXSxbIjpPbG0iLCJvaCJdLFsiOlBsbSIsInRvbmd1ZSJdLFsiXjNebG0iLCJraXNzIl0sWyI/Xz9sbSIsIndvbmRlciJdXSxbWyIjeXVwI2xtIiwiYWdyZWUiXSxbIiNoZWhlI2xtIiwiaGVoZSJdLFsiI2xvdmUjbG0iLCJsb3ZlIl0sWyIjb2gjbG0iLCJzdXJwcmlzZSJdLFsiI2FzcyNsbSIsImFzcyJdLFsiW3Nvc2FkXWxtIiwic29zYWQiXSxbIiNnb29kI2xtIiwiZ29vZCJdLFsiI2hvaG8jbG0iLCJob2hvIl0sWyIja2lsbCNsbSIsImtpbGwiXSxbIkBfQGxtIiwiQCJdLFsiI2Fkb3JlI2xtIiwiYWRvcmUiXSxbIj8/P2xtIiwid29uZGVyMiJdLApbIltiYW5naGVhZF1sbSIsImJhbmdoZWFkIl0sWyJbYm91bmNlcl1sbSIsImJvdW5jZXIiXSxbIltmbG93ZXJmYWNlXWxtIiwiZmxvd2VyZmFjZSJdLFsiW3Nob2NraW5nXWxtIiwic2hvY2tpbmciXSxbIltwaG90b11sbSIsInBob3RvIl0sWyJbeWlwZXNdbG0iLCJ5aXBlcyJdLFsiWzM2OV1sbSIsIjM2OSJdLFsiW3NsaWNrXWxtIiwic2xpY2siXSxbImZ1Y2tsbSIsImRpdSJdLFsiZnVjazJsbSIsImRpdTIiXSxbIiNraWxsMiNsbSIsIktpbGwybG0iXSxbIltvZmZ0b3BpY11sbSIsIm9mZnRvcGljIl1dXX19LHtkZXNjOiJTQVJTXHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIixodG1sOntwYXRoOiJmYWNlcy9zaWNrIix0YWJsZTpbW1siW086LSlza10iLCJhbmdlbCJdLFsiWzpvKXNrXSIsImNsb3duIl0sWyJbOi1bc2tdIiwiYW5ncnkiXSxbIls6LV1za10iLCJkZXZpbCJdLFsiI3l1cHNrIyIsImFncmVlIl0sWyIjbmdzayMiLCJkb25ubyJdLFsiI2Nuc2sjIiwiY2hpY2tlbiJdXSwKW1siI2Fzc3NrIyIsImFzcyJdLFsiW3Nvc2Fkc2tdIiwic29zYWQiXSxbIiNob2hvc2sjIiwiaG9obyJdLFsiI2hvaG8yc2sjIiwiaG9obzIiXSxbIiNraWxsc2sjIiwia2lsbCJdLFsiI2J5ZXNrIyIsImJ5ZSJdLFsiW0BfQHNrXSIsIkAiXSxbIiNhZG9yZXNrIyAiLCJhZG9yZSJdLFsiW2JhbmdoZWFkc2tdIiwiYmFuZ2hlYWQiXV0sW1siW2Zsb3dlcmZhY2Vza10iLCJmbG93ZXJmYWNlIl0sWyJbc2hvY2tpbmdza10iLCJzaG9ja2luZyJdLFsiW3Bob3Rvc2tdIiwicGhvdG8iXSxbIiNmaXJlc2sjIiwiZmlyZSJdLFsiWzM2OXNrXSIsIjM2OSJdLFsiW2Z1Y2tza10iLCJkaXUiXV1dfX0se2Rlc2M6Ilx1ODM0OVx1NmNlNVx1OTlhY1x1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYSIsaHRtbDp7cGF0aDoiZmFjZXMvYWxwYWNhIix0YWJsZTpbW1siOn4oYWwiLCJjcnkiXSxbIjpPYWwiLCJvaCJdLFsiOlBhbCIsInRvbmd1ZSJdLFsiI3l1cCNhbCIsImFncmVlIl0sWyIjbmcjYWwiLCJkb25ubyJdLApbIiNoZWhlI2FsIiwiaGVoZSJdLFsiI2xvdmUjYWwiLCJsb3ZlIl0sWyIjb2gjYWwiLCJzdXJwcmlzZSJdLFsiI2NuI2FsIiwiY2hpY2tlbiJdXSxbWyIjYXNzI2FsIiwiYXNzIl0sWyJbc29zYWRdYWwiLCJzb3NhZCJdLFsiI2dvb2QjYWwiLCJnb29kIl0sWyIja2lsbCNhbCIsImtpbGwiXSxbIiNieWUjYWwiLCJieWUiXSxbIlpfWmFsIiwieiJdLFsiQF9AYWwiLCJAIl0sWyIjYWRvcmUjYWwiLCJhZG9yZSJdLFsiPz8/YWwiLCJ3b25kZXIyIl0sWyJbYmFuZ2hlYWRdYWwiLCJiYW5naGVhZCJdLFsiW2JvdW5jZXJdYWwiLCJib3VuY2VyIl0sWyJbYm91bmN5XWFsIiwiYm91bmN5Il1dLFtbIltmbG93ZXJmYWNlXWFsIiwiZmxvd2VyZmFjZSJdLFsiW3Nob2NraW5nXWFsIiwic2hvY2tpbmciXSxbIltwaG90b11hbCIsInBob3RvIl0sWyIjZmlyZSNhbCIsImZpcmUiXSxbIlt5aXBlc11hbCIsInlpcGVzIl0sWyJbMzY5XWFsIiwiMzY5Il0sWyJbYm9tYl1hbCIsImJvbWIiXSxbIltzbGlja11hbCIsCiJzbGljayJdLFsiI2FsZnVja2FsIyIsImRpdSJdLFsiI25vI2FsIiwibm8iXSxbIiNraWxsMiNhbCIsImtpbGwyIl1dXX19LHtkZXNjOiJcdTk4ZGZcdTliM2NcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2EiLGh0bWw6e3BhdGg6ImZhY2VzL2dob3N0Iix0YWJsZTpbW1siTzotKWciLCJhbmdlbCJdLFsieHgoZyIsImRlYWQiXSxbIjopZyIsInNtaWxlIl0sWyI6bylnIiwiY2xvd24iXSxbIjotKGciLCJmcm93biJdLFsiOn4oZyIsImNyeSJdLFsiOy0pZyIsIndpbmsiXSxbIjotW2ciLCJhbmdyeSJdLFsiOi1dZyIsImRldmlsIl0sWyI6RGciLCJiaWdncmluIl0sWyI6T2ciLCJvaCJdLFsiOlBnIiwidG9uZ3VlIl0sWyJeM15nIiwia2lzcyJdLFsiP18/ZyIsIndvbmRlciJdLFsiI3l1cCNnIiwiYWdyZWUiXSxbIiNuZyNnIiwiZG9ubm8iXSxbIiNoZWhlI2ciLCJoZWhlIl0sWyIjbG92ZSNnIiwibG92ZSJdLFsiI29oI2ciLCJzdXJwcmlzZSJdLFsiI2NuI2ciLCJjaGlja2VuIl1dLFtbIiNhc3MjZyIsCiJhc3MiXSxbIltzb3NhZF1nIiwic29zYWQiXSxbIiNnb29kI2ciLCJnb29kIl0sWyIjaG9obyNnIiwiaG9obyJdLFsiI2tpbGwjZyIsImtpbGwiXSxbIiNieWUjZyIsImJ5ZSJdLFsiWl9aZyIsInoiXSxbIkBfQGciLCJAIl0sWyIjYWRvcmUjZyIsImFkb3JlIl0sWyI/Pz9nIiwid29uZGVyMiJdLFsiW2JhbmdoZWFkXWciLCJiYW5naGVhZCJdLFsiW2JvdW5jZXJdZyIsImJvdW5jZXIiXSxbIltib3VuY3ldZyIsImJvdW5jeSJdLFsiW29mZnRvcGljXWciLCJvZmZ0b3BpYyJdXSxbWyJbY2Vuc29yZWRdZyIsImNlbnNvcmVkIl0sWyJbZmxvd2VyZmFjZV1nIiwiZmxvd2VyZmFjZSJdLFsiW3Nob2NraW5nXWciLCJzaG9ja2luZyJdLFsiW3Bob3RvXWciLCJwaG90byJdLFsiI2ZpcmUjZyIsImZpcmUiXSxbIlt5aXBlc11nIiwieWlwZXMiXSxbIlszNjldZyIsIjM2OSJdLFsiW2JvbWJdZyIsImJvbWIiXSxbIltzbGlja11nIiwic2xpY2siXSxbImZ1Y2tnIiwiZGl1Il0sWyIjbm8jZyIsIm5vIl0sClsiI2tpbGwyI2ciLCJraWxsMiJdXV19fSx7ZGVzYzoiXHU2YzM0XHU1ZjY5XHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIixodG1sOntwYXRoOiJmYWNlcy9kcmF3Iix0YWJsZTpbW1siTzotKWR3IiwiYW5nZWwiXSxbInh4KGR3IiwiZGVhZCJdLFsiOilkdyIsInNtaWxlIl0sWyI6bylkdyIsImNsb3duIl0sWyI6LShkdyIsImZyb3duIl0sWyI6fihkdyIsImNyeSJdLFsiOy0pZHciLCJ3aW5rIl0sWyI6LVtkdyIsImFuZ3J5Il0sWyI6LV1kdyIsImRldmlsIl0sWyI6RGR3IiwiYmlnZ3JpbiJdLFsiOk9kdyIsIm9oIl0sWyI6UGR3IiwidG9uZ3VlIl0sWyJeM15kdyIsImtpc3MiXSxbIj9fP2R3Iiwid29uZGVyIl0sWyIjeXVwI2R3IiwiYWdyZWUiXSxbIiNuZyNkdyIsImRvbm5vIl0sWyIjaGVoZSNkdyIsImhlaGUiXSxbIiNsb3ZlI2R3IiwibG92ZSJdLFsiI29oI2R3Iiwic3VycHJpc2UiXV0sW1siI2NuI2R3IiwiY2hpY2tlbiJdLFsiI2FzcyNkdyIsImFzcyJdLFsiW3Nvc2FkXWR3IiwKInNvc2FkIl0sWyIjZ29vZCNkdyIsImdvb2QiXSxbIiNob2hvI2R3IiwiaG9obyJdLFsiI2tpbGwjZHciLCJraWxsIl0sWyIjYnllI2R3IiwiYnllIl0sWyJaX1pkdyIsInoiXSxbIkBfQGR3IiwiQCJdLFsiI2Fkb3JlI2R3IiwiYWRvcmUiXSxbIj8/P2R3Iiwid29uZGVyMiJdLFsiW2JhbmdoZWFkXWR3IiwiYmFuZ2hlYWQiXSxbIltib3VuY2VyXWR3IiwiYm91bmNlciJdXSxbWyJbYm91bmN5XWR3IiwiYm91bmN5Il0sWyJbY2Vuc29yZWRdZHciLCJjZW5zb3JlZCJdLFsiW2Zsb3dlcmZhY2VdZHciLCJmbG93ZXJmYWNlIl0sWyJbc2hvY2tpbmddZHciLCJzaG9ja2luZyJdLFsiW3Bob3RvXWR3IiwicGhvdG8iXSxbIiNmaXJlI2R3IiwiZmlyZSJdLFsiW3lpcGVzXWR3IiwieWlwZXMiXSxbIlszNjldZHciLCIzNjkiXSxbIltib21iXWR3IiwiYm9tYiJdLFsiW3NsaWNrXWR3Iiwic2xpY2siXSxbImZ1Y2tkdyIsImRpdSJdLFsiI25vI2R3Iiwibm8iXSxbIiNraWxsMiNkdyIsImtpbGwyIl0sClsiW29mZnRvcGljXWR3Iiwib2ZmdG9waWMiXV1dfX0se2Rlc2M6Ilx1NTMxN1x1Njk3NVx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYSIsaHRtbDp7cGF0aDoiZmFjZXMvZnJvemVuIix0YWJsZTpbW1siTzotKWZyIiwiYW5nZWwiXSxbInh4KGZyIiwiZGVhZCJdLFsiOilmciIsInNtaWxlIl0sWyI6bylmciIsImNsb3duIl0sWyI6LShmciIsImZyb3duIl0sWyI6fihmciIsImNyeSJdLFsiOy0pZnIiLCJ3aW5rIl0sWyI6LVtmciIsImFuZ3J5Il0sWyI6LV1mciIsImRldmlsIl0sWyI6RGZyIiwiYmlnZ3JpbiJdLFsiOk9mciIsIm9oIl0sWyI6UGZyIiwidG9uZ3VlIl0sWyJeM15mciIsImtpc3MiXSxbIj9fP2ZyIiwid29uZGVyIl0sWyIjeXVwI2ZyIiwiYWdyZWUiXSxbIiNuZyNmciIsImRvbm5vIl0sWyIjaGVoZSNmciIsImhlaGUiXSxbIiNsb3ZlI2ZyIiwibG92ZSJdLFsiI29oI2ZyIiwic3VycHJpc2UiXSxbIiNjbiNmciIsImNoaWNrZW4iXV0sW1siI2FzcyNmciIsImFzcyJdLFsiW3Nvc2FkXWZyIiwKInNvc2FkIl0sWyIjZ29vZCNmciIsImdvb2QiXSxbIiNob2hvI2ZyIiwiaG9obyJdLFsiI2tpbGwjZnIiLCJraWxsIl0sWyIjYnllI2ZyIiwiYnllIl0sWyJaX1pmciIsInoiXSxbIkBfQGZyIiwiQCJdLFsiI2Fkb3JlI2ZyIiwiYWRvcmUiXSxbIj8/P2ZyIiwid29uZGVyMiJdLFsiW2JhbmdoZWFkXWZyIiwiYmFuZ2hlYWQiXSxbIltiYW5naGVhZDJdZnIiLCJiYW5naGVhZDIiXSxbIltib3VuY2VyXWZyIiwiYm91bmNlciJdLFsiW2JvdW5jeV1mciIsImJvdW5jeSJdLFsiW29mZnRvcGljXWZyIiwib2ZmdG9waWMiXV0sW1siW2NlbnNvcmVkXWZyIiwiY2Vuc29yZWQiXSxbIltmbG93ZXJmYWNlXWZyIiwiZmxvd2VyZmFjZSJdLFsiW3Nob2NraW5nXWZyIiwic2hvY2tpbmciXSxbIltwaG90b11mciIsInBob3RvIl0sWyIjZmlyZSNmciIsImZpcmUiXSxbIlt5aXBlc11mciIsInlpcGVzIl0sWyJbMzY5XWZyIiwiMzY5Il0sWyJbYm9tYl1mciIsImJvbWIiXSxbIltzbGlja11mciIsInNsaWNrIl0sClsiZnVja2ZyIiwiZGl1Il0sWyIjbm8jZnIiLCJubyJdLFsiI2tpbGwyI2ZyIiwia2lsbDIiXV1dfX0se2Rlc2M6IlBpeGVsXHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIixodG1sOntwYXRoOiJmYWNlcy9waXhlbCIsdGFibGU6W1tbIk86LSlweCIsImFuZ2VsIl0sWyJ4eChweCIsImRlYWQiXSxbIjopcHgiLCJzbWlsZSJdLFsiOm8pcHgiLCJjbG93biJdLFsiOi0ocHgiLCJmcm93biJdLFsiOn4ocHgiLCJjcnkiXSxbIjstKXB4Iiwid2luayJdLFsiOi1bcHgiLCJhbmdyeSJdLFsiOi1dcHgiLCJkZXZpbCJdLFsiOkRweCIsImJpZ2dyaW4iXSxbIjpPcHgiLCJvaCJdLFsiOlBweCIsInRvbmd1ZSJdLFsiXjNecHgiLCJraXNzIl0sWyI/Xz9weCIsIndvbmRlciJdLFsiI3l1cCNweCIsImFncmVlIl0sWyIjbmcjcHgiLCJkb25ubyJdLFsiI2hlaGUjcHgiLCJoZWhlIl0sWyIjbG92ZSNweCIsImxvdmUiXSxbIiNvaCNweCIsInN1cnByaXNlIl0sWyIjY24jcHgiLCJjaGlja2VuIl1dLFtbIiNhc3MjcHgiLAoiYXNzIl0sWyJbc29zYWRdcHgiLCJzb3NhZCJdLFsiI2dvb2QjcHgiLCJnb29kIl0sWyIjaG9obyNweCIsImhvaG8iXSxbIiNraWxsI3B4Iiwia2lsbCJdLFsiI2J5ZSNweCIsImJ5ZSJdLFsiWl9acHgiLCJ6Il0sWyJAX0BweCIsIkAiXSxbIiNhZG9yZSNweCIsImFkb3JlIl0sWyI/Pz9weCIsIndvbmRlcjIiXSxbIltiYW5naGVhZF1weCIsImJhbmdoZWFkIl0sWyJbYm91bmNlcl1weCIsImJvdW5jZXIiXSxbIltib3VuY3ldcHgiLCJib3VuY3kiXSxbIltvZmZ0b3BpY11weCIsIm9mZnRvcGljIl1dLFtbIltjZW5zb3JlZF1weCIsImNlbnNvcmVkIl0sWyJbZmxvd2VyZmFjZV1weCIsImZsb3dlcmZhY2UiXSxbIltzaG9ja2luZ11weCIsInNob2NraW5nIl0sWyJbcGhvdG9dcHgiLCJwaG90byJdLFsiI2ZpcmUjcHgiLCJmaXJlIl0sWyJbeWlwZXNdcHgiLCJ5aXBlcyJdLFsiWzM2OV1weCIsIjM2OSJdLFsiW2JvbWJdcHgiLCJib21iIl0sWyJbc2xpY2tdcHgiLCJzbGljayJdLFsiZnVja3B4IiwKImRpdSJdLFsiI25vI3B4Iiwibm8iXSxbIiNraWxsMiNweCIsImtpbGwyIl1dXX19LHtkZXNjOiJcdTcyNzlcdTZiOGFcdTU3MTZcdTc5M2EiLGh0bWw6e3BhdGg6ImZhY2VzIix0YWJsZTpbW1siI2dvb2QyIyIsIlRodW1iVXAiXSxbIiNiYWQjIiwiVGh1bWJEb3duIl0sWyJbaW1nXS9mYWNlcy9zdXJwcmlzZTIuZ2lmWy9pbWddIiwic3VycHJpc2UyIl0sWyJbaW1nXS9mYWNlcy9iZWVyLmdpZlsvaW1nXSIsImJlZXIiXV1dfX1dOyFmdW5jdGlvbihiLGMpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWIuZG9jdW1lbnQ/YyhiLCEwKTpmdW5jdGlvbihiKXtpZighYi5kb2N1bWVudCl0aHJvdyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBjKGIpfTpjKGIpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihiLApjKXtmdW5jdGlvbiBkKGEpe3ZhciBlPWEubGVuZ3RoLGs9Zi50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1rfHxmLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZlPyEwOiJhcnJheSI9PT1rfHwwPT09ZXx8Im51bWJlciI9PXR5cGVvZiBlJiYwPGUmJmUtMSBpbiBhfWZ1bmN0aW9uIGgoYSxlLGspe2lmKGYuaXNGdW5jdGlvbihlKSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxmKXtyZXR1cm4hIWUuY2FsbChhLGYsYSkhPT1rfSk7aWYoZS5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1lIT09a30pO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoR2IudGVzdChlKSlyZXR1cm4gZi5maWx0ZXIoZSxhLGspO2U9Zi5maWx0ZXIoZSxhKX1yZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIDA8PWYuaW5BcnJheShhLGUpIT09a30pfWZ1bmN0aW9uIG0oYSxlKXtkbyBhPWFbZV07d2hpbGUoYSYmMSE9PWEubm9kZVR5cGUpO3JldHVybiBhfQpmdW5jdGlvbiBxKGEpe3ZhciBlPWViW2FdPXt9O3JldHVybiBmLmVhY2goYS5tYXRjaChRKXx8W10sZnVuY3Rpb24oYSxmKXtlW2ZdPSEwfSksZX1mdW5jdGlvbiBuKCl7eC5hZGRFdmVudExpc3RlbmVyPyh4LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHAsITEpLGIucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIscCwhMSkpOih4LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHApLGIuZGV0YWNoRXZlbnQoIm9ubG9hZCIscCkpfWZ1bmN0aW9uIHAoKXsoeC5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09eC5yZWFkeVN0YXRlKSYmKG4oKSxmLnJlYWR5KCkpfWZ1bmN0aW9uIEIoYSxlLGspe2lmKHZvaWQgMD09PWsmJjE9PT1hLm5vZGVUeXBlKXt2YXIgcj0iZGF0YS0iK2UucmVwbGFjZShIYiwiLSQxIikudG9Mb3dlckNhc2UoKTtpZihrPWEuZ2V0QXR0cmlidXRlKHIpLCJzdHJpbmciPT10eXBlb2Ygayl7dHJ5e2s9CiJ0cnVlIj09PWs/ITA6ImZhbHNlIj09PWs/ITE6Im51bGwiPT09az9udWxsOitrKyIiPT09az8razpJYi50ZXN0KGspP2YucGFyc2VKU09OKGspOmt9Y2F0Y2goYil7fWYuZGF0YShhLGUsayl9ZWxzZSBrPXZvaWQgMH1yZXR1cm4ga31mdW5jdGlvbiB3KGEpe2Zvcih2YXIgZSBpbiBhKWlmKCgiZGF0YSIhPT1lfHwhZi5pc0VtcHR5T2JqZWN0KGFbZV0pKSYmInRvSlNPTiIhPT1lKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHkoYSxlLGsscil7aWYoZi5hY2NlcHREYXRhKGEpKXt2YXIgYixjLGQ9Zi5leHBhbmRvLGc9YS5ub2RlVHlwZSxsPWc/Zi5jYWNoZTphLGg9Zz9hW2RdOmFbZF0mJmQ7aWYoaCYmbFtoXSYmKHJ8fGxbaF0uZGF0YSl8fHZvaWQgMCE9PWt8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gaHx8KGg9Zz9hW2RdPWphLnBvcCgpfHxmLmd1aWQrKzpkKSxsW2hdfHwobFtoXT1nP3t9Ont0b0pTT046Zi5ub29wfSksKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09CnR5cGVvZiBlKSYmKHI/bFtoXT1mLmV4dGVuZChsW2hdLGUpOmxbaF0uZGF0YT1mLmV4dGVuZChsW2hdLmRhdGEsZSkpLGM9bFtoXSxyfHwoYy5kYXRhfHwoYy5kYXRhPXt9KSxjPWMuZGF0YSksdm9pZCAwIT09ayYmKGNbZi5jYW1lbENhc2UoZSldPWspLCJzdHJpbmciPT10eXBlb2YgZT8oYj1jW2VdLG51bGw9PWImJihiPWNbZi5jYW1lbENhc2UoZSldKSk6Yj1jLGJ9fWZ1bmN0aW9uIEooYSxlLGspe2lmKGYuYWNjZXB0RGF0YShhKSl7dmFyIHIsYixjPWEubm9kZVR5cGUsZD1jP2YuY2FjaGU6YSxnPWM/YVtmLmV4cGFuZG9dOmYuZXhwYW5kbztpZihkW2ddKXtpZihlJiYocj1rP2RbZ106ZFtnXS5kYXRhKSl7Zi5pc0FycmF5KGUpP2U9ZS5jb25jYXQoZi5tYXAoZSxmLmNhbWVsQ2FzZSkpOmUgaW4gcj9lPVtlXTooZT1mLmNhbWVsQ2FzZShlKSxlPWUgaW4gcj9bZV06ZS5zcGxpdCgiICIpKTtmb3IoYj1lLmxlbmd0aDtiLS07KWRlbGV0ZSByW2VbYl1dO2lmKGs/IXcocik6IWYuaXNFbXB0eU9iamVjdChyKSlyZXR1cm59KGt8fAooZGVsZXRlIGRbZ10uZGF0YSx3KGRbZ10pKSkmJihjP2YuY2xlYW5EYXRhKFthXSwhMCk6cy5kZWxldGVFeHBhbmRvfHxkIT1kLndpbmRvdz9kZWxldGUgZFtnXTpkW2ddPW51bGwpfX19ZnVuY3Rpb24gRCgpe3JldHVybiEwfWZ1bmN0aW9uIEYoKXtyZXR1cm4hMX1mdW5jdGlvbiBBKCl7dHJ5e3JldHVybiB4LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1mdW5jdGlvbiB1KGEpe3ZhciBlPWZiLnNwbGl0KCJ8Iik7YT1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihhLmNyZWF0ZUVsZW1lbnQpZm9yKDtlLmxlbmd0aDspYS5jcmVhdGVFbGVtZW50KGUucG9wKCkpO3JldHVybiBhfWZ1bmN0aW9uIHQoYSxlKXt2YXIgayxyLGI9MCxjPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Vz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGV8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PVc/YS5xdWVyeVNlbGVjdG9yQWxsKGV8fCIqIik6dm9pZCAwO2lmKCFjKWZvcihjPQpbXSxrPWEuY2hpbGROb2Rlc3x8YTtudWxsIT0ocj1rW2JdKTtiKyspIWV8fGYubm9kZU5hbWUocixlKT9jLnB1c2gocik6Zi5tZXJnZShjLHQocixlKSk7cmV0dXJuIHZvaWQgMD09PWV8fGUmJmYubm9kZU5hbWUoYSxlKT9mLm1lcmdlKFthXSxjKTpjfWZ1bmN0aW9uIEgoYSl7VGEudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHYoYSxlKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJsZSIpJiZmLm5vZGVOYW1lKDExIT09ZS5ub2RlVHlwZT9lOmUuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIE8oYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWYuZmluZC5hdHRyKGEsInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIFIoYSl7dmFyIGU9S2IuZXhlYyhhLnR5cGUpO3JldHVybiBlPwphLnR5cGU9ZVsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gWShhLGUpe2Zvcih2YXIgayxyPTA7bnVsbCE9KGs9YVtyXSk7cisrKWYuX2RhdGEoaywiZ2xvYmFsRXZhbCIsIWV8fGYuX2RhdGEoZVtyXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBLKGEsZSl7aWYoMT09PWUubm9kZVR5cGUmJmYuaGFzRGF0YShhKSl7dmFyIGsscixiO3I9Zi5fZGF0YShhKTt2YXIgYz1mLl9kYXRhKGUsciksZD1yLmV2ZW50cztpZihkKWZvcihrIGluIGRlbGV0ZSBjLmhhbmRsZSxjLmV2ZW50cz17fSxkKWZvcihyPTAsYj1kW2tdLmxlbmd0aDtiPnI7cisrKWYuZXZlbnQuYWRkKGUsayxkW2tdW3JdKTtjLmRhdGEmJihjLmRhdGE9Zi5leHRlbmQoe30sYy5kYXRhKSl9fWZ1bmN0aW9uIGFhKGEsZSl7dmFyIGsscj1mKGUuY3JlYXRlRWxlbWVudChhKSkuYXBwZW5kVG8oZS5ib2R5KSxjPWIuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihrPWIuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoclswXSkpPwprLmRpc3BsYXk6Zi5jc3MoclswXSwiZGlzcGxheSIpO3JldHVybiByLmRldGFjaCgpLGN9ZnVuY3Rpb24gdmEoYSl7dmFyIGU9eCxrPWdiW2FdO3JldHVybiBrfHwoaz1hYShhLGUpLCJub25lIiE9PWsmJmt8fChsYT0obGF8fGYoIlx4M2NpZnJhbWUgZnJhbWVib3JkZXJceDNkJzAnIHdpZHRoXHgzZCcwJyBoZWlnaHRceDNkJzAnL1x4M2UiKSkuYXBwZW5kVG8oZS5kb2N1bWVudEVsZW1lbnQpLGU9KGxhWzBdLmNvbnRlbnRXaW5kb3d8fGxhWzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsZS53cml0ZSgpLGUuY2xvc2UoKSxrPWFhKGEsZSksbGEuZGV0YWNoKCkpLGdiW2FdPWspLGt9ZnVuY3Rpb24gYmEoYSxlKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7dmFyIGs9YSgpO2lmKG51bGwhPWspcmV0dXJuIGs/dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PWUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fWZ1bmN0aW9uIEdhKGEsZSl7aWYoZSBpbiBhKXJldHVybiBlO2Zvcih2YXIgaz0KZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLGY9ZSxiPWhiLmxlbmd0aDtiLS07KWlmKGU9aGJbYl0rayxlIGluIGEpcmV0dXJuIGU7cmV0dXJuIGZ9ZnVuY3Rpb24gQWEoYSxlKXtmb3IodmFyIGsscixiLGM9W10sZD0wLGc9YS5sZW5ndGg7Zz5kO2QrKylyPWFbZF0sci5zdHlsZSYmKGNbZF09Zi5fZGF0YShyLCJvbGRkaXNwbGF5Iiksaz1yLnN0eWxlLmRpc3BsYXksZT8oY1tkXXx8Im5vbmUiIT09a3x8KHIuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1yLnN0eWxlLmRpc3BsYXkmJndhKHIpJiYoY1tkXT1mLl9kYXRhKHIsIm9sZGRpc3BsYXkiLHZhKHIubm9kZU5hbWUpKSkpOihiPXdhKHIpLChrJiYibm9uZSIhPT1rfHwhYikmJmYuX2RhdGEociwib2xkZGlzcGxheSIsYj9rOmYuY3NzKHIsImRpc3BsYXkiKSkpKTtmb3IoZD0wO2c+ZDtkKyspcj1hW2RdLHIuc3R5bGUmJihlJiYibm9uZSIhPT1yLnN0eWxlLmRpc3BsYXkmJiIiIT09ci5zdHlsZS5kaXNwbGF5fHwoci5zdHlsZS5kaXNwbGF5PQplP2NbZF18fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIGliKGEsZSxrKXtyZXR1cm4oYT1NYi5leGVjKGUpKT9NYXRoLm1heCgwLGFbMV0tKGt8fDApKSsoYVsyXXx8InB4Iik6ZX1mdW5jdGlvbiBCYShhLGUsayxyLGIpe2U9az09PShyPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09ZT8xOjA7Zm9yKHZhciBjPTA7ND5lO2UrPTIpIm1hcmdpbiI9PT1rJiYoYys9Zi5jc3MoYSxrK2thW2VdLCEwLGIpKSxyPygiY29udGVudCI9PT1rJiYoYy09Zi5jc3MoYSwicGFkZGluZyIra2FbZV0sITAsYikpLCJtYXJnaW4iIT09ayYmKGMtPWYuY3NzKGEsImJvcmRlciIra2FbZV0rIldpZHRoIiwhMCxiKSkpOihjKz1mLmNzcyhhLCJwYWRkaW5nIitrYVtlXSwhMCxiKSwicGFkZGluZyIhPT1rJiYoYys9Zi5jc3MoYSwiYm9yZGVyIitrYVtlXSsiV2lkdGgiLCEwLGIpKSk7cmV0dXJuIGN9ZnVuY3Rpb24gQ2EoYSxlLGspe3ZhciBiPSEwLGM9IndpZHRoIj09PWU/YS5vZmZzZXRXaWR0aDoKYS5vZmZzZXRIZWlnaHQsZD1lYShhKSxnPXMuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1mLmNzcyhhLCJib3hTaXppbmciLCExLGQpO2lmKDA+PWN8fG51bGw9PWMpe2lmKGM9bWEoYSxlLGQpLCgwPmN8fG51bGw9PWMpJiYoYz1hLnN0eWxlW2VdKSxIYS50ZXN0KGMpKXJldHVybiBjO2I9ZyYmKHMuYm94U2l6aW5nUmVsaWFibGUoKXx8Yz09PWEuc3R5bGVbZV0pO2M9cGFyc2VGbG9hdChjKXx8MH1yZXR1cm4gYytCYShhLGUsa3x8KGc/ImJvcmRlciI6ImNvbnRlbnQiKSxiLGQpKyJweCJ9ZnVuY3Rpb24gRShhLGUsayxmLGIpe3JldHVybiBuZXcgRS5wcm90b3R5cGUuaW5pdChhLGUsayxmLGIpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3NhPXZvaWQgMH0pLHNhPWYubm93KCl9ZnVuY3Rpb24gUChhLGUpe3ZhciBrLGY9e2hlaWdodDphfSxiPTA7Zm9yKGU9ZT8xOjA7ND5iO2IrPTItZSlrPWthW2JdLGZbIm1hcmdpbiIra109ZlsicGFkZGluZyIrCmtdPWE7cmV0dXJuIGUmJihmLm9wYWNpdHk9Zi53aWR0aD1hKSxmfWZ1bmN0aW9uIFUoYSxlLGspe2Zvcih2YXIgZixiPShEYVtlXXx8W10pLmNvbmNhdChEYVsiKiJdKSxjPTAsZD1iLmxlbmd0aDtkPmM7YysrKWlmKGY9YltjXS5jYWxsKGssZSxhKSlyZXR1cm4gZn1mdW5jdGlvbiBuYShhLGUpe3ZhciBrLGIsYyxkLGc7Zm9yKGsgaW4gYSlpZihiPWYuY2FtZWxDYXNlKGspLGM9ZVtiXSxkPWFba10sZi5pc0FycmF5KGQpJiYoYz1kWzFdLGQ9YVtrXT1kWzBdKSxrIT09YiYmKGFbYl09ZCxkZWxldGUgYVtrXSksZz1mLmNzc0hvb2tzW2JdLGcmJiJleHBhbmQiaW4gZylmb3IoayBpbiBkPWcuZXhwYW5kKGQpLGRlbGV0ZSBhW2JdLGQpayBpbiBhfHwoYVtrXT1kW2tdLGVba109Yyk7ZWxzZSBlW2JdPWN9ZnVuY3Rpb24gRWEoYSxlLGspe3ZhciBiLGM9MCxkPUlhLmxlbmd0aCxnPWYuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgbC5lbGVtfSksbD1mdW5jdGlvbigpe2lmKGIpcmV0dXJuITE7CmZvcih2YXIgZT1zYXx8RygpLGU9TWF0aC5tYXgoMCxoLnN0YXJ0VGltZStoLmR1cmF0aW9uLWUpLGs9MS0oZS9oLmR1cmF0aW9ufHwwKSxmPTAsYz1oLnR3ZWVucy5sZW5ndGg7Yz5mO2YrKyloLnR3ZWVuc1tmXS5ydW4oayk7cmV0dXJuIGcubm90aWZ5V2l0aChhLFtoLGssZV0pLDE+ayYmYz9lOihnLnJlc29sdmVXaXRoKGEsW2hdKSwhMSl9LGg9Zy5wcm9taXNlKHtlbGVtOmEscHJvcHM6Zi5leHRlbmQoe30sZSksb3B0czpmLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fX0sayksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOmssc3RhcnRUaW1lOnNhfHxHKCksZHVyYXRpb246ay5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oZSxrKXt2YXIgYj1mLlR3ZWVuKGEsaC5vcHRzLGUsayxoLm9wdHMuc3BlY2lhbEVhc2luZ1tlXXx8aC5vcHRzLmVhc2luZyk7cmV0dXJuIGgudHdlZW5zLnB1c2goYiksYn0sc3RvcDpmdW5jdGlvbihlKXt2YXIgaz0KMCxmPWU/aC50d2VlbnMubGVuZ3RoOjA7aWYoYilyZXR1cm4gdGhpcztmb3IoYj0hMDtmPms7aysrKWgudHdlZW5zW2tdLnJ1bigxKTtyZXR1cm4gZT9nLnJlc29sdmVXaXRoKGEsW2gsZV0pOmcucmVqZWN0V2l0aChhLFtoLGVdKSx0aGlzfX0pO2s9aC5wcm9wcztmb3IobmEoayxoLm9wdHMuc3BlY2lhbEVhc2luZyk7ZD5jO2MrKylpZihlPUlhW2NdLmNhbGwoaCxhLGssaC5vcHRzKSlyZXR1cm4gZTtyZXR1cm4gZi5tYXAoayxVLGgpLGYuaXNGdW5jdGlvbihoLm9wdHMuc3RhcnQpJiZoLm9wdHMuc3RhcnQuY2FsbChhLGgpLGYuZngudGltZXIoZi5leHRlbmQobCx7ZWxlbTphLGFuaW06aCxxdWV1ZTpoLm9wdHMucXVldWV9KSksaC5wcm9ncmVzcyhoLm9wdHMucHJvZ3Jlc3MpLmRvbmUoaC5vcHRzLmRvbmUsaC5vcHRzLmNvbXBsZXRlKS5mYWlsKGgub3B0cy5mYWlsKS5hbHdheXMoaC5vcHRzLmFsd2F5cyl9ZnVuY3Rpb24gSmEoYSl7cmV0dXJuIGZ1bmN0aW9uKGUsayl7InN0cmluZyIhPQp0eXBlb2YgZSYmKGs9ZSxlPSIqIik7dmFyIGIsYz0wLGQ9ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKFEpfHxbXTtpZihmLmlzRnVuY3Rpb24oaykpZm9yKDtiPWRbYysrXTspIisiPT09Yi5jaGFyQXQoMCk/KGI9Yi5zbGljZSgxKXx8IioiLChhW2JdPWFbYl18fFtdKS51bnNoaWZ0KGspKTooYVtiXT1hW2JdfHxbXSkucHVzaChrKX19ZnVuY3Rpb24gWihhLGUsayxiKXtmdW5jdGlvbiBjKGgpe3ZhciBsO3JldHVybiBkW2hdPSEwLGYuZWFjaChhW2hdfHxbXSxmdW5jdGlvbihhLGYpe3ZhciBoPWYoZSxrLGIpO3JldHVybiJzdHJpbmciIT10eXBlb2YgaHx8Z3x8ZFtoXT9nPyEobD1oKTp2b2lkIDA6KGUuZGF0YVR5cGVzLnVuc2hpZnQoaCksYyhoKSwhMSl9KSxsfXZhciBkPXt9LGc9YT09PVVhO3JldHVybiBjKGUuZGF0YVR5cGVzWzBdKXx8IWRbIioiXSYmYygiKiIpfWZ1bmN0aW9uIHlhKGEsZSl7dmFyIGssYixjPWYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYiBpbiBlKXZvaWQgMCE9PQplW2JdJiYoKGNbYl0/YTprfHwoaz17fSkpW2JdPWVbYl0pO3JldHVybiBrJiZmLmV4dGVuZCghMCxhLGspLGF9ZnVuY3Rpb24gemEoYSxlLGssYil7dmFyIGM7aWYoZi5pc0FycmF5KGUpKWYuZWFjaChlLGZ1bmN0aW9uKGUsZil7a3x8TmIudGVzdChhKT9iKGEsZik6emEoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZj9lOiIiKSsiXSIsZixrLGIpfSk7ZWxzZSBpZihrfHwib2JqZWN0IiE9PWYudHlwZShlKSliKGEsZSk7ZWxzZSBmb3IoYyBpbiBlKXphKGErIlsiK2MrIl0iLGVbY10sayxiKX1mdW5jdGlvbiBkYSgpe3RyeXtyZXR1cm4gbmV3IGIuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYSl7fX1mdW5jdGlvbiAkKGEpe3JldHVybiBmLmlzV2luZG93KGEpP2E6OT09PWEubm9kZVR5cGU/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9dmFyIGphPVtdLFM9amEuc2xpY2UsaWE9amEuY29uY2F0LFZhPWphLnB1c2gsamI9amEuaW5kZXhPZixLYT17fSxTYT1LYS50b1N0cmluZywKZmE9S2EuaGFzT3duUHJvcGVydHkscz17fSxmPWZ1bmN0aW9uKGEsZSl7cmV0dXJuIG5ldyBmLmZuLmluaXQoYSxlKX0sT2I9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLFBiPS9eLW1zLS8sUWI9Ly0oW1xkYS16XSkvZ2ksUmI9ZnVuY3Rpb24oYSxlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfTtmLmZuPWYucHJvdG90eXBlPXtqcXVlcnk6IjEuMTEuMiIsY29uc3RydWN0b3I6ZixzZWxlY3RvcjoiIixsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIFMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hPzA+YT90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNbYV06Uy5jYWxsKHRoaXMpfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSl7YT1mLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYS5wcmV2T2JqZWN0PXRoaXMsYS5jb250ZXh0PXRoaXMuY29udGV4dCxhfSxlYWNoOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGYuZWFjaCh0aGlzLAphLGUpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYubWFwKHRoaXMsZnVuY3Rpb24oZSxrKXtyZXR1cm4gYS5jYWxsKGUsayxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihhKXt2YXIgZT10aGlzLmxlbmd0aDthPSthKygwPmE/ZTowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9YSYmZT5hP1t0aGlzW2FdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6VmEsc29ydDpqYS5zb3J0LHNwbGljZTpqYS5zcGxpY2V9O2YuZXh0ZW5kPWYuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsZSxrLGIsYyxkLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsbD0KYXJndW1lbnRzLmxlbmd0aCxtPSExOyJib29sZWFuIj09dHlwZW9mIGcmJihtPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyk7Im9iamVjdCI9PXR5cGVvZiBnfHxmLmlzRnVuY3Rpb24oZyl8fChnPXt9KTtmb3IoaD09PWwmJihnPXRoaXMsaC0tKTtsPmg7aCsrKWlmKG51bGwhPShjPWFyZ3VtZW50c1toXSkpZm9yKGIgaW4gYylhPWdbYl0saz1jW2JdLGchPT1rJiYobSYmayYmKGYuaXNQbGFpbk9iamVjdChrKXx8KGU9Zi5pc0FycmF5KGspKSk/KGU/KGU9ITEsZD1hJiZmLmlzQXJyYXkoYSk/YTpbXSk6ZD1hJiZmLmlzUGxhaW5PYmplY3QoYSk/YTp7fSxnW2JdPWYuZXh0ZW5kKG0sZCxrKSk6dm9pZCAwIT09ayYmKGdbYl09aykpO3JldHVybiBnfTtmLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoIjEuMTEuMiIrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBFcnJvcihhKTt9LG5vb3A6ZnVuY3Rpb24oKXt9LAppc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PT1mLnR5cGUoYSl9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuImFycmF5Ij09PWYudHlwZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIWYuaXNBcnJheShhKSYmMDw9YS1wYXJzZUZsb2F0KGEpKzF9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBlIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGU7aWYoIWF8fCJvYmplY3QiIT09Zi50eXBlKGEpfHxhLm5vZGVUeXBlfHxmLmlzV2luZG93KGEpKXJldHVybiExO3RyeXtpZihhLmNvbnN0cnVjdG9yJiYhZmEuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhZmEuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGspe3JldHVybiExfWlmKHMub3duTGFzdClmb3IoZSBpbiBhKXJldHVybiBmYS5jYWxsKGEsCmUpO2ZvcihlIGluIGEpO3JldHVybiB2b2lkIDA9PT1lfHxmYS5jYWxsKGEsZSl9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP0thW1NhLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihhKXthJiZmLnRyaW0oYSkmJihiLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGEpe2IuZXZhbC5jYWxsKGIsYSl9KShhKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoUGIsIm1zLSIpLnJlcGxhY2UoUWIsUmIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGUpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxlLGspe3ZhciBmLGI9MCxjPWEubGVuZ3RoLGc9ZChhKTtpZihrKWlmKGcpZm9yKDtjPmImJihmPWUuYXBwbHkoYVtiXSxrKSwhMSE9PWYpO2IrKyk7ZWxzZSBmb3IoYiBpbiBhKXtpZihmPQplLmFwcGx5KGFbYl0sayksITE9PT1mKWJyZWFrfWVsc2UgaWYoZylmb3IoO2M+YiYmKGY9ZS5jYWxsKGFbYl0sYixhW2JdKSwhMSE9PWYpO2IrKyk7ZWxzZSBmb3IoYiBpbiBhKWlmKGY9ZS5jYWxsKGFbYl0sYixhW2JdKSwhMT09PWYpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UoT2IsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxlKXt2YXIgaz1lfHxbXTtyZXR1cm4gbnVsbCE9YSYmKGQoT2JqZWN0KGEpKT9mLm1lcmdlKGssInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpWYS5jYWxsKGssYSkpLGt9LGluQXJyYXk6ZnVuY3Rpb24oYSxlLGspe3ZhciBmO2lmKGUpe2lmKGpiKXJldHVybiBqYi5jYWxsKGUsYSxrKTtmPWUubGVuZ3RoO2ZvcihrPWs/MD5rP01hdGgubWF4KDAsZitrKTprOjA7Zj5rO2srKylpZihrIGluIGUmJmVba109PT1hKXJldHVybiBrfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGUpe2Zvcih2YXIgaz0KK2UubGVuZ3RoLGY9MCxiPWEubGVuZ3RoO2s+ZjspYVtiKytdPWVbZisrXTtpZihrIT09aylmb3IoO3ZvaWQgMCE9PWVbZl07KWFbYisrXT1lW2YrK107cmV0dXJuIGEubGVuZ3RoPWIsYX0sZ3JlcDpmdW5jdGlvbihhLGUsayl7Zm9yKHZhciBmPVtdLGI9MCxjPWEubGVuZ3RoLGQ9IWs7Yz5iO2IrKylrPSFlKGFbYl0sYiksayE9PWQmJmYucHVzaChhW2JdKTtyZXR1cm4gZn0sbWFwOmZ1bmN0aW9uKGEsZSxrKXt2YXIgZixiPTAsYz1hLmxlbmd0aCxnPVtdO2lmKGQoYSkpZm9yKDtjPmI7YisrKWY9ZShhW2JdLGIsayksbnVsbCE9ZiYmZy5wdXNoKGYpO2Vsc2UgZm9yKGIgaW4gYSlmPWUoYVtiXSxiLGspLG51bGwhPWYmJmcucHVzaChmKTtyZXR1cm4gaWEuYXBwbHkoW10sZyl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGUpe3ZhciBrLGIsYztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihjPWFbZV0sZT1hLGE9YyksZi5pc0Z1bmN0aW9uKGEpPyhrPVMuY2FsbChhcmd1bWVudHMsCjIpLGI9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShlfHx0aGlzLGsuY29uY2F0KFMuY2FsbChhcmd1bWVudHMpKSl9LGIuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxmLmd1aWQrKyxiKTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDpzfSk7Zi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsZSl7S2FbIltvYmplY3QgIitlKyJdIl09ZS50b0xvd2VyQ2FzZSgpfSk7dmFyIHRhPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGUoYSxlLGYsayl7dmFyIGIsYyxyLGQsZztpZigoZT9lLm93bmVyRG9jdW1lbnR8fGU6WikhPT1JJiZ2KGUpLGU9ZXx8SSxmPWZ8fFtdLGQ9ZS5ub2RlVHlwZSwic3RyaW5nIiE9dHlwZW9mIGF8fCFhfHwxIT09ZCYmOSE9PWQmJjExIT09ZClyZXR1cm4gZjtpZighayYmWSl7aWYoMTEhPT1kJiYoYj1pYS5leGVjKGEpKSlpZihyPQpiWzFdKWlmKDk9PT1kKXtpZihjPWUuZ2V0RWxlbWVudEJ5SWQociksIWN8fCFjLnBhcmVudE5vZGUpcmV0dXJuIGY7aWYoYy5pZD09PXIpcmV0dXJuIGYucHVzaChjKSxmfWVsc2V7aWYoZS5vd25lckRvY3VtZW50JiYoYz1lLm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocikpJiZLKGUsYykmJmMuaWQ9PT1yKXJldHVybiBmLnB1c2goYyksZn1lbHNle2lmKGJbMl0pcmV0dXJuIFMuYXBwbHkoZixlLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxmO2lmKChyPWJbM10pJiZzLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIFMuYXBwbHkoZixlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUocikpLGZ9aWYocy5xc2EmJighQ3x8IUMudGVzdChhKSkpe2lmKGM9Yj1NLHI9ZSxnPTEhPT1kJiZhLDE9PT1kJiYib2JqZWN0IiE9PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7ZD1GKGEpOyhiPWUuZ2V0QXR0cmlidXRlKCJpZCIpKT9jPWIucmVwbGFjZShHYSwiXFwkXHgyNiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsCmMpO2M9IltpZFx4M2QnIitjKyInXSAiO2ZvcihyPWQubGVuZ3RoO3ItLTspZFtyXT1jK3AoZFtyXSk7cj1sYS50ZXN0KGEpJiZuKGUucGFyZW50Tm9kZSl8fGU7Zz1kLmpvaW4oIiwiKX1pZihnKXRyeXtyZXR1cm4gUy5hcHBseShmLHIucXVlcnlTZWxlY3RvckFsbChnKSksZn1jYXRjaCh6KXt9ZmluYWxseXtifHxlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBSKGEucmVwbGFjZShjYSwiJDEiKSxlLGYsayl9ZnVuY3Rpb24gZigpe2Z1bmN0aW9uIGEoZixrKXtyZXR1cm4gZS5wdXNoKGYrIiAiKT51LmNhY2hlTGVuZ3RoJiZkZWxldGUgYVtlLnNoaWZ0KCldLGFbZisiICJdPWt9dmFyIGU9W107cmV0dXJuIGF9ZnVuY3Rpb24gYihhKXtyZXR1cm4gYVtNXT0hMCxhfWZ1bmN0aW9uIGMoYSl7dmFyIGU9SS5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuISFhKGUpfWNhdGNoKGYpe3JldHVybiExfWZpbmFsbHl7ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9fQpmdW5jdGlvbiBkKGEsZSl7Zm9yKHZhciBmPWEuc3BsaXQoInwiKSxrPWEubGVuZ3RoO2stLTspdS5hdHRySGFuZGxlW2Zba11dPWV9ZnVuY3Rpb24gZyhhLGUpe3ZhciBmPWUmJmEsaz1mJiYxPT09YS5ub2RlVHlwZSYmMT09PWUubm9kZVR5cGUmJih+ZS5zb3VyY2VJbmRleHx8emEpLSh+YS5zb3VyY2VJbmRleHx8emEpO2lmKGspcmV0dXJuIGs7aWYoZilmb3IoO2Y9Zi5uZXh0U2libGluZzspaWYoZj09PWUpcmV0dXJuLTE7cmV0dXJuIGE/MTotMX1mdW5jdGlvbiBoKGEpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZlLnR5cGU9PT1hfX1mdW5jdGlvbiBsKGEpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgZj1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1mfHwiYnV0dG9uIj09PWYpJiZlLnR5cGU9PT1hfX1mdW5jdGlvbiBtKGEpe3JldHVybiBiKGZ1bmN0aW9uKGUpe3JldHVybiBlPStlLGIoZnVuY3Rpb24oZiwKayl7Zm9yKHZhciBiLGM9YShbXSxmLmxlbmd0aCxlKSxyPWMubGVuZ3RoO3ItLTspZltiPWNbcl1dJiYoZltiXT0hKGtbYl09ZltiXSkpfSl9KX1mdW5jdGlvbiBuKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9ZnVuY3Rpb24gcSgpe31mdW5jdGlvbiBwKGEpe2Zvcih2YXIgZT0wLGY9YS5sZW5ndGgsaz0iIjtmPmU7ZSsrKWsrPWFbZV0udmFsdWU7cmV0dXJuIGt9ZnVuY3Rpb24gdChhLGUsZil7dmFyIGs9ZS5kaXIsYj1mJiYicGFyZW50Tm9kZSI9PT1rLGM9SmErKztyZXR1cm4gZS5maXJzdD9mdW5jdGlvbihlLGYsYyl7Zm9yKDtlPWVba107KWlmKDE9PT1lLm5vZGVUeXBlfHxiKXJldHVybiBhKGUsZixjKX06ZnVuY3Rpb24oZSxmLHIpe3ZhciBkLGcsej1bZ2EsY107aWYocilmb3IoO2U9ZVtrXTspe2lmKCgxPT09ZS5ub2RlVHlwZXx8YikmJmEoZSxmLHIpKXJldHVybiEwfWVsc2UgZm9yKDtlPWVba107KWlmKDE9PT1lLm5vZGVUeXBlfHwKYil7aWYoZz1lW01dfHwoZVtNXT17fSksKGQ9Z1trXSkmJmRbMF09PT1nYSYmZFsxXT09PWMpcmV0dXJuIHpbMl09ZFsyXTtpZihnW2tdPXoselsyXT1hKGUsZixyKSlyZXR1cm4hMH19fWZ1bmN0aW9uIEUoYSl7cmV0dXJuIDE8YS5sZW5ndGg/ZnVuY3Rpb24oZSxmLGspe2Zvcih2YXIgYj1hLmxlbmd0aDtiLS07KWlmKCFhW2JdKGUsZixrKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB3KGEsZSxmLGssYil7Zm9yKHZhciBjLHI9W10sZD0wLGc9YS5sZW5ndGgsej1udWxsIT1lO2c+ZDtkKyspKGM9YVtkXSkmJighZnx8ZihjLGssYikpJiYoci5wdXNoKGMpLHomJmUucHVzaChkKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gSihhLGYsayxjLGQsZyl7cmV0dXJuIGMmJiFjW01dJiYoYz1KKGMpKSxkJiYhZFtNXSYmKGQ9SihkLGcpKSxiKGZ1bmN0aW9uKGIscixnLHope3ZhciBoLEwsbD1bXSxUPVtdLG09ci5sZW5ndGgsbjtpZighKG49Yikpe249Znx8IioiO2Zvcih2YXIgTj1nLm5vZGVUeXBlPwpbZ106ZyxxPVtdLHhhPTAscD1OLmxlbmd0aDtwPnhhO3hhKyspZShuLE5beGFdLHEpO249cX1uPSFhfHwhYiYmZj9uOncobixsLGEsZyx6KTtOPWs/ZHx8KGI/YTptfHxjKT9bXTpyOm47aWYoayYmayhuLE4sZyx6KSxjKWZvcihoPXcoTixUKSxjKGgsW10sZyx6KSxnPWgubGVuZ3RoO2ctLTspKEw9aFtnXSkmJihOW1RbZ11dPSEobltUW2ddXT1MKSk7aWYoYil7aWYoZHx8YSl7aWYoZCl7aD1bXTtmb3IoZz1OLmxlbmd0aDtnLS07KShMPU5bZ10pJiZoLnB1c2gobltnXT1MKTtkKG51bGwsTj1bXSxoLHopfWZvcihnPU4ubGVuZ3RoO2ctLTspKEw9TltnXSkmJi0xPChoPWQ/VihiLEwpOmxbZ10pJiYoYltoXT0hKHJbaF09TCkpfX1lbHNlIE49dyhOPT09cj9OLnNwbGljZShtLE4ubGVuZ3RoKTpOKSxkP2QobnVsbCxyLE4seik6Uy5hcHBseShyLE4pfSl9ZnVuY3Rpb24gRChhKXt2YXIgZSxmLGssYj1hLmxlbmd0aCxjPXUucmVsYXRpdmVbYVswXS50eXBlXTtmPWN8fHUucmVsYXRpdmVbIiAiXTsKZm9yKHZhciByPWM/MTowLGQ9dChmdW5jdGlvbihhKXtyZXR1cm4gYT09PWV9LGYsITApLGc9dChmdW5jdGlvbihhKXtyZXR1cm4tMTxWKGUsYSl9LGYsITApLHo9W2Z1bmN0aW9uKGEsZixrKXthPSFjJiYoa3x8ZiE9PXgpfHwoKGU9Zikubm9kZVR5cGU/ZChhLGYsayk6ZyhhLGYsaykpO3JldHVybiBlPW51bGwsYX1dO2I+cjtyKyspaWYoZj11LnJlbGF0aXZlW2Fbcl0udHlwZV0pej1bdChFKHopLGYpXTtlbHNle2lmKGY9dS5maWx0ZXJbYVtyXS50eXBlXS5hcHBseShudWxsLGFbcl0ubWF0Y2hlcyksZltNXSl7Zm9yKGs9KytyO2I+ayYmIXUucmVsYXRpdmVbYVtrXS50eXBlXTtrKyspO3JldHVybiBKKDE8ciYmRSh6KSwxPHImJnAoYS5zbGljZSgwLHItMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW3ItMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShjYSwiJDEiKSxmLGs+ciYmRChhLnNsaWNlKHIsaykpLGI+ayYmRChhPWEuc2xpY2UoaykpLGI+ayYmcChhKSl9ei5wdXNoKGYpfXJldHVybiBFKHopfQpmdW5jdGlvbiBIKGEsZil7dmFyIGs9MDxmLmxlbmd0aCxjPTA8YS5sZW5ndGgsZD1mdW5jdGlvbihiLHIsZCxnLHope3ZhciBoLEwsbCxUPTAsbT0iMCIsTj1iJiZbXSxuPVtdLHE9eCx4YT1ifHxjJiZ1LmZpbmQuVEFHKCIqIix6KSxwPWdhKz1udWxsPT1xPzE6TWF0aC5yYW5kb20oKXx8MC4xLEpiPXhhLmxlbmd0aDtmb3IoeiYmKHg9ciE9PUkmJnIpO20hPT1KYiYmbnVsbCE9KGg9eGFbbV0pO20rKyl7aWYoYyYmaCl7Zm9yKEw9MDtsPWFbTCsrXTspaWYobChoLHIsZCkpe2cucHVzaChoKTticmVha316JiYoZ2E9cCl9ayYmKChoPSFsJiZoKSYmVC0tLGImJk4ucHVzaChoKSl9aWYoVCs9bSxrJiZtIT09VCl7Zm9yKEw9MDtsPWZbTCsrXTspbChOLG4scixkKTtpZihiKXtpZigwPFQpZm9yKDttLS07KU5bbV18fG5bbV18fChuW21dPWphLmNhbGwoZykpO249dyhuKX1TLmFwcGx5KGcsbik7eiYmIWImJjA8bi5sZW5ndGgmJjE8VCtmLmxlbmd0aCYmZS51bmlxdWVTb3J0KGcpfXJldHVybiB6JiYKKGdhPXAseD1xKSxOfTtyZXR1cm4gaz9iKGQpOmR9dmFyIHkscyx1LEcsQixGLEEsUix4LE8sUCx2LEksVSxZLEMsbmEsTGEsSyxNPSJzaXp6bGUiKzEqbmV3IERhdGUsWj1hLmRvY3VtZW50LGdhPTAsSmE9MCxFYT1mKCkseWE9ZigpLFg9ZigpLFc9ZnVuY3Rpb24oYSxlKXtyZXR1cm4gYT09PWUmJihQPSEwKSwwfSx6YT0tMjE0NzQ4MzY0OCxhYT17fS5oYXNPd25Qcm9wZXJ0eSxRPVtdLGphPVEucG9wLExiPVEucHVzaCxTPVEucHVzaCxoYT1RLnNsaWNlLFY9ZnVuY3Rpb24oYSxlKXtmb3IodmFyIGY9MCxrPWEubGVuZ3RoO2s+ZjtmKyspaWYoYVtmXT09PWUpcmV0dXJuIGY7cmV0dXJuLTF9LGJhPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIucmVwbGFjZSgidyIsIncjIiksa2E9IlxcW1tcXHgyMFxcdFxcclxcblxcZl0qKCg/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrKSg/OltcXHgyMFxcdFxcclxcblxcZl0qKFsqXiR8IX5dP1x4M2QpW1xceDIwXFx0XFxyXFxuXFxmXSooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIisKYmErIikpfClbXFx4MjBcXHRcXHJcXG5cXGZdKlxcXSIsZWE9IjooKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSspKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitrYSsiKSopfC4qKVxcKXwpIixtYT1SZWdFeHAoIltcXHgyMFxcdFxcclxcblxcZl0rIiwiZyIpLGNhPVJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0rfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKilbXFx4MjBcXHRcXHJcXG5cXGZdKyQiLCJnIikscWE9L15bXHgyMFx0XHJcblxmXSosW1x4MjBcdFxyXG5cZl0qLyxyYT0vXltceDIwXHRcclxuXGZdKihbPit+XXxbXHgyMFx0XHJcblxmXSlbXHgyMFx0XHJcblxmXSovLGRhPVJlZ0V4cCgiXHgzZFtcXHgyMFxcdFxcclxcblxcZl0qKFteXFxdJ1wiXSo/KVtcXHgyMFxcdFxcclxcblxcZl0qXFxdIiwiZyIpLHZhPVJlZ0V4cChlYSksc2E9UmVnRXhwKCJeIisKYmErIiQiKSxmYT17SUQ6L14jKCg/OlxcLnxbXHctXXxbXlx4MDAtXHhhMF0pKykvLENMQVNTOi9eXC4oKD86XFwufFtcdy1dfFteXHgwMC1ceGEwXSkrKS8sVEFHOlJlZ0V4cCgiXigiKyIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIucmVwbGFjZSgidyIsIncqIikrIikiKSxBVFRSOlJlZ0V4cCgiXiIra2EpLFBTRVVETzpSZWdFeHAoIl4iK2VhKSxDSElMRDpSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKFtcXHgyMFxcdFxcclxcblxcZl0qKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpW1xceDIwXFx0XFxyXFxuXFxmXSooPzooWystXXwpW1xceDIwXFx0XFxyXFxuXFxmXSooXFxkKyl8KSlbXFx4MjBcXHRcXHJcXG5cXGZdKlxcKXwpIiwiaSIpLGJvb2w6UmVnRXhwKCJeKD86Y2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQpJCIsCiJpIiksbmVlZHNDb250ZXh0OlJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0qW1x4M2Urfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXChbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzotXFxkKT9cXGQqKVtcXHgyMFxcdFxcclxcblxcZl0qXFwpfCkoP1x4M2RbXi1dfCQpIiwiaSIpfSx0YT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLHVhPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLGlhPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sbGE9L1srfl0vLEdhPS8nfFxcL2csb2E9UmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3woW1xceDIwXFx0XFxyXFxuXFxmXSl8LikiLCJpZyIpLHBhPWZ1bmN0aW9uKGEsZSxmKXthPSIweCIrZS02NTUzNjtyZXR1cm4gYSE9PWF8fGY/ZTowPmE/U3RyaW5nLmZyb21DaGFyQ29kZShhKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGE+PgoxMHw1NTI5NiwxMDIzJmF8NTYzMjApfSxBYT1mdW5jdGlvbigpe3YoKX07dHJ5e1MuYXBwbHkoUT1oYS5jYWxsKFouY2hpbGROb2RlcyksWi5jaGlsZE5vZGVzKSxRW1ouY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKHdhKXtTPXthcHBseTpRLmxlbmd0aD9mdW5jdGlvbihhLGUpe0xiLmFwcGx5KGEsaGEuY2FsbChlKSl9OmZ1bmN0aW9uKGEsZSl7Zm9yKHZhciBmPWEubGVuZ3RoLGs9MDthW2YrK109ZVtrKytdOyk7YS5sZW5ndGg9Zi0xfX19cz1lLnN1cHBvcnQ9e307Qj1lLmlzWE1MPWZ1bmN0aW9uKGEpe3JldHVybihhPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudCk/IkhUTUwiIT09YS5ub2RlTmFtZTohMX07dj1lLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBlLGYsaz1hP2Eub3duZXJEb2N1bWVudHx8YTpaO3JldHVybiBrIT09SSYmOT09PWsubm9kZVR5cGUmJmsuZG9jdW1lbnRFbGVtZW50PyhJPWssVT1rLmRvY3VtZW50RWxlbWVudCwKZj1rLmRlZmF1bHRWaWV3LGYmJmYhPT1mLnRvcCYmKGYuYWRkRXZlbnRMaXN0ZW5lcj9mLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsQWEsITEpOmYuYXR0YWNoRXZlbnQmJmYuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixBYSkpLFk9IUIoaykscy5hdHRyaWJ1dGVzPWMoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSkscy5nZXRFbGVtZW50c0J5VGFnTmFtZT1jKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKGsuY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSkscy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPSQudGVzdChrLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLHMuZ2V0QnlJZD1jKGZ1bmN0aW9uKGEpe3JldHVybiBVLmFwcGVuZENoaWxkKGEpLmlkPU0sIWsuZ2V0RWxlbWVudHNCeU5hbWV8fCFrLmdldEVsZW1lbnRzQnlOYW1lKE0pLmxlbmd0aH0pLApzLmdldEJ5SWQ/KHUuZmluZC5JRD1mdW5jdGlvbihhLGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50QnlJZCYmWSl7dmFyIGY9ZS5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gZiYmZi5wYXJlbnROb2RlP1tmXTpbXX19LHUuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBlPWEucmVwbGFjZShvYSxwYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWV9fSk6KGRlbGV0ZSB1LmZpbmQuSUQsdS5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGU9YS5yZXBsYWNlKG9hLHBhKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuKGE9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkmJmEudmFsdWU9PT1lfX0pLHUuZmluZC5UQUc9cy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT8KZS5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTpzLnFzYT9lLnF1ZXJ5U2VsZWN0b3JBbGwoYSk6dm9pZCAwfTpmdW5jdGlvbihhLGUpe3ZhciBmLGs9W10sYj0wLGM9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTtpZigiKiI9PT1hKXtmb3IoO2Y9Y1tiKytdOykxPT09Zi5ub2RlVHlwZSYmay5wdXNoKGYpO3JldHVybiBrfXJldHVybiBjfSx1LmZpbmQuQ0xBU1M9cy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihhLGUpe3JldHVybiBZP2UuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKTp2b2lkIDB9LG5hPVtdLEM9W10sKHMucXNhPSQudGVzdChrLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGMoZnVuY3Rpb24oYSl7VS5hcHBlbmRDaGlsZChhKS5pbm5lckhUTUw9Ilx4M2NhIGlkXHgzZCciK00rIidceDNlXHgzYy9hXHgzZVx4M2NzZWxlY3QgaWRceDNkJyIrTSsiLVxmXScgbXNhbGxvd2NhcHR1cmVceDNkJydceDNlXHgzY29wdGlvbiBzZWxlY3RlZFx4M2QnJ1x4M2VceDNjL29wdGlvblx4M2VceDNjL3NlbGVjdFx4M2UiOwphLnF1ZXJ5U2VsZWN0b3JBbGwoIlttc2FsbG93Y2FwdHVyZV5ceDNkJyddIikubGVuZ3RoJiZDLnB1c2goIlsqXiRdXHgzZFtcXHgyMFxcdFxcclxcblxcZl0qKD86Jyd8XCJcIikiKTthLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fEMucHVzaCgiXFxbW1xceDIwXFx0XFxyXFxuXFxmXSooPzp2YWx1ZXxjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkiKTthLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH5ceDNkIitNKyItXSIpLmxlbmd0aHx8Qy5wdXNoKCJ+XHgzZCIpO2EucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fEMucHVzaCgiOmNoZWNrZWQiKTthLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitNKyIrKiIpLmxlbmd0aHx8Qy5wdXNoKCIuIy4rWyt+XSIpfSksYyhmdW5jdGlvbihhKXt2YXIgZT0Kay5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Uuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIik7YS5hcHBlbmRDaGlsZChlKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIik7YS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZVx4M2RkXSIpLmxlbmd0aCYmQy5wdXNoKCJuYW1lW1xceDIwXFx0XFxyXFxuXFxmXSpbKl4kfCF+XT9ceDNkIik7YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8Qy5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpO2EucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpO0MucHVzaCgiLC4qOiIpfSkpLChzLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3QoTGE9VS5tYXRjaGVzfHxVLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8VS5tb3pNYXRjaGVzU2VsZWN0b3J8fFUub01hdGNoZXNTZWxlY3Rvcnx8VS5tc01hdGNoZXNTZWxlY3RvcikpJiZjKGZ1bmN0aW9uKGEpe3MuZGlzY29ubmVjdGVkTWF0Y2g9TGEuY2FsbChhLCJkaXYiKTtMYS5jYWxsKGEsIltzIVx4M2QnJ106eCIpOwpuYS5wdXNoKCIhXHgzZCIsZWEpfSksQz1DLmxlbmd0aCYmUmVnRXhwKEMuam9pbigifCIpKSxuYT1uYS5sZW5ndGgmJlJlZ0V4cChuYS5qb2luKCJ8IikpLGU9JC50ZXN0KFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pLEs9ZXx8JC50ZXN0KFUuY29udGFpbnMpP2Z1bmN0aW9uKGEsZSl7dmFyIGY9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxrPWUmJmUucGFyZW50Tm9kZTtyZXR1cm4gYT09PWt8fCEoIWt8fDEhPT1rLm5vZGVUeXBlfHwhKGYuY29udGFpbnM/Zi5jb250YWlucyhrKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGspKSl9OmZ1bmN0aW9uKGEsZSl7aWYoZSlmb3IoO2U9ZS5wYXJlbnROb2RlOylpZihlPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sVz1lP2Z1bmN0aW9uKGEsZSl7aWYoYT09PWUpcmV0dXJuIFA9ITAsMDt2YXIgZj0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjsKcmV0dXJuIGY/ZjooZj0oYS5vd25lckRvY3VtZW50fHxhKT09PShlLm93bmVyRG9jdW1lbnR8fGUpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSk6MSwxJmZ8fCFzLnNvcnREZXRhY2hlZCYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWY/YT09PWt8fGEub3duZXJEb2N1bWVudD09PVomJksoWixhKT8tMTplPT09a3x8ZS5vd25lckRvY3VtZW50PT09WiYmSyhaLGUpPzE6Tz9WKE8sYSktVihPLGUpOjA6NCZmPy0xOjEpfTpmdW5jdGlvbihhLGUpe2lmKGE9PT1lKXJldHVybiBQPSEwLDA7dmFyIGYsYj0wO2Y9YS5wYXJlbnROb2RlO3ZhciBjPWUucGFyZW50Tm9kZSxyPVthXSxkPVtlXTtpZighZnx8IWMpcmV0dXJuIGE9PT1rPy0xOmU9PT1rPzE6Zj8tMTpjPzE6Tz9WKE8sYSktVihPLGUpOjA7aWYoZj09PWMpcmV0dXJuIGcoYSxlKTtmb3IoZj1hO2Y9Zi5wYXJlbnROb2RlOylyLnVuc2hpZnQoZik7Zm9yKGY9ZTtmPWYucGFyZW50Tm9kZTspZC51bnNoaWZ0KGYpO2Zvcig7cltiXT09PQpkW2JdOyliKys7cmV0dXJuIGI/ZyhyW2JdLGRbYl0pOnJbYl09PT1aPy0xOmRbYl09PT1aPzE6MH0sayk6SX07ZS5tYXRjaGVzPWZ1bmN0aW9uKGEsZil7cmV0dXJuIGUoYSxudWxsLG51bGwsZil9O2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsZil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1JJiZ2KGEpLGY9Zi5yZXBsYWNlKGRhLCJceDNkJyQxJ10iKSxzLm1hdGNoZXNTZWxlY3RvciYmWSYmIShuYSYmbmEudGVzdChmKXx8QyYmQy50ZXN0KGYpKSl0cnl7dmFyIGs9TGEuY2FsbChhLGYpO2lmKGt8fHMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4ga31jYXRjaChiKXt9cmV0dXJuIDA8ZShmLEksbnVsbCxbYV0pLmxlbmd0aH07ZS5jb250YWlucz1mdW5jdGlvbihhLGUpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09SSYmdihhKSxLKGEsZSl9O2UuYXR0cj1mdW5jdGlvbihhLGUpeyhhLm93bmVyRG9jdW1lbnR8fAphKSE9PUkmJnYoYSk7dmFyIGY9dS5hdHRySGFuZGxlW2UudG9Mb3dlckNhc2UoKV0sZj1mJiZhYS5jYWxsKHUuYXR0ckhhbmRsZSxlLnRvTG93ZXJDYXNlKCkpP2YoYSxlLCFZKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PWY/ZjpzLmF0dHJpYnV0ZXN8fCFZP2EuZ2V0QXR0cmlidXRlKGUpOihmPWEuZ2V0QXR0cmlidXRlTm9kZShlKSkmJmYuc3BlY2lmaWVkP2YudmFsdWU6bnVsbH07ZS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKTt9O2UudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgZSxmPVtdLGs9MCxiPTA7aWYoUD0hcy5kZXRlY3REdXBsaWNhdGVzLE89IXMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoVyksUCl7Zm9yKDtlPWFbYisrXTspZT09PWFbYl0mJihrPWYucHVzaChiKSk7Zm9yKDtrLS07KWEuc3BsaWNlKGZba10sMSl9cmV0dXJuIE89bnVsbCxhfTtHPWUuZ2V0VGV4dD0KZnVuY3Rpb24oYSl7dmFyIGUsZj0iIixrPTA7aWYoZT1hLm5vZGVUeXBlKWlmKDE9PT1lfHw5PT09ZXx8MTE9PT1lKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWYrPUcoYSl9ZWxzZXtpZigzPT09ZXx8ND09PWUpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2UgZm9yKDtlPWFbaysrXTspZis9RyhlKTtyZXR1cm4gZn07dT1lLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmIsbWF0Y2g6ZmEsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiXHgzZSI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0ucmVwbGFjZShvYSwKcGEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKG9hLHBhKSwiflx4M2QiPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8ZS5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZlLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgZSxmPSFhWzZdJiZhWzJdO3JldHVybiBmYS5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpmJiZ2YS50ZXN0KGYpJiYoZT1GKGYsITApKSYmKGU9Zi5pbmRleE9mKCIpIixmLmxlbmd0aC1lKS1mLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxlKSxhWzJdPWYuc2xpY2UoMCwKZSkpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgZT1hLnJlcGxhY2Uob2EscGEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZX19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBlPUVhW2ErIiAiXTtyZXR1cm4gZXx8KGU9UmVnRXhwKCIoXnxbXFx4MjBcXHRcXHJcXG5cXGZdKSIrYSsiKFtcXHgyMFxcdFxcclxcblxcZl18JCkiKSkmJkVhKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGUudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsZixrKXtyZXR1cm4gZnVuY3Rpb24oYil7Yj1lLmF0dHIoYixhKTtyZXR1cm4gbnVsbD09Yj8iIVx4M2QiPT09CmY6Zj8oYis9IiIsIlx4M2QiPT09Zj9iPT09azoiIVx4M2QiPT09Zj9iIT09azoiXlx4M2QiPT09Zj9rJiYwPT09Yi5pbmRleE9mKGspOiIqXHgzZCI9PT1mP2smJi0xPGIuaW5kZXhPZihrKToiJFx4M2QiPT09Zj9rJiZiLnNsaWNlKC1rLmxlbmd0aCk9PT1rOiJ+XHgzZCI9PT1mPy0xPCgiICIrYi5yZXBsYWNlKG1hLCIgIikrIiAiKS5pbmRleE9mKGspOiJ8XHgzZCI9PT1mP2I9PT1rfHxiLnNsaWNlKDAsay5sZW5ndGgrMSk9PT1rKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGUsZixrLGIpe3ZhciBjPSJudGgiIT09YS5zbGljZSgwLDMpLHI9Imxhc3QiIT09YS5zbGljZSgtNCksZD0ib2YtdHlwZSI9PT1lO3JldHVybiAxPT09ayYmMD09PWI/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGUsZixnKXt2YXIgeixoLEwsbCxUO2Y9YyE9PXI/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIjt2YXIgbT1lLnBhcmVudE5vZGUsbj1kJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Cmc9IWcmJiFkO2lmKG0pe2lmKGMpe2Zvcig7Zjspe2ZvcihoPWU7aD1oW2ZdOylpZihkP2gubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PW46MT09PWgubm9kZVR5cGUpcmV0dXJuITE7VD1mPSJvbmx5Ij09PWEmJiFUJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKFQ9W3I/bS5maXJzdENoaWxkOm0ubGFzdENoaWxkXSxyJiZnKWZvcihnPW1bTV18fChtW01dPXt9KSx6PWdbYV18fFtdLGw9elswXT09PWdhJiZ6WzFdLEw9elswXT09PWdhJiZ6WzJdLGg9bCYmbS5jaGlsZE5vZGVzW2xdO2g9KytsJiZoJiZoW2ZdfHwoTD1sPTApfHxULnBvcCgpOyl7aWYoMT09PWgubm9kZVR5cGUmJisrTCYmaD09PWUpe2dbYV09W2dhLGwsTF07YnJlYWt9fWVsc2UgaWYoZyYmKHo9KGVbTV18fChlW01dPXt9KSlbYV0pJiZ6WzBdPT09Z2EpTD16WzFdO2Vsc2UgZm9yKDsoaD0rK2wmJmgmJmhbZl18fChMPWw9MCl8fFQucG9wKCkpJiYoKGQ/aC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09bjoxIT09aC5ub2RlVHlwZSl8fAohKytMfHwoZyYmKChoW01dfHwoaFtNXT17fSkpW2FdPVtnYSxMXSksaCE9PWUpKTspO3JldHVybiBMLT1iLEw9PT1rfHwwPT09TCVrJiYwPD1ML2t9fX0sUFNFVURPOmZ1bmN0aW9uKGEsZil7dmFyIGssYz11LnBzZXVkb3NbYV18fHUuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxlLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGNbTV0/YyhmKToxPGMubGVuZ3RoPyhrPVthLGEsIiIsZl0sdS5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/YihmdW5jdGlvbihhLGUpe2Zvcih2YXIgayxiPWMoYSxmKSxyPWIubGVuZ3RoO3ItLTspaz1WKGEsYltyXSksYVtrXT0hKGVba109YltyXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gYyhhLDAsayl9KTpjfX0scHNldWRvczp7bm90OmIoZnVuY3Rpb24oYSl7dmFyIGU9W10sZj1bXSxrPUEoYS5yZXBsYWNlKGNhLCIkMSIpKTtyZXR1cm4ga1tNXT9iKGZ1bmN0aW9uKGEsZSxmLGIpe3ZhciBjOwpmPWsoYSxudWxsLGIsW10pO2ZvcihiPWEubGVuZ3RoO2ItLTspKGM9ZltiXSkmJihhW2JdPSEoZVtiXT1jKSl9KTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGVbMF09YSxrKGUsbnVsbCxjLGYpLGVbMF09bnVsbCwhZi5wb3AoKX19KSxoYXM6YihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oZil7cmV0dXJuIDA8ZShhLGYpLmxlbmd0aH19KSxjb250YWluczpiKGZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZShvYSxwYSksZnVuY3Rpb24oZSl7cmV0dXJuLTE8KGUudGV4dENvbnRlbnR8fGUuaW5uZXJUZXh0fHxHKGUpKS5pbmRleE9mKGEpfX0pLGxhbmc6YihmdW5jdGlvbihhKXtyZXR1cm4gc2EudGVzdChhfHwiIil8fGUuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2Uob2EscGEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oZSl7dmFyIGY7ZG8gaWYoZj1ZP2UubGFuZzplLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8ZS5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gZj0KZi50b0xvd2VyQ2FzZSgpLGY9PT1hfHwwPT09Zi5pbmRleE9mKGErIi0iKTt3aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciBmPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gZiYmZi5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1VfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PUkuYWN0aXZlRWxlbWVudCYmKCFJLmhhc0ZvY3VzfHxJLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiExPT09YS5kaXNhYmxlZH0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1hLmRpc2FibGVkfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBlPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09ZSYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09ZSYmCiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1hLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoNj5hLm5vZGVUeXBlKXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIXUucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiB1YS50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gdGEudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBlPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09ZSYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09ZX0sdGV4dDpmdW5jdGlvbihhKXt2YXIgZTtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT0KYS50eXBlJiYobnVsbD09KGU9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWUudG9Mb3dlckNhc2UoKSl9LGZpcnN0Om0oZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om0oZnVuY3Rpb24oYSxlKXtyZXR1cm5bZS0xXX0pLGVxOm0oZnVuY3Rpb24oYSxlLGYpe3JldHVyblswPmY/ZitlOmZdfSksZXZlbjptKGZ1bmN0aW9uKGEsZSl7Zm9yKHZhciBmPTA7ZT5mO2YrPTIpYS5wdXNoKGYpO3JldHVybiBhfSksb2RkOm0oZnVuY3Rpb24oYSxlKXtmb3IodmFyIGY9MTtlPmY7Zis9MilhLnB1c2goZik7cmV0dXJuIGF9KSxsdDptKGZ1bmN0aW9uKGEsZSxmKXtmb3IoZT0wPmY/ZitlOmY7MDw9LS1lOylhLnB1c2goZSk7cmV0dXJuIGF9KSxndDptKGZ1bmN0aW9uKGEsZSxmKXtmb3IoZj0wPmY/ZitlOmY7KytmPGU7KWEucHVzaChmKTtyZXR1cm4gYX0pfX07dS5wc2V1ZG9zLm50aD11LnBzZXVkb3MuZXE7Zm9yKHkgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCwKaW1hZ2U6ITB9KXUucHNldWRvc1t5XT1oKHkpO2Zvcih5IGlue3N1Ym1pdDohMCxyZXNldDohMH0pdS5wc2V1ZG9zW3ldPWwoeSk7cS5wcm90b3R5cGU9dS5maWx0ZXJzPXUucHNldWRvczt1LnNldEZpbHRlcnM9bmV3IHE7Rj1lLnRva2VuaXplPWZ1bmN0aW9uKGEsZil7dmFyIGssYixjLHIsZCxnLHo7aWYoZD15YVthKyIgIl0pcmV0dXJuIGY/MDpkLnNsaWNlKDApO2Q9YTtnPVtdO2Zvcih6PXUucHJlRmlsdGVyO2Q7KXtrJiYhKGI9cWEuZXhlYyhkKSl8fChiJiYoZD1kLnNsaWNlKGJbMF0ubGVuZ3RoKXx8ZCksZy5wdXNoKGM9W10pKTtrPSExOyhiPXJhLmV4ZWMoZCkpJiYoaz1iLnNoaWZ0KCksYy5wdXNoKHt2YWx1ZTprLHR5cGU6YlswXS5yZXBsYWNlKGNhLCIgIil9KSxkPWQuc2xpY2Uoay5sZW5ndGgpKTtmb3IociBpbiB1LmZpbHRlcikhKGI9ZmFbcl0uZXhlYyhkKSl8fHpbcl0mJiEoYj16W3JdKGIpKXx8KGs9Yi5zaGlmdCgpLGMucHVzaCh7dmFsdWU6ayx0eXBlOnIsbWF0Y2hlczpifSksCmQ9ZC5zbGljZShrLmxlbmd0aCkpO2lmKCFrKWJyZWFrfXJldHVybiBmP2QubGVuZ3RoOmQ/ZS5lcnJvcihhKTp5YShhLGcpLnNsaWNlKDApfTtyZXR1cm4gQT1lLmNvbXBpbGU9ZnVuY3Rpb24oYSxlKXt2YXIgZixrPVtdLGI9W10sYz1YW2ErIiAiXTtpZighYyl7ZXx8KGU9RihhKSk7Zm9yKGY9ZS5sZW5ndGg7Zi0tOyljPUQoZVtmXSksY1tNXT9rLnB1c2goYyk6Yi5wdXNoKGMpO2M9WChhLEgoYixrKSk7Yy5zZWxlY3Rvcj1hfXJldHVybiBjfSxSPWUuc2VsZWN0PWZ1bmN0aW9uKGEsZSxmLGspe3ZhciBiLGMscixkLGcsej0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxoPSFrJiZGKGE9ei5zZWxlY3Rvcnx8YSk7aWYoZj1mfHxbXSwxPT09aC5sZW5ndGgpe2lmKGM9aFswXT1oWzBdLnNsaWNlKDApLDI8Yy5sZW5ndGgmJiJJRCI9PT0ocj1jWzBdKS50eXBlJiZzLmdldEJ5SWQmJjk9PT1lLm5vZGVUeXBlJiZZJiZ1LnJlbGF0aXZlW2NbMV0udHlwZV0pe2lmKGU9KHUuZmluZC5JRChyLm1hdGNoZXNbMF0ucmVwbGFjZShvYSwKcGEpLGUpfHxbXSlbMF0sIWUpcmV0dXJuIGY7eiYmKGU9ZS5wYXJlbnROb2RlKTthPWEuc2xpY2UoYy5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKGI9ZmEubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpjLmxlbmd0aDtiLS0mJihyPWNbYl0sIXUucmVsYXRpdmVbZD1yLnR5cGVdKTspaWYoKGc9dS5maW5kW2RdKSYmKGs9ZyhyLm1hdGNoZXNbMF0ucmVwbGFjZShvYSxwYSksbGEudGVzdChjWzBdLnR5cGUpJiZuKGUucGFyZW50Tm9kZSl8fGUpKSl7aWYoYy5zcGxpY2UoYiwxKSxhPWsubGVuZ3RoJiZwKGMpLCFhKXJldHVybiBTLmFwcGx5KGYsayksZjticmVha319cmV0dXJuKHp8fEEoYSxoKSkoayxlLCFZLGYsbGEudGVzdChhKSYmbihlLnBhcmVudE5vZGUpfHxlKSxmfSxzLnNvcnRTdGFibGU9TS5zcGxpdCgiIikuc29ydChXKS5qb2luKCIiKT09PU0scy5kZXRlY3REdXBsaWNhdGVzPSEhUCx2KCkscy5zb3J0RGV0YWNoZWQ9YyhmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEkuY3JlYXRlRWxlbWVudCgiZGl2IikpfSksCmMoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSJceDNjYSBocmVmXHgzZCcjJ1x4M2VceDNjL2FceDNlIiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8ZCgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oYSxlLGYpe3JldHVybiBmP3ZvaWQgMDphLmdldEF0dHJpYnV0ZShlLCJ0eXBlIj09PWUudG9Mb3dlckNhc2UoKT8xOjIpfSkscy5hdHRyaWJ1dGVzJiZjKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iXHgzY2lucHV0L1x4M2UiLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGQoInZhbHVlIixmdW5jdGlvbihhLGUsZil7cmV0dXJuIGZ8fCJpbnB1dCIhPT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmEuZGVmYXVsdFZhbHVlfSksYyhmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8CmQoImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixmdW5jdGlvbihhLGUsZil7dmFyIGs7cmV0dXJuIGY/dm9pZCAwOiEwPT09YVtlXT9lLnRvTG93ZXJDYXNlKCk6KGs9YS5nZXRBdHRyaWJ1dGVOb2RlKGUpKSYmay5zcGVjaWZpZWQ/ay52YWx1ZTpudWxsfSksZX0oYik7Zi5maW5kPXRhO2YuZXhwcj10YS5zZWxlY3RvcnM7Zi5leHByWyI6Il09Zi5leHByLnBzZXVkb3M7Zi51bmlxdWU9dGEudW5pcXVlU29ydDtmLnRleHQ9dGEuZ2V0VGV4dDtmLmlzWE1MRG9jPXRhLmlzWE1MO2YuY29udGFpbnM9dGEuY29udGFpbnM7dmFyIGtiPWYuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsbGI9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyxHYj0vXi5bXjojXFtcLixdKiQvO2YuZmlsdGVyPWZ1bmN0aW9uKGEsZSxrKXt2YXIgYj0KZVswXTtyZXR1cm4gayYmKGE9Ijpub3QoIithKyIpIiksMT09PWUubGVuZ3RoJiYxPT09Yi5ub2RlVHlwZT9mLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGIsYSk/W2JdOltdOmYuZmluZC5tYXRjaGVzKGEsZi5ncmVwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgZSxrPVtdLGI9dGhpcyxjPWIubGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soZihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoZT0wO2M+ZTtlKyspaWYoZi5jb250YWlucyhiW2VdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihlPTA7Yz5lO2UrKylmLmZpbmQoYSxiW2VdLGspO3JldHVybiBrPXRoaXMucHVzaFN0YWNrKDE8Yz9mLnVuaXF1ZShrKTprKSxrLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcisiICIrYTphLGt9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaCh0aGlzLAphfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGgodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWgodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJmtiLnRlc3QoYSk/ZihhKTphfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBGYSx4PWIuZG9jdW1lbnQsVGI9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLzsoZi5mbi5pbml0PWZ1bmN0aW9uKGEsZSl7dmFyIGssYjtpZighYSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKGs9Ilx4M2MiPT09YS5jaGFyQXQoMCkmJiJceDNlIj09PWEuY2hhckF0KGEubGVuZ3RoLTEpJiYzPD1hLmxlbmd0aD9bbnVsbCxhLG51bGxdOlRiLmV4ZWMoYSksIWt8fCFrWzFdJiZlKXJldHVybiFlfHxlLmpxdWVyeT8oZXx8RmEpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihlKS5maW5kKGEpO2lmKGtbMV0pe2lmKGU9ZSBpbnN0YW5jZW9mIGY/ZVswXTplLGYubWVyZ2UodGhpcywKZi5wYXJzZUhUTUwoa1sxXSxlJiZlLm5vZGVUeXBlP2Uub3duZXJEb2N1bWVudHx8ZTp4LCEwKSksbGIudGVzdChrWzFdKSYmZi5pc1BsYWluT2JqZWN0KGUpKWZvcihrIGluIGUpZi5pc0Z1bmN0aW9uKHRoaXNba10pP3RoaXNba10oZVtrXSk6dGhpcy5hdHRyKGssZVtrXSk7cmV0dXJuIHRoaXN9aWYoYj14LmdldEVsZW1lbnRCeUlkKGtbMl0pLGImJmIucGFyZW50Tm9kZSl7aWYoYi5pZCE9PWtbMl0pcmV0dXJuIEZhLmZpbmQoYSk7dGhpcy5sZW5ndGg9MTt0aGlzWzBdPWJ9cmV0dXJuIHRoaXMuY29udGV4dD14LHRoaXMuc2VsZWN0b3I9YSx0aGlzfXJldHVybiBhLm5vZGVUeXBlPyh0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6Zi5pc0Z1bmN0aW9uKGEpPyJ1bmRlZmluZWQiIT10eXBlb2YgRmEucmVhZHk/RmEucmVhZHkoYSk6YShmKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSwKZi5tYWtlQXJyYXkoYSx0aGlzKSl9KS5wcm90b3R5cGU9Zi5mbjtGYT1mKHgpO3ZhciBVYj0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxWYj17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsZSxrKXt2YXIgYj1bXTtmb3IoYT1hW2VdO2EmJjkhPT1hLm5vZGVUeXBlJiYodm9pZCAwPT09a3x8MSE9PWEubm9kZVR5cGV8fCFmKGEpLmlzKGspKTspMT09PWEubm9kZVR5cGUmJmIucHVzaChhKSxhPWFbZV07cmV0dXJuIGJ9LHNpYmxpbmc6ZnVuY3Rpb24oYSxlKXtmb3IodmFyIGY9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1lJiZmLnB1c2goYSk7cmV0dXJuIGZ9fSk7Zi5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgZSxrPWYoYSx0aGlzKSxiPWsubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihlPTA7Yj5lO2UrKylpZihmLmNvbnRhaW5zKHRoaXMsCmtbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxlKXtmb3IodmFyIGssYj0wLGM9dGhpcy5sZW5ndGgsZD1bXSxnPWtiLnRlc3QoYSl8fCJzdHJpbmciIT10eXBlb2YgYT9mKGEsZXx8dGhpcy5jb250ZXh0KTowO2M+YjtiKyspZm9yKGs9dGhpc1tiXTtrJiZrIT09ZTtrPWsucGFyZW50Tm9kZSlpZigxMT5rLm5vZGVUeXBlJiYoZz8tMTxnLmluZGV4KGspOjE9PT1rLm5vZGVUeXBlJiZmLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGssYSkpKXtkLnB1c2goayk7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8ZC5sZW5ndGg/Zi51bmlxdWUoZCk6ZCl9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9mLmluQXJyYXkodGhpc1swXSxmKGEpKTpmLmluQXJyYXkoYS5qcXVlcnk/YVswXTphLHRoaXMpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYudW5pcXVlKGYubWVyZ2UodGhpcy5nZXQoKSwKZihhLGUpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLnBhcmVudE5vZGUpJiYxMSE9PWEubm9kZVR5cGU/YTpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGUsayl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiLGspfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBtKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIG0oYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSwKZSxrKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGspfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxlLGspe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGspfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKChhLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tZXJnZShbXSxhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxlKXtmLmZuW2FdPWZ1bmN0aW9uKGssYil7dmFyIGM9Zi5tYXAodGhpcyxlLGspO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGI9ayksYiYmInN0cmluZyI9PXR5cGVvZiBiJiYoYz1mLmZpbHRlcihiLGMpKSwxPHRoaXMubGVuZ3RoJiYoVmJbYV18fAooYz1mLnVuaXF1ZShjKSksVWIudGVzdChhKSYmKGM9Yy5yZXZlcnNlKCkpKSx0aGlzLnB1c2hTdGFjayhjKX19KTt2YXIgUT0vXFMrL2csZWI9e307Zi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/ZWJbYV18fHEoYSk6Zi5leHRlbmQoe30sYSk7dmFyIGUsayxiLGMsZCxnLGg9W10sbD0hYS5vbmNlJiZbXSxtPWZ1bmN0aW9uKGYpe2s9YS5tZW1vcnkmJmY7Yj0hMDtkPWd8fDA7Zz0wO2M9aC5sZW5ndGg7Zm9yKGU9ITA7aCYmYz5kO2QrKylpZighMT09PWhbZF0uYXBwbHkoZlswXSxmWzFdKSYmYS5zdG9wT25GYWxzZSl7az0hMTticmVha31lPSExO2gmJihsP2wubGVuZ3RoJiZtKGwuc2hpZnQoKSk6az9oPVtdOm4uZGlzYWJsZSgpKX0sbj17YWRkOmZ1bmN0aW9uKCl7aWYoaCl7dmFyIGI9aC5sZW5ndGg7IWZ1bmN0aW9uIFNiKGUpe2YuZWFjaChlLGZ1bmN0aW9uKGUsayl7dmFyIGI9Zi50eXBlKGspOyJmdW5jdGlvbiI9PT1iP2EudW5pcXVlJiZuLmhhcyhrKXx8CmgucHVzaChrKTprJiZrLmxlbmd0aCYmInN0cmluZyIhPT1iJiZTYihrKX0pfShhcmd1bWVudHMpO2U/Yz1oLmxlbmd0aDprJiYoZz1iLG0oaykpfXJldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gaCYmZi5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihhLGspe2Zvcih2YXIgYjstMTwoYj1mLmluQXJyYXkoayxoLGIpKTspaC5zcGxpY2UoYiwxKSxlJiYoYz49YiYmYy0tLGQ+PWImJmQtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/LTE8Zi5pbkFycmF5KGEsaCk6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxjPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWw9az12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBsPXZvaWQgMCxrfHxuLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbH0sZmlyZVdpdGg6ZnVuY3Rpb24oYSwKZil7cmV0dXJuIWh8fGImJiFsfHwoZj1mfHxbXSxmPVthLGYuc2xpY2U/Zi5zbGljZSgpOmZdLGU/bC5wdXNoKGYpOm0oZikpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWJ9fTtyZXR1cm4gbn07Zi5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBlPVtbInJlc29sdmUiLCJkb25lIixmLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLGYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJvZ3Jlc3MiLGYuQ2FsbGJhY2tzKCJtZW1vcnkiKV1dLGs9InBlbmRpbmciLGI9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGt9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBjLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhpc30sdGhlbjpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50czsKcmV0dXJuIGYuRGVmZXJyZWQoZnVuY3Rpb24oayl7Zi5lYWNoKGUsZnVuY3Rpb24oZSxkKXt2YXIgZz1mLmlzRnVuY3Rpb24oYVtlXSkmJmFbZV07Y1tkWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJmYuaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoay5yZXNvbHZlKS5mYWlsKGsucmVqZWN0KS5wcm9ncmVzcyhrLm5vdGlmeSk6a1tkWzBdKyJXaXRoIl0odGhpcz09PWI/ay5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KTthPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/Zi5leHRlbmQoYSxiKTpifX0sYz17fTtyZXR1cm4gYi5waXBlPWIudGhlbixmLmVhY2goZSxmdW5jdGlvbihhLGYpe3ZhciBkPWZbMl0sZz1mWzNdO2JbZlsxXV09ZC5hZGQ7ZyYmZC5hZGQoZnVuY3Rpb24oKXtrPWd9LGVbMV5hXVsyXS5kaXNhYmxlLGVbMl1bMl0ubG9jayk7Y1tmWzBdXT0KZnVuY3Rpb24oKXtyZXR1cm4gY1tmWzBdKyJXaXRoIl0odGhpcz09PWM/Yjp0aGlzLGFyZ3VtZW50cyksdGhpc307Y1tmWzBdKyJXaXRoIl09ZC5maXJlV2l0aH0pLGIucHJvbWlzZShjKSxhJiZhLmNhbGwoYyxjKSxjfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBlPTAsaz1TLmNhbGwoYXJndW1lbnRzKSxiPWsubGVuZ3RoLGM9MSE9PWJ8fGEmJmYuaXNGdW5jdGlvbihhLnByb21pc2UpP2I6MCxkPTE9PT1jP2E6Zi5EZWZlcnJlZCgpLGc9ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBmdW5jdGlvbihrKXtlW2FdPXRoaXM7ZlthXT0xPGFyZ3VtZW50cy5sZW5ndGg/Uy5jYWxsKGFyZ3VtZW50cyk6aztmPT09aD9kLm5vdGlmeVdpdGgoZSxmKTotLWN8fGQucmVzb2x2ZVdpdGgoZSxmKX19LGgsbCxtO2lmKDE8Yilmb3IoaD1BcnJheShiKSxsPUFycmF5KGIpLG09QXJyYXkoYik7Yj5lO2UrKylrW2VdJiZmLmlzRnVuY3Rpb24oa1tlXS5wcm9taXNlKT9rW2VdLnByb21pc2UoKS5kb25lKGcoZSxtLAprKSkuZmFpbChkLnJlamVjdCkucHJvZ3Jlc3MoZyhlLGwsaCkpOi0tYztyZXR1cm4gY3x8ZC5yZXNvbHZlV2l0aChtLGspLGQucHJvbWlzZSgpfX0pO3ZhciBNYTtmLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBmLnJlYWR5LnByb21pc2UoKS5kb25lKGEpLHRoaXN9O2YuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP2YucmVhZHlXYWl0Kys6Zi5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKCEwPT09YT8hLS1mLnJlYWR5V2FpdDohZi5pc1JlYWR5KXtpZigheC5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGYucmVhZHkpO2YuaXNSZWFkeT0hMDshMCE9PWEmJjA8LS1mLnJlYWR5V2FpdHx8KE1hLnJlc29sdmVXaXRoKHgsW2ZdKSxmLmZuLnRyaWdnZXJIYW5kbGVyJiYoZih4KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxmKHgpLm9mZigicmVhZHkiKSkpfX19KTtmLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYSl7aWYoIU1hKWlmKE1hPQpmLkRlZmVycmVkKCksImNvbXBsZXRlIj09PXgucmVhZHlTdGF0ZSlzZXRUaW1lb3V0KGYucmVhZHkpO2Vsc2UgaWYoeC5hZGRFdmVudExpc3RlbmVyKXguYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIscCwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixwLCExKTtlbHNle3guYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIscCk7Yi5hdHRhY2hFdmVudCgib25sb2FkIixwKTt2YXIgZT0hMTt0cnl7ZT1udWxsPT1iLmZyYW1lRWxlbWVudCYmeC5kb2N1bWVudEVsZW1lbnR9Y2F0Y2goayl7fWUmJmUuZG9TY3JvbGwmJiFmdW5jdGlvbiB6KCl7aWYoIWYuaXNSZWFkeSl7dHJ5e2UuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtyZXR1cm4gc2V0VGltZW91dCh6LDUwKX1uKCk7Zi5yZWFkeSgpfX0oKX1yZXR1cm4gTWEucHJvbWlzZShhKX07dmFyIFc9InVuZGVmaW5lZCIsbWI7Zm9yKG1iIGluIGYocykpYnJlYWs7cy5vd25MYXN0PSIwIiE9PW1iO3MuaW5saW5lQmxvY2tOZWVkc0xheW91dD0KITE7ZihmdW5jdGlvbigpe3ZhciBhLGUsZixiOyhmPXguZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkmJmYuc3R5bGUmJihlPXguY3JlYXRlRWxlbWVudCgiZGl2IiksYj14LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGYuYXBwZW5kQ2hpbGQoYikuYXBwZW5kQ2hpbGQoZSksdHlwZW9mIGUuc3R5bGUuem9vbSE9PVcmJihlLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLHMuaW5saW5lQmxvY2tOZWVkc0xheW91dD1hPTM9PT1lLm9mZnNldFdpZHRoLGEmJihmLnN0eWxlLnpvb209MSkpLGYucmVtb3ZlQ2hpbGQoYikpfSk7KGZ1bmN0aW9uKCl7dmFyIGE9eC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpZihudWxsPT1zLmRlbGV0ZUV4cGFuZG8pe3MuZGVsZXRlRXhwYW5kbz0KITA7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2goZSl7cy5kZWxldGVFeHBhbmRvPSExfX19KSgpO2YuYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgZT1mLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGs9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1rJiY5IT09az8hMTohZXx8ITAhPT1lJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09ZX07dmFyIEliPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sSGI9LyhbQS1aXSkvZztmLmV4dGVuZCh7Y2FjaGU6e30sbm9EYXRhOnsiYXBwbGV0ICI6ITAsImVtYmVkICI6ITAsIm9iamVjdCAiOiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAifSxoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBhPWEubm9kZVR5cGU/Zi5jYWNoZVthW2YuZXhwYW5kb11dOmFbZi5leHBhbmRvXSwhIWEmJiF3KGEpfSxkYXRhOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4geShhLGUsZil9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSwKZSl7cmV0dXJuIEooYSxlKX0sX2RhdGE6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiB5KGEsZSxmLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gSihhLGUsITApfX0pO2YuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsZSl7dmFyIGssYixjLGQ9dGhpc1swXSxnPWQmJmQuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGM9Zi5kYXRhKGQpLDE9PT1kLm5vZGVUeXBlJiYhZi5fZGF0YShkLCJwYXJzZWRBdHRycyIpKSl7Zm9yKGs9Zy5sZW5ndGg7ay0tOylnW2tdJiYoYj1nW2tdLm5hbWUsMD09PWIuaW5kZXhPZigiZGF0YS0iKSYmKGI9Zi5jYW1lbENhc2UoYi5zbGljZSg1KSksQihkLGIsY1tiXSkpKTtmLl9kYXRhKGQsInBhcnNlZEF0dHJzIiwhMCl9cmV0dXJuIGN9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe2YuZGF0YSh0aGlzLGEpfSk6MTxhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChmdW5jdGlvbigpe2YuZGF0YSh0aGlzLAphLGUpfSk6ZD9CKGQsYSxmLmRhdGEoZCxhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pO2YuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGUsayl7dmFyIGI7cmV0dXJuIGE/KGU9KGV8fCJmeCIpKyJxdWV1ZSIsYj1mLl9kYXRhKGEsZSksayYmKCFifHxmLmlzQXJyYXkoayk/Yj1mLl9kYXRhKGEsZSxmLm1ha2VBcnJheShrKSk6Yi5wdXNoKGspKSxifHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsZSl7ZT1lfHwiZngiO3ZhciBrPWYucXVldWUoYSxlKSxiPWsubGVuZ3RoLGM9ay5zaGlmdCgpLGQ9Zi5fcXVldWVIb29rcyhhLGUpLGc9ZnVuY3Rpb24oKXtmLmRlcXVldWUoYSxlKX07ImlucHJvZ3Jlc3MiPT09YyYmKGM9ay5zaGlmdCgpLGItLSk7YyYmKCJmeCI9PT1lJiZrLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZC5zdG9wLGMuY2FsbChhLGcsZCkpOyFiJiYKZCYmZC5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsZSl7dmFyIGs9ZSsicXVldWVIb29rcyI7cmV0dXJuIGYuX2RhdGEoYSxrKXx8Zi5fZGF0YShhLGsse2VtcHR5OmYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe2YuX3JlbW92ZURhdGEoYSxlKyJxdWV1ZSIpO2YuX3JlbW92ZURhdGEoYSxrKX0pfSl9fSk7Zi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsZSl7dmFyIGs9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihlPWEsYT0iZngiLGstLSksYXJndW1lbnRzLmxlbmd0aDxrP2YucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1lP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGs9Zi5xdWV1ZSh0aGlzLGEsZSk7Zi5fcXVldWVIb29rcyh0aGlzLGEpOyJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1rWzBdJiZmLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRlcXVldWUodGhpcywKYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGUpe3ZhciBrLGI9MSxjPWYuRGVmZXJyZWQoKSxkPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1ifHxjLnJlc29sdmVXaXRoKGQsW2RdKX07InN0cmluZyIhPXR5cGVvZiBhJiYoZT1hLGE9dm9pZCAwKTtmb3IoYT1hfHwiZngiO2ctLTspKGs9Zi5fZGF0YShkW2ddLGErInF1ZXVlSG9va3MiKSkmJmsuZW1wdHkmJihiKyssay5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksYy5wcm9taXNlKGUpfX0pO3ZhciBOYT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxrYT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHdhPWZ1bmN0aW9uKGEsZSl7cmV0dXJuIGE9ZXx8YSwibm9uZSI9PT1mLmNzcyhhLCJkaXNwbGF5Iil8fCFmLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX0sY2E9Zi5hY2Nlc3M9CmZ1bmN0aW9uKGEsZSxrLGIsYyxkLGcpe3ZhciBoPTAsbD1hLmxlbmd0aCxtPW51bGw9PWs7aWYoIm9iamVjdCI9PT1mLnR5cGUoaykpZm9yKGggaW4gYz0hMCxrKWYuYWNjZXNzKGEsZSxoLGtbaF0sITAsZCxnKTtlbHNlIGlmKHZvaWQgMCE9PWImJihjPSEwLGYuaXNGdW5jdGlvbihiKXx8KGc9ITApLG0mJihnPyhlLmNhbGwoYSxiKSxlPW51bGwpOihtPWUsZT1mdW5jdGlvbihhLGUsayl7cmV0dXJuIG0uY2FsbChmKGEpLGspfSkpLGUpKWZvcig7bD5oO2grKyllKGFbaF0sayxnP2I6Yi5jYWxsKGFbaF0saCxlKGFbaF0saykpKTtyZXR1cm4gYz9hOm0/ZS5jYWxsKGEpOmw/ZShhWzBdLGspOmR9LFRhPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXguY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxlPXguY3JlYXRlRWxlbWVudCgiZGl2IiksZj14LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihlLmlubmVySFRNTD0iICBceDNjbGluay9ceDNlXHgzY3RhYmxlXHgzZVx4M2MvdGFibGVceDNlXHgzY2EgaHJlZlx4M2QnL2EnXHgzZWFceDNjL2FceDNlXHgzY2lucHV0IHR5cGVceDNkJ2NoZWNrYm94Jy9ceDNlIiwKcy5sZWFkaW5nV2hpdGVzcGFjZT0zPT09ZS5maXJzdENoaWxkLm5vZGVUeXBlLHMudGJvZHk9IWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLHMuaHRtbFNlcmlhbGl6ZT0hIWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgscy5odG1sNUNsb25lPSJceDNjOm5hdlx4M2VceDNjLzpuYXZceDNlIiE9PXguY3JlYXRlRWxlbWVudCgibmF2IikuY2xvbmVOb2RlKCEwKS5vdXRlckhUTUwsYS50eXBlPSJjaGVja2JveCIsYS5jaGVja2VkPSEwLGYuYXBwZW5kQ2hpbGQoYSkscy5hcHBlbmRDaGVja2VkPWEuY2hlY2tlZCxlLmlubmVySFRNTD0iXHgzY3RleHRhcmVhXHgzZXhceDNjL3RleHRhcmVhXHgzZSIscy5ub0Nsb25lQ2hlY2tlZD0hIWUuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLGYuYXBwZW5kQ2hpbGQoZSksZS5pbm5lckhUTUw9Ilx4M2NpbnB1dCB0eXBlXHgzZCdyYWRpbycgY2hlY2tlZFx4M2QnY2hlY2tlZCcgbmFtZVx4M2QndCcvXHgzZSIsCnMuY2hlY2tDbG9uZT1lLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxzLm5vQ2xvbmVFdmVudD0hMCxlLmF0dGFjaEV2ZW50JiYoZS5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXtzLm5vQ2xvbmVFdmVudD0hMX0pLGUuY2xvbmVOb2RlKCEwKS5jbGljaygpKSxudWxsPT1zLmRlbGV0ZUV4cGFuZG8pe3MuZGVsZXRlRXhwYW5kbz0hMDt0cnl7ZGVsZXRlIGUudGVzdH1jYXRjaChiKXtzLmRlbGV0ZUV4cGFuZG89ITF9fX0oKTsoZnVuY3Rpb24oKXt2YXIgYSxlLGY9eC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYSBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWU9Im9uIithLChzW2ErIkJ1YmJsZXMiXT1lIGluIGIpfHwoZi5zZXRBdHRyaWJ1dGUoZSwidCIpLHNbYSsiQnViYmxlcyJdPSExPT09Zi5hdHRyaWJ1dGVzW2VdLmV4cGFuZG8pfSkoKTt2YXIgV2E9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLFdiPQovXmtleS8sWGI9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51KXxjbGljay8sbmI9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLG9iPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87Zi5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGUsayxiLGMpe3ZhciBkLGcsaCxsLG0sbixxLHAsdCxFO2lmKGg9Zi5fZGF0YShhKSl7ay5oYW5kbGVyJiYobD1rLGs9bC5oYW5kbGVyLGM9bC5zZWxlY3Rvcik7ay5ndWlkfHwoay5ndWlkPWYuZ3VpZCsrKTsoZz1oLmV2ZW50cyl8fChnPWguZXZlbnRzPXt9KTsobj1oLmhhbmRsZSl8fChuPWguaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgZj09PVd8fGEmJmYuZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDpmLmV2ZW50LmRpc3BhdGNoLmFwcGx5KG4uZWxlbSxhcmd1bWVudHMpfSxuLmVsZW09YSk7ZT0oZXx8IiIpLm1hdGNoKFEpfHxbIiJdO2ZvcihoPWUubGVuZ3RoO2gtLTspZD1vYi5leGVjKGVbaF0pfHwKW10sdD1FPWRbMV0sZD0oZFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHQmJihtPWYuZXZlbnQuc3BlY2lhbFt0XXx8e30sdD0oYz9tLmRlbGVnYXRlVHlwZTptLmJpbmRUeXBlKXx8dCxtPWYuZXZlbnQuc3BlY2lhbFt0XXx8e30scT1mLmV4dGVuZCh7dHlwZTp0LG9yaWdUeXBlOkUsZGF0YTpiLGhhbmRsZXI6ayxndWlkOmsuZ3VpZCxzZWxlY3RvcjpjLG5lZWRzQ29udGV4dDpjJiZmLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoYyksbmFtZXNwYWNlOmQuam9pbigiLiIpfSxsKSwocD1nW3RdKXx8KHA9Z1t0XT1bXSxwLmRlbGVnYXRlQ291bnQ9MCxtLnNldHVwJiYhMSE9PW0uc2V0dXAuY2FsbChhLGIsZCxuKXx8KGEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKTphLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrdCxuKSkpLG0uYWRkJiYobS5hZGQuY2FsbChhLHEpLHEuaGFuZGxlci5ndWlkfHwocS5oYW5kbGVyLmd1aWQ9ay5ndWlkKSksCmM/cC5zcGxpY2UocC5kZWxlZ2F0ZUNvdW50KyssMCxxKTpwLnB1c2gocSksZi5ldmVudC5nbG9iYWxbdF09ITApO2E9bnVsbH19LHJlbW92ZTpmdW5jdGlvbihhLGUsayxiLGMpe3ZhciBkLGcsaCxsLG0sbixxLHAsdCxFLHcsdT1mLmhhc0RhdGEoYSkmJmYuX2RhdGEoYSk7aWYodSYmKG49dS5ldmVudHMpKXtlPShlfHwiIikubWF0Y2goUSl8fFsiIl07Zm9yKG09ZS5sZW5ndGg7bS0tOylpZihoPW9iLmV4ZWMoZVttXSl8fFtdLHQ9dz1oWzFdLEU9KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSx0KXtxPWYuZXZlbnQuc3BlY2lhbFt0XXx8e307dD0oYj9xLmRlbGVnYXRlVHlwZTpxLmJpbmRUeXBlKXx8dDtwPW5bdF18fFtdO2g9aFsyXSYmUmVnRXhwKCIoXnxcXC4pIitFLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpO2ZvcihsPWQ9cC5sZW5ndGg7ZC0tOylnPXBbZF0sIWMmJnchPT1nLm9yaWdUeXBlfHxrJiZrLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHwKYiYmYiE9PWcuc2VsZWN0b3ImJigiKioiIT09Ynx8IWcuc2VsZWN0b3IpfHwocC5zcGxpY2UoZCwxKSxnLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxxLnJlbW92ZSYmcS5yZW1vdmUuY2FsbChhLGcpKTtsJiYhcC5sZW5ndGgmJihxLnRlYXJkb3duJiYhMSE9PXEudGVhcmRvd24uY2FsbChhLEUsdS5oYW5kbGUpfHxmLnJlbW92ZUV2ZW50KGEsdCx1LmhhbmRsZSksZGVsZXRlIG5bdF0pfWVsc2UgZm9yKHQgaW4gbilmLmV2ZW50LnJlbW92ZShhLHQrZVttXSxrLGIsITApO2YuaXNFbXB0eU9iamVjdChuKSYmKGRlbGV0ZSB1LmhhbmRsZSxmLl9yZW1vdmVEYXRhKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYSxlLGssYyl7dmFyIGQsZyxoLGwsbSxuLHE9W2t8fHhdLHA9ZmEuY2FsbChhLCJ0eXBlIik/YS50eXBlOmE7bj1mYS5jYWxsKGEsIm5hbWVzcGFjZSIpP2EubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoaD1kPWs9a3x8eCwzIT09ay5ub2RlVHlwZSYmOCE9PQprLm5vZGVUeXBlJiYhbmIudGVzdChwK2YuZXZlbnQudHJpZ2dlcmVkKSYmKDA8PXAuaW5kZXhPZigiLiIpJiYobj1wLnNwbGl0KCIuIikscD1uLnNoaWZ0KCksbi5zb3J0KCkpLGc9MD5wLmluZGV4T2YoIjoiKSYmIm9uIitwLGE9YVtmLmV4cGFuZG9dP2E6bmV3IGYuRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGEmJmEpLGEuaXNUcmlnZ2VyPWM/MjozLGEubmFtZXNwYWNlPW4uam9pbigiLiIpLGEubmFtZXNwYWNlX3JlPWEubmFtZXNwYWNlP1JlZ0V4cCgiKF58XFwuKSIrbi5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGEucmVzdWx0PXZvaWQgMCxhLnRhcmdldHx8KGEudGFyZ2V0PWspLGU9bnVsbD09ZT9bYV06Zi5tYWtlQXJyYXkoZSxbYV0pLG09Zi5ldmVudC5zcGVjaWFsW3BdfHx7fSxjfHwhbS50cmlnZ2VyfHwhMSE9PW0udHJpZ2dlci5hcHBseShrLGUpKSl7aWYoIWMmJiFtLm5vQnViYmxlJiYhZi5pc1dpbmRvdyhrKSl7bD1tLmRlbGVnYXRlVHlwZXx8CnA7Zm9yKG5iLnRlc3QobCtwKXx8KGg9aC5wYXJlbnROb2RlKTtoO2g9aC5wYXJlbnROb2RlKXEucHVzaChoKSxkPWg7ZD09PShrLm93bmVyRG9jdW1lbnR8fHgpJiZxLnB1c2goZC5kZWZhdWx0Vmlld3x8ZC5wYXJlbnRXaW5kb3d8fGIpfWZvcihuPTA7KGg9cVtuKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspYS50eXBlPTE8bj9sOm0uYmluZFR5cGV8fHAsKGQ9KGYuX2RhdGEoaCwiZXZlbnRzIil8fHt9KVthLnR5cGVdJiZmLl9kYXRhKGgsImhhbmRsZSIpKSYmZC5hcHBseShoLGUpLChkPWcmJmhbZ10pJiZkLmFwcGx5JiZmLmFjY2VwdERhdGEoaCkmJihhLnJlc3VsdD1kLmFwcGx5KGgsZSksITE9PT1hLnJlc3VsdCYmYS5wcmV2ZW50RGVmYXVsdCgpKTtpZihhLnR5cGU9cCwhKGN8fGEuaXNEZWZhdWx0UHJldmVudGVkKCl8fG0uX2RlZmF1bHQmJiExIT09bS5fZGVmYXVsdC5hcHBseShxLnBvcCgpLGUpKSYmZi5hY2NlcHREYXRhKGspJiZnJiZrW3BdJiYhZi5pc1dpbmRvdyhrKSl7KGQ9CmtbZ10pJiYoa1tnXT1udWxsKTtmLmV2ZW50LnRyaWdnZXJlZD1wO3RyeXtrW3BdKCl9Y2F0Y2godCl7fWYuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMDtkJiYoa1tnXT1kKX1yZXR1cm4gYS5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXthPWYuZXZlbnQuZml4KGEpO3ZhciBlLGssYixjLGQsZz1bXSxoPVMuY2FsbChhcmd1bWVudHMpO2U9KGYuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVthLnR5cGVdfHxbXTt2YXIgbD1mLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaFswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhbC5wcmVEaXNwYXRjaHx8ITEhPT1sLnByZURpc3BhdGNoLmNhbGwodGhpcyxhKSl7Zz1mLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGUpO2ZvcihlPTA7KGM9Z1tlKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspZm9yKGEuY3VycmVudFRhcmdldD1jLmVsZW0sZD0wOyhiPWMuaGFuZGxlcnNbZCsrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7KWEubmFtZXNwYWNlX3JlJiYKIWEubmFtZXNwYWNlX3JlLnRlc3QoYi5uYW1lc3BhY2UpfHwoYS5oYW5kbGVPYmo9YixhLmRhdGE9Yi5kYXRhLGs9KChmLmV2ZW50LnNwZWNpYWxbYi5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGIuaGFuZGxlcikuYXBwbHkoYy5lbGVtLGgpLHZvaWQgMD09PWt8fCExIT09KGEucmVzdWx0PWspfHwoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKTtyZXR1cm4gbC5wb3N0RGlzcGF0Y2gmJmwucG9zdERpc3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsZSl7dmFyIGssYixjLGQsZz1bXSxoPWUuZGVsZWdhdGVDb3VudCxsPWEudGFyZ2V0O2lmKGgmJmwubm9kZVR5cGUmJighYS5idXR0b258fCJjbGljayIhPT1hLnR5cGUpKWZvcig7bCE9dGhpcztsPWwucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bC5ub2RlVHlwZSYmKCEwIT09bC5kaXNhYmxlZHx8ImNsaWNrIiE9PWEudHlwZSkpe2M9W107Zm9yKGQ9MDtoPmQ7ZCsrKWI9CmVbZF0saz1iLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1jW2tdJiYoY1trXT1iLm5lZWRzQ29udGV4dD8wPD1mKGssdGhpcykuaW5kZXgobCk6Zi5maW5kKGssdGhpcyxudWxsLFtsXSkubGVuZ3RoKSxjW2tdJiZjLnB1c2goYik7Yy5sZW5ndGgmJmcucHVzaCh7ZWxlbTpsLGhhbmRsZXJzOmN9KX1yZXR1cm4gaDxlLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6ZS5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW2YuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGUsYixjO2U9YS50eXBlO3ZhciBkPWEsZz10aGlzLmZpeEhvb2tzW2VdO2d8fCh0aGlzLmZpeEhvb2tzW2VdPWc9WGIudGVzdChlKT90aGlzLm1vdXNlSG9va3M6V2IudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KTtjPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wczthPW5ldyBmLkV2ZW50KGQpO2ZvcihlPWMubGVuZ3RoO2UtLTspYj1jW2VdLGFbYl09ZFtiXTtyZXR1cm4gYS50YXJnZXR8fAooYS50YXJnZXQ9ZC5zcmNFbGVtZW50fHx4KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxkKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczpbImNoYXIiLCJjaGFyQ29kZSIsImtleSIsImtleUNvZGUiXSxmaWx0ZXI6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9ZS5jaGFyQ29kZT9lLmNoYXJDb2RlOmUua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksCmZpbHRlcjpmdW5jdGlvbihhLGUpe3ZhciBmLGIsYyxkPWUuYnV0dG9uLGc9ZS5mcm9tRWxlbWVudDtyZXR1cm4gbnVsbD09YS5wYWdlWCYmbnVsbCE9ZS5jbGllbnRYJiYoYj1hLnRhcmdldC5vd25lckRvY3VtZW50fHx4LGM9Yi5kb2N1bWVudEVsZW1lbnQsZj1iLmJvZHksYS5wYWdlWD1lLmNsaWVudFgrKGMmJmMuc2Nyb2xsTGVmdHx8ZiYmZi5zY3JvbGxMZWZ0fHwwKS0oYyYmYy5jbGllbnRMZWZ0fHxmJiZmLmNsaWVudExlZnR8fDApLGEucGFnZVk9ZS5jbGllbnRZKyhjJiZjLnNjcm9sbFRvcHx8ZiYmZi5zY3JvbGxUb3B8fDApLShjJiZjLmNsaWVudFRvcHx8ZiYmZi5jbGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZnJiYoYS5yZWxhdGVkVGFyZ2V0PWc9PT1hLnRhcmdldD9lLnRvRWxlbWVudDpnKSxhLndoaWNofHx2b2lkIDA9PT1kfHwoYS53aGljaD0xJmQ/MToyJmQ/Mzo0JmQ/MjowKSxhfX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PQpBKCkmJnRoaXMuZm9jdXMpdHJ5e3JldHVybiB0aGlzLmZvY3VzKCksITF9Y2F0Y2goYSl7fX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09QSgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBmLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gZi5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxlLGIsYyl7YT0KZi5leHRlbmQobmV3IGYuRXZlbnQsYix7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtjP2YuZXZlbnQudHJpZ2dlcihhLG51bGwsZSk6Zi5ldmVudC5kaXNwYXRjaC5jYWxsKGUsYSk7YS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYi5wcmV2ZW50RGVmYXVsdCgpfX07Zi5yZW1vdmVFdmVudD14LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxlLGYpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGUsZiwhMSl9OmZ1bmN0aW9uKGEsZSxmKXtlPSJvbiIrZTthLmRldGFjaEV2ZW50JiYodHlwZW9mIGFbZV09PT1XJiYoYVtlXT1udWxsKSxhLmRldGFjaEV2ZW50KGUsZikpfTtmLkV2ZW50PWZ1bmN0aW9uKGEsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBmLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHwKdm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWEucmV0dXJuVmFsdWU/RDpGKTp0aGlzLnR5cGU9YSxlJiZmLmV4dGVuZCh0aGlzLGUpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxmLm5vdygpLHZvaWQodGhpc1tmLmV4cGFuZG9dPSEwKSk6bmV3IGYuRXZlbnQoYSxlKX07Zi5FdmVudC5wcm90b3R5cGU9e2lzRGVmYXVsdFByZXZlbnRlZDpGLGlzUHJvcGFnYXRpb25TdG9wcGVkOkYsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6RixwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1EO2EmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9RDthJiYoYS5zdG9wUHJvcGFnYXRpb24mJgphLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9RDthJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTt0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX07Zi5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihhLGUpe2YuZXZlbnQuc3BlY2lhbFthXT17ZGVsZWdhdGVUeXBlOmUsYmluZFR5cGU6ZSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnJlbGF0ZWRUYXJnZXQsZD1hLmhhbmRsZU9iajtyZXR1cm4oIWN8fGMhPT10aGlzJiYhZi5jb250YWlucyh0aGlzLGMpKSYmKGEudHlwZT1kLm9yaWdUeXBlLApiPWQuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWUpLGJ9fX0pO3Muc3VibWl0QnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIGYubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgZi5ldmVudC5hZGQodGhpcywiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IixmdW5jdGlvbihhKXthPWEudGFyZ2V0OyhhPWYubm9kZU5hbWUoYSwiaW5wdXQiKXx8Zi5ub2RlTmFtZShhLCJidXR0b24iKT9hLmZvcm06dm9pZCAwKSYmIWYuX2RhdGEoYSwic3VibWl0QnViYmxlcyIpJiYoZi5ldmVudC5hZGQoYSwic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9KSxmLl9kYXRhKGEsInN1Ym1pdEJ1YmJsZXMiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmCmYuZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsdGhpcy5wYXJlbnROb2RlLGEsITApKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gZi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1pdCIpfX0pO3MuY2hhbmdlQnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFdhLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKGYuZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksZi5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9CiExKTtmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KSksITEpOnZvaWQgZi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7YT1hLnRhcmdldDtXYS50ZXN0KGEubm9kZU5hbWUpJiYhZi5fZGF0YShhLCJjaGFuZ2VCdWJibGVzIikmJihmLmV2ZW50LmFkZChhLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7IXRoaXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fGYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksZi5fZGF0YShhLCJjaGFuZ2VCdWJibGVzIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgZT1hLnRhcmdldDtyZXR1cm4gdGhpcyE9PWV8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHwicmFkaW8iIT09ZS50eXBlJiYiY2hlY2tib3giIT09ZS50eXBlP2EuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOgp2b2lkIDB9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZXZlbnQucmVtb3ZlKHRoaXMsIi5fY2hhbmdlIiksIVdhLnRlc3QodGhpcy5ub2RlTmFtZSl9fSk7cy5mb2N1c2luQnViYmxlc3x8Zi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGUpe3ZhciBiPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoZSxhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtlXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZD1mLl9kYXRhKGMsZSk7ZHx8Yy5hZGRFdmVudExpc3RlbmVyKGEsYiwhMCk7Zi5fZGF0YShjLGUsKGR8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBjPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxkPWYuX2RhdGEoYyxlKS0xO2Q/Zi5fZGF0YShjLGUsZCk6KGMucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGIsITApLGYuX3JlbW92ZURhdGEoYywKZSkpfX19KTtmLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxlLGIsYyxkKXt2YXIgZyxoO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7InN0cmluZyIhPXR5cGVvZiBlJiYoYj1ifHxlLGU9dm9pZCAwKTtmb3IoZyBpbiBhKXRoaXMub24oZyxlLGIsYVtnXSxkKTtyZXR1cm4gdGhpc31pZihudWxsPT1iJiZudWxsPT1jPyhjPWUsYj1lPXZvaWQgMCk6bnVsbD09YyYmKCJzdHJpbmciPT10eXBlb2YgZT8oYz1iLGI9dm9pZCAwKTooYz1iLGI9ZSxlPXZvaWQgMCkpLCExPT09YyljPUY7ZWxzZSBpZighYylyZXR1cm4gdGhpcztyZXR1cm4gMT09PWQmJihoPWMsYz1mdW5jdGlvbihhKXtyZXR1cm4gZigpLm9mZihhKSxoLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYy5ndWlkPWguZ3VpZHx8KGguZ3VpZD1mLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQuYWRkKHRoaXMsYSxjLGIsZSl9KX0sb25lOmZ1bmN0aW9uKGEsZSxmLGIpe3JldHVybiB0aGlzLm9uKGEsZSxmLGIsMSl9LApvZmY6ZnVuY3Rpb24oYSxlLGIpe3ZhciBjLGQ7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGM9YS5oYW5kbGVPYmosZihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoYy5uYW1lc3BhY2U/Yy5vcmlnVHlwZSsiLiIrYy5uYW1lc3BhY2U6Yy5vcmlnVHlwZSxjLnNlbGVjdG9yLGMuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihkIGluIGEpdGhpcy5vZmYoZCxlLGFbZF0pO3JldHVybiB0aGlzfXJldHVybighMT09PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmKGI9ZSxlPXZvaWQgMCksITE9PT1iJiYoYj1GKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLGEsYixlKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQudHJpZ2dlcihhLGUsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2YuZXZlbnQudHJpZ2dlcihhLAplLGIsITApOnZvaWQgMH19KTt2YXIgZmI9ImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLFliPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2cscGI9UmVnRXhwKCJceDNjKD86IitmYisiKVtcXHMvXHgzZV0iLCJpIiksWGE9L15ccysvLHFiPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2kscmI9LzwoW1x3Ol0rKS8sc2I9Lzx0Ym9keS9pLFpiPS88fCYjP1x3KzsvLCRiPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksYWM9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksdGI9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLEtiPS9edHJ1ZVwvKC4qKS8sCmJjPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZyxYPXtvcHRpb246WzEsIlx4M2NzZWxlY3QgbXVsdGlwbGVceDNkJ211bHRpcGxlJ1x4M2UiLCJceDNjL3NlbGVjdFx4M2UiXSxsZWdlbmQ6WzEsIlx4M2NmaWVsZHNldFx4M2UiLCJceDNjL2ZpZWxkc2V0XHgzZSJdLGFyZWE6WzEsIlx4M2NtYXBceDNlIiwiXHgzYy9tYXBceDNlIl0scGFyYW06WzEsIlx4M2NvYmplY3RceDNlIiwiXHgzYy9vYmplY3RceDNlIl0sdGhlYWQ6WzEsIlx4M2N0YWJsZVx4M2UiLCJceDNjL3RhYmxlXHgzZSJdLHRyOlsyLCJceDNjdGFibGVceDNlXHgzY3Rib2R5XHgzZSIsIlx4M2MvdGJvZHlceDNlXHgzYy90YWJsZVx4M2UiXSxjb2w6WzIsIlx4M2N0YWJsZVx4M2VceDNjdGJvZHlceDNlXHgzYy90Ym9keVx4M2VceDNjY29sZ3JvdXBceDNlIiwiXHgzYy9jb2xncm91cFx4M2VceDNjL3RhYmxlXHgzZSJdLHRkOlszLCJceDNjdGFibGVceDNlXHgzY3Rib2R5XHgzZVx4M2N0clx4M2UiLAoiXHgzYy90clx4M2VceDNjL3Rib2R5XHgzZVx4M2MvdGFibGVceDNlIl0sX2RlZmF1bHQ6cy5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWFx4M2NkaXZceDNlIiwiXHgzYy9kaXZceDNlIl19LFlhPXUoeCkuYXBwZW5kQ2hpbGQoeC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7WC5vcHRncm91cD1YLm9wdGlvbjtYLnRib2R5PVgudGZvb3Q9WC5jb2xncm91cD1YLmNhcHRpb249WC50aGVhZDtYLnRoPVgudGQ7Zi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsZSxiKXt2YXIgYyxkLGcsaCxsLG09Zi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWYocy5odG1sNUNsb25lfHxmLmlzWE1MRG9jKGEpfHwhcGIudGVzdCgiXHgzYyIrYS5ub2RlTmFtZSsiXHgzZSIpP2c9YS5jbG9uZU5vZGUoITApOihZYS5pbm5lckhUTUw9YS5vdXRlckhUTUwsWWEucmVtb3ZlQ2hpbGQoZz1ZYS5maXJzdENoaWxkKSksIShzLm5vQ2xvbmVFdmVudCYmcy5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJgoxMSE9PWEubm9kZVR5cGV8fGYuaXNYTUxEb2MoYSkpKWZvcihjPXQoZyksbD10KGEpLGg9MDtudWxsIT0oZD1sW2hdKTsrK2gpaWYoY1toXSl7dmFyIG49Y1toXSxxPXZvaWQgMCxwPXZvaWQgMCxFPXZvaWQgMDtpZigxPT09bi5ub2RlVHlwZSl7aWYocT1uLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIXMubm9DbG9uZUV2ZW50JiZuW2YuZXhwYW5kb10pe0U9Zi5fZGF0YShuKTtmb3IocCBpbiBFLmV2ZW50cylmLnJlbW92ZUV2ZW50KG4scCxFLmhhbmRsZSk7bi5yZW1vdmVBdHRyaWJ1dGUoZi5leHBhbmRvKX0ic2NyaXB0Ij09PXEmJm4udGV4dCE9PWQudGV4dD8oTyhuKS50ZXh0PWQudGV4dCxSKG4pKToib2JqZWN0Ij09PXE/KG4ucGFyZW50Tm9kZSYmKG4ub3V0ZXJIVE1MPWQub3V0ZXJIVE1MKSxzLmh0bWw1Q2xvbmUmJmQuaW5uZXJIVE1MJiYhZi50cmltKG4uaW5uZXJIVE1MKSYmKG4uaW5uZXJIVE1MPWQuaW5uZXJIVE1MKSk6ImlucHV0Ij09PXEmJlRhLnRlc3QoZC50eXBlKT8KKG4uZGVmYXVsdENoZWNrZWQ9bi5jaGVja2VkPWQuY2hlY2tlZCxuLnZhbHVlIT09ZC52YWx1ZSYmKG4udmFsdWU9ZC52YWx1ZSkpOiJvcHRpb24iPT09cT9uLmRlZmF1bHRTZWxlY3RlZD1uLnNlbGVjdGVkPWQuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09cXx8InRleHRhcmVhIj09PXEpJiYobi5kZWZhdWx0VmFsdWU9ZC5kZWZhdWx0VmFsdWUpfX1pZihlKWlmKGIpZm9yKGw9bHx8dChhKSxjPWN8fHQoZyksaD0wO251bGwhPShkPWxbaF0pO2grKylLKGQsY1toXSk7ZWxzZSBLKGEsZyk7cmV0dXJuIGM9dChnLCJzY3JpcHQiKSwwPGMubGVuZ3RoJiZZKGMsIW0mJnQoYSwic2NyaXB0IikpLGd9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxlLGIsYyl7Zm9yKHZhciBkLGcsaCxsLG0sbixxLHA9YS5sZW5ndGgsRT11KGUpLHc9W10sSj0wO3A+SjtKKyspaWYoZz1hW0pdLGd8fDA9PT1nKWlmKCJvYmplY3QiPT09Zi50eXBlKGcpKWYubWVyZ2UodyxnLm5vZGVUeXBlP1tnXTpnKTtlbHNlIGlmKFpiLnRlc3QoZykpe2w9Cmx8fEUuYXBwZW5kQ2hpbGQoZS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7bT0ocmIuZXhlYyhnKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKTtxPVhbbV18fFguX2RlZmF1bHQ7bC5pbm5lckhUTUw9cVsxXStnLnJlcGxhY2UocWIsIlx4M2MkMVx4M2VceDNjLyQyXHgzZSIpK3FbMl07Zm9yKGQ9cVswXTtkLS07KWw9bC5sYXN0Q2hpbGQ7aWYoIXMubGVhZGluZ1doaXRlc3BhY2UmJlhhLnRlc3QoZykmJncucHVzaChlLmNyZWF0ZVRleHROb2RlKFhhLmV4ZWMoZylbMF0pKSwhcy50Ym9keSlmb3IoZD0oZz0idGFibGUiIT09bXx8c2IudGVzdChnKT8iXHgzY3RhYmxlXHgzZSIhPT1xWzFdfHxzYi50ZXN0KGcpPzA6bDpsLmZpcnN0Q2hpbGQpJiZnLmNoaWxkTm9kZXMubGVuZ3RoO2QtLTspZi5ub2RlTmFtZShuPWcuY2hpbGROb2Rlc1tkXSwidGJvZHkiKSYmIW4uY2hpbGROb2Rlcy5sZW5ndGgmJmcucmVtb3ZlQ2hpbGQobik7Zi5tZXJnZSh3LGwuY2hpbGROb2Rlcyk7Zm9yKGwudGV4dENvbnRlbnQ9CiIiO2wuZmlyc3RDaGlsZDspbC5yZW1vdmVDaGlsZChsLmZpcnN0Q2hpbGQpO2w9RS5sYXN0Q2hpbGR9ZWxzZSB3LnB1c2goZS5jcmVhdGVUZXh0Tm9kZShnKSk7bCYmRS5yZW1vdmVDaGlsZChsKTtzLmFwcGVuZENoZWNrZWR8fGYuZ3JlcCh0KHcsImlucHV0IiksSCk7Zm9yKEo9MDtnPXdbSisrXTspaWYoKCFjfHwtMT09PWYuaW5BcnJheShnLGMpKSYmKGg9Zi5jb250YWlucyhnLm93bmVyRG9jdW1lbnQsZyksbD10KEUuYXBwZW5kQ2hpbGQoZyksInNjcmlwdCIpLGgmJlkobCksYikpZm9yKGQ9MDtnPWxbZCsrXTspdGIudGVzdChnLnR5cGV8fCIiKSYmYi5wdXNoKGcpO3JldHVybiBFfSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSxlKXtmb3IodmFyIGIsYyxkLGcsaD0wLGw9Zi5leHBhbmRvLG09Zi5jYWNoZSxuPXMuZGVsZXRlRXhwYW5kbyxxPWYuZXZlbnQuc3BlY2lhbDtudWxsIT0oYj1hW2hdKTtoKyspaWYoKGV8fGYuYWNjZXB0RGF0YShiKSkmJihkPWJbbF0sZz1kJiZtW2RdKSl7aWYoZy5ldmVudHMpZm9yKGMgaW4gZy5ldmVudHMpcVtjXT8KZi5ldmVudC5yZW1vdmUoYixjKTpmLnJlbW92ZUV2ZW50KGIsYyxnLmhhbmRsZSk7bVtkXSYmKGRlbGV0ZSBtW2RdLG4/ZGVsZXRlIGJbbF06dHlwZW9mIGIucmVtb3ZlQXR0cmlidXRlIT09Vz9iLnJlbW92ZUF0dHJpYnV0ZShsKTpiW2xdPW51bGwsamEucHVzaChkKSl9fX0pO2YuZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBjYSh0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hP2YudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fHgpLmNyZWF0ZVRleHROb2RlKGEpKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fHYodGhpcyxhKS5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLApmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGU9dih0aGlzLGEpO2UuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihhLGUpe2Zvcih2YXIgYixjPWE/Zi5maWx0ZXIoYSx0aGlzKTp0aGlzLGQ9MDtudWxsIT0oYj1jW2RdKTtkKyspZXx8MSE9PWIubm9kZVR5cGV8fGYuY2xlYW5EYXRhKHQoYikpLGIucGFyZW50Tm9kZSYmCihlJiZmLmNvbnRhaW5zKGIub3duZXJEb2N1bWVudCxiKSYmWSh0KGIsInNjcmlwdCIpKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxlPTA7bnVsbCE9KGE9dGhpc1tlXSk7ZSsrKXtmb3IoMT09PWEubm9kZVR5cGUmJmYuY2xlYW5EYXRhKHQoYSwhMSkpO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmZi5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGE9bnVsbD09YT8hMTphLGU9bnVsbD09ZT9hOmUsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsZSl9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gY2EodGhpcyxmdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdfHx7fSxjPTAsZD10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1hKXJldHVybiAxPT09CmIubm9kZVR5cGU/Yi5pbm5lckhUTUwucmVwbGFjZShZYiwiIik6dm9pZCAwO2lmKCEoInN0cmluZyIhPXR5cGVvZiBhfHwkYi50ZXN0KGEpfHwhcy5odG1sU2VyaWFsaXplJiZwYi50ZXN0KGEpfHwhcy5sZWFkaW5nV2hpdGVzcGFjZSYmWGEudGVzdChhKXx8WFsocmIuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pKXthPWEucmVwbGFjZShxYiwiXHgzYyQxXHgzZVx4M2MvJDJceDNlIik7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118fHt9LDE9PT1iLm5vZGVUeXBlJiYoZi5jbGVhbkRhdGEodChiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGcpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oZSl7YT10aGlzLnBhcmVudE5vZGU7Zi5jbGVhbkRhdGEodCh0aGlzKSk7CmEmJmEucmVwbGFjZUNoaWxkKGUsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxlKXthPWlhLmFwcGx5KFtdLGEpO3ZhciBiLGMsZCxnLGg9MCxsPXRoaXMubGVuZ3RoLG09dGhpcyxuPWwtMSxxPWFbMF0scD1mLmlzRnVuY3Rpb24ocSk7aWYocHx8MTxsJiYic3RyaW5nIj09dHlwZW9mIHEmJiFzLmNoZWNrQ2xvbmUmJmFjLnRlc3QocSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihmKXt2YXIgYj1tLmVxKGYpO3AmJihhWzBdPXEuY2FsbCh0aGlzLGYsYi5odG1sKCkpKTtiLmRvbU1hbmlwKGEsZSl9KTtpZihsJiYoZz1mLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYj1nLmZpcnN0Q2hpbGQsMT09PWcuY2hpbGROb2Rlcy5sZW5ndGgmJihnPWIpLGIpKXtkPWYubWFwKHQoZywic2NyaXB0IiksCk8pO2ZvcihjPWQubGVuZ3RoO2w+aDtoKyspYj1nLGghPT1uJiYoYj1mLmNsb25lKGIsITAsITApLGMmJmYubWVyZ2UoZCx0KGIsInNjcmlwdCIpKSksZS5jYWxsKHRoaXNbaF0sYixoKTtpZihjKWZvcihnPWRbZC5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxmLm1hcChkLFIpLGg9MDtjPmg7aCsrKWI9ZFtoXSx0Yi50ZXN0KGIudHlwZXx8IiIpJiYhZi5fZGF0YShiLCJnbG9iYWxFdmFsIikmJmYuY29udGFpbnMoZyxiKSYmKGIuc3JjP2YuX2V2YWxVcmwmJmYuX2V2YWxVcmwoYi5zcmMpOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmMsIiIpKSk7Zz1iPW51bGx9cmV0dXJuIHRoaXN9fSk7Zi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxlKXtmLmZuW2FdPQpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPVtdLGQ9ZihhKSxnPWQubGVuZ3RoLTE7Zz49YjtiKyspYT1iPT09Zz90aGlzOnRoaXMuY2xvbmUoITApLGYoZFtiXSlbZV0oYSksVmEuYXBwbHkoYyxhLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYyl9fSk7dmFyIGxhLGdiPXt9OyFmdW5jdGlvbigpe3ZhciBhO3Muc2hyaW5rV3JhcEJsb2Nrcz1mdW5jdGlvbigpe2lmKG51bGwhPWEpcmV0dXJuIGE7YT0hMTt2YXIgZSxmLGI7cmV0dXJuIGY9eC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGYmJmYuc3R5bGU/KGU9eC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPXguY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsZi5hcHBlbmRDaGlsZChiKS5hcHBlbmRDaGlsZChlKSx0eXBlb2YgZS5zdHlsZS56b29tIT09VyYmKGUuc3R5bGUuY3NzVGV4dD0KIi13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGUuYXBwZW5kQ2hpbGQoeC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09ZS5vZmZzZXRXaWR0aCksZi5yZW1vdmVDaGlsZChiKSxhKTp2b2lkIDB9fSgpO3ZhciB1Yj0vXm1hcmdpbi8sSGE9UmVnRXhwKCJeKCIrTmErIikoPyFweClbYS16JV0rJCIsImkiKSxlYSxtYSxjYz0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87Yi5nZXRDb21wdXRlZFN0eWxlPyhlYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lm9wZW5lcj9hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpOmIuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpfSwKbWE9ZnVuY3Rpb24oYSxlLGIpe3ZhciBjLGQsZyxoLGw9YS5zdHlsZTtyZXR1cm4gYj1ifHxlYShhKSxoPWI/Yi5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxiW2VdOnZvaWQgMCxiJiYoIiIhPT1ofHxmLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGg9Zi5zdHlsZShhLGUpKSxIYS50ZXN0KGgpJiZ1Yi50ZXN0KGUpJiYoYz1sLndpZHRoLGQ9bC5taW5XaWR0aCxnPWwubWF4V2lkdGgsbC5taW5XaWR0aD1sLm1heFdpZHRoPWwud2lkdGg9aCxoPWIud2lkdGgsbC53aWR0aD1jLGwubWluV2lkdGg9ZCxsLm1heFdpZHRoPWcpKSx2b2lkIDA9PT1oP2g6aCsiIn0pOnguZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKGVhPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sbWE9ZnVuY3Rpb24oYSxlLGYpe3ZhciBiLGMsZCxnLGg9YS5zdHlsZTtyZXR1cm4gZj1mfHxlYShhKSxnPWY/ZltlXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtlXSYmKGc9aFtlXSksSGEudGVzdChnKSYmCiFjYy50ZXN0KGUpJiYoYj1oLmxlZnQsYz1hLnJ1bnRpbWVTdHlsZSxkPWMmJmMubGVmdCxkJiYoYy5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQpLGgubGVmdD0iZm9udFNpemUiPT09ZT8iMWVtIjpnLGc9aC5waXhlbExlZnQrInB4IixoLmxlZnQ9YixkJiYoYy5sZWZ0PWQpKSx2b2lkIDA9PT1nP2c6ZysiInx8ImF1dG8ifSk7IWZ1bmN0aW9uKCl7dmFyIGEsZSxjLGQsZyxoLGw7aWYoYT14LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGEuaW5uZXJIVE1MPSIgIFx4M2NsaW5rL1x4M2VceDNjdGFibGVceDNlXHgzYy90YWJsZVx4M2VceDNjYSBocmVmXHgzZCcvYSdceDNlYVx4M2MvYVx4M2VceDNjaW5wdXQgdHlwZVx4M2QnY2hlY2tib3gnL1x4M2UiLGM9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGU9YyYmYy5zdHlsZSl7ZS5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiO3Mub3BhY2l0eT0iMC41Ij09PWUub3BhY2l0eTtzLmNzc0Zsb2F0PSEhZS5jc3NGbG9hdDthLnN0eWxlLmJhY2tncm91bmRDbGlwPQoiY29udGVudC1ib3giO2EuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIjtzLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09YS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcDtzLmJveFNpemluZz0iIj09PWUuYm94U2l6aW5nfHwiIj09PWUuTW96Qm94U2l6aW5nfHwiIj09PWUuV2Via2l0Qm94U2l6aW5nO2YuZXh0ZW5kKHMse3JlbGlhYmxlSGlkZGVuT2Zmc2V0czpmdW5jdGlvbigpe3JldHVybiBudWxsPT1oJiZtKCksaH0sYm94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZyYmbSgpLGd9LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZCYmbSgpLGR9LHJlbGlhYmxlTWFyZ2luUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09bCYmbSgpLGx9fSk7dmFyIG09ZnVuY3Rpb24oKXt2YXIgYSxlLGYsYzsoZT14LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pJiZlLnN0eWxlJiYoYT14LmNyZWF0ZUVsZW1lbnQoImRpdiIpLApmPXguY3JlYXRlRWxlbWVudCgiZGl2IiksZi5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsZS5hcHBlbmRDaGlsZChmKS5hcHBlbmRDaGlsZChhKSxhLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixkPWc9ITEsbD0hMCxiLmdldENvbXB1dGVkU3R5bGUmJihkPSIxJSIhPT0oYi5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCl8fHt9KS50b3AsZz0iNHB4Ij09PShiLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKXx8e3dpZHRoOiI0cHgifSkud2lkdGgsYz1hLmFwcGVuZENoaWxkKHguY3JlYXRlRWxlbWVudCgiZGl2IikpLGMuc3R5bGUuY3NzVGV4dD0KYS5zdHlsZS5jc3NUZXh0PSItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjAiLGMuc3R5bGUubWFyZ2luUmlnaHQ9Yy5zdHlsZS53aWR0aD0iMCIsYS5zdHlsZS53aWR0aD0iMXB4IixsPSFwYXJzZUZsb2F0KChiLmdldENvbXB1dGVkU3R5bGUoYyxudWxsKXx8e30pLm1hcmdpblJpZ2h0KSxhLnJlbW92ZUNoaWxkKGMpKSxhLmlubmVySFRNTD0iXHgzY3RhYmxlXHgzZVx4M2N0clx4M2VceDNjdGRceDNlXHgzYy90ZFx4M2VceDNjdGRceDNldFx4M2MvdGRceDNlXHgzYy90clx4M2VceDNjL3RhYmxlXHgzZSIsYz1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGNbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsaD0wPT09Y1swXS5vZmZzZXRIZWlnaHQsCmgmJihjWzBdLnN0eWxlLmRpc3BsYXk9IiIsY1sxXS5zdHlsZS5kaXNwbGF5PSJub25lIixoPTA9PT1jWzBdLm9mZnNldEhlaWdodCksZS5yZW1vdmVDaGlsZChmKSl9fX0oKTtmLnN3YXA9ZnVuY3Rpb24oYSxlLGYsYil7dmFyIGMsZD17fTtmb3IoYyBpbiBlKWRbY109YS5zdHlsZVtjXSxhLnN0eWxlW2NdPWVbY107Zj1mLmFwcGx5KGEsYnx8W10pO2ZvcihjIGluIGUpYS5zdHlsZVtjXT1kW2NdO3JldHVybiBmfTt2YXIgWmE9L2FscGhhXChbXildKlwpL2ksZGM9L29wYWNpdHlccyo9XHMqKFteKV0qKS8sZWM9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLE1iPVJlZ0V4cCgiXigiK05hKyIpKC4qKSQiLCJpIiksZmM9UmVnRXhwKCJeKFsrLV0pXHgzZCgiK05hKyIpIiwiaSIpLGdjPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSx2Yj17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn0saGI9WyJXZWJraXQiLAoiTyIsIk1veiIsIm1zIl07Zi5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxlKXtpZihlKXt2YXIgZj1tYShhLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1mPyIxIjpmfX19fSxjc3NOdW1iZXI6e2NvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOnMuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsZSxiLGMpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGQsZyxoLGw9Zi5jYW1lbENhc2UoZSksbT1hLnN0eWxlO2lmKGU9Zi5jc3NQcm9wc1tsXXx8KGYuY3NzUHJvcHNbbF09R2EobSxsKSksaD1mLmNzc0hvb2tzW2VdfHxmLmNzc0hvb2tzW2xdLAp2b2lkIDA9PT1iKXJldHVybiBoJiYiZ2V0ImluIGgmJnZvaWQgMCE9PShkPWguZ2V0KGEsITEsYykpP2Q6bVtlXTtpZihnPXR5cGVvZiBiLCJzdHJpbmciPT09ZyYmKGQ9ZmMuZXhlYyhiKSkmJihiPShkWzFdKzEpKmRbMl0rcGFyc2VGbG9hdChmLmNzcyhhLGUpKSxnPSJudW1iZXIiKSxudWxsIT1iJiZiPT09YiYmKCJudW1iZXIiIT09Z3x8Zi5jc3NOdW1iZXJbbF18fChiKz0icHgiKSxzLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1ifHwwIT09ZS5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChtW2VdPSJpbmhlcml0IiksIShoJiYic2V0ImluIGgmJnZvaWQgMD09PShiPWguc2V0KGEsYixjKSkpKSl0cnl7bVtlXT1ifWNhdGNoKG4pe319fSxjc3M6ZnVuY3Rpb24oYSxlLGIsYyl7dmFyIGQsZyxoLGw9Zi5jYW1lbENhc2UoZSk7cmV0dXJuIGU9Zi5jc3NQcm9wc1tsXXx8KGYuY3NzUHJvcHNbbF09R2EoYS5zdHlsZSxsKSksaD1mLmNzc0hvb2tzW2VdfHxmLmNzc0hvb2tzW2xdLGgmJiJnZXQiaW4KaCYmKGc9aC5nZXQoYSwhMCxiKSksdm9pZCAwPT09ZyYmKGc9bWEoYSxlLGMpKSwibm9ybWFsIj09PWcmJmUgaW4gdmImJihnPXZiW2VdKSwiIj09PWJ8fGI/KGQ9cGFyc2VGbG9hdChnKSwhMD09PWJ8fGYuaXNOdW1lcmljKGQpP2R8fDA6Zyk6Z319KTtmLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsZSl7Zi5jc3NIb29rc1tlXT17Z2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj9lYy50ZXN0KGYuY3NzKGEsImRpc3BsYXkiKSkmJjA9PT1hLm9mZnNldFdpZHRoP2Yuc3dhcChhLGdjLGZ1bmN0aW9uKCl7cmV0dXJuIENhKGEsZSxjKX0pOkNhKGEsZSxjKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YyYmZWEoYSk7cmV0dXJuIGliKGEsYixjP0JhKGEsZSxjLHMuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1mLmNzcyhhLCJib3hTaXppbmciLCExLGQpLGQpOjApfX19KTtzLm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLAplKXtyZXR1cm4gZGMudGVzdCgoZSYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPzAuMDEqcGFyc2VGbG9hdChSZWdFeHAuJDEpKyIiOmU/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxlKXt2YXIgYj1hLnN0eWxlLGM9YS5jdXJyZW50U3R5bGUsZD1mLmlzTnVtZXJpYyhlKT8iYWxwaGEob3BhY2l0eVx4M2QiKzEwMCplKyIpIjoiIixnPWMmJmMuZmlsdGVyfHxiLmZpbHRlcnx8IiI7Yi56b29tPTE7KDE8PWV8fCIiPT09ZSkmJiIiPT09Zi50cmltKGcucmVwbGFjZShaYSwiIikpJiZiLnJlbW92ZUF0dHJpYnV0ZSYmKGIucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwiIj09PWV8fGMmJiFjLmZpbHRlcil8fChiLmZpbHRlcj1aYS50ZXN0KGcpP2cucmVwbGFjZShaYSxkKTpnKyIgIitkKX19KTtmLmNzc0hvb2tzLm1hcmdpblJpZ2h0PWJhKHMucmVsaWFibGVNYXJnaW5SaWdodCxmdW5jdGlvbihhLGUpe3JldHVybiBlP2Yuc3dhcChhLAp7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sbWEsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pO2YuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsZSl7Zi5jc3NIb29rc1thK2VdPXtleHBhbmQ6ZnVuY3Rpb24oZil7dmFyIGI9MCxjPXt9O2ZvcihmPSJzdHJpbmciPT10eXBlb2YgZj9mLnNwbGl0KCIgIik6W2ZdOzQ+YjtiKyspY1thK2thW2JdK2VdPWZbYl18fGZbYi0yXXx8ZlswXTtyZXR1cm4gY319O3ViLnRlc3QoYSl8fChmLmNzc0hvb2tzW2ErZV0uc2V0PWliKX0pO2YuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gY2EodGhpcyxmdW5jdGlvbihhLGUsYil7dmFyIGMsZD17fSxnPTA7aWYoZi5pc0FycmF5KGUpKXtiPWVhKGEpO2ZvcihjPWUubGVuZ3RoO2M+ZztnKyspZFtlW2ddXT1mLmNzcyhhLGVbZ10sITEsYik7cmV0dXJuIGR9cmV0dXJuIHZvaWQgMCE9PWI/Zi5zdHlsZShhLGUsYik6Zi5jc3MoYSxlKX0sCmEsZSwxPGFyZ3VtZW50cy5sZW5ndGgpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIEFhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIEFhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe3dhKHRoaXMpP2YodGhpcykuc2hvdygpOmYodGhpcykuaGlkZSgpfSl9fSk7Zi5Ud2Vlbj1FO0UucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpFLGluaXQ6ZnVuY3Rpb24oYSxlLGIsYyxkLGcpe3RoaXMuZWxlbT1hO3RoaXMucHJvcD1iO3RoaXMuZWFzaW5nPWR8fCJzd2luZyI7dGhpcy5vcHRpb25zPWU7dGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpO3RoaXMuZW5kPWM7dGhpcy51bml0PWd8fChmLmNzc051bWJlcltiXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9RS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6CkUucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBlLGI9RS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5wb3M9ZT10aGlzLm9wdGlvbnMuZHVyYXRpb24/Zi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqZSt0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxiJiZiLnNldD9iLnNldCh0aGlzKTpFLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319O0UucHJvdG90eXBlLmluaXQucHJvdG90eXBlPUUucHJvdG90eXBlO0UucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBlO3JldHVybiBudWxsPT1hLmVsZW1bYS5wcm9wXXx8YS5lbGVtLnN0eWxlJiZudWxsIT1hLmVsZW0uc3R5bGVbYS5wcm9wXT8KKGU9Zi5jc3MoYS5lbGVtLGEucHJvcCwiIiksZSYmImF1dG8iIT09ZT9lOjApOmEuZWxlbVthLnByb3BdfSxzZXQ6ZnVuY3Rpb24oYSl7Zi5meC5zdGVwW2EucHJvcF0/Zi5meC5zdGVwW2EucHJvcF0oYSk6YS5lbGVtLnN0eWxlJiYobnVsbCE9YS5lbGVtLnN0eWxlW2YuY3NzUHJvcHNbYS5wcm9wXV18fGYuY3NzSG9va3NbYS5wcm9wXSk/Zi5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCk6YS5lbGVtW2EucHJvcF09YS5ub3d9fX07RS5wcm9wSG9va3Muc2Nyb2xsVG9wPUUucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX07Zi5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIDAuNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9fTtmLmZ4PUUucHJvdG90eXBlLmluaXQ7Zi5meC5zdGVwPXt9Owp2YXIgc2EsT2EsaGM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHdiPVJlZ0V4cCgiXig/OihbKy1dKVx4M2R8KSgiK05hKyIpKFthLXolXSopJCIsImkiKSxpYz0vcXVldWVIb29rcyQvLElhPVtmdW5jdGlvbihhLGUsYil7dmFyIGMsZCxnLGgsbCxtLG4scT10aGlzLHA9e30sdD1hLnN0eWxlLEU9YS5ub2RlVHlwZSYmd2EoYSksdz1mLl9kYXRhKGEsImZ4c2hvdyIpO2IucXVldWV8fChoPWYuX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGw9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGwoKX0pLGgudW5xdWV1ZWQrKyxxLmFsd2F5cyhmdW5jdGlvbigpe3EuYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tO2YucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSk7MT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGV8fCJ3aWR0aCJpbiBlKSYmKGIub3ZlcmZsb3c9W3Qub3ZlcmZsb3csCnQub3ZlcmZsb3dYLHQub3ZlcmZsb3dZXSxtPWYuY3NzKGEsImRpc3BsYXkiKSxuPSJub25lIj09PW0/Zi5fZGF0YShhLCJvbGRkaXNwbGF5Iil8fHZhKGEubm9kZU5hbWUpOm0sImlubGluZSI9PT1uJiYibm9uZSI9PT1mLmNzcyhhLCJmbG9hdCIpJiYocy5pbmxpbmVCbG9ja05lZWRzTGF5b3V0JiYiaW5saW5lIiE9PXZhKGEubm9kZU5hbWUpP3Quem9vbT0xOnQuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpO2Iub3ZlcmZsb3cmJih0Lm92ZXJmbG93PSJoaWRkZW4iLHMuc2hyaW5rV3JhcEJsb2NrcygpfHxxLmFsd2F5cyhmdW5jdGlvbigpe3Qub3ZlcmZsb3c9Yi5vdmVyZmxvd1swXTt0Lm92ZXJmbG93WD1iLm92ZXJmbG93WzFdO3Qub3ZlcmZsb3dZPWIub3ZlcmZsb3dbMl19KSk7Zm9yKGMgaW4gZSlpZihkPWVbY10saGMuZXhlYyhkKSl7aWYoZGVsZXRlIGVbY10sZz1nfHwidG9nZ2xlIj09PWQsZD09PShFPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1kfHwhd3x8dm9pZCAwPT09CndbY10pY29udGludWU7RT0hMH1wW2NdPXcmJndbY118fGYuc3R5bGUoYSxjKX1lbHNlIG09dm9pZCAwO2lmKGYuaXNFbXB0eU9iamVjdChwKSkiaW5saW5lIj09PSgibm9uZSI9PT1tP3ZhKGEubm9kZU5hbWUpOm0pJiYodC5kaXNwbGF5PW0pO2Vsc2UgZm9yKGMgaW4gdz8iaGlkZGVuImluIHcmJihFPXcuaGlkZGVuKTp3PWYuX2RhdGEoYSwiZnhzaG93Iix7fSksZyYmKHcuaGlkZGVuPSFFKSxFP2YoYSkuc2hvdygpOnEuZG9uZShmdW5jdGlvbigpe2YoYSkuaGlkZSgpfSkscS5kb25lKGZ1bmN0aW9uKCl7dmFyIGU7Zi5fcmVtb3ZlRGF0YShhLCJmeHNob3ciKTtmb3IoZSBpbiBwKWYuc3R5bGUoYSxlLHBbZV0pfSkscCllPVUoRT93W2NdOjAsYyxxKSxjIGluIHd8fCh3W2NdPWUuc3RhcnQsRSYmKGUuZW5kPWUuc3RhcnQsZS5zdGFydD0id2lkdGgiPT09Y3x8ImhlaWdodCI9PT1jPzE6MCkpfV0sRGE9eyIqIjpbZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzLmNyZWF0ZVR3ZWVuKGEsZSksCmM9Yi5jdXIoKSxkPXdiLmV4ZWMoZSksZz1kJiZkWzNdfHwoZi5jc3NOdW1iZXJbYV0/IiI6InB4IiksaD0oZi5jc3NOdW1iZXJbYV18fCJweCIhPT1nJiYrYykmJndiLmV4ZWMoZi5jc3MoYi5lbGVtLGEpKSxsPTEsbT0yMDtpZihoJiZoWzNdIT09Zyl7Zz1nfHxoWzNdO2Q9ZHx8W107aD0rY3x8MTtkbyBsPWx8fCIuNSIsaC89bCxmLnN0eWxlKGIuZWxlbSxhLGgrZyk7d2hpbGUobCE9PShsPWIuY3VyKCkvYykmJjEhPT1sJiYtLW0pfXJldHVybiBkJiYoaD1iLnN0YXJ0PStofHwrY3x8MCxiLnVuaXQ9ZyxiLmVuZD1kWzFdP2grKGRbMV0rMSkqZFsyXTorZFsyXSksYn1dfTtmLkFuaW1hdGlvbj1mLmV4dGVuZChFYSx7dHdlZW5lcjpmdW5jdGlvbihhLGUpe2YuaXNGdW5jdGlvbihhKT8oZT1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYixjPTAsZD1hLmxlbmd0aDtkPmM7YysrKWI9YVtjXSxEYVtiXT1EYVtiXXx8W10sRGFbYl0udW5zaGlmdChlKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsCmUpe2U/SWEudW5zaGlmdChhKTpJYS5wdXNoKGEpfX0pO2Yuc3BlZWQ9ZnVuY3Rpb24oYSxlLGIpe3ZhciBjPWEmJiJvYmplY3QiPT10eXBlb2YgYT9mLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Ynx8IWImJmV8fGYuaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpiJiZlfHxlJiYhZi5pc0Z1bmN0aW9uKGUpJiZlfTtyZXR1cm4gYy5kdXJhdGlvbj1mLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgYy5kdXJhdGlvbj9jLmR1cmF0aW9uOmMuZHVyYXRpb24gaW4gZi5meC5zcGVlZHM/Zi5meC5zcGVlZHNbYy5kdXJhdGlvbl06Zi5meC5zcGVlZHMuX2RlZmF1bHQsKG51bGw9PWMucXVldWV8fCEwPT09Yy5xdWV1ZSkmJihjLnF1ZXVlPSJmeCIpLGMub2xkPWMuY29tcGxldGUsYy5jb21wbGV0ZT1mdW5jdGlvbigpe2YuaXNGdW5jdGlvbihjLm9sZCkmJmMub2xkLmNhbGwodGhpcyk7Yy5xdWV1ZSYmZi5kZXF1ZXVlKHRoaXMsYy5xdWV1ZSl9LGN9O2YuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSwKZSxmLGIpe3JldHVybiB0aGlzLmZpbHRlcih3YSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTplfSxhLGYsYil9LGFuaW1hdGU6ZnVuY3Rpb24oYSxlLGIsYyl7dmFyIGQ9Zi5pc0VtcHR5T2JqZWN0KGEpLGc9Zi5zcGVlZChlLGIsYyk7ZT1mdW5jdGlvbigpe3ZhciBlPUVhKHRoaXMsZi5leHRlbmQoe30sYSksZyk7KGR8fGYuX2RhdGEodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gZS5maW5pc2g9ZSxkfHwhMT09PWcucXVldWU/dGhpcy5lYWNoKGUpOnRoaXMucXVldWUoZy5xdWV1ZSxlKX0sc3RvcDpmdW5jdGlvbihhLGUsYil7dmFyIGM9ZnVuY3Rpb24oYSl7dmFyIGU9YS5zdG9wO2RlbGV0ZSBhLnN0b3A7ZShiKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1lLGU9YSxhPXZvaWQgMCksZSYmITEhPT1hJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPSEwLGQ9bnVsbCE9CmEmJmErInF1ZXVlSG9va3MiLGc9Zi50aW1lcnMsaD1mLl9kYXRhKHRoaXMpO2lmKGQpaFtkXSYmaFtkXS5zdG9wJiZjKGhbZF0pO2Vsc2UgZm9yKGQgaW4gaCloW2RdJiZoW2RdLnN0b3AmJmljLnRlc3QoZCkmJmMoaFtkXSk7Zm9yKGQ9Zy5sZW5ndGg7ZC0tOylnW2RdLmVsZW0hPT10aGlzfHxudWxsIT1hJiZnW2RdLnF1ZXVlIT09YXx8KGdbZF0uYW5pbS5zdG9wKGIpLGU9ITEsZy5zcGxpY2UoZCwxKSk7IWUmJmJ8fGYuZGVxdWV1ZSh0aGlzLGEpfSl9LGZpbmlzaDpmdW5jdGlvbihhKXtyZXR1cm4hMSE9PWEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLGI9Zi5fZGF0YSh0aGlzKSxjPWJbYSsicXVldWUiXTtlPWJbYSsicXVldWVIb29rcyJdO3ZhciBkPWYudGltZXJzLGc9Yz9jLmxlbmd0aDowO2IuZmluaXNoPSEwO2YucXVldWUodGhpcyxhLFtdKTtlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApO2ZvcihlPWQubGVuZ3RoO2UtLTspZFtlXS5lbGVtPT09CnRoaXMmJmRbZV0ucXVldWU9PT1hJiYoZFtlXS5hbmltLnN0b3AoITApLGQuc3BsaWNlKGUsMSkpO2ZvcihlPTA7Zz5lO2UrKyljW2VdJiZjW2VdLmZpbmlzaCYmY1tlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYi5maW5pc2h9KX19KTtmLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsZSl7dmFyIGI9Zi5mbltlXTtmLmZuW2VdPWZ1bmN0aW9uKGEsZixjKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9iLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoUChlLCEwKSxhLGYsYyl9fSk7Zi5lYWNoKHtzbGlkZURvd246UCgic2hvdyIpLHNsaWRlVXA6UCgiaGlkZSIpLHNsaWRlVG9nZ2xlOlAoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxlKXtmLmZuW2FdPWZ1bmN0aW9uKGEsYixmKXtyZXR1cm4gdGhpcy5hbmltYXRlKGUsCmEsYixmKX19KTtmLnRpbWVycz1bXTtmLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxlPWYudGltZXJzLGI9MDtmb3Ioc2E9Zi5ub3coKTtiPGUubGVuZ3RoO2IrKylhPWVbYl0sYSgpfHxlW2JdIT09YXx8ZS5zcGxpY2UoYi0tLDEpO2UubGVuZ3RofHxmLmZ4LnN0b3AoKTtzYT12b2lkIDB9O2YuZngudGltZXI9ZnVuY3Rpb24oYSl7Zi50aW1lcnMucHVzaChhKTthKCk/Zi5meC5zdGFydCgpOmYudGltZXJzLnBvcCgpfTtmLmZ4LmludGVydmFsPTEzO2YuZnguc3RhcnQ9ZnVuY3Rpb24oKXtPYXx8KE9hPXNldEludGVydmFsKGYuZngudGljayxmLmZ4LmludGVydmFsKSl9O2YuZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoT2EpO09hPW51bGx9O2YuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9O2YuZm4uZGVsYXk9ZnVuY3Rpb24oYSxlKXtyZXR1cm4gYT1mLmZ4P2YuZnguc3BlZWRzW2FdfHxhOmEsZT1lfHwiZngiLHRoaXMucXVldWUoZSxmdW5jdGlvbihlLApiKXt2YXIgZj1zZXRUaW1lb3V0KGUsYSk7Yi5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGYpfX0pfTsoZnVuY3Rpb24oKXt2YXIgYSxlLGIsZixjO2U9eC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwidCIpO2UuaW5uZXJIVE1MPSIgIFx4M2NsaW5rL1x4M2VceDNjdGFibGVceDNlXHgzYy90YWJsZVx4M2VceDNjYSBocmVmXHgzZCcvYSdceDNlYVx4M2MvYVx4M2VceDNjaW5wdXQgdHlwZVx4M2QnY2hlY2tib3gnL1x4M2UiO2Y9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdO2I9eC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTtjPWIuYXBwZW5kQ2hpbGQoeC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7YT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdO2Yuc3R5bGUuY3NzVGV4dD0idG9wOjFweCI7cy5nZXRTZXRBdHRyaWJ1dGU9InQiIT09ZS5jbGFzc05hbWU7cy5zdHlsZT0vdG9wLy50ZXN0KGYuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKTsKcy5ocmVmTm9ybWFsaXplZD0iL2EiPT09Zi5nZXRBdHRyaWJ1dGUoImhyZWYiKTtzLmNoZWNrT249ISFhLnZhbHVlO3Mub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZDtzLmVuY3R5cGU9ISF4LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlO2IuZGlzYWJsZWQ9ITA7cy5vcHREaXNhYmxlZD0hYy5kaXNhYmxlZDthPXguY3JlYXRlRWxlbWVudCgiaW5wdXQiKTthLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKTtzLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIik7YS52YWx1ZT0idCI7YS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpO3MucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSkoKTt2YXIgamM9L1xyL2c7Zi5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgZSxiLGMsZD10aGlzWzBdO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9Zi5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgZDsxPT09dGhpcy5ub2RlVHlwZSYmKGQ9Yz9hLmNhbGwodGhpcywKYixmKHRoaXMpLnZhbCgpKTphLG51bGw9PWQ/ZD0iIjoibnVtYmVyIj09dHlwZW9mIGQ/ZCs9IiI6Zi5pc0FycmF5KGQpJiYoZD1mLm1hcChkLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOmErIiJ9KSksZT1mLnZhbEhvb2tzW3RoaXMudHlwZV18fGYudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxlJiYic2V0ImluIGUmJnZvaWQgMCE9PWUuc2V0KHRoaXMsZCwidmFsdWUiKXx8KHRoaXMudmFsdWU9ZCkpfSk7aWYoZClyZXR1cm4gZT1mLnZhbEhvb2tzW2QudHlwZV18fGYudmFsSG9va3NbZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxlJiYiZ2V0ImluIGUmJnZvaWQgMCE9PShiPWUuZ2V0KGQsInZhbHVlIikpP2I6KGI9ZC52YWx1ZSwic3RyaW5nIj09dHlwZW9mIGI/Yi5yZXBsYWNlKGpjLCIiKTpudWxsPT1iPyIiOmIpfX0pO2YuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGU9Zi5maW5kLmF0dHIoYSwidmFsdWUiKTsKcmV0dXJuIG51bGwhPWU/ZTpmLnRyaW0oZi50ZXh0KGEpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgZSxiPWEub3B0aW9ucyxjPWEuc2VsZWN0ZWRJbmRleCxkPSJzZWxlY3Qtb25lIj09PWEudHlwZXx8MD5jLGc9ZD9udWxsOltdLGg9ZD9jKzE6Yi5sZW5ndGgsbD0wPmM/aDpkP2M6MDtoPmw7bCsrKWlmKGU9YltsXSwhKCFlLnNlbGVjdGVkJiZsIT09Y3x8KHMub3B0RGlzYWJsZWQ/ZS5kaXNhYmxlZDpudWxsIT09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikpfHxlLnBhcmVudE5vZGUuZGlzYWJsZWQmJmYubm9kZU5hbWUoZS5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYoYT1mKGUpLnZhbCgpLGQpcmV0dXJuIGE7Zy5wdXNoKGEpfXJldHVybiBnfSxzZXQ6ZnVuY3Rpb24oYSxlKXtmb3IodmFyIGIsYyxkPWEub3B0aW9ucyxnPWYubWFrZUFycmF5KGUpLGg9ZC5sZW5ndGg7aC0tOylpZihjPWRbaF0sMDw9Zi5pbkFycmF5KGYudmFsSG9va3Mub3B0aW9uLmdldChjKSwKZykpdHJ5e2Muc2VsZWN0ZWQ9Yj0hMH1jYXRjaChsKXtjLnNjcm9sbEhlaWdodH1lbHNlIGMuc2VsZWN0ZWQ9ITE7cmV0dXJuIGJ8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGR9fX19KTtmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gZi5pc0FycmF5KGUpP2EuY2hlY2tlZD0wPD1mLmluQXJyYXkoZihhKS52YWwoKSxlKTp2b2lkIDB9fTtzLmNoZWNrT258fChmLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIHVhLHhiLGhhPWYuZXhwci5hdHRySGFuZGxlLCRhPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2kscWE9cy5nZXRTZXRBdHRyaWJ1dGUsUGE9cy5pbnB1dDtmLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGUpe3JldHVybiBjYSh0aGlzLGYuYXR0cixhLGUsMTxhcmd1bWVudHMubGVuZ3RoKX0sCnJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlQXR0cih0aGlzLGEpfSl9fSk7Zi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxlLGIpe3ZhciBjLGQsZz1hLm5vZGVUeXBlO2lmKGEmJjMhPT1nJiY4IT09ZyYmMiE9PWcpcmV0dXJuIHR5cGVvZiBhLmdldEF0dHJpYnV0ZT09PVc/Zi5wcm9wKGEsZSxiKTooMT09PWcmJmYuaXNYTUxEb2MoYSl8fChlPWUudG9Mb3dlckNhc2UoKSxjPWYuYXR0ckhvb2tzW2VdfHwoZi5leHByLm1hdGNoLmJvb2wudGVzdChlKT94Yjp1YSkpLHZvaWQgMD09PWI/YyYmImdldCJpbiBjJiZudWxsIT09KGQ9Yy5nZXQoYSxlKSk/ZDooZD1mLmZpbmQuYXR0cihhLGUpLG51bGw9PWQ/dm9pZCAwOmQpOm51bGwhPT1iP2MmJiJzZXQiaW4gYyYmdm9pZCAwIT09KGQ9Yy5zZXQoYSxiLGUpKT9kOihhLnNldEF0dHJpYnV0ZShlLGIrIiIpLGIpOnZvaWQgZi5yZW1vdmVBdHRyKGEsZSkpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsCmUpe3ZhciBiLGMsZD0wLGc9ZSYmZS5tYXRjaChRKTtpZihnJiYxPT09YS5ub2RlVHlwZSlmb3IoO2I9Z1tkKytdOyljPWYucHJvcEZpeFtiXXx8YixmLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP1BhJiZxYXx8ISRhLnRlc3QoYik/YVtjXT0hMTphW2YuY2FtZWxDYXNlKCJkZWZhdWx0LSIrYildPWFbY109ITE6Zi5hdHRyKGEsYiwiIiksYS5yZW1vdmVBdHRyaWJ1dGUocWE/YjpjKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxlKXtpZighcy5yYWRpb1ZhbHVlJiYicmFkaW8iPT09ZSYmZi5ub2RlTmFtZShhLCJpbnB1dCIpKXt2YXIgYj1hLnZhbHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsZSksYiYmKGEudmFsdWU9YiksZX19fX19KTt4Yj17c2V0OmZ1bmN0aW9uKGEsZSxiKXtyZXR1cm4hMT09PWU/Zi5yZW1vdmVBdHRyKGEsYik6UGEmJnFhfHwhJGEudGVzdChiKT9hLnNldEF0dHJpYnV0ZSghcWEmJmYucHJvcEZpeFtiXXx8YixiKTphW2YuY2FtZWxDYXNlKCJkZWZhdWx0LSIrCmIpXT1hW2JdPSEwLGJ9fTtmLmVhY2goZi5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxlKXt2YXIgYj1oYVtlXXx8Zi5maW5kLmF0dHI7aGFbZV09UGEmJnFhfHwhJGEudGVzdChlKT9mdW5jdGlvbihhLGUsZil7dmFyIGMsZDtyZXR1cm4gZnx8KGQ9aGFbZV0saGFbZV09YyxjPW51bGwhPWIoYSxlLGYpP2UudG9Mb3dlckNhc2UoKTpudWxsLGhhW2VdPWQpLGN9OmZ1bmN0aW9uKGEsZSxiKXtyZXR1cm4gYj92b2lkIDA6YVtmLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2UpXT9lLnRvTG93ZXJDYXNlKCk6bnVsbH19KTtQYSYmcWF8fChmLmF0dHJIb29rcy52YWx1ZT17c2V0OmZ1bmN0aW9uKGEsZSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJpbnB1dCIpP3ZvaWQoYS5kZWZhdWx0VmFsdWU9ZSk6dWEmJnVhLnNldChhLGUsYil9fSk7cWF8fCh1YT17c2V0OmZ1bmN0aW9uKGEsZSxiKXt2YXIgZj1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGZ8fAphLnNldEF0dHJpYnV0ZU5vZGUoZj1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGIpKSxmLnZhbHVlPWUrPSIiLCJ2YWx1ZSI9PT1ifHxlPT09YS5nZXRBdHRyaWJ1dGUoYik/ZTp2b2lkIDB9fSxoYS5pZD1oYS5uYW1lPWhhLmNvb3Jkcz1mdW5jdGlvbihhLGUsYil7dmFyIGY7cmV0dXJuIGI/dm9pZCAwOihmPWEuZ2V0QXR0cmlidXRlTm9kZShlKSkmJiIiIT09Zi52YWx1ZT9mLnZhbHVlOm51bGx9LGYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxlKXt2YXIgYj1hLmdldEF0dHJpYnV0ZU5vZGUoZSk7cmV0dXJuIGImJmIuc3BlY2lmaWVkP2IudmFsdWU6dm9pZCAwfSxzZXQ6dWEuc2V0fSxmLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGUsYil7dWEuc2V0KGEsIiI9PT1lPyExOmUsYil9fSxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsZSl7Zi5hdHRySG9va3NbZV09e3NldDpmdW5jdGlvbihhLGIpe3JldHVybiIiPT09CmI/KGEuc2V0QXR0cmlidXRlKGUsImF1dG8iKSxiKTp2b2lkIDB9fX0pKTtzLnN0eWxlfHwoZi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0fHx2b2lkIDB9LHNldDpmdW5jdGlvbihhLGUpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9ZSsiIn19KTt2YXIga2M9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkL2ksbGM9L14oPzphfGFyZWEpJC9pO2YuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGNhKHRoaXMsZi5wcm9wLGEsZSwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe3JldHVybiBhPWYucHJvcEZpeFthXXx8YSx0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1thXT12b2lkIDAsZGVsZXRlIHRoaXNbYV19Y2F0Y2goZSl7fX0pfX0pO2YuZXh0ZW5kKHtwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn0scHJvcDpmdW5jdGlvbihhLAplLGIpe3ZhciBjLGQsZyxoPWEubm9kZVR5cGU7aWYoYSYmMyE9PWgmJjghPT1oJiYyIT09aClyZXR1cm4gZz0xIT09aHx8IWYuaXNYTUxEb2MoYSksZyYmKGU9Zi5wcm9wRml4W2VdfHxlLGQ9Zi5wcm9wSG9va3NbZV0pLHZvaWQgMCE9PWI/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oYz1kLnNldChhLGIsZSkpP2M6YVtlXT1iOmQmJiJnZXQiaW4gZCYmbnVsbCE9PShjPWQuZ2V0KGEsZSkpP2M6YVtlXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBlPWYuZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGU/cGFyc2VJbnQoZSwxMCk6a2MudGVzdChhLm5vZGVOYW1lKXx8bGMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KTtzLmhyZWZOb3JtYWxpemVkfHxmLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxlKXtmLnByb3BIb29rc1tlXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShlLDQpfX19KTtzLm9wdFNlbGVjdGVkfHwKKGYucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7YT1hLnBhcmVudE5vZGU7cmV0dXJuIGEmJihhLnNlbGVjdGVkSW5kZXgsYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KTtmLmVhY2goInRhYkluZGV4IHJlYWRPbmx5IG1heExlbmd0aCBjZWxsU3BhY2luZyBjZWxsUGFkZGluZyByb3dTcGFuIGNvbFNwYW4gdXNlTWFwIGZyYW1lQm9yZGVyIGNvbnRlbnRFZGl0YWJsZSIuc3BsaXQoIiAiKSxmdW5jdGlvbigpe2YucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTtzLmVuY3R5cGV8fChmLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgYWI9L1tcdFxyXG5cZl0vZztmLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGUsYixjLGQsZyxoPTAsbD10aGlzLmxlbmd0aDtlPSJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtmKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLAplLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihlKWZvcihlPShhfHwiIikubWF0Y2goUSl8fFtdO2w+aDtoKyspaWYoYj10aGlzW2hdLGM9MT09PWIubm9kZVR5cGUmJihiLmNsYXNzTmFtZT8oIiAiK2IuY2xhc3NOYW1lKyIgIikucmVwbGFjZShhYiwiICIpOiIgIikpe2ZvcihnPTA7ZD1lW2crK107KTA+Yy5pbmRleE9mKCIgIitkKyIgIikmJihjKz1kKyIgIik7Yz1mLnRyaW0oYyk7Yi5jbGFzc05hbWUhPT1jJiYoYi5jbGFzc05hbWU9Yyl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBlLGIsYyxkLGcsaD0wLGw9dGhpcy5sZW5ndGg7ZT0wPT09YXJndW1lbnRzLmxlbmd0aHx8InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2YodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsZSx0aGlzLmNsYXNzTmFtZSkpfSk7aWYoZSlmb3IoZT0oYXx8IiIpLm1hdGNoKFEpfHxbXTtsPmg7aCsrKWlmKGI9CnRoaXNbaF0sYz0xPT09Yi5ub2RlVHlwZSYmKGIuY2xhc3NOYW1lPygiICIrYi5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKGFiLCIgIik6IiIpKXtmb3IoZz0wO2Q9ZVtnKytdOylmb3IoOzA8PWMuaW5kZXhPZigiICIrZCsiICIpOyljPWMucmVwbGFjZSgiICIrZCsiICIsIiAiKTtjPWE/Zi50cmltKGMpOiIiO2IuY2xhc3NOYW1lIT09YyYmKGIuY2xhc3NOYW1lPWMpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGUpe3ZhciBiPXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGUmJiJzdHJpbmciPT09Yj9lP3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTp0aGlzLmVhY2goZi5pc0Z1bmN0aW9uKGEpP2Z1bmN0aW9uKGIpe2YodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSxlKSxlKX06ZnVuY3Rpb24oKXtpZigic3RyaW5nIj09PWIpZm9yKHZhciBlLGM9MCxkPWYodGhpcyksZz1hLm1hdGNoKFEpfHxbXTtlPQpnW2MrK107KWQuaGFzQ2xhc3MoZSk/ZC5yZW1vdmVDbGFzcyhlKTpkLmFkZENsYXNzKGUpO2Vsc2UoYj09PVd8fCJib29sZWFuIj09PWIpJiYodGhpcy5jbGFzc05hbWUmJmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHwhMT09PWE/IiI6Zi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXthPSIgIithKyIgIjtmb3IodmFyIGU9MCxiPXRoaXMubGVuZ3RoO2I+ZTtlKyspaWYoMT09PXRoaXNbZV0ubm9kZVR5cGUmJjA8PSgiICIrdGhpc1tlXS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKGFiLCIgIikuaW5kZXhPZihhKSlyZXR1cm4hMDtyZXR1cm4hMX19KTtmLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksCmZ1bmN0aW9uKGEsZSl7Zi5mbltlXT1mdW5jdGlvbihhLGIpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihlLG51bGwsYSxiKTp0aGlzLnRyaWdnZXIoZSl9fSk7Zi5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGV8fGEpfSxiaW5kOmZ1bmN0aW9uKGEsZSxiKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsZSxiKX0sdW5iaW5kOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxlKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxlLGIsZil7cmV0dXJuIHRoaXMub24oZSxhLGIsZil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxlLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGUsYXx8IioqIixiKX19KTt2YXIgYmI9Zi5ub3coKSxjYj0vXD8vLG1jPS8oLCl8KFxbfHspfCh9fF0pfCIoPzpbXiJcXFxyXG5dfFxcWyJcXFwvYmZucnRdfFxcdVtcZGEtZkEtRl17NH0pKiJccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXGQpXGQrKD86XC5cZCt8KSg/OltlRV1bKy1dP1xkK3wpL2c7CmYucGFyc2VKU09OPWZ1bmN0aW9uKGEpe2lmKGIuSlNPTiYmYi5KU09OLnBhcnNlKXJldHVybiBiLkpTT04ucGFyc2UoYSsiIik7dmFyIGUsYz1udWxsLGQ9Zi50cmltKGErIiIpO3JldHVybiBkJiYhZi50cmltKGQucmVwbGFjZShtYyxmdW5jdGlvbihhLGIsZixkKXtyZXR1cm4gZSYmYiYmKGM9MCksMD09PWM/YTooZT1mfHxiLGMrPSFkLSFmLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZCkoKTpmLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYSl9O2YucGFyc2VYTUw9ZnVuY3Rpb24oYSl7dmFyIGUsYztpZighYXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXtiLkRPTVBhcnNlcj8oYz1uZXcgRE9NUGFyc2VyLGU9Yy5wYXJzZUZyb21TdHJpbmcoYSwidGV4dC94bWwiKSk6KGU9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxlLmFzeW5jPSJmYWxzZSIsZS5sb2FkWE1MKGEpKX1jYXRjaChkKXtlPXZvaWQgMH1yZXR1cm4gZSYmZS5kb2N1bWVudEVsZW1lbnQmJgohZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fGYuZXJyb3IoIkludmFsaWQgWE1MOiAiK2EpLGV9O3ZhciByYSxWLG5jPS8jLiokLyx5Yj0vKFs/Jl0pXz1bXiZdKi8sb2M9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxwYz0vXig/OkdFVHxIRUFEKSQvLHFjPS9eXC9cLy8semI9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sQWI9e30sVWE9e30sQmI9IiovIi5jb25jYXQoIioiKTt0cnl7Vj1DLmhyZWZ9Y2F0Y2goeGMpe1Y9eC5jcmVhdGVFbGVtZW50KCJhIiksVi5ocmVmPSIiLFY9Vi5ocmVmfXJhPXpiLmV4ZWMoVi50b0xvd2VyQ2FzZSgpKXx8W107Zi5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOlYsdHlwZToiR0VUIixpc0xvY2FsOi9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QocmFbMV0pLApnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldFx4M2RVVEYtOCIsYWNjZXB0czp7IioiOkJiLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi94bWwvLGh0bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6Zi5wYXJzZUpTT04sInRleHQgeG1sIjpmLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gZT8KeWEoeWEoYSxmLmFqYXhTZXR0aW5ncyksZSk6eWEoZi5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6SmEoQWIpLGFqYXhUcmFuc3BvcnQ6SmEoVWEpLGFqYXg6ZnVuY3Rpb24oYSxlKXtmdW5jdGlvbiBiKGEsZSxjLGQpe3ZhciBrLHEscixELHM9ZTtpZigyIT09SCl7SD0yO2wmJmNsZWFyVGltZW91dChsKTtuPXZvaWQgMDtoPWR8fCIiO0cucmVhZHlTdGF0ZT0wPGE/NDowO2Q9MjAwPD1hJiYzMDA+YXx8MzA0PT09YTtpZihjKXtyPXA7Zm9yKHZhciB5PUcseixCLEYsQSx4PXIuY29udGVudHMsUj1yLmRhdGFUeXBlczsiKiI9PT1SWzBdOylSLnNoaWZ0KCksdm9pZCAwPT09QiYmKEI9ci5taW1lVHlwZXx8eS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKEIpZm9yKEEgaW4geClpZih4W0FdJiZ4W0FdLnRlc3QoQikpe1IudW5zaGlmdChBKTticmVha31pZihSWzBdaW4gYylGPVJbMF07ZWxzZXtmb3IoQSBpbiBjKXtpZighUlswXXx8ci5jb252ZXJ0ZXJzW0ErCiIgIitSWzBdXSl7Rj1BO2JyZWFrfXp8fCh6PUEpfUY9Rnx8en1yPUY/KEYhPT1SWzBdJiZSLnVuc2hpZnQoRiksY1tGXSk6dm9pZCAwfXZhciBPO2E6e2M9cDt6PXI7Qj1HO0Y9ZDt2YXIgSSx2LFA7cj17fTt5PWMuZGF0YVR5cGVzLnNsaWNlKCk7aWYoeVsxXSlmb3IoSSBpbiBjLmNvbnZlcnRlcnMpcltJLnRvTG93ZXJDYXNlKCldPWMuY29udmVydGVyc1tJXTtmb3IoQT15LnNoaWZ0KCk7QTspaWYoYy5yZXNwb25zZUZpZWxkc1tBXSYmKEJbYy5yZXNwb25zZUZpZWxkc1tBXV09eiksIVAmJkYmJmMuZGF0YUZpbHRlciYmKHo9Yy5kYXRhRmlsdGVyKHosYy5kYXRhVHlwZSkpLFA9QSxBPXkuc2hpZnQoKSlpZigiKiI9PT1BKUE9UDtlbHNlIGlmKCIqIiE9PVAmJlAhPT1BKXtpZihJPXJbUCsiICIrQV18fHJbIiogIitBXSwhSSlmb3IoTyBpbiByKWlmKHY9Ty5zcGxpdCgiICIpLHZbMV09PT1BJiYoST1yW1ArIiAiK3ZbMF1dfHxyWyIqICIrdlswXV0pKXshMD09PUk/ST1yW09dOiEwIT09CnJbT10mJihBPXZbMF0seS51bnNoaWZ0KHZbMV0pKTticmVha31pZighMCE9PUkpaWYoSSYmY1sidGhyb3dzIl0pej1JKHopO2Vsc2UgdHJ5e3o9SSh6KX1jYXRjaChVKXtPPXtzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOkk/VToiTm8gY29udmVyc2lvbiBmcm9tICIrUCsiIHRvICIrQX07YnJlYWsgYX19Tz17c3RhdGU6InN1Y2Nlc3MiLGRhdGE6en19cj1PO2Q/KHAuaWZNb2RpZmllZCYmKEQ9Ry5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLEQmJihmLmxhc3RNb2RpZmllZFtnXT1EKSxEPUcuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSxEJiYoZi5ldGFnW2ddPUQpKSwyMDQ9PT1hfHwiSEVBRCI9PT1wLnR5cGU/cz0ibm9jb250ZW50IjozMDQ9PT1hP3M9Im5vdG1vZGlmaWVkIjoocz1yLnN0YXRlLGs9ci5kYXRhLHE9ci5lcnJvcixkPSFxKSk6KHE9cywoYXx8IXMpJiYocz0iZXJyb3IiLDA+YSYmKGE9MCkpKTtHLnN0YXR1cz1hO0cuc3RhdHVzVGV4dD0oZXx8cykrCiIiO2Q/dy5yZXNvbHZlV2l0aCh0LFtrLHMsR10pOncucmVqZWN0V2l0aCh0LFtHLHMscV0pO0cuc3RhdHVzQ29kZShKKTtKPXZvaWQgMDttJiZFLnRyaWdnZXIoZD8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtHLHAsZD9rOnFdKTt1LmZpcmVXaXRoKHQsW0csc10pO20mJihFLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0cscF0pLC0tZi5hY3RpdmV8fGYuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSl9fSJvYmplY3QiPT10eXBlb2YgYSYmKGU9YSxhPXZvaWQgMCk7ZT1lfHx7fTt2YXIgYyxkLGcsaCxsLG0sbixxLHA9Zi5hamF4U2V0dXAoe30sZSksdD1wLmNvbnRleHR8fHAsRT1wLmNvbnRleHQmJih0Lm5vZGVUeXBlfHx0LmpxdWVyeSk/Zih0KTpmLmV2ZW50LHc9Zi5EZWZlcnJlZCgpLHU9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksSj1wLnN0YXR1c0NvZGV8fHt9LEQ9e30scz17fSxIPTAseT0iY2FuY2VsZWQiLEc9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgZTsKaWYoMj09PUgpe2lmKCFxKWZvcihxPXt9O2U9b2MuZXhlYyhoKTspcVtlWzFdLnRvTG93ZXJDYXNlKCldPWVbMl07ZT1xW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWU/bnVsbDplfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PUg/aDpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsZSl7dmFyIGI9YS50b0xvd2VyQ2FzZSgpO3JldHVybiBIfHwoYT1zW2JdPXNbYl18fGEsRFthXT1lKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBIfHwocC5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBlO2lmKGEpaWYoMj5IKWZvcihlIGluIGEpSltlXT1bSltlXSxhW2VdXTtlbHNlIEcuYWx3YXlzKGFbRy5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHx5O3JldHVybiBuJiZuLmFib3J0KGEpLGIoMCxhKSx0aGlzfX07aWYody5wcm9taXNlKEcpLmNvbXBsZXRlPQp1LmFkZCxHLnN1Y2Nlc3M9Ry5kb25lLEcuZXJyb3I9Ry5mYWlsLHAudXJsPSgoYXx8cC51cmx8fFYpKyIiKS5yZXBsYWNlKG5jLCIiKS5yZXBsYWNlKHFjLHJhWzFdKyIvLyIpLHAudHlwZT1lLm1ldGhvZHx8ZS50eXBlfHxwLm1ldGhvZHx8cC50eXBlLHAuZGF0YVR5cGVzPWYudHJpbShwLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goUSl8fFsiIl0sbnVsbD09cC5jcm9zc0RvbWFpbiYmKGM9emIuZXhlYyhwLnVybC50b0xvd2VyQ2FzZSgpKSxwLmNyb3NzRG9tYWluPSEoIWN8fGNbMV09PT1yYVsxXSYmY1syXT09PXJhWzJdJiYoY1szXXx8KCJodHRwOiI9PT1jWzFdPyI4MCI6IjQ0MyIpKT09PShyYVszXXx8KCJodHRwOiI9PT1yYVsxXT8iODAiOiI0NDMiKSkpKSxwLmRhdGEmJnAucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2YgcC5kYXRhJiYocC5kYXRhPWYucGFyYW0ocC5kYXRhLHAudHJhZGl0aW9uYWwpKSxaKEFiLHAsZSxHKSwyPT09SClyZXR1cm4gRzsKKG09Zi5ldmVudCYmcC5nbG9iYWwpJiYwPT09Zi5hY3RpdmUrKyYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtwLnR5cGU9cC50eXBlLnRvVXBwZXJDYXNlKCk7cC5oYXNDb250ZW50PSFwYy50ZXN0KHAudHlwZSk7Zz1wLnVybDtwLmhhc0NvbnRlbnR8fChwLmRhdGEmJihnPXAudXJsKz0oY2IudGVzdChnKT8iXHgyNiI6Ij8iKStwLmRhdGEsZGVsZXRlIHAuZGF0YSksITE9PT1wLmNhY2hlJiYocC51cmw9eWIudGVzdChnKT9nLnJlcGxhY2UoeWIsIiQxX1x4M2QiK2JiKyspOmcrKGNiLnRlc3QoZyk/Ilx4MjYiOiI/IikrIl9ceDNkIitiYisrKSk7cC5pZk1vZGlmaWVkJiYoZi5sYXN0TW9kaWZpZWRbZ10mJkcuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGYubGFzdE1vZGlmaWVkW2ddKSxmLmV0YWdbZ10mJkcuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsZi5ldGFnW2ddKSk7KHAuZGF0YSYmcC5oYXNDb250ZW50JiYhMSE9PXAuY29udGVudFR5cGV8fAplLmNvbnRlbnRUeXBlKSYmRy5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHAuY29udGVudFR5cGUpO0cuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixwLmRhdGFUeXBlc1swXSYmcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXT9wLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dKygiKiIhPT1wLmRhdGFUeXBlc1swXT8iLCAiK0JiKyI7IHFceDNkMC4wMSI6IiIpOnAuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBwLmhlYWRlcnMpRy5zZXRSZXF1ZXN0SGVhZGVyKGQscC5oZWFkZXJzW2RdKTtpZihwLmJlZm9yZVNlbmQmJighMT09PXAuYmVmb3JlU2VuZC5jYWxsKHQsRyxwKXx8Mj09PUgpKXJldHVybiBHLmFib3J0KCk7eT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KUdbZF0ocFtkXSk7aWYobj1aKFVhLHAsZSxHKSl7Ry5yZWFkeVN0YXRlPTE7bSYmRS50cmlnZ2VyKCJhamF4U2VuZCIsW0cscF0pO3AuYXN5bmMmJjA8cC50aW1lb3V0JiYobD0Kc2V0VGltZW91dChmdW5jdGlvbigpe0cuYWJvcnQoInRpbWVvdXQiKX0scC50aW1lb3V0KSk7dHJ5e0g9MSxuLnNlbmQoRCxiKX1jYXRjaChCKXtpZighKDI+SCkpdGhyb3cgQjtiKC0xLEIpfX1lbHNlIGIoLTEsIk5vIFRyYW5zcG9ydCIpO3JldHVybiBHfSxnZXRKU09OOmZ1bmN0aW9uKGEsZSxiKXtyZXR1cm4gZi5nZXQoYSxlLGIsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGYuZ2V0KGEsdm9pZCAwLGUsInNjcmlwdCIpfX0pO2YuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGUpe2ZbZV09ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGYuaXNGdW5jdGlvbihiKSYmKGQ9ZHx8YyxjPWIsYj12b2lkIDApLGYuYWpheCh7dXJsOmEsdHlwZTplLGRhdGFUeXBlOmQsZGF0YTpiLHN1Y2Nlc3M6Y30pfX0pO2YuX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsCiJ0aHJvd3MiOiEwfSl9O2YuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxlKSl9KTtpZih0aGlzWzBdKXt2YXIgZT1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZlLmluc2VydEJlZm9yZSh0aGlzWzBdKTtlLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzO2EuZmlyc3RDaGlsZCYmMT09PWEuZmlyc3RDaGlsZC5ub2RlVHlwZTspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGYuaXNGdW5jdGlvbihhKT9mdW5jdGlvbihlKXtmKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxlKSl9OmZ1bmN0aW9uKCl7dmFyIGU9Zih0aGlzKSxiPWUuY29udGVudHMoKTsKYi5sZW5ndGg/Yi53cmFwQWxsKGEpOmUuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGU9Zi5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwQWxsKGU/YS5jYWxsKHRoaXMsYik6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Yubm9kZU5hbWUodGhpcywiYm9keSIpfHxmKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX19KTtmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIDA+PWEub2Zmc2V0V2lkdGgmJjA+PWEub2Zmc2V0SGVpZ2h0fHwhcy5yZWxpYWJsZUhpZGRlbk9mZnNldHMoKSYmIm5vbmUiPT09KGEuc3R5bGUmJmEuc3R5bGUuZGlzcGxheXx8Zi5jc3MoYSwiZGlzcGxheSIpKX07Zi5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hZi5leHByLmZpbHRlcnMuaGlkZGVuKGEpfTsKdmFyIHJjPS8lMjAvZyxOYj0vXFtcXSQvLENiPS9ccj9cbi9nLHNjPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSx0Yz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7Zi5wYXJhbT1mdW5jdGlvbihhLGUpe3ZhciBiLGM9W10sZD1mdW5jdGlvbihhLGUpe2U9Zi5pc0Z1bmN0aW9uKGUpP2UoKTpudWxsPT1lPyIiOmU7Y1tjLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyJceDNkIitlbmNvZGVVUklDb21wb25lbnQoZSl9O2lmKHZvaWQgMD09PWUmJihlPWYuYWpheFNldHRpbmdzJiZmLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksZi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIWYuaXNQbGFpbk9iamVjdChhKSlmLmVhY2goYSxmdW5jdGlvbigpe2QodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYiBpbiBhKXphKGIsYVtiXSxlLGQpO3JldHVybiBjLmpvaW4oIlx4MjYiKS5yZXBsYWNlKHJjLCIrIil9O2YuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSwKc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1mLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gYT9mLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFmKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmdGMudGVzdCh0aGlzLm5vZGVOYW1lKSYmIXNjLnRlc3QoYSkmJih0aGlzLmNoZWNrZWR8fCFUYS50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGUpe3ZhciBiPWYodGhpcykudmFsKCk7cmV0dXJuIG51bGw9PWI/bnVsbDpmLmlzQXJyYXkoYik/Zi5tYXAoYixmdW5jdGlvbihhKXtyZXR1cm57bmFtZTplLm5hbWUsdmFsdWU6YS5yZXBsYWNlKENiLCJcclxuIil9fSk6e25hbWU6ZS5uYW1lLHZhbHVlOmIucmVwbGFjZShDYiwiXHJcbiIpfX0pLmdldCgpfX0pO2YuYWpheFNldHRpbmdzLnhocj12b2lkIDAhPT1iLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXt2YXIgYTsKaWYoIShhPSF0aGlzLmlzTG9jYWwmJi9eKGdldHxwb3N0fGhlYWR8cHV0fGRlbGV0ZXxvcHRpb25zKSQvaS50ZXN0KHRoaXMudHlwZSkmJmRhKCkpKWE6e3RyeXthPW5ldyBiLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7YnJlYWsgYX1jYXRjaChlKXt9YT12b2lkIDB9cmV0dXJuIGF9OmRhO3ZhciB1Yz0wLFFhPXt9LFJhPWYuYWpheFNldHRpbmdzLnhocigpO2IuYXR0YWNoRXZlbnQmJmIuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBRYSlRYVthXSh2b2lkIDAsITApfSk7cy5jb3JzPSEhUmEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gUmE7KFJhPXMuYWpheD0hIVJhKSYmZi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxzLmNvcnMpe3ZhciBlO3JldHVybntzZW5kOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZz1hLnhocigpLGg9Kyt1YztpZihnLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSwKYS5wYXNzd29yZCksYS54aHJGaWVsZHMpZm9yKGQgaW4gYS54aHJGaWVsZHMpZ1tkXT1hLnhockZpZWxkc1tkXTthLm1pbWVUeXBlJiZnLm92ZXJyaWRlTWltZVR5cGUmJmcub3ZlcnJpZGVNaW1lVHlwZShhLm1pbWVUeXBlKTthLmNyb3NzRG9tYWlufHxiWyJYLVJlcXVlc3RlZC1XaXRoIl18fChiWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiZnLnNldFJlcXVlc3RIZWFkZXIoZCxiW2RdKyIiKTtnLnNlbmQoYS5oYXNDb250ZW50JiZhLmRhdGF8fG51bGwpO2U9ZnVuY3Rpb24oYixkKXt2YXIgayxsLG07aWYoZSYmKGR8fDQ9PT1nLnJlYWR5U3RhdGUpKWlmKGRlbGV0ZSBRYVtoXSxlPXZvaWQgMCxnLm9ucmVhZHlzdGF0ZWNoYW5nZT1mLm5vb3AsZCk0IT09Zy5yZWFkeVN0YXRlJiZnLmFib3J0KCk7ZWxzZXttPXt9O2s9Zy5zdGF0dXM7InN0cmluZyI9PXR5cGVvZiBnLnJlc3BvbnNlVGV4dCYmKG0udGV4dD1nLnJlc3BvbnNlVGV4dCk7CnRyeXtsPWcuc3RhdHVzVGV4dH1jYXRjaChuKXtsPSIifWt8fCFhLmlzTG9jYWx8fGEuY3Jvc3NEb21haW4/MTIyMz09PWsmJihrPTIwNCk6az1tLnRleHQ/MjAwOjQwNH1tJiZjKGssbCxtLGcuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpfTthLmFzeW5jPzQ9PT1nLnJlYWR5U3RhdGU/c2V0VGltZW91dChlKTpnLm9ucmVhZHlzdGF0ZWNoYW5nZT1RYVtoXT1lOmUoKX0sYWJvcnQ6ZnVuY3Rpb24oKXtlJiZlKHZvaWQgMCwhMCl9fX19KTtmLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBmLmdsb2JhbEV2YWwoYSksYX19fSk7Zi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLApmdW5jdGlvbihhKXt2b2lkIDA9PT1hLmNhY2hlJiYoYS5jYWNoZT0hMSk7YS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIixhLmdsb2JhbD0hMSl9KTtmLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGUsYj14LmhlYWR8fGYoImhlYWQiKVswXXx8eC5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZixjKXtlPXguY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ZS5hc3luYz0hMDthLnNjcmlwdENoYXJzZXQmJihlLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KTtlLnNyYz1hLnVybDtlLm9ubG9hZD1lLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGIpeyhifHwhZS5yZWFkeVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGUucmVhZHlTdGF0ZSkpJiYoZS5vbmxvYWQ9ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxlPW51bGwsYnx8CmMoMjAwLCJzdWNjZXNzIikpfTtiLmluc2VydEJlZm9yZShlLGIuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7ZSYmZS5vbmxvYWQodm9pZCAwLCEwKX19fX0pO3ZhciBEYj1bXSxkYj0vKD0pXD8oPz0mfCQpfFw/XD8vO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1EYi5wb3AoKXx8Zi5leHBhbmRvKyJfIitiYisrO3JldHVybiB0aGlzW2FdPSEwLGF9fSk7Zi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihhLGUsYyl7dmFyIGQsZyxoLGw9ITEhPT1hLmpzb25wJiYoZGIudGVzdChhLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBhLmRhdGEmJiEoYS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZkYi50ZXN0KGEuZGF0YSkmJiJkYXRhIik7cmV0dXJuIGx8fCJqc29ucCI9PT1hLmRhdGFUeXBlc1swXT8oZD1hLmpzb25wQ2FsbGJhY2s9CmYuaXNGdW5jdGlvbihhLmpzb25wQ2FsbGJhY2spP2EuanNvbnBDYWxsYmFjaygpOmEuanNvbnBDYWxsYmFjayxsP2FbbF09YVtsXS5yZXBsYWNlKGRiLCIkMSIrZCk6ITEhPT1hLmpzb25wJiYoYS51cmwrPShjYi50ZXN0KGEudXJsKT8iXHgyNiI6Ij8iKSthLmpzb25wKyJceDNkIitkKSxhLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gaHx8Zi5lcnJvcihkKyIgd2FzIG5vdCBjYWxsZWQiKSxoWzBdfSxhLmRhdGFUeXBlc1swXT0ianNvbiIsZz1iW2RdLGJbZF09ZnVuY3Rpb24oKXtoPWFyZ3VtZW50c30sYy5hbHdheXMoZnVuY3Rpb24oKXtiW2RdPWc7YVtkXSYmKGEuanNvbnBDYWxsYmFjaz1lLmpzb25wQ2FsbGJhY2ssRGIucHVzaChkKSk7aCYmZi5pc0Z1bmN0aW9uKGcpJiZnKGhbMF0pO2g9Zz12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSk7Zi5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxlLGIpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7CiJib29sZWFuIj09dHlwZW9mIGUmJihiPWUsZT0hMSk7ZT1lfHx4O3ZhciBjPWxiLmV4ZWMoYSk7Yj0hYiYmW107cmV0dXJuIGM/W2UuY3JlYXRlRWxlbWVudChjWzFdKV06KGM9Zi5idWlsZEZyYWdtZW50KFthXSxlLGIpLGImJmIubGVuZ3RoJiZmKGIpLnJlbW92ZSgpLGYubWVyZ2UoW10sYy5jaGlsZE5vZGVzKSl9O3ZhciBFYj1mLmZuLmxvYWQ7Zi5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEmJkViKXJldHVybiBFYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQsZyxoLGw9dGhpcyxtPWEuaW5kZXhPZigiICIpO3JldHVybiAwPD1tJiYoZD1mLnRyaW0oYS5zbGljZShtLGEubGVuZ3RoKSksYT1hLnNsaWNlKDAsbSkpLGYuaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihoPSJQT1NUIiksMDxsLmxlbmd0aCYmZi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7Zz0KYXJndW1lbnRzO2wuaHRtbChkP2YoIlx4M2NkaXZceDNlIikuYXBwZW5kKGYucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtsLmVhY2goYyxnfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfTtmLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7Zi5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pO2YuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBmLmdyZXAoZi50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9O3ZhciBGYj1iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtmLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxnLGgsbCxtLG4scD1mLmNzcyhhLCJwb3NpdGlvbiIpLHE9ZihhKSx0PXt9OyJzdGF0aWMiPT09CnAmJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO209cS5vZmZzZXQoKTtoPWYuY3NzKGEsInRvcCIpO249Zi5jc3MoYSwibGVmdCIpOygiYWJzb2x1dGUiPT09cHx8ImZpeGVkIj09PXApJiYtMTxmLmluQXJyYXkoImF1dG8iLFtoLG5dKT8oZD1xLnBvc2l0aW9uKCksbD1kLnRvcCxnPWQubGVmdCk6KGw9cGFyc2VGbG9hdChoKXx8MCxnPXBhcnNlRmxvYXQobil8fDApO2YuaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxtKSk7bnVsbCE9Yi50b3AmJih0LnRvcD1iLnRvcC1tLnRvcCtsKTtudWxsIT1iLmxlZnQmJih0LmxlZnQ9Yi5sZWZ0LW0ubGVmdCtnKTsidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSx0KTpxLmNzcyh0KX19O2YuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtmLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPQp7dG9wOjAsbGVmdDowfSxnPXRoaXNbMF0saD1nJiZnLm93bmVyRG9jdW1lbnQ7aWYoaClyZXR1cm4gYj1oLmRvY3VtZW50RWxlbWVudCxmLmNvbnRhaW5zKGIsZyk/KHR5cGVvZiBnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCE9PVcmJihkPWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGM9JChoKSx7dG9wOmQudG9wKyhjLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCktKGIuY2xpZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoYy5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0KS0oYi5jbGllbnRMZWZ0fHwwKX0pOmR9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXt0b3A6MCxsZWZ0OjB9LGQ9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09Zi5jc3MoZCwicG9zaXRpb24iKT9iPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRoaXMub2Zmc2V0KCksZi5ub2RlTmFtZShhWzBdLCJodG1sIil8fChjPWEub2Zmc2V0KCkpLGMudG9wKz0KZi5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxjLmxlZnQrPWYuY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOmIudG9wLWMudG9wLWYuY3NzKGQsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWMubGVmdC1mLmNzcyhkLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxGYjthJiYhZi5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09Zi5jc3MoYSwicG9zaXRpb24iKTspYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8RmJ9KX19KTtmLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0vWS8udGVzdChiKTtmLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBjYSh0aGlzLGZ1bmN0aW9uKGEsZCxnKXt2YXIgaD0kKGEpO3JldHVybiB2b2lkIDA9PT0KZz9oP2IgaW4gaD9oW2JdOmguZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2RdOmFbZF06dm9pZChoP2guc2Nyb2xsVG8oYz9mKGgpLnNjcm9sbExlZnQoKTpnLGM/ZzpmKGgpLnNjcm9sbFRvcCgpKTphW2RdPWcpfSxhLGQsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KTtmLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2JdPWJhKHMucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihhLGMpe3JldHVybiBjPyhjPW1hKGEsYiksSGEudGVzdChjKT9mKGEpLnBvc2l0aW9uKClbYl0rInB4IjpjKTp2b2lkIDB9KX0pO2YuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYil7Zi5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OmIsIiI6Im91dGVyIithfSxmdW5jdGlvbihjLGQpe2YuZm5bZF09ZnVuY3Rpb24oZCxnKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoJiYoY3x8ImJvb2xlYW4iIT10eXBlb2YgZCksbD1jfHwoITA9PT0KZHx8ITA9PT1nPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gY2EodGhpcyxmdW5jdGlvbihiLGUsYyl7dmFyIGQ7cmV0dXJuIGYuaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGQ9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGRbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGRbIm9mZnNldCIrYV0sZFsiY2xpZW50IithXSkpOnZvaWQgMD09PWM/Zi5jc3MoYixlLGwpOmYuc3R5bGUoYixlLGMsbCl9LGIsaD9kOnZvaWQgMCxoLG51bGwpfX0pfSk7Zi5mbi5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofTtmLmZuLmFuZFNlbGY9Zi5mbi5hZGRCYWNrOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBmfSk7dmFyIHZjPWIualF1ZXJ5LHdjPWIuJDtyZXR1cm4gZi5ub0NvbmZsaWN0PQpmdW5jdGlvbihhKXtyZXR1cm4gYi4kPT09ZiYmKGIuJD13YyksYSYmYi5qUXVlcnk9PT1mJiYoYi5qUXVlcnk9dmMpLGZ9LHR5cGVvZiBjPT09VyYmKGIualF1ZXJ5PWIuJD1mKSxmfSk7ZC4kPWFhPWM9d2luZG93LmpRdWVyeS5ub0NvbmZsaWN0KCEwKTt2PWMoZG9jdW1lbnQpO2JhPWMod2luZG93KTt2b2lkIDA9PT1hYS5taWdyYXRlTXV0ZSYmKGFhLm1pZ3JhdGVNdXRlPSEwKTsoZnVuY3Rpb24oYixjLGQpe2Z1bmN0aW9uIGgoZCl7dmFyIGg9Yy5jb25zb2xlO3FbZF18fChxW2RdPSEwLGIubWlncmF0ZVdhcm5pbmdzLnB1c2goZCksaCYmaC53YXJuJiYhYi5taWdyYXRlTXV0ZSYmKGgud2FybigiSlFNSUdSQVRFOiAiK2QpLGIubWlncmF0ZVRyYWNlJiZoLnRyYWNlJiZoLnRyYWNlKCkpKX1mdW5jdGlvbiBtKGMsZyxtLG4pe2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLGcse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLApnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaChuKSxtfSxzZXQ6ZnVuY3Rpb24oYil7aChuKTttPWJ9fSksZH1jYXRjaChwKXt9Yi5fZGVmaW5lUHJvcGVydHlCcm9rZW49ITA7Y1tnXT1tfXZhciBxPXt9O2IubWlncmF0ZVdhcm5pbmdzPVtdOyFiLm1pZ3JhdGVNdXRlJiZjLmNvbnNvbGUmJmMuY29uc29sZS5sb2cmJmMuY29uc29sZS5sb2coIkpRTUlHUkFURTogTG9nZ2luZyBpcyBhY3RpdmUiKTtiLm1pZ3JhdGVUcmFjZT09PWQmJihiLm1pZ3JhdGVUcmFjZT0hMCk7Yi5taWdyYXRlUmVzZXQ9ZnVuY3Rpb24oKXtxPXt9O2IubWlncmF0ZVdhcm5pbmdzLmxlbmd0aD0wfTsiQmFja0NvbXBhdCI9PT1kb2N1bWVudC5jb21wYXRNb2RlJiZoKCJqUXVlcnkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBRdWlya3MgTW9kZSIpO3ZhciBuPWIoIlx4M2NpbnB1dC9ceDNlIix7c2l6ZToxfSkuYXR0cigic2l6ZSIpJiZiLmF0dHJGbixwPWIuYXR0cixCPWIuYXR0ckhvb2tzLnZhbHVlJiZiLmF0dHJIb29rcy52YWx1ZS5nZXR8fApmdW5jdGlvbigpe3JldHVybiBudWxsfSx3PWIuYXR0ckhvb2tzLnZhbHVlJiZiLmF0dHJIb29rcy52YWx1ZS5zZXR8fGZ1bmN0aW9uKCl7cmV0dXJuIGR9LHk9L14oPzppbnB1dHxidXR0b24pJC9pLEo9L15bMjM4XSQvLEQ9L14oPzphdXRvZm9jdXN8YXV0b3BsYXl8YXN5bmN8Y2hlY2tlZHxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZHxzZWxlY3RlZCkkL2ksRj0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pO20oYiwiYXR0ckZuIixufHx7fSwialF1ZXJ5LmF0dHJGbiBpcyBkZXByZWNhdGVkIik7Yi5hdHRyPWZ1bmN0aW9uKGMsZyxtLHEpe3ZhciB0PWcudG9Mb3dlckNhc2UoKSx3PWMmJmMubm9kZVR5cGU7cmV0dXJuIHEmJig0PnAubGVuZ3RoJiZoKCJqUXVlcnkuZm4uYXR0ciggcHJvcHMsIHBhc3MgKSBpcyBkZXByZWNhdGVkIiksYyYmIUoudGVzdCh3KSYmKG4/ZyBpbiBuOmIuaXNGdW5jdGlvbihiLmZuW2ddKSkpPwpiKGMpW2ddKG0pOigidHlwZSI9PT1nJiZtIT09ZCYmeS50ZXN0KGMubm9kZU5hbWUpJiZjLnBhcmVudE5vZGUmJmgoIkNhbid0IGNoYW5nZSB0aGUgJ3R5cGUnIG9mIGFuIGlucHV0IG9yIGJ1dHRvbiBpbiBJRSA2LzcvOCIpLCFiLmF0dHJIb29rc1t0XSYmRC50ZXN0KHQpJiYoYi5hdHRySG9va3NbdF09e2dldDpmdW5jdGlvbihjLGcpe3ZhciBoLG09Yi5wcm9wKGMsZyk7cmV0dXJuITA9PT1tfHwiYm9vbGVhbiIhPXR5cGVvZiBtJiYoaD1jLmdldEF0dHJpYnV0ZU5vZGUoZykpJiYhMSE9PWgubm9kZVZhbHVlP2cudG9Mb3dlckNhc2UoKTpkfSxzZXQ6ZnVuY3Rpb24oYyxkLGcpe3ZhciBoO3JldHVybiExPT09ZD9iLnJlbW92ZUF0dHIoYyxnKTooaD1iLnByb3BGaXhbZ118fGcsaCBpbiBjJiYoY1toXT0hMCksYy5zZXRBdHRyaWJ1dGUoZyxnLnRvTG93ZXJDYXNlKCkpKSxnfX0sRi50ZXN0KHQpJiZoKCJqUXVlcnkuZm4uYXR0cignIit0KyInKSBtYXkgdXNlIHByb3BlcnR5IGluc3RlYWQgb2YgYXR0cmlidXRlIikpLApwLmNhbGwoYixjLGcsbSkpfTtiLmF0dHJIb29rcy52YWx1ZT17Z2V0OmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KGIubm9kZU5hbWV8fCIiKS50b0xvd2VyQ2FzZSgpO3JldHVybiJidXR0b24iPT09ZD9CLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooImlucHV0IiE9PWQmJiJvcHRpb24iIT09ZCYmaCgialF1ZXJ5LmZuLmF0dHIoJ3ZhbHVlJykgbm8gbG9uZ2VyIGdldHMgcHJvcGVydGllcyIpLGMgaW4gYj9iLnZhbHVlOm51bGwpfSxzZXQ6ZnVuY3Rpb24oYixjKXt2YXIgZz0oYi5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuImJ1dHRvbiI9PT1nP3cuYXBwbHkodGhpcyxhcmd1bWVudHMpOigiaW5wdXQiIT09ZyYmIm9wdGlvbiIhPT1nJiZoKCJqUXVlcnkuZm4uYXR0cigndmFsdWUnLCB2YWwpIG5vIGxvbmdlciBzZXRzIHByb3BlcnRpZXMiKSxiLnZhbHVlPWMsZCl9fTt2YXIgQSx1LHQ9Yi5mbi5pbml0LEg9Yi5wYXJzZUpTT04sST0vXihbXjxdKikoPFtcd1xXXSs+KShbXj5dKikkLzsKYi5mbi5pbml0PWZ1bmN0aW9uKGMsZCxnKXt2YXIgbDtyZXR1cm4gYyYmInN0cmluZyI9PXR5cGVvZiBjJiYhYi5pc1BsYWluT2JqZWN0KGQpJiYobD1JLmV4ZWMoYi50cmltKGMpKSkmJmxbMF0mJigiXHgzYyIhPT1jLmNoYXJBdCgwKSYmaCgiJChodG1sKSBIVE1MIHN0cmluZ3MgbXVzdCBzdGFydCB3aXRoICdceDNjJyBjaGFyYWN0ZXIiKSxsWzNdJiZoKCIkKGh0bWwpIEhUTUwgdGV4dCBhZnRlciBsYXN0IHRhZyBpcyBpZ25vcmVkIiksIiMiPT09bFswXS5jaGFyQXQoMCkmJihoKCJIVE1MIHN0cmluZyBjYW5ub3Qgc3RhcnQgd2l0aCBhICcjJyBjaGFyYWN0ZXIiKSxiLmVycm9yKCJKUU1JR1JBVEU6IEludmFsaWQgc2VsZWN0b3Igc3RyaW5nIChYU1MpIikpLGQmJmQuY29udGV4dCYmKGQ9ZC5jb250ZXh0KSxiLnBhcnNlSFRNTCk/dC5jYWxsKHRoaXMsYi5wYXJzZUhUTUwobFsyXSxkLCEwKSxkLGcpOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtiLmZuLmluaXQucHJvdG90eXBlPQpiLmZuO2IucGFyc2VKU09OPWZ1bmN0aW9uKGIpe3JldHVybiBifHxudWxsPT09Yj9ILmFwcGx5KHRoaXMsYXJndW1lbnRzKTooaCgialF1ZXJ5LnBhcnNlSlNPTiByZXF1aXJlcyBhIHZhbGlkIEpTT04gc3RyaW5nIiksbnVsbCl9O2IudWFNYXRjaD1mdW5jdGlvbihiKXtiPWIudG9Mb3dlckNhc2UoKTtiPS8oY2hyb21lKVsgXC9dKFtcdy5dKykvLmV4ZWMoYil8fC8od2Via2l0KVsgXC9dKFtcdy5dKykvLmV4ZWMoYil8fC8ob3BlcmEpKD86Lip2ZXJzaW9ufClbIFwvXShbXHcuXSspLy5leGVjKGIpfHwvKG1zaWUpIChbXHcuXSspLy5leGVjKGIpfHwwPmIuaW5kZXhPZigiY29tcGF0aWJsZSIpJiYvKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspfCkvLmV4ZWMoYil8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX07Yi5icm93c2VyfHwoQT1iLnVhTWF0Y2goU2EudXNlckFnZW50KSx1PXt9LEEuYnJvd3NlciYmKHVbQS5icm93c2VyXT0hMCx1LnZlcnNpb249CkEudmVyc2lvbiksdS5jaHJvbWU/dS53ZWJraXQ9ITA6dS53ZWJraXQmJih1LnNhZmFyaT0hMCksYi5icm93c2VyPXUpO20oYiwiYnJvd3NlciIsYi5icm93c2VyLCJqUXVlcnkuYnJvd3NlciBpcyBkZXByZWNhdGVkIik7Yi5zdWI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGIsZCl7cmV0dXJuIG5ldyBjLmZuLmluaXQoYixkKX1iLmV4dGVuZCghMCxjLHRoaXMpO2Muc3VwZXJjbGFzcz10aGlzO2MuZm49Yy5wcm90b3R5cGU9dGhpcygpO2MuZm4uY29uc3RydWN0b3I9YztjLnN1Yj10aGlzLnN1YjtjLmZuLmluaXQ9ZnVuY3Rpb24oZyxoKXtyZXR1cm4gaCYmaCBpbnN0YW5jZW9mIGImJiEoaCBpbnN0YW5jZW9mIGMpJiYoaD1jKGgpKSxiLmZuLmluaXQuY2FsbCh0aGlzLGcsaCxkKX07Yy5mbi5pbml0LnByb3RvdHlwZT1jLmZuO3ZhciBkPWMoZG9jdW1lbnQpO3JldHVybiBoKCJqUXVlcnkuc3ViKCkgaXMgZGVwcmVjYXRlZCIpLGN9O2IuYWpheFNldHVwKHtjb252ZXJ0ZXJzOnsidGV4dCBqc29uIjpiLnBhcnNlSlNPTn19KTsKdmFyIE89Yi5mbi5kYXRhO2IuZm4uZGF0YT1mdW5jdGlvbihjKXt2YXIgZyxtLG49dGhpc1swXTtyZXR1cm4hbnx8ImV2ZW50cyIhPT1jfHwxIT09YXJndW1lbnRzLmxlbmd0aHx8KGc9Yi5kYXRhKG4sYyksbT1iLl9kYXRhKG4sYyksZyE9PWQmJmchPT1tfHxtPT09ZCk/Ty5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KGgoIlVzZSBvZiBqUXVlcnkuZm4uZGF0YSgnZXZlbnRzJykgaXMgZGVwcmVjYXRlZCIpLG0pfTt2YXIgUj0vXC8oamF2YXxlY21hKXNjcmlwdC9pLHY9Yi5mbi5hbmRTZWxmfHxiLmZuLmFkZEJhY2s7Yi5mbi5hbmRTZWxmPWZ1bmN0aW9uKCl7cmV0dXJuIGgoImpRdWVyeS5mbi5hbmRTZWxmKCkgcmVwbGFjZWQgYnkgalF1ZXJ5LmZuLmFkZEJhY2soKSIpLHYuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtiLmNsZWFufHwoYi5jbGVhbj1mdW5jdGlvbihjLGcsbSxuKXtnPWd8fGRvY3VtZW50O2c9IWcubm9kZVR5cGUmJmdbMF18fGc7Zz1nLm93bmVyRG9jdW1lbnR8fGc7aCgialF1ZXJ5LmNsZWFuKCkgaXMgZGVwcmVjYXRlZCIpOwp2YXIgcCxxLHQ9W107aWYoYi5tZXJnZSh0LGIuYnVpbGRGcmFnbWVudChjLGcpLmNoaWxkTm9kZXMpLG0pZm9yKHA9ZnVuY3Rpb24oYil7cmV0dXJuIWIudHlwZXx8Ui50ZXN0KGIudHlwZSk/bj9uLnB1c2goYi5wYXJlbnROb2RlP2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKTpiKTptLmFwcGVuZENoaWxkKGIpOmR9LGM9MDtudWxsIT0oZz10W2NdKTtjKyspYi5ub2RlTmFtZShnLCJzY3JpcHQiKSYmcChnKXx8KG0uYXBwZW5kQ2hpbGQoZyksZy5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PWQmJihxPWIuZ3JlcChiLm1lcmdlKFtdLGcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSxwKSx0LnNwbGljZS5hcHBseSh0LFtjKzEsMF0uY29uY2F0KHEpKSxjKz1xLmxlbmd0aCkpO3JldHVybiB0fSk7dmFyIEM9Yi5ldmVudC5hZGQsSz1iLmV2ZW50LnJlbW92ZSwkPWIuZXZlbnQudHJpZ2dlcixhYT1iLmZuLnRvZ2dsZSxiYT1iLmZuLmxpdmUsZGE9Yi5mbi5kaWUsaWE9L1xiKD86YWpheFN0YXJ0fGFqYXhTdG9wfGFqYXhTZW5kfGFqYXhDb21wbGV0ZXxhamF4RXJyb3J8YWpheFN1Y2Nlc3MpXGIvLApCYT0vKD86Xnxccylob3ZlcihcLlxTK3wpXGIvLENhPWZ1bmN0aW9uKGMpe3JldHVybiJzdHJpbmciIT10eXBlb2YgY3x8Yi5ldmVudC5zcGVjaWFsLmhvdmVyP2M6KEJhLnRlc3QoYykmJmgoIidob3ZlcicgcHNldWRvLWV2ZW50IGlzIGRlcHJlY2F0ZWQsIHVzZSAnbW91c2VlbnRlciBtb3VzZWxlYXZlJyIpLGMmJmMucmVwbGFjZShCYSwibW91c2VlbnRlciQxIG1vdXNlbGVhdmUkMSIpKX07Yi5ldmVudC5wcm9wcyYmImF0dHJDaGFuZ2UiIT09Yi5ldmVudC5wcm9wc1swXSYmYi5ldmVudC5wcm9wcy51bnNoaWZ0KCJhdHRyQ2hhbmdlIiwiYXR0ck5hbWUiLCJyZWxhdGVkTm9kZSIsInNyY0VsZW1lbnQiKTtiLmV2ZW50LmRpc3BhdGNoJiZtKGIuZXZlbnQsImhhbmRsZSIsYi5ldmVudC5kaXNwYXRjaCwialF1ZXJ5LmV2ZW50LmhhbmRsZSBpcyB1bmRvY3VtZW50ZWQgYW5kIGRlcHJlY2F0ZWQiKTtiLmV2ZW50LmFkZD1mdW5jdGlvbihiLGMsZCxnLGwpe2IhPT1kb2N1bWVudCYmaWEudGVzdChjKSYmCmgoIkFKQVggZXZlbnRzIHNob3VsZCBiZSBhdHRhY2hlZCB0byBkb2N1bWVudDogIitjKTtDLmNhbGwodGhpcyxiLENhKGN8fCIiKSxkLGcsbCl9O2IuZXZlbnQucmVtb3ZlPWZ1bmN0aW9uKGIsYyxkLGcsaCl7Sy5jYWxsKHRoaXMsYixDYShjKXx8IiIsZCxnLGgpfTtiLmZuLmVycm9yPWZ1bmN0aW9uKCl7dmFyIGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBoKCJqUXVlcnkuZm4uZXJyb3IoKSBpcyBkZXByZWNhdGVkIiksYi5zcGxpY2UoMCwwLCJlcnJvciIpLGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5iaW5kLmFwcGx5KHRoaXMsYik6KHRoaXMudHJpZ2dlckhhbmRsZXIuYXBwbHkodGhpcyxiKSx0aGlzKX07Yi5mbi50b2dnbGU9ZnVuY3Rpb24oYyxkKXtpZighYi5pc0Z1bmN0aW9uKGMpfHwhYi5pc0Z1bmN0aW9uKGQpKXJldHVybiBhYS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aCgialF1ZXJ5LmZuLnRvZ2dsZShoYW5kbGVyLCBoYW5kbGVyLi4uKSBpcyBkZXByZWNhdGVkIik7CnZhciBnPWFyZ3VtZW50cyxsPWMuZ3VpZHx8Yi5ndWlkKyssbT0wLG49ZnVuY3Rpb24oZCl7dmFyIGg9KGIuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYy5ndWlkKXx8MCklbTtyZXR1cm4gYi5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIitjLmd1aWQsaCsxKSxkLnByZXZlbnREZWZhdWx0KCksZ1toXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtmb3Iobi5ndWlkPWw7Zy5sZW5ndGg+bTspZ1ttKytdLmd1aWQ9bDtyZXR1cm4gdGhpcy5jbGljayhuKX07Yi5mbi5saXZlPWZ1bmN0aW9uKGMsZCxnKXtyZXR1cm4gaCgialF1ZXJ5LmZuLmxpdmUoKSBpcyBkZXByZWNhdGVkIiksYmE/YmEuYXBwbHkodGhpcyxhcmd1bWVudHMpOihiKHRoaXMuY29udGV4dCkub24oYyx0aGlzLnNlbGVjdG9yLGQsZyksdGhpcyl9O2IuZm4uZGllPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGgoImpRdWVyeS5mbi5kaWUoKSBpcyBkZXByZWNhdGVkIiksZGE/ZGEuYXBwbHkodGhpcyxhcmd1bWVudHMpOihiKHRoaXMuY29udGV4dCkub2ZmKGMsCnRoaXMuc2VsZWN0b3J8fCIqKiIsZCksdGhpcyl9O2IuZXZlbnQudHJpZ2dlcj1mdW5jdGlvbihiLGMsZCxnKXtyZXR1cm4gZHx8aWEudGVzdChiKXx8aCgiR2xvYmFsIGV2ZW50cyBhcmUgdW5kb2N1bWVudGVkIGFuZCBkZXByZWNhdGVkIiksJC5jYWxsKHRoaXMsYixjLGR8fGRvY3VtZW50LGcpfTtiLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4U2VuZCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGMsZCl7Yi5ldmVudC5zcGVjaWFsW2RdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBjPXRoaXM7cmV0dXJuIGMhPT1kb2N1bWVudCYmKGIuZXZlbnQuYWRkKGRvY3VtZW50LGQrIi4iK2IuZ3VpZCxmdW5jdGlvbigpe2IuZXZlbnQudHJpZ2dlcihkLG51bGwsYywhMCl9KSxiLl9kYXRhKHRoaXMsZCxiLmd1aWQrKykpLCExfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiB0aGlzIT09ZG9jdW1lbnQmJmIuZXZlbnQucmVtb3ZlKGRvY3VtZW50LApkKyIuIitiLl9kYXRhKHRoaXMsZCkpLCExfX19KX0pKGFhLHdpbmRvdyk7KGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoYil7ZnVuY3Rpb24gZygpe2I/Qi5yZW1vdmVEYXRhKGIpOkQmJmRlbGV0ZSBkW0RdfWZ1bmN0aW9uIG4oKXt3LmlkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt3LmZuKCl9LEYpfXZhciBwPXRoaXMsQix3PXt9LHk9YXJndW1lbnRzLEo9NCxEPXlbMV0sRj15WzJdLEE9eVszXTsic3RyaW5nIiE9PXR5cGVvZiBEJiYoSi0tLEQ9Yj0wLEY9eVsxXSxBPXlbMl0pO2I/KEI9cC5lcSgwKSxCLmRhdGEoYix3PUIuZGF0YShiKXx8e30pKTpEJiYodz1kW0RdfHwoZFtEXT17fSkpO3cuaWQmJmNsZWFyVGltZW91dCh3LmlkKTtkZWxldGUgdy5pZDtpZihBKXcuZm49ZnVuY3Rpb24oYil7QS5hcHBseShwLGguY2FsbCh5LEopKSYmIWI/bigpOmcoKX0sbigpO2Vsc2V7aWYody5mbilyZXR1cm4gdm9pZCAwPT09Rj9nKCk6dy5mbighMT09PUYpLCEwO2coKX19IiQ6bm9tdW5nZSI7dmFyIGQ9Cnt9LGg9QXJyYXkucHJvdG90eXBlLnNsaWNlO2IuZG9UaW1lb3V0PWZ1bmN0aW9uKCl7cmV0dXJuIGMuYXBwbHkod2luZG93LFswXS5jb25jYXQoaC5jYWxsKGFyZ3VtZW50cykpKX07Yi5mbi5kb1RpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgYj1oLmNhbGwoYXJndW1lbnRzKSxkPWMuYXBwbHkodGhpcyxbImRvVGltZW91dCIrYlswXV0uY29uY2F0KGIpKTtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiBiWzBdfHwibnVtYmVyIj09PXR5cGVvZiBiWzFdP3RoaXM6ZH19KShhYSk7KGZ1bmN0aW9uKGIpe3ZhciBjPXsiJSI6ZnVuY3Rpb24oYil7cmV0dXJuIiUifSxiOmZ1bmN0aW9uKGIpe3JldHVybiBwYXJzZUludChiLDEwKS50b1N0cmluZygyKX0sYzpmdW5jdGlvbihiKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChiLDEwKSl9LGQ6ZnVuY3Rpb24oYil7cmV0dXJuIHBhcnNlSW50KGIsMTApP3BhcnNlSW50KGIsMTApOjB9LHU6ZnVuY3Rpb24oYil7cmV0dXJuIE1hdGguYWJzKGIpfSwKZjpmdW5jdGlvbihiLGMpe3JldHVybi0xPGM/TWF0aC5yb3VuZChwYXJzZUZsb2F0KGIpKk1hdGgucG93KDEwLGMpKS9NYXRoLnBvdygxMCxjKTpwYXJzZUZsb2F0KGIpfSxvOmZ1bmN0aW9uKGIpe3JldHVybiBwYXJzZUludChiLDEwKS50b1N0cmluZyg4KX0sczpmdW5jdGlvbihiKXtyZXR1cm4gYn0seDpmdW5jdGlvbihiKXtyZXR1cm4oIiIrcGFyc2VJbnQoYiwxMCkudG9TdHJpbmcoMTYpKS50b0xvd2VyQ2FzZSgpfSxYOmZ1bmN0aW9uKGIpe3JldHVybigiIitwYXJzZUludChiLDEwKS50b1N0cmluZygxNikpLnRvVXBwZXJDYXNlKCl9fSxkPS8lKD86KFxkKyk/KD86XC4oXGQrKSk/fFwoKFteKV0rKVwpKShbJWJjZHVmb3N4WF0pL2csaD1mdW5jdGlvbihiKXtpZigxPT1iLmxlbmd0aCYmIm9iamVjdCI9PXR5cGVvZiBiWzBdKXJldHVybiBiPWJbMF0sZnVuY3Rpb24oZCxoLGwscSx5LEosRCl7cmV0dXJuIGNbeV0oYltxXSl9O3ZhciBkPTA7cmV0dXJuIGZ1bmN0aW9uKGgsbCxCLAp3LHksSixEKXtyZXR1cm4gY1t5XShiW2QrK10sQil9fTtiLmV4dGVuZCh7c3ByaW50ZjpmdW5jdGlvbihiKXt2YXIgYz1BcnJheS5hcHBseShudWxsLGFyZ3VtZW50cykuc2xpY2UoMSk7cmV0dXJuIGIucmVwbGFjZShkLGgoYykpfSx2c3ByaW50ZjpmdW5jdGlvbihiLGMpe3JldHVybiBiLnJlcGxhY2UoZCxoKGMpKX19KX0pKGFhKTt0aGlzLkpTT058fCh0aGlzLkpTT049e30pOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYil7cmV0dXJuIDEwPmI/IjAiK2I6Yn1mdW5jdGlvbiBjKGIpe20ubGFzdEluZGV4PTA7cmV0dXJuIG0udGVzdChiKT8nIicrYi5yZXBsYWNlKG0sZnVuY3Rpb24oYil7dmFyIGM9cFtiXTtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBjP2M6IlxcdSIrKCIwMDAwIitiLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCl9KSsnIic6JyInK2IrJyInfWZ1bmN0aW9uIGQoYixoKXt2YXIgbSxwLEYsQSx1PXEsdCxIPWhbYl07SCYmIm9iamVjdCI9PT10eXBlb2YgSCYmCiJmdW5jdGlvbiI9PT10eXBlb2YgSC50b0pTT04mJihIPUgudG9KU09OKGIpKTsiZnVuY3Rpb24iPT09dHlwZW9mIEImJihIPUIuY2FsbChoLGIsSCkpO3N3aXRjaCh0eXBlb2YgSCl7Y2FzZSAic3RyaW5nIjpyZXR1cm4gYyhIKTtjYXNlICJudW1iZXIiOnJldHVybiBpc0Zpbml0ZShIKT9TdHJpbmcoSCk6Im51bGwiO2Nhc2UgImJvb2xlYW4iOmNhc2UgIm51bGwiOnJldHVybiBTdHJpbmcoSCk7Y2FzZSAib2JqZWN0IjppZighSClyZXR1cm4ibnVsbCI7cSs9bjt0PVtdO2lmKCJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KEgpKXtBPUgubGVuZ3RoO2ZvcihtPTA7bTxBO20rPTEpdFttXT1kKG0sSCl8fCJudWxsIjtGPTA9PT10Lmxlbmd0aD8iW10iOnE/IltcbiIrcSt0LmpvaW4oIixcbiIrcSkrIlxuIit1KyJdIjoiWyIrdC5qb2luKCIsIikrIl0iO3E9dTtyZXR1cm4gRn1pZihCJiYib2JqZWN0Ij09PXR5cGVvZiBCKWZvcihBPUIubGVuZ3RoLAptPTA7bTxBO20rPTEpcD1CW21dLCJzdHJpbmciPT09dHlwZW9mIHAmJihGPWQocCxIKSkmJnQucHVzaChjKHApKyhxPyI6ICI6IjoiKStGKTtlbHNlIGZvcihwIGluIEgpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoSCxwKSYmKEY9ZChwLEgpKSYmdC5wdXNoKGMocCkrKHE/IjogIjoiOiIpK0YpO0Y9MD09PXQubGVuZ3RoPyJ7fSI6cT8ie1xuIitxK3Quam9pbigiLFxuIitxKSsiXG4iK3UrIn0iOiJ7Iit0LmpvaW4oIiwiKSsifSI7cT11O3JldHVybiBGfX0iZnVuY3Rpb24iIT09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSlNPTiYmKERhdGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihjKXtyZXR1cm4gaXNGaW5pdGUodGhpcy52YWx1ZU9mKCkpP3RoaXMuZ2V0VVRDRnVsbFllYXIoKSsiLSIrYih0aGlzLmdldFVUQ01vbnRoKCkrMSkrIi0iK2IodGhpcy5nZXRVVENEYXRlKCkpKyJUIitiKHRoaXMuZ2V0VVRDSG91cnMoKSkrIjoiK2IodGhpcy5nZXRVVENNaW51dGVzKCkpKyI6IisKYih0aGlzLmdldFVUQ1NlY29uZHMoKSkrIloiOm51bGx9LFN0cmluZy5wcm90b3R5cGUudG9KU09OPU51bWJlci5wcm90b3R5cGUudG9KU09OPUJvb2xlYW4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy52YWx1ZU9mKCl9KTt2YXIgaD0vW1x1MDAwMFx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUyMDI4LVx1MjAyZlx1MjA2MC1cdTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS9nLG09L1tcXFwiXHgwMC1ceDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2cscSxuLHA9eyJcYiI6IlxcYiIsIlx0IjoiXFx0IiwiXG4iOiJcXG4iLCJcZiI6IlxcZiIsIlxyIjoiXFxyIiwnIic6J1xcIicsIlxcIjoiXFxcXCJ9LEI7ImZ1bmN0aW9uIiE9PXR5cGVvZiBKU09OLnN0cmluZ2lmeSYmCihKU09OLnN0cmluZ2lmeT1mdW5jdGlvbihiLGMsZyl7dmFyIGg7bj1xPSIiO2lmKCJudW1iZXIiPT09dHlwZW9mIGcpZm9yKGg9MDtoPGc7aCs9MSluKz0iICI7ZWxzZSJzdHJpbmciPT09dHlwZW9mIGcmJihuPWcpO2lmKChCPWMpJiYiZnVuY3Rpb24iIT09dHlwZW9mIGMmJigib2JqZWN0IiE9PXR5cGVvZiBjfHwibnVtYmVyIiE9PXR5cGVvZiBjLmxlbmd0aCkpdGhyb3cgRXJyb3IoIkpTT04uc3RyaW5naWZ5Iik7cmV0dXJuIGQoIiIseyIiOmJ9KX0pOyJmdW5jdGlvbiIhPT10eXBlb2YgSlNPTi5wYXJzZSYmKEpTT04ucGFyc2U9ZnVuY3Rpb24oYixjKXtmdW5jdGlvbiBkKGIsZyl7dmFyIGgsbCxtPWJbZ107aWYobSYmIm9iamVjdCI9PT10eXBlb2YgbSlmb3IoaCBpbiBtKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG0saCkmJihsPWQobSxoKSx2b2lkIDAhPT1sP21baF09bDpkZWxldGUgbVtoXSk7cmV0dXJuIGMuY2FsbChiLGcsbSl9dmFyIGc7aC5sYXN0SW5kZXg9MDtoLnRlc3QoYikmJgooYj1iLnJlcGxhY2UoaCxmdW5jdGlvbihiKXtyZXR1cm4iXFx1IisoIjAwMDAiK2IuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pKTtpZigvXltcXSw6e31cc10qJC8udGVzdChiLnJlcGxhY2UoL1xcKD86WyJcXFwvYmZucnRdfHVbMC05YS1mQS1GXXs0fSkvZywiQCIpLnJlcGxhY2UoLyJbXiJcXFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCspPy9nLCJdIikucmVwbGFjZSgvKD86Xnw6fCwpKD86XHMqXFspKy9nLCIiKSkpcmV0dXJuIGc9ZXZhbCgiKCIrYisiKSIpLCJmdW5jdGlvbiI9PT10eXBlb2YgYz9kKHsiIjpnfSwiIik6Zzt0aHJvdyBuZXcgU3ludGF4RXJyb3IoIkpTT04ucGFyc2UiKTt9KX0pKCk7ZC5tb2RbIkFqYXggSW50ZWdyYXRvciJdPXt2ZXI6Ik4vQSIsYXV0aG9yOiJcdTU0MTFcdTY1ZTUiLGZuOnsiYjE3YTA0NjMtZTQ2Yy00NDIwLWE4ZjUtZjE2OWZhYzIwYWVjIjp7ZGVzYzoiQWpheFx1NTMxNlx1OTgwMVx1OTc2Mlx1OGI4MFx1NTNkNiIsCnBhZ2U6ezMyOiEwfSx0eXBlOjcsb3B0aW9uczp7dmlld0FqYXhEaXNwbGF5TW9kZTp7ZGVzYzoiXHU5ODZmXHU3OTNhXHU2YTIxXHU1ZjBmIix0eXBlOiJzZWxlY3QiLGNob2ljZXM6WyJcdTU1YWVcdTk4MDFcdTZhMjFcdTVmMGYiLCJcdTVlZjZcdTVjNTVcdTZhMjFcdTVmMGYiLCJcdTVlZjZcdTVjNTVcdTZhMjFcdTVmMGYoXHU5NmIxXHU4NWNmXHU4ZjQ5XHU5ODAxXHU2ODNjKSJdLGRlZmF1bHRWYWx1ZToiXHU1ZWY2XHU1YzU1XHU2YTIxXHU1ZjBmIn0sbkNoZWNrSW50ZXJ2YWw6e2Rlc2M6Ilx1ODFlYVx1NTJkNVx1NjZmNFx1NjViMFx1OTU5M1x1OTY5NChcdTc5ZDIpIixkZWZhdWx0VmFsdWU6NjAsdHlwZToidGV4dCJ9LGFkZFZpZXdBamF4UGFnZUxpbmtzOntkZXNjOiJcdTUyYTBcdTUxNjVcdThmNDlcdTk4MDFcdTkwMjNcdTdkNTBcdTgxZjNcdTkwMjNcdTdkNTBcdTUxNDNcdTRlZjYiLGRlZmF1bHRWYWx1ZTohMCx0eXBlOiJjaGVja2JveCJ9LGF1dG9SZXRyeUFmdGVyUmVwbHlGYWlsOntkZXNjOiJcdTU2ZGVcdTg5ODZcdTU5MzFcdTY1NTdcdTY2NDJcdTgxZWFcdTUyZDVcdTkxY2RcdThhNjYiLApkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxjaGVja09uQm90dG9tOntkZXNjOiJcdTUzZWFcdTY3MDlcdTUyMzBcdTk4MDFcdTVlOTVcdTY2NDJcdTYyNGRcdTgxZWFcdTUyZDVcdTY2ZjRcdTY1YjBcdTVlMTZcdTViNTAiLGRlZmF1bHRWYWx1ZTohMCx0eXBlOiJjaGVja2JveCJ9fSxvbmNlOmZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGcoYil7YygndGFibGVbd2lkdGhceDNkIjk5JSJdIFx4M2UgdGJvZHkgXHgzZSB0ciBceDNlIHRkIFx4M2Ugc3Ryb25nJykudGV4dChiLmZpbmQoJ3RhYmxlW3dpZHRoXHgzZCI5OSUiXSBceDNlIHRib2R5IFx4M2UgdHIgXHgzZSB0ZCBceDNlIHN0cm9uZzpmaXJzdCcpLnRleHQoKSl9ZnVuY3Rpb24gbChiLGgpe3ZhciBsPWMoIi5yZXBsaWVyczpmaXJzdCIsYikudXAoImRpdiIpO2wuZmluZCgic2NyaXB0IikucmVtb3ZlKCk7aWYoLTEhPT1DLnNlYXJjaC5pbmRleE9mKCJ0eXBlXHgzZEZOIikpe3ZhciBtPWMoIi5QYWdlTWlkZGxlUGFuZWwgXHgzZSBkaXYiLApiKS5jaGlsZHJlbigpOzE8bS5sZW5ndGgmJm0uZmluZCgic2NyaXB0IikucmVtb3ZlKCkuZW5kKCkuc2xpY2UoMSkucmVtb3ZlKCkuYXBwZW5kVG8obCkuZmlsdGVyKCJ0YWJsZSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpO2IucmVwbGFjZVdpdGgoYi5maW5kKCJceDNlIHRib2R5IFx4M2UgdHIgXHgzZSB0ZFthbGlnbl0gXHgzZSAqIikpfSl9bC5wcmV2KCkucHJlcGVuZFRvKGwpOzIhPXcmJihtPWwucGFyZW50KCkuZmluZCgnc2VsZWN0W25hbWVceDNkInBhZ2UiXScpLG0uZGF0YSgiYW4tcGFnZW5vIixtLnZhbCgpKSxoPm4ubGFzdCYmYygnc2VsZWN0W25hbWVceDNkInBhZ2UiXTpsYXN0JykudXAoImRpdiIsMykucmVwbGFjZVdpdGgobS5maXJzdCgpLnVwKCJkaXYiLDMpLmNsb25lKCEwKSkpO2cobCk7aWYoYil7Zm9yKG09MTttPD1uLmxhc3Q7bSsrKWlmKG5bbV0mJmg8bSl7bC5pbnNlcnRCZWZvcmUoblttXSk7YnJlYWt9bT5uLmxhc3QmJmwuaW5zZXJ0QWZ0ZXIobltuLmxhc3RdKTsKZC5tb2RGbi5leGVjTW9kcyhsKX1pZighbi5sYXN0fHxoJiZoPm4ubGFzdCluLmxhc3Q9aHx8cDtyZXR1cm4gbltofHxwXT1sfWZ1bmN0aW9uIGgoYixnKXtmdW5jdGlvbiBoKGMpezA9PT13JiZuW3BdLmhpZGUoKTskLnB1c2hTdGF0ZT8kLnB1c2hTdGF0ZShudWxsLG51bGwsZC51dGlsLmdldFVSTCh7cGFnZTpifSkpOkMuaGFzaD0icGFnZVx4M2QiK2I7Z3x8Y1swXS5zY3JvbGxJbnRvVmlldygpO3A9YjtkLnNoYXJlZCgibG9nIiwiXHU4ZjQ5XHU5ODAxXHU1YjhjXHU2MjEwIik7di50cmlnZ2VyKHt0eXBlOiJ3b3JrZW5kIixpc1BhZ2VDaGFuZ2VFbmQ6ITAscHJldmlvdXNseUNhY2hlZDptfSl9aWYoIXkpe2lmKDE+YilyZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxJbnRvVmlldygpO2lmKGI+QilyZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxJbnRvVmlldyghMSk7dmFyIG09ISFuW2JdO3YudHJpZ2dlcigid29ya3N0YXJ0Iik7ZC5zaGFyZWQoImxvZyIsYy5zcHJpbnRmKCJcdTZiNjNcdTU3MjhcdThmNDlcdTgxZjNcdTdiMmMlc1x1OTgwMS4uLiIsCmIpKTttP2gobltiXS5zaG93KCkpOmMuZ2V0RG9jKGQudXRpbC5nZXRVUkwoe3BhZ2U6Yn0pLGZ1bmN0aW9uKGMpe2gobChjLGIpKX0pfX1mdW5jdGlvbiBtKGIpe3l8fCg0MT09bi5sYXN0P2Quc2hhcmVkKCJsb2ciLCIxMDAxISIpOjA9PT13JiZwIT1CP2J8fGgocCsxLGIpOjAhPT13JiZuLmxhc3QhPUI/aChuLmxhc3QrMSxiKToodi50cmlnZ2VyKCJ3b3Jrc3RhcnQiKSxkLnNoYXJlZCgibG9nIiwiXHU2YjYzXHU1NzI4XHU4YjgwXHU1M2Q2XHU2NzAwXHU2NWIwXHU1NmRlXHU4OTg2Li4uIiksYy5nZXREb2MoZC51dGlsLmdldFVSTCh7cGFnZTpuLmxhc3R9KSxmdW5jdGlvbihsKXtsLmZpbmQoInNjcmlwdCIpLnJlbW92ZSgpO2cobCk7dmFyIG09bC5yZXBsaWVzKCk7bD1sLmZpbmQoJ3NlbGVjdFtuYW1lXHgzZCJwYWdlIl06Zmlyc3QnKTt2YXIgcD1uW24ubGFzdF0ucmVwbGllcygpLmxlbmd0aCxxPWwuY2hpbGRyZW4oKS5sZW5ndGgsdD1tLmxlbmd0aC1wLEg9cT5CO2lmKDA+PQp0JiYhSClkLnNoYXJlZCgibG9nIiwiXHU2YzkyXHU2NzA5XHU2NWIwXHU1NmRlXHU4OTg2Iik7ZWxzZXt2YXIgeT1jKCk7MDx0JiYoeT15LmFkZChtLnNsaWNlKHApLmNsb3Nlc3QoJ3RhYmxlW3dpZHRoXHgzZCIxMDAlIl0nKS5pbnNlcnRBZnRlcihuW24ubGFzdF0uY2hpbGRyZW4oJ3RhYmxlW3dpZHRoXHgzZCIxMDAlIl06bGFzdCcpKSksbltuLmxhc3RdLmpSZXBsaWVzPW51bGwsZC5zaGFyZWQoImxvZyIsYy5zcHJpbnRmKCJcdTUyYTBcdTUxNjUlc1x1NTAwYlx1NjViMFx1NTZkZVx1ODk4NiIsdCkpKTtpZihIKWlmKEI9cSwyIT13JiYoYygnc2VsZWN0W25hbWVceDNkInBhZ2UiXScpLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIGI9Yyh0aGlzKSxkPWIuY2hpbGRyZW4oKS5sZW5ndGg7ZDxxOyliLmFwcGVuZChjLnNwcmludGYoJ1x4M2NvcHRpb24gdmFsdWVceDNkIiUocGFnZU5vKXMiXHgzZSUocGFnZU5vKXNceDNjL29wdGlvblx4M2UnLHtwYWdlTm86KytkfSkpfSksbltuLmxhc3RdLmZpbmQoJ3NlbGVjdFtuYW1lXHgzZCJwYWdlIl0nKS5hZGQoYygnc2VsZWN0W25hbWVceDNkInBhZ2UiXTpsYXN0JykpLnVwKCJkaXYiLAozKS5yZXBsYWNlV2l0aChsLmRhdGEoImFuLXBhZ2VubyIsbi5sYXN0KS51cCgiZGl2IiwzKSkpLDA9PT13KWQuc2hhcmVkKCJsb2ciLCJcdTc2N2NcdTczZmVcdTRlMGJcdTRlMDBcdTk4MDEsIFx1OTAyM1x1N2Q1MFx1NWVmYVx1N2FjYiIpO2Vsc2Ugdi5vbmUoIndvcmtlbmQiLGZ1bmN0aW9uKCl7aChuLmxhc3QrMSxiKX0pO2QubW9kRm4uZXhlY01vZHMoeSl9di50cmlnZ2VyKCJ3b3JrZW5kIil9KSkpfWIuZGVmZXIoMSwiXHU3OWZiXHU5NjY0XHU1MzlmXHU2NzA5XHU4ZjQ5XHU5ODAxXHU1MjlmXHU4MGZkIixmdW5jdGlvbigpe3dpbmRvdy5jaGFuZ2VQYWdlPWMubm9vcH0pO2QudXRpbC5zdGFja1N0eWxlKCcuaGtnX2JvdHRvbWJhcl9saW5rW2hyZWZeXHgzZCJqYXZhc2NyaXB0OiBCbG9ja1VzZXIoIl0geyBkaXNwbGF5OiBub25lOyB9Jyk7dmFyIHE9MTAwMTt2LmJpbmQoImNsaWNrLnVzZXJsaW5rYm94IixmdW5jdGlvbihiKXt2YXIgZD1jKGIudGFyZ2V0KTtkLmlzKCdhW2hyZWZeXHgzZCJqYXZhc2NyaXB0OiBUb2dnbGVVc2VyRGV0YWlsIl0nKSYmCihiLnByZXZlbnREZWZhdWx0KCksYj1kLmRhdGEoImFuLWJveElkIiksYnx8KGI9cSsrLGQuZGF0YSgiYW4tYm94SWQiLGIpLm5leHRBbGwoImRpdltpZF5ceDNkVGhyZWFkVXNlcl0iKS5hdHRyKCJpZCIsIlRocmVhZFVzZXIiK2IpKSx3aW5kb3cuVG9nZ2xlVXNlckRldGFpbChiLGQuY2xvc2VzdCgiW3VzZXJpZF0iKVswXS5pZCkpfSk7dmFyIG49e30scD1iLnBhZ2VObygpLEI9Yygnc2VsZWN0W25hbWVceDNkInBhZ2UiXTpmaXJzdCcpLmNoaWxkcmVuKCkubGVuZ3RoLHc9Yy5pbkFycmF5KGQudXRpbC5nZXRPcHRpb25zKCJ2aWV3QWpheERpc3BsYXlNb2RlIiksdGhpcy5vcHRpb25zLnZpZXdBamF4RGlzcGxheU1vZGUuY2hvaWNlcyk7ZC51dGlsLmlzTG9nZ2VkSW4oKSYmYygiI2FzcG5ldEZvcm0iKS5zdWJtaXQoZnVuY3Rpb24oYil7Yi5wcmV2ZW50RGVmYXVsdCgpO2MuZG9UaW1lb3V0KCJhdXRvUmV0cnlSZXBseSIpO3k/KGQuc2hhcmVkKCJsb2ciLCJcdTZiNjNcdTU3MjhcdTVkZTVcdTRmNWNcdTRlMmQsIFx1NWI4Y1x1NjIxMFx1NWMwN1x1ODFlYVx1NTJkNVx1OTFjZFx1OGE2NiIpLAp2Lm9uZSgid29ya2VuZCIsZnVuY3Rpb24oKXtjLmRvVGltZW91dCgiYXV0b1JldHJ5UmVwbHkiLDAsZnVuY3Rpb24oKXtjKCIjYXNwbmV0Rm9ybSIpLnN1Ym1pdCgpfSl9KSk6KHYudHJpZ2dlcigid29ya3N0YXJ0IiksZC5zaGFyZWQoImxvZyIsIlx1NmI2M1x1NTcyOFx1NzY3Y1x1OTAwMVx1NTZkZVx1ODk4Ni4uLiIpLGMucG9zdChDLnBhdGhuYW1lK0Muc2VhcmNoLGMoIiNhc3BuZXRGb3JtIikuc2VyaWFsaXplKCkrIlx4MjZjdGwwMCUyNENvbnRlbnRQbGFjZUhvbGRlcjElMjRidG5fU3VibWl0LnhceDNkMFx4MjZjdGwwMCUyNENvbnRlbnRQbGFjZUhvbGRlcjElMjRidG5fU3VibWl0LnlceDNkMFx4MjZjdGwwMCUyNENvbnRlbnRQbGFjZUhvbGRlcjElMjRidG5fU3VibWl0XHgzZFx1NWYzNVx1OGNiYyIsZnVuY3Rpb24oYil7InZpZXciIT09Yy5kb2MoYikucGFnZU5hbWUoKT8oZC51dGlsLmdldE9wdGlvbnMoImF1dG9SZXRyeUFmdGVyUmVwbHlGYWlsIik/KGQuc2hhcmVkKCJsb2ciLCJcdTU2ZGVcdTg5ODZcdTc2N2NcdTkwMDFcdTU5MzFcdTY1NTcsIDVcdTc5ZDJcdTVmOGNcdTkxY2RcdTY1YjBcdTc2N2NcdTkwMDEuLi4iKSwKYy5kb1RpbWVvdXQoImF1dG9SZXRyeVJlcGx5Iiw1RTMsZnVuY3Rpb24oKXtjKCIjYXNwbmV0Rm9ybSIpLnN1Ym1pdCgpfSkpOmQuc2hhcmVkKCJsb2ciLCJcdTU2ZGVcdTg5ODZcdTc2N2NcdTkwMDFcdTU5MzFcdTY1NTchIiksdi50cmlnZ2VyKCJ3b3JrZW5kIikpOihjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdldGV4dCIpLnZhbCgiIiksYygiI3ByZXZpZXdBcmVhIikuZW1wdHkoKSxkLnNoYXJlZCgibG9nIiwiXHU1NmRlXHU4OTg2XHU3NjdjXHU5MDAxXHU1YjhjXHU2MjEwIiksdi50cmlnZ2VyKCJ3b3JrZW5kIiksbSghMCkpfSkpfSk7dmFyIHk9ITE7di5iaW5kKCJ3b3Jrc3RhcnQgd29ya2VuZCIsZnVuY3Rpb24oYil7eT0id29ya3N0YXJ0Ij09Yi50eXBlfSk7di5iaW5kKCJjbGljayIsZnVuY3Rpb24oYil7dmFyIGc9YyhiLnRhcmdldCk7Zy5wYXJlbnQoImEiKS5sZW5ndGgmJihnPWcucGFyZW50KCkpO2cuaXMoImEiKSYmZy5wYXJlbnQoImRpdiIpLnNpYmxpbmdzKCJkaXYiKS5jaGlsZHJlbignc2VsZWN0W25hbWVceDNkInBhZ2UiXScpLmxlbmd0aCYmCihiLnByZXZlbnREZWZhdWx0KCksaChkLnV0aWwuZ2V0UGFnZU5vKGcuYXR0cigiaHJlZiIpKSkpfSk7Mj09dz9kLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoIiUocGFnZURpdilzIFx4M2UgZGl2LCAlKHBhZ2VEaXYpcyBceDNlIGJyLCAlKHBhZ2VEaXYpcyArIGJyIHsgZGlzcGxheTogbm9uZTsgfSIse3BhZ2VEaXY6JyNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3ZpZXdfZm9ybSBceDNlIGRpdltzdHlsZV5ceDNkIndpZHRoIl0nfSkpOnYuYmluZCgiY2hhbmdlIixmdW5jdGlvbihiKXtiPWMoYi50YXJnZXQpO2lmKGIuaXMoJ3NlbGVjdFtuYW1lXHgzZCJwYWdlIl0nKSl7dmFyIGQ9Yi52YWwoKTtiLnZhbChiLmRhdGEoImFuLXBhZ2VubyIpKTtoKDEqZCl9fSk7bCgpOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoZCl7aWYoMDw9ZC50aW1lfHx5KXJldHVybiAwPD1kLnRpbWUmJmgudGV4dChkLnRpbWUtLSsiXHU3OWQyIiksITA7Yy5kb1RpbWVvdXQoImNoZWNrYm90dG9tIiw1MDAsCmcpfWZ1bmN0aW9uIGcoKXtpZihsJiY1MDA8bltuLmxhc3RdLm9mZnNldCgpLnRvcCtuW24ubGFzdF0uaGVpZ2h0KCktdi5zY3JvbGxUb3AoKS1iYS5oZWlnaHQoKSlyZXR1cm4hMDttKCEwKX12YXIgaD1jKCJceDNjc3Bhblx4M2VOL0FceDNjL3NwYW5ceDNlIikuYXBwZW5kVG8oZC5zaGFyZWQoImFkZEluZm8iLCJcdThkZGRcdTk2ZTJcdTY2ZjRcdTY1YjA6ICIpKSxsPWQudXRpbC5nZXRPcHRpb25zKCJjaGVja09uQm90dG9tIikscT1kLnV0aWwuZ2V0T3B0aW9ucygibkNoZWNrSW50ZXJ2YWwiKTtpZighcXx8MTA+cSlxPTEwO3YuYmluZCgid29ya3N0YXJ0IHdvcmtlbmQiLGZ1bmN0aW9uKGQpe2MuZG9UaW1lb3V0KCJjaGVja2JvdHRvbSIpO2gudGV4dCgiTi9BIik7IndvcmtlbmQiIT1kLnR5cGV8fDA9PT13JiZwIT1CfHxjLmRvVGltZW91dCgiY2hlY2tib3R0b20iLDFFMyxiLHt0aW1lOmQuaXNQYWdlQ2hhbmdlRW5kJiYoZC5wcmV2aW91c2x5Q2FjaGVkfHxuLmxhc3QhPUIpPwoxOnF9KX0pfSkoKTsoZnVuY3Rpb24oKXt2YXIgYj1jKCJceDNjYSAvXHgzZSIpLmFwcGVuZFRvKGQuc2hhcmVkKCJhZGRJbmZvIiwiXHU2NzJjXHU5ODAxXHU5ODAxXHU2NTc4OiAiKSk7di5iaW5kKCJ3b3JrZW5kIixmdW5jdGlvbihjKXtjLmlzUGFnZUNoYW5nZUVuZCYmYi5hdHRyKCJocmVmIixkLnV0aWwuZ2V0VVJMKHtwYWdlOnB9KSkudGV4dCgiXHU3YjJjIitwKyJcdTk4MDEiKX0pfSkoKTt2LnRyaWdnZXIoe3R5cGU6IndvcmtlbmQiLGlzUGFnZUNoYW5nZUVuZDohMH0pO2IuZGVmZXIoMiwiXHU1MmEwXHU1MTY1XHU4YjgwXHU1M2Q2XHU2MzA5XHU2MjZkIixmdW5jdGlvbigpe2Quc2hhcmVkKCJhZGRCdXR0b24iLCJcdTY2ZjRcdTY1YjBcdTVlMTZcdTViNTAiLGZ1bmN0aW9uKCl7bSghMSl9KX0pO2QudXRpbC5nZXRPcHRpb25zKCJhZGRWaWV3QWpheFBhZ2VMaW5rcyIpJiYoZC5zaGFyZWQoImFkZExpbmsiLCJcdTRlMGFcdTRlMDBcdTk4MDEiLGZ1bmN0aW9uKCl7aChwLTEpfSwKMCksZC5zaGFyZWQoImFkZExpbmsiLCJcdTRlMGJcdTRlMDBcdTk4MDEiLGZ1bmN0aW9uKCl7aChwKzEpfSwyKSl9fSwiYmMyNTIxY2QtY2Y2NS00Y2M1LWFjOWQtNGZlZGVmM2MzYTk3Ijp7ZGVzYzoiQWpheFx1NWYwZlx1NTIxN1x1ODg2OFx1NjZmNFx1NjViMCIscGFnZTp7NDohMH0sdHlwZTo3LG9wdGlvbnM6e25OdW1PZlRvcGljUGFnZTp7ZGVzYzoiXHU1MjE3XHU4ODY4XHU5ODZmXHU3OTNhXHU2NTc4XHU5MWNmIixkZWZhdWx0VmFsdWU6MSx0eXBlOiJ0ZXh0In0sYkFkZEdldEJ0bl9UOntkZXNjOiJcdTUyYTBcdTUxNjVcdTY2ZjRcdTY1YjBcdTUyMTdcdTg4NjhcdTYzMDlcdTYyNmQiLGRlZmF1bHRWYWx1ZTohMCx0eXBlOiJjaGVja2JveCJ9LGJBdXRvUmVmcmVzaF9UOntkZXNjOiJcdTk4MTBcdThhMmRcdTU1NWZcdTc1MjhcdTgxZWFcdTUyZDVcdTY2ZjRcdTY1YjAiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJBZGRUb2dnbGVBdXRvQnRuX1Q6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NTIwN1x1NjNkYlx1ODFlYVx1NTJkNVx1NjZmNFx1NjViMFx1NjMwOVx1NjI2ZCIsCmRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LG5SZWZyZXNoSW50ZXJ2YWxfVDp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU2NmY0XHU2NWIwXHU5NTkzXHU5Njk0KFx1NzlkMikiLGRlZmF1bHRWYWx1ZTo2MCx0eXBlOiJ0ZXh0In19LG9uY2U6ZnVuY3Rpb24oYil7dmFyIGc9ITEsbD1bXSxoPShjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9qc0xhYmVsIikuaHRtbCgpfHwiIikubWF0Y2goL1BhZ2VNZXRob2RzLisvbSksbT1mdW5jdGlvbih3LHksSixEKXtjbGVhclRpbWVvdXQobik7aWYoIWd8fEopZz0hMCxpc05hTih3KSYmKHc9MSxEfHxkLnNoYXJlZCgibG9nIiwiXHU2YjYzXHU1NzI4XHU4YjgwXHU1M2Q2XHU2NzAwXHU2NWIwXHU1MjE3XHU4ODY4Li4uIikpLEQmJiF5JiYoeT1jKCdpbWdbYWx0XHgzZCJuZXh0Il1bc3JjXHgzZCJpbWFnZXMvYnV0dG9uLW5leHQuZ2lmIl0nKS5wYXJlbnQoKS5hdHRyKCJocmVmIikpLGMuRGVmZXJyZWQoZnVuY3Rpb24oZCl7aWYoIXkmJgpoKXt2YXIgZz1oWzBdLnNwbGl0KC9bKCldLyksbD13aW5kb3c7Yy5lYWNoKGdbMF0uc3BsaXQoIi4iKSxmdW5jdGlvbihiLGMpe2w9bFtjXX0pO2wuYXBwbHkobnVsbCxnWzFdLnJlcGxhY2UoLycvZywiIikuc3BsaXQoLyxccyovKS5zbGljZSgwLDIpLmNvbmNhdChmdW5jdGlvbihnKXtkLnJlc29sdmUoYygiXHgzY3Rib2R5XHgzZSIpLmFwcGVuZChiLnRvcGljVGFibGUoKS5maW5kKCJ0cjpoYXModGgpOmZpcnN0IikucHJldkFsbCgpLmFkZEJhY2soKS5jbG9uZSgpKS5hcHBlbmQoZyksYil9LGMubm9vcCkpfWVsc2UgYy5nZXREb2MoeXx8Qy5ocmVmLGZ1bmN0aW9uKGIpe2QucmVzb2x2ZShiLnRvcGljcygpLmpUYm9keS5maW5kKCJzY3JpcHQiKS5yZW1vdmUoKS5lbmQoKVswXSxiKX0pfSkudGhlbihmdW5jdGlvbihiLGgpe2wucHVzaChiKTt3Pj1kLnV0aWwuZ2V0T3B0aW9ucygibk51bU9mVG9waWNQYWdlIik/KHRvcGljVGFibGU9di50b3BpY1RhYmxlKCksRHx8dG9waWNUYWJsZS5lbXB0eSgpLAp0b3BpY1RhYmxlLmFwcGVuZChsKSxkLm1vZEZuLmV4ZWNNb2RzKGMoZG9jdW1lbnQpLnRvcGljVGFibGUoKSksbD1bXSxEfHxkLnNoYXJlZCgibG9nIiwiXHU1MjE3XHU4ODY4XHU2NmY0XHU2NWIwXHU1YjhjXHU2MjEwIikscCYmKER8fGQuc2hhcmVkKCJsb2cyIixjLnNwcmludGYoIiVzXHU3OWQyXHU1ZjhjXHU1MThkXHU2YjIxXHU5MWNkXHU2NWIwXHU2NTc0XHU1N2NiLi4uLiIsQikpLHEoKSksZz0hMSk6bSgrK3csaC5maW5kKCdpbWdbYWx0XHgzZCJuZXh0Il1bc3JjXHgzZCJpbWFnZXMvYnV0dG9uLW5leHQuZ2lmIl0nKS5wYXJlbnQoKS5hdHRyKCJocmVmIiksITAsRCl9KX07MTxkLnV0aWwuZ2V0T3B0aW9ucygibk51bU9mVG9waWNQYWdlIikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXttKDIsbnVsbCwhMSwhMCl9LDApO3ZhciBxPWZ1bmN0aW9uKCl7bj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bSgpfSwxRTMqQil9O2QudXRpbC5nZXRPcHRpb25zKCJiQWRkR2V0QnRuX1QiKSYmCmIuZGVmZXIoMiwiXHU1MmEwXHU1MTY1XHU2NmY0XHU2NWIwXHU2MzA5XHU2MjZkIixmdW5jdGlvbigpe2Quc2hhcmVkKCJhZGRCdXR0b24iLCJcdTY2ZjRcdTY1YjBcdTUyMTdcdTg4NjgiLG0pfSk7dmFyIG4scD1kLnV0aWwuZ2V0T3B0aW9ucygiYkF1dG9SZWZyZXNoX1QiKSxCPWQudXRpbC5nZXRPcHRpb25zKCJuUmVmcmVzaEludGVydmFsX1QiKTszMD5CJiYoQj0zMCk7cCYmcSgpO2QudXRpbC5nZXRPcHRpb25zKCJiQWRkVG9nZ2xlQXV0b0J0bl9UIikmJmQuc2hhcmVkKCJhZGRCdXR0b24iLCJcdTUyMDdcdTYzZGJcdTgxZWFcdTUyZDVcdTY2ZjRcdTY1YjAiLGZ1bmN0aW9uKCl7cD8oY2xlYXJUaW1lb3V0KG4pLGQuc2hhcmVkKCJsb2ciLCJcdTVkZjJcdTUwNWNcdTc1MjhcdTgxZWFcdTUyZDVcdTY2ZjRcdTY1YjAiKSk6KHEoKSxkLnNoYXJlZCgibG9nIiwiXHU1ZGYyXHU1NTVmXHU3NTI4XHU4MWVhXHU1MmQ1XHU2NmY0XHU2NWIwIikpO3A9IXB9KX19fX07ZC5tb2QuS2VybmVsPQp7dmVyOiJOL0EiLGF1dGhvcjoiXHU1NDExXHU2NWU1Iixmbjp7S2VybmVsX0luaXRpYWxpemVyOntkZXNjOiJcdTUyMWRcdTU5Y2JcdTUzMTYiLHBhZ2U6ezY1NTM1OiJjb21wIn0sdHlwZToxLG9uY2U6ZnVuY3Rpb24oYil7YygiaGVhZCIpLmxlbmd0aHx8YygiaHRtbCIpLnByZXBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaGVhZCIpKTtjLmFqYXhTZXR1cCh7Y2FjaGU6ITEsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldFx4M2RVVEYtOCJ9KTtpZigiMy41YiIhPWQudXRpbC5kYXRhKCJBTi12ZXJzaW9uIikpe2lmKGQudXRpbC5kYXRhKCJBTi12ZXJzaW9uIikpcmV0dXJuIGQudXRpbC5zdG9yYWdlKG51bGwpLGQudXRpbC5kYXRhKCJBTi12ZXJzaW9uIiwiMy41YiIpLGFsZXJ0KCJcdTc1MzFcdTY1YmNcdTUxNjdcdTY4MzhcdTY1MzlcdTUyZDUsIFx1NjI0MFx1NjcwOVx1OGEyZFx1NWI5YVx1NWRmMlx1ODhhYlx1OTFjZFx1OGEyZC5cblx1NGUwZFx1NGZiZlx1NGU0Ylx1ODY1NSwgXHU2NTZjXHU4YWNiXHU1MzlmXHU4YWQyLiIpLApDLnJlbG9hZCgpO2QudXRpbC5kYXRhKCJBTi12ZXJzaW9uIiwiMy41YiIpfSJ2aWV3Ij09di5wYWdlTmFtZSgpJiZjKCJzZWxlY3RbbmFtZVx4M2RwYWdlXSIpLnZhbChkLnV0aWwuZ2V0UGFnZU5vKEMuc2VhcmNoKSl9fSwiMTFmMWM1Y2EtOTQ1NS00ZjhlLWJhYTctMDU0YjQyZDlhMmM0Ijp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU4ZjQ5XHU1NDExXHU2YjYzXHU3OGJhXHU5ODAxXHU5NzYyIixwYWdlOns2NTUzNDohMH0sdHlwZTo0LG9uY2U6ZnVuY3Rpb24oKXtpZigtMSE9Qy5oYXNoLmluZGV4T2YoIiNwYWdlXHgzZCIpJiZkLnV0aWwuZ2V0UGFnZU5vKEMuc2VhcmNoKSE9ZC51dGlsLmdldFBhZ2VObyhDLmhhc2gpKXJldHVybiBDLnJlcGxhY2UoZC51dGlsLmdldFVSTCh7cGFnZTpDLmhhc2gucmVwbGFjZSgvI3BhZ2U9LywiIil9KS5yZXBsYWNlKC8maGlnaGxpZ2h0X2lkPTBcYi8sIiIpKX19LCJhNTk5ZGFmYS1iNTUwLTRiMjgtOTIxYS0wMTljNzJmNDgxZTUiOntkZXNjOiJcdTk2NjRcdTkzMmZcdTZhMjFcdTVmMGYgW1x1OTY2NFx1OTMyZlx1NjMwOVx1NjI2ZFx1MzAwMVx1NjZmNFx1NmU5Nlx1NzhiYVx1OGE1NVx1NmUyY1x1N2Q1MFx1Njc5Y1x1N2I0OV0iLApwYWdlOns2NTUzNTohMX0sdHlwZToxLG9uY2U6ZnVuY3Rpb24oYil7ZC5ib3guZGVidWdNb2RlPSEwO2QudXRpbC5hZGRTdHlsZSgiIik7ZC51dGlsLmdldE9wdGlvbnMoKTtkLnV0aWwuZ2V0T3B0aW9ucy5vT3B0aW9ucy5iQXV0b1Nob3dMb2c9ITA7ZC51dGlsLmdldE9wdGlvbnMub09wdGlvbnMuYlNob3dEZXRhaWxMb2c9ITA7di5wYWdlQ29kZSgpJjkyP2IudG9waWNzKCk6InZpZXciPT12LnBhZ2VOYW1lKCkmJmIucmVwbGllcygpO2IuZGVmZXIoMSwiXHU1MmEwXHU1MTY1XHU1NTVmXHU1MmQ1RmlyZWJ1ZyBMaXRlXHU3Njg0XHU2MzA5XHU2MjZkIixmdW5jdGlvbigpe2Quc2hhcmVkKCJhZGRCdXR0b24iLCJcdTU1NWZcdTUyZDVGaXJlYnVnIExpdGUiLGZ1bmN0aW9uKCl7Yy5nZXRTY3JpcHQoImh0dHA6Ly9nZXRmaXJlYnVnLmNvbS9yZWxlYXNlcy9saXRlLzEuMi9maXJlYnVnLWxpdGUtY29tcHJlc3NlZC5qcyIsZnVuY3Rpb24oKXt3aW5kb3cuZmlyZWJ1Zy5pbml0KCl9KX0pfSl9fSwKIjEyYzk4ZWJjLTg3M2MtNDYzNi1hMTFhLTJjNGM2Y2U3ZDRjMiI6e2Rlc2M6Ilx1OGEyZFx1NWI5YVx1NTE2N1x1NjgzOFx1NmEyM1x1NWYwZiIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjIsb3B0aW9uczp7c1VJRm9udENvbG9yOntkZXNjOiJVSVx1NGUzYlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjODA4MDgwIix0eXBlOiJ0ZXh0In0sc1VJSG92ZXJDb2xvcjp7ZGVzYzoiVUlcdTkwMjNcdTdkNTBcdTYxZjhcdTZkNmVcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzlBQ0QzMiIsdHlwZToidGV4dCJ9LHNNYWluRm9udENvbG9yOntkZXNjOiJcdThhZDZcdTU4YzdcdTRlM2JcdTg5ODFcdTViNTdcdTlhZDRcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzAwMDAwMCIsdHlwZToidGV4dCJ9LHNNYWluQm9yZGVyQ29sb3I6e2Rlc2M6Ilx1OGFkNlx1NThjN1x1NGUzYlx1ODk4MVx1OTA4YVx1Njg0Nlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjMDAwMDAwIix0eXBlOiJ0ZXh0In0sCnNTZWNCb3JkZXJDb2xvcjp7ZGVzYzoiXHU4YWQ2XHU1OGM3XHU2YjIxXHU4OTgxXHU5MDhhXHU2ODQ2XHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNDQ0NDQ0MiLHR5cGU6InRleHQifSxzTWFpbkJnQ29sb3I6e2Rlc2M6Ilx1OGFkNlx1NThjN1x1NGUzYlx1ODk4MVx1ODBjY1x1NjY2Zlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjRkZGRkZGIix0eXBlOiJ0ZXh0In0sc1NlY0JnQ29sb3I6e2Rlc2M6Ilx1OGFkNlx1NThjN1x1NmIyMVx1ODk4MVx1ODBjY1x1NjY2Zlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjRjhGOEY4Iix0eXBlOiJ0ZXh0In0sc01haW5IZWFkZXJGb250Q29sb3I6e2Rlc2M6Ilx1OGFkNlx1NThjN1x1NmExOVx1OTg0Y1x1NWI1N1x1OWFkNFx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjRkZGRkZGIix0eXBlOiJ0ZXh0In0sc01haW5IZWFkZXJCZ0NvbG9yOntkZXNjOiJcdThhZDZcdTU4YzdcdTZhMTlcdTk4NGNcdTgwY2NcdTY2NmZcdTk4NGZcdTgyNzIiLApkZWZhdWx0VmFsdWU6IiMzMzY2OTkiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZignIFx0XHQjYW4sICNhbiBsZWdlbmQgeyBjb2xvcjogJShzTWFpbkZvbnRDb2xvcilzOyB9IFx0XHRcdFx0LmFuLWZvcnVtLCAuYW4tZm9ydW0gdGV4dGFyZWEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNTZWNCZ0NvbG9yKXM7IH0gXHRcdC5hbi1mb3J1bSBpbnB1dFt0eXBlXHgzZCJ0ZXh0Il0sIC5hbi1mb3J1bSBzZWxlY3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluQmdDb2xvcilzOyBib3JkZXI6IDFweCBzb2xpZCAlKHNNYWluQm9yZGVyQ29sb3IpczsgfSBcdFx0LmFuLWZvcnVtIGlucHV0W3R5cGVceDNkInRleHQiXTpkaXNhYmxlZCwgLmFuLWZvcnVtIHNlbGVjdDpkaXNhYmxlZCB7IGNvbG9yOiBncmF5dGV4dDsgfSBcdFx0LmFuLWZvcnVtLCAuYW4tZm9ydW0gaDQsIC5hbi1mb3J1bSBkaXYsIC5hbi1mb3J1bSB0ZCwgLmFuLWZvcnVtIGRsLCAuYW4tZm9ydW0gZHQsIC5hbi1mb3J1bSBkZCwgLmFuLWZvcnVtIHVsLCAuYW4tZm9ydW0gbGksIC5hbi1mb3J1bSBhLCAuYW4tZm9ydW0gZmllbGRzZXQsIC5hbi1mb3J1bSBociB7IGJvcmRlcjogMCBzb2xpZCAlKHNNYWluQm9yZGVyQ29sb3IpczsgfSBcdFx0LmFuLWZvcnVtICogeyBjb2xvcjogJShzTWFpbkZvbnRDb2xvcilzOyB9IFx0XHQuYW4tZm9ydW0gYSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfSBcdFx0LmFuLWZvcnVtIGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfSBcdFx0LmFuLWZvcnVtIHRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IH0gXHRcdC5hbi1mb3J1bSB0ZCB7IGxpbmUtaGVpZ2h0OiAxLjVlbTsgcGFkZGluZzogMCAwLjJlbTsgYm9yZGVyLXdpZHRoOiAxcHg7IH0gXHRcdC5hbi1mb3J1bS1oZWFkZXJbY2xhc3NdLCAuYW4tZm9ydW0gdGhlYWQgdGQgeyBjb2xvcjogJShzTWFpbkhlYWRlckZvbnRDb2xvcilzOyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluSGVhZGVyQmdDb2xvcilzOyB9IFx0XHQuYW4tZm9ydW0taGVhZGVyW2NsYXNzXSB7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgfSBcdFx0XHRcdC5hbi1jb250ZW50LW5vdGUsIC5hbi1jb250ZW50LWxpbmUsIC5hbi1jb250ZW50LWJveCB7IGNvbG9yOiAlKHNVSUZvbnRDb2xvcilzOyB9IFx0XHQuYW4tY29udGVudC1ub3RlIHsgbWFyZ2luLXJpZ2h0OiAycHg7IGN1cnNvcjogZGVmYXVsdDsgfSBcdFx0LmFuLWNvbnRlbnQtbGluZSB7IGZvbnQtc2l6ZTogMC42MjVlbTsgZm9udC1zdHlsZTogaXRhbGljOyB9IFx0XHQuYW4tY29udGVudC1ib3ggeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlcjogMXB4IHNvbGlkOyBwYWRkaW5nOiAxcHggMnB4OyB9IFx0XHRhLmFuLWNvbnRlbnQtbGluZSwgYS5hbi1jb250ZW50LWJveCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyB9IFx0XHRhLmFuLWNvbnRlbnQtbGluZTpob3ZlciwgYS5hbi1jb250ZW50LWJveDpob3ZlciB7IGNvbG9yOiAlKHNVSUhvdmVyQ29sb3IpczsgfSBcdFx0JywKZC51dGlsLmdldE9wdGlvbnMoKSkpfX0sIjc4YWYzYzI5LTliZjItNDdlZS04MGJmLWEzNTc1YjcxMWM3MyI6e2Rlc2M6Ilx1ODFlYVx1NTJkNVx1NmFhMlx1NjdlNVx1NjZmNFx1NjViMCIsZGVmZXI6NSxwYWdlOns0OiEwfSx0eXBlOjEsb3B0aW9uczp7YkFsc29DaGVja0JldGE6e2Rlc2M6Ilx1NTQwY1x1NjY0Mlx1NmFhMlx1NjdlNUJldGFcdTcyNDhcdTY3MmMiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LG5DaGVja1VwZGF0ZUludGVydmFsOntkZXNjOiJcdTZhYTJcdTY3ZTVcdTY2ZjRcdTY1YjBcdTk1OTNcdTk2OTQoXHU1YzBmXHU2NjQyKSIsZGVmYXVsdFZhbHVlOjEyLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe3ZhciBiPWQudXRpbC5nZXRPcHRpb25zKCJuQ2hlY2tVcGRhdGVJbnRlcnZhbCIpO2lmKGlzTmFOKGIpfHwxPmIpYj0xO3ZhciBnPWQudXRpbC5kYXRhKCJuTGFzdENoZWNrZWQiKXx8MDtjLnRpbWUoKS1nPDM2RTUqYnx8ZC51dGlsLmdldERhdGEoIm1haW4iLApmdW5jdGlvbihiKXtkLnV0aWwuZGF0YSgibkxhc3RDaGVja2VkIixjLnRpbWUoKSk7Zm9yKHZhciBnPWQudXRpbC5nZXRPcHRpb25zKCJiQWxzb0NoZWNrQmV0YSIpPyJiZXRhIjoic3RhYmxlIixtPWIudmVyW2ddLmFubnV1cy5zcGxpdCgiLiIpLHE9ZC52ZXJzaW9uLnNwbGl0KCIuIiksbj0wO248bS5sZW5ndGg7bisrKWlmKHFbbl0hPT1tW25dKXsrcVtuXTwrbVtuXSYmKGQudXRpbC5hZGRTdHlsZSgiXHRcdFx0XHRcdFx0I2FuLXVwZGF0ZSBceDNlIGRpdiB7IG1hcmdpbjogMjBweCA1MHB4OyB9IFx0XHRcdFx0XHRcdCNhbi11cGRhdGUgXHgzZSBkaXYgXHgzZSBhIHsgcGFkZGluZzogMCA1cHg7IH0gXHRcdFx0XHRcdFx0IiksZC5zaGFyZWQuYm94KCJhbi11cGRhdGUiLCJcdTc2N2NcdTczZmVcdTY1YjBcdTcyNDhcdTY3MmMiKS5hcHBlbmQoYy5zcHJpbnRmKCdcdFx0XHRcdFx0XHRceDNjZGl2XHgzZVx4M2NkaXZceDNlXHU3M2ZlXHU1NzI4XHU3MjQ4XHU2NzJjOiAlc1x4M2MvZGl2XHgzZVx4M2NkaXZceDNlXHU2NzAwXHU2NWIwXHU3MjQ4XHU2NzJjOiAlcyAlc1x4M2MvZGl2XHgzZVx4M2MvZGl2XHgzZSBcdFx0XHRcdFx0XHRceDNjZGl2IHN0eWxlXHgzZCJ0ZXh0LWFsaWduOiBjZW50ZXIiXHgzZVx4M2NhIGhyZWZceDNkImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9oZWxpYW50aHVzLWFubnV1cy93aWtpL0hvd1RvSW5zdGFsbCJceDNlXHU0ZTBiXHU4ZjA5XHU5ODAxXHgzYy9hXHgzZVx4M2NhIGhyZWZceDNkImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9oZWxpYW50aHVzLWFubnV1cy93aWtpL0NoYW5nZWxvZyJceDNlXHU2NmY0XHU2NWIwXHU2NWU1XHU4YThjXHgzYy9hXHgzZVx4M2MvZGl2XHgzZSBcdFx0XHRcdFx0XHQnLApkLnZlcnNpb24sYi52ZXJbZ10uYW5udXVzLCJzdGFibGUiPT09Z3x8Yi52ZXIuc3RhYmxlLmFubnV1cz09PWIudmVyLmJldGEuYW5udXVzPyJzdGFibGUiOiJiZXRhIikpLGQuc2hhcmVkLmdyYXkoITAsImFuLXVwZGF0ZSIpKTticmVha319KX19LCJjMjE3YmY1NS02ZDQ0LTQyZDEtOGZjMi0yY2QxNjYyZDYwNGEiOntkZXNjOiJcdThmNDlcdTk4MDFcdTVmOGNcdTUxOGRcdTZiMjFcdTkwNGJcdTg4NGNcdTUyOWZcdTgwZmQiLHBhZ2U6ezY0OiEwfSx0eXBlOjEsb25jZTpmdW5jdGlvbigpe3dpbmRvdy5Qcm9maWxlX1Nob3dHb29nbGVBZHM9ZC5tb2RGbi5leGVjTW9kc319LCI3MjJiNjlmOC1iODBkLTRiMGUtYjYwOC04Nzk0NmUwMGNmZGMiOntkZXNjOiJcdTVmMzdcdTUyMzZcdTkzOTZcdTViOWFcdTk1Y2FcdTVlYTYiLHBhZ2U6ezY1NTM0OiJjb21wIn0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj0iYm9keSB7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgfSAuRGl2UmVzaXphYmxlQm94RGV0YWlscyB7IHdvcmQtd3JhcDogbm9ybWFsOyB9IjsKInZpZXciPT09Yyhkb2N1bWVudCkucGFnZU5hbWUoKSYmKGIrPSJcdFx0XHQucmVwbGllcnNfcmlnaHQgeyB0YWJsZS1sYXlvdXQ6IGZpeGVkOyB3aWR0aDogMTAwJTsgfSBcdFx0XHQuQ29udGVudEdyaWQgeyB3aWR0aDogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuOyB9IFx0XHRcdCIpO2QudXRpbC5hZGRTdHlsZShiKX0saW5maW5pdGU6ZnVuY3Rpb24oYil7MT09PWIucGFnZU5vKCkmJmIucmVwbGllcygpLmVxKDApLmZpbmQoJ3RkW2NvbHNwYW5ceDNkIjEwMCUiXScpLmF0dHIoImNvbHNwYW4iLDIpfX0sIjFiODA0YjY3LTQwYWItNDc1MC04NzU5LWU2MzM0NmQyODllZiI6e2Rlc2M6Ilx1OGEyZFx1NWI5YVx1OGFkNlx1NThjN1x1NmQ2ZVx1NTJkNVx1NzI2OVx1NGVmNlx1ODFmM1x1NjcwMFx1NGUwYVx1NWM2NCIscGFnZTp7NjU1MzQ6ITB9LHR5cGU6NCxpbmZpbml0ZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCIuVHJhbnNwYXJlbnRHcmF5QmFja2dyb3VuZCwgLlRyYW5zcGFyZW50R3JheUJhY2tncm91bmQgKyAqIHsgei1pbmRleDogMTA7IH0iKX19LAoiNWQ1MzcyMGMtN2Y0Zi00Nzc3LWE1MTEtY2Y1N2ZlZDQxMmNkIjp7ZGVzYzoiXHU3Mjc5XHU2YjhhXHU4YTJkXHU1YjlhOiBcdTUyMWRcdTU5Y2JcdTUzMTYiLHBhZ2U6ezY1NTM1OiJjb21wIn0sdHlwZToxLG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj17bmFtZToiYW4tY29uZmlnIix2ZXJzaW9uOjIuMX07ZC5zaGFyZWQuZ2V0Q29uZmlnPWZ1bmN0aW9uKCl7dmFyIGc9Yy5leHRlbmQoe30sYik7Yy5lYWNoKFsiYW5fZGF0YSIsImFuX3N3aXRjaGVzIiwiYW5fb3B0aW9ucyJdLGZ1bmN0aW9uKGIsYyl7Z1tjXT1kLnV0aWwuc3RvcmFnZShjKX0pO3JldHVybiB3aW5kb3cuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZykpKSl9O2Quc2hhcmVkLnNldENvbmZpZz1mdW5jdGlvbihnKXt0cnl7Zz1KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUod2luZG93LmF0b2IoZykpKSl9Y2F0Y2gobCl7dGhyb3cgRXJyb3IoIlx1OGEyZFx1NWI5YVx1OGNjN1x1NjU5OVx1NTI1Nlx1Njc5MFx1OTMyZlx1OGFhNCEiKTsKfWlmKGcubmFtZSE9PWIubmFtZSl0aHJvdyBFcnJvcigiXHU4YTJkXHU1YjlhXHU4Y2M3XHU2NTk5XHU2ODNjXHU1ZjBmXHU5MzJmXHU4YWE0ISIpO2lmKGcudmVyc2lvbiE9PWIudmVyc2lvbil0aHJvdyBFcnJvcigiXHU0ZTBkXHU3NmY4XHU1YmI5XHU3Njg0XHU4YTJkXHU1YjlhXHU4Y2M3XHU2NTk5XHU3MjQ4XHU2NzJjOiAiK2cudmVyc2lvbik7Yy5lYWNoKFsiYW5fZGF0YSIsImFuX3N3aXRjaGVzIiwiYW5fb3B0aW9ucyJdLGZ1bmN0aW9uKGIsYyl7YyBpbiBnJiZkLnV0aWwuc3RvcmFnZShjLGdbY10pfSk7ZC5zaGFyZWQuZmlsbE9wdGlvbnMoITApO2FsZXJ0KCJcdThhMmRcdTViOWFcdTkwODRcdTUzOWZcdTYyMTBcdTUyOWYhIil9fX0sIjQzN2I2NmU2LWFiZTktNGI1YS1hYzBlLWQxMzJkMDU3ODUyMSI6e2Rlc2M6Ilx1NzI3OVx1NmI4YVx1OGEyZFx1NWI5YTogXHU2ZWQ5XHU1MWZhL1x1NjZmNFx1NjViMFx1OGEyZFx1NWI5YSIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjEsCm9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1bXTtkLnNoYXJlZC5hZGREYXRhQXBpPWZ1bmN0aW9uKGMpe2IucHVzaChjKX07Yyhkb2N1bWVudCkub25lKCJhbi1zZXR0aW5ncy1zcGVjaWFsIixmdW5jdGlvbihkKXtjKCdcdFx0XHRceDNjZGl2XHgzZSBcdFx0XHRcdFx4M2NoNFx4M2VceDNjc3Bhblx4M2VcdTZlZDlcdTUxZmEvXHU2NmY0XHU2NWIwXHU4YTJkXHU1YjlhXHgzYy9zcGFuXHgzZVx4M2NociAvXHgzZVx4M2MvaDRceDNlIFx0XHRcdFx0XHgzY2Rpdlx4M2UgXHRcdFx0XHRcdFx4M2NzZWxlY3QgaWRceDNkImFuLXNldHRpbmdzLXNwZWNpYWwtYXBpLWxpc3QiXHgzZVx4M2Mvc2VsZWN0XHgzZSBcdFx0XHRcdFx0XHgzY2J1dHRvbiBpZFx4M2QiYW4tc2V0dGluZ3Mtc3BlY2lhbC1hcGktZXhwb3J0Ilx4M2VcdTZlZDlcdTUxZmFceDNjL2J1dHRvblx4M2UgXHRcdFx0XHRcdFx4M2NidXR0b24gaWRceDNkImFuLXNldHRpbmdzLXNwZWNpYWwtYXBpLXVwZGF0ZSJceDNlXHU2NmY0XHU2NWIwXHgzYy9idXR0b25ceDNlIFx0XHRcdFx0XHRceDNjc3BhbiBpZFx4M2QiYW4tc2V0dGluZ3Mtc3BlY2lhbC1hcGktbWVzc2FnZSJceDNlXHgzYy9zcGFuXHgzZSBcdFx0XHRcdFx4M2MvZGl2XHgzZSBcdFx0XHRceDNjL2Rpdlx4M2UgXHRcdFx0JykuYXBwZW5kVG8oZC50YXJnZXQpLm9uKCJjbGljayIsCiJidXR0b24iLGZ1bmN0aW9uKGQpe3ZhciBnPWJbYygiI2FuLXNldHRpbmdzLXNwZWNpYWwtYXBpLWxpc3QiKVswXS5zZWxlY3RlZEluZGV4XTtpZihnKXRyeXsiYW4tc2V0dGluZ3Mtc3BlY2lhbC1hcGktZXhwb3J0Ij09PWQudGFyZ2V0LmlkPyhjKCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1jb25maWciKS52YWwoZy5nZXQoKSkuc2VsZWN0KCksbXNnPSJcdTZlZDlcdTUxZmFcdTYyMTBcdTUyOWYhIFx1OGFjYlx1ODkwN1x1ODhmZFx1OGEyZFx1NWI5YVx1OGNjN1x1NjU5OSIpOihnLnNldChjLnRyaW0oYygiI2FuLXNldHRpbmdzLXNwZWNpYWwtY29uZmlnIikudmFsKCkpKSxtc2c9Ilx1NjZmNFx1NjViMFx1NjIxMFx1NTI5ZiEiKSxjKCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1hcGktbWVzc2FnZSIpLnRleHQobXNnKS5maW5pc2goKS5zaG93KCkuZGVsYXkoMkUzKS5mYWRlT3V0KCl9Y2F0Y2gobSl7YWxlcnQobS5tZXNzYWdlKX19KTtjLmVhY2goYixmdW5jdGlvbihiLGQpe2MoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWFwaS1saXN0IikuYXBwZW5kKGMuc3ByaW50ZigiXHgzY29wdGlvblx4M2Ulc1x4M2Mvb3B0aW9uXHgzZSIsCmQubmFtZSkpfSl9KTtkLnNoYXJlZC5hZGREYXRhQXBpKHtuYW1lOiJcdTYyNDBcdTY3MDlcdThhMmRcdTViOWEiLGdldDpmdW5jdGlvbigpe3JldHVybiBkLnNoYXJlZC5nZXRDb25maWcoKX0sc2V0OmZ1bmN0aW9uKGIpe2Quc2hhcmVkLnNldENvbmZpZyhiKX19KTtkLnNoYXJlZC5hZGREYXRhQXBpKHtuYW1lOiJcdTZhMTlcdTk4NGNcdTkwNGVcdTZmZmVcdTU0MGRcdTU1YWUiLGdldDpmdW5jdGlvbigpe3JldHVybihkLnV0aWwuZGF0YSgiYVRvcGljRmlsdGVyIil8fFtdKS5qb2luKCJcbiIpfSxzZXQ6ZnVuY3Rpb24oYil7ZC51dGlsLmRhdGEoImFUb3BpY0ZpbHRlciIsYj9iLnNwbGl0KC9ccyo/XG5ccyovZyk6W10pfX0pO2Quc2hhcmVkLmFkZERhdGFBcGkoe25hbWU6Ilx1NzUyOFx1NjIzNlx1NWMwMVx1OTM5Nlx1NTQwZFx1NTVhZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKGQudXRpbC5kYXRhKCJhQmFtTGlzdCIpfHxbXSkuam9pbigiXG4iKX0sc2V0OmZ1bmN0aW9uKGIpe2lmKC9bXlxkXHNdLy50ZXN0KGIpKXRocm93IEVycm9yKCJcdThjYzdcdTY1OTlcdTY4M2NcdTVmMGZcdTkzMmZcdThhYTQhIik7CmQudXRpbC5kYXRhKCJhQmFtTGlzdCIsYj9iLnNwbGl0KC9ccyo/XG5ccyovZyk6W10pfX0pfX0sImExNmUyYmNkLWZmMjEtNDdiYS1iNmQ4LTk4MzUxNDg4NGJmMyI6e2Rlc2M6Ilx1NzI3OVx1NmI4YVx1OGEyZFx1NWI5YTogXHU1MDk5XHU0ZWZkL1x1OTA4NFx1NTM5Zlx1OGEyZFx1NWI5YSAoR29vZ2xlIERyaXZlKSIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjEsb25jZTpmdW5jdGlvbigpe3ZhciBiPXtjbGllbnRfaWQ6Ijg3Nzk4MDE4NDM4OC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsc2NvcGU6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvZHJpdmUuZmlsZSIsaW1tZWRpYXRlOiEwfTtjKGRvY3VtZW50KS5vbmUoImFuLXNldHRpbmdzLXNwZWNpYWwiLGZ1bmN0aW9uKGcpe2MoJ1x0XHRcdFx4M2NkaXZceDNlIFx0XHRcdFx0XHgzY2g0XHgzZVx4M2NzcGFuXHgzZVx1NTA5OVx1NGVmZC9cdTkwODRcdTUzOWZcdThhMmRcdTViOWEgKEdvb2dsZSBEcml2ZSlceDNjL3NwYW5ceDNlXHgzY2hyIC9ceDNlXHgzYy9oNFx4M2UgXHRcdFx0XHRceDNjZGl2XHgzZVx4M2NidXR0b24gZGF0YS1hY3Rpb25ceDNkImluaXQiXHgzZVx1NTIxZFx1NTljYlx1NTMxNlx1ODIwN0dvb2dsZSBEcml2ZVx1NzY4NFx1OTAyM1x1NjNhNVx4M2MvYnV0dG9uXHgzZVx4M2MvZGl2XHgzZSBcdFx0XHRcdFx4M2NkaXYgZGF0YS1yb3dceDNkIm1haW4iIHN0eWxlXHgzZCJkaXNwbGF5Om5vbmUiXHgzZVx4M2NidXR0b24gZGF0YS1hY3Rpb25ceDNkImJhY2t1cCJceDNlXHU1MDk5XHU0ZWZkXHU2MjQwXHU2NzA5XHU4YTJkXHU1YjlhXHU4MWYzR29vZ2xlIERyaXZlXHgzYy9idXR0b25ceDNlIFx4M2NidXR0b24gZGF0YS1hY3Rpb25ceDNkInJlc3RvcmUiXHgzZVx1NWY5ZUdvb2dsZSBEcml2ZVx1OTA4NFx1NTM5Zlx1NjI0MFx1NjcwOVx1OGEyZFx1NWI5YVx4M2MvYnV0dG9uXHgzZSBceDNjc3BhbiBpZFx4M2QiYW4tc2V0dGluZ3Mtc3BlY2lhbC1nZHJpdmUtbXNnIlx4M2VceDNjL3NwYW5ceDNlXHgzYy9kaXZceDNlIFx0XHRcdFx4M2MvZGl2XHgzZSBcdFx0XHQnKS5hcHBlbmRUbyhnLnRhcmdldCkub24oImNsaWNrIiwKJ2J1dHRvbltkYXRhLWFjdGlvblx4M2QiaW5pdCJdJyxmdW5jdGlvbihiKXt2YXIgZD1jKGIudGFyZ2V0KS5wYXJlbnQoKTtkLnRleHQoIlx1OGFjYlx1N2EwZFx1NTAxOS4uLiIpO2Mud2hlbih3aW5kb3cuZ2FwaXx8Yy5EZWZlcnJlZChmdW5jdGlvbihiKXt3aW5kb3cuQU5fU0VUVElOR1NfU1BFQ0lBTF9HRFJJVkVfT05MT0FEX0NBTExCQUNLPWZ1bmN0aW9uKCl7ZGVsZXRlIHdpbmRvdy5BTl9TRVRUSU5HU19TUEVDSUFMX0dEUklWRV9PTkxPQURfQ0FMTEJBQ0s7c2V0VGltZW91dChmdW5jdGlvbigpe2dhcGkuYXV0aC5hdXRob3JpemUoe2NsaWVudF9pZDoiODc3OTgwMTg0Mzg4LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIixzY29wZToiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vYXV0aC9kcml2ZS5maWxlIixpbW1lZGlhdGU6ITB9LGZ1bmN0aW9uKCl7Yi5yZXNvbHZlKCl9KX0sMCl9O2MuYWpheCh7dXJsOiJodHRwczovL2FwaXMuZ29vZ2xlLmNvbS9qcy9jbGllbnQuanM/b25sb2FkXHgzZEFOX1NFVFRJTkdTX1NQRUNJQUxfR0RSSVZFX09OTE9BRF9DQUxMQkFDSyIsCmRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwfSl9KSkudGhlbihmdW5jdGlvbigpe2QuaGlkZSgpLm5leHQoKS5zaG93KCl9KX0pLm9uKCJjbGljayIsJ2RpdltkYXRhLXJvd1x4M2QibWFpbiJdIFx4M2UgYnV0dG9uJyxmdW5jdGlvbihnKXtjLkRlZmVycmVkKGZ1bmN0aW9uKGMpe2dhcGkuYXV0aC5nZXRUb2tlbigpP2MucmVzb2x2ZSgpOihiLmltbWVkaWF0ZT0hMSxnYXBpLmF1dGguYXV0aG9yaXplKGIsZnVuY3Rpb24oYil7Y1tiPyJyZXNvbHZlIjoicmVqZWN0Il0oKX0pKX0pLnRoZW4oZnVuY3Rpb24oKXt2YXIgYj1mdW5jdGlvbihiKXtjKCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1nZHJpdmUtbXNnIikudGV4dCgiIik7YiYmYWxlcnQoYil9O2MoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWdkcml2ZS1tc2ciKS50ZXh0KCJcdThhY2JcdTdhMGRcdTUwMTkuLi4iKTt2YXIgbT1jKGcudGFyZ2V0KS5kYXRhKCJhY3Rpb24iKTtjLkRlZmVycmVkKGZ1bmN0aW9uKGMpe2dhcGkuY2xpZW50LnJlcXVlc3Qoe3BhdGg6Ii9kcml2ZS92Mi9maWxlcyIsCnBhcmFtczp7bWF4UmVzdWx0czoxLHE6InRpdGxlIFx4M2QgJ0hlbGlhbnRodXMuYW5udXVzLnR4dCcgYW5kIHRyYXNoZWQgXHgzZCBmYWxzZSIsZmllbGRzOiJpdGVtcy9pZCxpdGVtcy9kb3dubG9hZFVybCJ9LGNhbGxiYWNrOmZ1bmN0aW9uKGQpe2QuZXJyb3I/KGMucmVqZWN0KCksYigiXHU3NjdjXHU3NTFmXHU5MzJmXHU4YWE0OiAiK2QuZXJyb3IubWVzc2FnZSkpOmQuaXRlbXMmJmQuaXRlbXNbMF0/Yy5yZXNvbHZlKGQuaXRlbXNbMF0pOiJyZXN0b3JlIj09PW0/KGMucmVqZWN0KCksYigiXHU3NjdjXHU3NTFmXHU5MzJmXHU4YWE0OiBcdTVmOWVHb29nbGUgRHJpdmVcdTYyN2VcdTRlMGRcdTUyMzBcdThhMmRcdTViOWFcdThjYzdcdTY1OTkhIikpOmdhcGkuY2xpZW50LnJlcXVlc3Qoe3BhdGg6Ii9kcml2ZS92Mi9maWxlcyIsbWV0aG9kOiJQT1NUIixwYXJhbXM6e2ZpZWxkczoiaWQifSxib2R5Ont0aXRsZToiSGVsaWFudGh1cy5hbm51dXMudHh0In0sY2FsbGJhY2s6ZnVuY3Rpb24oZCl7ZC5lcnJvcj8KKGMucmVqZWN0KCksYigiXHU3NjdjXHU3NTFmXHU5MzJmXHU4YWE0OiAiK2QuZXJyb3IubWVzc2FnZSkpOmMucmVzb2x2ZShkKX19KX19KX0pLnRoZW4oZnVuY3Rpb24oZyl7ImJhY2t1cCI9PT1tP2dhcGkuY2xpZW50LnJlcXVlc3Qoe3BhdGg6Ii91cGxvYWQvZHJpdmUvdjIvZmlsZXMvIitnLmlkKyI/dXBsb2FkVHlwZVx4M2RtZWRpYSIsbWV0aG9kOiJQVVQiLGJvZHk6ZC5zaGFyZWQuZ2V0Q29uZmlnKCksaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifSxjYWxsYmFjazpmdW5jdGlvbihjKXtiKCJcdTUwOTlcdTRlZmRcdTYyMTBcdTUyOWYhIil9fSk6InJlc3RvcmUiPT09bSYmYy5hamF4KHt1cmw6Zy5kb3dubG9hZFVybCxoZWFkZXJzOntBdXRob3JpemF0aW9uOiJCZWFyZXIgIitnYXBpLmF1dGguZ2V0VG9rZW4oKS5hY2Nlc3NfdG9rZW59fSkudGhlbihmdW5jdGlvbihjKXt0cnl7ZC5zaGFyZWQuc2V0Q29uZmlnKGMpfWNhdGNoKGcpe2FsZXJ0KGcubWVzc2FnZSl9YigpfSwKZnVuY3Rpb24oYyl7YigiXHU3NjdjXHU3NTFmXHU5MzJmXHU4YWE0OiAiK2Muc3RhdHVzVGV4dCl9KX0pfSl9KX0pfX0sIjI5N2ExMzQxLTU4N2YtNDA3Ni1iYmZjLTM0MmMwYjgxNDBiMSI6e2Rlc2M6Ilx1NzI3OVx1NmI4YVx1OGEyZFx1NWI5YTogXHU1NDBjXHU2YjY1XHU4YTJkXHU1YjlhIixwYWdlOns2NTUzNToiY29tcCJ9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihiLGgpe2lmKGcpYWxlcnQoIlx1NTQwY1x1NmI2NVx1OTAzMlx1ODg0Y1x1NGUyZCwgXHU4YWNiXHU3YjQ5XHU1Zjg1XHU1ZGU1XHU0ZjVjXHU1YjhjXHU2MjEwIik7ZWxzZXtnPSEwO3ZhciBtPWMoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLXN5bmMtbXNnIikudGV4dCgiXHU1NDBjXHU2YjY1XHU0ZTJkLCBcdThhY2JcdTdhMGRcdTUwMTkuLi4iKTtoPUpTT04uc3RyaW5naWZ5KHt0eXBlOmIsdmFsdWU6aH0pO3ZhciBxPWQudXRpbC5nZXRGb3J1bSgpLG49YygpLHA9W10sQj1bInNlYXJjaCJdLHc7CmZvcih3PTE7MTU+PXc7dysrKUIucHVzaCgiZm9ydW0iK3cpO2Zvcih3PTA7dzxCLmxlbmd0aDt3Kyspe3ZhciB5PUJbd107eSE9PXEmJihuPW4uYWRkKGMoYy5zcHJpbnRmKCdceDNjaWZyYW1lIHNyY1x4M2QiaHR0cDovLyVzLmhrZ29sZGVuLmNvbS9lcnJvci5odG1sP2FuX3N5bmMiIGRhdGEtZm9ydW1ceDNkIiVzIiBzdHlsZVx4M2QiZGlzcGxheTpub25lIlx4M2VceDNjL2lmcmFtZVx4M2UnLHkseSkpKSl9dmFyIHY9ZnVuY3Rpb24oKXtwLnB1c2goYyh0aGlzKS5kYXRhKCJmb3J1bSIpKTtEKHRoaXMpfSxEPWZ1bmN0aW9uKGIsZCl7bj1uLm5vdChiKTtjKGIpLnJlbW92ZSgpOzA9PT1uLmxlbmd0aCYmKGMod2luZG93KS5vZmYoZCksbS50ZXh0KCIiKSxhbGVydCgiXHU1NDBjXHU2YjY1XHU1YjhjXHU2MjEwISIrKHAubGVuZ3RoPyJcblxuXHU0ZWU1XHU0ZTBiXHU0ZjNhXHU2NzBkXHU1NjY4XHU1NDBjXHU2YjY1XHU1OTMxXHU2NTU3OlxuIitwLnNvcnQoKToiIikpLGc9ITEpfTsKYyh3aW5kb3cpLm9uKCJtZXNzYWdlIixmdW5jdGlvbihiKXt0cnl7dmFyIGM9SlNPTi5wYXJzZShiLm9yaWdpbmFsRXZlbnQuZGF0YSkudHlwZX1jYXRjaChkKXt9ImFuLXN5bmMtcmVhZHkiPT09Yz9iLm9yaWdpbmFsRXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKGgsIioiKToiYW4tc3luYy1jb21wbGV0ZSI9PT1jJiZEKGIub3JpZ2luYWxFdmVudC5zb3VyY2UuZnJhbWVFbGVtZW50LGIpfSk7c2V0VGltZW91dChmdW5jdGlvbigpe2MuZWFjaChuLGZ1bmN0aW9uKCl7di5jYWxsKHRoaXMpfSl9LDFFNCk7bi5vbih7ZXJyb3I6dn0pLmFwcGVuZFRvKCIjYW4iKX19dmFyIGc9ITE7Yyhkb2N1bWVudCkub25lKCJhbi1zZXR0aW5ncy1zcGVjaWFsIixmdW5jdGlvbihnKXtjKCdcdFx0XHRceDNjZGl2XHgzZSBcdFx0XHRcdFx4M2NoNFx4M2VceDNjc3Bhblx4M2VcdTU0MGNcdTZiNjVcdThhMmRcdTViOWFceDNjL3NwYW5ceDNlXHgzY2hyIC9ceDNlXHgzYy9oNFx4M2UgXHRcdFx0XHRceDNjZGl2XHgzZVx4M2NidXR0b24gaWRceDNkImFuLXNldHRpbmdzLXNwZWNpYWwtc3luYy1zZXR0aW5ncyJceDNlXHU1NDBjXHU2YjY1XHU2MjQwXHU2NzA5XHU4YTJkXHU1YjlhXHU4MWYzXHU1MTc2XHU0ZWQ2XHU0ZjNhXHU2NzBkXHU1NjY4XHgzYy9idXR0b25ceDNlIFx4M2NzcGFuIGlkXHgzZCJhbi1zZXR0aW5ncy1zcGVjaWFsLXN5bmMtbXNnIlx4M2VceDNjL3NwYW5ceDNlXHgzYy9kaXZceDNlIFx0XHRcdFx4M2MvZGl2XHgzZSBcdFx0XHQnKS5hcHBlbmRUbyhnLnRhcmdldCkub24oImNsaWNrIiwKIiNhbi1zZXR0aW5ncy1zcGVjaWFsLXN5bmMtc2V0dGluZ3MiLGZ1bmN0aW9uKCl7dmFyIGc9e307Yy5lYWNoKFsiYW5fZGF0YSIsImFuX3N3aXRjaGVzIiwiYW5fb3B0aW9ucyJdLGZ1bmN0aW9uKGIsYyl7Z1tjXT1kLnV0aWwuc3RvcmFnZShjKX0pO2IoImFuLXN5bmMtc2V0dGluZ3MiLEpTT04uc3RyaW5naWZ5KGcpKX0pfSk7dG9wIT09c2VsZiYmLTEhPT1DLnNlYXJjaC5pbmRleE9mKCJhbl9zeW5jIikmJihjKHdpbmRvdykub24oIm1lc3NhZ2UiLGZ1bmN0aW9uKGIpe3RyeXt2YXIgZz1KU09OLnBhcnNlKGIub3JpZ2luYWxFdmVudC5kYXRhKX1jYXRjaChtKXtyZXR1cm59ImFuLXN5bmMtc2V0dGluZ3MiPT09Zy50eXBlJiYoZz1KU09OLnBhcnNlKGcudmFsdWUpLGMuZWFjaChbImFuX2RhdGEiLCJhbl9zd2l0Y2hlcyIsImFuX29wdGlvbnMiXSxmdW5jdGlvbihiLGMpe2MgaW4gZyYmZC51dGlsLnN0b3JhZ2UoYyxnW2NdKX0pLGIub3JpZ2luYWxFdmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe3R5cGU6ImFuLXN5bmMtY29tcGxldGUifSksCiIqIikpfSksd2luZG93LnRvcC5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7dHlwZToiYW4tc3luYy1yZWFkeSJ9KSwiKiIpKX19fX07ZC5tb2RbIkxheW91dCBEZXNpZ25lciJdPXt2ZXI6Ik4vQSIsYXV0aG9yOiJcdTU0MTFcdTY1ZTUiLGZuOnsiNWUxNzM5MDUtOWM0Ny00ZjM3LThkM2YtNGMzMWVhODcxMTE1Ijp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU5ODAyXHU5MGU4XHU4NWNkXHU4MjcyXHU1MjE3IixwYWdlOns2NTUzNDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiYm9keSBceDNlICNhc3BuZXRGb3JtIFx4M2UgdGFibGUgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sIjdjYTU0YmE0LWUyYjctNDg5Yy05YWRjLTdhYzdkNjIwMTJmMCI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OTgwMlx1OTBlOFx1NTU2MVx1ODI3Mlx1NTIxNyIscGFnZTp7NjU1MzQ6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoImJvZHkgXHgzZSAjYXNwbmV0Rm9ybSBceDNlIHRhYmxlIFx4M2UgdGJvZHkgXHgzZSB0cjpmaXJzdC1jaGlsZCArIHRyIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sCiI3YWYxMDYwZC1kMzhjLTQwYjktYjE2Yi1kZjFiYjc5OWNiNzQiOntkZXNjOiJcdTk2YjFcdTg1Y2ZMb2dvXHU1MjE3IixwYWdlOns2NTUzNDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiYm9keSBceDNlICNhc3BuZXRGb3JtIFx4M2UgdGFibGUgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkICsgdHIgKyB0ciB7IGRpc3BsYXk6IG5vbmU7IH0iKX19LCJiYmQ1ZjE3Ni1jMDI0LTQ2ODQtYmE5OC1iNzJkYTM3NmE2ZWIiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTY3MDBcdTVlOTVcdTk4MDFcdTgxNzMiLHBhZ2U6ezY1NTM0OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJcdFx0XHQuUGFnZU1pZGRsZVBhbmVsICsgYnIsIFx0XHRcdC5Gb290ZXJQYW5lbCwgXHRcdFx0LkZvb3RlclBhbmVsICsgZGl2LCBcdFx0XHQuRm9vdGVyUGFuZWwgKyBkaXYgKyBkaXYgXHRcdFx0XHR7IGRpc3BsYXk6IG5vbmU7IH0iKX19LAoiMDI4MzdlNmEtM2RkNy00YzczLWExNTUtOTBkNmY2ZWRkOGY5Ijp7ZGVzYzoiXHU4YTJkXHU1YjlhXHU5ODAxXHU5NzYyXHU5NWNhXHU1ZWE2IixwYWdlOns2NTUzNDohMX0sdHlwZTozLG9wdGlvbnM6e25QYWdlV2lkdGg6e2Rlc2M6Ilx1OTgwMVx1OTc2Mlx1OTVjYVx1NWVhNiBbXHU1M2VmXHU4YTJkXHU1YjlhXHU3MGJhODAlLCAxMDAwcHhcdTdiNDldIixkZWZhdWx0VmFsdWU6IjEwMCUiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe3ZhciBiPWQudXRpbC5nZXRPcHRpb25zKCJuUGFnZVdpZHRoIik7ZC51dGlsLmFkZFN0eWxlKGMuc3ByaW50ZignXHRcdC5QYWdlV2lkdGhDb250YWluZXIgeyB3aWR0aDogJXM7IH0gXHRcdC5QYWdlTWlkZGxlQm94LCAucmVwbGllcnMsIHRhYmxlW3dpZHRoXlx4M2QiOTU0Il0sIHRhYmxlW3dpZHRoXlx4M2QiOTQ3Il0sIFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV92aWV3X2Zvcm0gXHgzZSBkaXZbc3R5bGUqXHgzZCI5NDVweCJdLCBcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdmlld19mb3JtIFx4M2UgZGl2W3N0eWxlKlx4M2QiOTQ1cHgiXSBceDNlIGRpdltzdHlsZSpceDNkIjk0NXB4Il0gXHRcdFx0eyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9IFx0XHQuUGFnZU1pZGRsZUJveCBcdFx0XHR7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgfSBcdFx0JywKImF1dG8iPT09Yj8iMTAwJSI6YikpfX0sIjFjYmVkNDRlLWYzZDUtNGQ1My1iMWU3LTJkNjBlMzU2ZjNmMiI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NTAwYlx1NGViYVx1OTAyM1x1N2Q1MCIscGFnZTp7NjA6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoJ1x0XHQuQ29udGVudFBhbmVsIHRhYmxlW3dpZHRoXHgzZCI5NTRweCJdIGIgKyBkaXYgXHRcdFx0XHR7IGRpc3BsYXk6IG5vbmU7IH0nKX19LCIxYzYzY2M0NS0yMWY3LTQwYWItOTA1YS03MzBkYWJmZmMyYWIiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTlhZDhcdTc2N2JcdTUxNmNcdTU0NGEiLHBhZ2U6ezYwOiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCdcdFx0LkNvbnRlbnRQYW5lbCB0YWJsZVt3aWR0aFx4M2QiOTU0cHgiXSBiICsgZGl2ICsgZGl2W3N0eWxlKlx4M2QiMjgwcHgiXSwgXHRcdCNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3RvcGljc19mb3JtIC5EaXZSZXNpemFibGVCb3hDb250YWluZXIsIFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV92aWV3X2Zvcm0gXHgzZSB0YWJsZVt3aWR0aFx4M2QiOTU0cHgiXSAuRGl2UmVzaXphYmxlQm94Q29udGFpbmVyIFx0XHRcdHsgZGlzcGxheTogbm9uZTsgfSBcdFx0Jyl9fSwKImNjOTU5ODVkLTM0ZGYtNDA5ZC1hNTc0LWU4ZGNhMTUzMWEzZCI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1N2NiZVx1OTA3OFx1NjU4N1x1N2FlMCIscGFnZTp7NDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgnXHRcdC5Db250ZW50UGFuZWwgdGFibGVbd2lkdGhceDNkIjk1NHB4Il0gYiArIGRpdiArIGRpdiArIGRpdiArIGRpdltzdHlsZSpceDNkIjI1NXB4Il0gXHRcdFx0eyBkaXNwbGF5OiBub25lOyB9IFx0XHQnKX19LCJiNDRlZTNhNi05NTBlLTRiMmEtYjk5YS0zOTliNjM4NGJjY2UiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTY0MWNcdTVjMGJcdTUyMTdcdTRlMGFcdTRlMGJcdTdhN2FcdTc2N2QiLHBhZ2U6ezI4OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJcdFx0XHQuVG9waWNfRnVuY3Rpb25QYW5lbCB7IG1hcmdpbi10b3A6IDA7IG92ZXJmbG93OiBoaWRkZW47IH0gXHRcdFx0LlRvcGljX0Z1bmN0aW9uUGFuZWwgXHgzZSBkaXY6bGFzdC1jaGlsZCB7IGRpc3BsYXk6IG5vbmU7IH0gXHRcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdG9waWNzX2Zvcm0gXHgzZSBkaXYgKyB0YWJsZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSBcdFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV90b3BpY3NfZm9ybSBceDNlIGRpdiArIHRhYmxlIHRhYmxlOmZpcnN0LWNoaWxkIGJyIHsgZGlzcGxheTogbm9uZTsgfSBcdFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV90b3BpY3NfZm9ybSBceDNlIGRpdiArIHRhYmxlIHAgeyBtYXJnaW46IDA7IH0gXHRcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdG9waWNzX2Zvcm0gI2ZvcnVtX2xpc3QgeyBwb3NpdGlvbjogYWJzb2x1dGU7IH0gXHRcdCIpfX0sCiIxYWRhNzRhYy05YmFlLTQ3YjItOTE0Yi1mMTU1NmRiYWIxYTIiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdThhMGVcdThhZDZcdTUzNDBcdTkwNzhcdTU1YWUiLHBhZ2U6ezI4OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpeyJ0b3BpY3MiPT12LnBhZ2VOYW1lKCk/ZC51dGlsLnN0YWNrU3R5bGUoIiNmb3J1bV9saXN0LCAjZm9ydW1fbGlzdCArIGJyIHsgZGlzcGxheTogbm9uZTsgfSIpOmQudXRpbC5zdGFja1N0eWxlKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV90b3BpY3NfZm9ybSBceDNlIGRpdiArIHRhYmxlIHRhYmxlOmZpcnN0LWNoaWxkIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sIjRiZjY2MTlmLTJjZDgtNGFhMi1hNTRhLWU3ZDcyNTVlODYwMyI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NzFiMVx1OTU4MFx1OTVkY1x1OTM3NVx1NWI1NyIscGFnZTp7MzA6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX2xiX0hpdFNlYXJjaHMgeyBkaXNwbGF5OiBub25lOyB9Iil9fSwKImE1ZDdmOGYwLTk5ZmMtNGFhZi04YzY1LTM3M2IxN2NmY2Y2OSI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NjI5NVx1Nzk2OFx1N2FkOVx1OTAyM1x1N2Q1MChcdTU5ODJcdTY3MDkpIixwYWdlOns2MDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdm90aW5nVGhyZWFkTXNnLCAjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9NaWRkbGVBZFNwYWNlMSB7IGRpc3BsYXk6IG5vbmU7IH0iKX19LCI3Y2EyNzFiYy1kMDM2LTQ5YTUtYjFjMS1lOTM5OTBlZDg0N2EiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTVjMGZcdTU3MDhcdTViNTBcdTkwNGVcdTZmZmVcdTYzZDBcdTc5M2EiLHBhZ2U6ezQ6ITF9LHR5cGU6MyxpbmZpbml0ZTpmdW5jdGlvbihiKXtiLmZpbmQoJ3RkW2NvbHNwYW5ceDNkIjYiXVtzdHlsZSpceDNkIjZFQTBDNCJdIFx4M2UgYicpLmNsb3Nlc3QoInRyIikuaGlkZSgpfX0sImY0MWUyODhlLWNkMWQtNDY0OS1hMzk2LTgzZDkyZDk5ZGVkOCI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1N2QwNVx1NGViYVx1Njk5YyIsCnBhZ2U6ezQ6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIlx0XHRcdCNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX0hvdFBlb3BsZXMsIFx0XHRcdCNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX0hvdFBlb3BsZXMgKyBiciBcdFx0XHRcdHsgZGlzcGxheTogbm9uZTsgfSIpfX0sImEyMjU3ODM3LWU1MjgtNGI0Yy1hNzk0LTg0ZmM0Y2NjYTIyNSI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OGEwZVx1OGFkNlx1NTM0MFx1NWI4OFx1NTI0NyIscGFnZTp7NDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdFx0LkNvbnRlbnRQYW5lbCBceDNlIC5EaXZCb3hDb250YWluZXIsIFx0XHRcdC5Db250ZW50UGFuZWwgXHgzZSAuRGl2Qm94Q29udGFpbmVyICsgc2NyaXB0ICsgYnIgXHRcdFx0XHR7IGRpc3BsYXk6IG5vbmU7IH0iKX19LCI1MTY0MjZiMy1kYTg2LTRlZDUtYjMwYS1jNTY3ODg2M2JiMDkiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdThhMGVcdThhZDZcdTUzNDBcdTU3MTZcdTc5M2FcdThhYWFcdTY2MGUiLApwYWdlOnsyODohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdG9waWNzX2Zvcm0gfiBiciwgXHRcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdG9waWNzX2Zvcm0gfiBiciArIHRhYmxlLCBcdFx0XHQuQ29udGVudFBhbmVsIFx4M2UgLkRpdkJveENvbnRhaW5lciArIHNjcmlwdCArIGJyICsgdGFibGUgXHRcdFx0XHR7IGRpc3BsYXk6IG5vbmU7IH0iKX19LCI3NGNkN2YzOC1iMGFkLTRmY2EtYWIzOS02NzNiMGUyZWU0YzciOntkZXNjOiJcdTRmZWVcdTZiNjNcdThkZjNcdTk4MDFcdTYzYTdcdTRlZjZcdTRmNGRcdTdmNmUiLHBhZ2U6ezMyOiEwfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZignZGl2W3N0eWxlXSBceDNlIGRpdltzdHlsZV5ceDNkIiVzOiBjZW50ZXIiXSB7IG1hcmdpbjogMCAxMDBweDsgfScsYy5icm93c2VyLm1zaWU/CiJURVhULUFMSUdOIjoidGV4dC1hbGlnbiIpKX19LCIwOTQxZTU1OS0zODc1LTQ0NWEtOWM1Ni03OTk5ODdmYmRmODciOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTU0MGRcdTdhMzFcdTZiMDRcdTcyNjlcdTRlZjYiLHBhZ2U6ezMyOiExfSx0eXBlOjMsb3B0aW9uczp7YkhpZGVBdmF0YXI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OWFkOFx1N2QxYVx1NjcwM1x1NTRlMVx1OTgyZFx1NTBjZiIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sYkhpZGVNZW1iZXJMZXZlbDp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU2NzAzXHU1NGUxXHU3ZDFhXHU1MjI1XHU1NzE2XHU3MjQ3IixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxiSGlkZUF3YXJkOntkZXNjOiJcdTk2YjFcdTg1Y2YoXHU1NTg0KVx1NTcxNlx1NTBjZiIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In19LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1bXTtjLmVhY2goe2JIaWRlQXZhdGFyOidkaXZbaWReXHgzZCJUaHJlYWRVc2VyIl0gXHgzZSBhJywKYkhpZGVNZW1iZXJMZXZlbDonZGl2W2lkXlx4M2QiVGhyZWFkVXNlciJdIFx4M2UgaW1nJyxiSGlkZUF3YXJkOidkaXZbaWReXHgzZCJUaHJlYWRVc2VyIl0gfiAqJ30sZnVuY3Rpb24oYyxsKXtkLnV0aWwuZ2V0T3B0aW9ucyhjKSYmYi5wdXNoKGwpfSk7ZC51dGlsLnN0YWNrU3R5bGUoYi5qb2luKCIsIikrIiB7IGRpc3BsYXk6IG5vbmU7IH0iKX19LCJhMDIwM2IwMS03NTY1LTQ2ZTEtYTUyZS0yNjBkZDRkNDg1YTEiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTVmMTVcdTc1MjgiLHBhZ2U6ezMyOiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCIucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSB7IGRpc3BsYXk6IG5vbmU7IH0iKX19LCJkMGFjNjU2Yy1lNjAyLTQ4NTItODQzYi1mNzc2ZDhhOTc2ZjQiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdThhNTVcdTUyMDZcdTY4M2MiLHBhZ2U6ezMyOiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCIjRGl2TWFya1RocmVhZCB7IGRpc3BsYXk6IG5vbmU7IH0iKX19LAoiOTZkZjA2NGMtZWZiNi00NGJlLTkyNTEtNGE3NzUxYTQ1NTA0Ijp7ZGVzYzoiXHU5NmIxXHU4NWNmRmFjZWJvb2tcdTYzMDlcdTYyNmQiLHBhZ2U6ezMyOiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCIuZmItbGlrZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSIpfX0sImVlYzJhMjlkLTQ0YjUtNDcwYi1iZmZkLTJkYTQxODQ0MjhmNCI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NzU1OVx1NTQwZFx1NjMwOVx1NjI2ZCIscGFnZTp7MzI6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoJ2RpdiBceDNlIGFbaWReXHgzZCJsYXVtaW5nSHJlZiJdIHsgZGlzcGxheTogbm9uZTsgfScpfX0sIjJjNzk5OGFkLTEwY2MtNGJjYS05ZjJjLTg1ZjE3NzEzNTZjMiI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NjI5NVx1OGEzNFx1NjU4N1x1N2FlMFx1NjMwOVx1NjI2ZCIscGFnZTp7MzI6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoJy5yZXBsaWVyc19yaWdodCBhW2hyZWZeXHgzZCJjb250YWN0dXMuYXNweD9tZXNzYWdlaWRceDNkIl0geyBkaXNwbGF5OiBub25lOyB9Jyl9fSwKIjI2ZWFmN2Y4LWQyNjAtNGI0Mi1iNmQ5LTA4YjIzNWY1NmQ0MyI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NWYxNVx1NzUyOFx1NTM5Zlx1NjU4N1x1NjMwOVx1NjI2ZCIscGFnZTp7MzI6ITF9LHR5cGU6MyxvcHRpb25zOntiQ0RST01Nb2RlOntkZXNjOiJcdTU0MGNcdTY2NDJcdTk2YjFcdTg1Y2ZcdTVmZWJcdTkwMWZcdTVmMTVcdTc1MjhcdTYzMDlcdTYyNmRcdTUzY2FcdTc2N2JcdTUxNjVcdTYzZDBcdTc5M2EgW0NELVJPTVx1NWMwOFx1NzUyOF0iLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9fSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9Jy5yZXBsaWVyc19yaWdodCBhW2hyZWZeXHgzZCJwb3N0LmFzcHg/bXRceDNkWVx4MjZyaWRceDNkIl0nO2QudXRpbC5nZXRPcHRpb25zKCJiQ0RST01Nb2RlIikmJihiKz0nLCAucmVwbGllcnNfcmlnaHQgYVtocmVmKlx4M2QiUXVvdGVSZXBseSgiXSwjY3QxMDBfQ29udGVudFBsYWNlSG9sZGVyMV9RdWlja1JlcGx5TG9naW5UYWJsZScpOwpkLnV0aWwuc3RhY2tTdHlsZShiKyJ7IGRpc3BsYXk6IG5vbmU7IH0iKX19LCIyYzAyNmY2Yi1mMjUyLTRhNTgtYjJhYy03MDZmY2QwNTJmYjYiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTVmZWJcdTkwMWZcdTU2ZGVcdTg5ODZcdTdkNDRcdTRlZjYiLHBhZ2U6ezMyOiExfSx0eXBlOjMsb3B0aW9uczp7YlJlbU5hbWVSb3c6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NTQwZFx1NWI1N1x1NTIxNyIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sYlJlbVRvcGljUm93OntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTRlM2JcdTY1ZThcdTUyMTciLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJSZW1DbGFzc2ljUm93OntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTdkOTNcdTUxNzhcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2FcdTUyMTciLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJSZW1UZW1wUm93OntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTk2NDRcdTUyYTBcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2FcdTUyMTcoXHU1OTgyXHU2NzA5KSIsCmRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJSZW1QcmV2aWV3Um93OntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTk4MTBcdTg5YmRcdTUyMTciLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9fSxvbmNlOmZ1bmN0aW9uKCl7aWYoZC51dGlsLmlzTG9nZ2VkSW4oKSl7dmFyIGI9YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfUXVpY2tSZXBseVRhYmxlIHRib2R5OmVxKDIpIikuY2hpbGRyZW4oKTtkLnV0aWwuZ2V0T3B0aW9ucygiYlJlbU5hbWVSb3ciKSYmYi5lcSgwKS5oaWRlKCk7ZC51dGlsLmdldE9wdGlvbnMoImJSZW1Ub3BpY1JvdyIpJiZiLmVxKDEpLmhpZGUoKTtkLnV0aWwuZ2V0T3B0aW9ucygiYlJlbUNsYXNzaWNSb3ciKSYmYi5lcSgzKS5oaWRlKCk7ZC51dGlsLmdldE9wdGlvbnMoImJSZW1UZW1wUm93IikmJjU8Yi5sZW5ndGgmJmIuZXEoMykubmV4dEFsbCgiOm5vdCg6bGFzdCkiKS5oaWRlKCk7ZC51dGlsLmdldE9wdGlvbnMoImJSZW1QcmV2aWV3Um93IikmJgpiLmxhc3QoKS5oaWRlKCl9fX0sImU0MjRmZThkLTg1MmItNDIzOS1iNzk3LTZhYTY4MmU2OGMzOSI6e2Rlc2M6Ilx1NGZlZVx1NmI2M1x1ODg2OFx1NjgzY1x1OTVjYVx1NWVhNiIscGFnZTp7MTAyNDohMH0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgndGFibGVbd2lkdGhceDNkIjgwMCJdIHsgd2lkdGg6IDEwMCU7IH0nKX19fX07ZC5tb2RbIk1haW4gU2NyaXB0Il09e3ZlcjoiTi9BIixhdXRob3I6Ilx1NTQxMVx1NjVlNSIsZm46eyI2M2QyNDA3YS1kOGRiLTQ0Y2ItODY2Ni02NGU1Yjc2Mzc4YTIiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTVlZTNcdTU0NGFcdTZiOThcdTc1NTlcdTcyNjkiLHBhZ2U6ezY1NTM1OiEwfSx0eXBlOjMsaW5maW5pdGU6ZnVuY3Rpb24oYil7di5wYWdlQ29kZSgpJjg4P2IuZmluZCgndGRbY29sc3Bhbl1baGVpZ2h0XHgzZCI1MiJdJykucGFyZW50KCkuaGlkZSgpOjMyPT09di5wYWdlQ29kZSgpJiYoYi5pcygiZGl2Iik/YjoKYi5maW5kKCcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV92aWV3X2Zvcm0gXHgzZSBkaXZbc3R5bGUqXHgzZCI5NDVweCJdJykpLmNoaWxkcmVuKCd0YWJsZVt3aWR0aFx4M2QiMTAwJSJdJykuaGFzKCdceDNlIHRib2R5IFx4M2UgdHIgXHgzZSB0ZDpub3QoW2FsaWduXHgzZCJsZWZ0Il0pJykuaGlkZSgpfX0sImI3ZWY4OWViLTExOTAtNDQ2Ni04OTlhLWMxOWIzNjIxZDZiMSI6e2Rlc2M6Ik9wZXJhOiBcdTRmZWVcdTZiNjNcdTcxMjFcdTZjZDVcdTRmN2ZcdTc1MjhFbnRlclx1NjQxY1x1NWMwYlx1NzY4NFx1OTMyZlx1OGFhNCIscGFnZTp7MzA6Yy5icm93c2VyLm9wZXJhfHwiZGlzYWJsZWQifSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe2MoIiNhc3BuZXRGb3JtIikuc3VibWl0KGZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKX0pfX0sImQ0YmY2N2NjLTM0OWMtNDU0MS1hOGU0LTlkOWY5ZDBiZTI2NyI6e2Rlc2M6Ik9wZXJhOiBcdTRmZWVcdTZiNjNcdTcyNzlcdTZiOGFcdTViNTdcdTdiMjZcdTVjMGVcdTgxZjRcdTc2ODRcdTk4NmZcdTc5M2FcdTkzMmZcdThhYTQiLApwYWdlOns5MjpjLmJyb3dzZXIub3BlcmF8fCJkaXNhYmxlZCJ9LHR5cGU6NCxpbmZpbml0ZTpmdW5jdGlvbihiKXtiLnRvcGljcygpLmpOYW1lTGlua3MuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcykucGFyZW50KCk7MiE9Yi5uZXh0QWxsKCkubGVuZ3RoJiYoYlswXS5vdXRlckhUTUw9YlswXS5vdXRlckhUTUwucmVwbGFjZSgvJmx0Oy9nLCJceDNjIikucmVwbGFjZSgvJmd0Oy9nLCJceDNlIikucmVwbGFjZSgvPEEuKz9cL2E+LywiTkFNRV9FUlJPUiIpLnJlcGxhY2UoLz0iIi9nLCIiKSl9KX19LCIwMjkzYzlkYS00NjhmLTRlZDUtYTJkNy1lY2IwMDY3ZTcxM2YiOntkZXNjOiJcdTUzYmJcdTk2NjRcdTVmMTVcdTc1MjhcdTUzNGFcdTkwMGZcdTY2MGUiLHBhZ2U6ezMyOiFjLmJyb3dzZXIubXNpZXx8ImRpc2FibGVkIn0sdHlwZTo0LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiYmxvY2txdW90ZSB7IG9wYWNpdHk6IDE7IH0iKX19LCJkNTYzYWYzMi1iZDM3LTRjNjctOGJkNy0wNzIxYzBhYjBiMzYiOntkZXNjOiJcdTUxMmFcdTUzMTZcdTk4MDFcdTY1NzhcdThkZjNcdThmNDlcdTkwMjNcdTdkNTBcdTU3MzBcdTU3NDAiLApwYWdlOnszMjohMH0sdHlwZTo0LG9uY2U6ZnVuY3Rpb24oKXt3aW5kb3cuY2hhbmdlUGFnZT1mdW5jdGlvbihiKXtDLmFzc2lnbihjLnNwcmludGYoIi92aWV3LmFzcHg/bWVzc2FnZVx4M2QlcyVzJXMiLHdpbmRvdy5tZXNzYWdlaWQsYj8iXHgyNnBhZ2VceDNkIitiOiIiLHdpbmRvdy5oaWdobGlnaHRfaWQ/Ilx4MjZoaWdobGlnaHRfaWRceDNkIit3aW5kb3cuaGlnaGxpZ2h0X2lkOiIiKSl9O3ZhciBiPS8mKD86cGFnZT0xKD8hXGQpfGhpZ2hsaWdodF9pZD0wKS9nO3YubW91c2VvdmVyKGZ1bmN0aW9uKGQpe2Q9YyhkLnRhcmdldCk7ZC5pcygiYSIpJiZiLnRlc3QoZC5hdHRyKCJocmVmIikpJiZkLmF0dHIoImhyZWYiLGQuYXR0cigiaHJlZiIpLnJlcGxhY2UoYiwiIikpfSl9fSwiYjZiMjMyYzgtMWYyNi00NDllLWJiMGQtMmI3ODI2YmY5NWVmIjp7ZGVzYzoiXHU4MWVhXHU4YTAyXHU1NzE2XHU3MjQ3XHU3ZTJlXHU1YzBmXHU1ZTQ1XHU1ZWE2IixwYWdlOnszMjohMCwxOTI6ITB9LAp0eXBlOjQsb3B0aW9uczp7bm9ybWFsSW1nTWF4SGVpZ2h0OntkZXNjOiJcdTU3MTZcdTcyNDdcdTY3MDBcdTU5MjdcdTlhZDhcdTVlYTYiLGRlZmF1bHRWYWx1ZToiMTAwJSIsdHlwZToidGV4dCJ9fSxvbmNlOmZ1bmN0aW9uKCl7d2luZG93LkRyYXdJbWFnZT1jLm5vb3A7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCJcdFx0LnJlcGxpZXJzX3JpZ2h0IGFbdGFyZ2V0XSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWF4LXdpZHRoOiAxMDAlIH0gXHRcdC5yZXBsaWVyc19yaWdodCBpbWdbb25sb2FkXSB7IHdpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IG1heC13aWR0aDogMTAwJTsgbWF4LWhlaWdodDogJXM7IH0gXHRcdC5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgYVt0YXJnZXRdOmZvY3VzIHsgb3V0bGluZTogMDsgfSBcdFx0IixkLnV0aWwuZ2V0T3B0aW9ucygibm9ybWFsSW1nTWF4SGVpZ2h0IikpKX19LCJkN2FkYWZhOC1jYzE0LTQ1ZjktYjNlOS1iYzM2ZWFiMDVkNGYiOntkZXNjOiJcdTdlMmVcdTVjMGZcdTVmMTVcdTc1MjhcdTRlMmRcdTc2ODRcdTU3MTZcdTcyNDciLApwYWdlOnszMjohMX0sdHlwZTo0LG9wdGlvbnM6e25RdW90ZUltZ01heEhlaWdodDp7ZGVzYzoiXHU1NzE2XHU3MjQ3XHU2NzAwXHU1OTI3XHU5YWQ4XHU1ZWE2KHB4KSIsZGVmYXVsdFZhbHVlOjEwMCx0eXBlOiJ0ZXh0In19LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoIi5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlIGltZ1tvbmxvYWRdIHsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgbWF4LWhlaWdodDogJXNweDsgfSIsZC51dGlsLmdldE9wdGlvbnMoIm5RdW90ZUltZ01heEhlaWdodCIpKSl9fSwiNTJlYmUzZDMtYmY5OC00NGQyLWExMDEtMTgwZWM2OWNlMjkwIjp7ZGVzYzoiXHU3OWZiXHU5NjY0XHU1ZTE2XHU1YjUwXHU5MDIzXHU3ZDUwXHU5YWQ4XHU0ZWFlXHU5MGU4XHU0ZWZkIixwYWdlOns2NDohMX0sdHlwZTo0LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj0vJmhpZ2hsaWdodF9pZD1cZCsvO3YubW91c2VvdmVyKGZ1bmN0aW9uKGQpe2Q9CmMoZC50YXJnZXQpO2QuaXMoImEiKSYmYi50ZXN0KGQuYXR0cigiaHJlZiIpKSYmZC5hdHRyKCJocmVmIixkLmF0dHIoImhyZWYiKS5yZXBsYWNlKGIsIiIpKX0pfX0sIjg3YTYzMDdlLWY1YzItNDA1Yy04NjE0LWFmNjBjODViMTAxZSI6e2Rlc2M6Ilx1NjQxY1x1NWMwYlx1OTU4Ylx1NjViMFx1OTgwMSIscGFnZTp7NDohMSwyNDohMX0sdHlwZTo0LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1GdW5jdGlvbigicmV0dXJuICIrd2luZG93LmdldFNlYXJjaC50b1N0cmluZygpLnJlcGxhY2UoIndpbmRvdy5sb2NhdGlvbiBceDNkIiwicmV0dXJuIikpKCk7d2luZG93LmdldFNlYXJjaD1mdW5jdGlvbigpe3dpbmRvdy5vcGVuKGIoKSl9O3ZhciBjPUZ1bmN0aW9uKCJyZXR1cm4gIit3aW5kb3cuU2VhcmNoLnRvU3RyaW5nKCkucmVwbGFjZSgid2luZG93LmxvY2F0aW9uLmhyZWYgXHgzZCIsInJldHVybiIpKSgpO3dpbmRvdy5TZWFyY2g9ZnVuY3Rpb24oKXt3aW5kb3cub3BlbihjKCkpfX19LAoiYTkzZjExNDktZDExYi00YjcyLTk4ZGQtYzQ2MWZkOWVlNzU0Ijp7ZGVzYzoiXHU5MDIzXHU3ZDUwXHU5NThiXHU2NWIwXHU5ODAxIixwYWdlOns0OiExLDI0OiExLDY0OiExfSx0eXBlOjQsb3B0aW9uczp7YlRvcGljTGlua3NPbmx5OntkZXNjOiJcdTUzZWFcdTk2NTBcdTVlMTZcdTViNTBcdTkwMjNcdTdkNTAiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9fSxvbmNlOmZ1bmN0aW9uKCl7di5jbGljayhmdW5jdGlvbihiKXt2YXIgZz1jKGIudGFyZ2V0KTtnLnBhcmVudCgiYSIpLmxlbmd0aCYmKGc9Zy5wYXJlbnQoKSk7Zy5pcygiYSIpJiYoZC51dGlsLmdldE9wdGlvbnMoImJUb3BpY0xpbmtzT25seSIpPy92aWV3XC5hc3B4L2k6L14oPyFqYXZhc2NyaXB0fCMpL2kpLnRlc3QoZy5hdHRyKCJocmVmIikpJiYoYi5wcmV2ZW50RGVmYXVsdCgpLHdpbmRvdy5vcGVuKGcuYXR0cigiaHJlZiIpKSl9KX19LCIyYWIyZjQwNC0wZDM1LTQ2NmYtOThhNS1jODhmZGJkYWEwMzEiOntkZXNjOiJcdTU5MTZcdTkzYzhcdTkwMjNcdTdkNTBcdTk1OGJcdTY1YjBcdTk4MDEiLApkZWZlcjozLHBhZ2U6ezMyOiEwfSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe3YuY2xpY2soZnVuY3Rpb24oYil7dmFyIGQ9YyhiLnRhcmdldCk7ZC5wYXJlbnQoImEiKS5sZW5ndGgmJihkPWQucGFyZW50KCkpOyFkLmlzKCIucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkIGEiKXx8L14oPzpqYXZhc2NyaXB0fCMpLy50ZXN0KGQuYXR0cigiaHJlZiIpKXx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KGIucHJldmVudERlZmF1bHQoKSx3aW5kb3cub3BlbihkLmF0dHIoImhyZWYiKSkpfSl9fSwiYjczZDI5NjgtODMwMS00YzVlLTg3MDAtYTg5NTQxZDI3NGZjIjp7ZGVzYzoiXHU1NmRlXHU1ZmE5XHU1MGIzXHU3ZDcxXHU3NTI4XHU2MjM2XHU5MDIzXHU3ZDUwIixkZWZlcjoxLHBhZ2U6ezMyOiExfSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe3YudW5iaW5kKCIudXNlcmxpbmtib3giKS5iaW5kKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGIpe2I9YyhiLnRhcmdldCk7CmIuaXMoJ2FbaHJlZl5ceDNkImphdmFzY3JpcHQ6IFRvZ2dsZVVzZXJEZXRhaWwiXScpJiZiLmF0dHIoImhyZWYiLGMuc3ByaW50ZigiUHJvZmlsZVBhZ2UuYXNweD91c2VyaWRceDNkJXMiLGIudXAoInRyIikuYXR0cigidXNlcmlkIikpKX0pfX0sIjdmOTc4MGE2LTM5NWQtNGIyNC1hMGE4LWRjNThjNDUzOTQwOCI6e2Rlc2M6Ilx1NGZlZVx1NmI2M1x1NWI1N1x1NTc4Ylx1NTkyN1x1NWMwZi9cdTk4NGZcdTgyNzJcdTYzZDJcdTUxNjVcdTYzYTdcdTRlZjYiLHBhZ2U6ezQxNjohMH0sdHlwZTo0LG9uY2U6ZnVuY3Rpb24oKXtjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdldGV4dCIpLnNpYmxpbmdzKCJzZWxlY3Rbb25jaGFuZ2VdIikuY2hhbmdlKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEluZGV4PTB9KX19LCI2ZTk3ODMxMC1lODdiLTQwNDMtOWRlZi0wNzZhMTMzNzdjMTkiOntkZXNjOiJcdTY2ZjRcdTYzZGJmYXZpY29uKFx1NWMwZlx1NGUxMWljb24pIFtcdTkwZThcdTRlZmRcdTcwMGZcdTg5YmRcdTU2NjhcdTcxMjFcdTY1NDhdIiwKcGFnZTp7NjU1MzQ6ITF9LHR5cGU6NCxvbmNlOmZ1bmN0aW9uKCl7YygiaGVhZCIpLmFwcGVuZCgnXHgzY2xpbmsgcmVsXHgzZCJzaG9ydGN1dCBpY29uIiBocmVmXHgzZCJodHRwOi8vaGVsaWFudGh1cy1hbm51dXMuZ29vZ2xlY29kZS5jb20vc3ZuL290aGVyL2hrZy5pY28iIC9ceDNlJyl9fSwiZTU0ZDVjNWYtNDdhZS00ODM5LWI0ZTgtNmZjMzczM2VkZmVmIjp7ZGVzYzoiXHU2NTM5XHU5MDMyXHU1MTZjXHU1M2Y4XHU2YTIxXHU1ZjBmIixwYWdlOns2NTUzNDohMH0sdHlwZTo0LG9wdGlvbnM6e3NDTW9kZUZhdmljb246e2Rlc2M6ImZhdmljb25cdTkwMjNcdTdkNTBcdTRmNGRcdTdmNmUiLGRlZmF1bHRWYWx1ZToiaHR0cDovL3d3dy5nb29nbGUuY29tL2Zhdmljb24uaWNvIix0eXBlOiJ0ZXh0In0sc0NNb2RlVGl0bGU6e2Rlc2M6Ilx1NmExOVx1OTg0Y1x1NTQwZFx1N2EzMSIsZGVmYXVsdFZhbHVlOiJHb29nbGUiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpeyJZIj09CmQudXRpbC5jb29raWUoImNvbXBhbnltb2RlIikmJihjKCJoZWFkIikuYXBwZW5kKGMuc3ByaW50ZignXHgzY2xpbmsgcmVsXHgzZCJzaG9ydGN1dCBpY29uIiBocmVmXHgzZCIlcyIgL1x4M2UnLGQudXRpbC5nZXRPcHRpb25zKCJzQ01vZGVGYXZpY29uIikpKSxkb2N1bWVudC50aXRsZT1kLnV0aWwuZ2V0T3B0aW9ucygic0NNb2RlVGl0bGUiKSl9fSwiZmVjYjYzNDUtMjMyZi00NzgxLWI4MzktNDkxOWY4NDU5NTlhIjp7ZGVzYzoiXHU1ZjM3XHU1MjM2XHU4YTJkXHU1YjlhXHU4YWQ2XHU1OGM3XHU5MDc4XHU5ODA1IixwYWdlOns2NTUzNDoiZGlzYWJsZWQifSx0eXBlOjQsb3B0aW9uczp7Y29tcGFueW1vZGU6e2Rlc2M6Ilx1NTE2Y1x1NTNmOFx1NmEyMVx1NWYwZiIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sZmlsdGVybW9kZTp7ZGVzYzoiXHU5MDRlXHU2ZmZlXHU2YTIxXHU1ZjBmIixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxzZW5zb3Jtb2RlOntkZXNjOiJcdTYxZjdcdTgyMGFcdTZhMjFcdTVmMGYiLApkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxmb250c2l6ZTp7ZGVzYzoiXHU1YjU3XHU1NzhiXHU1OTI3XHU1YzBmIix0eXBlOiJzZWxlY3QiLGNob2ljZXM6WyJcdTU5MjdcdTViNTdcdTU3OGIiLCJcdTVjMGZcdTViNTdcdTU3OGIiXSxkZWZhdWx0VmFsdWU6Ilx1NTkyN1x1NWI1N1x1NTc4YiJ9fSxvbmNlOmZ1bmN0aW9uKCl7Yy5lYWNoKFsiY29tcGFueW1vZGUiLCJzZW5zb3Jtb2RlIiwiZmlsdGVybW9kZSIsImZvbnRzaXplIl0sZnVuY3Rpb24oYixjKXt2YXIgbD1kLnV0aWwuZ2V0T3B0aW9ucyhjKTtkLnV0aWwuY29va2llKGMsbnVsbCwiaGtnb2xkZW4uY29tIik7ZC51dGlsLmNvb2tpZShjLG51bGwsQy5ob3N0bmFtZSk7ZC51dGlsLmNvb2tpZShjLCJmb250c2l6ZSI9PT1jPyJcdTU5MjdcdTViNTdcdTU3OGIiPT09bD8iTCI6IlMiOmw/IlkiOiJOIil9KX19LCIyMzE4MjVhZC1hYWRhLTRmNWYtOGFkYy01YzI3NjJjMWIwZTUiOntkZXNjOiJcdTk4NmZcdTc5M2FcdThjYzdcdTY1OTk6IFx1NmExM1x1NGUzYlx1NTQwZFx1N2EzMSIsCnBhZ2U6ezMyOiExfSx0eXBlOjUsb25jZTpmdW5jdGlvbihiKXtkLnV0aWwuZ2V0T3BlbmVySW5mbyhiLGZ1bmN0aW9uKGIpe2Quc2hhcmVkKCJhZGRJbmZvIixjLnNwcmludGYoJ1x1NmExM1x1NGUzYjogXHgzY2EgdGFyZ2V0XHgzZCJfYmxhbmsiIGhyZWZceDNkIi9Qcm9maWxlUGFnZS5hc3B4P3VzZXJpZFx4M2QlcyJceDNlJXNceDNjL2FceDNlJyxiLnNJZCxiLnNOYW1lKSl9KX19LCI5ZTE4MWU3OS0xNTNiLTQ0ZDUtYTQ4Mi01Y2NjNjQ5NmExNzIiOntkZXNjOiJcdTk4NmZcdTc5M2FcdThjYzdcdTY1OTk6IFx1N2QyZlx1OGEwOFx1NTcyOFx1N2RkYVx1NjY0Mlx1OTU5MyIscGFnZTp7NjU1MzQ6ITF9LHR5cGU6NSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9ZC51dGlsLmRhdGEoIm5MYXN0T25UaW1lIiksZz1kLnV0aWwuZGF0YSgibkN1bXVsYXRlZFRpbWUiKXx8MDtiJiYoYj1jLnRpbWUoKS1iLGcrPTEyRTQ8PWI/MTJFNDpiKTtiPTg2NEU1PGc/KGcvODY0RTUpLnRvRml4ZWQoMikrCiIgZGF5cyI6MzZFNTxnPyhnLzM2RTUpLnRvRml4ZWQoMikrIiBob3VycyI6KGcvNkU0KS50b0ZpeGVkKDIpKyIgbWludXRlcyI7ZC5zaGFyZWQoImFkZEluZm8iLGMuc3ByaW50ZigiXHU1NzI4XHU3ZGRhXHU2NjQyXHU5NTkzOiAlcyIsYikpO2QudXRpbC5kYXRhKCJuTGFzdE9uVGltZSIsYy50aW1lKCkpO2QudXRpbC5kYXRhKCJuQ3VtdWxhdGVkVGltZSIsZyl9fSwiZjQ3ZTc3YzgtNmYxYS00M2IyLTg0OTMtZjQzZGUyMjJiM2I0Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU0ZjNhXHU2NzBkXHU1NjY4XHU3MmMwXHU2MTRiXHU5ODZmXHU3OTNhXHU2MzA5XHU2MjZkIixwYWdlOns2NTUzNDohMH0sdHlwZTo1LG9uY2U6ZnVuY3Rpb24oKXtkLnNoYXJlZCgiYWRkQnV0dG9uIiwiXHU0ZjNhXHU2NzBkXHU1NjY4XHU3MmMwXHU2MTRiIixkLnNoYXJlZC5zZXJ2ZXJUYWJsZSl9fSwiN2RlMjhjYTktOWM0NC00OTQ5LWFkNGEtMzFmMzhhOTg0NzE1Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU0ZTAwXHU5Mzc1XHU3NTU5XHU1NDBkXHU2MzA5XHU2MjZkIiwKcGFnZTp7MzI6ITF9LHR5cGU6NSxvcHRpb25zOntzTGVhdmVOYW1lTXNnOntkZXNjOiJcdTU2ZGVcdTg5ODZcdTUxNjdcdTViYjkiLGRlZmF1bHRWYWx1ZToiXHU3NTU5XHU1NDBkIix0eXBlOiJ0ZXh0In19LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuaXNMb2dnZWRJbigpJiZkLnNoYXJlZCgiYWRkQnV0dG9uIiwiXHU0ZTAwXHU5Mzc1XHU3NTU5XHU1NDBkIixmdW5jdGlvbigpe2MoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX21lc3NhZ2V0ZXh0IikudmFsKGQudXRpbC5nZXRPcHRpb25zKCJzTGVhdmVOYW1lTXNnIikpO2MoIiNhc3BuZXRGb3JtIikuc3VibWl0KCl9KX19LCJlYzUyMGI0ZS04YTRiLTQ0MTQtYWNjZS1lZDgyNGJmODA2Y2UiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTUwMGJcdTRlYmFcdTkwMjNcdTdkNTBcdTYzMDlcdTYyNmQiLHBhZ2U6ezYwOiExfSx0eXBlOjUsb25jZTpmdW5jdGlvbigpe2MoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX2xiX1VzZXJOYW1lIFx4M2UgYSIpLmVhY2goZnVuY3Rpb24oYiwKZyl7Zz1jKGcpO2Quc2hhcmVkKCJhZGRCdXR0b24iLH5nLmF0dHIoImhyZWYiKS5pbmRleE9mKCJsb2dpbiIpPyJcdTc2N2JcdTUxNjUiOmcudGV4dCgpLGcuYXR0cigiaHJlZiIpKX0pfX0sImFhZDFmM2FjLWU3MGMtNDg3OC1hMWVmLTY3ODUzOWNhN2VlNCI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NTI0ZFx1NWY4MFx1NTQzOVx1NmMzNFx1NTNmMFx1NzY4NFx1NWZlYlx1OTAxZlx1OTAyM1x1N2Q1MCIscGFnZTp7NjU1MzQ6ITB9LHR5cGU6NSxvbmNlOmZ1bmN0aW9uKCl7ZC5zaGFyZWQoImFkZExpbmsiLCJcdTU0MzlcdTZjMzRcdTUzZjAiLCIvdG9waWNzLmFzcHg/dHlwZVx4M2RCVyIsMSl9fSwiZDBkNzYyMDQtNDAzMy00YmQ2LWE5YTgtM2FmYmI4MDc0OTVmIjp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU1MjRkXHU1ZjgwXHU2NzAwXHU5ODAyL1x1NWU5NVx1NzY4NFx1NjMwOVx1NjI2ZCIscGFnZTp7MzI6ITB9LHR5cGU6NSxvbmNlOmZ1bmN0aW9uKCl7ZC5zaGFyZWQoImFkZExpbmsiLAoiXHU2NzAwXHU5ODAyIixmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkuc2Nyb2xsSW50b1ZpZXcoKX0sMCk7ZC5zaGFyZWQoImFkZExpbmsiLCJcdTY3MDBcdTVlOTUiLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5zY3JvbGxJbnRvVmlldyghMSl9LDIpfX0sImI3ODgxMGEyLTkwMjItNDNmYi05YTliLWY3NzYxMDBkYzFkZiI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NmExM1x1NWM2NFx1N2RlOFx1ODY1ZiIscGFnZTp7MzI6ITB9LHR5cGU6NSxpbmZpbml0ZTpmdW5jdGlvbihiKXt2YXIgZD1iLnBhZ2VObygpLGw9KDE9PWQ/MDoyNSooZC0xKSsxKStiLnBhZ2VTY29wZSgpLmZpbmQoIi5hbi1jb250ZW50LWZsb29yIikubGVuZ3RoO2IucmVwbGllcygpLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLmZpbmQoInNwYW46bGFzdCIpLmFwcGVuZChjLnNwcmludGYoJyBceDNjc3BhbiBjbGFzc1x4M2QiYW4tY29udGVudC1mbG9vciBhbi1jb250ZW50LWJveCJceDNlIyVzXHgzYy9zcGFuXHgzZScsCmwrKykpfSl9fSwiM2Y2OTNhOWUtZTc5ZC00ZDE0LWI2MzktYTU3YmVlMzYwNzlhIjp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU5ODZmXHU3OTNhXHU0ZjNhXHU2NzBkXHU1NjY4XHU3MmMwXHU2MTRiXHU2YWEyXHU2N2U1XHU4OTk2XHU3YTk3IixwYWdlOnsxOiEwfSx0eXBlOjYsZGVmZXI6NSxvbmNlOmZ1bmN0aW9uKCl7ZC5zaGFyZWQoInNlcnZlclRhYmxlIil9fSwiNGNkY2UxNDMtNzRhNS00YmRiLWFiY2EtMDM1MTYzODgxNmZiIjp7ZGVzYzoiXHU1ZTE2XHU1YjUwXHU0ZTNiXHU2NWU4XHU2MjE2XHU1MTY3XHU2NTg3XHU1MWZhXHU3M2ZlXHU5MzJmXHU4YWE0XHU2NjQyXHU5MDMyXHU4ODRjXHU2M2QwXHU3OTNhIixwYWdlOnsyODg6ITB9LHR5cGU6NixvbmNlOmZ1bmN0aW9uKGIpe2MoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX21lc3NhZ2VzdWJqZWN0IikuY3NzKCJ3aWR0aCIsIjk1JSIpLmF0dHIoIm1heGxlbmd0aCIsIjUwIik7dmFyIGQ9e307YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXN1YmplY3QsICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX21lc3NhZ2V0ZXh0Iikub24oImtleXVwIGNoYW5nZSIsCmZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxoPSJjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX21lc3NhZ2VzdWJqZWN0Ij09PXRoaXMuaWQ/NTA6MkUzLG09Yyh0aGlzKS52YWwoKSxxPTA7aWYoImN0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXN1YmplY3QiPT09dGhpcy5pZCl7aWYobS5sZW5ndGghPT13aW5kb3cuY29udmVydF90ZXh0KG0pLmxlbmd0aCl7Yi5jc3MoImJhY2tncm91bmQtY29sb3IiLCIjMUJCNUUwIik7ZFt0aGlzLmlkXT0xO3JldHVybn19ZWxzZSBtPXdpbmRvdy5jb252ZXJ0X3RleHQobSk7Zm9yKHZhciBuPTA7bjxtLmxlbmd0aDtuKyspaWYocSs9MjU1PG0uY2hhckNvZGVBdChuKT8yOjEscT5oKXtiLmNzcygiYmFja2dyb3VuZC1jb2xvciIsInBpbmsiKTtkW3RoaXMuaWRdPTI7cmV0dXJufWIuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiIik7ZFt0aGlzLmlkXT0wfSk7YygiI2FzcG5ldEZvcm0iKS5zdWJtaXQoZnVuY3Rpb24oKXtmb3IodmFyIGIgaW4gZClpZihkW2JdKXJldHVybiBhbGVydCgxPT09CmRbYl0/Ilx1NGUzYlx1NjVlOFx1NWI1OFx1NTcyOFx1OTk5OVx1NmUyZlx1NWI1NyEiOiJcdTRlM2JcdTY1ZThcdTYyMTZcdTUxNjdcdTY1ODdcdTkwNGVcdTk1NzchIiksITF9KX19LCI4NmQyNGZjOC00NzZhLTRkZTMtOTVlMS01ZTBlYjAyYjMzNTMiOntkZXNjOiJcdThmNDlcdTYzZGJcdTg4NjhcdTYwYzVcdTc4YmNcdTcwYmFcdTU3MTZcdTcyNDciLHBhZ2U6ezkyOiEwfSx0eXBlOjYsaW5maW5pdGU6ZnVuY3Rpb24oYil7aWYoYj1iLnRvcGljcygpKXt2YXIgZD0vWyNbXShoZWhlfGxvdmV8YXNzfHNvc2FkfGdvb2R8aG9ob3xraWxsfGJ5ZXxhZG9yZXxiYW5naGVhZHxib3VuY2VyfGJvdW5jeXxjZW5zb3JlZHxmbG93ZXJmYWNlfHNob2NraW5nfHBob3RvfGZpcmV8eWlwZXN8MzY5fGJvbWJ8c2xpY2t8bm98a2lsbDJ8b2ZmdG9waWMpW1xdI10vZyxsPVt7cmVnZXg6L086LVwpL2cscmVzdWx0OiJhbmdlbCJ9LHtyZWdleDoveHhcKC9nLHJlc3VsdDoiZGVhZCJ9LHtyZWdleDovOlwpL2csCnJlc3VsdDoic21pbGUifSx7cmVnZXg6LzpvXCkvZyxyZXN1bHQ6ImNsb3duIn0se3JlZ2V4Oi86LVwoL2cscmVzdWx0OiJmcm93biJ9LHtyZWdleDovOn5cKC9nLHJlc3VsdDoiY3J5In0se3JlZ2V4Oi87LVwpL2cscmVzdWx0OiJ3aW5rIn0se3JlZ2V4Oi86LVxbL2cscmVzdWx0OiJhbmdyeSJ9LHtyZWdleDovOi1dL2cscmVzdWx0OiJkZXZpbCJ9LHtyZWdleDovOkQvZyxyZXN1bHQ6ImJpZ2dyaW4ifSx7cmVnZXg6LzpPL2cscmVzdWx0OiJvaCJ9LHtyZWdleDovOlAvZyxyZXN1bHQ6InRvbmd1ZSJ9LHtyZWdleDovXjNeL2cscmVzdWx0OiJraXNzIn0se3JlZ2V4Oi9cP19cPy9nLHJlc3VsdDoid29uZGVyIn0se3JlZ2V4Oi8jeXVwIy9nLHJlc3VsdDoiYWdyZWUifSx7cmVnZXg6LyNuZyMvZyxyZXN1bHQ6ImRvbm5vIn0se3JlZ2V4Oi8jb2gjL2cscmVzdWx0OiJzdXJwcmlzZSJ9LHtyZWdleDovI2NuIy9nLHJlc3VsdDoiY2hpY2tlbiJ9LHtyZWdleDovWl9aL2cscmVzdWx0OiJ6In0sCntyZWdleDovQF9AL2cscmVzdWx0OiJAIn0se3JlZ2V4Oi9cP1w/XD8vZyxyZXN1bHQ6IndvbmRlcjIifSx7cmVnZXg6L2Z1Y2svZyxyZXN1bHQ6ImZ1Y2sifV07Yi5qVGl0bGVDZWxscy5maW5kKCJhOmZpcnN0LWNoaWxkIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcyksbT1zVGV4dD1iLnRleHQoKTtzVGV4dD1zVGV4dC5yZXBsYWNlKGQsJ1x4M2NpbWcgc3R5bGVceDNkImJvcmRlci13aWR0aDowcHgiIHNyY1x4M2QiL2ZhY2VzLyQxLmdpZiIgYWx0XHgzZCIkXHgyNiIgL1x4M2UnKTtjLmVhY2gobCxmdW5jdGlvbigpe3NUZXh0PXNUZXh0LnJlcGxhY2UodGhpcy5yZWdleCwnXHgzY2ltZyBzdHlsZVx4M2QiYm9yZGVyLXdpZHRoOjBweCIgc3JjXHgzZCIvZmFjZXMvJyt0aGlzLnJlc3VsdCsnLmdpZiIgYWx0XHgzZCIkXHgyNiIgL1x4M2UnKX0pO3NUZXh0IT1tJiZiLmh0bWwoc1RleHQpfSl9fX0sImI2OWM1MDY3LTI3MjYtNDNmOC1iM2RlLWRmYjkwNzM1NWI3MSI6e2Rlc2M6Ilx1NmExOVx1OTg0Y1x1OTA0ZVx1NmZmZVx1NTI5Zlx1ODBmZCIsCnBhZ2U6ezQ6ITB9LHR5cGU6NixvcHRpb25zOntiRmlsdGVyTGlzdEJ1dHRvbjp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU2YTE5XHU5ODRjXHU5MDRlXHU2ZmZlXHU1MjE3XHU4ODY4XHU2MzA5XHU2MjZkIixkZWZhdWx0VmFsdWU6ITAsdHlwZToiY2hlY2tib3gifSxiQWRkRmlsdGVyQnV0dG9uOntkZXNjOiJcdTUyYTBcdTUxNjVcdTY1YjBcdTU4OWVcdTkwNGVcdTZmZmVcdTU2NjhcdTYzMDlcdTYyNmQiLGRlZmF1bGVWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGZpbHRlckJsb2NrZWRVc2Vyczp7ZGVzYzoiXHU1NDBjXHU2NjQyXHU5MDRlXHU2ZmZlXHU4OGFiXHU1YzAxXHU5Mzk2XHU3NTI4XHU2MjM2XHU3Njg0XHU2YTE5XHU5ODRjIixkZWZhdWx0VmFsdWU6ITAsdHlwZToiY2hlY2tib3gifSxsb2dGaWx0ZXJlZFRvcGljczp7ZGVzYzoiXHU4YTE4XHU5MzA0XHU4OGFiXHU5MDRlXHU2ZmZlXHU3Njg0XHU2YTE5XHU5ODRjIixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifX0sCm9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1mdW5jdGlvbigpe3JldHVybiBkLnV0aWwuZGF0YSgiYVRvcGljRmlsdGVyIil8fFtdfSxnLGw9YygiXHgzY2ltZyAvXHgzZSIse3NyYzpLWyJjcm9zcy1zaGllbGQiXSxjc3M6eyJtYXJnaW4tbGVmdCI6Ii0xLjVweCJ9fSkuaG92ZXJpemUoIiNIb3RUb3BpY3MgdHI6aGFzKHRkIFx4M2UgYSkiLHthdXRvUG9zaXRpb246ITF9KS5iaW5kKHtlbnRlcnRhcmdldDpmdW5jdGlvbigpe2c9bC5kYXRhKCJob3Zlcml6ZSIpLmpUYXJnZXQuZmluZCgiaW1nOmZpcnN0IikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7bC5jc3MoZy5vZmZzZXQoKSl9LGxlYXZldGFyZ2V0OmZ1bmN0aW9uKCl7Zy5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIil9LGNsaWNrOmZ1bmN0aW9uKCl7cShsLmRhdGEoImhvdmVyaXplIikualRhcmdldC5maW5kKCJhOmZpcnN0IikuaHRtbCgpLnRyaW0oKS5yZXBsYWNlKC88aW1nW14+XSs/YWx0PSIoW14iXSspW14+XSo+L2lnLAoiJDEiKSl9fSksaD1kLnV0aWwuZ2V0T3B0aW9ucygibG9nRmlsdGVyZWRUb3BpY3MiKSxtPWQudXRpbC5nZXRPcHRpb25zKCJmaWx0ZXJCbG9ja2VkVXNlcnMiKSxxPWZ1bmN0aW9uKGMpe2lmKGM9cHJvbXB0KCJcdThhY2JcdThmMzhcdTUxNjVcdTkwNGVcdTZmZmVcdTU2NjgiLGN8fCIiKSl7dmFyIGc9YigpO2cucHVzaChjLnRyaW0oKSk7ZC51dGlsLmRhdGEoImFUb3BpY0ZpbHRlciIsZyk7bigpfX0sbj10aGlzLmZpbHRlclRvcGljcz1mdW5jdGlvbihnKXt2YXIgbD1iKCksbj1kLnV0aWwuZGF0YSgiYUJhbUxpc3QiKXx8W107aWYobC5sZW5ndGh8fG4ubGVuZ3RoKXt2YXIgcT0wOyhnfHxjKGRvY3VtZW50KSkudG9waWNzKCkubm90KCI6aGlkZGVuIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPSExLGc9Yyh0aGlzKSxwPWcuZmluZCgnYVtocmVmXlx4M2Qidmlldy4iXTpmaXJzdCcpLmF0dHIoImhyZWYiKSx2PWcuZGF0YSgic1RpdGxlIikudG9Mb3dlckNhc2UoKTtjLmVhY2gobCwKZnVuY3Rpb24obCxtKXtpZigtMSE9di5pbmRleE9mKG0udG9Mb3dlckNhc2UoKSkpcmV0dXJuIHErKyxnLmhpZGUoKSxoJiZkLnNoYXJlZCgibG9nIixjLnNwcmludGYoJ1x4M2NhIGhyZWZceDNkIiVzIiB0aXRsZVx4M2QiJXMiXHgzZVx1NmExOVx1OTg0Y1x1NWRmMlx1ODhhYlx1OTA0ZVx1NmZmZShrZXl3b3JkKTogJXNceDNjL2FceDNlJyxwLHYsbSkpLGI9ITAsITF9KTtpZighYiYmbSl7dmFyIHU9Zy5kYXRhKCJqTmFtZUxpbmsiKS5hdHRyKCJocmVmIikucmVwbGFjZSgvLis/dXNlcmlkPShcZCspLiovLCIkMSIpO2MuZWFjaChuLGZ1bmN0aW9uKGIsbCl7aWYodT09PWwpcmV0dXJuIHErKyxnLmhpZGUoKSxoJiZkLnNoYXJlZCgibG9nIixjLnNwcmludGYoJ1x4M2NhIGhyZWZceDNkIiVzIiB0aXRsZVx4M2QiJXMiXHgzZVx1NmExOVx1OTg0Y1x1NWRmMlx1ODhhYlx1OTA0ZVx1NmZmZSh1c2VyKTogJXNceDNjL2FceDNlJyxwLHYsZy5kYXRhKCJzVXNlck5hbWUiKSkpLCExfSl9fSk7CnEmJmQuc2hhcmVkKCJsb2ciLGMuc3ByaW50ZigiJXNcdTUwMGJcdTZhMTlcdTk4NGNcdTVkZjJcdTg4YWJcdTkwNGVcdTZmZmUiLHEpKX19O2QudXRpbC5nZXRPcHRpb25zKCJiQWRkRmlsdGVyQnV0dG9uIikmJmQuc2hhcmVkKCJhZGRCdXR0b24iLCJcdTY1YjBcdTU4OWVcdTkwNGVcdTZmZmVcdTU2NjgiLHEpO2QudXRpbC5nZXRPcHRpb25zKCJiRmlsdGVyTGlzdEJ1dHRvbiIpJiZkLnNoYXJlZCgiYWRkQnV0dG9uIiwiXHU2YTE5XHU5ODRjXHU5MDRlXHU2ZmZlXHU1MjE3XHU4ODY4IixmdW5jdGlvbigpe2MoIiNhbi1maWx0ZXJsaXN0IikubGVuZ3RofHwoZC51dGlsLmFkZFN0eWxlKGMuc3ByaW50ZigiXHRcdFx0XHQjYW4tZmlsdGVybGlzdCBceDNlIHVsIHsgbWFyZ2luOiA1cHg7IH0gXHRcdFx0XHQjYW4tZmlsdGVybGlzdCBceDNlIHVsIFx4M2UgbGkgeyBwYWRkaW5nOiAycHggMDsgfSBcdFx0XHRcdCNhbi1maWx0ZXJsaXN0IFx4M2UgdWwgXHgzZSBsaSBceDNlIHNwYW46Zmlyc3QtY2hpbGQgeyBtYXJnaW4tcmlnaHQ6IDVweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDAgNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluSGVhZGVyQmdDb2xvcilzOyBjb2xvcjogJShzTWFpbkhlYWRlckZvbnRDb2xvcilzOyBjdXJzb3I6IHBvaW50ZXI7IH0gXHRcdFx0XHQiLApkLnV0aWwuZ2V0T3B0aW9ucygpKSksZC5zaGFyZWQuYm94KCJhbi1maWx0ZXJsaXN0IiwiXHU2YTE5XHU5ODRjXHU5MDRlXHU2ZmZlXHU1MjE3XHU4ODY4Iiw1MDApLGMoIiNhbi1maWx0ZXJsaXN0IikuY2xpY2soZnVuY3Rpb24oZyl7Zz1jKGcudGFyZ2V0KTtpZihnLmlzKCJzcGFuOmZpcnN0LWNoaWxkIikpe3ZhciBoPWcuY2xvc2VzdCgibGkiKS5pbmRleCgpLGw9YigpOy0xIT1oJiZsLnNwbGljZShoLDEpO2QudXRpbC5kYXRhKCJhVG9waWNGaWx0ZXIiLGwpO2cucGFyZW50KCkucmVtb3ZlKCk7MD09PWwubGVuZ3RoJiZjKHRoaXMpLmNoaWxkcmVuKCkuYXBwZW5kKCJceDNjbGlceDNlXHU2YzkyXHU2NzA5XHU0ZWZiXHU0ZjU1XHU5MDRlXHU2ZmZlXHU1NjY4XHgzYy9saVx4M2UiKX19KSk7dmFyIGc9IiIsaD1iKCk7aC5sZW5ndGg/Yy5lYWNoKGgsZnVuY3Rpb24oYixkKXtnKz1jLnNwcmludGYoIlx4M2NsaVx4M2VceDNjc3Bhblx4M2VYXHgzYy9zcGFuXHgzZVx4M2NzcGFuXHgzZSVzXHgzYy9zcGFuXHgzZVx4M2MvbGlceDNlIiwKZCl9KTpnKz0iXHgzY2xpXHgzZVx1NmM5Mlx1NjcwOVx1NGVmYlx1NGY1NVx1OTA0ZVx1NmZmZVx1NTY2OFx4M2MvbGlceDNlIjtjKCIjYW4tZmlsdGVybGlzdCIpLmh0bWwoIlx4M2N1bFx4M2UiK2crIlx4M2MvdWxceDNlIikuY3NzKCJtYXgtaGVpZ2h0IixjLndpbkhlaWdodCgwLjkpKTtkLnNoYXJlZC5ncmF5KCEwLCJhbi1maWx0ZXJsaXN0Iil9KX0saW5maW5pdGU6ZnVuY3Rpb24oYil7dGhpcy5maWx0ZXJUb3BpY3MoYil9fSwiZGI3NzBmZGMtOWJmNS00NmI5LWIzZmEtNzg4MDdmMjQyYzNjIjp7ZGVzYzoiXHU3NTI4XHU2MjM2XHU1YzAxXHU5Mzk2XHU1MjlmXHU4MGZkIixwYWdlOnszMjohMH0sdHlwZTo2LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdC5hbi1iYW1tZWQtbXNnIHsgY29sb3I6ICM5OTk7IGZvbnQtc2l6ZTogMTBweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9IFx0XHQuYW4tYmFtbWVkLW1zZyBceDNlIHNwYW4geyBjdXJzb3I6IHBvaW50ZXI7IH0gXHRcdC5hbi1iYW1tZWQgXHgzZSB0ZCB7IG9wYWNpdHk6IDAuNTsgfSBcdFx0LmFuLWJhbW1lZCBceDNlIC5yZXBsaWVyc19sZWZ0IFx4M2UgZGl2IFx4M2UgYVtocmVmXSB+ICosIC5hbi1iYW1tZWQgXHgzZSB0ZCBceDNlIC5yZXBsaWVyc19yaWdodCB7IGRpc3BsYXk6IG5vbmU7IH0gXHRcdCIpOwp2YXIgYj1mdW5jdGlvbigpe3JldHVybiBkLnV0aWwuZGF0YSgiYUJhbUxpc3QiKXx8W119LGc9Yy51c2VyQnV0dG9uKCkuYmluZCh7Y2xpY2s6ZnVuY3Rpb24oKXt2YXIgaD1iKCksbD1nLmRhdGEoInVzZXJCdXR0b24iKS5qVGFyZ2V0LmF0dHIoInVzZXJpZCIpLHA9Yy5pbkFycmF5KGwsaCk7LTE9PT1wP2gucHVzaChsKTpoLnNwbGljZShwLDEpO2QudXRpbC5kYXRhKCJhQmFtTGlzdCIsaCk7bShudWxsKX0sYnV0dG9uc2hvdzpmdW5jdGlvbigpe3ZhciBkPWIoKSxkPS0xIT09Yy5pbkFycmF5KGcuZGF0YSgidXNlckJ1dHRvbiIpLmpUYXJnZXQuYXR0cigidXNlcmlkIiksZCk7Zy5hdHRyKCJzcmMiLEtbZD8idGljay1zaGllbGQiOiJjcm9zcy1zaGllbGQiXSkuc2libGluZ3MoKS50b2dnbGUoIWQpfX0pLGwsaD1jKCdceDNjZGl2IGNsYXNzXHgzZCJhbi1iYW1tZWQtbXNnIlx4M2UoIFx4M2NzcGFuXHgzZVx4M2Mvc3Bhblx4M2UgKVx4M2MvZGl2XHgzZScpLmhvdmVyaXplKCIucmVwbGllcnNfbGVmdCArIHRkIiwKe2F1dG9Ub2dnbGU6ITEsYXV0b1Bvc2l0aW9uOiExfSkuYmluZCh7ZW50ZXJ0YXJnZXQ6ZnVuY3Rpb24oKXt2YXIgYj1oLmRhdGEoImhvdmVyaXplIikualRhcmdldDtpZihiLnBhcmVudCgpLmhhc0NsYXNzKCJhbi1iYW1tZWQiKSl7dmFyIGQ9Yi5pbm5lckhlaWdodCgpO2guY2hpbGRyZW4oKS50ZXh0KCJTaG93IEJsb2NrZWQgVXNlciAtICIrYi5wYXJlbnQoKS5hdHRyKCJ1c2VybmFtZSIpKS5lbmQoKS5jc3MoYy5leHRlbmQoYi5vZmZzZXQoKSx7d2lkdGg6Yi5pbm5lcldpZHRoKCksaGVpZ2h0OmQsbGluZUhlaWdodDpkKyJweCJ9KSkuc2hvdygpfX0sbGVhdmV0YXJnZXQ6ZnVuY3Rpb24oKXtoLmhpZGUoKTtsJiYobD0hMSxoLmRhdGEoImhvdmVyaXplIikualRhcmdldC5wYXJlbnQoKS5hZGRDbGFzcygiYW4tYmFtbWVkIikpfSxjbGljazpmdW5jdGlvbihiKXtiLnRhcmdldCE9PXRoaXMmJihsPSEwLGguaGlkZSgpLmRhdGEoImhvdmVyaXplIikualRhcmdldC5wYXJlbnQoKS5yZW1vdmVDbGFzcygiYW4tYmFtbWVkIikpfX0pLAptPXRoaXMudG9nZ2xlUmVwbGllcz1mdW5jdGlvbihkKXt2YXIgZz1iKCk7KGR8fGMoZG9jdW1lbnQpKS5yZXBsaWVzKCkuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcyk7Yi5maW5kKCJ0clt1c2VyaWRdIikudG9nZ2xlQ2xhc3MoImFuLWJhbW1lZCIsLTEhPWMuaW5BcnJheShiLmRhdGEoInNVc2VyaWQiKSxnKSl9KX19LGluZmluaXRlOmZ1bmN0aW9uKGIpe3RoaXMudG9nZ2xlUmVwbGllcyhiKX19LCI3OTA2YmU4ZS0xODA5LTQwYzEtOGUyNy05NmRmM2FhMjI5ZDgiOntkZXNjOiJcdTc1MjhcdTYyMzZcdTlhZDhcdTRlYWVcdTUyOWZcdTgwZmQiLHBhZ2U6ezMyOiEwfSx0eXBlOjYsb25jZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMuaGlnaGxpZ2h0TGlzdD1bXSxnPWMudXNlckJ1dHRvbigpLmJpbmQoe2NsaWNrOmZ1bmN0aW9uKCl7dmFyIGQ9Zy5kYXRhKCJ1c2VyQnV0dG9uIikualRhcmdldC5hdHRyKCJ1c2VyaWQiKSxtPWMuaW5BcnJheShkLGIpOy0xPT09bT9iLnB1c2goZCk6CmIuc3BsaWNlKG0sMSk7bChudWxsKX0sYnV0dG9uc2hvdzpmdW5jdGlvbigpe2cuYXR0cigic3JjIixLW2cuZGF0YSgidXNlckJ1dHRvbiIpLmpUYXJnZXQuaGFzQ2xhc3MoImFuLWhpZ2hsaWdodGVkIik/ImhpZ2hsaWdodGVyLS1taW51cyI6ImhpZ2hsaWdodGVyLS1wbHVzIl0pfX0pO2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZigiLmFuLWhpZ2hsaWdodGVkIFx4M2UgdGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlcyAhaW1wb3J0YW50OyB9IixkLnV0aWwuZ2V0T3B0aW9ucygic0hpZ2hsaWdodEJnQ29sb3IiKSkpO3ZhciBsPXRoaXMudG9nZ2xlUmVwbGllcz1mdW5jdGlvbihkKXsoZHx8Yyhkb2N1bWVudCkpLnJlcGxpZXMoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9Yyh0aGlzKTtkLmZpbmQoInRyW3VzZXJpZF0iKS50b2dnbGVDbGFzcygiYW4taGlnaGxpZ2h0ZWQiLC0xIT1jLmluQXJyYXkoZC5kYXRhKCJzVXNlcmlkIiksYikpfSl9fSxpbmZpbml0ZTpmdW5jdGlvbihiKXt0aGlzLmhpZ2hsaWdodExpc3QubGVuZ3RoJiYKdGhpcy50b2dnbGVSZXBsaWVzKGIpfX0sImU4MmFhMGJhLWFhMzQtNDI3Ny05OWVhLTQxMjE5ZGNkYWNmMiI6e2Rlc2M6Ilx1NzUyOFx1NjIzNlx1NTVhZVx1NzM2OFx1OTg2Zlx1NzkzYVx1NTI5Zlx1ODBmZCIsZGVmZXI6MSxwYWdlOnszMjohMH0sdHlwZTo2LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGQ9Yy51c2VyQnV0dG9uKCkuYmluZCh7Y2xpY2s6ZnVuY3Rpb24oKXtiLnRhcmdldElkPWIudGFyZ2V0SWQ/bnVsbDpkLmRhdGEoInVzZXJCdXR0b24iKS5qVGFyZ2V0LmF0dHIoInVzZXJpZCIpO2wobnVsbCl9LGJ1dHRvbnNob3c6ZnVuY3Rpb24oKXtkLmF0dHIoInNyYyIsS1tiLnRhcmdldElkPyJtYWduaWZpZXItem9vbS1vdXQiOiJtYWduaWZpZXItem9vbS1pbiJdKX19KSxsPXRoaXMudG9nZ2xlUmVwbGllcz1mdW5jdGlvbihkKXsoZHx8Yyhkb2N1bWVudCkpLnJlcGxpZXMoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9Yyh0aGlzKTtkLmNsb3Nlc3QoImRpdiBceDNlIHRhYmxlIikudG9nZ2xlKCFiLnRhcmdldElkfHwKZC5kYXRhKCJzVXNlcmlkIik9PT1iLnRhcmdldElkKX0pfX0saW5maW5pdGU6ZnVuY3Rpb24oYil7dGhpcy50YXJnZXRJZCYmdGhpcy50b2dnbGVSZXBsaWVzKGIpfX0sImZjMDdjY2RhLTRlNzYtNDcwMy04Mzg4LTgxZGFjOTQyN2Q3YyI6e2Rlc2M6Ilx1NWYzN1x1NTIzNlx1OTg2Zlx1NzkzYVx1N2E3YVx1NzY3ZFx1NzUyOFx1NjIzNlx1NTQwZFx1OTAyM1x1N2Q1MCIscGFnZTp7MzI6ITB9LHR5cGU6NixvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIi5hbi1uYW1lZm9yY2Vkc2hvd24geyBmb250LXN0eWxlOiBpdGFsaWM7IH0iKX0saW5maW5pdGU6ZnVuY3Rpb24oYil7Yi5yZXBsaWVzKCkuak5hbWVMaW5rcy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PWModGhpcykud2lkdGgoKX0pLmFkZENsYXNzKCJhbi1uYW1lZm9yY2Vkc2hvd24iKS5odG1sKCJceDNjXHU3YTdhXHU3NjdkXHU1NDBkXHU3YTMxXHgzZSIpfX0sIjYzMzMzYTg2LTE5MTYtNDVjMS05NmUwLWYzNGE1YWRkNjdjMSI6e2Rlc2M6Ilx1OTY1MFx1NTIzNlx1NTZkZVx1ODk4Nlx1OWFkOFx1NWVhNiIsCnBhZ2U6ezMyOiExfSx0eXBlOjYsb3B0aW9uczp7cmVwbHlNYXhIZWlnaHQ6e2Rlc2M6Ilx1NjcwMFx1NTkyN1x1OWFkOFx1NWVhNihweCkiLHR5cGU6InRleHQiLGRlZmF1bHRWYWx1ZToyRTN9fSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9ZC51dGlsLmdldE9wdGlvbnMoInJlcGx5TWF4SGVpZ2h0Iik7ZC51dGlsLnN0YWNrU3R5bGUoIlx0XHQucmVwbGllcnNfcmlnaHQsIC5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5LCAucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyLCAucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyIFx4M2UgdGQgeyBkaXNwbGF5OiBibG9jazsgfSBcdFx0LnJlcGxpZXJzX3JpZ2h0IFx4M2UgdGJvZHkgXHgzZSB0cjpmaXJzdC1jaGlsZCB7IG1heC1oZWlnaHQ6ICIrYisicHg7IG92ZXJmbG93LXk6IGhpZGRlbjsgfSBcdFx0LmFuLW1heGhlaWdodHJlbW92ZWQgXHgzZSAucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkIHsgbWF4LWhlaWdodDogbm9uZTsgfSBcdFx0I2FuLWhlaWdodHRvZ2dsZXIgeyBtYXJnaW46IC0xNHB4IDAgMCAzLjVweDsgfSBcdFx0I2FuLWhlaWdodHRvZ2dsZXIgXHgzZSBpbWcgeyBwYWRkaW5nOiA3cHggMy41cHg7IGN1cnNvcjogcG9pbnRlcjsgfSBcdFx0Iik7CnZhciBnPWMoJ1x4M2NkaXYgaWRceDNkImFuLWhlaWdodHRvZ2dsZXIiXHgzZVx4M2NpbWcgc3JjXHgzZCInK0tbImNvbnRyb2wtZWplY3QiXSsnIiAvXHgzZVx4M2NpbWcgc3JjXHgzZCInK0tbImNvbnRyb2wtc3RvcC0yNzAiXSsnIiAvXHgzZVx4M2NpbWcgc3JjXHgzZCInK0tbImNvbnRyb2wtMjcwIl0rJyIgL1x4M2VceDNjL2Rpdlx4M2UnKS5ob3Zlcml6ZSgiLnJlcGxpZXJzX2xlZnQgKyB0ZCIse2ZpbHRlcjpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMpLmhhc0NsYXNzKCJhbi1tYXhoZWlnaHRyZW1vdmVkIil8fGModGhpcykuZmluZCgidGQ6Zmlyc3QiKS5pbm5lckhlaWdodCgpPmJ9LGF1dG9Qb3NpdGlvbjohMX0pLmJpbmQoe2VudGVydGFyZ2V0OmZ1bmN0aW9uKCl7dmFyIGI9Zy5kYXRhKCJob3Zlcml6ZSIpLmpUYXJnZXQsYz1iLmhhc0NsYXNzKCJhbi1tYXhoZWlnaHRyZW1vdmVkIiksZD1iLm9mZnNldCgpO2cuY3NzKHt0b3A6ZC50b3ArYi5oZWlnaHQoKSxsZWZ0OmQubGVmdH0pLmNoaWxkcmVuKCI6Zmlyc3QiKS50b2dnbGUoYykubmV4dEFsbCgpLnRvZ2dsZSghYyl9LApjbGljazpmdW5jdGlvbihiKXt2YXIgZD1nLmRhdGEoImhvdmVyaXplIik7ZC5maXhTY3JvbGw9Mj09PWMoYi50YXJnZXQpLmluZGV4KCk/InRvcCI6ImJvdHRvbSI7ZC5maXhTY3JvbGxfZGlmZmVyZW5jZT1kLmpUYXJnZXRbZC5maXhTY3JvbGxdKCktdi5zY3JvbGxUb3AoKTtkLmpUYXJnZXQudG9nZ2xlQ2xhc3MoImFuLW1heGhlaWdodHJlbW92ZWQiKX19KX19LCI3YjM2MTg4Zi1jNTY2LTQ2ZWItYjQ4ZC01NjgwYTQzMzFjMWYiOntkZXNjOiJcdThmNDlcdTYzZGJcdThhZDZcdTU4YzdcdTkwMjNcdTdkNTBcdTc2ODRcdTRmM2FcdTY3MGRcdTU2NjhcdTRmNGRcdTdmNmUiLHBhZ2U6ezMyOiEwfSx0eXBlOjYsb25jZTpmdW5jdGlvbigpe3ZhciBiPS8oPzpkZW1vZm9ydW18Z3JvdXBvbnxzZWFyY2h8bVxkKnxmb3J1bVxkKilcLmhrZ29sZGVuXC5jb20vaTt2Lm1vdXNlZG93bihmdW5jdGlvbihkKXtkPWMoZC50YXJnZXQpO2QuaXMoIi5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgYSIpJiYKYi50ZXN0KGQuYXR0cigiaHJlZiIpKSYmZC5hdHRyKCJocmVmIixkLmF0dHIoImhyZWYiKS5yZXBsYWNlKGIsQy5ob3N0bmFtZSkpfSl9fSwiZTMzYmYwMGMtOWZjNS00NmFiLTg2NmEtMDNjNGM3Y2E1MDU2Ijp7ZGVzYzoiXHU4ZjQ5XHU2M2RiXHU2NTg3XHU1YjU3XHU5MDIzXHU3ZDUwXHU2MjEwXHU5MDIzXHU3ZDUwIixwYWdlOnszMjohMH0sdHlwZTo2LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiLmFuLWxpbmtpZmllZCB7IHBhZGRpbmctcmlnaHQ6IDJweDsgfSIpfSxpbmZpbml0ZTpmdW5jdGlvbihiKXt2YXIgZD0vKD86aHR0cHM/fGZ0cCk6XC9cLyg/Oltcdy1dK1wuKStbYS16XXsyLDN9KD8hW2Etel0pW1x3LlwvPzo7fiFAIyQlXiYqKCkrPS1dKi9pO2IucmVwbGllcygpLmpDb250ZW50cy5lYWNoKGZ1bmN0aW9uKCl7aWYoZC50ZXN0KGModGhpcykudGV4dCgpKSlmb3IodmFyIGIsaCxtPXRoaXMuZmlyc3RDaGlsZDtiPW07KWlmKDM9PT1iLm5vZGVUeXBlJiYKKGg9ZC5leGVjKGIuZGF0YSkpKW09Yi5zcGxpdFRleHQoaC5pbmRleCtoWzBdLmxlbmd0aCksYyhiLnNwbGl0VGV4dChoLmluZGV4KSkuYmVmb3JlKCdceDNjaW1nIHRpdGxlXHgzZCJcdTVkZjJcdThmNDlcdTYzZGJcdTY1ODdcdTViNTdcdTcwYmFcdTkwMjNcdTdkNTAiIGNsYXNzXHgzZCJhbi1saW5raWZpZWQiIHNyY1x4M2QiJytLWyJjaGFpbi0tYXJyb3ciXSsnIiAvXHgzZScpLmFmdGVyKGMuc3ByaW50ZignXHgzY2EgaHJlZlx4M2QiJXMiXHgzZSVzXHgzYy9hXHgzZScsaFswXSxoWzBdKSkucmVtb3ZlKCk7ZWxzZSBmb3IobT0hL14oPzphfGJ1dHRvbnxzY3JpcHR8c3R5bGUpJC9pLnRlc3QoYi5ub2RlTmFtZSkmJmIuZmlyc3RDaGlsZHx8Yi5uZXh0U2libGluZzshbSYmKGI9Yi5wYXJlbnROb2RlKTspbT1iLm5leHRTaWJsaW5nfSl9fSwiNDIyZmUzMjMtZTYxZS00N2Q5LWEzNDgtZDQwMDExZjVkYTI4Ijp7ZGVzYzoiXHU5MDIzXHU3ZDUwXHU1YzAxXHU5Mzk2XHU1MjlmXHU4MGZkIiwKcGFnZTp7MzI6ITF9LHR5cGU6NixvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIlx0XHQucmVwbGllcnNfcmlnaHQgYVt0YXJnZXRdIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9IFx0XHRhW2hyZWZdLmFuLWxpbmtibG9ja2VkIHsgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7IGZvbnQtc3R5bGU6IGl0YWxpYzsgY3Vyc29yOiBkZWZhdWx0OyB9IFx0XHRhW3RhcmdldF0uYW4tbGlua2Jsb2NrZWQ6YmVmb3JlIHsgY29udGVudDogYXR0cihyZWwpOyB9IFx0XHRhW3RhcmdldF0uYW4tbGlua2Jsb2NrZWQgXHgzZSBpbWcgeyBkaXNwbGF5OiBub25lOyB9IFx0XHQjYW4tbGlua2Jsb2NrdG9nZ2xlciB7IG1hcmdpbjogLTE2cHggMCAwIC0zNHB4OyBwYWRkaW5nOiAxNnB4OyBwYWRkaW5nLXJpZ2h0OiAycHg7IH0gXHRcdCIpO3ZhciBiPXRoaXMuYmxvY2tMaXN0PWQudXRpbC5kYXRhKCJsaW5rQmxvY2tMaXN0Iil8fFtdLGc9L15odHRwOlwvXC8oPzpbXi5dKy4paGtnb2xkZW5cLmNvbS8sCmw9YygiXHgzY2ltZyAvXHgzZSIse2lkOiJhbi1saW5rYmxvY2t0b2dnbGVyIn0pLmhvdmVyaXplKCIucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkIGEiLHtmaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzKS5oYXNDbGFzcygiYW4tbGlua2Jsb2NrZWQiKXx8IWcudGVzdCh0aGlzLmhyZWYpfSxmaXhTY3JvbGw6InRvcCJ9KS5iaW5kKHtlbnRlcnRhcmdldDpmdW5jdGlvbigpe2wuYXR0cigic3JjIixLW2wuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0Lmhhc0NsYXNzKCJhbi1saW5rYmxvY2tlZCIpPyJ0aWNrLXNoaWVsZCI6ImNyb3NzLXNoaWVsZCJdKX0sY2xpY2s6ZnVuY3Rpb24oKXt2YXIgZz1sLmRhdGEoImhvdmVyaXplIikualRhcmdldCxtPWcuaGFzQ2xhc3MoImFuLWxpbmtibG9ja2VkIikscT1tPyJyZWwiOiJocmVmIixuPWcuYXR0cihxKSxnPWMoZG9jdW1lbnQpLnJlcGxpZXMoKS5qQ29udGVudHMuZmluZCgiYSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzW3FdPT09Cm59KS50b2dnbGVDbGFzcygiYW4tbGlua2Jsb2NrZWQiKTttPyhnLmF0dHIoe2hyZWY6bn0pLGIuc3BsaWNlKGMuaW5BcnJheShuLGIpLDEpKTooZy5hdHRyKHtocmVmOiJqYXZhc2NyaXB0OiIscmVsOm59KSxiLnB1c2gobikpO2QudXRpbC5kYXRhKCJsaW5rQmxvY2tMaXN0IixiKX19KX0saW5maW5pdGU6ZnVuY3Rpb24oYixkKXtiLnJlcGxpZXMoKS5qQ29udGVudHMuZmluZCgiYSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybi0xIT09Yy5pbkFycmF5KHRoaXMuaHJlZixkLmJsb2NrTGlzdCl9KS50b2dnbGVDbGFzcygiYW4tbGlua2Jsb2NrZWQiKS5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5hdHRyKHtocmVmOiJqYXZhc2NyaXB0OiIscmVsOnRoaXMuaHJlZn0pfSl9fSwiZDc2MWQ2ZjctOGVmNy00ZDViLTg0ZTktZGIxNmEyNzRmNjE2Ijp7ZGVzYzoiXHU4ZjQ5XHU2M2RiXHU1NzE2XHU3MjQ3XHU5MDIzXHU3ZDUwXHU2MjEwXHU1NzE2XHU3MjQ3IixwYWdlOnszMjohMX0sdHlwZTo2LApvcHRpb25zOntpbWFnZUNvbnZlcnRNb2RlOntkZXNjOiJcdThmNDlcdTYzZGJcdTZhMjFcdTVmMGYiLHR5cGU6InNlbGVjdCIsY2hvaWNlczpbIlx1ODFlYVx1NTJkNVx1OGY0OVx1NjNkYiIsIlx1ODFlYVx1NTJkNVx1OGY0OVx1NjNkYihcdTVmMTVcdTc1MjhcdTRlMmRcdTc2ODRcdTkwMjNcdTdkNTBcdTk2NjRcdTU5MTYpIiwiXHU2MjRiXHU1MmQ1XHU4ZjQ5XHU2M2RiIl0sZGVmYXVsdFZhbHVlOiJcdTgxZWFcdTUyZDVcdThmNDlcdTYzZGIoXHU1ZjE1XHU3NTI4XHU0ZTJkXHU3Njg0XHU5MDIzXHU3ZDUwXHU5NjY0XHU1OTE2KSJ9fSxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIlx0XHQuYW4taW1hZ2lmaWVkIHsgcGFkZGluZy1sZWZ0OiAycHg7IH0gXHRcdC5hbi1pbWFnaWZpZWQgKyBhIHsgZGlzcGxheTogYmxvY2s7IH0gXHRcdC5hbi1pbWFnaWZpZWQgKyBhIFx4M2UgaW1nIHsgYm9yZGVyOiAwOyB9IFx0XHQiKTt2YXIgYj0vKD86bmFcLmN4fHVwdG93XC5uZXR8aG9sbGFuZC5waylcL1x3KyR8XC4oPzpqcGU/Z3xnaWZ8cG5nfGJtcClcYi9pOwp2LmJpbmQoImNsaWNrIGltYWdlY29udmVydCIsZnVuY3Rpb24oZCl7dmFyIGw9YyhkLnRhcmdldCk7bC5uZXh0KCIuYW4taW1hZ2lmaWVkIikubGVuZ3RoPyhkLnByZXZlbnREZWZhdWx0KCksbC5uZXh0KCkubmV4dCgpLnRvZ2dsZSgpKTowPT09bC5jaGlsZHJlbigpLmxlbmd0aCYmKCJpbWFnZWNvbnZlcnQiPT09ZC50eXBlfHxsLmlzKCIucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkIGEiKSkmJmIudGVzdChkLnRhcmdldC5ocmVmKSYmKGQucHJldmVudERlZmF1bHQoKSxjKCdceDNjaW1nIHRpdGxlXHgzZCJcdTVkZjJcdThmNDlcdTYzZGJcdTkwMjNcdTdkNTBcdTcwYmFcdTU3MTZcdTcyNDciIGNsYXNzXHgzZCJhbi1pbWFnaWZpZWQiIHNyY1x4M2QiJytLWyJpbWFnZS1leHBvcnQiXSsnIiAvXHgzZScpLmluc2VydEFmdGVyKGwpLmFmdGVyKGMuc3ByaW50ZignXHgzY2EgaHJlZlx4M2QiJSh1cmwpcyIgdGFyZ2V0XHgzZCJfYmxhbmsiXHgzZVx4M2NpbWcgb25sb2FkXHgzZCJEcmF3SW1hZ2UodGhpcykiIHNyY1x4M2QiJSh1cmwpcyIgYWx0XHgzZCIlKHVybClzIiAvXHgzZVx4M2MvYVx4M2UnLAp7dXJsOmQudGFyZ2V0LmhyZWZ9KSkpfSl9LGluZmluaXRlOmZ1bmN0aW9uKGIpe3ZhciBnPWMuaW5BcnJheShkLnV0aWwuZ2V0T3B0aW9ucygiaW1hZ2VDb252ZXJ0TW9kZSIpLHRoaXMub3B0aW9ucy5pbWFnZUNvbnZlcnRNb2RlLmNob2ljZXMpOzIhPT1nJiZiLnJlcGxpZXMoKS5qQ29udGVudHMuZmluZCgwPT09Zz8iYSI6ImE6bm90KGJsb2NrcXVvdGUgYSkiKS50cmlnZ2VyKCJpbWFnZWNvbnZlcnQiKX19LCI4ZTE3ODNjZC0yNWQ1LTRiOTUtOTM0Yy00OGE2NTBjNWMwNDIiOntkZXNjOiJcdTU3MTZcdTcyNDdcdTVjNGZcdTg1M2RcdTUyOWZcdTgwZmQiLHBhZ2U6ezMyOiExfSx0eXBlOjYsb3B0aW9uczp7aW1hZ2VNYXNrTW9kZTp7ZGVzYzoiXHU1YzRmXHU4NTNkXHU2YTIxXHU1ZjBmIix0eXBlOiJzZWxlY3QiLGNob2ljZXM6WyJcdTgxZWFcdTUyZDVcdTVjNGZcdTg1M2QiLCJcdTgxZWFcdTUyZDVcdTVjNGZcdTg1M2QoXHU1M2VhXHU5NjUwXHU1ZjE1XHU3NTI4XHU0ZTJkXHU3Njg0XHU1NzE2XHU3MjQ3KSIsCiJcdTYyNGJcdTUyZDVcdTVjNGZcdTg1M2QiXSxkZWZhdWx0VmFsdWU6Ilx1ODFlYVx1NTJkNVx1NWM0Zlx1ODUzZChcdTUzZWFcdTk2NTBcdTVmMTVcdTc1MjhcdTRlMmRcdTc2ODRcdTU3MTZcdTcyNDcpIn19LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1jLmluQXJyYXkoZC51dGlsLmdldE9wdGlvbnMoImltYWdlTWFza01vZGUiKSx0aGlzLm9wdGlvbnMuaW1hZ2VNYXNrTW9kZS5jaG9pY2VzKTtkLnV0aWwuc3RhY2tTdHlsZSh7MDoiLnJlcGxpZXJzX3JpZ2h0IGltZ1tzcmNdW29ubG9hZF0sIiwxOiIucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSBpbWdbb25sb2FkXSwiLDI6IiJ9W2JdKyJpbWdbb25sb2FkXS5hbi1tYXNrZWRJbWFnZSB7IHBhZGRpbmc6IDUycHggNDhweCAwIDA7IHdpZHRoOiAwOyBoZWlnaHQ6IDA7IGJhY2tncm91bmQ6IHVybCgiK0tbImdub21lLW1pbWUtaW1hZ2UtYm1wIl0rIikgbm8tcmVwZWF0OyB9Iik7MiE9PWImJmQudXRpbC5zdGFja1N0eWxlKCJpbWdbc3JjXVtvbmxvYWRdLmFuLXVubWFza2VkSW1hZ2UgeyBwYWRkaW5nOiAwOyB3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyBiYWNrZ3JvdW5kOiBub25lOyB9Iik7CnZhciBnPWMoIlx4M2NpbWcgL1x4M2UiLHtzcmM6S1sicGljdHVyZS0tbWludXMiXSxjc3M6eyJtYXJnaW4tdG9wIjoiLTJweCJ9fSkuaG92ZXJpemUoIi5yZXBsaWVyc19yaWdodCBpbWdbb25sb2FkXSIse2ZpbHRlcjpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMpLndpZHRoKCl9fSkuY2xpY2soZnVuY3Rpb24oKXtnLmRhdGEoImhvdmVyaXplIikualRhcmdldC5hZGRDbGFzcygiYW4tbWFza2VkSW1hZ2UiKS5yZW1vdmVDbGFzcygiYW4tdW5tYXNrZWRJbWFnZSIpfSk7di5iaW5kKCJjbGljayIsZnVuY3Rpb24oYil7dmFyIGQ9YyhiLnRhcmdldCk7ZC5pcygiaW1nW29ubG9hZF0iKSYmMD09PWQud2lkdGgoKSYmKGIucHJldmVudERlZmF1bHQoKSxkLmFkZENsYXNzKCJhbi11bm1hc2tlZEltYWdlIikucmVtb3ZlQ2xhc3MoImFuLW1hc2tlZEltYWdlIikubW91c2VvdmVyKCkpfSl9fSwiMDM5ZDgyMGYtZDNjNy00NTM5LTg2NDctZGRlOTc0Y2VlYzBiIjp7ZGVzYzoiXHU4ZjQ5XHU2M2RiXHU4OTk2XHU5ODNiXHU3ZGIyXHU3YWQ5XHU5MDIzXHU3ZDUwXHU2MjEwXHU1ZjcxXHU3MjQ3IiwKcGFnZTp7MzI6ITB9LHR5cGU6NixkZWZlcjoyLG9wdGlvbnM6e3ZpZGVvQ29udmVydE1vZGU6e2Rlc2M6Ilx1OGY0OVx1NjNkYlx1NmEyMVx1NWYwZiIsdHlwZToic2VsZWN0IixjaG9pY2VzOlsiXHU4MWVhXHU1MmQ1XHU4ZjQ5XHU2M2RiIiwiXHU4MWVhXHU1MmQ1XHU4ZjQ5XHU2M2RiKFx1NWYxNVx1NzUyOFx1NGUyZFx1NzY4NFx1OTAyM1x1N2Q1MFx1OTY2NFx1NTkxNikiLCJcdTYyNGJcdTUyZDVcdThmNDlcdTYzZGIiXSxkZWZhdWx0VmFsdWU6Ilx1ODFlYVx1NTJkNVx1OGY0OVx1NjNkYihcdTVmMTVcdTc1MjhcdTRlMmRcdTc2ODRcdTkwMjNcdTdkNTBcdTk2NjRcdTU5MTYpIn0sdmlkZW9NYXhXaWR0aDp7ZGVzYzoiXHU2NGFkXHU2NTNlXHU1NjY4XHU2NzAwXHU1OTI3XHU5NWNhXHU1ZWE2IFtcdTUzZWZcdThhMmRcdTViOWFcdTcwYmE4MCUsIDEwMDBweFx1N2I0OV0iLHR5cGU6InRleHQiLGRlZmF1bHRWYWx1ZToiMTAwJSJ9fSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGIsZyxsLApoPVt7cmVnZXg6InlvdXR1YmVcXC5jb20vd2F0Y2hcXD8iLGZuOmZ1bmN0aW9uKCl7Zz1iLzE2KjkrMjU7bD1jLnNwcmludGYoImh0dHA6Ly93d3cueW91dHViZS5jb20vdi8lcz92ZXJzaW9uXHgzZDNceDI2ZnNceDNkMVx4MjZyZWxceDNkMCIsbC5yZXBsYWNlKC8uKz92PShbXiYjXSspLiovaSwiJDEiKSl9fSx7cmVnZXg6InlvdXR1XFwuYmUvLiIsZm46ZnVuY3Rpb24oKXtnPWIvMTYqOSsyNTtsPWMuc3ByaW50ZigiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92LyVzP3ZlcnNpb25ceDNkM1x4MjZmc1x4M2QxXHgyNnJlbFx4M2QwIixsLnJlcGxhY2UoLy4rXC8oW14/JiNdKykuKi9pLCIkMSIpKX19LHtyZWdleDoidmltZW9cXC5jb20vXFxkIixmbjpmdW5jdGlvbigpe2c9Yi8xLjU7bD1jLnNwcmludGYoImh0dHA6Ly92aW1lby5jb20vbW9vZ2Fsb29wLnN3Zj9jbGlwX2lkXHgzZCVzXHgyNnNob3dfdGl0bGVceDNkMVx4MjZmdWxsc2NyZWVuXHgzZDEiLGwucmVwbGFjZSgvLit2aW1lb1wuY29tXC8oXGQrKS4qL2ksCiIkMSIpKX19LHtyZWdleDoieW91a3VcXC5jb20vdl9zaG93LyIsZm46ZnVuY3Rpb24oKXtnPWIvNCozKzQwO2w9Yy5zcHJpbnRmKCJodHRwOi8vcGxheWVyLnlvdWt1LmNvbS9wbGF5ZXIucGhwL3NpZC8lcy92LnN3ZiIsbC5yZXBsYWNlKC8uKz9pZF8oW15cL10rKS4qL2ksIiQxIikpfX0se3JlZ2V4OiJ0dWRvdVxcLmNvbS9wcm9ncmFtcy8iLGZuOmZ1bmN0aW9uKCl7Zz1iLzQqMys0ODtsPWMuc3ByaW50ZigiaHR0cDovL3d3dy50dWRvdS5jb20vdi8lcyIsbC5yZXBsYWNlKC8uKz92aWV3XC8oW15cL10rKS4qL2ksIiQxIikpfX1dLG09ZnVuY3Rpb24oKXt2YXIgYj1bXTtjLmVhY2goaCxmdW5jdGlvbigpe2IucHVzaCh0aGlzLnJlZ2V4KX0pO3JldHVybiBSZWdFeHAoYi5qb2luKCJ8IiksImkiKX0oKTtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdC5hbi12aWRlb2lmaWVkIHsgcGFkZGluZy1sZWZ0OiAycHg7IH0gXHRcdC5hbi12aWRlb2lmaWVkICsgb2JqZWN0IHsgZGlzcGxheTogYmxvY2s7IG91dGxpbmU6IDA7IH0gXHRcdCIpOwp2LmJpbmQoImNsaWNrIHZpZGVvY29udmVydCIsZnVuY3Rpb24ocSl7dmFyIG49YyhxLnRhcmdldCk7bi5uZXh0KCIuYW4tdmlkZW9pZmllZCIpLmxlbmd0aD8ocS5wcmV2ZW50RGVmYXVsdCgpLG4ubmV4dCgpLm5leHQoKS5yZW1vdmUoKS5lbmQoKS5yZW1vdmUoKSk6KCJ2aWRlb2NvbnZlcnQiPT09cS50eXBlfHxuLmlzKCIucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkIGEiKSkmJm0udGVzdChxLnRhcmdldC5ocmVmKSYmKHEucHJldmVudERlZmF1bHQoKSxsPXEudGFyZ2V0LmhyZWYscT1uLnVwKCJkaXYiKS53aWR0aCgpLGI9ZC51dGlsLmdldE9wdGlvbnMoInZpZGVvTWF4V2lkdGgiKSxiPS8uKyUvLnRlc3QoYik/cSpwYXJzZUludChiKS8xMDA6cGFyc2VJbnQoYiksYj5xJiYoYj1xKSxjLmVhY2goaCxmdW5jdGlvbigpe2lmKFJlZ0V4cCh0aGlzLnJlZ2V4LCJpIikudGVzdChsKSlyZXR1cm4gdGhpcy5mbigpLCExfSksYygiXHgzY2Rpdlx4M2VceDNjL2Rpdlx4M2UiKS5pbnNlcnRBZnRlcihuKS50b0ZsYXNoKGwsCnt3aWR0aDpiLGhlaWdodDpnLnRvRml4ZWQoMCl9LHt3bW9kZToib3BhcXVlIixhbGxvd2Z1bGxzY3JlZW46InRydWUifSkuYmVmb3JlKCdceDNjaW1nIHRpdGxlXHgzZCJcdTVkZjJcdThmNDlcdTYzZGJcdTkwMjNcdTdkNTBcdTcwYmFcdTVmNzFcdTcyNDciIGNsYXNzXHgzZCJhbi12aWRlb2lmaWVkIiBzcmNceDNkIicrS1siZmlsbS0tYXJyb3ciXSsnIiAvXHgzZScpKX0pfSxpbmZpbml0ZTpmdW5jdGlvbihiLGcpe3ZhciBsPWMuaW5BcnJheShkLnV0aWwuZ2V0T3B0aW9ucygidmlkZW9Db252ZXJ0TW9kZSIpLHRoaXMub3B0aW9ucy52aWRlb0NvbnZlcnRNb2RlLmNob2ljZXMpOzIhPT1sJiZiLnJlcGxpZXMoKS5qQ29udGVudHMuZmluZCgwPT09bD8iYSI6ImE6bm90KGJsb2NrcXVvdGUgYSkiKS50cmlnZ2VyKCJ2aWRlb2NvbnZlcnQiKX19LCJhNzQ4NGNmMi05Y2JkLTQ3YWEtYWMyOC00NzJmNTVhMWI4ZjQiOntkZXNjOiJcdTk3MDBcdTg5ODFcdTY2NDJcdTgxZWFcdTUyZDVcdTUyYTBcdTUxNjVcdTRlZTNcdTc4YmNcdTYzZDJcdTUxNjVcdTYzMDlcdTYyNmQiLApwYWdlOnsyODg6ITB9LHR5cGU6NixvbmNlOmZ1bmN0aW9uKCl7dmFyIGIsZCxsLGgsbSxxLG49YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKS5iaW5kKCJrZXl1cCBtb3VzZXVwIGNoYW5nZSIsZnVuY3Rpb24oKXtpZighYil7dmFyIHA9e2hvc3Q6Imh0dHBzPzovLyg/OltcXHctXStcXC4pK1thLXpdezIsNH0oPyFbYS16XSkiLGNvZGVzOiJcXFsvPyg/OmltZ3x1cmx8cXVvdGV8XFwqfGxlZnR8Y2VudGVyfHJpZ2h0fGJ8aXx1fHN8c2l6ZXxyZWR8Z3JlZW58Ymx1ZXxwdXJwbGV8dmlvbGV0fGJyb3dufGJsYWNrfHBpbmt8b3JhbmdlfGdvbGR8bWFyb29ufHRlYWx8bmF2eXxsaW1lZ3JlZW4pIn07Yj1SZWdFeHAoYy5zcHJpbnRmKCIlKGhvc3Qpcyg/Oi8oPzooPyElKGNvZGVzKXMpXFxTKSopPyg/IShcXFMqP3wgKilcXFsvKD86aW1nfHVybCldKSIscCksImdpIik7ZD1jKCdceDNjYnV0dG9uIHR5cGVceDNkImJ1dHRvbiIgc3R5bGVceDNkInZlcnRpY2FsLWFsaWduOiB0b3A7IG1hcmdpbi1sZWZ0OiA1cHg7IGRpc3BsYXk6IG5vbmU7IiAvXHgzZScpLmluc2VydEFmdGVyKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9idG5fU3VibWl0IH4gOmxhc3QtY2hpbGQiKS5jbGljayhmdW5jdGlvbigpe24udmFsKG0ucmVwbGFjZShiLAoiW3VybF0kXHgyNlsvdXJsXSIpKS5jaGFuZ2UoKX0pO2w9UmVnRXhwKGMuc3ByaW50ZigiJShob3N0KXMvKD86KD8hJShjb2RlcylzKVxcUykrP1xcLig/OmJtcHxqcGU/Z3xwbmd8Z2lmKSg/ISAqXFxbLyg/OmltZ3x1cmwpXSkiLHApLCJnaSIpO2g9YygnXHgzY2J1dHRvbiB0eXBlXHgzZCJidXR0b24iIHN0eWxlXHgzZCJ2ZXJ0aWNhbC1hbGlnbjogdG9wOyBtYXJnaW4tbGVmdDogNXB4OyBkaXNwbGF5OiBub25lOyIgL1x4M2UnKS5pbnNlcnRBZnRlcihkKS5jbGljayhmdW5jdGlvbigpe24udmFsKG0ucmVwbGFjZShsLCJbaW1nXSRceDI2Wy9pbWddIikpLmNoYW5nZSgpfSl9bT1uLnZhbCgpOyhxPW0ubWF0Y2goYikpP2QuaHRtbChjLnNwcmludGYoIlx1NzBiYSVzXHU1MDBiXHU5MDIzXHU3ZDUwXHU1MmEwXHU0ZTBhW3VybF1cdTRlZTNcdTc4YmMiLHEubGVuZ3RoKSkuc2hvdygpOmQuaGlkZSgpOyhxPW0ubWF0Y2gobCkpP2guaHRtbChjLnNwcmludGYoIlx1NzBiYSVzXHU1MDBiXHU1NzE2XHU3MjQ3XHU5MDIzXHU3ZDUwXHU1MmEwXHU0ZTBhW2ltZ11cdTRlZTNcdTc4YmMiLApxLmxlbmd0aCkpLnNob3coKTpoLmhpZGUoKX0pfX0sIjFmYjE3NjI0LTdjNmYtNDNhYS1hZjExLTkzMzFmMWY5NDhjYiI6e2Rlc2M6Ilx1NWYzN1x1NTMxNlx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYVx1NTIxNyIscGFnZTp7Mjg4OiEwfSx0eXBlOjYsb3B0aW9uczp7c1NtaWxleVNlbGVjdE1ldGhvZDp7ZGVzYzoiXHU1NzE2XHU3OTNhXHU5MDc4XHU2NGM3XHU2NWI5XHU1ZjBmIixkZWZhdWx0VmFsdWU6Ilx1NTIxN1x1ODg2OCIsdHlwZToic2VsZWN0IixjaG9pY2VzOlsiXHU1MjE3XHU4ODY4IiwiXHU5MDIzXHU3ZDUwIl19fSxvbmNlOmZ1bmN0aW9uKCl7aWYoYygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKS5sZW5ndGgpe3ZhciBiPSIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9RdWlja1JlcGx5VGFibGUgdGFibGUgdGFibGUgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkICsgdHIgKyB0ciArIHRyIjtjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9Gb3J1bV9UeXBlX1JvdyIpLmxlbmd0aCYmCihiKz0iKyB0ciArIHRyIik7Yis9Ilx4M2UgdGQ6Zmlyc3QtY2hpbGQiO2QudXRpbC5zdGFja1N0eWxlKCJcdFx0IitiKyIgeyBjdXJzb3I6IHBvaW50ZXI7IH0gXHRcdCIrYisiOmJlZm9yZSB7IGNvbnRlbnQ6IHVybCgiK0tbInNtaWxleS10d2lzdCJdKyIpOyBtYXJnaW4tcmlnaHQ6IDJweDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfSBcdFx0Iik7di5iaW5kKCJjbGljay5zbWlsZXlhZGRlciIsZnVuY3Rpb24oZyl7dmFyIGw9YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKS51cCgidHIiKS5uZXh0KCk7aWYoIWwubGVuZ3RofHxsLmNoaWxkcmVuKCI6Zmlyc3QiKVswXT09PWcudGFyZ2V0KWlmKHYudW5iaW5kKCJjbGljay5zbWlsZXlhZGRlciIpLGQudXRpbC5hZGRTdHlsZSgiXHRcdFx0IitiKyIgeyBjdXJzb3I6IGRlZmF1bHQ7IH0gXHRcdFx0IitiKyc6YmVmb3JlIHsgY29udGVudDogIiI7IGRpc3BsYXk6IG5vbmU7IH0gXHRcdFx0JyksbC5jaGlsZHJlbigiOmxhc3QiKS5hcHBlbmQoZnVuY3Rpb24oKXt2YXIgYj0KIiI7Yy5lYWNoKGRhLGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5odG1sO2IrPSdceDNjdGFibGUgc3R5bGVceDNkImRpc3BsYXk6IG5vbmUiIGNlbGxwYWRkaW5nXHgzZCIwIiBjZWxsc3BhY2luZ1x4M2QiMCJceDNlXHgzY3Rib2R5XHgzZSc7Yy5lYWNoKGQudGFibGUsZnVuY3Rpb24oZyxoKXtmdW5jdGlvbiBsKGcsaCl7Yis9Yy5zcHJpbnRmKCdceDNjYSBocmVmXHgzZCJqYXZhc2NyaXB0Okluc2VydFRleHQoXCclKGNvZGUpc1wnLGZhbHNlKSJceDNlXHgzY2ltZyBzdHlsZVx4M2QiYm9yZGVyOiAwIiBzcmNceDNkIiUocGF0aClzLyUoZmlsZW5hbWUpcy5naWYiIGFsdFx4M2QiJShjb2RlKXMiIC9ceDNlXHgzYy9hXHgzZVx4MjZuYnNwO1x4MjZuYnNwOycse2NvZGU6aFswXSxwYXRoOmQucGF0aCxmaWxlbmFtZTpoWzFdfSl9Yis9Ilx4M2N0clx4M2UiO2IrPTA9PWc/J1x4M2N0ZCBjb2xzcGFuXHgzZCIyIlx4M2UnOiJceDNjdGRceDNlIjtjLmVhY2goaCxsKTtiKz0iXHgzYy90ZFx4M2UiOwoxPT1nJiZkLnNwYW4mJihiKz0nXHgzY3RkIHZhbGlnblx4M2QiYm90dG9tIiByb3dzcGFuXHgzZCIyIlx4M2UnLGMuZWFjaChkLnNwYW4sbCksYis9Ilx4M2MvdGRceDNlIik7Yis9Ilx4M2MvdHJceDNlIn0pO2IrPSJceDNjL3Rib2R5XHgzZVx4M2MvdGFibGVceDNlIn0pO3JldHVybiBifSksZz1kLnV0aWwuZGF0YSgibGFzdFNlbGVjdGVkU21pbGV5IiksIlx1NTIxN1x1ODg2OCI9PT1kLnV0aWwuZ2V0T3B0aW9ucygic1NtaWxleVNlbGVjdE1ldGhvZCIpKXt2YXIgaD0iXHgzY3NlbGVjdFx4M2VceDNjb3B0aW9uXHgzZVx1N2Q5M1x1NTE3OFx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYVx4M2Mvb3B0aW9uXHgzZSI7Yy5lYWNoKGRhLGZ1bmN0aW9uKCl7aCs9Ilx4M2NvcHRpb25ceDNlIit0aGlzLmRlc2MrIlx4M2Mvb3B0aW9uXHgzZSJ9KTt2YXIgaD1oKyJceDNjL3NlbGVjdFx4M2UiLG09YyhoKS5jaGFuZ2UoZnVuY3Rpb24oKXtkLnV0aWwuZGF0YSgibGFzdFNlbGVjdGVkU21pbGV5IiwKdGhpcy5zZWxlY3RlZEluZGV4KTtsLmNoaWxkcmVuKCI6bGFzdCIpLmNoaWxkcmVuKCkuaGlkZSgpLmVxKHRoaXMuc2VsZWN0ZWRJbmRleCkuc2hvdygpfSkuYXBwZW5kVG8obC5jaGlsZHJlbigiOmZpcnN0IikuZW1wdHkoKSkuYWZ0ZXIoIjoiKTtudWxsIT1nJiYobVswXS5zZWxlY3RlZEluZGV4PWcsbS5jaGFuZ2UoKSl9ZWxzZXtkLnV0aWwuYWRkU3R5bGUoIiNhbi1zbWlsZXlzZWxlY3RvciB7IGxpc3Qtc3R5bGU6IG5vbmU7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgZm9udC1zaXplOiA4MCU7IH0iKTt2YXIgcT0nXHgzY3VsIGlkXHgzZCJhbi1zbWlsZXlzZWxlY3RvciJceDNlXHgzY2xpXHgzZVx4M2NhIGhyZWZceDNkImphdmFzY3JpcHQ6Ilx4M2VcdTdkOTNcdTUxNzhcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2FceDNjL2FceDNlXHgzYy9saVx4M2UnO2MuZWFjaChkYSxmdW5jdGlvbigpe3ErPSdceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZScrdGhpcy5kZXNjKwoiXHgzYy9hXHgzZVx4M2MvbGlceDNlIn0pO3ErPSJceDNjL3VsXHgzZSI7bT1jKHEpLmNsaWNrKGZ1bmN0aW9uKGIpe2I9YyhiLnRhcmdldCk7Yi5pcygiYSIpJiYoYj1iLnBhcmVudCgpLmluZGV4KCksZC51dGlsLmRhdGEoImxhc3RTZWxlY3RlZFNtaWxleSIsYiksbC5jaGlsZHJlbigiOmxhc3QiKS5jaGlsZHJlbigpLmhpZGUoKS5lcShiKS5zaG93KCkpfSkuYXBwZW5kVG8obC5jaGlsZHJlbigiOmZpcnN0IikuZW1wdHkoKSk7bnVsbCE9ZyYmbS5jaGlsZHJlbigpLmVxKGcpLmNoaWxkcmVuKCJhIikuY2xpY2soKX19KX19fSwiZTMzNmQzNzctYmVjMC00ZDg4LWI2ZjgtNTJlMTIyZjRkMWM5Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU4MWVhXHU4YTAyXHU2NTg3XHU1YjU3XHU2M2QyXHU1MTY1XHU2M2E3XHU0ZWY2IixwYWdlOnsyODg6ITB9LHR5cGU6NSxvbmNlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe3ZhciBiPSJceDNjb3B0aW9uXHgzZVx1ODFlYVx1OGEwMlx1NjU4N1x1NWI1N1x4M2Mvb3B0aW9uXHgzZSI7CmMuZWFjaChnLGZ1bmN0aW9uKGQpe2IrPWMuc3ByaW50ZignXHgzY29wdGlvbiB2YWx1ZVx4M2QiJXMiXHgzZSVzXHgzYy9vcHRpb25ceDNlJyxkLHRoaXNbMF0pfSk7Yis9J1x4M2NvcHRpb24gdmFsdWVceDNkImN1c3RvbWl6ZSJceDNlXHU4MWVhXHU4YTAyLi4uXHgzYy9vcHRpb25ceDNlJztsLmh0bWwoYil9aWYoYygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKS5sZW5ndGgpe3ZhciBnPWQudXRpbC5kYXRhKCJzbmlwcGV0cyIpfHxbWyJcdTViYjZcdTU5ZDBcdTZmNmVcdTY1ODciLCdcdThiMWJcdThkNzdcdTYyMTFcdTVjMzFcdTYyNmZcdTcwNmJcdTU1NjZcblx1NjIxMVx1NWJiNlx1NTlkMFx1NGUwMFx1OGRlZlx1OTBmZFx1NTcyOFx1NTkyYVx1NTNlNFx1NWVlM1x1NTgzNFx1NGUwMFx1OTU5M1x1NTQwZFx1NWU5N1x1NTA1YXNhbGVzXG5cdTk1OTNcdTVlOTdcdTY3MDlcdTU5N2RcdTU5MWFcdTY3MDlcdTkzMjJcdTRlYmFcdTU0MGNcdTU0MGRcdTRlYmFcdTVlNmJcdTg5NmZcblx1NTA1YVx1NGU4Nlx1NWY4OFx1NTkxYVx1NWU3NFx1ZmYwY1x1NWRmMlx1N2Q5M1x1NjYyZnNlbmlvclxuXHU1NDgxXHU1OTFhXHU1ZTc0XHU5ZWNlXHU5MGZkXHU1OTdkXHU0ZmZlXHU1ZmMzXHU2YTVmXHU1MDVhXHVmZjBjXHU3ZDkzXHU3NDA2XHU0ZWE2XHU1OTdkIGxpa2VcdTRmNjJcblx1NTZlMFx1NzBiYVx1NjUzNlx1NTE2NVx1NGUwZFx1OTMyZlx1NTNjOFx1OTZiMVx1NWI5YVx1ZmYwY1x1NWJiNlx1NTlkMFx1NTM5Zlx1NjcyY1x1OGFkN1x1NGY0Zlx1NTQwY1x1NjJjZFx1NjJkNlx1NTkxYVx1NWU3NFx1NjVlMmJmXHU3ZDUwXHU1YTVhXG5cdTU0ODFcdTU5MWFcdTVlNzRcdTllY2VcdTYyMTFcdTViYjZcdTU5ZDBcdTU5N2RcdTVjMTFcdTRmZmVcdTRlYmFcdTYyOTVcdThhMzRcblx1ODAwY1x1NGUxNFx1NTQwY1x1NTk3ZFx1NTkxYVx1NTkyN1x1NWJhMlx1NjVlMlx1OTVkY1x1NGZjMlx1OTBmZFx1NTUxNFx1OTMyZlxuXHU1MjRkXHU2MzkyXHU5NWRjXHU1ZmMzXHU3ODE0XHU1M2JiXHU5MDRlXHU2MjExXHU1YmI2XHU1OWQwXHU5NTkzXHU1ZTk3XHU1ZTZiXHU4OTZmXG5cdTRlMGRcdTkwNGVzZXJ2ZVx1NGY2Mlx1NjVlMlx1NGUwZFx1NjYyZlx1NjIxMVx1NWJiNlx1NTlkMFx1ZmYwY1x1NGY0Nlx1NGY2Mlx1NGUwMFx1OGNiN1x1NWMzMVx1OGNiN1x1NWRlNlx1NTk3ZFx1NTkxYVx1OTFjZVxuXHU5MDRlXHU1ZGU2XHU1MDBiXHU1ZTdlXHU2NjFmXHU2NzFmXHVmZjBjXHU0ZjYyXHU1M2M4XHU1MThkXHU1M2JiXHU5NTkzXHU1ZTk3XHU4ODRjXG5cdTRlMGFcdTZiMjFzZXJ2ZVx1Njc5Y1x1NTAwYkRheS1vZmYsIFx1NTQ4MVx1NjIxMVx1NWJiNlx1NTlkMFx1NWMzMVx1OTgwMlx1NGUwYXNlcnZlXHU0ZjYyXG5cdTk1OGJcdTk4MmRcdTVkZjJcdTdkOTNcdTU5N2RcdTY3MDlcdTc5YWVcdThjOGNcdTRlY2JcdTdkMzlkXHU2NWIwXHU4Y2E4XHU0ZmZlXHU0ZjYyLCBcdTRlZjJcdThhNzFcdTRmZmVcdTYyOThcdTk4MmRcdTRmNjJcblx1NGY2Mlx1NWMzMVx1NzEyMVx1NGU1Y1x1NTNjZFx1NjFjOVx1ZmYwY1x1NjcxYlx1NGUwMFx1NjcxYlx1NTNlNlx1NGUwMFx1NTgwNlx1NWJhMlxuXHU2NzljXHU1ODA2XHU1YmEyXHU0ZmMyXHU1OTI3XHU5Njc4XHU0ZWJhXHVmZjBjXHU0ZTA5XHU4MWYzXHU1NmRiXHU1MDBiXHVmZjBjXHU4YjFiXHU5MWNlXHU1OTdkXHU1OTI3XHU4MDcyXG5cdTk1ZGNcdTVjMGZcdTU5ZDBcdTVjMzFcdTU0MGNcdTYyMTFcdTViYjZcdTU5ZDBcdThiMWJcdThhNzFcdTUzZWZcdTU1MTRcdTUzZWZcdTRlZTVcdTk1ZGNcdTVkZTZcdTk1OTNcdTkyZWFcdTRlMDBcdTk2NjNcblx1N2I0OVx1NGY2Mlx1NjNjMFx1ODg2YlxuIFx1NjIxMVx1NWJiNlx1NTlkMFx1NTQwY1x1NjIxMVx1OGIxYlx1ZmYwY1x1NGY2Mlx1NTE2Y1x1NTNmOFx1NGUwMFx1NTQxMVx1NTUxNFx1NGZmZVx1NGY2Mlx1NTczMFx1NTQ4MVx1NTA1YVxuXHU5YTVhXHU1MDVhXHU1OGRlXHU1MDBiXHU5ODJkXHVmZjBjXHU5NjY0XHU5NzVlXHU3NzFmXHU0ZmMyXHU2NzA5XHU0ZTVjXHU1OTI3XHU0ZWJhXHU3MjY5XHVmZjBjXHU1OTdkXHU1OTFhXHU4YTE4XHU4MDA1XHU1OTdkXHU2ZGY3XHU0ZTgyXHU1MTQ4XHU1M2VmXHU0ZWU1XHU1NDgxXHU1MDVhXG5cdTRmNDZcdTRmNjJcdTg5OGJcdTUyMzBcdTk1ZGNcdTVjMGZcdTU5ZDBcdTllZDFcdTUzZTNcdTllZDFcdTk3NjJcdWZmMGNcdTkwZmRcdThiNThcdTUwNWFcdThhNzFcdTYyNTNcdTk2ZmJcdThhNzFcdTUzYmJcdTU1NGZcdTRlMDBcdTU1NGZcdTgwMDFcdTk1YzZcblx1ODAwMVx1OTVjNlx1Njg5N1x1NGZjMlx1OGE3MVx1NTUxNFx1NWY5N1x1NTU2Nlx1ZmYwY1x1ODFmM1x1NTkxYVx1NGZmZVx1NTkxYWRcdTYyOThcdTk4MmRcdTU5Nzlcblx1NTQ4MVx1OTVkY1x1NWMwZlx1NTlkMFx1NWMzMVx1NzY3Y1x1ODAwMVx1ODEzZVx1ZmYwY1x1OWIyN1x1NTIzMFx1NjIxMVx1NWJiNlx1NTlkMFx1NGUwMFx1OTc2Mlx1NWM0MVxuZFx1OGFhYVx1OGE3MVx1NTJjMVx1OTZlM1x1ODA3ZFx1ZmYwY1x1NTNjOFx1OGE3MVx1ODFlYVx1NWRmMVx1OGNiN1x1OTFjZVx1NjVlMlx1OTMyMlx1NTkxYVx1OTA0ZVx1NjIxMVx1NWJiNlx1NTlkMFx1NjQzNVx1NWU3ZVx1NWU3NFx1NjVlMlx1OTMyMlxuXHU2MjExXHU1YmI2XHU1OWQwXHU5MGZkXHU1NTE0XHU2NTYyXHU1Zjk3XHU3ZjZhXHU0ZjYyXHVmZjBjXHU0ZTAwXHU1NDczXHU5MDUzXHU2YjQ5XG5cdThkZGZcdTRmNGZcdTk1ZGNcdTVjMGZcdTU5ZDBcdTVjMzFcdThkNzBcdTVkZTZcdTRlYmFcdWZmMGNcdTViYjZcdTU5ZDBcdTVjMzFcdTU0MGNcdTgwMDFcdTk1YzZcdTUwOTlcdTY4NDhcblx1ODAwMVx1OTVjNlx1NzdhZFx1ODllM1x1NWRlNlx1NjBjNVx1NmNjMVx1NWMzMVx1NzEyMVx1NTE4ZFx1OGZmZFx1NTU0ZlxuXHU5MDRlXHU1ZGU2XHU1MTY5XHU2NWU1XHU0ZjYyXHU2M2E1XHU1MjMwXHU4MDAxXHU5NWM2XHU5NmZiXHU4YTcxXHU4YTcxXHU2NTM2XHU1MjMwY29tcGxhaW50IFxuXHU4YTcxXHU2NzA5XHU0ZWJhXHU2Mjk1XHU4YTM0XHU0ZjYyXHU2MTRiXHU1ZWE2XHU1NTE0XHU1OTdkXHVmZjBjXHU1NTE0XHU3NDA2XHU5ODY3XHU1YmEyXHU2MTFmXHU1M2Q3XG5cdTUxNmNcdTUzZjhwb2xpY3lcdTRlMDBcdTU0MTFcdTU1MTRcdThhNzFcdTRmZmVcdTRmNjJcdTU3MzBcdTc3ZTVcdTRmYzJcdTkwOGFcdTZiMjFcdTRlOGJcdTRlZjZcblx1NjIxMVx1NWJiNlx1NTlkMFx1NGYzMFx1OWVjZVx1NGYzMFx1NTNiYlx1OTBmZFx1NmRlOFx1NGZjMlx1NWY5N1x1NTkzMVx1OTA0ZVx1OTVkY1x1NWMwZlx1NTlkMFx1NGUwMFx1NGViYVxuXHU3ZTNkXHU0ZTRiXHU0ZmZlXHU4MDAxXHU5NWM2XHU4YTcxXHU1ZGU2XHU1MTY5XHU1M2U1XG5cdTUzYzhcdTkwNGVcdTVlN2VcdTY1ZTVcdWZmMGNcdTk1ZGNcdTVjMGZcdTU5ZDBcdTUzYzhcdTllY2Vcblx1OTAxOVx1NmIyMVx1NTQ4Y1x1NGVmNlx1ODk3Zlx1ODhkZFx1NTNjYlx1NGUwMFx1OWY0YVx1ZmYwY1x1NGY0Nlx1NTk3ZFx1NTcyOFx1NjIxMFx1NWU5N1x1OTBmZFx1NzEyMVx1NTE3Nlx1NGVkNlx1NWJhMlxuXHU2MjExXHU1YmI2XHU1OWQwXHU2MDE1XHU1M2M4XHU2MGY5XHU0ZThiXHVmZjBjXHU1M2ViXHU1ZGU2XHU1MDBianVuaW9yXHU5MDRlXHU1M2Jic2VydmVcdTRmNjJcblx1OWVkZVx1NzdlNVx1Njg5ZFx1ODAwMVx1ODk3Zlx1NTNjYlx1NGZjMlx1ODk4MVx1OWVkZVx1NzU2YVx1NjIxMVx1NWJiNlx1NTlkMHNlcnZlLlxuXHU2ODM5XHU0ZjRmXHU5NWRjXHU1YzBmXHU1OWQwXHU1YzMxXHU3M2E5XHU5MWNlXHVmZjBjXHU4YTY2XHU4ODZiXHVmZjBjXHU0ZjQ2XHU4YTcxZFx1ODg2Ylx1NGZmZVx1NTE3Nlx1NGVkNlx1NGViYVx1OGE2Nlx1OTA0ZVx1NmM2MVx1N2NkZlxuXHU4OTgxXHU5NThiXHU2NWIwXHU4ODZiXHU4YTY2XHVmZjBjXHU2MjExXHU1YmI2XHU1OWQwXHU5NmQ2XHU3MTM2XHU3N2U1XHU1MTZjXHU1M2Y4XHU1NTE0XHU0ZmZlXHU1NDgxXHU1MDVhXHVmZjBjXG5cdTRmNDZcdTYwMTVcdTVkZTZcdTRmNjJcdWZmMGNcdTU1MmZcdTY3MDlcdTcxNjdcdTUwNWFcblx1OWVkZVx1NzdlNVx1OGE2Nlx1NWRlNlx1NTE2OVx1NGUwOVx1NGVmNlx1ZmYwY1x1NGVmNlx1NGVmNlx1NGY2Mlx1OTBmZFx1ODk4MVx1NTQ4MVx1OGE2Nlx1NTNjOFx1NzEyMVx1OGE3MVx1ODk4MVxuXHU2MjExXHU1YmI2XHU1OWQwXHU3ZDQyXHU2NWJjXHU4YTcxXHU1NTE0XHU1OTdkXHU2MTBmXHU2MDFkXHVmZjBjXHU1MTc2XHU1YmU2XHU1NTE0XHU1M2VmXHU0ZWU1XHU1NDgxXHU1MDVhXG4oXHU2ODM5XHU2NzJjXHU2NjBlXHU3N2U1XHU1OTc5XHU3M2E5XHU5MWNlXHU1NTY2Li4uLi4pXG5cdTUzYzhcdTRmYzJcdTgxZjNcdTU5MWFcdTRmZmVcdTU5MWFkXHU2Mjk4XHU5ODJkXHU0ZjYyXG5cdThkZGZcdTRmNGZcdTRmNjJcdTRlZjZcdTg5N2ZcdTg4ZGRcdTUzY2JcdTVjMzFcdTliMjdcdTYyMTFcdTViYjZcdTU5ZDBcdThhNzEiXHU0ZmMyXHU1NGFhXHU4YTcxXHU2MjExXHU1NzMwXHU3MTIxXHU5MzIyXHU4Y2I3XHU0ZjYwXHU1NzMwZFx1OTFjZT8iXG5cdTYyMTFcdTViYjZcdTU5ZDBcdThhNzFcdTU1MTRcdTRmYzJcdWZmMGNcdTRmNDZcdTRmNjJcdTcxNjdcdTliMjdcblx1OWIyN1x1NWRlNlx1NTM0MVx1NWU3ZVx1NTIwNlx1OTQxOFxuZFx1NTQwY1x1NGU4Ylx1ODk4Ylx1NTQ4MVx1NWU2Ylx1NjI0Ylx1ZmYwY1x1NTNjOFx1NzE2N1x1OWIyN1xuXHU2NzAwXHU3ZDQyXHU2MjUzXHU0ZmZlXHU4MDAxXHU5NWM2XHU1MDk5XHU2ODQ4XG5cdTRlNGJcdTVmOGNcdTkwMjNcdTY1MzZcdTUxNjlcdTVjMDF3YXJuaW5nIGxldHRlclxuXHU2NWU5XHU1MTY5XHU2NWU1XHU2M2E1XHU1N2NiXHU1OTI3XHU0ZmUxXHU1YzAxXG5cdTVlNzRcdTVjM2VcdTRmZmVcdTRlYmFcdTcwOTJcdTVkZTYnXV0sCmw9YygiXHgzY3NlbGVjdFx4M2VceDNjL3NlbGVjdFx4M2UiKTtiKCk7dmFyIGg7bC5pbnNlcnRCZWZvcmUoYygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKS5wcmV2KCkpLmNoYW5nZShmdW5jdGlvbigpe2lmKCJjdXN0b21pemUiPT10aGlzLnZhbHVlKXtpZighaCl7ZC51dGlsLmFkZFN0eWxlKGMuc3ByaW50ZigiXHRcdFx0XHRcdCNhbi1zbmlwcGV0cyB7IHBhZGRpbmc6IDVweDsgfSBcdFx0XHRcdFx0I2FuLXNuaXBwZXRzIFx4M2UgdWwgeyBoZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogYXV0bzsgfSBcdFx0XHRcdFx0I2FuLXNuaXBwZXRzIFx4M2UgdWwgXHgzZSBsaSB7IHBhZGRpbmc6IDJweCAwOyB9IFx0XHRcdFx0XHQjYW4tc25pcHBldHMgXHgzZSB1bCBceDNlIGxpIFx4M2Ugc3BhbiB7IG1hcmdpbi1yaWdodDogNXB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMCA1cHg7IGJhY2tncm91bmQtY29sb3I6ICUoc01haW5IZWFkZXJCZ0NvbG9yKXM7IGNvbG9yOiAlKHNNYWluSGVhZGVyRm9udENvbG9yKXM7IGN1cnNvcjogcG9pbnRlcjsgfSBcdFx0XHRcdFx0I2FuLXNuaXBwZXRzIFx4M2UgZGl2IHsgZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tbGVmdDogMTBweDsgcGFkZGluZy1sZWZ0OiAxMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgZ3JheTsgfSBcdFx0XHRcdFx0I2FuLXNuaXBwZXRzIFx4M2UgZGl2IFx4M2UgdGV4dGFyZWEgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDMwMHB4OyB9IFx0XHRcdFx0XHQiLApkLnV0aWwuZ2V0T3B0aW9ucygpKSk7dmFyIGwscSxuLHA7aD1kLnNoYXJlZC5ib3goImFuLXNuaXBwZXRzIiwiXHU4MWVhXHU4YTAyXHU2NTg3XHU1YjU3Iiw3MDApLmFwcGVuZCgnXHgzY2Rpdlx4M2VceDNjaW5wdXQgL1x4M2VceDNjdGV4dGFyZWFceDNlXHgzYy90ZXh0YXJlYVx4M2VceDNjYnV0dG9uIHR5cGVceDNkImJ1dHRvbiJceDNlb2tceDNjL2J1dHRvblx4M2VceDNjYnV0dG9uIHR5cGVceDNkImJ1dHRvbiJceDNlY2FuY2VsXHgzYy9idXR0b25ceDNlXHgzYy9kaXZceDNlXHgzY3VsXHgzZVx4M2MvdWxceDNlJykuY2xpY2soZnVuY3Rpb24odyl7dz1jKHcudGFyZ2V0KTtpZih3LmlzKCJzcGFuLGJ1dHRvbiIpKXt2YXIgeT13LnRleHQoKTsiY2FuY2VsIj09eT9oLmNoaWxkcmVuKCJkaXYiKS5jc3MoIm9wYWNpdHkiLCIwLjUiKS5jaGlsZHJlbigpLmF0dHIoImRpc2FibGVkIiwhMCk6IkUiPT15fHwiKyI9PXk/KHE9IkUiPT09eSxsPXcucGFyZW50KCkuaW5kZXgoKSxuLnZhbCgiRSI9PQp5P2dbbF1bMF06IiIpLm5leHQoKS52YWwoIkUiPT15P2dbbF1bMV06IiIpLnBhcmVudCgpLmNzcygib3BhY2l0eSIsIjEiKS5jaGlsZHJlbigpLmF0dHIoImRpc2FibGVkIiwhMSkpOigib2siPT15P3E/KGdbbF09W24udmFsKCkscC52YWwoKV0scT0hMSk6Zy5wdXNoKFtuLnZhbCgpLHAudmFsKCldKToiWCI9PXkmJmNvbmZpcm0oIlx1NzhiYVx1NWI5YVx1NzlmYlx1OTY2ND8iKSYmZy5zcGxpY2Uody5wYXJlbnQoKS5pbmRleCgpLDEpLGQudXRpbC5kYXRhKCJzbmlwcGV0cyIsZyksdigpLGIoKSl9fSl9bj1oLmZpbmQoIlx4M2UgZGl2IFx4M2UgaW5wdXQiKTtwPW4ubmV4dCgpO3ZhciB2PWZ1bmN0aW9uKCl7dmFyIGI9IiI7Yy5lYWNoKGcsZnVuY3Rpb24oKXtiKz0iXHgzY2xpXHgzZVx4M2NzcGFuXHgzZVhceDNjL3NwYW5ceDNlXHgzY3NwYW5ceDNlRVx4M2Mvc3Bhblx4M2UiK3RoaXNbMF0rIlx4M2MvbGlceDNlIn0pO2IrPSJceDNjbGlceDNlXHgzY3NwYW5ceDNlK1x4M2Mvc3Bhblx4M2UuLi5ceDNjL2xpXHgzZSI7CmguY2hpbGRyZW4oInVsIikuaHRtbChiKS5uZXh0KCkuY3NzKCJvcGFjaXR5IiwiMC41IikuY2hpbGRyZW4oKS52YWwoIiIpLmF0dHIoImRpc2FibGVkIiwhMCl9O3YoKTtkLnNoYXJlZC5ncmF5KCEwLCJhbi1zbmlwcGV0cyIpfWVsc2Ugd2luZG93Lkluc2VydFRleHQoZ1t0aGlzLnZhbHVlXVsxXSwhMSk7dGhpcy5zZWxlY3RlZEluZGV4PTB9KX19fX19O2QubW9kWyJDb21wb25lbnQgUmVkZXNpZ25lciJdPXt2ZXI6Ik4vQSIsYXV0aG9yOiJcdTU0MTFcdTY1ZTUiLGZuOnsiOGJlMWFjMDYtMDMwYS00MmQ0LWE4ZjQtZjJiN2Y0ODgxMzAwIjp7ZGVzYzoiXHU2NTM5XHU4YjhhXHU1ZjE1XHU3NTI4XHU5OGE4XHU2ODNjIixwYWdlOnszMjohMH0sdHlwZTo4LG9wdGlvbnM6e3F1b3RlU3R5bGU6e2Rlc2M6Ilx1NWYxNVx1NzUyOFx1OThhOFx1NjgzYyIsdHlwZToic2VsZWN0IixjaG9pY2VzOlsiXHU5ODEwXHU4YTJkIiwiXHU1ZmE5XHU1M2U0IiwiXHU3M2ZlXHU0ZWUzIl0sZGVmYXVsdFZhbHVlOiJcdTk4MTBcdThhMmQifSwKcXVvdGVNYXNrTGV2ZWw6e2Rlc2M6Ilx1NWYxNVx1NzUyOFx1NWM0Zlx1ODUzZFx1NWM2NFx1N2QxYSIsdHlwZToidGV4dCIsZGVmYXVsdFZhbHVlOjEwfX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCIucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSArIGJyIHsgZGlzcGxheTogbm9uZTsgfSIpO3ZhciBiO3N3aXRjaCh0aGlzLnN0eWxlTm89Yy5pbkFycmF5KGQudXRpbC5nZXRPcHRpb25zKCJxdW90ZVN0eWxlIiksdGhpcy5vcHRpb25zLnF1b3RlU3R5bGUuY2hvaWNlcykpe2Nhc2UgMDpkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSB7IG1hcmdpbjogMCAwIDhweCAxcHg7IHBhZGRpbmc6IDAgMCA3cHggNDBweDsgfSBcdFx0XHRcdGJsb2NrcXVvdGUuYW4taGlkZGVucXVvdGUgeyBwYWRkaW5nLWxlZnQ6IDA7IH0gXHRcdFx0XHQuYW4taGlkZGVucXVvdGU6YmVmb3JlIHsgY29udGVudDogdXJsKCIrS1siYmFsbG9vbi0tcGx1cyJdKwoiKTsgfSBcdFx0XHRcdC5hbi1oaWRkZW5xdW90ZSBceDNlIGRpdiB7IGRpc3BsYXk6IG5vbmU7IH0gXHRcdFx0XHQiKTtiPWMoIlx4M2NpbWcgL1x4M2UiKS5ob3Zlcml6ZSgiLnJlcGxpZXJzX3JpZ2h0IGJsb2NrcXVvdGUiKS5iaW5kKHsibW91c2VvdmVyIG1vdXNlb3V0IjpmdW5jdGlvbihjKXt2YXIgZD1iLmRhdGEoImhvdmVyaXplIikualRhcmdldDtkLmNzcygib3V0bGluZSIsIm1vdXNlb3V0Ij09PWMudHlwZXx8ZC5oYXNDbGFzcygiYW4taGlkZGVucXVvdGUiKT8iMCI6IjFweCBkYXNoZWQgZ3JheSIpfSxlbnRlcnRhcmdldDpmdW5jdGlvbigpe2IuYXR0cigic3JjIixLW2IuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0Lmhhc0NsYXNzKCJhbi1oaWRkZW5xdW90ZSIpPyJiYWxsb29uLS1wbHVzIjoiYmFsbG9vbi0tbWludXMiXSl9fSk7YnJlYWs7Y2FzZSAxOmQudXRpbC5zdGFja1N0eWxlKCdcdFx0XHRcdC5hbi1xdW90ZXRvZ2dsZWJ1dHRvbiB7IG1hcmdpbjogLTE4cHggMCAwIC00cHg7IH0gXHRcdFx0XHQuYW4tcXVvdGV0b2dnbGVidXR0b24sIGJsb2NrcXVvdGU6YmVmb3JlIHsgY29sb3I6ICM5OTk7IH0gXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZTpiZWZvcmUgeyBjb250ZW50OiAiIjsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyB0b3AgMDsgbGVmdDogLTRweDsgbWFyZ2luLXRvcDogLTE4cHg7IH0gXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgdGQgXHgzZSBibG9ja3F1b3RlIHsgbWFyZ2luOiAxNXB4IDAgMTBweCAzcHg7IH0gXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOiAwIDAgMTBweCAwOyB9IFx0XHRcdFx0LnJlcGxpZXJzX3JpZ2h0IGJsb2NrcXVvdGUgXHgzZSBkaXYgeyBib3JkZXItbGVmdDogMnB4IHNvbGlkICM5OTk7IHBhZGRpbmctbGVmdDogNXB4OyB9IFx0XHRcdFx0YmxvY2txdW90ZS5hbi1oaWRkZW5xdW90ZTpiZWZvcmUgeyBjb250ZW50OiAiKyI7IH0gXHRcdFx0XHQuYW4taGlkZGVucXVvdGUgXHgzZSBkaXYgXHgzZSBibG9ja3F1b3RlIHsgZGlzcGxheTogbm9uZTsgfSBcdFx0XHRcdCcpOwpiPWMoJ1x4M2NzcGFuIGNsYXNzXHgzZCJhbi1xdW90ZXRvZ2dsZWJ1dHRvbiJceDNlXHgzYy9zcGFuXHgzZScpLmhvdmVyaXplKCJibG9ja3F1b3RlIix7ZmlsdGVyOiI6aGFzKGJsb2NrcXVvdGUpIn0pLmJpbmQoImVudGVydGFyZ2V0IixmdW5jdGlvbigpe2IudGV4dChiLmRhdGEoImhvdmVyaXplIikualRhcmdldC5oYXNDbGFzcygiYW4taGlkZGVucXVvdGUiKT8iKyI6Ii0tIil9KTticmVhaztjYXNlIDI6ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCdcdFx0XHRcdC5hbi1xdW90ZXRvZ2dsZWJ1dHRvbiB7IG1hcmdpbjogMnB4IDAgMCAtMTVweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gXHRcdFx0XHQuYW4tcXVvdGV0b2dnbGVidXR0b24sIGJsb2NrcXVvdGU6YmVmb3JlLCAuYW4taGlkZGVucXVvdGU6YWZ0ZXIgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAlKHNNYWluSGVhZGVyRm9udENvbG9yKXM7IH0gXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZTpiZWZvcmUgeyBjb250ZW50OiAiXHU1ZjE1XHU3NTI4OiI7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tYm90dG9tOiAycHg7IHBhZGRpbmctbGVmdDogM3B4OyBsaW5lLWhlaWdodDogMS4zOyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluSGVhZGVyQmdDb2xvcilzOyB9IFx0XHRcdFx0LnJlcGxpZXJzX3JpZ2h0IHRkIFx4M2UgYmxvY2txdW90ZSB7IGJvcmRlci1yaWdodC13aWR0aDogMXB4OyB9IFx0XHRcdFx0LnJlcGxpZXJzX3JpZ2h0IGJsb2NrcXVvdGUgeyBtYXJnaW46IDAgMCA1cHggMDsgYm9yZGVyOiAxcHggc29saWQgJShzTWFpbkJvcmRlckNvbG9yKXM7IGJvcmRlci1yaWdodC13aWR0aDogMDsgfSBcdFx0XHRcdC5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlIFx4M2UgZGl2IHsgcGFkZGluZzogMCAwIDVweCAycHg7IH0gXHRcdFx0XHQuYW4taGlkZGVucXVvdGUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0gXHRcdFx0XHQuYW4taGlkZGVucXVvdGU6YWZ0ZXIgeyBjb250ZW50OiAiXHVmZjBiIjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDFweDsgcmlnaHQ6IDNweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gXHRcdFx0XHQuYW4taGlkZGVucXVvdGUgXHgzZSBkaXYgXHgzZSBibG9ja3F1b3RlIHsgZGlzcGxheTogbm9uZTsgfSBcdFx0XHRcdCcsCmQudXRpbC5nZXRPcHRpb25zKCkpKSxiPWMoJ1x4M2NzcGFuIGNsYXNzXHgzZCJhbi1xdW90ZXRvZ2dsZWJ1dHRvbiJceDNlXHgzYy9zcGFuXHgzZScpLmhvdmVyaXplKCJibG9ja3F1b3RlIix7ZmlsdGVyOiI6aGFzKGJsb2NrcXVvdGUpIixhdXRvUG9zaXRpb246ITF9KS5iaW5kKCJlbnRlcnRhcmdldCIsZnVuY3Rpb24oKXt2YXIgYz1iLmRhdGEoImhvdmVyaXplIikualRhcmdldCxkPWMub2Zmc2V0KCk7Yi50ZXh0KGMuaGFzQ2xhc3MoImFuLWhpZGRlbnF1b3RlIik/Ilx1ZmYwYiI6Ilx1ZmYwZCIpLmNzcyh7dG9wOmQudG9wLGxlZnQ6ZC5sZWZ0K2Mud2lkdGgoKX0pfSl9Yi5jbGljayhmdW5jdGlvbigpe2IuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LnRvZ2dsZUNsYXNzKCJhbi1oaWRkZW5xdW90ZSIpfSl9LGluZmluaXRlOmZ1bmN0aW9uKGIpe3ZhciBnPWQudXRpbC5nZXRPcHRpb25zKCJxdW90ZU1hc2tMZXZlbCIpLSgwPT09dGhpcy5zdHlsZU5vPzE6Mik7MD5nfHxiLnJlcGxpZXMoKS5qQ29udGVudHMuZmluZCgwPT09CnRoaXMuc3R5bGVObz8iYmxvY2txdW90ZSI6ImJsb2NrcXVvdGU6aGFzKGJsb2NrcXVvdGUpIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcykucGFyZW50c1VudGlsKCJ0ZCIsImJsb2NrcXVvdGUiKS5sZW5ndGg9PT1nfSkuYWRkQ2xhc3MoImFuLWhpZGRlbnF1b3RlIil9fSwiY2IxOTE3ZjktNDA1My00MGIxLTg3MGQtZTBlMmM2YTkwYjM5Ijp7ZGVzYzoiXHU2NTM5XHU4YjhhXHU1ZmViXHU5MDFmXHU1NmRlXHU4OTg2XHU3Njg0XHU5OGE4XHU2ODNjIixwYWdlOnszMjohMH0sdHlwZTo4LG9wdGlvbnM6e3NRUkhpZGVNZXRob2Q6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NjViOVx1NWYwZiIsdHlwZToic2VsZWN0IixjaG9pY2VzOlsiXHU1YjhjXHU1MTY4XHU5NmIxXHU4NWNmIiwiXHU5NmIxXHU4NWNmXHU2NWJjXHU0ZTJkXHU0ZTBiXHU2NWI5LCBcdTYxZjhcdTZkNmVcdTUyMDdcdTYzZGJcdTk4NmZcdTc5M2EiLCJcdTk2YjFcdTg1Y2ZcdTY1YmNcdTRlMmRcdTRlMGJcdTY1YjksIFx1OWVkZVx1NjRjYVx1NTIwN1x1NjNkYlx1OTg2Zlx1NzkzYSIsCiJcdTk2YjFcdTg1Y2ZcdTY1YmNcdTUzZjNcdTRlMGJcdTg5ZDIiXSxkZWZhdWx0VmFsdWU6Ilx1OTZiMVx1ODVjZlx1NjViY1x1NGUyZFx1NGUwYlx1NjViOSwgXHU5ZWRlXHU2NGNhXHU1MjA3XHU2M2RiXHU5ODZmXHU3OTNhIn0sblFST3BhY2l0eTp7ZGVzYzoiXHU5MDBmXHU2NjBlXHU1ZWE2ICgxMCBceDNkIFx1NzlmYlx1OTY2NFx1NTM0YVx1OTAwZlx1NjYwZSkiLHR5cGU6InNlbGVjdCIsZGVmYXVsdFZhbHVlOjEwLGNob2ljZXM6WzEwLDksOCw3LDYsNSw0LDMsMiwxLDBdfX0sb25jZTpmdW5jdGlvbihiKXtmdW5jdGlvbiBnKGIsZCl7ZnVuY3Rpb24gZygpe2guY3NzKCJ6LWluZGV4IixiPzQ6Mik7cS5lbXB0eSgpO20udG9nZ2xlKGIpO2ImJih3aW5kb3cubW92ZUVuZCgpLG4uc2Nyb2xsVG9wKDk5OTk5KSl9dmFyIEQ9bS5pcygiOnZpc2libGUiKTtpZih2b2lkIDA9PT1iKWI9IUQ7ZWxzZSBpZihEPT09YilyZXR1cm47Mz09PWw/Yj9oLmFuaW1hdGUoe3JpZ2h0Ok1hdGguY2VpbCgoYy53aW5XaWR0aCgpLQpwKS8yKX0sInNsb3ciLGcpOihnKCksaC5hbmltYXRlKHtyaWdodDp2fSwic2xvdyIpKTpnKCl9aWYoZC51dGlsLmlzTG9nZ2VkSW4oKSl7dmFyIGw9Yy5pbkFycmF5KGQudXRpbC5nZXRPcHRpb25zKCJzUVJIaWRlTWV0aG9kIiksdGhpcy5vcHRpb25zLnNRUkhpZGVNZXRob2QuY2hvaWNlcyksaD1jKCIjbmV3bWVzc2FnZSIpO2I9aC5maW5kKCJ0ZDplcSgxKSIpLmF0dHIoImlkIiwiYW4tcXItaGVhZGVyIik7dmFyIG09KDA9PT1sP2g6aC5maW5kKCJ0cjplcSgyKSIpKS5oaWRlKCkscT1jKCIjcHJldmlld0FyZWEiKSxuPWMoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX21lc3NhZ2V0ZXh0IikscD05NTQsdj01MC1wO2IuY2hpbGRyZW4oKVswXS5uZXh0U2libGluZy5ub2RlVmFsdWU9Ilx1NWZlYlx1OTAxZlx1NTZkZVx1ODk4NiI7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCJcdFx0I25ld21lc3NhZ2UgeyAlczsgei1pbmRleDogMjsgcG9zaXRpb246IGZpeGVkOyB3aWR0aDogJXNweDsgYm90dG9tOiAwcHg7IHJpZ2h0OiAlczsgbWF4LWhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGF1dG87IH0gXHRcdCNhbi1xci1oZWFkZXIgeyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtYWxpZ246IGNlbnRlcjsgfSBcdFx0I3ByZXZpZXdBcmVhIHsgZGlzcGxheTogYmxvY2s7IG92ZXJmbG93OiBhdXRvOyB3aWR0aDogJXNweDsgfSBcdFx0I3ByZXZpZXdBcmVhIGltZ1tvbmxvYWRdIHsgbWF4LXdpZHRoOiAzMDBweDsgfSBcdFx0IiwKZC51dGlsLmdldE9wYWNpdHlTdHIoZC51dGlsLmdldE9wdGlvbnMoIm5RUk9wYWNpdHkiKSkscCwzPT09bD92KyJweCI6IjUwJSIscC0xNDkpKTszIT09bCYmZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCIjbmV3bWVzc2FnZSB7IG1hcmdpbi1yaWdodDogJXNweDsgfSIsLXAvMi05KSk7MT09PWw/aC5iaW5kKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLGZ1bmN0aW9uKGIpe2coIm1vdXNlZW50ZXIiPT09Yi50eXBlKX0pOmIuY2xpY2soZnVuY3Rpb24oKXtnKCl9KTtjKCIjYXNwbmV0Rm9ybSIpLnN1Ym1pdChmdW5jdGlvbigpe2coITEpfSk7d2luZG93Lk9uUXVvdGVTdWNjZWVkZWQ9ZnVuY3Rpb24oYil7bi52YWwodW5lc2NhcGUoYikrIlxuIik7ZyghMCl9O3dpbmRvdy5kb1ByZXZpZXc9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKCl7YigpO3EuY3NzKCJtYXgtaGVpZ2h0IixjLndpbkhlaWdodCgpLWguaGVpZ2h0KCktcS5oZWlnaHQoKSl9fSh3aW5kb3cuZG9QcmV2aWV3KX19fX19OwpkLm1vZFsiU3R5bGUgRWRpdG9yIl09e3ZlcjoiTi9BIixhdXRob3I6Ilx1NTQxMVx1NjVlNSIsZm46eyI4OTYxNWE3OC0yMWI3LTQ2YmQtYWViMS0xMmU3ZjAzMWU4OTYiOntkZXNjOiJcdTVmMzdcdTUyMzZcdTY2ZjRcdTY1MzlcdTUxNjhcdTVjNDBcdTViNTdcdTlhZDQiLHBhZ2U6ezY1NTM0OiExfSx0eXBlOjIsb3B0aW9uczp7c01haW5Gb250RmFtaWx5OntkZXNjOiJcdTViNTdcdTlhZDRcdTU0MGRcdTdhMzEiLGRlZmF1bHRWYWx1ZToiU2ltU3VuIix0eXBlOiJ0ZXh0In19LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoIiNhc3BuZXRGb3JtIFx4M2UgZGl2ICosICNhbiB7IGZvbnQtZmFtaWx5OiAlczsgfSIsZC51dGlsLmdldE9wdGlvbnMoInNNYWluRm9udEZhbWlseSIpKSl9fSwiZWRhMmJmMDgtYzlkOC00NWVkLTlmOTctMTkzNmJlOTNlMzJkIjp7ZGVzYzoiXHU1ZjM3XHU1MjM2XHU2NmY0XHU2NTM5XHU1MTY4XHU1YzQwXHU1YjU3XHU5YWQ0XHU1OTI3XHU1YzBmIiwKcGFnZTp7NjU1MzQ6ITF9LHR5cGU6MixvcHRpb25zOntzTWFpbkZvbnRTaXplOntkZXNjOiJcdTViNTdcdTlhZDRcdTU5MjdcdTVjMGYiLGRlZmF1bHRWYWx1ZToiMTYiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZigiYm9keSwgdGQsIHAgeyBmb250LXNpemU6ICVzcHg7IH0iLGQudXRpbC5nZXRPcHRpb25zKCJzTWFpbkZvbnRTaXplIikpKX19LCJjYWQ2ZDA1OC1mOTk5LTQ2MGQtYWMyOS00MDc0ZjMzZjQ2ZmIiOntkZXNjOiJcdThhMmRcdTViOWFcdTkwMjNcdTdkNTBcdTZhMjNcdTVmMGYiLHBhZ2U6ezY1NTM0OiExfSx0eXBlOjIsb3B0aW9uczp7c01haW5MaW5rRm9udENvbG9yOntkZXNjOiJcdTY2NmVcdTkwMWFcdTkwMjNcdTdkNTBcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzEwNjZkMiIsdHlwZToidGV4dCJ9LHNNYWluVmlzaXRlZENvbG9yOntkZXNjOiJcdTVkZjJcdThhMmFcdTU1NGZcdTkwMjNcdTdkNTBcdTk4NGZcdTgyNzIiLApkZWZhdWx0VmFsdWU6IiM4MDAwODAiLHR5cGU6InRleHQifSxzTWFpbkhvdmVyQ29sb3I6e2Rlc2M6Ilx1OTAyM1x1N2Q1MFx1NjFmOFx1NmQ2ZVx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIiLHR5cGU6InRleHQifSxiUmVtb3ZlTGlua1VuZGVybGluZTp7ZGVzYzoiXHU3OWZiXHU5NjY0XHU5MDIzXHU3ZDUwXHU1ZTk1XHU3ZGRhIixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifX0sb25jZTpmdW5jdGlvbigpe3ZhciBiPWQudXRpbC5nZXRPcHRpb25zKCJiUmVtb3ZlTGlua1VuZGVybGluZSIpPyd0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0gYVtocmVmXlx4M2QiL2Jsb2cvYmxvZy5hc3B4Il0gXHgzZSBzcGFuIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7IH0gLnJlcGxpZXJzX3JpZ2h0IGEgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfSc6In0iO2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZigiXHRcdGJvZHkgXHgzZSBmb3JtIGEsICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX01pZGRsZUFkU3BhY2UxIGEgeyBjb2xvcjogJShzTWFpbkxpbmtGb250Q29sb3IpczsgIisKYisnIFx0XHRib2R5IFx4M2UgZm9ybSBhW2hyZWYqXHgzZCJ2aWV3LmFzcHgiXTp2aXNpdGVkLCAucmVwbGllcnNfcmlnaHQgYTp2aXNpdGVkIHsgY29sb3I6ICUoc01haW5WaXNpdGVkQ29sb3IpczsgfSBcdFx0Ym9keSBceDNlIGZvcm0gYVtocmVmXTpob3ZlciB7IGNvbG9yOiAlKHNNYWluSG92ZXJDb2xvcilzOyB9IFx0XHQnLGQudXRpbC5nZXRPcHRpb25zKCkpKX19LCI3NTc0NTgyYi0yZmVhLTQwNzktOGRmYi03YWM0ZTU1ODdlY2IiOntkZXNjOiJcdTY1MzlcdThiOGFcdThhZDZcdTU4YzdcdTZhMjNcdTVmMGYiLHBhZ2U6ezY1NTM0OiExfSx0eXBlOjIsb3B0aW9uczp7c0xvZ29CZ0ltYWdlOntkZXNjOiJcdTlhZDhcdTc2N2JMb2dvXHU1NzE2XHU3MjQ3IixkZWZhdWx0VmFsdWU6Ii9pbWFnZXMvaW5kZXhfaW1hZ2VzL2xvZ28uanBnIix0eXBlOiJ0ZXh0In0sc01haW5CZ0ltYWdlOntkZXNjOiJcdTRlM2JcdTg4NjhcdTY4M2NcdTgwY2NcdTY2NmZcdTU3MTZcdTcyNDciLGRlZmF1bHRWYWx1ZToiL2ltYWdlcy9pbmRleF9pbWFnZXMvYmdfbWFpbnRvcC5qcGciLAp0eXBlOiJ0ZXh0In0sc1JlZFRpdGxlRm9udENvbG9yOntkZXNjOiJcdTdkMDVcdTRlYmFcdTY5OWNcdTZhMTlcdTk4NGNcdTViNTdcdTlhZDRcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiI0ZGRkZGRiIsdHlwZToidGV4dCJ9LHNSZWRUaXRsZUJnQ29sb3I6e2Rlc2M6Ilx1N2QwNVx1NGViYVx1Njk5Y1x1NmExOVx1OTg0Y1x1ODBjY1x1NjY2Zlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjQ0MyMzMxIix0eXBlOiJ0ZXh0In0sc1JlZEhlYWRlckZvbnRDb2xvcjp7ZGVzYzoiXHU3ZDA1XHU0ZWJhXHU2OTljXHU3YjJjXHU0ZTAwXHU1MjE3XHU1YjU3XHU5YWQ0XHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiMwMDMzNjYiLHR5cGU6InRleHQifSxzUmVkSGVhZGVyQmdDb2xvcjp7ZGVzYzoiXHU3ZDA1XHU0ZWJhXHU2OTljXHU3YjJjXHU0ZTAwXHU1MjE3XHU4MGNjXHU2NjZmXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNGRjU1NjAiLHR5cGU6InRleHQifSxzUmVkQ29udGVudEZvbnRDb2xvcjp7ZGVzYzoiXHU3ZDA1XHU0ZWJhXHU2OTljXHU1MTY3XHU1YmI5XHU1YjU3XHU5YWQ0XHU5ODRmXHU4MjcyIiwKZGVmYXVsdFZhbHVlOiIjMDAwMDAwIix0eXBlOiJ0ZXh0In0sc0JsdWVCYXJGb250Q29sb3I6e2Rlc2M6Ilx1ODVjZFx1ODI3Mlx1NmE2Ylx1Njg5ZFx1NWI1N1x1OWFkNFx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjRkZGRkZGIix0eXBlOiJ0ZXh0In0sc0JsdWVCYXJCZ0NvbG9yOntkZXNjOiJcdTg1Y2RcdTgyNzJcdTZhNmJcdTY4OWRcdTgwY2NcdTY2NmZcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzZFQTBDNCIsdHlwZToidGV4dCJ9LHNCbHVlQmFyQmdJbWFnZTp7ZGVzYzoiXHU4NWNkXHU4MjcyXHU2YTZiXHU2ODlkXHU4MGNjXHU2NjZmXHU1NzE2XHU3MjQ3IixkZWZhdWx0VmFsdWU6Ii9pbWFnZXMvbGVmdF9tZW51L3AucG5nIix0eXBlOiJ0ZXh0In0sc0JsdWVTZWNCZ0NvbG9yOntkZXNjOiJcdTlhZDhcdTc2N2JcdTUxNmNcdTU0NGFcdTUxNjdcdTkwZThcdTZhNmJcdTY4OWRcdTgwY2NcdTY2NmZcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiI0NDRERFQSIsCnR5cGU6InRleHQifSxzSGlnaGxpZ2h0QmdDb2xvcjp7ZGVzYzoiXHU5YWQ4XHU0ZWFlXHU4MGNjXHU2NjZmXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNFOUVDNkMiLHR5cGU6InRleHQifSxzVGltZUZvbnRDb2xvcjp7ZGVzYzoiXHU2NjQyXHU5NTkzXHU1YjU3XHU5YWQ0XHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiM4MDAwMDAiLHR5cGU6InRleHQifSxzTWFsZUZvbnRDb2xvcjp7ZGVzYzoiXHU3NTM3XHU3NTI4XHU2MjM2XHU5MDIzXHU3ZDUwXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiMwMDY2RkYiLHR5cGU6InRleHQifSxzRmVtYWxlRm9udENvbG9yOntkZXNjOiJcdTU5NzNcdTc1MjhcdTYyMzZcdTkwMjNcdTdkNTBcdTViNTdcdTlhZDRcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiI0ZGMDA2NiIsdHlwZToidGV4dCJ9LHNRdW90ZUZvbnRDb2xvcjp7ZGVzYzoiXHU1ZjE1XHU3NTI4XHU1YjU3XHU5YWQ0XHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiMwMDAwQTAiLAp0eXBlOiJ0ZXh0In0sc0Zvb3RlckJnQ29sb3I6e2Rlc2M6Ilx1OTgwMVx1ODE3M1x1NmEyYVx1Njg5ZFx1ODBjY1x1NjY2Zlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjRkZDQzAwIix0eXBlOiJ0ZXh0In19LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoJyBcdFx0LyogR2xvYmFsIHN0dWZmICovXHRcdGJvZHksIHRleHRhcmVhLCBpbnB1dCwgc2VsZWN0IHsgYmFja2dyb3VuZC1jb2xvcjogJShzTWFpbkJnQ29sb3IpczsgfSBcdFx0dGV4dGFyZWEsIGlucHV0LCBzZWxlY3QgeyBib3JkZXI6IDJweCBzb2xpZCAlKHNNYWluQm9yZGVyQ29sb3IpczsgfSBcdFx0Ym9keSwgcCwgdGQsIHRleHRhcmVhLCBpbnB1dCwgc2VsZWN0LCAuYWRkdGhpc190b29sYm94IFx4M2UgYSwgLmFkZHRoaXNfdG9vbGJveCBceDNlIHNwYW4sIC5ocmVmX3R4dDEgeyBjb2xvcjogJShzTWFpbkZvbnRDb2xvcilzOyB9IFx0XHQqW3N0eWxlKlx4M2QiI0VBREVCOCJdIHsgYmFja2dyb3VuZC1jb2xvcjogJShzU2VjQmdDb2xvcilzOyB9IFx0XHQvKiBtYWluIGJvcmRlciAqL1x0XHRkaXZbc3R5bGUqXHgzZCIwLCAwLCAwIl0sIGRpdltzdHlsZSpceDNkIjAwMDAwMCJdLCAuRGl2TWFya1RocmVhZCwgLnJlcGxpZXJzX2hlYWRlciwgLnJlcGxpZXJzX2xlZnQsIC5yZXBsaWVycywgLnJlcGxpZXJzIHRkLCAuVG9waWNfRm9ydW1JbmZvUGFuZWwgdGFibGUsIC5Ub3BpY19Gb3J1bUluZm9QYW5lbCB0aCB7IGJvcmRlci1jb2xvcjogJShzTWFpbkJvcmRlckNvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0I2FzcG5ldEZvcm0gdGFibGVbY2VsbHNwYWNpbmdceDNkIjEiXVtjZWxscGFkZGluZ1x4M2QiMiJdLCAjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9QTU1zZ1RhYmxlLCAjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9RdWlja1JlcGx5VGFibGUsICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX1F1aWNrUmVwbHlMb2dpblRhYmxlIHsgYmFja2dyb3VuZC1jb2xvcjogJShzTWFpbkJvcmRlckNvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0KltzdHlsZSpceDNkIjEyOCwgMTI4LCAxMjgiXSwgKltzdHlsZSpceDNkIjgwODA4MCJdIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgfSBcdFx0Lyogc2VjIGJvcmRlciAqL1x0XHQubWFpbl90YWJsZTEgeyBib3JkZXItY29sb3I6ICUoc1NlY0JvcmRlckNvbG9yKXM7IH0gXHRcdC8qIG5lYXJseS13aGl0ZSBiYWNrZ3JvdW5kcyAqL1x0XHQqW3N0eWxlKlx4M2QicmdiKDIzIl0sICpbc3R5bGUqXHgzZCJyZ2IoMjQiXSwgKltzdHlsZSpceDNkIiNFIl0sICpbc3R5bGUqXHgzZCIjRiJdLCAqW3N0eWxlKlx4M2QiI2UiXSwgKltzdHlsZSpceDNkIiNmIl0sIC5Ub3BpY19Gb3J1bUluZm9QYW5lbCB0YWJsZSB0ZCB7IGJhY2tncm91bmQtY29sb3I6ICUoc1NlY0JnQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQvKiBQTSBCb3ggXHgyNiB3aGl0ZSB0YWJsZSBjZWxscyAqL1x0XHQuRGl2TWFya1RocmVhZCwgLkxpc3RQTVRleHQsICpbc3R5bGUqXHgzZCIyNTUsIDI1NSwgMjU1Il0sICpbc3R5bGUqXHgzZCIjRkZGRkZGIl0sICpbc3R5bGUqXHgzZCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSJdLCAqW3N0eWxlKlx4M2QiQkFDS0dST1VORC1DT0xPUjogd2hpdGUiXSwgKltzdHlsZSpceDNkIkJBQ0tHUk9VTkQtQ09MT1I6V2hpdGUiXSwgKltzdHlsZSpceDNkImJhY2tncm91bmQtY29sb3I6V2hpdGUiXSwgKltiZ2NvbG9yXHgzZCIjZjhmOGY4Il0geyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluQmdDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIGhlYWRlcnMgKi9cdFx0KltzdHlsZSpceDNkIiM2ZWEwYzMiXSwgLmJsdWVfYmcsIC5yZXBsaWVyc19oZWFkZXIsICpbc3R5bGUqXHgzZCI1MSwgMTAyLCAxNTMiXSwgKltzdHlsZSpceDNkIiMzMzY2OTkiXSwgLlRvcGljX0ZvcnVtSW5mb1BhbmVsIHRhYmxlIHRoLCAuVG9waWNfTGlzdFBhbmVsIHRhYmxlIHRoIHsgY29sb3I6ICUoc01haW5IZWFkZXJGb250Q29sb3IpcyAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluSGVhZGVyQmdDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIHVuZGVyIGxvZ28gbGlua3MsIGZvb3RlciB0ZXh0LCB1c2VybmFtZSBsaW5rcywgYm9va21hcmtiYXIgKi9cdFx0LmVuY29kZV9saW5rLCAudHh0XzExcHRfMUEzNDQ4LCAqW3N0eWxlKlx4M2QiY29sb3I6IGJsYWNrIl0sICpbc3R5bGUqXHgzZCJDT0xPUjogYmxhY2siXSwgKltzdHlsZSpceDNkImNvbG9yOkJsYWNrIl0sICpbc3R5bGUqXHgzZCJDT0xPUjpCbGFjayJdLCAuaGtnX2JvdHRvbWJhcl9saW5rIHsgY29sb3I6ICUoc01haW5Gb250Q29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQvKiBub24tdHJhbnNwYXJlbnQgaW1hZ2VzICovXHRcdGJvZHksIC5saWdodGJyb3duX2JnIHsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgfSBcdFx0LlRvcE1lbnVQYW5lbCwgLmJnX3RvcCB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCglKHNUb3BCZ0ltYWdlKXMpOyB9IFx0XHQuUGFnZU1pZGRsZUJveCwgLmJnX21haW4geyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJShzTWFpbkJnSW1hZ2Upcyk7IH0gXHRcdC8qIG1haW4gbG9nbyAqL1x0XHQjY3RsMDBfVG9wQmFySG9tZUxpbmsgeyBkaXNwbGF5OiBibG9jazsgYmFja2dyb3VuZDogdXJsKCUoc0xvZ29CZ0ltYWdlKXMpIG5vLXJlcGVhdDsgfSBcdFx0I2N0bDAwX1RvcEJhckhvbWVMaW5rIGltZyB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfSBcdFx0LyogdGhpbiBiYXJzIGljb24gKi9cdFx0LkRpdkJveFRpdGxlLCAuUHJvZmlsZUJveFRpdGxlOmZpcnN0LWNoaWxkLCAuRGl2UmVzaXphYmxlQm94VGl0bGU6Zmlyc3QtY2hpbGQsIC50aXRsZTpmaXJzdC1jaGlsZCwgKltiZ2NvbG9yXHgzZCIjNmVhMGM0Il06Zmlyc3QtY2hpbGQsIC5yZWRob3R0aXRsZTpmaXJzdC1jaGlsZCB7IGJhY2tncm91bmQ6IHVybCglKHNCbHVlQmFyQmdJbWFnZSlzKSBuby1yZXBlYXQ7IH0gXHRcdCpbc3JjKlx4M2QiL3AuanBnIl0sICpbc3JjKlx4M2QiL3JlZGhvdHAuanBnIl0geyB2aXNpYmlsaXR5OiBoaWRkZW47IH0gXHRcdC8qIGJsdWUgYmFycyAsIHJlZCBiYXJzLCBhbmQgbWFpbiBmb3J1bSBwYWdlIGJhcnMgKi9cdFx0LkRpdkJveFRpdGxlLCAuUHJvZmlsZUJveFRpdGxlLCAuRGl2UmVzaXphYmxlQm94VGl0bGUsIC50aXRsZSwgKltiZ2NvbG9yXHgzZCIjNmVhMGM0Il0sICpbY29sc3Bhblx4M2QiNiJdIHsgYmFja2dyb3VuZC1jb2xvcjogJShzQmx1ZUJhckJnQ29sb3IpcyAhaW1wb3J0YW50OyBjb2xvcjogJShzQmx1ZUJhckZvbnRDb2xvcilzOyB9IFx0XHQucmVkaG90dGl0bGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNSZWRUaXRsZUJnQ29sb3IpczsgY29sb3I6ICUoc1JlZFRpdGxlRm9udENvbG9yKXM7IH0gXHRcdC8qIGhvdCBwZW9wbGUgKi9cdFx0dGFibGVbc3R5bGUqXHgzZCIyNTUsIDg1LCA5NiJdLCB0cltzdHlsZSpceDNkIjI1NSwgODUsIDk2Il0sIHRhYmxlW3N0eWxlKlx4M2QiI2ZmNTU2MCJdLCB0cltzdHlsZSpceDNkIiNmZjU1NjAiXSB7IGJhY2tncm91bmQtY29sb3I6ICUoc1JlZEhlYWRlckJnQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHR0ZFtzdHlsZSpceDNkIjI1NSwgODUsIDk2Il0sIHRkW3N0eWxlKlx4M2QiI2ZmNTU2MCJdIHsgYm9yZGVyLWNvbG9yOiAlKHNSZWRIZWFkZXJCZ0NvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0KltzdHlsZSpceDNkIjAsIDUxLCAxMDIiXSwgKltzdHlsZSpceDNkIiMwMDMzNjYiXSB7IGNvbG9yOiAlKHNSZWRIZWFkZXJGb250Q29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQucmVkaG90X3RleHQsIGEucmVkaG90X2xpbmsgeyBjb2xvcjogJShzUmVkQ29udGVudEZvbnRDb2xvcilzOyB9IFx0XHQvKiBob3Qgc2VhcmNoICovXHRcdC5IaXRTZWFyY2hUZXh0IHsgY29sb3I6ICUoc01haW5IZWFkZXJGb250Q29sb3IpczsgfSBcdFx0YS5oaXRzZWFyY2hfbGluayB7IGNvbG9yOiAlKHNNYWluRm9udENvbG9yKXM7IH0gXHRcdC8qIGFubm91Y2VtZW50cywgcHJvZmlsZXBhZ2UgdGFicyAqL1x0XHQuRGl2Qm94RGV0YWlscywgLkRpdlJlc2l6YWJsZUJveERldGFpbHMsIC5Qcm9maWxlQm94RGV0YWlscyB7IGJvcmRlci1jb2xvcjogJShzQmx1ZVNlY0JnQ29sb3IpczsgfSBcdFx0KltzdHlsZSpceDNkImJhY2tncm91bmQtY29sb3I6ICNDQ0RERUEiXSwgKltzdHlsZSpceDNkIkJBQ0tHUk9VTkQtQ09MT1I6ICNDQ0RERUEiXSwgKltiZ2NvbG9yXHgzZCIjY2NkZGVhIl0sIC5hamF4X190YWJfdGFiLCAjYWR2YXJlYSB0cjpmaXJzdC1jaGlsZCArIHRyIHRkIHsgYmFja2dyb3VuZC1jb2xvcjogJShzQmx1ZVNlY0JnQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHRbY2xhc3NeXHgzZCJwX190YWJfeHAiXSAuYWpheF9fdGFiX3RhYiB7IGNvbG9yOiAlKHNNYWluRm9udENvbG9yKXM7IH0gXHRcdFtjbGFzc15ceDNkInBfX3RhYl94cCJdIC5hamF4X190YWJfYWN0aXZlIC5hamF4X190YWJfdGFiLCBbY2xhc3NeXHgzZCJwX190YWJfeHAiXSAuYWpheF9fdGFiX2hvdmVyIC5hamF4X190YWJfdGFiIHsgY29sb3I6ICUoc01haW5Ib3ZlckNvbG9yKXM7IH0gXHRcdC8qIGhpZ2h0bGlnaHQgYmcgKi9cdFx0KltzdHlsZSpceDNkIjIzMywgMjM2LCAxMDgiXSwgKltzdHlsZSpceDNkIiNFOUVDNkMiXSB7IGJhY2tncm91bmQtY29sb3I6ICUoc0hpZ2hsaWdodEJnQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQvKiB0aW1lIHRleHQgKi9cdFx0KltzdHlsZSpceDNkIjEyOCwgMCwgMCJdLCAqW3N0eWxlKlx4M2QiIzgwMDAwMCJdLCAqW3N0eWxlKlx4M2QibWFyb29uIl0geyBjb2xvcjogJShzVGltZUZvbnRDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIG1hbGUgbmFtZSBsaW5rICovXHRcdCpbc3R5bGUqXHgzZCIwLCAxMDIsIDI1NSJdLCAqW3N0eWxlKlx4M2QiIzAwNjZmZiJdLCAqW3N0eWxlKlx4M2QiIzAwNjZGRiJdLCAqW2NvbG9yXHgzZCJibHVlIl0geyBjb2xvcjogJShzTWFsZUZvbnRDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIGZlbWFsZSBuYW1lIGxpbmsgKi9cdFx0KltzdHlsZSpceDNkIjI1NSwgMCwgMTAyIl0sICpbc3R5bGUqXHgzZCIjZmYwMDY2Il0sICpbc3R5bGUqXHgzZCIjRkYwMDY2Il0sICpbY29sb3JceDNkInJlZCJdIHsgY29sb3I6ICUoc0ZlbWFsZUZvbnRDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIHF1b3RlcyAqL1x0XHRibG9ja3F1b3RlIFx4M2UgZGl2W3N0eWxlKlx4M2QiY29sb3IiXSwgYmxvY2txdW90ZSBceDNlIGRpdltzdHlsZSpceDNkIkNPTE9SIl0geyBjb2xvcjogJShzUXVvdGVGb250Q29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQvKiBwcm9maWxlcGFnZSBhdmF0ZXIgKi9cdFx0dGFibGVbd2lkdGhceDNkIjE1MCJdIHsgYm9yZGVyLWNvbG9yOiAlKHNTZWNCb3JkZXJDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIGZvb3RlciAqL1x0XHQuRm9vdGVyUGFuZWwgXHgzZSBkaXY6Zmlyc3QtY2hpbGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNGb290ZXJCZ0NvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0YS50ZXJtc19saW5rIHsgY29sb3I6ICUoc01haW5Gb250Q29sb3IpczsgfSBcdFx0LyogcmVwbGllcnNfbGVmdF91c2VyX2RldGFpbHMgKi9cdFx0LnJlcGxpZXJzX2xlZnRfdXNlcl9kZXRhaWxzIHsgYmFja2dyb3VuZC1jb2xvcjogJShzU2VjQmdDb2xvcilzOyBib3JkZXItY29sb3I6ICUoc01haW5Cb3JkZXJDb2xvcilzOyBjb2xvcjogJShzTWFpbkZvbnRDb2xvcilzOyB9IFx0XHQnLApkLnV0aWwuZ2V0T3B0aW9ucygpKSl9fX19O2QubW9kWyJVc2VyIEludGVyZmFjZSJdPXt2ZXI6Ik4vQSIsYXV0aG9yOiJcdTU0MTFcdTY1ZTUiLGZuOnsiNjQ2NGUzOTctZGZlYS00NzdmLTk3MDYtMDI1ZWM0MzllODEwIjp7ZGVzYzoiXHU4YTJkXHU1YjlhVUlcdTZhMjNcdTVmMGYiLHBhZ2U6ezY1NTM1OiJjb21wIn0sdHlwZToyLG9wdGlvbnM6e3NNZW51Rm9udFNpemU6e2Rlc2M6IlVJXHU0ZTNiXHU4OTgxXHU1YjU3XHU5YWQ0XHU1OTI3XHU1YzBmKHB4KSIsZGVmYXVsdFZhbHVlOiIxNiIsdHlwZToidGV4dCJ9LHNTbWFsbEZvbnRTaXplOntkZXNjOiJVSVx1N2QzMFx1NWI1N1x1OWFkNFx1NTkyN1x1NWMwZihweCkiLGRlZmF1bHRWYWx1ZToiMTAiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZignIFx0XHQuYW4tYm94IHsgZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiA1MCU7IHRvcDogNTAlOyB6LWluZGV4OiAxMDsgYm9yZGVyLXdpZHRoOiAxcHg7IH0gXHRcdC5hbi1ib3gtaGVhZGVyIHsgbGluZS1oZWlnaHQ6IDEuOGVtOyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgMCAwIDAuMmVtOyB9IFx0XHQuYW4tYm94LWNvbnRlbnQgeyBvdmVyZmxvdzogYXV0bzsgcG9zaXRpb246IHJlbGF0aXZlOyB9IFx0XHRcdFx0LmFuLW1lbnUgeyBmb250LXNpemU6ICUoc01lbnVGb250U2l6ZSlzcHg7IH0gXHRcdC5hbi1tZW51IGEgeyBkaXNwbGF5OiBibG9jazsgfSBcdFx0LmFuLW1lbnUgYTpob3ZlciB7IGNvbG9yOiAlKHNVSUhvdmVyQ29sb3IpczsgfSBcdFx0XHRcdC5hbi1zbWFsbCB7IGZvbnQtc2l6ZTogJShzU21hbGxGb250U2l6ZSlzcHg7IH0gXHRcdFx0XHQjYW4tdWkgdWwgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGxpc3Qtc3R5bGU6IG5vbmU7IH0gXHRcdCNhbi11aSBhOmZvY3VzIHsgb3V0bGluZTogMDsgfSBcdFx0XHRcdC5hbi1tb2QgeyBwb3NpdGlvbjogZml4ZWQ7IGNvbG9yOiAlKHNVSUZvbnRDb2xvcilzOyB9IFx0XHQuYW4tbW9kLCAuYW4tbW9kICogeyBib3JkZXI6IDAgc29saWQgJShzVUlGb250Q29sb3IpczsgfSBcdFx0LmFuLW1vZCBhIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogJShzVUlGb250Q29sb3IpczsgfSBcdFx0XHRcdCNhbi1iYWNrbGF5ZXIgeyBkaXNwbGF5OiBub25lOyBvcGFjaXR5OiAwOyAtbXMtZmlsdGVyOiAiYWxwaGEob3BhY2l0eVx4M2QwKSI7IHotaW5kZXg6IDU7IHBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMDsgdG9wOiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kOiBncmF5OyB9IFx0XHRcdFx0I2FuLW1haW5tZW51IHsgdG9wOiAxNSU7IHJpZ2h0OiAwOyB9IFx0XHQjYW4tbWFpbm1lbnUgYSB7IHBhZGRpbmc6IDAuM2VtIDAuMzVlbSAwIDA7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgfSBcdFx0JywKZC51dGlsLmdldE9wdGlvbnMoKSkpfX0sIjFkYjljY2M4LWFkMjgtNDhiNi04NzQ0LTIyZjg5MmNhMGE0NCI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NTdmYVx1NjcyY1x1NTE0M1x1NGVmNiIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjEsb25jZTpmdW5jdGlvbigpe2MoIiNhbiIpLmFwcGVuZCgnIFx0XHRceDNjZGl2IGlkXHgzZCJhbi11aSJceDNlIFx0XHRcdFx4M2NkaXYgaWRceDNkImFuLWJhY2tsYXllciJceDNlXHgzYy9kaXZceDNlIFx0XHRcdFx4M2N1bCBpZFx4M2QiYW4tbWFpbm1lbnUiIGNsYXNzXHgzZCJhbi1tb2QgYW4tbWVudSJceDNlXHgzYy91bFx4M2UgXHRcdFx4M2MvZGl2XHgzZSBcdFx0JykuY2xpY2soZnVuY3Rpb24oYil7Yi5zdG9wUHJvcGFnYXRpb24oKX0pO2Quc2hhcmVkLmdyYXk9ZnVuY3Rpb24oYixnKXt2YXIgbD1jKCIjYW4tYmFja2xheWVyIik7aWYobC5pcygiOmhpZGRlbiIpKXtpZihiKWwub25lKCJjbGljayIsZnVuY3Rpb24oKXtkLnNoYXJlZC5ncmF5KCl9KTsKbC5zaG93KCkuZmFkZVRvKCJzbG93IiwwLjcpO2lmKGcpe3ZhciBsPWMoIiMiK2cpLGg9bC5kYXRhKCJhbi1vV0giKSxtPWMud2luSGVpZ2h0KDAuOSkscT1jLndpbldpZHRoKDAuOSk7bC53aWR0aCgibWF4Ij09aC53fHxoLnc+cT9xOmgudykuaGVpZ2h0KCJtYXgiPT1oLmh8fGguaD5tP206aC5oKTtsPWwudXAoIi5hbi1ib3giKTtsLmNzcyh7bWFyZ2luVG9wOi1sLmhlaWdodCgpLzIsbWFyZ2luTGVmdDotbC53aWR0aCgpLzJ9KS5mYWRlSW4oInNsb3ciKX19ZWxzZSBsLmFkZCgiLmFuLWJveDp2aXNpYmxlIikuZmFkZU91dCgic2xvdyIpfTtkLnNoYXJlZC5hZGRNYWluPWZ1bmN0aW9uKGIsZCl7YygnXHgzY2xpXHgzZVx4M2NhIGhyZWZceDNkImphdmFzY3JpcHQ6Ilx4M2UnK2IrIlx4M2MvYVx4M2VceDNjL2xpXHgzZSIpLmNsaWNrKGQpLmFwcGVuZFRvKCIjYW4tbWFpbm1lbnUiKX07ZC5zaGFyZWQuYm94PWZ1bmN0aW9uKGIsZCxsLGgpe3JldHVybiBjKGMuc3ByaW50ZignXHgzY2RpdiBjbGFzc1x4M2QiYW4tYm94IGFuLWZvcnVtIlx4M2VceDNjaDQgY2xhc3NceDNkImFuLWZvcnVtLWhlYWRlciBhbi1ib3gtaGVhZGVyIlx4M2Ulc1x4M2MvaDRceDNlXHgzY2RpdiBpZFx4M2QiJXMiIGNsYXNzXHgzZCJhbi1ib3gtY29udGVudCJceDNlXHgzYy9kaXZceDNlXHgzYy9kaXZceDNlJywKZCxiKSkuYXBwZW5kVG8oIiNhbi11aSIpLmNoaWxkcmVuKCIuYW4tYm94LWNvbnRlbnQiKS5kYXRhKCJhbi1vV0giLHt3Omx8fCJhdXRvIixoOmh8fCJhdXRvIn0pfX19LCI3MjkwN2Q4ZS00NzM1LTRmNjYtYjNjOS0yMGUyNjE5NzY2M2QiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTUxNzFcdTc1MjhcdTUxNDNcdTRlZjYiLHBhZ2U6ezY1NTM1OiJjb21wIn0sdHlwZToxLG9uY2U6ZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXtkLnNoYXJlZC5zZXJ2ZXJUYWJsZT1mdW5jdGlvbigpe2lmKCFjKCIjYW4tc2VydmVyIikubGVuZ3RoKXtkLnV0aWwuYWRkU3R5bGUoIlx0XHRcdFx0XHQjYW4tc2VydmVyIGRpdiB7IHBhZGRpbmc6IDAuNWVtOyB9IFx0XHRcdFx0XHQjYW4tc2VydmVyIGNhcHRpb24geyBwYWRkaW5nLXRvcDogMC41ZW07IHRleHQtYWxpZ246IGNlbnRlcjsgY2FwdGlvbi1zaWRlOiBib3R0b207IH0gXHRcdFx0XHRcdCNhbi1zZXJ2ZXIgY2FwdGlvbiBhIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBib3JkZXItd2lkdGg6IDFweDsgcGFkZGluZzogMC4yZW07IH0gXHRcdFx0XHRcdCNhbi1zZXJ2ZXIgdGFibGUgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gXHRcdFx0XHRcdCNhbi1zZXJ2ZXIgdGQgeyBmb250LXNpemU6IDgwJTsgfSBcdFx0XHRcdFx0Iik7CmQuc2hhcmVkLmJveCgiYW4tc2VydmVyIiwiXHU0ZjNhXHU2NzBkXHU1NjY4XHU3MmMwXHU2MTRiIiwzMDApLmFwcGVuZCgnXHgzY2Rpdlx4M2VceDNjdGFibGVceDNlXHgzY2NhcHRpb25ceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZVx1OTAzMlx1ODg0Y1x1NmUyY1x1OGE2Nlx4M2MvYVx4M2VceDNjL2NhcHRpb25ceDNlXHgzY3RoZWFkXHgzZVx4M2N0clx4M2VceDNjdGRceDNlXHU0ZjNhXHU2NzBkXHU1NjY4XHgzYy90ZFx4M2VceDNjdGRceDNlXHU1NmRlXHU2MWM5XHU2NjQyXHU5NTkzXHgzYy90ZFx4M2VceDNjL3RyXHgzZVx4M2MvdGhlYWRceDNlXHgzY3Rib2R5XHgzZVx4M2MvdGJvZHlceDNlXHgzYy90YWJsZVx4M2VceDNjL2Rpdlx4M2UnKTtmb3IodmFyIGI9LTEhPT1DLnNlYXJjaC5pbmRleE9mKCJlcnJvciIpP2Muc3ByaW50ZigiaHR0cDovLyVzL3RvcGljcy5hc3B4P3R5cGVceDNkQlciLEMuaG9zdG5hbWUpOkMuaHJlZi5yZXBsYWNlKC90b3BpY3NfKGJ3KSg/Ol9bXi5dKyk/XC5odG0oXD8/KS9pLApmdW5jdGlvbihiLGMsZCl7cmV0dXJuInRvcGljcy5hc3B4P3R5cGVceDNkIitjLnRvVXBwZXJDYXNlKCkrKGQ/Ilx4MjYiOiIiKX0pLGc9IiIsbD0iIixoPVtbImZvcnVtMTAxIiwiRm9ydW0gMTAxIl0sWyJzZWFyY2giLCJTZWFyY2giXV0sbT0xNTttLS07KWgudW5zaGlmdChbImZvcnVtIisobSsxKSwiRm9ydW0gIisobSsxKV0pO2ZvcihtPTA7bTxoLmxlbmd0aDttKyspZys9Yy5zcHJpbnRmKCdceDNjdHJceDNlXHgzY3RkXHgzZVx4M2NhIGhyZWZceDNkIiVzIlx4M2Ulc1x4M2MvYVx4M2VceDNjL3RkXHgzZVx4M2N0ZCBjbGFzc1x4M2QiYW4tc2VydmVyLXJlc3BvbnNlIlx4M2VceDNjL3RkXHgzZVx4M2MvdHJceDNlJyxiLnJlcGxhY2UoL1x3Kyg/PVwuaGtnb2xkZW4pL2ksaFttXVswXSksaFttXVsxXSksbCs9Ilx4M2NpbWcgL1x4M2UiO3ZhciBxPWMoIlx4M2NkaXZceDNlIitsKyJceDNjL2Rpdlx4M2UiKS5jaGlsZHJlbigpLmJpbmQoImxvYWQgZXJyb3IiLGZ1bmN0aW9uKGIpe3ZhciBkPQpjKGIudGFyZ2V0KTtjKCIjYW4tc2VydmVyIC5hbi1zZXJ2ZXItcmVzcG9uc2UiKS5lcShkLmluZGV4KCkpLmh0bWwoImxvYWQiPT1iLnR5cGU/Yy5zcHJpbnRmKCJ+JXMgbXMiLGMudGltZSgpLWQuZGF0YSgiblRpbWUiKSk6Ilx1NzY3Y1x1NzUxZlx1OTMyZlx1OGFhNCIpfSk7YygiI2FuLXNlcnZlciIpLmZpbmQoImNhcHRpb24iKS5jbGljayhmdW5jdGlvbigpe2MoIiNhbi1zZXJ2ZXIgLmFuLXNlcnZlci1yZXNwb25zZSIpLmh0bWwoIlx1N2I0OVx1NWY4NVx1NTZkZVx1NjFjOVx1NGUyZC4uLiIpO3EuZWFjaChmdW5jdGlvbihiKXt2YXIgZD1jLnRpbWUoKTtjKHRoaXMpLmRhdGEoIm5UaW1lIixkKS5hdHRyKCJzcmMiLGMuc3ByaW50ZigiaHR0cDovLyVzLmhrZ29sZGVuLmNvbS9pbWFnZXMvaW5kZXhfaW1hZ2VzL3AuZ2lmP3RJZFx4M2QlcyIsaFtiXVswXSxkKSl9KX0pLmVuZCgpLmZpbmQoInRib2R5IikuaHRtbChnKX1kLnNoYXJlZC5ncmF5KCEwLCJhbi1zZXJ2ZXIiKTtjKCIjYW4tc2VydmVyIGNhcHRpb24iKS50cmlnZ2VyKCJjbGljayIpfX0pKCk7CihmdW5jdGlvbigpe3ZhciBiLGc9W10sbD1mdW5jdGlvbigpe3ZhciBiPWModGhpcykuZGF0YSgiaG92ZXJpemUiKTtiLmZpeFNjcm9sbF9kaWZmZXJlbmNlPWIualRhcmdldFtiLmZpeFNjcm9sbF0oKS12LnNjcm9sbFRvcCgpfTtjLmZuLmhvdmVyaXplPWZ1bmN0aW9uKGgsbSl7Ynx8KGQudXRpbC5hZGRTdHlsZSgiXHRcdFx0XHRcdCNhbi1ob3Zlcm9iamVjdHMgXHgzZSAqIHsgZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGFic29sdXRlOyB9IFx0XHRcdFx0XHQjYW4taG92ZXJvYmplY3RzIFx4M2UgaW1nLCAjYW4taG92ZXJvYmplY3RzIFx4M2Ugc3BhbiB7IGN1cnNvcjogcG9pbnRlcjsgfSBcdFx0XHRcdFx0IiksYj1jKCdceDNjZGl2IGlkXHgzZCJhbi1ob3Zlcm9iamVjdHMiXHgzZVx4M2MvZGl2XHgzZScpLmFwcGVuZFRvKCIjYW4iKS5iaW5kKHtjbGljazpmdW5jdGlvbihiKXtiLnN0b3BQcm9wYWdhdGlvbigpO2I9YyhiLnRhcmdldCkuY2xvc2VzdCgiI2FuLWhvdmVyb2JqZWN0cyBceDNlICoiKTsKdmFyIGQ9Yi5kYXRhKCJob3Zlcml6ZSIpO2lmKGQpe3ZhciBnPWQualRhcmdldDtkLmZpeFNjcm9sbCYmdi5zY3JvbGxUb3AoZ1tkLmZpeFNjcm9sbF0oKS1kLmZpeFNjcm9sbF9kaWZmZXJlbmNlKTtkLmF1dG9Ub2dnbGUmJihkLmpUYXJnZXQ9bnVsbCxiLmhpZGUoKSxnLm1vdXNlb3ZlcigpLGIubW91c2VvdmVyKCkpfX0sIm1vdXNlb3ZlciBtb3VzZW91dCBlbnRlcnRhcmdldCBsZWF2ZXRhcmdldCI6ZnVuY3Rpb24oYil7Yi5zdG9wUHJvcGFnYXRpb24oKX19KSx2Lm1vdXNlb3ZlcihmdW5jdGlvbihiKXt2YXIgZD1jKGIudGFyZ2V0KS5wYXJlbnRzVW50aWwoIiNhc3BuZXRGb3JtIikuYW5kU2VsZigpO2MuZWFjaChnLGZ1bmN0aW9uKGIsYyl7dmFyIGc9ZC5maWx0ZXIoYy5zZWxlY3RvcikuZXEoLTEpLGg9Yy5qT2JqZWN0LGw9aC5kYXRhKCJob3Zlcml6ZSIpO2wuZmlsdGVyJiYoZz1nLmZpbHRlcihsLmZpbHRlcikpO2lmKGwualRhcmdldCl7aWYoZ1swXSYmZ1swXT09PWwualRhcmdldFswXSlyZXR1cm47CmgudHJpZ2dlcigibGVhdmV0YXJnZXQiKTtsLmpUYXJnZXQ9bnVsbDtsLmF1dG9Ub2dnbGUmJmguaGlkZSgpfWcubGVuZ3RoJiYobC5qVGFyZ2V0PWcsaC50cmlnZ2VyKCJlbnRlcnRhcmdldCIpLGwuYXV0b1Bvc2l0aW9uJiZoLmNzcyhnLm9mZnNldCgpKSxsLmF1dG9Ub2dnbGUmJmguc2hvdygpKX0pfSkpO3ZhciBxPXRoaXM7bnVsbD09PWg/Yy5lYWNoKGcsZnVuY3Rpb24oYil7aWYodGhpcy5qT2JqZWN0WzBdPT09cVswXSlyZXR1cm4gZy5zcGxpY2UoYiwxKSwhMX0pOihnLnB1c2goe3NlbGVjdG9yOmgsak9iamVjdDpxfSksdGhpcy5kYXRhKCJob3Zlcml6ZSIsYy5leHRlbmQoe2ZpeFNjcm9sbDohMSxmaXhTY3JvbGxfYXV0b1JlY29yZDohMCxhdXRvVG9nZ2xlOiEwLGF1dG9Qb3NpdGlvbjohMCxmaWx0ZXI6bnVsbH0sbSkpLmFwcGVuZFRvKGIpLHRoaXMuZGF0YSgiaG92ZXJpemUiKS5maXhTY3JvbGwmJnRoaXMuZGF0YSgiaG92ZXJpemUiKS5maXhTY3JvbGxfYXV0b1JlY29yZCYmCnRoaXMuY2xpY2sobCkpO3JldHVybiB0aGlzfX0pKCk7KGZ1bmN0aW9uKCl7dmFyIGIsZz1mdW5jdGlvbigpe3ZhciBjPWIuZGF0YSgiaG92ZXJpemUiKTtjLmZpeFNjcm9sbF9kaWZmZXJlbmNlPWMualRhcmdldC50b3AoKS12LnNjcm9sbFRvcCgpfTtjLnVzZXJCdXR0b249ZnVuY3Rpb24obCl7Ynx8KGQudXRpbC5hZGRTdHlsZSgiXHRcdFx0XHRcdCNhbi11c2VyYnV0dG9ucyBceDNlIGltZzpmaXJzdC1jaGlsZCB7IHBhZGRpbmctdG9wOiA3cHg7IH0gXHRcdFx0XHRcdCNhbi11c2VyYnV0dG9ucyBceDNlIGltZyB7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiAzLjVweCA3cHg7IGN1cnNvcjogcG9pbnRlcjsgfSBcdFx0XHRcdFx0IiksYj1jKCdceDNjZGl2IGlkXHgzZCJhbi11c2VyYnV0dG9ucyJceDNlXHgzYy9kaXZceDNlJykuaG92ZXJpemUoIi5yZXBsaWVyc19sZWZ0Iix7Zml4U2Nyb2xsOiJ0b3AiLGZpeFNjcm9sbF9hdXRvUmVjb3JkOiExfSkuYmluZCh7ZW50ZXJ0YXJnZXQ6ZnVuY3Rpb24oKXtiLmNoaWxkcmVuKCkuZGF0YSgidXNlckJ1dHRvbiIsCntqVGFyZ2V0OmIuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LnBhcmVudCgpfSkudHJpZ2dlcigiYnV0dG9uc2hvdyIpfSxidXR0b25zaG93OmZ1bmN0aW9uKGIpe2Iuc3RvcFByb3BhZ2F0aW9uKCl9fSkpO3JldHVybiBjKCJceDNjaW1nIC9ceDNlIix7c3JjOmwsY2xpY2s6Z30pLmFwcGVuZFRvKGIpfX0pKCl9fSwiOTVlMjAzYjktOGQ5YS00NmFkLWJlNTMtZjQyOTdiYWQ3Mjg1Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU5MDc4XHU5ODA1XHU1MTQzXHU0ZWY2IixwYWdlOns2NTUzNDoiY29tcCJ9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGIsZyxsLGgsbSxxLG4scCx2LHcseSxKO2Quc2hhcmVkLmFkZE1haW4oIlx1OTA3OFx1OTgwNSIsZnVuY3Rpb24oKXtpZighYygiI2FuLXNldHRpbmdzIikubGVuZ3RoKXtkLnNoYXJlZC5ib3goImFuLXNldHRpbmdzIiwiXHU5MDc4XHU5ODA1Iiw5MDAsIm1heCIpLmFwcGVuZCgnXHgzY2RpdiBpZFx4M2QiYW4tc2V0dGluZ3MtdGFicyJceDNlXHgzY3VsIGlkXHgzZCJhbi1zZXR0aW5ncy10YWJzLW1haW4iXHgzZVx4M2MvdWxceDNlXHgzY3VsIGlkXHgzZCJhbi1zZXR0aW5ncy10YWJzLWV4dGVuZCJceDNlXHgzYy91bFx4M2VceDNjL2Rpdlx4M2VceDNjZGl2IGlkXHgzZCJhbi1zZXR0aW5ncy1tYWluIlx4M2VceDNjZGl2IGlkXHgzZCJhbi1zZXR0aW5ncy1tYWluLXBhbmVsc3dyYXBwZXIiXHgzZVx4M2NkaXYgaWRceDNkImFuLXNldHRpbmdzLW1haW4tcGFuZWxzIlx4M2VceDNjL2Rpdlx4M2VceDNjL2Rpdlx4M2VceDNjZGl2IGlkXHgzZCJhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2xzIlx4M2VceDNjdWwgaWRceDNkImFuLXNldHRpbmdzLW1haW4tY29udHJvbC0xIlx4M2VceDNjL3VsXHgzZVx4M2N1bCBpZFx4M2QiYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLTIiXHgzZVx4M2MvdWxceDNlXHgzYy9kaXZceDNlXHgzYy9kaXZceDNlJyk7CmQudXRpbC5hZGRTdHlsZSgiIFx0XHRcdFx0I2FuLXNldHRpbmdzLXRhYnMgeyBmbG9hdDogbGVmdDsgaGVpZ2h0OiAxMDAlOyBib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy10YWJzIGEgeyBkaXNwbGF5OiBibG9jazsgbGluZS1oZWlnaHQ6IDJlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IHBhZGRpbmc6IDAgMC41ZW07IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtdGFicy1leHRlbmQgbGk6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiAyZW07IGJvcmRlci10b3Atd2lkdGg6IDFweDsgfSBcdFx0XHRcdFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4geyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IGhlaWdodDogMTAwJTsgfSBcdFx0XHRcdFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tcGFuZWxzd3JhcHBlciB7IG92ZXJmbG93OiBhdXRvOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMmVtOyBsZWZ0OiAwOyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyB7IHBhZGRpbmc6IDFlbTsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyBmaWVsZHNldCB7IGRpc3BsYXk6IG5vbmU7IG1hcmdpbjogMDsgcGFkZGluZzogMCAwLjVlbSAxZW07IGJvcmRlci13aWR0aDogMXB4OyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tcGFuZWxzIGg0IHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgb3ZlcmZsb3c6IGhpZGRlbjsgbWFyZ2luOiAxZW0gMCAwLjVlbTsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyBoNCBzcGFuIHsgZmxvYXQ6IGxlZnQ7IG1hcmdpbi1yaWdodDogMC4yZW07IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMgaDQgaHIgeyBvdmVyZmxvdzogaGlkZGVuOyBtYXJnaW46IDAuNWVtIDAgMCAwOyBib3JkZXItdG9wLXdpZHRoOiAxcHg7IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMgZGwgeyBtYXJnaW46IDAuMzVlbSAwIDAuMzVlbSA1cHg7IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMgZGQgeyBtYXJnaW46IDAuMjVlbSAwIDAgMjBweDsgfSBcdFx0XHRcdFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tY29udHJvbHMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGxpbmUtaGVpZ2h0OiAyZW07IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLTEgeyBmbG9hdDogbGVmdDsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMiB7IGZsb2F0OiByaWdodDsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2xzIGxpIHsgZmxvYXQ6IGxlZnQ7IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLWxhc3QsICNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2xzIGEgeyBwYWRkaW5nOiAwIDFlbTsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMSBsaSB7IGJvcmRlci1yaWdodC13aWR0aDogMXB4OyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tY29udHJvbC1sYXN0LCAjYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLTIgbGkgeyBib3JkZXItbGVmdC13aWR0aDogMXB4OyB9IFx0XHRcdFx0Iik7CnZhciBEPWQuYm94Lm9UeXBlTWFwLEY9ZC5ib3gub1BhZ2VNYXAsQT17fTtjLmVhY2goRCxmdW5jdGlvbihiKXtBW2JdPXt9O2MuZWFjaChGLGZ1bmN0aW9uKGMpe0FbYl1bY109e319KX0pO2MuZWFjaChkLm1vZCxmdW5jdGlvbihiKXt0aGlzLmZuJiZjLmVhY2godGhpcy5mbixmdW5jdGlvbihkLGcpe2MuZWFjaChnLnBhZ2UsZnVuY3Rpb24oYyxoKXtBW2cudHlwZV1bY118fChBW2cudHlwZV1bY109e30pO0FbZy50eXBlXVtjXVtiKyJfLV8iK2RdPXtkZXNjOmcuZGVzYyxvcHRpb25zOmcub3B0aW9ucyxjb21wOiJjb21wIj09aCxkaXNhYmxlZDoiZGlzYWJsZWQiPT1ofX0pfSl9KTt2YXIgdT0iIjtjLmVhY2goQSxmdW5jdGlvbihiKXsoaXNOYU4oYil8fDY8Yj9jKCIjYW4tc2V0dGluZ3MtdGFicy1leHRlbmQiKTpjKCIjYW4tc2V0dGluZ3MtdGFicy1tYWluIikpLmFwcGVuZChjLnNwcmludGYoJ1x4M2NsaVx4M2VceDNjYSBocmVmXHgzZCJqYXZhc2NyaXB0OiIgZGF0YS1wYW5lbFx4M2QiYW4tc2V0dGluZ3MtcGFuZWwtJXMiXHgzZSVzXHgzYy9hXHgzZVx4M2MvbGlceDNlJywKYixEW2JdKSk7dSs9Yy5zcHJpbnRmKCdceDNjZmllbGRzZXQgaWRceDNkImFuLXNldHRpbmdzLXBhbmVsLSVzIlx4M2VceDNjbGVnZW5kXHgzZSVzXHgzYy9sZWdlbmRceDNlJyxiLERbYl0pO2MuZWFjaCh0aGlzLGZ1bmN0aW9uKGIpe2lmKCFjLmlzRW1wdHkodGhpcykpe3ZhciBkPVtdO2IgaW4gRj9kLnB1c2goRltiXS5kZXNjKTpjLmVhY2goRixmdW5jdGlvbihjKXs2NTUzND5jJiZjJmImJmQucHVzaCh0aGlzLmRlc2MpfSk7dSs9Yy5zcHJpbnRmKCJceDNjaDRceDNlXHgzY3NwYW5ceDNlJXNceDNjL3NwYW5ceDNlXHgzY2hyIC9ceDNlXHgzYy9oNFx4M2UiLGQuam9pbigiXHUzMDAxIikpO2MuZWFjaCh0aGlzLGZ1bmN0aW9uKGQpe3UrPSJceDNjZGxceDNlXHgzY2R0XHgzZSI7dmFyIGc9dGhpcy5kaXNhYmxlZDtkPWMuc3ByaW50ZigiYW4tc2V0dGluZ3Mtc3dpdGNoLSVzJXMlcyIsYiwiXy1fIixkKTt1Kz1jLnNwcmludGYoJ1x4M2NpbnB1dCB0eXBlXHgzZCJjaGVja2JveCIgaWRceDNkIiVzIiAlcyAlcyAvXHgzZScsCmQsdGhpcy5jb21wPydjaGVja2VkXHgzZCJjaGVja2VkIic6IiIsdGhpcy5jb21wfHxnPydkaXNhYmxlZFx4M2QiZGlzYWJsZWQiJzonY2xhc3NceDNkImFuLXNldHRpbmdzLXN3aXRjaCInKTt1Kz1jLnNwcmludGYoJ1x4M2NsYWJlbCBmb3JceDNkIiVzIlx4M2Ulc1x4M2MvbGFiZWxceDNlXHgzYy9kdFx4M2UnLGQsdGhpcy5kZXNjKTt0aGlzLm9wdGlvbnMmJmMuZWFjaCh0aGlzLm9wdGlvbnMsZnVuY3Rpb24oZCl7dSs9Ilx4M2NkZFx4M2UiO2Q9Yy5zcHJpbnRmKCJhbi1zZXR0aW5ncy1vcHRpb24tJXMlcyVzIixiLCJfLV8iLGQpO3ZhciBoPWc/J2Rpc2FibGVkXHgzZCJkaXNhYmxlZCInOidjbGFzc1x4M2QiYW4tc2V0dGluZ3Mtb3B0aW9uIic7ImNoZWNrYm94Ij09dGhpcy50eXBlP3UrPWMuc3ByaW50ZignXHgzY2lucHV0IHR5cGVceDNkImNoZWNrYm94IiBpZFx4M2QiJXMiICVzIC9ceDNlXHgzY2xhYmVsIGZvclx4M2QiJXMiXHgzZSVzXHgzYy9sYWJlbFx4M2UnLGQsaCxkLAp0aGlzLmRlc2MpOiJ0ZXh0Ij09dGhpcy50eXBlP3UrPWMuc3ByaW50ZignXHgzY2xhYmVsIGZvclx4M2QiJXMiXHgzZSVzOiBceDNjL2xhYmVsXHgzZVx4M2NpbnB1dCB0eXBlXHgzZCJ0ZXh0IiBpZFx4M2QiJXMiICVzIC9ceDNlJyxkLHRoaXMuZGVzYyxkLGgpOiJzZWxlY3QiPT10aGlzLnR5cGUmJih1Kz1jLnNwcmludGYoJyVzOiBceDNjc2VsZWN0IGlkXHgzZCIlcyIgJXNceDNlJyx0aGlzLmRlc2MsZCxoKSxjLmVhY2godGhpcy5jaG9pY2VzLGZ1bmN0aW9uKCl7dSs9Yy5zcHJpbnRmKCdceDNjb3B0aW9uIHZhbHVlXHgzZCIlcyJceDNlJXNceDNjL29wdGlvblx4M2UnLHRoaXMsdGhpcyl9KSx1Kz0iXHgzYy9zZWxlY3RceDNlIik7dSs9Ilx4M2MvZGRceDNlIn0pO3UrPSJceDNjL2RsXHgzZSJ9KX19KTt1Kz0iXHgzYy9maWVsZHNldFx4M2UifSk7YygiI2FuLXNldHRpbmdzLW1haW4tcGFuZWxzIikuYXBwZW5kKHUpO3U9bnVsbDtjKCIjYW4tc2V0dGluZ3MtdGFicy1leHRlbmQiKS5hcHBlbmQoJ1x4M2NsaVx4M2VceDNjYSBpZFx4M2QiYW4tc2V0dGluZ3MtdGFiLXNlcGNpYWwiIGhyZWZceDNkImphdmFzY3JpcHQ6IiBkYXRhLXBhbmVsXHgzZCJhbi1zZXR0aW5ncy1wYW5lbC1zcGVjaWFsIlx4M2VcdTcyNzlcdTZiOGFcdThhMmRcdTViOWFceDNjL2FceDNlXHgzYy9saVx4M2UnKTsKZC51dGlsLmFkZFN0eWxlKCJcdFx0XHRcdCNhbi1zZXR0aW5ncy1wYW5lbC1zcGVjaWFsIHNwYW4geyBmb250LXNpemU6IDgwJTsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1wYW5lbC1zcGVjaWFsIGEgeyBmb250LXNpemU6IDgwJTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1zcGVjaWFsLWNvbmZpZyB7IHdpZHRoOiA5NSU7IGhlaWdodDogMjAwcHg7IGZvbnQtc2l6ZTogODAlOyB9IFx0XHRcdFx0Iik7YygnXHRcdFx0XHRceDNjZmllbGRzZXQgaWRceDNkImFuLXNldHRpbmdzLXBhbmVsLXNwZWNpYWwiXHgzZSBcdFx0XHRcdFx0XHgzY2xlZ2VuZFx4M2VcdTcyNzlcdTZiOGFcdThhMmRcdTViOWFceDNjL2xlZ2VuZFx4M2UgXHRcdFx0XHRcdFx4M2NoNFx4M2VceDNjc3Bhblx4M2VcdThhMmRcdTViOWFcdThjYzdcdTY1OTlceDNjL3NwYW5ceDNlXHgzY2hyIC9ceDNlXHgzYy9oNFx4M2UgXHRcdFx0XHRcdFx4M2NkaXZceDNlXHgzY3RleHRhcmVhIGlkXHgzZCJhbi1zZXR0aW5ncy1zcGVjaWFsLWNvbmZpZyJceDNlXHgzYy90ZXh0YXJlYVx4M2VceDNjL2Rpdlx4M2UgXHRcdFx0XHRcdFx4M2NkaXZceDNlIFx0XHRcdFx0XHRcdFx4M2NhIGlkXHgzZCJhbi1zZXR0aW5ncy1zcGVjaWFsLXRvZmlsZSIgaHJlZlx4M2QiamF2YXNjcmlwdDoiIHRhcmdldFx4M2QiX2JsYW5rIiBkb3dubG9hZFx4M2QiSGVsaWFudGh1cy5hbm51dXMudHh0Ilx4M2VcdTUxMzJcdTViNThcdTRlZTVcdTRlMGFcdThjYzdcdTY1OTlcdTgxZjNcdTZhOTRcdTY4NDgoXHU1M2U2XHU1YjU4XHU0ZTBiXHU4ZjA5KVx4M2MvYVx4M2UgXHRcdFx0XHRcdFx0XHgzY2EgaWRceDNkImFuLXNldHRpbmdzLXNwZWNpYWwtZnJvbWZpbGUiIGhyZWZceDNkImphdmFzY3JpcHQ6Ilx4M2VcdTVmOWVcdTY3MmNcdTU3MzBcdTZhOTRcdTY4NDhcdThiODBcdTUzZDYuLi5ceDNjL2FceDNlIFx0XHRcdFx0XHRceDNjL2Rpdlx4M2UgXHRcdFx0XHRceDNjL2ZpZWxkc2V0XHgzZSBcdFx0XHRcdCcpLm9uKCJtb3VzZWRvd24iLAoiI2FuLXNldHRpbmdzLXNwZWNpYWwtdG9maWxlIixmdW5jdGlvbihiKXt2YXIgZD13aW5kb3cuVVJMfHx3aW5kb3cud2Via2l0VVJMLGc9d2luZG93LkJsb2JCdWlsZGVyfHx3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXIsaD1jKCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1jb25maWciKS52YWwoKTtkJiZnPyhnPW5ldyBnLGcuYXBwZW5kKGgpLGIudGFyZ2V0LmhyZWY9ZC5jcmVhdGVPYmplY3RVUkwoZy5nZXRCbG9iKCJ0ZXh0L3BsYWluIikpKTpiLnRhcmdldC5ocmVmPSJkYXRhOnRleHQvcGxhaW47YmFzZTY0LCIrd2luZG93LmJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGgpKSl9KS5vbigiY2xpY2siLCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1mcm9tZmlsZSIsZnVuY3Rpb24oYil7YygnXHgzY2lucHV0IHR5cGVceDNkImZpbGUiIC9ceDNlJykub25lKCJjaGFuZ2UiLGZ1bmN0aW9uKGIpe2lmKHRoaXMuZmlsZXMmJndpbmRvdy5GaWxlUmVhZGVyKXt2YXIgZD1uZXcgRmlsZVJlYWRlcjsKZC5vbmxvYWQ9ZnVuY3Rpb24oKXtjKCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1jb25maWciKS52YWwoZC5yZXN1bHQpfTtkLm9uZXJyb3I9ZnVuY3Rpb24oYil7YWxlcnQoIlx1OGI4MFx1NTNkNlx1OGEyZFx1NWI5YVx1OGNjN1x1NjU5OVx1NjY0Mlx1NzY3Y1x1NzUxZlx1OTMyZlx1OGFhNCEiKX07ZC5yZWFkQXNUZXh0KHRoaXMuZmlsZXNbMF0pfWVsc2UgYWxlcnQoIlx1NGY2MFx1NzY4NFx1NzAwZlx1ODliZFx1NTY2OFx1NGUwZFx1NjUyZlx1NjMwMVx1NmI2NFx1NTI5Zlx1ODBmZCEiKX0pLmNsaWNrKCl9KS5hcHBlbmRUbygiI2FuLXNldHRpbmdzLW1haW4tcGFuZWxzIikudHJpZ2dlcigiYW4tc2V0dGluZ3Mtc3BlY2lhbCIpO3Y9YygiI2FuLXNldHRpbmdzLW1haW4tcGFuZWxzIGZpZWxkc2V0Iik7dz1jKCIjYW4tc2V0dGluZ3MtdGFicyBhIik7eT1jKCIuYW4tc2V0dGluZ3Mtc3dpdGNoIik7Sj1jKCIuYW4tc2V0dGluZ3Mtb3B0aW9uIik7di5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9CmModGhpcyk7Yi5maW5kKCJoNCIpLmxlbmd0aHx8YyhjLnNwcmludGYoIltkYXRhLXBhbmVsXHgzZCVzXSIsYi5hdHRyKCJpZCIpKSkucGFyZW50KCkuYWRkKGIpLnJlbW92ZSgpfSk7Yj1mdW5jdGlvbigpe3cuY3NzKCJ0ZXh0LWRlY29yYXRpb24iLCIiKTtjKHRoaXMpLmNzcygidGV4dC1kZWNvcmF0aW9uIiwidW5kZXJsaW5lIik7di5oaWRlKCk7YygiIyIrYyh0aGlzKS5hdHRyKCJkYXRhLXBhbmVsIikpLnNob3coKS5wYXJlbnQoKS5wYXJlbnQoKS5zY3JvbGxUb3AoMCl9O3cuY2xpY2soYik7eS5jbGljayhmdW5jdGlvbigpe3ZhciBiPWModGhpcyk7Yi5wYXJlbnQoKS5wYXJlbnQoKS5maW5kKCIuYW4tc2V0dGluZ3Mtb3B0aW9uIikuYXR0cigiZGlzYWJsZWQiLCFiLmlzKCI6Y2hlY2tlZCIpKX0pO2c9ZnVuY3Rpb24oYil7dmFyIGM9Yi5kYXRhKCJpbmZvIik7Y3x8KGIuaGFzQ2xhc3MoImFuLXNldHRpbmdzLXN3aXRjaCIpPyhjPWIuYXR0cigiaWQiKS5yZXBsYWNlKC9hbi1zZXR0aW5ncy1zd2l0Y2gtLywKIiIpLnNwbGl0KCJfLV8iKSxjPXtwYWdlOjEqY1swXSxtb2Q6Y1sxXSxpZDpjWzJdfSk6KGM9Yi5hdHRyKCJpZCIpLnJlcGxhY2UoL2FuLXNldHRpbmdzLW9wdGlvbi0vLCIiKS5zcGxpdCgiXy1fIiksYz17cGFnZToxKmNbMF0sbmFtZTpjWzFdLHR5cGU6IlNFTEVDVCI9PWJbMF0ubm9kZU5hbWU/InNlbGVjdCI6Yi5hdHRyKCJ0eXBlIil9KSxiLmRhdGEoImluZm8iLGMpKTtyZXR1cm4gY307bD1mdW5jdGlvbigpe3ZhciBiPXt9O3kuZWFjaChmdW5jdGlvbigpe3ZhciBkPWModGhpcyksaD1nKGQpO2MubWFrZSgiYSIsYy5tYWtlKCJvIixiLGgubW9kKSxoLmlkKTtkLmlzKCI6Y2hlY2tlZCIpJiZiW2gubW9kXVtoLmlkXS5wdXNoKGgucGFnZSl9KTtkLnV0aWwuc3RvcmFnZSgiYW5fc3dpdGNoZXMiLGIpO3ZhciBoPXt9LGw9ITE7Si5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxkPWcoYik7Yy5tYWtlKCJvIixoLGQubmFtZSk7aWYoImNoZWNrYm94Ij09ZC50eXBlKWhbZC5uYW1lXVtkLnBhZ2VdPQpiLmlzKCI6Y2hlY2tlZCIpO2Vsc2UgaWYoInRleHQiPT1kLnR5cGV8fCJzZWxlY3QiPT1kLnR5cGUpIWwmJiJ0ZXh0Ij09ZC50eXBlJiZiLnZhbCgpLm1hdGNoKC9cJ3xcIi8pJiYobD0hMCksaFtkLm5hbWVdW2QucGFnZV09Yy5jb3JyZWN0KGIudmFsKCkpfSk7aWYobCYmIWNvbmZpcm0oIlx1NzY3Y1x1NzNmZVx1NjU4N1x1NWI1N1x1OGEyZFx1NWI5YVx1NGUyZFx1NTQyYlx1NjcwOVx1NWYxNVx1ODY1ZiFcblx1ODJlNVx1OGE3Mlx1OGEyZFx1NWI5YVx1NWM2Y1x1NjViY0NTU1x1NzZmOFx1OTVkY1x1OTgwNVx1NzZlZShcdTU5ODJcdTk4NGZcdTgyNzJcdThhMmRcdTViOWEpLCBcdTUyNDdcdTY3MDlcdTUzZWZcdTgwZmRcdTVjMGVcdTgxZjRcdTcyNDhcdTk3NjJcdTkzMmZcdThhYTQhXG5cblx1NzhiYVx1NWI5YVx1OTAzMlx1ODg0Y1x1NTEzMlx1NWI1OD8iKSlyZXR1cm4hMTtkLnV0aWwuc3RvcmFnZSgiYW5fb3B0aW9ucyIsaCk7cmV0dXJuITB9O2g9ZC5zaGFyZWQuZmlsbE9wdGlvbnM9CmZ1bmN0aW9uKGIsaCl7dmFyIGw9Yj9jKCIjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMiKTp2LmZpbHRlcigiOnZpc2libGUiKSxtPWQubW9kRm4uZ2V0REIoaCk7bC5maW5kKCIuYW4tc2V0dGluZ3Mtc3dpdGNoIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcyksZD1nKGIpLGQ9LTEhPWMuaW5BcnJheShkLnBhZ2UsbS5vU3dpdGNoZXNbZC5tb2RdW2QuaWRdKTtiLmF0dHIoImNoZWNrZWQiLGQpLnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIi5hbi1zZXR0aW5ncy1vcHRpb24iKS5hdHRyKCJkaXNhYmxlZCIsIWQpfSk7bC5maW5kKCIuYW4tc2V0dGluZ3Mtb3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcyksZD1nKGIpLGg9bS5vT3B0aW9uc1tkLm5hbWVdW2QucGFnZV07ImNoZWNrYm94Ij09ZC50eXBlP2IuYXR0cigiY2hlY2tlZCIsaCk6InRleHQiIT1kLnR5cGUmJiJzZWxlY3QiIT1kLnR5cGV8fGIudmFsKGgpfSl9O209ZnVuY3Rpb24oYil7dmFyIGQ9cD9jKCIjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMiKToKdi5maWx0ZXIoIjp2aXNpYmxlIik7ZC5maW5kKCIuYW4tc2V0dGluZ3Mtc3dpdGNoIikuYXR0cigiY2hlY2tlZCIsYik7ZC5maW5kKCIuYW4tc2V0dGluZ3Mtb3B0aW9uIikuYXR0cigiZGlzYWJsZWQiLCFiKX07cT1mdW5jdGlvbigpe3RyeXt2YXIgYj1wcm9tcHQoIlx1OGFjYlx1OGYzOFx1NTE2NVx1OGEyZFx1NWI5YVx1OGNjN1x1NjU5OSIsIiIpO2lmKCFiKXJldHVybjtiPUpTT04ucGFyc2UoYil9Y2F0Y2goZCl7cmV0dXJuIGFsZXJ0KCJcdThhMmRcdTViOWFcdThjYzdcdTY1OTlcdTUyNTZcdTY3OTBcdTkzMmZcdThhYTQhIil9dmFyIGg9cD9jKCIjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMiKTp2LmZpbHRlcigiOnZpc2libGUiKTtiLm9Td2l0Y2hlcyYmaC5maW5kKCIuYW4tc2V0dGluZ3Mtc3dpdGNoIikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWModGhpcyksaD1nKGQpO2Iub1N3aXRjaGVzW2gubW9kXSYmYi5vU3dpdGNoZXNbaC5tb2RdW2guaWRdJiYoaD0tMSE9Yy5pbkFycmF5KGgucGFnZSwKYi5vU3dpdGNoZXNbaC5tb2RdW2guaWRdKSxkLmF0dHIoImNoZWNrZWQiLGgpLnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIi5hbi1zZXR0aW5ncy1vcHRpb24iKS5hdHRyKCJkaXNhYmxlZCIsIWgpKX0pO2Iub09wdGlvbnMmJmguZmluZCgiLmFuLXNldHRpbmdzLW9wdGlvbiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1jKHRoaXMpLGg9ZyhkKTtpZihiLm9PcHRpb25zW2gubmFtZV0mJmgucGFnZSBpbiBiLm9PcHRpb25zW2gubmFtZV0pe3ZhciBsPWIub09wdGlvbnNbaC5uYW1lXVtoLnBhZ2VdOyJjaGVja2JveCI9PWgudHlwZT9kLmF0dHIoImNoZWNrZWQiLGwpOiJ0ZXh0IiE9aC50eXBlJiYic2VsZWN0IiE9aC50eXBlfHxkLnZhbChsKX19KTthbGVydCgiXHU2ZWQ5XHU1MTY1XHU2MjEwXHU1MjlmISIpfTtuPWZ1bmN0aW9uKCl7dmFyIGI9cD9jKCIjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMiKTp2LmZpbHRlcigiOnZpc2libGUiKSxkPXtvU3dpdGNoZXM6e30sb09wdGlvbnM6e319OwpiLmZpbmQoIi5hbi1zZXR0aW5ncy1zd2l0Y2giKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxoPWcoYiksbD1jLm1ha2UoImEiLGMubWFrZSgibyIsZC5vU3dpdGNoZXMsaC5tb2QpLGguaWQpO2IuaXMoIjpjaGVja2VkIikmJmwucHVzaChoLnBhZ2UpfSk7Yi5maW5kKCIuYW4tc2V0dGluZ3Mtb3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcyksaD1nKGIpLGw9Yy5tYWtlKCJvIixkLm9PcHRpb25zLGgubmFtZSk7aWYoImNoZWNrYm94Ij09aC50eXBlKWxbaC5wYWdlXT1iLmlzKCI6Y2hlY2tlZCIpO2Vsc2UgaWYoInRleHQiPT1oLnR5cGV8fCJzZWxlY3QiPT1oLnR5cGUpbFtoLnBhZ2VdPWMuY29ycmVjdChiLnZhbCgpKX0pO2MoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWNvbmZpZyIpLnZhbChKU09OLnN0cmluZ2lmeShkKXx8IiIpO2MoIiNhbi1zZXR0aW5ncy10YWItc2VwY2lhbCIpLmNsaWNrKCk7YWxlcnQoIlx1NmVkOVx1NTFmYVx1NjIxMFx1NTI5ZiEgXHU4YWNiXHU4OTA3XHU4OGZkXHU4YTJkXHU1YjlhXHU4Y2M3XHU2NTk5Iil9OwpjLmVhY2goeyJcdTc4YmFcdTViOWEiOmZ1bmN0aW9uKCl7bCgpJiZDLnJlbG9hZCgpfSwiXHU1M2Q2XHU2ZDg4IjpkLnNoYXJlZC5ncmF5LCJcdTU5NTdcdTc1MjgiOmZ1bmN0aW9uKCl7bCgpO2QuYm94Lm9Td2l0Y2hlcz1udWxsO2QuYm94Lm9PcHRpb25zPW51bGw7ZC5tb2RGbi5nZXREQigpfX0sZnVuY3Rpb24oYixkKXtjKGMuc3ByaW50ZignXHgzY2xpXHgzZVx4M2NhIGhyZWZceDNkImphdmFzY3JpcHQ6Ilx4M2Ulc1x4M2MvYVx4M2VceDNjL2xpXHgzZScsYikpLmNsaWNrKGQpLmFwcGVuZFRvKCIjYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLTEiKX0pO2MuZWFjaCh7Ilx1NWZhOVx1NTM5ZiI6ZnVuY3Rpb24oKXtoKHAsITEpfSwiXHU1MTY4XHU5MDc4IjpmdW5jdGlvbigpe20oITApfSwiXHU1MTY4XHU1NDI2IjpmdW5jdGlvbigpe20oITEpfSwiXHU5MWNkXHU4YTJkIjpmdW5jdGlvbigpe2gocCwhMCl9LCJcdTZlZDlcdTUxNjUiOmZ1bmN0aW9uKCl7cSgpfSwiXHU2ZWQ5XHU1MWZhIjpmdW5jdGlvbigpe24oKX19LApmdW5jdGlvbihiLGQpe2MoYy5zcHJpbnRmKCdceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZSVzXHgzYy9hXHgzZVx4M2MvbGlceDNlJyxiKSkuY2xpY2soZCkuYXBwZW5kVG8oIiNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMiIpfSk7YygnXHgzY2xpIGlkXHgzZCJhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtbGFzdCJceDNlXHgzY2xhYmVsIGZvclx4M2QiYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLWN1cnJlbnRvbmx5Ilx4M2VcdTUwYzVcdTU5NTdcdTc1MjhcdTUyMzBcdTY3MmNcdTk4MDFcdTkwNzhcdTk4MDVceDNjL2xhYmVsXHgzZVx4M2MvbGlceDNlJykucHJlcGVuZChjKCdceDNjaW5wdXQgdHlwZVx4M2QiY2hlY2tib3giIGlkXHgzZCJhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtY3VycmVudG9ubHkiIGNoZWNrZWRceDNkImNoZWNrZWQiIC9ceDNlJykuY2xpY2soZnVuY3Rpb24oKXtwPSFjKHRoaXMpLmlzKCI6Y2hlY2tlZCIpfSkpLmFwcGVuZFRvKCIjYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLTIiKX1oKCEwLAohMSk7Yi5jYWxsKGMoIiNhbi1zZXR0aW5ncy10YWJzIGE6Zmlyc3QiKVswXSk7ZC5zaGFyZWQuZ3JheSghMSwiYW4tc2V0dGluZ3MiKX0pfX0sIjcxYzliZDg4LWRjM2ItNGE5Ny1iMDRjLTIwMDUyZGNmY2RjYiI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1OGE1NVx1NmUyY1x1NTE0M1x1NGVmNiIscGFnZTp7NjU1MzQ6ITB9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7ZC5zaGFyZWQuYWRkTWFpbigiXHU4YTU1XHU2ZTJjIixmdW5jdGlvbigpe2MoIiNhbi1iZW5jaG1hcmsiKS5sZW5ndGh8fChkLnV0aWwuYWRkU3R5bGUoIiBcdFx0XHRcdCNhbi1iZW5jaG1hcmsgZGl2IHsgcGFkZGluZzogMC41ZW07IH0gXHRcdFx0XHQiKSxkLnNoYXJlZC5ib3goImFuLWJlbmNobWFyayIsIlx1OGE1NVx1NmUyYyIsNTUwLDUwMCkuYXBwZW5kKCJceDNjZGl2XHgzZVx4M2N0YWJsZVx4M2VceDNjdGhlYWRceDNlXHgzY3RyXHgzZVx4M2N0ZFx4M2UjXHgzYy90ZFx4M2VceDNjdGRceDNlXHU1MjlmXHU4MGZkXHgzYy90ZFx4M2VceDNjdGRceDNlXHU1N2Y3XHU4ODRjXHU2NjQyXHU5NTkzXHgzYy90ZFx4M2VceDNjL3RyXHgzZVx4M2MvdGhlYWRceDNlXHgzY3Rib2R5XHgzZVx4M2MvdGJvZHlceDNlXHgzYy90YWJsZVx4M2VceDNjL2Rpdlx4M2UiKSk7CnZhciBiLGcsbCxoLG0scTtoPW09cT0wO3ZhciBuPVtkLnV0aWwuZ2V0T3B0aW9ucygic01haW5CZ0NvbG9yIiksZC51dGlsLmdldE9wdGlvbnMoInNTZWNCZ0NvbG9yIildLHA9IiI7Yy5lYWNoKGQuYm94LmFCZW5jaG1hcmssZnVuY3Rpb24oZCl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSAic3RhcnQiOmI9Ik4vQSI7Zz1jLnNwcmludGYoIi0tLSAlcyBcdTk1OGJcdTU5Y2IgLS0tIix0aGlzLm5hbWUpO2w9Ik4vQSI7YnJlYWs7Y2FzZSAiZm4iOmI9KytoO2c9dGhpcy5uYW1lO2w9KHRoaXMudGltZXx8Ilx1MDNiNSIpKyIgbXMiO20rPXRoaXMudGltZTtxKz10aGlzLnRpbWU7YnJlYWs7Y2FzZSAiZW5kIjpiPSJOL0EiO2c9Yy5zcHJpbnRmKCItLS0gJXMgXHU3ZDUwXHU2NzVmIC0tLSIsdGhpcy5uYW1lKTtsPW0rIiBtcyI7YnJlYWs7Y2FzZSAiZmluYWwiOnArPWMuc3ByaW50ZigiXHgzY3RyXHgzZVx4M2N0ZFx4M2VOL0FceDNjL3RkXHgzZVx4M2N0ZFx4M2UrKysgXHU3ZTNkXHU1NDhjICsrK1x4M2MvdGRceDNlXHgzY3RkXHgzZSVzIG1zXHgzYy90ZFx4M2VceDNjL3RyXHgzZSIsCnEpLHE9MCxiPSJOL0EiLGc9In5+fiBcdTU2ZGVcdTU0MDhcdTdkNTBcdTY3NWYgfn5+IixsPXRoaXMudGltZSsiIG1zIn1wKz1jLnNwcmludGYoJ1x4M2N0ciBzdHlsZVx4M2QiYmFja2dyb3VuZC1jb2xvcjogJXM7Ilx4M2VceDNjdGRceDNlJXNceDNjL3RkXHgzZVx4M2N0ZFx4M2Ulc1x4M2MvdGRceDNlXHgzY3RkXHgzZSVzXHgzYy90ZFx4M2VceDNjL3RyXHgzZScsbltkJTJdLGIsZyxsKTsiZW5kIj09dGhpcy50eXBlJiYobT0wKX0pO2MoIiNhbi1iZW5jaG1hcmsgdGJvZHkiKS5hcHBlbmQocCk7ZC5ib3guYUJlbmNobWFyaz1bXTtkLnNoYXJlZC5ncmF5KCEwLCJhbi1iZW5jaG1hcmsiKX0pfX0sIjA4NjhlYjY0LTk2MzEtNDJkZC04YjVjLTAyZjExYThjOWE0OCI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1OGExOFx1OTMwNFx1NTE0M1x1NGVmNiBbXHU1M2YzXHU0ZTBiXSIscGFnZTp7NjU1MzQ6ITB9LHR5cGU6MSxvcHRpb25zOntiQWRkTG9nQnV0dG9uOntkZXNjOiJcdTUyYTBcdTUxNjVcdThhMThcdTkzMDRcdTUxNDNcdTRlZjZcdTk1OGJcdTk1ZGNcdTYzMDlcdTYyNmQiLApkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxiQXV0b1Nob3dMb2c6e2Rlc2M6Ilx1ODFlYVx1NTJkNVx1OTg2Zlx1NzkzYVx1OGExOFx1OTMwNFx1ODk5Nlx1N2E5NyIsZGVmYXVsdFZhbHVlOiEwLHR5cGU6ImNoZWNrYm94In0sYlNob3dEZXRhaWxMb2c6e2Rlc2M6Ilx1OTg2Zlx1NzkzYVx1OGE3M1x1NzZlMVx1OGExOFx1OTMwNCIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sc0xvZ1dpZHRoOntkZXNjOiJcdTUxNDNcdTRlZjZcdTk1Y2FcdTVlYTYgW1x1NTNlZlx1OGEyZFx1NWI5YVx1NzBiYTIwZW0sIDE1JSwgMjAwcHhcdTdiNDldIixkZWZhdWx0VmFsdWU6IjIwMHB4Iix0eXBlOiJ0ZXh0In19LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1mdW5jdGlvbigpe3ZhciBiPWMoIiNhbi1sb2ciKTtpZihiLmxlbmd0aClyZXR1cm4gYjtkLnV0aWwuYWRkU3R5bGUoYy5zcHJpbnRmKCJcdFx0XHQjYW4tbG9nIHsgZGlzcGxheTogbm9uZTsgaGVpZ2h0OiAzMCU7IHdpZHRoOiAlczsgYm90dG9tOiAwOyByaWdodDogMDsgfSBcdFx0XHQjYW4tbG9nLWhlYWRlciB7IGZvbnQtd2VpZ2h0OiBib2xkOyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IHBhZGRpbmctYm90dG9tOiAwLjJlbTsgfSBcdFx0XHQjYW4tbG9nLWNvbnRlbnQgbGkgeyBkaXNwbGF5OiBub25lOyBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOyBwYWRkaW5nOiAwLjNlbSAwOyB9IFx0XHRcdCIsCmQudXRpbC5nZXRPcHRpb25zKCJzTG9nV2lkdGgiKSkpO3JldHVybiBjKCdceDNjZGl2IGlkXHgzZCJhbi1sb2ciIGNsYXNzXHgzZCJhbi1tb2QgYW4tc21hbGwiXHgzZVx4M2NkaXYgaWRceDNkImFuLWxvZy1oZWFkZXIiXHgzZUxvZ1x4M2MvZGl2XHgzZVx4M2N1bCBpZFx4M2QiYW4tbG9nLWNvbnRlbnQiXHgzZVx4M2MvdWxceDNlXHgzYy9kaXZceDNlJykuYXBwZW5kVG8oIiNhbi11aSIpfTtkLnV0aWwuZ2V0T3B0aW9ucygiYkFkZExvZ0J1dHRvbiIpJiZkLnNoYXJlZC5hZGRNYWluKCJcdThhMThcdTkzMDQiLGZ1bmN0aW9uKCl7YigpLmZhZGVUb2dnbGUoKX0pO2Quc2hhcmVkLmxvZz1mdW5jdGlvbihnKXt2YXIgbD1iKCk7aWYoIWMuaXNSdWJiaXNoKGcpKXtkLnV0aWwuZ2V0T3B0aW9ucygiYkF1dG9TaG93TG9nIikmJmwuZmFkZUluKCJmYXN0Iik7dmFyIGg9bmV3IERhdGUsbD1oLmdldEhvdXJzKCk7MTA+bCYmKGw9IjAiK2wpO2g9aC5nZXRNaW51dGVzKCk7MTA+aCYmKGg9IjAiKwpoKTt2YXIgbT1jKCIjYW4tbG9nLWNvbnRlbnQiKTtjKGMuc3ByaW50ZigiXHgzY2xpXHgzZSVzOiVzICVzXHgzYy9saVx4M2UiLGwsaCxnKSkucHJlcGVuZFRvKG0pLnNsaWRlRG93bigic2xvdyIpO20uY2hpbGRyZW4oIjpndCg1MCkiKS5yZW1vdmUoKX19O2QudXRpbC5nZXRPcHRpb25zKCJiU2hvd0RldGFpbExvZyIpJiYoZC5zaGFyZWQubG9nMj1kLnNoYXJlZC5sb2cpO2QuYm94LmRlYnVnTW9kZSYmKGQuc2hhcmVkLmRlYnVnPWQuc2hhcmVkLmxvZyk7Yy5hamF4U2V0dXAoe2Vycm9yOmZ1bmN0aW9uKGIsbCxoKXtkLnNoYXJlZC5sb2coYy5zcHJpbnRmKCJcdThiODBcdTUzZDZcdTc2ZWVcdTZhMTlcdTY2NDJcdTc2N2NcdTc1MWZcdTkzMmZcdThhYTQ6ICVzICVzIixiLnN0YXR1cyxiLnN0YXR1c1RleHQpKX19KX19LCJlOTA1MWJiOC0yNjEzLTRmMTAtODJlYy02OTI5MDgzMWM2YTUiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTYzMDlcdTYyNmRcdTUxNDNcdTRlZjYgW1x1NWRlNlx1NGUwYV0iLApwYWdlOns2NTUzNDohMH0sdHlwZToxLG9wdGlvbnM6e2JBZGRCdXR0b25zQnV0dG9uOntkZXNjOiJcdTUyYTBcdTUxNjVcdTYzMDlcdTYyNmRcdTUxNDNcdTRlZjZcdTk1OGJcdTk1ZGNcdTYzMDlcdTYyNmQiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJBdXRvU2hvd0J1dHRvbnM6e2Rlc2M6Ilx1ODFlYVx1NTJkNVx1OTg2Zlx1NzkzYVx1NjMwOVx1NjI2ZFx1NTE0M1x1NGVmNiIsZGVmYXVsdFZhbHVlOiEwLHR5cGU6ImNoZWNrYm94In19LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1mdW5jdGlvbigpe3ZhciBiPWMoIiNhbi1idXR0b25zIik7aWYoYi5sZW5ndGgpcmV0dXJuIGI7ZC51dGlsLmFkZFN0eWxlKGMuc3ByaW50ZigiIFx0XHRcdCNhbi1idXR0b25zIHsgJXMgbGVmdDogNXB4OyB0b3A6IDMwcHg7IGJvcmRlci1sZWZ0OiA1cHggc29saWQ7IHBhZGRpbmctbGVmdDogMC4zZW07IH0gXHRcdFx0I2FuLWJ1dHRvbnMgYSB7IHBhZGRpbmc6IDAuMTVlbSAwOyB9IFx0XHRcdCIsCmQudXRpbC5nZXRPcHRpb25zKCJiQXV0b1Nob3dCdXR0b25zIik/IiI6ImRpc3BsYXk6IG5vbmU7IikpO3JldHVybiBjKCdceDNjZGl2IGlkXHgzZCJhbi1idXR0b25zIiBjbGFzc1x4M2QiYW4tbW9kIlx4M2VceDNjdWwgY2xhc3NceDNkImFuLW1lbnUiXHgzZVx4M2MvdWxceDNlXHgzYy9kaXZceDNlJykuYXBwZW5kVG8oIiNhbi11aSIpfTtkLnV0aWwuZ2V0T3B0aW9ucygiYkFkZEJ1dHRvbnNCdXR0b24iKSYmZC5zaGFyZWQuYWRkTWFpbigiXHU2MzA5XHU2MjZkIixmdW5jdGlvbigpe2IoKS5mYWRlVG9nZ2xlKCl9KTtkLnNoYXJlZC5hZGRCdXR0b249ZnVuY3Rpb24oZCxsKXt2YXIgaD1iKCk7ZCYmaC5maW5kKCJ1bCIpLmFwcGVuZCgic3RyaW5nIj09PXR5cGVvZiBsP2Muc3ByaW50ZignXHgzY2xpXHgzZVx4M2NhIGhyZWZceDNkIiVzIlx4M2Ulc1x4M2MvYVx4M2VceDNjL2xpXHgzZScsbCxkKTpjKCdceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZScrZCsKIlx4M2MvYVx4M2VceDNjL2xpXHgzZSIpLmNsaWNrKGwpKX19fSwiNDM3ZGM3ZGEtZmRmYS00MjlhLWFlYzUtMzI5YzgwMjIyMzI3Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU5MDIzXHU3ZDUwXHU1MTQzXHU0ZWY2IFtcdTVkZTZcdTRlMmRdIixwYWdlOns2NTUzNDohMH0sdHlwZToxLG9wdGlvbnM6e2JBZGRMaW5rc0J1dHRvbjp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU5MDIzXHU3ZDUwXHU1MTQzXHU0ZWY2XHU5NThiXHU5NWRjXHU2MzA5XHU2MjZkIixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxiQXV0b1Nob3dMaW5rczp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU5ODZmXHU3OTNhXHU5MDIzXHU3ZDUwXHU1MTQzXHU0ZWY2IixkZWZhdWx0VmFsdWU6ITAsdHlwZToiY2hlY2tib3gifX0sb25jZTpmdW5jdGlvbihiKXt2YXIgZz1mdW5jdGlvbigpe3ZhciBnPWMoIiNhbi1saW5rcyIpO2lmKGcubGVuZ3RoKXJldHVybiBnO2QudXRpbC5hZGRTdHlsZShjLnNwcmludGYoIiBcdFx0XHQjYW4tbGlua3MgeyAlcyB0b3A6IDUwJTsgbGVmdDogMDsgdGV4dC1hbGlnbjogcmlnaHQ7IH0gXHRcdFx0I2FuLWxpbmtzIGEgeyBwYWRkaW5nOiAwLjNlbSAwLjFlbSAwLjJlbSAxLjVlbTsgfSBcdFx0XHQjYW4tbGlua3MtdG9wIGxpIHsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyB9IFx0XHRcdCNhbi1saW5rcy1taWRkbGUgbGkgeyBib3JkZXItd2lkdGg6IDFweCAwOyB9IFx0XHRcdCNhbi1saW5rcy1ib3R0b20gbGkgeyBib3JkZXItdG9wLXdpZHRoOiAxcHg7IH0gXHRcdFx0IiwKZC51dGlsLmdldE9wdGlvbnMoImJBdXRvU2hvd0xpbmtzIik/IiI6ImRpc3BsYXk6IG5vbmU7IikpO2c9YygnXHgzY2RpdiBpZFx4M2QiYW4tbGlua3MiIGNsYXNzXHgzZCJhbi1tb2QiXHgzZVx4M2N1bCBpZFx4M2QiYW4tbGlua3MtdG9wIiBjbGFzc1x4M2QiYW4tbWVudSJceDNlXHgzYy91bFx4M2VceDNjdWwgaWRceDNkImFuLWxpbmtzLW1pZGRsZSIgY2xhc3NceDNkImFuLW1lbnUiXHgzZVx4M2MvdWxceDNlXHgzY3VsIGlkXHgzZCJhbi1saW5rcy1ib3R0b20iIGNsYXNzXHgzZCJhbi1tZW51Ilx4M2VceDNjL3VsXHgzZVx4M2MvZGl2XHgzZScpLmFwcGVuZFRvKCIjYW4tdWkiKTtiLmRlZmVyKDEsIlx1OGFiZlx1NjU3NFx1OTAyM1x1N2Q1MFx1NTE0M1x1NGVmNlx1NGY0ZFx1N2Y2ZSIsZnVuY3Rpb24oKXtnLmNzcygibWFyZ2luLXRvcCIsLWcuaGVpZ2h0KCkvMil9KTtyZXR1cm4gZ307ZC51dGlsLmdldE9wdGlvbnMoImJBZGRMaW5rc0J1dHRvbiIpJiZkLnNoYXJlZC5hZGRNYWluKCJcdTkwMjNcdTdkNTAiLApmdW5jdGlvbigpe2coKS5mYWRlVG9nZ2xlKCl9KTtkLnNoYXJlZC5hZGRMaW5rPWZ1bmN0aW9uKGIsZCxtKXt2b2lkIDA9PT1tJiYobT0xKTt2YXIgcT1nKCk7aWYoYilxLmNoaWxkcmVuKCkuZXEobSlbMj09bT8iYXBwZW5kIjoicHJlcGVuZCJdKCJzdHJpbmciPT10eXBlb2YgZD9jLnNwcmludGYoJ1x4M2NsaVx4M2VceDNjYSBocmVmXHgzZCIlcyJceDNlJXNceDNjL2FceDNlXHgzYy9saVx4M2UnLGQsYik6YygnXHgzY2xpXHgzZVx4M2NhIGhyZWZceDNkImphdmFzY3JpcHQ6Ilx4M2UnK2IrIlx4M2MvYVx4M2VceDNjL2xpXHgzZSIpLmNsaWNrKGQpKX19fSwiMWM2ZTg4NjktODE0OC00ZTU4LWI0NDAtMzFlMWJlZTRhZWYxIjp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU4Y2M3XHU4YTBhXHU1MTQzXHU0ZWY2IFtcdTVkZTZcdTRlMGJdIixwYWdlOns2NTUzNDohMH0sdHlwZToxLG9wdGlvbnM6e2JBZGRJbmZvQnV0dG9uOntkZXNjOiJcdTUyYTBcdTUxNjVcdThjYzdcdThhMGFcdTUxNDNcdTRlZjZcdTk1OGJcdTk1ZGNcdTYzMDlcdTYyNmQiLApkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxiQXV0b1Nob3dJbmZvOntkZXNjOiJcdTgxZWFcdTUyZDVcdTk4NmZcdTc5M2FcdThjYzdcdThhMGFcdTg5OTZcdTdhOTciLGRlZmF1bHRWYWx1ZTohMCx0eXBlOiJjaGVja2JveCJ9fSxvbmNlOmZ1bmN0aW9uKGIpe3ZhciBnPWZ1bmN0aW9uKCl7dmFyIGI9YygiI2FuLWluZm8iKTtpZihiLmxlbmd0aClyZXR1cm4gYjtkLnV0aWwuYWRkU3R5bGUoYy5zcHJpbnRmKCIgXHRcdFx0I2FuLWluZm8geyAlczsgbGVmdDogMTBweDsgYm90dG9tOiAxMHB4OyBib3JkZXItd2lkdGg6IDAgMCAxcHggMXB4OyB9IFx0XHRcdCNhbi1pbmZvLWNvbnRlbnQgeyBwYWRkaW5nOiAxZW0gMWVtIDAgMC41ZW0gIWltcG9ydGFudDsgfSBcdFx0XHQjYW4taW5mby1mb290ZXIgeyB0ZXh0LWFsaWduOiByaWdodDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gXHRcdFx0I2FuLWluZm8gbGkgeyBkaXNwbGF5OiBub25lOyBwYWRkaW5nLWJvdHRvbTogMC41ZW07IH0gXHRcdFx0I2FuLWluZm8gbGkgYSB7IGRpc3BsYXk6IGlubGluZTsgfSBcdFx0XHQiLApkLnV0aWwuZ2V0T3B0aW9ucygiYkF1dG9TaG93SW5mbyIpPyIiOiJkaXNwbGF5OiBub25lIikpO3JldHVybiBjKCdceDNjZGl2IGlkXHgzZCJhbi1pbmZvIiBjbGFzc1x4M2QiYW4tbW9kIlx4M2VceDNjdWwgaWRceDNkImFuLWluZm8tY29udGVudCIgY2xhc3NceDNkImFuLW1lbnUgYW4tc21hbGwiXHgzZVx4M2MvdWxceDNlXHgzY2RpdiBjbGFzc1x4M2QiYW4tc21hbGwiIGlkXHgzZCJhbi1pbmZvLWZvb3RlciJceDNlSW5mb1x4M2MvZGl2XHgzZVx4M2MvZGl2XHgzZScpLmFwcGVuZFRvKCIjYW4tdWkiKX07KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe3JldHVybiBjKCIjaGtnX2JvdHRvbWJhciIpLmxlbmd0aCYmZC51dGlsLmFkZFN0eWxlKCIjYW4taW5mbyB7IGJvdHRvbTogMzBweCAhaW1wb3J0YW50OyB9IikmJiEwfSFiKCkmJndpbmRvdy5hZGRFdmVudExpc3RlbmVyP3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixiLCExKTp3aW5kb3cuYXR0YWNoRXZlbnQoIm9ubG9hZCIsCmIpfSkoKTtkLnV0aWwuZ2V0T3B0aW9ucygiYkFkZEluZm9CdXR0b24iKSYmZC5zaGFyZWQuYWRkTWFpbigiXHU4Y2M3XHU4YTBhIixmdW5jdGlvbigpe2coKS5mYWRlVG9nZ2xlKCl9KTtkLnNoYXJlZC5hZGRJbmZvPWZ1bmN0aW9uKGIpe2coKTtpZihiKXJldHVybiBjKCJceDNjbGlceDNlIitiKyJceDNjL2xpXHgzZSIpLmFwcGVuZFRvKCIjYW4taW5mby1jb250ZW50IikuZmFkZUluKCJzbG93Iil9fX0sIjU2ZWNhYzUxLTAyNTctNGQzNC04OTdkLTYzMzEyNDdiMDE3ZCI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1OTVkY1x1NjViY1x1NTE0M1x1NGVmNiIscGFnZTp7NjU1MzQ6ImNvbXAifSx0eXBlOjEsb25jZTpmdW5jdGlvbigpe2Quc2hhcmVkLmFkZE1haW4oIlx1OTVkY1x1NjViYyIsZnVuY3Rpb24oKXtpZighYygiI2FuLWFib3V0IikubGVuZ3RoKXtkLnV0aWwuYWRkU3R5bGUoIlx0XHRcdFx0I2FuLWFib3V0IFx4M2UgZGl2IHsgbWFyZ2luOiAwLjVlbTsgfSBcdFx0XHRcdCNhbi1hYm91dCBoMSB7IG1hcmdpbjogMC41ZW07IGZvbnQtc2l6ZTogMmVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gXHRcdFx0XHQjYW4tYWJvdXQgaHIgeyBib3JkZXItd2lkdGg6IDFweDsgbWFyZ2luOiAxZW0gMC41ZW07IH0gXHRcdFx0XHQjYW4tYWJvdXQgZGl2IGRpdiB7IG92ZXJmbG93LXk6IGF1dG87IG92ZXJmbG93LXg6IGhpZGRlbjsgd2lkdGg6IDgwJTsgaGVpZ2h0OiAyMDBweDsgbWFyZ2luOiAwIGF1dG87IGJvcmRlci13aWR0aDogMXB4OyB9IFx0XHRcdFx0I2FuLWFib3V0IGRsIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIDAuNWVtIDAuNWVtOyBmb250LXNpemU6IDAuOGVtOyB9IFx0XHRcdFx0I2FuLWFib3V0IGR0IHsgbWFyZ2luLXRvcDogMWVtOyB9IFx0XHRcdFx0I2FuLWFib3V0IGRkIHsgbWFyZ2luOiAwOyBsaW5lLWhlaWdodDogMS4zOyB9IFx0XHRcdFx0I2FuLWFib3V0IHAgeyBtYXJnaW46IDFlbSAwOyBmb250LXNpemU6IDAuNzVlbTsgdGV4dC1hbGlnbjogY2VudGVyOyB9IFx0XHRcdFx0Iik7CnZhciBiPWQuc2hhcmVkLmJveCgiYW4tYWJvdXQiLCJcdTk1ZGNcdTY1YmMiLDUwMCwiYXV0byIpLmFwcGVuZCgnXHgzY2Rpdlx4M2VceDNjaDFceDNlSGVsaWFudGh1cy5hbm51dXNceDNjL2gxXHgzZVx4M2NociAvXHgzZVx4M2NkaXZceDNlXHgzY2RsXHgzZVx4M2MvZGxceDNlXHgzYy9kaXZceDNlXHgzY3BceDNlXHgyNmNvcHk7IDIwMDkgXHU1NDExXHU2NWU1IExpY2VuY2VkIHVuZGVyIFx4M2NhIGhyZWZceDNkImh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCIgdGFyZ2V0XHgzZCJfYmxhbmsiXHgzZUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYzXHgzYy9hXHgzZVx4M2MvcFx4M2VceDNjL2Rpdlx4M2UnKSxnPSIiLGc9ZysiXHgzY2R0XHgzZVtcdTdhMGJcdTVmMGZdXHgzYy9kdFx4M2UiO2MuZWFjaCh7Ilx1NTQwZFx1N2EzMSI6IkhlbGlhbnRodXMuYW5udXVzIiwiXHU0ZjVjXHU4MDA1IjonXHgzY2EgdGFyZ2V0XHgzZCJfYmxhbmsiIGhyZWZceDNkIlByb2ZpbGVQYWdlLmFzcHg/dXNlcmlkXHgzZDE0ODcyMCJceDNlXHU1NDExXHU2NWU1XHgzYy9hXHgzZScsCiJcdTRlM2JcdTk4MDEiOidceDNjYSB0YXJnZXRceDNkIl9ibGFuayIgaHJlZlx4M2QiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hlbGlhbnRodXMtYW5udXVzLyJceDNlaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hlbGlhbnRodXMtYW5udXVzL1x4M2MvYVx4M2UnLCJcdTcyNDhcdTY3MmMiOmQudmVyc2lvbiwiXHU1MTMyXHU1YjU4XHU2NWI5XHU1ZjBmIjpjLnNwcmludGYoJ1x4M2NzZWxlY3QgaWRceDNkImFuLWFib3V0LXN0b3JhZ2UiXHgzZVx4M2NvcHRpb25ceDNlRmxhc2hceDNjL29wdGlvblx4M2VceDNjL3NlbGVjdFx4M2UnKSwiXHU5NjY0XHU5MzJmXHU2YTIxXHU1ZjBmIjpkLmJveC5kZWJ1Z01vZGU/Ilx1NTU1Zlx1NzUyOCI6Ilx1NTA1Y1x1NzUyOCJ9LGZ1bmN0aW9uKGIsZCl7Zys9Yy5zcHJpbnRmKCJceDNjZGRceDNlJXM6ICVzXHgzYy9kZFx4M2UiLGIsZCl9KTtnKz0iXHgzY2R0XHgzZVtDcmVkaXRzXVx4M2MvZHRceDNlIjtjLmVhY2goW3tuYW1lOiJqUXVlcnkiLAphdXRob3I6IkpvaG4gUmVzaWciLHVybDoiaHR0cDovL2pxdWVyeS5jb20iLGxpY2Vuc2U6IkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzIixsaWNlbnNlVXJsOiJodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UifSx7bmFtZToianNvbjIuanMiLGF1dGhvcjoiRG91Z2xhcyBDcm9ja2ZvcmQiLHVybDoiaHR0cDovL3d3dy5qc29uLm9yZy9qcy5odG1sIixsaWNlbnNlOiJQdWJsaWMgRG9tYWluIixsaWNlbnNlVXJsOiIjIn0se25hbWU6ImpxdWVyeS5zcHJpbnRmIixhdXRob3I6IlNhYmluIElhY29iIix1cmw6Imh0dHA6Ly9wbHVnaW5zLmpxdWVyeS5jb20vcHJvamVjdC9wcmludGYiLGxpY2Vuc2U6IkdQTCBWZXJzaW9uIDMiLGxpY2Vuc2VVcmw6Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCJ9LHtuYW1lOiJqUXVlcnkgZG9UaW1lb3V0IixhdXRob3I6IkJlbiBBbG1hbiIsdXJsOiJodHRwOi8vYmVuYWxtYW4uY29tL3Byb2plY3RzL2pxdWVyeS1kb3RpbWVvdXQtcGx1Z2luLyIsCmxpY2Vuc2U6IkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzIixsaWNlbnNlVXJsOiJodHRwOi8vYmVuYWxtYW4uY29tL2Fib3V0L2xpY2Vuc2UvIn0se25hbWU6J1JlZCBGbG93ZXIgSWNvbiBbXHgzY2EgaHJlZlx4M2QiaHR0cDovL3d3dy5mYXN0aWNvbi5jb20iXHgzZUljb25zIGJ5OiBGYXN0SWNvbi5jb21ceDNjL2FceDNlXScsYXV0aG9yOiJGYXN0IEljb24iLHVybDoiaHR0cDovL3d3dy5pY29uYXJjaGl2ZS5jb20vc2hvdy9uYXR1cmUtaWNvbnMtYnktZmFzdGljb24vUmVkLUZsb3dlci1pY29uLmh0bWwiLGxpY2Vuc2U6IkZhc3QgSWNvbiBDb21tZXJjaWFsIExpY2Vuc2UiLGxpY2Vuc2VVcmw6Imh0dHA6Ly93d3cuZmFzdGljb24uY29tL2NvbW1lcmNpYWxfbGljZW5zZS5odG1sIn0se25hbWU6IkZ1Z3VlIEljb25zIixhdXRob3I6Ill1c3VrZSBLYW1peWFtYW5lIix1cmw6Imh0dHA6Ly93d3cucGludm9rZS5jb20vIixsaWNlbnNlOiJDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMCBsaWNlbnNlIiwKbGljZW5zZVVybDoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wLyJ9LHtuYW1lOiJTdGlsbCBMaWZlIixhdXRob3I6Ikp1bGlhbiBUdXJuZXIgIix1cmw6Imh0dHA6Ly9hcnQuZ25vbWUub3JnL3RoZW1lcy9pY29uLzExMTEiLGxpY2Vuc2U6IkNyZWF0aXZlIENvbW1vbnMgKEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBHZW5lcmljKSIsbGljZW5zZVVybDoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wLyJ9XSxmdW5jdGlvbigpe2crPWMuc3ByaW50ZignXHgzY2R0XHgzZSUobmFtZSlzXHgzYy9kdFx4M2VceDNjZGRceDNlYnkgJShhdXRob3Ipc1x4M2MvZGRceDNlXHgzY2RkXHgzZVx4M2NhIGhyZWZceDNkIiUodXJsKXMiXHgzZSUodXJsKXNceDNjL2FceDNlXHgzYy9kZFx4M2VceDNjZGRceDNlTGljZW5zZTogXHgzY2EgaHJlZlx4M2QiJShsaWNlbnNlVXJsKXMiXHgzZSUobGljZW5zZSlzXHgzYy9hXHgzZVx4M2MvZGRceDNlJywKdGhpcyl9KTtiLmZpbmQoImRsIikuYXBwZW5kKGcpO2Muc3VwcG9ydC5sb2NhbFN0b3JhZ2UmJmMoIiNhbi1hYm91dC1zdG9yYWdlIikuYXBwZW5kKCJceDNjb3B0aW9uXHgzZURPTVx4M2Mvb3B0aW9uXHgzZSIpO2MoIiNhbi1hYm91dC1zdG9yYWdlIikudmFsKGQuYm94LnN0b3JhZ2VNb2RlKS5jaGFuZ2UoZnVuY3Rpb24oKXtkLnV0aWwuY29va2llKCJhbi1zdG9yYWdlbW9kZSIsYyh0aGlzKS52YWwoKSk7Qy5yZWxvYWQoKX0pfWQuc2hhcmVkLmdyYXkoITAsImFuLWFib3V0Iil9KX19LCI2Mjk5NDRhMC1hNGYyLTQ5M2MtOGM4ZC1lMTI2MWE5MjY0ZjkiOntkZXNjOiJcdTlmMjBcdTZhMTlcdTkwNjBcdTk2ZTJVSVx1NTE0M1x1NGVmNlx1NjY0Mlx1NTM0YVx1OTAwZlx1NjYwZSBbYnVnZ3kgb24gSUU4XSIscGFnZTp7NjU1MzQ6ITF9LHR5cGU6MSxvcHRpb25zOntuVUlPcGFjaXR5OntkZXNjOiJcdTkwMGZcdTY2MGVcdTVlYTYgKDEwIFx4M2QgXHU3OWZiXHU5NjY0XHU1MzRhXHU5MDBmXHU2NjBlKSIsCnR5cGU6InNlbGVjdCIsZGVmYXVsdFZhbHVlOjMsY2hvaWNlczpbMTAsOSw4LDcsNiw1LDQsMywyLDEsMF19fSxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCJcdFx0LmFuLW1vZCB7IG9wYWNpdHk6ICVzOyAtbXMtZmlsdGVyOiBhbHBoYShvcGFjaXR5XHgzZCVzKTsgfSBcdFx0LmFuLW1vZDpob3ZlciB7IG9wYWNpdHk6IDE7IC1tcy1maWx0ZXI6IGFscGhhKG9wYWNpdHlceDNkMTAwKTsgfSBcdFx0IixkLnV0aWwuZ2V0T3B0aW9ucygiblVJT3BhY2l0eSIpLzEwLDEwKmQudXRpbC5nZXRPcHRpb25zKCJuVUlPcGFjaXR5IikpKX19LCIwYjU4NzcyNC1hM2E3LTQxYmUtOTVkOC05NmM3MjZkMzgzNDMiOntkZXNjOiJcdTk2NjRcdTkzMmZcdTZhMjFcdTVmMGYoXHU3ZThjKSIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjEsb25jZTpmdW5jdGlvbigpe2QuYm94LmRlYnVnTW9kZSYmKGQuc2hhcmVkKCJsb2ciKSxkLnNoYXJlZCgiYWRkTGluayIpLGQuc2hhcmVkKCJhZGRCdXR0b24iLAoiXHU3OWZiXHU5NjY0XHU1MTMyXHU1YjU4XHU4Y2M3XHU2NTk5IixmdW5jdGlvbigpe2NvbmZpcm0oIlx1NzhiYVx1NWI5YVx1NzlmYlx1OTY2NFx1NTEzMlx1NWI1OFx1OGNjN1x1NjU5OT8iKSYmKGQudXRpbC5zdG9yYWdlKG51bGwpLEMucmVsb2FkKCkpfSksZC5zaGFyZWQoImFkZEJ1dHRvbiIsIlx1OTg2Zlx1NzkzYVx1NTEzMlx1NWI1OFx1OGNjN1x1NjU5OSIsZnVuY3Rpb24oKXtjKCIjYW4tc2F2ZWRzZXR0aW5ncyIpLmxlbmd0aHx8KGQuc2hhcmVkKCJib3giLCJhbi1zYXZlZHNldHRpbmdzIiwiXHU1MTMyXHU1YjU4XHU4Y2M3XHU2NTk5IixudWxsLCJtYXgiKSxkLnV0aWwuYWRkU3R5bGUoIiNhbi1zYXZlZHNldHRpbmdzIHsgcGFkZGluZzogMCAyZW07IH0gI2FuLXNhdmVkc2V0dGluZ3MgY29kZSB7IGRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJlOyBtYXJnaW46IDFlbSAwOyBmb250LWZhbWlseTogQ29uc29sYXM7IH0iKSxjKCIjYW4tc2F2ZWRzZXR0aW5ncyIpLmFwcGVuZCgiXHgzY2NvZGVceDNlXHgzYy9jb2RlXHgzZSIpKTsKYygiI2FuLXNhdmVkc2V0dGluZ3MgY29kZSIpLnRleHQoZC51dGlsLnN0b3JhZ2UoKS5yZXBsYWNlKC97W157XSp9LD8vZyxmdW5jdGlvbihiKXtyZXR1cm4gYi5yZXBsYWNlKC8sL2csIixcbiIpfSkpO2Quc2hhcmVkKCJncmF5IiwhMCwiYW4tc2F2ZWRzZXR0aW5ncyIpfSksZC5zaGFyZWQoImFkZEJ1dHRvbiIsIlx1OTg2Zlx1NzkzYVx1NTI5Zlx1ODBmZFx1NTIxN1x1ODg2OCIsZnVuY3Rpb24oKXtpZighYygiI2FuLWZ1bmN0aW9ubGlzdCIpLmxlbmd0aCl7ZC5zaGFyZWQoImJveCIsImFuLWZ1bmN0aW9ubGlzdCIsIlx1NTI5Zlx1ODBmZFx1NTIxN1x1ODg2OCIsNjAwLDQwMCk7ZC51dGlsLmFkZFN0eWxlKCIjYW4tZnVuY3Rpb25saXN0IHRleHRhcmVhIHsgbWFyZ2luOiAxMHB4OyB3aWR0aDogNTcwcHg7IGhlaWdodDogMzcwcHg7IGZvbnQtZmFtaWx5OiBDb25zb2xhczsgfSIpO2MoIiNhbi1mdW5jdGlvbmxpc3QiKS5hcHBlbmQoJ1x4M2N0ZXh0YXJlYSByZWFkb25seVx4M2QicmVhZG9ubHkiXHgzZVx4M2MvdGV4dGFyZWFceDNlJyk7CnZhciBiPSIiO2MuZWFjaChkLm1vZCxmdW5jdGlvbihkKXt0aGlzLmZuJiYoYis9IlxyIitkKyI6XHJcciIsYy5lYWNoKHRoaXMuZm4sZnVuY3Rpb24oKXtiKz0iICogIit0aGlzLmRlc2MrIlxyIn0pKX0pO2MoIiNhbi1mdW5jdGlvbmxpc3QgdGV4dGFyZWEiKS50ZXh0KGIpfWQuc2hhcmVkKCJncmF5IiwhMCwiYW4tZnVuY3Rpb25saXN0Iil9KSl9fX19O2MuZXh0ZW5kKHt0aW1lOmZ1bmN0aW9uKGIpe3JldHVybiBiP2MudGltZSgpLWI6K25ldyBEYXRlfSxjb3JyZWN0OmZ1bmN0aW9uKGIpe3JldHVybiJ0cnVlIj09Yj8hMDoiZmFsc2UiPT1iPyExOmlzTmFOKGIpfHwiIj09PWI/YjoxKmJ9LGRvYzpmdW5jdGlvbihiKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkLmlubmVySFRNTD1iO3JldHVybiBjKGQpfSxnZXREb2M6ZnVuY3Rpb24oYixnKXt2YXIgbD17dXJsOmIsZGF0YVR5cGU6InRleHQiLHN1Y2Nlc3M6ZnVuY3Rpb24oYil7Yj1jLmRvYyhiKTtiLnBhZ2VDb2RlKCkmCjY1NTM0P2cuY2FsbChsLGIpOmwuZXJyb3IoKX0sZXJyb3I6ZnVuY3Rpb24oKXtkLnNoYXJlZCgibG9nIiwiXHU5ODAxXHU5NzYyXHU4YjgwXHU1M2Q2XHU1OTMxXHU2NTU3LCA1XHU3OWQyXHU1ZjhjXHU5MWNkXHU2NWIwXHU4YjgwXHU1M2Q2Li4uIik7c2V0VGltZW91dChmdW5jdGlvbigpe2MuZ2V0RG9jKGIsZyl9LDVFMyl9fTtjLmFqYXgobCl9LGdldExlbmd0aDpmdW5jdGlvbihiKXtpZigibGVuZ3RoImluIGIpcmV0dXJuIGIubGVuZ3RoO2Zvcih2YXIgYyBpbiBiKTtyZXR1cm4gY30sbWFrZTpmdW5jdGlvbihiLGQpe2MuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYyxoKXsyPmN8fChkW2hdfHwoZFtoXT0ibyI9PWI/e306W10pLGQ9ZFtoXSl9KTtyZXR1cm4gZH0saXNFbXB0eTpmdW5jdGlvbihiKXtpZigibGVuZ3RoImluIGIpcmV0dXJuIGIubGVuZ3RoO2Zvcih2YXIgYyBpbiBiKXJldHVybiExO3JldHVybiEwfSxpc1J1YmJpc2g6ZnVuY3Rpb24oYil7cmV0dXJuIHZvaWQgMD09PQpifHxudWxsPT09Ynx8TmFOPT09Yn0sd2luV2lkdGg6ZnVuY3Rpb24oYil7cmV0dXJuIE1hdGgucm91bmQoYmEud2lkdGgoKSooYnx8MSkpfSx3aW5IZWlnaHQ6ZnVuY3Rpb24oYil7cmV0dXJuIE1hdGgucm91bmQoYmEuaGVpZ2h0KCkqKGJ8fDEpKX19KTtjLmZuLmV4dGVuZCh7dG9GbGFzaDpmdW5jdGlvbihiLGQsbCl7ZHx8KGQ9e30pO2QuaWR8fChkLmlkPXRoaXNbMF0uaWR8fCJhbi1mbGFzaC0iK2MudGltZSgpKTtkLndpZHRofHwoZC53aWR0aD0wKTtkLmhlaWdodHx8KGQuaGVpZ2h0PTApO2x8fChsPXt9KTtsLmFsbG93c2NyaXB0YWNjZXNzfHwobC5hbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIik7Yy5icm93c2VyLm1zaWU/KGQuY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIixsLm1vdmllPWIpOihkLmRhdGE9YixkLnR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIik7dmFyIGg9IiIsbT0iIjtjLmVhY2goZCxmdW5jdGlvbihiLApkKXtoKz1jLnNwcmludGYoJyVzXHgzZCIlcyIgJyxiLGQpfSk7Yy5lYWNoKGwsZnVuY3Rpb24oYixkKXttKz1jLnNwcmludGYoJ1x4M2NwYXJhbSBuYW1lXHgzZCIlcyIgdmFsdWVceDNkIiVzIiAvXHgzZScsYixkKX0pO2I9Yy5zcHJpbnRmKCJceDNjb2JqZWN0ICVzXHgzZSVzXHgzYy9vYmplY3RceDNlIixoLG0pO2MuYnJvd3Nlci5tc2llP3RoaXNbMF0ub3V0ZXJIVE1MPWI6dGhpcy5yZXBsYWNlV2l0aChiKTtyZXR1cm4gYygiIyIrZC5pZCl9LGZuOmZ1bmN0aW9uKGIpe3RoaXMubGVuZ3RoJiZiLmNhbGwodGhpcyk7cmV0dXJuIHRoaXN9LG91dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF0/dGhpc1swXS5vdXRlckhUTUw/dGhpc1swXS5vdXRlckhUTUw6YygiXHgzY2Rpdlx4M2VceDNjL2Rpdlx4M2UiKS5hcHBlbmQodGhpcy5lcSgwKS5jbG9uZSgpKS5odG1sKCk6bnVsbH0sYU86ZnVuY3Rpb24oKXthbGVydCh0aGlzLm91dGVyKCkpO3JldHVybiB0aGlzfSxhTDpmdW5jdGlvbigpe2FsZXJ0KHRoaXMubGVuZ3RoKTsKcmV0dXJuIHRoaXN9LGZhZGVUb2dnbGU6ZnVuY3Rpb24oYil7Ynx8KGI9Im5vcm1hbCIpO3JldHVybiB0aGlzLmlzKCI6aGlkZGVuIik/dGhpcy5mYWRlSW4oYik6dGhpcy5mYWRlT3V0KGIpfSx1cDpmdW5jdGlvbihiLGQpe2R8fChkPTEpO3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgbD0wLGg9dGhpcztoJiZoLm93bmVyRG9jdW1lbnQ7KWlmKGg9aC5wYXJlbnROb2RlLGMoaCkuaXMoYikmJisrbD49ZClyZXR1cm4gaH0pfSxvd246ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaXMoYil8fCEhdGhpcy5oYXMoYikubGVuZ3RofSx0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQoKS50b3B9LHJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0KCkubGVmdCt0aGlzLmlubmVyV2lkdGgoKX0sYm90dG9tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0KCkudG9wK3RoaXMuaW5uZXJIZWlnaHQoKX0sbGVmdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZnNldCgpLmxlZnR9LApwYWdlTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNQYWdlTmFtZT90aGlzLnNQYWdlTmFtZTp0aGlzLnNQYWdlTmFtZT1jKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9TeXN0ZW1NZXNzYWdlQm9hcmQiLHRoaXMpLmxlbmd0aCYmIm1lc3NhZ2UifHxjKCIjYXNwbmV0Rm9ybSIsdGhpcykubGVuZ3RoJiZjKCIjYXNwbmV0Rm9ybSIsdGhpcykuYXR0cigiYWN0aW9uIikubWF0Y2goL1thLXowLTlfXSsoPz1cLmFzcHgpL2kpWzBdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvX2h0bWwkLywiIil8fGMoImJvZHkgXHgzZSA6Zmlyc3QiLHRoaXMpLmlzKCJiIikmJiJ0ZXJtcyJ8fGMoIiNteXR0Iix0aGlzKS5sZW5ndGgmJiJnb2dvZ2FtZSJ8fGMoJ2Zvcm1bYWN0aW9uKlx4M2QiLmFzcHgiXScsdGhpcykubGVuZ3RoJiYidW5rbm93biJ8fCJlcnJvciJ9LHBhZ2VDb2RlOmZ1bmN0aW9uKCl7aWYoIm5QYWdlQ29kZSJpbiB0aGlzKXJldHVybiB0aGlzLm5QYWdlQ29kZTt2YXIgYj10aGlzLnBhZ2VOYW1lKCksCmc7Yy5lYWNoKGQuYm94Lm9QYWdlTWFwLGZ1bmN0aW9uKGMpe2lmKHRoaXMuYWN0aW9uJiYoInN0cmluZyI9PT10eXBlb2YgdGhpcy5hY3Rpb24/dGhpcy5hY3Rpb249PT1iOnRoaXMuYWN0aW9uLnRlc3QoYikpKXJldHVybiBnPTEqYywhMX0pO2d8fChnPTApO3JldHVybiB0aGlzLm5QYWdlQ29kZT1nfSxwYWdlU2NvcGU6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNsb3Nlc3QoImRpdiIpO3JldHVybiBiLmxlbmd0aD9iOnRoaXN9LHBhZ2VObzpmdW5jdGlvbigpe3JldHVybiAxKnRoaXMucGFnZVNjb3BlKCkuZmluZCgic2VsZWN0W25hbWVceDNkcGFnZV06Zmlyc3QiKS52YWwoKX0scmVwbGllczpmdW5jdGlvbihiKXtpZih0aGlzLmpSZXBsaWVzKXJldHVybiB0aGlzLmpSZXBsaWVzO3ZhciBkPWMoKSxsPWMoKSxoPXRoaXMualJlcGxpZXM9dGhpcy5maW5kKCIucmVwbGllcnMiKS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGg9Yi5maW5kKCIucmVwbGllcnNfbGVmdCIpLnBhcmVudCgpOwpiLmRhdGEoe2pDb250ZW50OmguZmluZCgiLnJlcGxpZXJzX3JpZ2h0IHRkOmZpcnN0Iiksak5hbWVMaW5rOmguZmluZCgiYVtocmVmXTpmaXJzdCIpLHNVc2VyaWQ6aC5hdHRyKCJ1c2VyaWQiKSxzVXNlck5hbWU6aC5hdHRyKCJ1c2VybmFtZSIpfSk7aWYoYi5kYXRhKCJzVXNlcmlkIikpcmV0dXJuIGQucHVzaChiLmRhdGEoImpDb250ZW50IilbMF0pLGwucHVzaChiLmRhdGEoImpOYW1lTGluayIpWzBdKSwhMH0pLmV4dGVuZCh7akNvbnRlbnRzOmQsak5hbWVMaW5rczpsfSk7cmV0dXJuIGI/aC5maWx0ZXIoYik6aH0sdHJlZVRvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzWzBdPT09ZG9jdW1lbnR8fGMoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5vd24odGhpcyk/djp0aGlzfSx0b3BpY1RhYmxlOmZ1bmN0aW9uKCl7aWYodGhpcy5qVG9waWNUYWJsZSlyZXR1cm4gdGhpcy5qVG9waWNUYWJsZTt2YXIgYj10aGlzO3RoaXMudHJlZVRvcCgpLmZpbmQoInRkLHRoIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0KYyh0aGlzKS5jaGlsZHJlbigpLmxlbmd0aH0pLmVhY2goZnVuY3Rpb24oKXtpZigvXHMqXHU1NmRlXHU4OTg2Ly50ZXN0KGModGhpcykuaHRtbCgpKSlyZXR1cm4gYi5qVG9waWNUYWJsZT1jKHRoaXMpLnVwKCJ0YWJsZSIpLCExfSk7cmV0dXJuIHRoaXMualRvcGljVGFibGV9LHRvcGljczpmdW5jdGlvbihiKXtpZih0aGlzLmpUb3BpY3MpcmV0dXJuIHRoaXMualRvcGljczt2YXIgZD10aGlzLnRvcGljVGFibGUoKTtpZihkKXt2YXIgbD10aGlzLmpUb3BpY3M9ZC5maW5kKCJ0ciIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiEhYyh0aGlzKS5jaGlsZHJlbigpLmNoaWxkcmVuKCJhIikubGVuZ3RofSk7bC5leHRlbmQoe2pOYW1lTGlua3M6YyhbXSksalRpdGxlQ2VsbHM6YyhbXSksalRib2R5OnRoaXMudG9waWNUYWJsZSgpLmNoaWxkcmVuKCl9KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxkPWIuZmluZCgiYSIpO2IuZGF0YSgiak5hbWVMaW5rIixkLmZpbHRlcigiOmxhc3QiKSkuZGF0YSgialRpdGxlQ2VsbCIsCmQuZXEoMCkucGFyZW50KCkpLmRhdGEoInNUaXRsZSIsZC5lcSgwKS5odG1sKCkpLmRhdGEoInNUb3BpY2lkIixkLmVxKDApLmF0dHIoImhyZWYiKS5yZXBsYWNlKC8uKz9pZD0oXGQrKS4qLywiJDEiKSkuZGF0YSgic1VzZXJOYW1lIixkLmZpbHRlcigiOmxhc3QiKS5odG1sKCkpO2wuak5hbWVMaW5rcy5wdXNoKGIuZGF0YSgiak5hbWVMaW5rIilbMF0pO2wualRpdGxlQ2VsbHMucHVzaChiLmRhdGEoImpUaXRsZUNlbGwiKVswXSl9KTtyZXR1cm4gYj9sLmZpbHRlcihiKTpsfX0sZGVmZXI6ZnVuY3Rpb24oYixkLGwpe2Q9InN0cmluZyI9PXR5cGVvZiBkP3tzRGVzYzpkLGFIYW5kbGVyOltsXX06ZDtjLm1ha2UoImEiLHRoaXMsImFEZWZlciIsYikucHVzaChkKTtyZXR1cm4gdGhpc319KTtjLmV4dGVuZChkLHtzaGFyZWQ6ZnVuY3Rpb24oYil7aWYoZC5zaGFyZWRbYl0pcmV0dXJuIGQuc2hhcmVkW2JdLmFwcGx5KG51bGwsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLAoxKSl9LGJveDp7YUJlbmNobWFyazpbXSxvVHlwZU1hcDp7MToiXHU2ODM4XHU1ZmMzXHU4YTJkXHU1YjlhIiwyOiJcdTZhMjNcdTVmMGZcdThhMmRcdTViOWEiLDM6Ilx1NGY0OFx1NWM0MFx1OGEyZFx1NWI5YSIsNDoiXHU0ZmVlXHU2YjYzXHU0ZmVlXHU2NTM5Iiw1OiJcdTUyYTBcdTUxNjVcdTcyNjlcdTRlZjYiLDY6Ilx1NTE3Nlx1NGVkNlx1NTI5Zlx1ODBmZCIsNzoiQWpheFx1NTMxNiIsODoiXHU1MTQzXHU0ZWY2XHU5MWNkXHU5MDIwIiw5OiJcdTdkNDRcdTU0MDhcdTYzMDlcdTYyNmQifSxvUGFnZU1hcDp7NjU1MzU6e2FjdGlvbjpudWxsLGRlc2M6Ilx1NjI0MFx1NjcwOVx1OTgwMSJ9LDY1NTM0OnthY3Rpb246bnVsbCxkZXNjOiJcdTYyNDBcdTY3MDlcdTZiNjNcdTVlMzhcdTk4MDEifSwxOnthY3Rpb246ImVycm9yIixkZXNjOiJcdTYyNDBcdTY3MDlcdTkzMmZcdThhYTRcdTk4MDEifSwyOnthY3Rpb246ImRlZmF1bHQiLGRlc2M6Ilx1NGUzYlx1OGFkNlx1NThjN1x1OTgwMSJ9LAo0OnthY3Rpb246InRvcGljcyIsZGVzYzoiXHU2YTE5XHU5ODRjXHU5ODAxIn0sODp7YWN0aW9uOi9ec2VhcmNoXGQqJC8sZGVzYzoiXHU2NDFjXHU1YzBiXHU5ODAxIn0sMTY6e2FjdGlvbjoidGFncyIsZGVzYzoiXHU2YTE5XHU3YzY0XHU2NDFjXHU1YzBiXHU5ODAxIn0sMzI6e2FjdGlvbjoidmlldyIsZGVzYzoiXHU1ZTE2XHU1YjUwXHU5ODAxIn0sNjQ6e2FjdGlvbjoicHJvZmlsZXBhZ2UiLGRlc2M6Ilx1NzUyOFx1NjIzNlx1OGNjN1x1NjU5OVx1OTgwMSJ9LDEyODp7YWN0aW9uOiJzZW5kcG0iLGRlc2M6Ilx1NzljMVx1NGViYVx1OGEwYVx1NjA2Zlx1NzY3Y1x1OTAwMVx1OTgwMSJ9LDI1Njp7YWN0aW9uOiJwb3N0IixkZXNjOiJcdTc2N2NcdTg4NjgvXHU1NmRlXHU4OTg2XHU5ODAxIn0sNTEyOnthY3Rpb246ImxvZ2luIixkZXNjOiJcdTc2N2JcdTUxNjVcdTk4MDEifSwxMDI0OnthY3Rpb246ImdpZnRwYWdlIixkZXNjOiJcdTRlYmFcdTZjMjNcdTk4MDEifSwyMDQ4OnthY3Rpb246ImJsb2ciLApkZXNjOiJcdTdkYjJcdThhOGNcdTk4MDEifSw0MDk2OnthY3Rpb246Im1lc3NhZ2UiLGRlc2M6Ilx1N2NmYlx1N2Q3MVx1NGZlMVx1NjA2Zlx1OTgwMSJ9LDgxOTI6e2FjdGlvbjoiYm9va21hcmsiLGRlc2M6Ilx1NjZmOFx1N2M2NFx1OTgwMSJ9fX0sdXRpbDp7YWRkRm5UeXBlOmZ1bmN0aW9uKGIsYyl7ZC5ib3gub1R5cGVNYXBbYl09Y30sc3RhY2tTdHlsZTpmdW5jdGlvbihiKXt2b2lkIDA9PT1kLnV0aWwuc3RhY2tTdHlsZS5zU3R5bGUmJihkLnV0aWwuc3RhY2tTdHlsZS5zU3R5bGU9IiIsdi5iaW5kKCJkZWZlcjUiLGZ1bmN0aW9uKCl7ZC51dGlsLmFkZFN0eWxlKGQudXRpbC5zdGFja1N0eWxlLnNTdHlsZSk7ZC51dGlsLnN0YWNrU3R5bGUuc1N0eWxlPSIifSkpO2QudXRpbC5zdGFja1N0eWxlLnNTdHlsZSs9Yn0sYWRkU3R5bGU6ZnVuY3Rpb24oYil7dGhpcy5qU3R5bGV8fCh0aGlzLmpTdHlsZT1jKCdceDNjc3R5bGUgaWRceDNkImFuLXN0eWxlIiB0eXBlXHgzZCJ0ZXh0L2NzcyJceDNlXHgzYy9zdHlsZVx4M2UnKS5hcHBlbmRUbygiaGVhZCIpKTsKZC5ib3guZGVidWdNb2RlJiYoYj1iLnJlcGxhY2UoLyhefH18XCpcLylccysvZywiJDFcbiIpKTt0aGlzLmpTdHlsZVswXS5zdHlsZVNoZWV0P3RoaXMualN0eWxlWzBdLnN0eWxlU2hlZXQuY3NzVGV4dCs9Yjp0aGlzLmpTdHlsZS5hcHBlbmQoYil9LGNvb2tpZTpmdW5jdGlvbihiLGQsbCl7aWYodm9pZCAwPT09ZClyZXR1cm4oYj1kb2N1bWVudC5jb29raWUubWF0Y2goUmVnRXhwKCIoPzpefDtcXHMqKSIrYisiXHgzZChbXjtdKikiKSkpJiZiWzFdO3ZhciBoPW5ldyBEYXRlO2guc2V0RnVsbFllYXIoZD8yOTk5OjE5OTkpO2RvY3VtZW50LmNvb2tpZT1jLnNwcmludGYoIiVzXHgzZCVzOyAlcyBleHBpcmVzXHgzZCVzOyBwYXRoXHgzZC8iLGIsZHx8IiIsbD8iZG9tYWluXHgzZCIrbCsiOyI6IiIsaC50b1VUQ1N0cmluZygpKTtyZXR1cm4hMH0sc3RvcmFnZTpmdW5jdGlvbihiLGcpe3ZhciBsPWFyZ3VtZW50cy5jYWxsZWUuc3RvcmFnZXx8KGFyZ3VtZW50cy5jYWxsZWUuc3RvcmFnZT0KIkZsYXNoIj09ZC5ib3guc3RvcmFnZU1vZGUmJntnZXQ6ZnVuY3Rpb24oYixjKXtyZXR1cm4gZC5ib3guZUxTTy5nZXQoYixjKX0sc2V0OmZ1bmN0aW9uKGIsYyxnKXtkLmJveC5lTFNPLnNldChiLGMsZy5yZXBsYWNlKC9cXC9nLCJcXFxcIikpfSxyZW1vdmU6ZnVuY3Rpb24oYixjKXtkLmJveC5lTFNPLnJlbW92ZShiLGMpfX18fCJET00iPT1kLmJveC5zdG9yYWdlTW9kZSYmZnVuY3Rpb24oKXt2YXIgYj13aW5kb3cubG9jYWxTdG9yYWdlfHx3aW5kb3cuZ2xvYmFsU3RvcmFnZVtDLmhvc3RuYW1lXTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGMsZCl7dmFyIGc9YltjKyJfX18iK2RdO3JldHVybiBnJiZnLnZhbHVlfHxnfSxzZXQ6ZnVuY3Rpb24oYyxkLGcpe2JbYysiX19fIitkXT1nfSxyZW1vdmU6ZnVuY3Rpb24oYyxkKXtiLnJlbW92ZUl0ZW0oYysiX19fIitkKX19fSgpKSxoPSIiO2lmKHZvaWQgMD09PWIpcmV0dXJuIGMuZWFjaChbImFuX2RhdGEiLCJhbl9zd2l0Y2hlcyIsImFuX29wdGlvbnMiXSwKZnVuY3Rpb24oKXt2YXIgYj1sLmdldCgiZGVmYXVsdCIsdGhpcysiIik7YiYmKGgrPWIrIlxuXG4iKX0pLGg7aWYobnVsbD09PWIpYy5lYWNoKFsiYW5fZGF0YSIsImFuX3N3aXRjaGVzIiwiYW5fb3B0aW9ucyJdLGZ1bmN0aW9uKCl7bC5yZW1vdmUoImRlZmF1bHQiLHRoaXMrIiIpO2wucmVtb3ZlKCJkZWZhdWx0Iix0aGlzKyJfYmFja3VwIil9KTtlbHNle2lmKHZvaWQgMD09PWcpcmV0dXJuKGg9bC5nZXQoImRlZmF1bHQiLGIpKSYmKGg9SlNPTi5wYXJzZShoKSksaHx8bnVsbDtnPyhoPUpTT04uc3RyaW5naWZ5KGcpLGwuc2V0KCJkZWZhdWx0IixiLGgpKTpsLnJlbW92ZSgiZGVmYXVsdCIsYil9cmV0dXJuITB9LGRhdGE6ZnVuY3Rpb24oYixjKXt2YXIgbD1kLnV0aWwuc3RvcmFnZSgiYW5fZGF0YSIpfHx7fTtpZih2b2lkIDA9PT1jKXJldHVybiB2b2lkIDAhPT1sW2JdP2xbYl06bnVsbDtudWxsPT09Yz9kZWxldGUgbFtiXTpsW2JdPWM7cmV0dXJuIGQudXRpbC5zdG9yYWdlKCJhbl9kYXRhIiwKbCl9LGdldERhdGE6ZnVuY3Rpb24oYixnKXt2YXIgbD1jLm1ha2UoIm8iLGQuYm94LCJleHRlcm5hbCIpO2xbYl0/ZyhsW2JdKTpjLmdldFNjcmlwdChjLnNwcmludGYoImh0dHA6Ly9oZWxpYW50aHVzLWFubnV1cy5nb29nbGVjb2RlLmNvbS9zdm4vb3RoZXIvYW4udjMuJXMuanMiLGIpLGZ1bmN0aW9uKCl7ZyhsW2JdKX0pfSxnZXRPcGVuZXJJbmZvOmZ1bmN0aW9uKGIsZyl7dmFyIGw9YXJndW1lbnRzLmNhbGxlZS5vSW5mbztpZihsKWlmKGwuc0lkKWcobCk7ZWxzZSByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2QudXRpbC5nZXRPcGVuZXJJbmZvKGIsZyl9LDEwMCk7ZWxzZSBpZihsPWFyZ3VtZW50cy5jYWxsZWUub0luZm89e30sMT09Yi5wYWdlTm8oKSl7dmFyIGg9Yi5yZXBsaWVzKCI6Zmlyc3QiKTtnKGw9e3NJZDpoLmRhdGEoInNVc2VyaWQiKSxzTmFtZTpoLmRhdGEoInNVc2VyTmFtZSIpfSl9ZWxzZSBjLmdldCgiL3ZpZXcuYXNweD9tZXNzYWdlXHgzZCIrd2luZG93Lm1lc3NhZ2VpZCwKZnVuY3Rpb24oYil7Yj1jLmRvYyhiKS5maW5kKCIucmVwbGllcnNfbGVmdDpmaXJzdCIpLnBhcmVudCgpO2w9e3NJZDpiLmF0dHIoInVzZXJpZCIpLHNOYW1lOmIuYXR0cigidXNlcm5hbWUiKX07ZyhsKX0pfSxnZXRPcGFjaXR5U3RyOmZ1bmN0aW9uKGIpe3JldHVybiBjLnN1cHBvcnQub3BhY2l0eT9jLnNwcmludGYoIm9wYWNpdHk6ICVzIixiLzEwKTpjLnNwcmludGYoImZpbHRlcjogYWxwaGEob3BhY2l0eVx4M2QlcykiLDEwKmIpfSxnZXRPcHRpb25zOmZ1bmN0aW9uKGIpe3ZhciBnPWMubWFrZSgibyIsYXJndW1lbnRzLmNhbGxlZSwib09wdGlvbnMiKTtjLmlzRW1wdHkoZykmJmMuZWFjaChkLmJveC5vT3B0aW9ucyxmdW5jdGlvbihiKXtjLmVhY2godGhpcyxmdW5jdGlvbihjLGQpe2lmKHYucGFnZUNvZGUoKSZjKXJldHVybiBnW2JdPWQsITF9KX0pO3JldHVybiBiP2dbYl06Z30sZ2V0Rm9ydW06ZnVuY3Rpb24oKXt2YXIgYj1DLmhvc3RuYW1lLm1hdGNoKC9eW14uXSsvKTtyZXR1cm4gYiYmCmJbMF19LGdldFBhZ2VObzpmdW5jdGlvbihiKXtiPWIucmVwbGFjZSgvLis/cGFnZT0oXGQrKS4qL2ksIiQxIik7cmV0dXJuIGlzTmFOKGIpPzE6MSpifSxnZXRVUkw6ZnVuY3Rpb24oYil7dmFyIGQ9e30sbD1DLnNlYXJjaC5zdWJzdHIoMSkuc3BsaXQoIlx4MjYiKTtjLmVhY2gobCxmdW5jdGlvbigpe3ZhciBiPXRoaXMuc3BsaXQoIlx4M2QiKTtiWzFdJiYoZFtiWzBdXT1iWzFdKX0pO2MuZXh0ZW5kKGQsYik7cmV0dXJuIj8iK2MucGFyYW0oZCl9LGlzTG9nZ2VkSW46ZnVuY3Rpb24oKXtyZXR1cm4hIWMoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX1F1aWNrUmVwbHlUYWJsZSIpLmxlbmd0aH19LG1vZEZuOntnZXREQjpmdW5jdGlvbihiKXt2YXIgZz1kLmJveC5vU3dpdGNoZXM/e306ZC5ib3g7Yy5leHRlbmQoZyxiP3tvU3dpdGNoZXM6e30sb09wdGlvbnM6e319OntvU3dpdGNoZXM6ZC51dGlsLnN0b3JhZ2UoImFuX3N3aXRjaGVzIil8fHt9LG9PcHRpb25zOmQudXRpbC5zdG9yYWdlKCJhbl9vcHRpb25zIil8fAp7fX0pO2MuZWFjaChkLm1vZCxmdW5jdGlvbihiKXtkLm1vZFtiXS5mbiYmKGMubWFrZSgibyIsZy5vU3dpdGNoZXMsYiksYy5lYWNoKGQubW9kW2JdLmZuLGZ1bmN0aW9uKGQsbSl7Zy5vU3dpdGNoZXNbYl1bZF18fChjLm1ha2UoImEiLGcub1N3aXRjaGVzW2JdLGQpLGMuZWFjaChtLnBhZ2UsZnVuY3Rpb24oYyxtKXshMCE9PW0mJiJjb21wIiE9bXx8Zy5vU3dpdGNoZXNbYl1bZF0ucHVzaCgxKmMpfSkpO20ub3B0aW9ucyYmYy5lYWNoKG0ub3B0aW9ucyxmdW5jdGlvbihiLGQpe2MubWFrZSgibyIsZy5vT3B0aW9ucyxiKTtjLmVhY2gobS5wYWdlLGZ1bmN0aW9uKGMpe3ZvaWQgMD09PWcub09wdGlvbnNbYl1bY10mJihnLm9PcHRpb25zW2JdW2NdPWQuZGVmYXVsdFZhbHVlKX0pfSl9KSl9KTtyZXR1cm4gZ30sZXhlY01vZHM6ZnVuY3Rpb24oYil7dmFyIGc9Yy50aW1lKCksbD1mdW5jdGlvbihnKXtkLm1vZFtnXSYmZC5tb2RbZ10uZm4mJihkLmJveC5hQmVuY2htYXJrLnB1c2goe3R5cGU6InN0YXJ0IiwKbmFtZTpnfSksYy5lYWNoKGQubW9kW2ddLmZuLGZ1bmN0aW9uKGwsbil7Yy5lYWNoKGQuYm94Lm9Td2l0Y2hlc1tnXVtsXSxmdW5jdGlvbigpe2lmKCJkaXNhYmxlZCIhPW4ucGFnZVt0aGlzXSYmdGhpcyBpbiBuLnBhZ2UmJnYucGFnZUNvZGUoKSZ0aGlzKXt2YXIgYz1bXTshZC5maXJzdFJhbiYmbi5vbmNlJiZjLnB1c2gobi5vbmNlKTtuLmluZmluaXRlJiZjLnB1c2gobi5pbmZpbml0ZSk7Yy5sZW5ndGgmJihjPXtzRGVzYzpuLmRlc2MsYUhhbmRsZXI6YyxvRm46bn0sbi5kZWZlcj9iLmRlZmVyKG4uZGVmZXIsYyk6aChjKSk7cmV0dXJuITF9fSl9KSxkLmJveC5hQmVuY2htYXJrLnB1c2goe3R5cGU6ImVuZCIsbmFtZTpnfSkpfSxoPWZ1bmN0aW9uKGcpe3RyeXt2YXIgaD1jLnRpbWUoKTtjLmVhY2goZy5hSGFuZGxlcixmdW5jdGlvbigpe3RoaXMuY2FsbChnLm9GbixiLGcub0ZuKX0pO2QuYm94LmFCZW5jaG1hcmsucHVzaCh7dHlwZToiZm4iLG5hbWU6Zy5zRGVzYyx0aW1lOmMudGltZShoKX0pfWNhdGNoKGwpe2Quc2hhcmVkLmxvZz8KKGQuc2hhcmVkLmxvZygiXHU4YWNiXHU5MDFhXHU3N2U1XHU0ZjVjXHU4MDA1XHU2NzA5XHU5NWRjXHU2YjY0XHU5MzJmXHU4YWE0IiksbC5tZXNzYWdlJiZkLnNoYXJlZC5sb2coIlx1OTMyZlx1OGFhNFx1OGEwYVx1NjA2ZjogIitsLm1lc3NhZ2UpLGwudHlwZSYmZC5zaGFyZWQubG9nKCJcdTkzMmZcdThhYTRcdTk4NWVcdTU3OGI6ICIrbC50eXBlKSxsLmxpbmVOdW1iZXImJmQuc2hhcmVkLmxvZygiXHU5MzJmXHU4YWE0XHU4ODRjXHU4NjVmOiAiK2wubGluZU51bWJlciksZC5zaGFyZWQubG9nKCJcdTUxZmFcdTczZmVcdTRmNGRcdTdmNmU6ICIrZy5zRGVzYyksZC5zaGFyZWQubG9nKCJcdTUxZmFcdTczZmVcdTU3MzBcdTU3NDA6ICIrQy5ocmVmKSxkLnNoYXJlZC5sb2coYy5zcHJpbnRmKCJcdTc2N2NcdTc1MWZcdTkzMmZcdThhYTQ6ICVzIixnLnNEZXNjKSkpOmQuYm94LmRlYnVnTW9kZSYmYWxlcnQoYy5zcHJpbnRmKCJFUlJPUiBPTiBFWEVDVUFUSU9OOiAlc1xyXG4lcyIsCmcuc0Rlc2MsbC5tZXNzYWdlKSl9fTtifHwoYj1jKGRvY3VtZW50LmJvZHkpKTtsKCJLZXJuZWwiKTtsKCJVc2VyIEludGVyZmFjZSIpO2MuZWFjaChkLm1vZCxmdW5jdGlvbihiKXsiS2VybmVsIiE9YiYmIlVzZXIgSW50ZXJmYWNlIiE9YiYmbChiKX0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmJveC5hQmVuY2htYXJrLnB1c2goe3R5cGU6InN0YXJ0IixuYW1lOiJcdTVlZjZcdTY3MWZcdTU3ZjdcdTg4NGNcdTk4MDVcdTc2ZWUifSk7Zm9yKHZhciBsPTE7NT49bDtsKyspdi50cmlnZ2VyKCJkZWZlciIrbCksYi5hRGVmZXImJmIuYURlZmVyW2xdJiZjLmVhY2goYi5hRGVmZXJbbF0sZnVuY3Rpb24oKXtoKHRoaXMpfSk7Yi5hRGVmZXI9bnVsbDtkLmJveC5hQmVuY2htYXJrLnB1c2goe3R5cGU6ImVuZCIsbmFtZToiXHU1ZWY2XHU2NzFmXHU1N2Y3XHU4ODRjXHU5ODA1XHU3NmVlIn0pO2QuZmlyc3RSYW49ITA7ZC5zaGFyZWQoImxvZzIiLCJcdTYyNDBcdTY3MDlcdTUyOWZcdTgwZmRcdTU3ZjdcdTg4NGNcdTViOGNcdTYyMTAiKTsKZC5ib3guYUJlbmNobWFyay5wdXNoKHt0eXBlOiJmaW5hbCIsdGltZTpjLnRpbWUoZyl9KX0sMCl9fX0pOyIiIT09SlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKS52YWx1ZSkmJmZ1bmN0aW9uKGIpe0pTT04uc3RyaW5naWZ5PWZ1bmN0aW9uKGMsZCxoKXtyZXR1cm4gYigiIj09PWM/IiI6YyxkLGgpfX0oSlNPTi5zdHJpbmdpZnkpO2MuZXZlbnQuc3BlY2lhbC5jbGljaz17YWRkOmZ1bmN0aW9uKGIpe2IuaGFuZGxlcj1mdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oZCl7ISgiY2xpY2siIT09ZC50eXBlfHxiLmRhdGEmJmIuZGF0YS5kaXNhYmxlQ2hlY2spJiYwPGQuYnV0dG9ufHxjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KGIuaGFuZGxlcil9fTt2LmJpbmQoImNsaWNrIix7ZGlzYWJsZUNoZWNrOiEwfSxmdW5jdGlvbihiKXtjKGIudGFyZ2V0KS5jbG9zZXN0KCJhIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuL14oPzojfGphdmFzY3JpcHQ6KSQvLnRlc3QodGhpcy5nZXRBdHRyaWJ1dGUoImhyZWYiKSl9KS5sZW5ndGgmJgpiLnByZXZlbnREZWZhdWx0KCl9KTtjLnN1cHBvcnQubG9jYWxTdG9yYWdlPSEoIXdpbmRvdy5sb2NhbFN0b3JhZ2UmJiF3aW5kb3cuZ2xvYmFsU3RvcmFnZSk7YyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYil7ZC5ib3guc3RvcmFnZU1vZGU9YjtkLm1vZEZuLmdldERCKCk7ZC5tb2RGbi5leGVjTW9kcygpfWMoJ1x4M2NkaXYgaWRceDNkImFuIlx4M2VceDNjZGl2IGlkXHgzZCJhbi1sc28iXHgzZVx4M2MvZGl2XHgzZVx4M2MvZGl2XHgzZScpLmFwcGVuZFRvKCJib2R5Iik7aWYoYy5zdXBwb3J0LmxvY2FsU3RvcmFnZSYmIkZsYXNoIiE9PWQudXRpbC5jb29raWUoImFuLXN0b3JhZ2Vtb2RlIikpYigiRE9NIik7ZWxzZXt2YXIgZz0iaHR0cDovL2hlbGlhbnRodXMtYW5udXVzLmdvb2dsZWNvZGUuY29tL3N2bi9vdGhlci9sc28uc3dmIjtjLmJyb3dzZXIubXNpZSYmKGcrPSI/IitjLnRpbWUoKSk7ZC5ib3guZUxTTz1jKCIjYW4tbHNvIikudG9GbGFzaChnKVswXTsoZnVuY3Rpb24oKXtkLmJveC5lTFNPLmdldCYmCmQuYm94LmVMU08uc2V0KCJkZWZhdWx0IiwiYW5fdGVzdF9mb3Jfc2FmYXJpIiwiOm8pIikmJmQuYm94LmVMU08uZ2V0KCJkZWZhdWx0IiwiYW5fdGVzdF9mb3Jfc2FmYXJpIik/YigiRmxhc2giKTpzZXRUaW1lb3V0KGFyZ3VtZW50cy5jYWxsZWUsNTApfSkoKX19KX19KSgpOw==');