Greasy Fork

My.Helianthus.annuus

by 向日

目前为 2017-03-17 提交的版本。查看 最新版本

/*
 * 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.3
// @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);
	})();
})('LyoKIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCAKIEBwcm9qZWN0IGpxdWVyeS5zcHJpbnRmCiovCihmdW5jdGlvbigpe3ZhciBDPXdpbmRvdy5sb2NhdGlvbiwkPXdpbmRvdy5oaXN0b3J5LFNhPXdpbmRvdy5uYXZpZ2F0b3I7aWYoIXdpbmRvdy5BTiYmL14oaHR0cHxodHRwcyk6XC9cLyg/ISg/Ond3d3xtXGQqfGFydGljbGVodG1sKVwuKVteLl0rXC5oa2dvbGRlblwuY29tXC8oPyFbXi5dKz9fYWQpL2kudGVzdChDLmhyZWYpKXtkb2N1bWVudC5kb21haW49ImhrZ29sZGVuLmNvbSI7aWYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcil7KGZ1bmN0aW9uKCl7dmFyIGI9L2JtZWRpYWFzaWF8cGl4ZWwtP2hrfGltcndvcmxkd2lkZXxnb29nbGVzeW5kaWNhdGlvbnxfZ2V0VHJhY2tlcnwoPzpQYWdlfElubGluZXxHb29nbGV8XGIpW0FhXWRzP1xifHNjb3JlY2FyZHJlc2VhcmNofGFkZHRoaXMvOyh3aW5kb3cub3BlcmF8fGRvY3VtZW50KS5hZGRFdmVudExpc3RlbmVyKHdpbmRvdy5vcGVyYT8iQmVmb3JlU2NyaXB0IjoiYmVmb3JlbG9hZCIsZnVuY3Rpb24oYyl7Yi50ZXN0KGMudXJsfHxjLmVsZW1lbnQuc3JjfHwKYy5lbGVtZW50LnRleHQpJiZjLnByZXZlbnREZWZhdWx0KCl9LCEwKX0pKCk7dmFyIGlhPWZ1bmN0aW9uKCl7YyYmImxvYWRpbmciPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmKGMuaG9sZFJlYWR5KCEwKSxjKGRvY3VtZW50KS5vbmUoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7Yy5ob2xkUmVhZHkoITEpfSkpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixpYSwhMSl9O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixpYSwhMSl9ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnYVtocmVmKlx4M2QiYm1lZGlhYXNpYSJdLCBkaXZbaWRceDNkIlN1cGVyIEJhbm5lciJdIH4gKiwgZGl2W2lkXlx4M2QiVG9wIFRleHRsaW5rIl0gfiAqLCBzcGFuW2lkKlx4M2QiR29vZ2xlQWQiXSwgc3BhbltpZCpceDNkIkxpbmVBZCJdLCBzcGFuW2lkXlx4M2QibGluZUltYWdlIl0sIC5QYWdlTWlkZGxlRnVuY3Rpb25zLCAuQ29udGVudFBhbmVsIFx4M2UgY2VudGVyICsgYnIsIC5Db250ZW50UGFuZWwgXHgzZSBjZW50ZXIgKyBiciArIGJyLCAjbWFpblRvcGljVGFibGUgXHgzZSB0Ym9keSBceDNlIHRyOm50aC1jaGlsZCgyKSB+IHRyOm5vdChbdXNlcmlkXSksIHRkW2NvbHNwYW5dW2hlaWdodFx4M2QiNTIiXSwgI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdmlld19mb3JtIFx4M2UgZGl2W3N0eWxlKlx4M2QiOTQ1cHgiXSBceDNlIHRhYmxlW3dpZHRoXHgzZCIxMDAlIl0gXHgzZSB0Ym9keSBceDNlIHRyIFx4M2UgdGQ6bm90KFthbGlnblx4M2QibGVmdCJdKSwgbm9zY3JpcHQsIHNjcmlwdCArIGlucywgc2NyaXB0ICsgb2JqZWN0IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9ICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3ZpZXdfZm9ybSBceDNlIGRpdltzdHlsZSpceDNkIjk1NHB4Il0gXHgzZSBkaXY6Zmlyc3QtY2hpbGQgICB7IHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7IH0gJykpOwp2YXIgZD13aW5kb3cuQU49e21vZDp7fSx2ZXJzaW9uOiIzLjEwLjE0LjYxNzUifSxhYSxjLHYsYmEsSz17ImJhbGxvb24tLW1pbnVzIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQ0NFbEVRVlI0MnMzU1gwaFRVUndIOE9OdlJHR0FaRWhZUlJJQkJSVGdXeERRbm9LZ3h3aGlXVkZKT0F3aUJLU2N0c3lYZ0pVVXVtQ1FNTzlFSXdoeVFLNFhRMERtbGpaYUJxNXMxMjMzenE1THVidjcwL0xYN3lmendreDc2YVVESDg3aG5OLzNkeStjSThSL05VWmJvY1ovRTZ6a0tta2o3V1Z0NVQwcjEyd2FmdDBLUjhmdTFMZlBqWFg1amNXUXZKcVBGN0NZUkN3bWNEWC9yV0NvUVhudWpjUFBOVnhiRVg1bGgzMkJ6a05PWFptTVkrNHJvdjZaekc1QWU3a1k2b2wzOFlDandja1pzOEhMRnJpb2ZKRENtS1dpbGNqZjZaOVFDWG5DbkRFYmpOd0FSMms1bXNWTUdOZVZ0SEhVbFNIVTVNZW96bmRqNnN2ZE5ielc0dTRzWjh3R3ZtYTQ5ek16WStEU0ZKYStqK055d29QcCtRZFU3TnlVRXVzeE9HTTI4RjZENi9Ma3MwaFJDK0NQaFNlNEpMdTJsRmw0aExOdm15T2NNUnNNWElHREwyN3Y3MVdqZmFtczZrVTk2ZGxTY3ZwK2F2aFdYUzluS203aStXbG85TnByWFVHZmJXSXgrbFExVWtQRlFub0VDK2xoekJPZWc0UG5KN3oyWFM3UEpXZzBnNUlRYnA4UVUydEFURXZiUlV5cUZvbUJocXFQZlRad3IvdWwrWkhuZmh2c3J2aHlQd1Z6VFUyNEVlL3orWmxqQUMybkxDY2Vuck5JN0k4WDJFMS8wRVhGblVLRVNKanU1bjJIRURPWGhSaWs0OE9FWDkxeDZ4RzQwSEhXTXNwcmNvQlVtMDFPQ2xGRms0VnNJenZJVHNKdnZwYlVrVDJrbnV3dHIydkt0ZjgrZmdOMFJJMlViVFJIMXdBQUFBQkpSVTVFcmtKZ2dnXHgzZFx4M2QiLAoiYmFsbG9vbi0tcGx1cyI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUNIa2xFUVZSNDJtTmdHRlJnYXk0VC83WThKa2NnVGdiaVVpQ3VoT0pTcUpnalNBMVd6VnR5bVRSM1YwdFczdG5kc08zYjY3T1AvLzE0OVBQL3IyZi8vLzk2K3YvZmo0Yy92NzA4L2ZqT3JycHRJRFVndFNpYU4yWXpTZStwVjJyNjh1TGtvLy9mNy8vLy8rVW1FTjlBdzBDeDczZi9mM2w2K05HZU9vVW1rQjY0QWV1eW1HSmZYRnAyN3Y5WG9LSlBsL0hqTDlmL3Z6Zzc5eHhJRDl5QTFSbE1kWDgrWHZ2Ni8vMjUvekQ4NSsyaC8xOWVyUGovOXZIRS95OGZ0UHgvZnE4R2pFSHN0NDltZmdYcGdSdXdQSTJwOGZmN2k5Lyt2enZ6LzgrYlEvOC9QcDM3LzlXRFZxRGlKcXo0eGQyMmJ5QTljQU9XcERDbFBqNDU2L0t2dDN2K2YzZ3k1Zis3eC8wNDhmc25FLzdmMkp0MkdhUUhic0RDUkNaNXE4bENsN1UzNmY1S091VHovOHV6dVRqeHN3dk56MWNWaWs0QzZVR0pDWTZGd3RkUzNwWCtWMXFtK09YMXRha3Z2ejFmOGV2bnE5WC9mNzVhOWY4SEVJUG8wMHZEank3SkZ1eWZHODlraE5BNVIyZ213MXloTXlBYytqcnRQL2NNd2J1QzB3U2VtcmJ4WEowZXd6UVRodisrM2ZZZlJNK0lZUkpHVFVGVEJjNDRQZy82ajQ1QjRpQnBMMTBtcGl3SFpzdnVVT1psSUl5WkJIdjVaakwwOEoxaDZPWTdxL1BJOWo5REY5OTVoazYraXd3WjNFdUJzaXBBREVwMWVvNGFURkcxdnN4YlFXd2dsZ1ZpTG9RaHJ1eU1ERTA4WjZYdWEvOEgwdWVBSXR4QURFcnpRa0FzQ3NUaVFDd0p4RkpRTmtpT0ZkVWx1V3d6R1RKWno0QnBFZ0FBR01XV0ZQVmUrM0VBQUFBQVNVVk9SSzVDWUlJXHgzZCIsCiJjaGFpbi0tYXJyb3ciOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFCaFVsRVFWUjQybU5nR0FWZ0VCd2NiQndTRWhJUHhPbElPQjRrams4T3JObkh4OGMwUFQyOTl0aXhZN2Z2M3IzNzkvSGp4LzhmUEhqdzk4U0pFM2NkSFIyclFSaWJIRWdQU0MrRHE2dHI2cUZEQis4ME5OUWZGUklTNm1kaFllbnE2T2o0UDNQbVRCUU1FZ1BKZ2RTQTFJTDBnUFF5V0ZsWkZWMitmUG1Idkx4Y0E4aEZJRVZBeWYvWHJsMzkvK3JWcS8rdlg3LytmK3ZXcmY5QVY0QU5BS2tCcVFYcEFlbGwwTmZYejl1MGFjZjl1cnJtYlFJQ0FrWE16TXpWNWVYbC83RmhrQnhJRFVndFNBOUlMd012TDYrVGxwYk90RGx6bGo0K2N1VGlueXRYSHY4L2VmTDZuM256bGo4R2lhUExWVzk1L3I5MjBaR1BJSEdRWHBDTGhJQW1od09kMXdSeUloSnVBb3BIZ3pDeW5HSHowUmRHTGNlZXlRZFdUUVBwQlJuQUNjUmlRQ3lGRFNzbHoxcXAyM0wySWpLZS92VC9meEN0RUQ4bGhXQWFVYTQ4ZkdiUzQvLy9zNjcrL3g5N0VZR0xiL3ovRDVJamFJQmt6dmFaRWxsYnp5QmppNlAvLzROb29Gd015YW1XTjJiNUdSRG1pMXNaUTFheVp3dWNNeE9JNFpvQnNHa1BVd0JLcFE0QUFBQUFTVVZPUks1Q1lJSVx4M2QiLAoiY29udHJvbC0yNzAiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBLzBsRVFWUjQybU5nR0FWZ1lEdjdtYkg5M0JkblNNRWdQWEFEcktZL0VyV1ljbjlkNXQ0UHp5YmQrL2UvNjlvZkZOeDVGWUw3YnYzOW43YnIvVE9RV3BBZUZGY1k5OTBVMVd1L3RDNTU2NHRuOWFlLy8wOWUvK3AvNU5JSC8vMW5YL3Z2T2ZYaS80UTFkLzhITDczL0RLUUdwQmFyVnpRYlRvc3FWeDVlRjd6MHpyUFlUWS8vVzArOURNWkJLKy8vZDUxMTdSbElEcVFHYjNqSUZ1NFJsY2phdXM1OCtyVm5abHMrL2pmWStPRy83cVFyejBCaUlEbWlBcFhUS0Z5VU4yYjVPc25leTg4a2VpNC9BN0ZCWXNUb0ZRQmlMVkNRTUFrcU9MRDZUTmtNd2lBMlNBeUk5WUJZQklnWmNSbkFBY1FnbTZSd1lIRWc1c0pud0VnRUFGckRvcnZUQmZKYUFBQUFBRWxGVGtTdVFtQ0MiLCJjb250cm9sLWVqZWN0IjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQk5FbEVRVlI0Mm1OZ0dMVEFmdDdMR0NBK0E2SkoxbXc5NDNHTTljd25aMlkrL2Y4ZlJJUDRSR3MybTNnbnhtelMzVFBUSC8vL1gzMzh4LytwRC8vOUIvRkI0Z1ExNjNkZWlUSG91bnBtOHYxLy8zTjNmb0xqdmx0Ly9vUEVRZkk0TldzMG5JN1JiRHh6cHYvMm4vOXBtOTc5VDF6NzhuLzQ0dnYvZldkZS9lOHg1Y0wvOHNPdi80UGtRZW93TkN1V0hZeFJLajkwcHVmRzcvOWxoejcvejlyKzRuL2M2cnYvWTFiZS9oKzEvTmIvaUtVMy80Y3Z1ZkUvYy91VC95QjFJUFVvQnNqazc1b3BuYmZ6RExFWXBKNjZjYzRUdFhRbWIvU3lNOFJpa0hvVUF6aEM1cC9ST1BEL3YrVHUvLy9GZC8zL0w3THovMytoSGYvL0N3QXgzL2IvLzNtMi9mL1BEY1NjV3lGc2tIcGsvY3pNMXNYem1mMW1uaUVhQTlXRDlNRU5BR0orSUpZRVlpa2lzQ1JVUGZQZ3lIUUF0ZlBwY1c3M1haUUFBQUFBU1VWT1JLNUNZSUlceDNkIiwKImNvbnRyb2wtc3RvcC0yNzAiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFCSGtsRVFWUjQybU5nR0I3QWZ0N0xtVUI4aGdROEU4VUFtNWxQWXF4blBENHo4K24vLzcwMy82TGduaHNJUE8zUi8vOGdkU0QxR0s0d20zZ254blRDN1RQVEgvLy9uNy83TXdhZWNPZlBmNUE4U0IxT3IraDNYSTdSYTc5MFp1TGRQLzlqVno3OUh6ajM1bi92NlpmL041ejU4QjhrRHBJbkdCN3FkU2RqMUdwUG5LazcvZUcvODhTei84dVB2UGtQNG9QRWlRNVUrWko5TVhKRmU4OWtISHo3SDBTRCtDVEhqRmo2cGhpeGpNMW5RRFJCeFh5eEsyYnl4NjA4UXl3R3FVY3hnRE4wd1ptb3MvLy8rNS80LzkvaitQLy9qa2YrLzdjOC9QKy93WUgvL3pYMi9mOHZ2K2YvZi9HZC8vOEw3UGovbjMvNy8vOGc5Y2o2bVptdGkrY3orODA4UXpRR3FnZnBneHNBeFB4QUxBbkVVa1JnU2FoNjVzR1Jqd0JZK1BMZENqWUtTUUFBQUFCSlJVNUVya0pnZ2dceDNkXHgzZCIsCiJjcm9zcy1zaGllbGQiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDTjBsRVFWUjRYcFdOVFVnVFlCakgvK1pBcDR2aHZneUlRWW9JYkVrd1QwTVFjVEJBc2NrTTFaUG9SYzhWWG9JSUtLQ2dTMVJSdEZCV20xOUJXbE5NS0lJeVFKYVROdEo5WUlQbW1ESFZ5MFRFcCtlQmwxZ3dnZjd3ZytkOW52K1BGNmRsQ21oa1BpZ2E4VDk1QlJpQ3dIeXFvK08zSURQdnpLY0tMN25BM1BVREZ4Zzd6OVByTFMyLzlrZEhhVzlraEw2M3RtN3o3bzNjcENOZGNhQ0NDV0FsMDl0N0VLeXMvRGFwMWE3RlhLN2N6dkF3YlhSMzB3K1BoN0tEZ3hSdGI5OEo4aTNBbldSWDE0RTRVSUVQK016Q1NYcGdnSDcyOTVOazFlWDZCMG1pcDRmaVhpOXQ5ZldkaUFNVlBBT1drMTd2OFNlbms0b2o3MUs3TmJmN1dCeW80REV3RSt2c1BGeHVicWFwdWpxU0ZBb0Z5bWF6bEVxbEtCNlBVektacEtjMU5lUXptMm5CYmo4VUJ5cDRBRHhhYld2YmYrOXcwR0pURTcwd0dpa2NEbE1rRXFGWUxFYUpSSUo4TEk4clpxM1dQWFllUWdYM2dlc2hteTJ6WkxmVHRNbEVrMXdxbHRQcHRPd0VtdUc3MzJESXNITU5LcmdIdVBuWHpZLzE5VFJmUXM1a01wVEw1ZVJHQ3hZTFBkRnFOOFdCQ200RCtqdGxaU3RmR2hxT2l1VlpGZ1NSOC9tOFFFc20wNUYweFVGeGJnRTN4L1g2cmJmOGc4aHpMSDVWeUN5eTdKNVhWR3hKRjVKaWJnREdxOEJpUUsvZkRobU50RzR3VUlRRkJiMWovRlZWMjlLUkxrcmxNbUFkQWliR05Kcm9uRTYzdThHU0lQTlllWGxVYnRJcDVaNWhkSXlsRmpoL0NSaTZBb1FDMWRVNVFXYlp5UTFBclhTVjh6Y2FkYkF4RHVFczRPVGZYbnNZbVdXbnVNaWNVdzcrQUt2UWN2Uys2RU01QUFBQUFFbEZUa1N1UW1DQyIsCiJmaWxtLS1hcnJvdyI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUNYRWxFUVZSNFhvMlNUVWhVVVJpR24zUFB2VE5PNmt5cFNDb1orVXNHdUpLV3VtNFZnNEtnRXlFU0VSUUJiWUp3VlZDYnlFZ0lFeUprUXRBa0lEQm9ZeERReHFDVk9tUkZFaUJRTVk3emUrODlYMU16WTJtQVBmREM0ZktjbCsrN0hDVWlXSloxRVdncjViLzRXTTVEbXhKdGk0dUxYZEZvMUw4Lzl5N3FHd0VVSWdDQ0VVR01vQlJjaS9VdGxsMEFLZ1ZXOGNNSG9CMGxaQXN1SUlpQUFDS2xjenE1ODdkckFWaVZnb1dGaFU1QWl6RW9KVkNNaU1GM1hiTHBET3VyWDFoYjJ3VFFaZGZhTThIZzRPQW5vQ09iY2ttbDgvaWVqN0lNa1loRnptUnhqWWVnS3U2L0U4elB6NThBdEM4S0orZ1FicWltdWFtVzQ3V2E3c1lRemMxaHFzTTFBTHJzN3AxZ2FHaG9FK2c4RktsQ2V6NGlrTXprTVZxd0hZMjJBN1MyMSsyNit3djAzTnhjeS9Ed3NINzI0UElxd05iV2xwOUlKUExzUXluMXkyMHR1bDhCS3U5Z21oSmRFOVB2KzMyalNLWTlmRitvSUNJWTR6TjkvZlJySUVHSkM3c3J4T1B4eHBHUkVWMFZDcElyR0lKVmlqSjdTcnJISnJzSEIzb2p0ODROck94Wm9YajVHOUNBYUFwWkgyMVoySUZTdi9FTm51dmlGVnlDVFNkclgyemdITzAvbnhJNzlLZGdkbmEyTGhhTDJmbVVLUllJcnV2aGVWa1NDaktXeG5Zc0xHV1RTKzl3OWRyWitzbWRuUjduU010bzVSODhwVVRQeE5SR2J5Ym40bmsrVGtpei9EM0o2RmdmYTl1UTh0aWxNUWpQbjd4WnNjdTdWYy9NekRqajQrTzFnaVpVVTB3NGdOYUt3OXRKSGs4dG81V0FnczhicS9tT0s1ZUNTM2NlSloyNlkvZCtUNkNVdWd1Y0FubzVnT296dCt1eG5ZeTcvbklwRUc0Y3RpbHhBd2dERmdmZzJwR2JrdjN4MWwxL0ZTOEFQd0gvNUJFUUdCVDF6d0FBQUFCSlJVNUVya0pnZ2dceDNkXHgzZCIsCiJoaWdobGlnaHRlci0tbWludXMiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBM0VsRVFWUjQydTNQc1FzQllSZ0c4T2UrTzVKTENJbFNSekVvcGZnai9Bc1dOcnYxSm9QOXl1Uld3OTFnd1dCZ1ZaWnZ2ZjlDVnVONVBpaGRwaHZscmQveTlqN3YrMzFBakRvY1VFWGNPaDR4Mk84aE54dTRzY09YQzhJZ3dOWDNNWWtkOWp6STFRcTlmL2kzd29aaDlDM0wybjRMZTREckF6Sks5UjloWGRlYjVEcU9FM0xKT1hwNXllSGJhQlJHcWY1N3dTTXNoTmhwbWphMWJaaWZyNXZ6MG96RFVhcVAwK241NTFkNERLQk1KU3BRbnJLVW9UU2xLQW5BVUhkSnczb051VmhBTmhvWUF1aFNoOXJVb2pyVnFFSkZ5cEg1V3BRZ2NRY0ptOEdvaktSVzdBQUFBQUJKUlU1RXJrSmdnZ1x4M2RceDNkIiwiaGlnaGxpZ2h0ZXItLXBsdXMiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFCREVsRVFWUjQybU5nSUFQczJzVWd4VUF1MkwyYndXUGJOb1l6R3pZd3pDUmI4NXMzRFArdlhtVjR0M3c1UXhyWm1wY3RZeml6YUJHRDhhaG11bXRlS1RvVGlNK0FhYkpzWGlKeUp1VmQ2WDhRamFHWmhZWEZSRUZCWVNOV3pYT0VaakxNRlRvRHdxR3YwLzdEMkdCeEVHQm1abFlGNHBuOS9mMy9nWVljeDdCNXFzQVp4K2RCLzlFeFNCeG1BRmd6RXhQVEprWkd4c0txS2dadUZPZjE4czFrNk9FN0E4STZqMnovdzloZzhTTkhJSDZHYW80SEtoY0hZbEVnRmdaaVFTRG1CMkplSU9aaWFPSTVKM1ZmK3orUVBndXlGNGdaR1ZhdlpqZ3phUkxER1NVbGhraWdnQUVRNndLeEZoQ3JBYkVpRU1zQ3NTUVFpekQ0c3k1Z3lHQTl4eERJT2hmSVp3VmlKZ0NEbHRWb0VUV3BuZ0FBQUFCSlJVNUVya0pnZ2dceDNkXHgzZCIsCiJpbWFnZS1leHBvcnQiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFCNkVsRVFWUjQyc1dUTVdnVFlSU0F2N3RjN2t5czJBN1d4RkpVUkFVTDJzRUdEUzRTNlNDRVNFSGNuSU9UNEZJc2JjRU9FWW1MVUxBb2hTb0IwVUZvdGtJR1FUdW9rNE5RMFZCVVVwcWlzVEdYNVA2NzNQT2EwY25Rd1ErKzhYMDhIanhOUk5nTk9ydEV1em83bXdZTzBSc1ZFU2tDTURFMWxaVWUyWmtKWkVmRDh6emRGK0ZDcmsxSUI5TUFYNkRUZ2YwUjZMT0VxQWxuRDBQVS9jQWV2VTY3MVRJQ2NaWHFCalJQaE1SUmpiMldkSWM4SDBMUURTb1BkQTFPeHVEcjUwMnVaVExjWDFxS2lNaFkwN2JmR2E3cjZwN3Y4K3ZuUTJMRFp6ZytlQTRkamY2b1VQdmRwR25YRUxYRitxY2ZLTldtVXEzeXRsQzRONUxKM0JZUm5Zdlo3TTF0cGVUVWpiU2NuN3d1K2VVVldWMnJ5NnVQRFhuL3BTbHJGVWVxMjU0NHJpOS9jeVNWbXRHVlV0ME5LdC9yckplclBDNHVjdXZSSlBQRmVRcWw1endydldSeCtRVVBuajdoN3NJQzN6WTJBSWdsazNQQkhVcTY2empkUUx6dkNvUFJEQVBoeSt3TFhRSVpvOFZwMnBFRXhGSkVSeVp3SElmaGVKeiswZEdjMDJxdGlNZ2JReWtWNm9oZ1daRkFDek13WklRUjBXZzdRcVBoSXVLaTNEQWQ4d0JUK1R3SGg0YnNJUERhQ0lmUmpvMlBUNjhXaTNlQ0VQK0NhWm9rMCtrWllBN0EyQ3lYcXljU2lSdzkwTEh0TGIvWkJFQURMR0NnaDcvd2dScmdBUHovYi93RHlQb3ptVlVCcEdNQUFBQUFTVVZPUks1Q1lJSVx4M2QiLAoibWFnbmlmaWVyLXpvb20taW4iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDTmtsRVFWUjQybU5nd0FPU1dsNXBwTFM5bVF2RTk0SDRGNVNlQ3hKbklBUWlxdTRIUnRjK3ZOKzA0T21KclNmZjdycnovTXVKbzFjK0hlaGQvdklVU0J3a2oxT3pSOVo1RForOGkvZW5iWHk0NDhpTjE0ZGVmdnh4NjlPMzM4OWZmL3A1KzlHYmIyZm5iMyt5eXhjb0QxS0gxUUNybUFOejgzc3ZudGg5NmNXQnE0OC9uZ0JwQm9yOUI5RlAzbjQ3ZCszSnB4TWxFeTZkQXFuRGFvQ08zNmI3YzdmZDNYN20zcnNMZDE5K2VmRHV5NjhQUUxIL0lCckVCNGt2M1hOL0QwZ2RWZ05VM0ZiLzJubisrUUdRWWlEN1B6cisrTzMzczhQWFhoOERxY05xZ0pMTDJ2c0x0dC9iRGJJSnBQam43NytmZ1dML1FUUTRMRDcrdkxWcTM4TkRJSFZZRFZEMzNERTN1KzM4MmYxWFh4MisvL0xyYVpBbW9CZzhESUFCZWE2NCsrSWxrRHFzQnBnN1pWb1pCUjkrTVcvemc3TTNuMzArRFFwOVdDdzhlLy85NG9iOXIwNFpoNXk4cnhkd0RETVdySzJ0NVcxc2JJbzdKdS81YnhWNTRWWGpqT2VYVGw3NWN2cjV1eC9YVDEzOWNxWmo3c3RyTm5HMzdwdEhYc2RNQjBDTldtNXU3alU3ZHV6NUx5b3ExcXhtMVdMbm1QeDhMaERmQitKZlVIcXVmZUlUVEp0dGJXMHRBZ09EMjQ0Y09mTmZVVkdwaDRXRlJaV0JXR0JuWitlZGtKQXk0ZUxGdS8vMTlBeW1BVFViTTVBQ3pNM05TMjdkZXZYZjN0NTVIbEN6Q3dPSmdFTlVWTlJGUkVTa0JhZzVHOGpYQnlWR0lBYjVVd1dJNVlGWUdvakZnRmdRaUhsQWVvQ1lGWWlaUUFhd1FDV2xnRmdTaUNXZ2ZCRWdGZ0ppQVNEbUEySnVJT1lFWWphb0htWWdaZ1FBSk1CVFJiblFzY2dBQUFBQVNVVk9SSzVDWUlJXHgzZCIsCiJtYWduaWZpZXItem9vbS1vdXQiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDRTBsRVFWUjQybU5nd0FPU1dsNXBwTFM5bVF2RTk0SDRGNVNlQ3hKbklBUWlxdTRIUnRjK3ZOKzA0T21KclNmZjdycnovTXVKbzFjK0hlaGQvdklVU0J3a2oxT3pSOVo1RForOGkvZW5iWHk0NDhpTjE0Y2V2ZmwyOXNuYmIrZEFHTVNldi8zSkxsK2dQRWdkVmdPc1lnN016ZSs5ZUdMM3BSY0hyajcrZUFLbUdZYXZQZmwwb21UQ3BWTWdkVmdOMFBIYmRIL3V0cnZiejl4N2QrSHV5eThQMERGSWZPbWUrM3RBNnJBYW9PSzIrdGZPODg4UGdCUUQyZi9SOGNkdnY1OGR2dmI2R0VnZFZnT1VYTmJlWDdEOTNtNlFUU0RGbjc3OWZvNk1YMy84ZVd2VnZvZUhRT3F3R3FEdXVXTnVkdHY1cy91dnZqcDgvK1hYMCtoaEFBekljOFhkRnkrQjFHRTF3TndwMDhvbytQQ0xlWnNmbkwzNTdET0tBYy9lZjcrNFlmK3JVOFloSisvckJSekRqQVZyYTJ0NUd4dWI0bzdKZS81YlJWNTQxVGpqK2FXVFY3NmNmdjd1eC9WVFY3K2M2Wmo3OHBwTjNLMzc1cEhYTWRNQlVLT1dtNXQ3elk0ZGUvNkxpb28xcTFtMTJEa21QNThMeFBlQitCZVVubXVmK0FUVFpsdGJXNHZBd09DMkkwZk8vRmRVVk9waFlXRlJaU0FXMk5uWmVTY2twRXk0ZVBIdWZ6MDlnMmxBemNZTXBBQnpjL09TVzdkZS9iZTNkNTRIMU96Q1FDTGdFQlVWZFJFUkVXa0JhczRHOHZWQmlSR0lRZjVVQVdKNUlKWUdZakVnRmdSaUhwQWVJR1lGWWlhUUFTeFFTU2tnbGdSaUNTaGZCSWlGZ0ZnQWlQbUFtQnVJT1lHWURhcUhHWWdaQVZJOFZ0VzNaMkZaQUFBQUFFbEZUa1N1UW1DQyIsCiJwaWN0dXJlLS1taW51cyI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUJ5RWxFUVZSNDJzV1RQMnRUVVJpSG4zdnVtNXViYy8vbDFzU1N4Qm9hUVljS1VUcFZFQW82Q0xxNE9qbjRQZndVVWgwS1hRWHA1T2ppWUFmQkRnb0tKUWdGUlJjbGJiUnA3ajBuMStGbUNJcUNkZkRkemcvZWgrZHdmZ2YrOXpnUDFua0VySjV3LzVYWUthdTN0dDZmQ1BEMGJnOHhGcFJTM0huU1JUbFFjVUZjeUF3VUJjUTFpSDBRQmIwR3JMVEFUR0d0c1kreElOYUM2N3IwejRBbmtOU2dFY0RuUTZoVnluTUJESS9nWWh2NkhUakt3SjI2V0F1U1d4QVIyc0VMenJlV1NZTTJSUUVYRm1FeEtrSGpESHFuU3BPSkthRXlFWElMWWt3SmVMYTd5WTZ2dVhINU51c3IxeEJWR3ZVYU1NNWhRVU51eTB4WHdGckJtRG1EdmNFZTlhVE80OUVXQjZPUExEWFAwbHBZNG5TY1V2TjhjSFM1N0pWWE84NW1Cdm5NWUhMUTRjczM0ZnRYaiszaEcycitnRUFIaEVGSUdJWkVZVVFTeFN3MTJ5dzNPMXp0Q0xrQnlXYUFYdXM2bnVkUnJWYlJXaE5GSVVrU2thWXhhUnFSSkFGeDdCTUVGVlJWSVhKTVp1WU01cWNvQ295eGpNY1pTbzFwUDd5UHYvK09YQ2tPSFFmSFVUelhCZDFQZEdVNEtwL3g1Y2E5M3habWUyUEF6U3VYZnNuZnZ0N1Z6cHJIWnVyUS8xUGp6aG02dWtEL25IK0FIUWZ3Z0RvZ2Y5bGtBd3ovK1RmK0FJMHNpQmJxQWZFUEFBQUFBRWxGVGtTdVFtQ0MiLAoic21pbGV5LXR3aXN0IjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQ1hVbEVRVlI0Mm9XU2NVaFRZUlRGTHlVQmF3QkJpUVpJUm9Kb1FiREkxSWpJL29wWUJSdVFCSVZna0VDTVdQOUZVQVRLQWl4d3hET2N6TEtOb0hCQ1dHNXZZaG5tV2pJMDAyMHNZeENwVytzeHdkcllkdnZPVjhZbVFoOGNEdmVjMzcwODRCR0o1eUpTSGhNWjNwcEp0L0tVakVLS2tFOG84TmN4RzlHREEwL0Z6MEVVSEttcUNudnFLSmp5SHdwbnZ0elc4a2xubHRQUEMzRE15TkdEQTE5eW9Gc0VxNWZPWm4rK3QyaWNWSmhYaEJKTzV1U2pQNDVaNU9qQmRSY2ZpUFdScnFkV0hCaTdvSzNOWCtWZy8xRk9UVnU1OE0wdTlFQTZadVRvd1lISG5qd1E2U1hqMStIYVNPSHpGZGFtVEJ4KzFzTGVycjM4ZmFxZGc0NW02WmlSb3djSEhudnl3SnlkbE5WcGs1WVBuZVpsWHd2bmNoazJYRmJrMHJvd0kwY1BEanoyNUlIUVBmSmxaczluRjU3VTg5SklFOGVIam5EYzA4UkxMNC94RC84SjZaaVJvd2NISG52eVFNQkdnZHlNdWREWFVjYUQxL1RzdVZuQm81M1ZKVitBR1RsNmNPQ3hKdzlNM0NIZjJ1U3ByTnVxNDQ4ZlZJN0ZZdXoxZWpkMTlPREFZMDhlOE4wZ1pmbEZvelp1cStDWlY1MmN6K2M1R28xdTZ1akJnY2VlUERCa0llTkVWM2trTWR6QW5sdDdPUDVKNVZBb3hPbDB1c1NSb3djSEhudnl3R0E3NlFiYXlMM2dPSkJZZEIvbTBidjFQT2E2em92ejcvajF1Rjg2WnVUb3dZSEgzcitmcWJlVmF2b3ZscWx6RHcySmxQY2N6enFiK2MzOS9hemE5a25IakJ3OU9QQzA4Vm1PVTQzZFRHNlB0VEljYzUzVU5IOXI5dGRrV3dHT0dUbDZjQnQzdHdxVkM5WHQxRk9qNlNCMTJNN1FRSStKVkxFUWdHTkdMdm9Hd1ZVTDZZc1BiQkhhTHJSTGFQZC9WQ20wUTJqYit2SnZCY3dRUUQ3UUM3OEFBQUFBU1VWT1JLNUNZSUlceDNkIiwKInRpY2stc2hpZWxkIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQ1cwbEVRVlI0MnBXU2IwaFRZUlNIMytsZ3B0dmticnZUTm9sMXA2NllSaldTR2xGRmx1V01pVFNwa2lpaGd2cFlFVUFRQVFVVUJCQlZVSTVhKzVmT29BMW1WRkVJcG1XMktZNXkxRm9iN1lJTEtqOE5FVS9udmE1dXF3bDA0T0dlZTg1NWZzRGxFckpZOWJJbTVIa2VFL212OG1wVXhLOEpiWm5zK0VxaFBjN1l4UVVQSG5nMGw0aGJzeHhwd0w3UDhtckhsLzJwRTdEdjgzRm9HdDNKNCt5aHNLTTM5Slk2djh1bEhyWk5kYzNJZkxwSW1WOGZ0WTYxVFRzK0hvV1d5RjZCUFIrT2dQVk5XeGIzVVpsWEY5azI0WmloamhqZ1ZBMTFmam8yMy83K01OamZIUktrVFMvdEJWZ0hiYkI5ckJOYUp3N0E3dGpCZWVxSUFiZVlwN2JKcnJuMUwzWkJNVmFGTndPdDIwbTM4TDcxZGNjY2RjU0FHMHlnK2EwalozblNET2JRUnFCUEt0VUcxb0h1bmhsU3FSU2swMm5nZVI1WVp6MnNDRzdJVVVjTXVGcDUzVHBrKzBIbFhDNEhOZjVHVUxtTXdEZzVTQ1FTUWtBbWt4SGVtYnNjNkhzYnZxTnpUUXk0b2p4dENqWmx2UEVBeEdJeHlHYXp3SGora2wwbzMrZEEwMWVIdlNHRHppa3g0TEt5aGVreHhBMERhNFNBZUR4ZUtQdFFEaTNBaHV1aDdLWTJUaDB4NElLOFVuSlJNY3dOcnAxVjlSc0w1WDRVbjRtb0g5Zk9FcnlsVHVIUGRMN2luT0tPUGxrOXVoS1lJTGNnNDVNWkVWR05HRUhXd3licDdiOS80OWx5TlRrcGU2VDA2bmgydkE1VUEvZ1J4em1SS0FmbGJpMVBiNFRib21XWExpUGRwUzdwbVNVeGVYRHBOMllLUllUMnBUaWpPK0dtU0pVZ2NrUkxxaVExWkxXa216Z2s0UW9mTzAyaHZUQ2pPMEtxOHJjbGZ3Wkk4d3N6WWhGUUVDdXhrd2VrSGFIOXJ6a2hqVWgxM2lFL0FRNHNZMFYycStFZkFBQUFBRWxGVGtTdVFtQ0MiLAoiZ25vbWUtbWltZS1pbWFnZS1ibXAiOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQTBDQVlBQUFETWs3dVJBQUFONEVsRVFWUjRYdTJheVk4bDJWWEdmM2VJNlUwNVp3MDl1S285dDJVQndndGpiL3FQWUFVYldDRVFZc09DaFplV055M3ZFQXRnaFdDRGFIbUJMWG5Cd2xqZ0Jsa003Y2JkWGQwMTUxUlpXWm41eHBqdndLdXJydTZnbjh0Rkp6Skd3bC9xNk1ZN2NmWHVkK0tjNzhTTkY4blBHYitBb2d1UWdPRGpRd0tDbnkxRWg1L3ZPdm5hMTc1MmJwYm8rUHdGRi9CY0hKdkFPUUZzQU9PZnRvWmU0aHZmK01hbURsNGg1TmUvL3ZVZC9wZmd2WC9hOFU3SHQ3TWNueHl2aksrKyt1b1VRRUlJZ0ZVRS93ZjI4MFhnc2pKMmExZndmeDJyRnpydzFud0UzL3Z4SWYxK3hMMEhNKzRlRmJ6eDFnSHpTaEJITUV3MEcwUE4rakJpdUxUK0lLTXBHN0k0QXVFcDhvWklTNUkwd1ZwSDB4aXFvbUI3YTQzMVljcGdrTkxQWXZxeFJHcVBFcEJFQ2lrbHpqbTg5MCtJQnA5WW1nU1VsTUVuc0t4bktWMnNCS0NFSkZPYVFhYnBKWmFkOVI3TmNZTnJEVWEwS0RUZVFWMUNQczh4cmFIZnJ4SGUwOHRTUnNPWU5JbHBHa3ZsUFQ1UzREeENTTUFqblNXUmdqVFJ4SkVnVWdxdDlRZEJHR093MXFLVUNxU1ZsRVE2QkFrNGNQejBBUEo4anNTU1R5dE1VUk1waDR3ZEhvMFhMYzdDWk5aUXRHVVFsQk1Lemx0MlJ3bXBUaEN0UWljS0VVbEVKb2dpamRZS2F5eWlsZWhZQStDOFE2QlFBb0pKQVZJUktVblRHb3kxU0NsUVNuNG9YaWNRQ01BL1BZRHhyS2FzVzhiejVkaENiUnhTV0JJSnd5ekZlTW5acEdKZVBQWkxpQXhhTzFKcDJSd0p5dGJpaWpxUWRoNmtrc1N4SW9rRjNyZEwwMGdWQnhGcXJRTkJLWVB4QkxFUUtLZHg3b1BPRTdKaXJDZFdDdDJacXo4cTRQRzhJbXZsY2l5WjVnN2pGY01zSnBXZ0pJeUxrc0k0akJUZ0xiYVZhSytZVjViVGNVRWNhMFNrY2RaU0xuS3lMRVZtbWpoUlpGb3RSeDJJeDlGUDdIQWYxcjRIWngzZVd3Z0JPSXE2UnFWWk53QWgrUWljY1VnWFl5dEJHY3JJMEU4U1JzTWV3OTZJVWRvbkRsY044Sm9nUk8wUVNuQnlWbkovZjhwa2tyTllWRGcwU3JtbFdlSTRKazRTNHA1R3BwNDQ5aWpwUUVBb1JlZmcvYjR2NElQU2tqaWNzNVRPTVdzc3hvVTVUOC9BeHVZUTZUejlRVXF5cUdpUU9DdXczbUo4VGp5STJJaUdOR2R6REo1SWFUSXRpSVJIcDRvMmxHRVZ0UFBDMVIyaXlLUGZGNlNVQ3V2QU9Za3pBcTlFdDRuakFUcmtQSUZzMElNeGhybzIrUDR6Ukl4MGFBVnJheGw1MHpJL25ORmFTVmtMeXNaUW1aWW9UY2xTVGVFTWZtbW04a1JSRW1xOGJqMTVHVFBJVkVnN2dBdFgyTk8yTGQ2Q0VnSVZLWWdsQWtMSDZkNXBwZXdJRnhCQTBJeUs4SjR1L0VvRzJ0YXoxcGNnSEp1amhNa2tZdThrRDR0WkI5WklYRldGdGloVlJPVWFhZ1Z4TlVPMDMyUHYvcnU4K1B3cjZPZS9SRGt2aUlYR0NrL1ZlTmJTaURnV0dHL3gvUlR2STBDZ2hWbWFSS0VEVWUvOUIrYThBQ0dSMGhBcGo2UUxoT3hHQ2pEcU8weFZCV0ZHd3JMV1Q1ZVdJUkRVdGFPcUhHMFRSRVdBMFVSdFE5TTRFSDFNOFRibnA5K2puTjdrM3MwZk1KdFBtTThOczltTXNxcW9xblpwbG5wcFRkTXVyY0ZZZzMyL1RKeHp3YnozSC9yQ1dyeC8zbmF6czZxQlc3ZSt6YjEzMytZclgva05GdE9XWWU4cTY4TUVXMGlLcWdsZmhuTWdJQ3lFUjdZMzJSM01LS3AzR1VZcHNhMUo1SHZVNVl3SEp5blgxNzVLbG1pU09FRktFRUxoV1pxWE9POXdGbHk0MjBMby8wSUFQQWtnK0JwbmtWS3ViQ2RXOWtMdnZ2TTY1NHZ2ODFkLzg3djgrWi85QWQvOXpxdDg0aW9NZFl1ekphMnlHQXQxSTZocWFDMDRtM0t3OXhhMzd1NXhzTjhRbFFXSHQxK0g5Q3FqelplSkJNUkpUR3RhaFBBZ0hiV3ZNTkxqMEJndk1CWmFZekhXMFM3Tk9JLzFZSURhT2VyS2hmTlBoUDJFc3dSOHNBRFF6bEpQd1pTUzJiVGcvdjdydlBhdFAxZ1MraTZYaDVwRVNxVHk0TUU3aHhPVzhja0JyZDJtc2RjWkp1dmMzVC9nalRkdjhtLy8vUGNjM1htSDZUUUg3OUZLQXlLSVZpNHRaTkNIY3NFWTB5bWhWZlBPaFhMcmFOai94QzUwOStZZWFheW81cGF0N1l6enlaemplN2ZJKzJkY2p4S1M3TXUwYlFUVUNDVENKS1JYdjh6MDZGczhOenhoMFRic0g1UU10bmF3MVJIQ1AwSXFpWTRpc2w0TW1FRFlHa3NyUERhMDB2Qk5TRHorQTI0aWpHVlpVSnNXNzRMQUVRU1FwbW4vQzEvNHd0cEtDWDMyMDUvQzBXS1U0ZXkwb1pvNTVtUEwvdjR4UC96Qm56SS8rZzVLM09EUndSOHpPWHFONmZpSDZPYkhKT28rczhVZGlub1dydkJJcDN6K2M3L0VjTEROMW5BZExjRUlSL2l6Y21rS2F3VzFhM25ydlI5eDQvWU5adVdjMCtrcDk0L3Zjekk3WlZ3dStNdlgvb0xmLzhQZjRaM2JiNkhVaHdGQTBPQ3FpTy9jUHVEU2xlc2NuZDlrODFMQzRiMEY2SVJJYUZJQnQ5LzhheTU5WnBQODZCUnJNN2F2V3ZJMlF2b0JvL1ZQTXA3Y29uS1c0N01aclZ3ZSs0UlBmdXB6Rk9VYWQvYmZBbWQ0L3ZKTEhENTRqMy84cDIvajVad0hEL2FKZExSc3YxZVpUaXJhdHVERkYzYzRQNjA1UE15WkxTcSsvL3JmMFJySGxTLzlHajZPbnR5OVYwdW9LQTMvOGNZZUwzenVDZ2ZIZTF5NnB1Z1BQU2hOZm01WjE1SnFNbUU0U3BsTkdwQ0N3aFpRV3M0ZldzcHlURFRRektkVG9ucEJkZnVRMS83Mkp0Rkk4ZkRrQ0lrbGlUS2NGY3pPcDVqYU1scExNSEhFMisrOWd4UVFhY24rMGFOUU11bTZScTFaM3J6ekhlNC8rQWMrLytLZk1MejJ4U2V0ZEhVdjVKWGo0TUdVTi83bERyTkppNHcxODlvd21UVEVmVU15TWt6UGE2eHJ1SHpOTUJ4cGFDUWlzc3p6TVZKQ1BuZTBkYzE4M1BEZ3FHUnY3MTBtNDd0TUhvNUprNWJaK0l3Yi8zckVvNzJXMHlOQjI1UmtBOHQ4NGpqY3k2bHF5Nk96aHYyOU9WSWJiRHRGaWhuajhTR0xlZDR0SWVSSGhaem5DemF1U0RhdnhuaVg4ZWlldzVZUlRTRjRjTitoOVpEQlJveEhrODhrMWNLQ2xVaVpoSTdTMUlMRnpKTU9RTWFTMWtyeTNIUGozMmZvT0E2dGNERnpTQkZoSFVTWkJHMjU4ZVlZZ00zZENFVEpZbTVvMm9qSitSeG5OVm9IM2VEODZsNUlkSi8rbFNnWWJMYkVJMGN4MTJ4dVNVWWJoQ3VlWE5kRVVjN0dOanpZcTZsTFNaRTFaSDNCbytPRzNpQm0rckRCdTVnNDlhSEZibDNWeEduTHhxVVk3eXpnQTVtZEt4bDEzYUpTV0E1SU5jRDdscll4TEthU3RZMkl3enN6WnRNVUpSb3V2eEJqMmdZcFhlRGF6WUNnZzJ3NFlIWW1hR3JMWUx0bDh6bEYwMVlzcHVDVjRQaWVYMllsSXRJeFp1NkloQ0NLUFMrOTdHbE5qUlNTdFUxRGxFUklKN2h5dlVWcHh6Qk5hVXZGMlY3Q3lWMkR6anhJeitMTVVFNGwvVDVvSGRITDF0bmVIWVEyKy9LdlhtRTBralNsb2lvc3lJaW04UUJQUkN4V3VsQTZzbXduUGZadno4RjdxdldLdG9sWm5GblFFWXVGWUh4VWtnMEVtenN4VFd0NTlJN2h5cldFaDNjS3RpNG5qRFlqMm1yQjh5OEptdHJSMy9Tb0pJY3ppVktTNFU1RVhoZU10alJ0Q1cwdEdXMWFrb0VuaXB2UTg1MVg0QVdMYWNQR2JnOXJIZjJSSms1a053Tm82R1lCYWlzNFBxN3hScEgwSkhVbEtSZWdSTXdnVGRoKzJkRkxORzFwZzA3R0QwMDRmclRYMEU4VExuOGlwaXhLdkkxNWVOQ1FyVzNUdERPYTJqRGE4ZlI2RmV1dFlwYURNWHBKemdLZWZDNllqZzFWV1hEMTJvQXNCU0ZMdG5aVGpETzB0ZWZ3N2dMdlJQZUhNS0dCN282VXMwTW96eVdMcytiOU82Z2xlMHgrcTA4VXBVeVBUNWJFd2RtRUtDbll2YkpHSkJYZWVmS3FERjNDR29kTXNtVndBdDhhMEI2UHBEanp4REpzcDBtMHdBc1RkR0tOWXI1b2FNN2g4dFYxK3BsZ2V0Wndjanhtc0I3UjM1UllEODJwUVFnUDhIUU5DQVErR0tTWlJFck5sYzhNNkc4M0hOOGZVNHdIN04rVTNQeHh6Y2tCSEIwdU9OaWZVN3VHM1JjOHZUV0JROU1mS0JDZXNyQ1V1VUtpY0xWWVpnb2V2T2Z4dGFZdFc1cksweCtsT0NNeHJTUHRlYnlUSVNpbFlyd1ZLRFQxSEx6MTFGVWJSTnk5RDRodUJyUk9xSE5MMGt0WVc0KzU5bG5MbFU4SGNkTkxlNVN6Z3AyZFB1dWpOY2FQSE1YWVlYUEY0dEhTemlYOW5tWTRrSncrYUhGRzA5UVZpM0ZETlhrc1dFbTdHSEI2NkxuM3RrSDRHSzBWczNGSm1nZzJ0akkyTm5lUWpKQ2tlS3RaVEFUTlBFRTRXTjhhZ3VjSitXQWFrSjJJS000YjJ1cHhCN2hFc2xaUzFZNkhEMmQ0NCtodlA5NDY5RG1ibk9QN2NQNnVKVlkyOVB0OGtsT0hYL0F5aXJ3QW0yTHJCcDFxZkdQSnp4M1dXckwxT1ZsUGs2WTJQRzhnRlczYnNMWVIwK1NTTjM5MGg5MnIyOVJWdzJKV0l5Q01vK2M4WnljVnh2eFhEY2lQYWdEbGVmNnpDdFhQdzgxRTJpMkcrb3RzclczeGlXdmJwTHMxUmVsUUNMWmVTSW15aUNnT2o1Y1VVOG10SHkyWUhrZGdIZ3R4amZuRVVPYVd1alpoVGo2ek5IWExjeStsVEU5cnBEQWtFZlI2QWh1ZUZ4U2VpdkhwQWlFVm94M0JwZXVHZm1iSnRFSHBEbGRBQXQweVlyaWhxU3JZMzVzeWZ0U3d2VGxpLy80Tm9sNmZvNGM1dGw1RDJKaFBmbWJFcjd5eUc5cW9jNDZxYUhHdEFDc29adzNGZkU0VUNYcjltRGlPc0ZaUTVBMVY3dkZFM0hxckloOG5TMDFZRkFwVGc5WU5tN3NKUXNqUXBwMXQ2VzhvOHFLbTM0dTU5bWxKMm1PbEMzVTF3Ty85OWg5eGRuYUMwQUpuUEpHV3ZQTExqa2hxMGpTaEtCdjg0ODhKcEVuS1Y1OWZoQUR3QXU4QlBFS0FsQXFsQ1AzYnViQUFYb1FSSVFUT2V5VGc4V1RyRW1jRVRXbUlZZzBDVkNTb0M0UFFIcXdqU2lWWmxuRDl1YzhIcml0dDlBbCs4OWQvNjZJdkxGWjlUMytwOGF6enEzTlcvYXYzZ1dmajRzR3NqaGNuMy9WMUF3aXB2VGhoTGtKOGxmeXpMMERYSnpUQXp5b0RxOFF2VGo3b0xJQVZEVmpBZGJPd3VpakJmOEdTNmFKTDVrTGt1LzV1Q2ZtT001QzlRS2w4akhuUENIVGwzR3J3M2Qyb2ZvcW9maVk2V1BYeExFRS9OVXZXV3FFQkIwVGYvT1kzR3k2Sy8zbWdGOG02c3RZYUFld0NWd0FQdElDNHdMOFBDTUN2Zk83NlY0OHQ0RHMrL1RIblI4QTlEY3dBQjhqT29xeThQMTQ1MThIcXRzVHhiSFRKV0NENmVQT0RsUUtRZ09LL2k2ZG54UUdlaThFRDRtUE9EeVAvei9FTC9BTC9DUk1qQVc2bStqTFRBQUFBQUVsRlRrU3VRbUNDIn0sCmRhPVt7ZGVzYzoiXHU4MDU2XHU4YTk1XHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIixodG1sOntwYXRoOiJmYWNlcy94bWFzIix0YWJsZTpbW1siW086LSl4XSIsImFuZ2VsIl0sWyJbeHgoeF0iLCJkZWFkIl0sWyJbOil4XSIsInNtaWxlIl0sWyJbOm8peF0iLCJjbG93biJdLFsiWzpvKWp4XSIsImNsb3duX2plc3VzIl0sWyJbOi0oeF0iLCJmcm93biJdLFsiWzp+KHhdIiwiY3J5Il0sWyJbOy0peF0iLCJ3aW5rIl0sWyJbOi1beF0iLCJhbmdyeSJdLFsiWzotXXhdIiwiZGV2aWwiXSxbIls6RHhdIiwiYmlnZ3JpbiJdLFsiWzpPeF0iLCJvaCJdLFsiWzpQeF0iLCJ0b25ndWUiXSxbIlteM154XSIsImtpc3MiXSxbIls/Xz94XSIsIndvbmRlciJdLFsiI3l1cHgjIiwiYWdyZWUiXSxbIiNuZ3gjIiwiZG9ubm8iXSxbIiNoZWhleCMiLCJoZWhlIl0sWyIjbG92ZXgjIiwibG92ZSJdLFsiI29oeCMiLCJzdXJwcmlzZSJdXSxbWyIjYXNzeCMiLCJhc3MiXSxbIltzb3NhZHhdIiwic29zYWQiXSwKWyIjZ29vZHgjIiwiZ29vZCJdLFsiI2hvaG94IyIsImhvaG8iXSxbIiNraWxseCMiLCJraWxsIl0sWyIjYnlleCMiLCJieWUiXSxbIltaX1p4XSIsInoiXSxbIltAX0B4XSIsIkAiXSxbIiNhZG9yZXgjIiwiYWRvcmUiXSxbIiNhZG9yZTJ4IyIsImFkb3JlMiJdLFsiWz8/P3hdIiwid29uZGVyMiJdLFsiW2JhbmdoZWFkeF0iLCJiYW5naGVhZCJdLFsiW2JvdW5jZXJ4XSIsImJvdW5jZXIiXV0sW1siW2NlbnNvcmVkeF0iLCJjZW5zb3JlZCJdLFsiW2Zsb3dlcmZhY2V4XSIsImZsb3dlcmZhY2UiXSxbIltzaG9ja2luZ3hdIiwic2hvY2tpbmciXSxbIltwaG90b3hdIiwicGhvdG8iXSxbIlt5aXBlc3hdIiwieWlwZXMiXSxbIlt5aXBlczJ4XSIsInlpcGVzMiJdLFsiW3lpcGVzM3hdIiwieWlwZXMzIl0sWyJbeWlwZXM0eF0iLCJ5aXBlczQiXSxbIlszNjl4XSIsIjM2OSJdLFsiW2JvbWJ4XSIsImJvbWIiXSxbIltzbGlja3hdIiwic2xpY2siXSxbIltmdWNreF0iLCJkaXUiXSxbIiNub3gjIiwKIm5vIl0sWyIja2lsbDJ4IyIsImtpbGwyIl1dLFtbIiNraWxsM3gjIiwia2lsbDMiXSxbIiNjbngjIiwiY2hpY2tlbiJdLFsiI2NuMngjIiwiY2hpY2tlbjIiXSxbIltib3VuY3l4XSIsImJvdW5jeSJdLFsiW2JvdW5jeTJ4XSIsImJvdW5jeTIiXSxbIiNmaXJleCMiLCJmaXJlIl1dXSxzcGFuOltbIltvZmZ0b3BpY3hdIiwib2ZmdG9waWMiXV19fSx7ZGVzYzoiXHU3ZGEwXHU1ZTNkXHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIixodG1sOntwYXRoOiJmYWNlcy94bWFzL2dyZWVuIix0YWJsZTpbW1siWzopZ3hdIiwic21pbGUiXSxbIls6bylneF0iLCJjbG93biJdLFsiWzotKGd4XSIsImZyb3duIl0sWyJbOn4oZ3hdIiwiY3J5Il0sWyIjeXVwZ3gjIiwiYWdyZWUiXV0sW1siW3Nvc2FkZ3hdIiwic29zYWQiXSxbIiNnb29kZ3gjIiwiZ29vZCJdLFsiI2J5ZWd4IyIsImJ5ZSJdXSxbWyJbMzY5Z3hdIiwiMzY5Il0sWyJbZnVja2d4XSIsImRpdSJdXV19fSx7ZGVzYzoiXHU2NWIwXHU1ZTc0XHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIiwKaHRtbDp7cGF0aDoiZmFjZXMvbmV3eWVhciIsdGFibGU6W1tbIls6byluXSIsImNsb3duIl0sWyJbOm8pMm5dIiwiY2xvd24yIl0sWyJbOm8pM25dIiwiY2xvd24zIl0sWyIjYXNzbiMiLCJhc3MiXSxbIltzb3NhZG5dIiwic29zYWQiXSxbIltzb3NhZDJuXSIsInNvc2FkMiJdLFsiW3Nvc2FkM25dIiwic29zYWQzIl0sWyJbYmFuZ2hlYWRuXSIsImJhbmdoZWFkIl0sWyJbYmFuZ2hlYWQybl0iLCJiYW5naGVhZDIiXV0sW1siW3lpcGVzbl0iLCJ5aXBlcyJdLFsiWzM2OW5dIiwiMzY5Il0sWyJbMzY5Mm5dIiwiMzY5MiJdLFsiW2Z1Y2tuXSIsImRpdSJdLFsiW2JvdW5jZXJuXSIsImJvdW5jZXIiXV1dLHNwYW46W1siW29mZnRvcGljbl0iLCJvZmZ0b3BpYyJdLFsiW29mZnRvcGljMm5dIiwib2ZmdG9waWMyIl1dfX0se2Rlc2M6Ilx1ODE2Nlx1OWI1NFx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYSIsaHRtbDp7cGF0aDoiZmFjZXMvbG9tb3JlIix0YWJsZTpbW1sieHgobG0iLCJkZWFkIl0sClsiOilsbSIsInNtaWxlIl0sWyI6bylsbSIsImNsb3duIl0sWyI6bykybG0iLCJjbG93bjIiXSxbIjpvKTNsbSIsImNsb3duMyJdLFsiOm8pNGxtIiwiY2xvd240Il0sWyI6LShsbSIsImZyb3duIl0sWyI6fihsbSIsImNyeSJdLFsiOy0pbG0iLCJ3aW5rIl0sWyI6LVtsbSIsImFuZ3J5Il0sWyI6LV1sbSIsImRldmlsIl0sWyI6RGxtIiwiYmlnZ3JpbiJdLFsiOk9sbSIsIm9oIl0sWyI6UGxtIiwidG9uZ3VlIl0sWyJeM15sbSIsImtpc3MiXSxbIj9fP2xtIiwid29uZGVyIl1dLFtbIiN5dXAjbG0iLCJhZ3JlZSJdLFsiI2hlaGUjbG0iLCJoZWhlIl0sWyIjbG92ZSNsbSIsImxvdmUiXSxbIiNvaCNsbSIsInN1cnByaXNlIl0sWyIjYXNzI2xtIiwiYXNzIl0sWyJbc29zYWRdbG0iLCJzb3NhZCJdLFsiI2dvb2QjbG0iLCJnb29kIl0sWyIjaG9obyNsbSIsImhvaG8iXSxbIiNraWxsI2xtIiwia2lsbCJdLFsiQF9AbG0iLCJAIl0sWyIjYWRvcmUjbG0iLCJhZG9yZSJdLFsiPz8/bG0iLCJ3b25kZXIyIl0sClsiW2JhbmdoZWFkXWxtIiwiYmFuZ2hlYWQiXSxbIltib3VuY2VyXWxtIiwiYm91bmNlciJdLFsiW2Zsb3dlcmZhY2VdbG0iLCJmbG93ZXJmYWNlIl0sWyJbc2hvY2tpbmddbG0iLCJzaG9ja2luZyJdLFsiW3Bob3RvXWxtIiwicGhvdG8iXSxbIlt5aXBlc11sbSIsInlpcGVzIl0sWyJbMzY5XWxtIiwiMzY5Il0sWyJbc2xpY2tdbG0iLCJzbGljayJdLFsiZnVja2xtIiwiZGl1Il0sWyJmdWNrMmxtIiwiZGl1MiJdLFsiI2tpbGwyI2xtIiwiS2lsbDJsbSJdLFsiW29mZnRvcGljXWxtIiwib2ZmdG9waWMiXV1dfX0se2Rlc2M6IlNBUlNcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2EiLGh0bWw6e3BhdGg6ImZhY2VzL3NpY2siLHRhYmxlOltbWyJbTzotKXNrXSIsImFuZ2VsIl0sWyJbOm8pc2tdIiwiY2xvd24iXSxbIls6LVtza10iLCJhbmdyeSJdLFsiWzotXXNrXSIsImRldmlsIl0sWyIjeXVwc2sjIiwiYWdyZWUiXSxbIiNuZ3NrIyIsImRvbm5vIl0sWyIjY25zayMiLCJjaGlja2VuIl1dLApbWyIjYXNzc2sjIiwiYXNzIl0sWyJbc29zYWRza10iLCJzb3NhZCJdLFsiI2hvaG9zayMiLCJob2hvIl0sWyIjaG9obzJzayMiLCJob2hvMiJdLFsiI2tpbGxzayMiLCJraWxsIl0sWyIjYnllc2sjIiwiYnllIl0sWyJbQF9Ac2tdIiwiQCJdLFsiI2Fkb3Jlc2sjICIsImFkb3JlIl0sWyJbYmFuZ2hlYWRza10iLCJiYW5naGVhZCJdXSxbWyJbZmxvd2VyZmFjZXNrXSIsImZsb3dlcmZhY2UiXSxbIltzaG9ja2luZ3NrXSIsInNob2NraW5nIl0sWyJbcGhvdG9za10iLCJwaG90byJdLFsiI2ZpcmVzayMiLCJmaXJlIl0sWyJbMzY5c2tdIiwiMzY5Il0sWyJbZnVja3NrXSIsImRpdSJdXV19fSx7ZGVzYzoiXHU4MzQ5XHU2Y2U1XHU5OWFjXHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIixodG1sOntwYXRoOiJmYWNlcy9hbHBhY2EiLHRhYmxlOltbWyI6fihhbCIsImNyeSJdLFsiOk9hbCIsIm9oIl0sWyI6UGFsIiwidG9uZ3VlIl0sWyIjeXVwI2FsIiwiYWdyZWUiXSxbIiNuZyNhbCIsImRvbm5vIl0sClsiI2hlaGUjYWwiLCJoZWhlIl0sWyIjbG92ZSNhbCIsImxvdmUiXSxbIiNvaCNhbCIsInN1cnByaXNlIl0sWyIjY24jYWwiLCJjaGlja2VuIl1dLFtbIiNhc3MjYWwiLCJhc3MiXSxbIltzb3NhZF1hbCIsInNvc2FkIl0sWyIjZ29vZCNhbCIsImdvb2QiXSxbIiNraWxsI2FsIiwia2lsbCJdLFsiI2J5ZSNhbCIsImJ5ZSJdLFsiWl9aYWwiLCJ6Il0sWyJAX0BhbCIsIkAiXSxbIiNhZG9yZSNhbCIsImFkb3JlIl0sWyI/Pz9hbCIsIndvbmRlcjIiXSxbIltiYW5naGVhZF1hbCIsImJhbmdoZWFkIl0sWyJbYm91bmNlcl1hbCIsImJvdW5jZXIiXSxbIltib3VuY3ldYWwiLCJib3VuY3kiXV0sW1siW2Zsb3dlcmZhY2VdYWwiLCJmbG93ZXJmYWNlIl0sWyJbc2hvY2tpbmddYWwiLCJzaG9ja2luZyJdLFsiW3Bob3RvXWFsIiwicGhvdG8iXSxbIiNmaXJlI2FsIiwiZmlyZSJdLFsiW3lpcGVzXWFsIiwieWlwZXMiXSxbIlszNjldYWwiLCIzNjkiXSxbIltib21iXWFsIiwiYm9tYiJdLFsiW3NsaWNrXWFsIiwKInNsaWNrIl0sWyIjYWxmdWNrYWwjIiwiZGl1Il0sWyIjbm8jYWwiLCJubyJdLFsiI2tpbGwyI2FsIiwia2lsbDIiXV1dfX0se2Rlc2M6Ilx1OThkZlx1OWIzY1x1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYSIsaHRtbDp7cGF0aDoiZmFjZXMvZ2hvc3QiLHRhYmxlOltbWyJPOi0pZyIsImFuZ2VsIl0sWyJ4eChnIiwiZGVhZCJdLFsiOilnIiwic21pbGUiXSxbIjpvKWciLCJjbG93biJdLFsiOi0oZyIsImZyb3duIl0sWyI6fihnIiwiY3J5Il0sWyI7LSlnIiwid2luayJdLFsiOi1bZyIsImFuZ3J5Il0sWyI6LV1nIiwiZGV2aWwiXSxbIjpEZyIsImJpZ2dyaW4iXSxbIjpPZyIsIm9oIl0sWyI6UGciLCJ0b25ndWUiXSxbIl4zXmciLCJraXNzIl0sWyI/Xz9nIiwid29uZGVyIl0sWyIjeXVwI2ciLCJhZ3JlZSJdLFsiI25nI2ciLCJkb25ubyJdLFsiI2hlaGUjZyIsImhlaGUiXSxbIiNsb3ZlI2ciLCJsb3ZlIl0sWyIjb2gjZyIsInN1cnByaXNlIl0sWyIjY24jZyIsImNoaWNrZW4iXV0sW1siI2FzcyNnIiwKImFzcyJdLFsiW3Nvc2FkXWciLCJzb3NhZCJdLFsiI2dvb2QjZyIsImdvb2QiXSxbIiNob2hvI2ciLCJob2hvIl0sWyIja2lsbCNnIiwia2lsbCJdLFsiI2J5ZSNnIiwiYnllIl0sWyJaX1pnIiwieiJdLFsiQF9AZyIsIkAiXSxbIiNhZG9yZSNnIiwiYWRvcmUiXSxbIj8/P2ciLCJ3b25kZXIyIl0sWyJbYmFuZ2hlYWRdZyIsImJhbmdoZWFkIl0sWyJbYm91bmNlcl1nIiwiYm91bmNlciJdLFsiW2JvdW5jeV1nIiwiYm91bmN5Il0sWyJbb2ZmdG9waWNdZyIsIm9mZnRvcGljIl1dLFtbIltjZW5zb3JlZF1nIiwiY2Vuc29yZWQiXSxbIltmbG93ZXJmYWNlXWciLCJmbG93ZXJmYWNlIl0sWyJbc2hvY2tpbmddZyIsInNob2NraW5nIl0sWyJbcGhvdG9dZyIsInBob3RvIl0sWyIjZmlyZSNnIiwiZmlyZSJdLFsiW3lpcGVzXWciLCJ5aXBlcyJdLFsiWzM2OV1nIiwiMzY5Il0sWyJbYm9tYl1nIiwiYm9tYiJdLFsiW3NsaWNrXWciLCJzbGljayJdLFsiZnVja2ciLCJkaXUiXSxbIiNubyNnIiwibm8iXSwKWyIja2lsbDIjZyIsImtpbGwyIl1dXX19LHtkZXNjOiJcdTZjMzRcdTVmNjlcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2EiLGh0bWw6e3BhdGg6ImZhY2VzL2RyYXciLHRhYmxlOltbWyJPOi0pZHciLCJhbmdlbCJdLFsieHgoZHciLCJkZWFkIl0sWyI6KWR3Iiwic21pbGUiXSxbIjpvKWR3IiwiY2xvd24iXSxbIjotKGR3IiwiZnJvd24iXSxbIjp+KGR3IiwiY3J5Il0sWyI7LSlkdyIsIndpbmsiXSxbIjotW2R3IiwiYW5ncnkiXSxbIjotXWR3IiwiZGV2aWwiXSxbIjpEZHciLCJiaWdncmluIl0sWyI6T2R3Iiwib2giXSxbIjpQZHciLCJ0b25ndWUiXSxbIl4zXmR3Iiwia2lzcyJdLFsiP18/ZHciLCJ3b25kZXIiXSxbIiN5dXAjZHciLCJhZ3JlZSJdLFsiI25nI2R3IiwiZG9ubm8iXSxbIiNoZWhlI2R3IiwiaGVoZSJdLFsiI2xvdmUjZHciLCJsb3ZlIl0sWyIjb2gjZHciLCJzdXJwcmlzZSJdXSxbWyIjY24jZHciLCJjaGlja2VuIl0sWyIjYXNzI2R3IiwiYXNzIl0sWyJbc29zYWRdZHciLAoic29zYWQiXSxbIiNnb29kI2R3IiwiZ29vZCJdLFsiI2hvaG8jZHciLCJob2hvIl0sWyIja2lsbCNkdyIsImtpbGwiXSxbIiNieWUjZHciLCJieWUiXSxbIlpfWmR3IiwieiJdLFsiQF9AZHciLCJAIl0sWyIjYWRvcmUjZHciLCJhZG9yZSJdLFsiPz8/ZHciLCJ3b25kZXIyIl0sWyJbYmFuZ2hlYWRdZHciLCJiYW5naGVhZCJdLFsiW2JvdW5jZXJdZHciLCJib3VuY2VyIl1dLFtbIltib3VuY3ldZHciLCJib3VuY3kiXSxbIltjZW5zb3JlZF1kdyIsImNlbnNvcmVkIl0sWyJbZmxvd2VyZmFjZV1kdyIsImZsb3dlcmZhY2UiXSxbIltzaG9ja2luZ11kdyIsInNob2NraW5nIl0sWyJbcGhvdG9dZHciLCJwaG90byJdLFsiI2ZpcmUjZHciLCJmaXJlIl0sWyJbeWlwZXNdZHciLCJ5aXBlcyJdLFsiWzM2OV1kdyIsIjM2OSJdLFsiW2JvbWJdZHciLCJib21iIl0sWyJbc2xpY2tdZHciLCJzbGljayJdLFsiZnVja2R3IiwiZGl1Il0sWyIjbm8jZHciLCJubyJdLFsiI2tpbGwyI2R3Iiwia2lsbDIiXSwKWyJbb2ZmdG9waWNdZHciLCJvZmZ0b3BpYyJdXV19fSx7ZGVzYzoiXHU1MzE3XHU2OTc1XHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhIixodG1sOntwYXRoOiJmYWNlcy9mcm96ZW4iLHRhYmxlOltbWyJPOi0pZnIiLCJhbmdlbCJdLFsieHgoZnIiLCJkZWFkIl0sWyI6KWZyIiwic21pbGUiXSxbIjpvKWZyIiwiY2xvd24iXSxbIjotKGZyIiwiZnJvd24iXSxbIjp+KGZyIiwiY3J5Il0sWyI7LSlmciIsIndpbmsiXSxbIjotW2ZyIiwiYW5ncnkiXSxbIjotXWZyIiwiZGV2aWwiXSxbIjpEZnIiLCJiaWdncmluIl0sWyI6T2ZyIiwib2giXSxbIjpQZnIiLCJ0b25ndWUiXSxbIl4zXmZyIiwia2lzcyJdLFsiP18/ZnIiLCJ3b25kZXIiXSxbIiN5dXAjZnIiLCJhZ3JlZSJdLFsiI25nI2ZyIiwiZG9ubm8iXSxbIiNoZWhlI2ZyIiwiaGVoZSJdLFsiI2xvdmUjZnIiLCJsb3ZlIl0sWyIjb2gjZnIiLCJzdXJwcmlzZSJdLFsiI2NuI2ZyIiwiY2hpY2tlbiJdXSxbWyIjYXNzI2ZyIiwiYXNzIl0sWyJbc29zYWRdZnIiLAoic29zYWQiXSxbIiNnb29kI2ZyIiwiZ29vZCJdLFsiI2hvaG8jZnIiLCJob2hvIl0sWyIja2lsbCNmciIsImtpbGwiXSxbIiNieWUjZnIiLCJieWUiXSxbIlpfWmZyIiwieiJdLFsiQF9AZnIiLCJAIl0sWyIjYWRvcmUjZnIiLCJhZG9yZSJdLFsiPz8/ZnIiLCJ3b25kZXIyIl0sWyJbYmFuZ2hlYWRdZnIiLCJiYW5naGVhZCJdLFsiW2JhbmdoZWFkMl1mciIsImJhbmdoZWFkMiJdLFsiW2JvdW5jZXJdZnIiLCJib3VuY2VyIl0sWyJbYm91bmN5XWZyIiwiYm91bmN5Il0sWyJbb2ZmdG9waWNdZnIiLCJvZmZ0b3BpYyJdXSxbWyJbY2Vuc29yZWRdZnIiLCJjZW5zb3JlZCJdLFsiW2Zsb3dlcmZhY2VdZnIiLCJmbG93ZXJmYWNlIl0sWyJbc2hvY2tpbmddZnIiLCJzaG9ja2luZyJdLFsiW3Bob3RvXWZyIiwicGhvdG8iXSxbIiNmaXJlI2ZyIiwiZmlyZSJdLFsiW3lpcGVzXWZyIiwieWlwZXMiXSxbIlszNjldZnIiLCIzNjkiXSxbIltib21iXWZyIiwiYm9tYiJdLFsiW3NsaWNrXWZyIiwic2xpY2siXSwKWyJmdWNrZnIiLCJkaXUiXSxbIiNubyNmciIsIm5vIl0sWyIja2lsbDIjZnIiLCJraWxsMiJdXV19fSx7ZGVzYzoiUGl4ZWxcdTg4NjhcdTYwYzVcdTU3MTZcdTc5M2EiLGh0bWw6e3BhdGg6ImZhY2VzL3BpeGVsIix0YWJsZTpbW1siTzotKXB4IiwiYW5nZWwiXSxbInh4KHB4IiwiZGVhZCJdLFsiOilweCIsInNtaWxlIl0sWyI6bylweCIsImNsb3duIl0sWyI6LShweCIsImZyb3duIl0sWyI6fihweCIsImNyeSJdLFsiOy0pcHgiLCJ3aW5rIl0sWyI6LVtweCIsImFuZ3J5Il0sWyI6LV1weCIsImRldmlsIl0sWyI6RHB4IiwiYmlnZ3JpbiJdLFsiOk9weCIsIm9oIl0sWyI6UHB4IiwidG9uZ3VlIl0sWyJeM15weCIsImtpc3MiXSxbIj9fP3B4Iiwid29uZGVyIl0sWyIjeXVwI3B4IiwiYWdyZWUiXSxbIiNuZyNweCIsImRvbm5vIl0sWyIjaGVoZSNweCIsImhlaGUiXSxbIiNsb3ZlI3B4IiwibG92ZSJdLFsiI29oI3B4Iiwic3VycHJpc2UiXSxbIiNjbiNweCIsImNoaWNrZW4iXV0sW1siI2FzcyNweCIsCiJhc3MiXSxbIltzb3NhZF1weCIsInNvc2FkIl0sWyIjZ29vZCNweCIsImdvb2QiXSxbIiNob2hvI3B4IiwiaG9obyJdLFsiI2tpbGwjcHgiLCJraWxsIl0sWyIjYnllI3B4IiwiYnllIl0sWyJaX1pweCIsInoiXSxbIkBfQHB4IiwiQCJdLFsiI2Fkb3JlI3B4IiwiYWRvcmUiXSxbIj8/P3B4Iiwid29uZGVyMiJdLFsiW2JhbmdoZWFkXXB4IiwiYmFuZ2hlYWQiXSxbIltib3VuY2VyXXB4IiwiYm91bmNlciJdLFsiW2JvdW5jeV1weCIsImJvdW5jeSJdLFsiW29mZnRvcGljXXB4Iiwib2ZmdG9waWMiXV0sW1siW2NlbnNvcmVkXXB4IiwiY2Vuc29yZWQiXSxbIltmbG93ZXJmYWNlXXB4IiwiZmxvd2VyZmFjZSJdLFsiW3Nob2NraW5nXXB4Iiwic2hvY2tpbmciXSxbIltwaG90b11weCIsInBob3RvIl0sWyIjZmlyZSNweCIsImZpcmUiXSxbIlt5aXBlc11weCIsInlpcGVzIl0sWyJbMzY5XXB4IiwiMzY5Il0sWyJbYm9tYl1weCIsImJvbWIiXSxbIltzbGlja11weCIsInNsaWNrIl0sWyJmdWNrcHgiLAoiZGl1Il0sWyIjbm8jcHgiLCJubyJdLFsiI2tpbGwyI3B4Iiwia2lsbDIiXV1dfX0se2Rlc2M6Ilx1NzI3OVx1NmI4YVx1NTcxNlx1NzkzYSIsaHRtbDp7cGF0aDoiZmFjZXMiLHRhYmxlOltbWyIjZ29vZDIjIiwiVGh1bWJVcCJdLFsiI2JhZCMiLCJUaHVtYkRvd24iXSxbIltpbWddL2ZhY2VzL3N1cnByaXNlMi5naWZbL2ltZ10iLCJzdXJwcmlzZTIiXSxbIltpbWddL2ZhY2VzL2JlZXIuZ2lmWy9pbWddIiwiYmVlciJdXV19fV07IWZ1bmN0aW9uKGIsYyl7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9Yi5kb2N1bWVudD9jKGIsITApOmZ1bmN0aW9uKGIpe2lmKCFiLmRvY3VtZW50KXRocm93IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGMoYil9OmMoYil9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGIsCmMpe2Z1bmN0aW9uIGQoYSl7dmFyIGU9YS5sZW5ndGgsaz1mLnR5cGUoYSk7cmV0dXJuImZ1bmN0aW9uIj09PWt8fGYuaXNXaW5kb3coYSk/ITE6MT09PWEubm9kZVR5cGUmJmU/ITA6ImFycmF5Ij09PWt8fDA9PT1lfHwibnVtYmVyIj09dHlwZW9mIGUmJjA8ZSYmZS0xIGluIGF9ZnVuY3Rpb24gaChhLGUsayl7aWYoZi5pc0Z1bmN0aW9uKGUpKXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGYpe3JldHVybiEhZS5jYWxsKGEsZixhKSE9PWt9KTtpZihlLm5vZGVUeXBlKXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWUhPT1rfSk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZihHYi50ZXN0KGUpKXJldHVybiBmLmZpbHRlcihlLGEsayk7ZT1mLmZpbHRlcihlLGEpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gMDw9Zi5pbkFycmF5KGEsZSkhPT1rfSl9ZnVuY3Rpb24gbShhLGUpe2RvIGE9YVtlXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9CmZ1bmN0aW9uIHEoYSl7dmFyIGU9ZWJbYV09e307cmV0dXJuIGYuZWFjaChhLm1hdGNoKFEpfHxbXSxmdW5jdGlvbihhLGYpe2VbZl09ITB9KSxlfWZ1bmN0aW9uIG4oKXt4LmFkZEV2ZW50TGlzdGVuZXI/KHgucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIscCwhMSksYi5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixwLCExKSk6KHguZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIscCksYi5kZXRhY2hFdmVudCgib25sb2FkIixwKSl9ZnVuY3Rpb24gcCgpeyh4LmFkZEV2ZW50TGlzdGVuZXJ8fCJsb2FkIj09PWV2ZW50LnR5cGV8fCJjb21wbGV0ZSI9PT14LnJlYWR5U3RhdGUpJiYobigpLGYucmVhZHkoKSl9ZnVuY3Rpb24gQihhLGUsayl7aWYodm9pZCAwPT09ayYmMT09PWEubm9kZVR5cGUpe3ZhciByPSJkYXRhLSIrZS5yZXBsYWNlKEhiLCItJDEiKS50b0xvd2VyQ2FzZSgpO2lmKGs9YS5nZXRBdHRyaWJ1dGUociksInN0cmluZyI9PXR5cGVvZiBrKXt0cnl7az0KInRydWUiPT09az8hMDoiZmFsc2UiPT09az8hMToibnVsbCI9PT1rP251bGw6K2srIiI9PT1rPytrOkliLnRlc3Qoayk/Zi5wYXJzZUpTT04oayk6a31jYXRjaChiKXt9Zi5kYXRhKGEsZSxrKX1lbHNlIGs9dm9pZCAwfXJldHVybiBrfWZ1bmN0aW9uIHcoYSl7Zm9yKHZhciBlIGluIGEpaWYoKCJkYXRhIiE9PWV8fCFmLmlzRW1wdHlPYmplY3QoYVtlXSkpJiYidG9KU09OIiE9PWUpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24geShhLGUsayxyKXtpZihmLmFjY2VwdERhdGEoYSkpe3ZhciBiLGMsZD1mLmV4cGFuZG8sZz1hLm5vZGVUeXBlLGw9Zz9mLmNhY2hlOmEsaD1nP2FbZF06YVtkXSYmZDtpZihoJiZsW2hdJiYocnx8bFtoXS5kYXRhKXx8dm9pZCAwIT09a3x8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBofHwoaD1nP2FbZF09amEucG9wKCl8fGYuZ3VpZCsrOmQpLGxbaF18fChsW2hdPWc/e306e3RvSlNPTjpmLm5vb3B9KSwoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT0KdHlwZW9mIGUpJiYocj9sW2hdPWYuZXh0ZW5kKGxbaF0sZSk6bFtoXS5kYXRhPWYuZXh0ZW5kKGxbaF0uZGF0YSxlKSksYz1sW2hdLHJ8fChjLmRhdGF8fChjLmRhdGE9e30pLGM9Yy5kYXRhKSx2b2lkIDAhPT1rJiYoY1tmLmNhbWVsQ2FzZShlKV09ayksInN0cmluZyI9PXR5cGVvZiBlPyhiPWNbZV0sbnVsbD09YiYmKGI9Y1tmLmNhbWVsQ2FzZShlKV0pKTpiPWMsYn19ZnVuY3Rpb24gSihhLGUsayl7aWYoZi5hY2NlcHREYXRhKGEpKXt2YXIgcixiLGM9YS5ub2RlVHlwZSxkPWM/Zi5jYWNoZTphLGc9Yz9hW2YuZXhwYW5kb106Zi5leHBhbmRvO2lmKGRbZ10pe2lmKGUmJihyPWs/ZFtnXTpkW2ddLmRhdGEpKXtmLmlzQXJyYXkoZSk/ZT1lLmNvbmNhdChmLm1hcChlLGYuY2FtZWxDYXNlKSk6ZSBpbiByP2U9W2VdOihlPWYuY2FtZWxDYXNlKGUpLGU9ZSBpbiByP1tlXTplLnNwbGl0KCIgIikpO2ZvcihiPWUubGVuZ3RoO2ItLTspZGVsZXRlIHJbZVtiXV07aWYoaz8hdyhyKTohZi5pc0VtcHR5T2JqZWN0KHIpKXJldHVybn0oa3x8CihkZWxldGUgZFtnXS5kYXRhLHcoZFtnXSkpKSYmKGM/Zi5jbGVhbkRhdGEoW2FdLCEwKTpzLmRlbGV0ZUV4cGFuZG98fGQhPWQud2luZG93P2RlbGV0ZSBkW2ddOmRbZ109bnVsbCl9fX1mdW5jdGlvbiBEKCl7cmV0dXJuITB9ZnVuY3Rpb24gRigpe3JldHVybiExfWZ1bmN0aW9uIEEoKXt0cnl7cmV0dXJuIHguYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIHUoYSl7dmFyIGU9ZmIuc3BsaXQoInwiKTthPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGEuY3JlYXRlRWxlbWVudClmb3IoO2UubGVuZ3RoOylhLmNyZWF0ZUVsZW1lbnQoZS5wb3AoKSk7cmV0dXJuIGF9ZnVuY3Rpb24gdChhLGUpe3ZhciBrLHIsYj0wLGM9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1XP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZXx8IioiKTp0eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsIT09Vz9hLnF1ZXJ5U2VsZWN0b3JBbGwoZXx8IioiKTp2b2lkIDA7aWYoIWMpZm9yKGM9CltdLGs9YS5jaGlsZE5vZGVzfHxhO251bGwhPShyPWtbYl0pO2IrKykhZXx8Zi5ub2RlTmFtZShyLGUpP2MucHVzaChyKTpmLm1lcmdlKGMsdChyLGUpKTtyZXR1cm4gdm9pZCAwPT09ZXx8ZSYmZi5ub2RlTmFtZShhLGUpP2YubWVyZ2UoW2FdLGMpOmN9ZnVuY3Rpb24gSChhKXtUYS50ZXN0KGEudHlwZSkmJihhLmRlZmF1bHRDaGVja2VkPWEuY2hlY2tlZCl9ZnVuY3Rpb24gdihhLGUpe3JldHVybiBmLm5vZGVOYW1lKGEsInRhYmxlIikmJmYubm9kZU5hbWUoMTEhPT1lLm5vZGVUeXBlP2U6ZS5maXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gTyhhKXtyZXR1cm4gYS50eXBlPShudWxsIT09Zi5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24gUihhKXt2YXIgZT1LYi5leGVjKGEudHlwZSk7cmV0dXJuIGU/CmEudHlwZT1lWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiBZKGEsZSl7Zm9yKHZhciBrLHI9MDtudWxsIT0oaz1hW3JdKTtyKyspZi5fZGF0YShrLCJnbG9iYWxFdmFsIiwhZXx8Zi5fZGF0YShlW3JdLCJnbG9iYWxFdmFsIikpfWZ1bmN0aW9uIEsoYSxlKXtpZigxPT09ZS5ub2RlVHlwZSYmZi5oYXNEYXRhKGEpKXt2YXIgayxyLGI7cj1mLl9kYXRhKGEpO3ZhciBjPWYuX2RhdGEoZSxyKSxkPXIuZXZlbnRzO2lmKGQpZm9yKGsgaW4gZGVsZXRlIGMuaGFuZGxlLGMuZXZlbnRzPXt9LGQpZm9yKHI9MCxiPWRba10ubGVuZ3RoO2I+cjtyKyspZi5ldmVudC5hZGQoZSxrLGRba11bcl0pO2MuZGF0YSYmKGMuZGF0YT1mLmV4dGVuZCh7fSxjLmRhdGEpKX19ZnVuY3Rpb24gYWEoYSxlKXt2YXIgayxyPWYoZS5jcmVhdGVFbGVtZW50KGEpKS5hcHBlbmRUbyhlLmJvZHkpLGM9Yi5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSYmKGs9Yi5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZShyWzBdKSk/CmsuZGlzcGxheTpmLmNzcyhyWzBdLCJkaXNwbGF5Iik7cmV0dXJuIHIuZGV0YWNoKCksY31mdW5jdGlvbiB2YShhKXt2YXIgZT14LGs9Z2JbYV07cmV0dXJuIGt8fChrPWFhKGEsZSksIm5vbmUiIT09ayYma3x8KGxhPShsYXx8ZigiXHgzY2lmcmFtZSBmcmFtZWJvcmRlclx4M2QnMCcgd2lkdGhceDNkJzAnIGhlaWdodFx4M2QnMCcvXHgzZSIpKS5hcHBlbmRUbyhlLmRvY3VtZW50RWxlbWVudCksZT0obGFbMF0uY29udGVudFdpbmRvd3x8bGFbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxlLndyaXRlKCksZS5jbG9zZSgpLGs9YWEoYSxlKSxsYS5kZXRhY2goKSksZ2JbYV09ayksa31mdW5jdGlvbiBiYShhLGUpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgaz1hKCk7aWYobnVsbCE9aylyZXR1cm4gaz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9ZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19ZnVuY3Rpb24gR2EoYSxlKXtpZihlIGluIGEpcmV0dXJuIGU7Zm9yKHZhciBrPQplLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksZj1lLGI9aGIubGVuZ3RoO2ItLTspaWYoZT1oYltiXStrLGUgaW4gYSlyZXR1cm4gZTtyZXR1cm4gZn1mdW5jdGlvbiBBYShhLGUpe2Zvcih2YXIgayxyLGIsYz1bXSxkPTAsZz1hLmxlbmd0aDtnPmQ7ZCsrKXI9YVtkXSxyLnN0eWxlJiYoY1tkXT1mLl9kYXRhKHIsIm9sZGRpc3BsYXkiKSxrPXIuc3R5bGUuZGlzcGxheSxlPyhjW2RdfHwibm9uZSIhPT1rfHwoci5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmd2EocikmJihjW2RdPWYuX2RhdGEociwib2xkZGlzcGxheSIsdmEoci5ub2RlTmFtZSkpKSk6KGI9d2EociksKGsmJiJub25lIiE9PWt8fCFiKSYmZi5fZGF0YShyLCJvbGRkaXNwbGF5IixiP2s6Zi5jc3MociwiZGlzcGxheSIpKSkpO2ZvcihkPTA7Zz5kO2QrKylyPWFbZF0sci5zdHlsZSYmKGUmJiJub25lIiE9PXIuc3R5bGUuZGlzcGxheSYmIiIhPT1yLnN0eWxlLmRpc3BsYXl8fChyLnN0eWxlLmRpc3BsYXk9CmU/Y1tkXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gaWIoYSxlLGspe3JldHVybihhPU1iLmV4ZWMoZSkpP01hdGgubWF4KDAsYVsxXS0oa3x8MCkpKyhhWzJdfHwicHgiKTplfWZ1bmN0aW9uIEJhKGEsZSxrLHIsYil7ZT1rPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT1lPzE6MDtmb3IodmFyIGM9MDs0PmU7ZSs9MikibWFyZ2luIj09PWsmJihjKz1mLmNzcyhhLGsra2FbZV0sITAsYikpLHI/KCJjb250ZW50Ij09PWsmJihjLT1mLmNzcyhhLCJwYWRkaW5nIitrYVtlXSwhMCxiKSksIm1hcmdpbiIhPT1rJiYoYy09Zi5jc3MoYSwiYm9yZGVyIitrYVtlXSsiV2lkdGgiLCEwLGIpKSk6KGMrPWYuY3NzKGEsInBhZGRpbmciK2thW2VdLCEwLGIpLCJwYWRkaW5nIiE9PWsmJihjKz1mLmNzcyhhLCJib3JkZXIiK2thW2VdKyJXaWR0aCIsITAsYikpKTtyZXR1cm4gY31mdW5jdGlvbiBDYShhLGUsayl7dmFyIGI9ITAsYz0id2lkdGgiPT09ZT9hLm9mZnNldFdpZHRoOgphLm9mZnNldEhlaWdodCxkPWVhKGEpLGc9cy5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PWYuY3NzKGEsImJveFNpemluZyIsITEsZCk7aWYoMD49Y3x8bnVsbD09Yyl7aWYoYz1tYShhLGUsZCksKDA+Y3x8bnVsbD09YykmJihjPWEuc3R5bGVbZV0pLEhhLnRlc3QoYykpcmV0dXJuIGM7Yj1nJiYocy5ib3hTaXppbmdSZWxpYWJsZSgpfHxjPT09YS5zdHlsZVtlXSk7Yz1wYXJzZUZsb2F0KGMpfHwwfXJldHVybiBjK0JhKGEsZSxrfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGIsZCkrInB4In1mdW5jdGlvbiBFKGEsZSxrLGYsYil7cmV0dXJuIG5ldyBFLnByb3RvdHlwZS5pbml0KGEsZSxrLGYsYil9ZnVuY3Rpb24gRygpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2E9dm9pZCAwfSksc2E9Zi5ub3coKX1mdW5jdGlvbiBQKGEsZSl7dmFyIGssZj17aGVpZ2h0OmF9LGI9MDtmb3IoZT1lPzE6MDs0PmI7Yis9Mi1lKWs9a2FbYl0sZlsibWFyZ2luIitrXT1mWyJwYWRkaW5nIisKa109YTtyZXR1cm4gZSYmKGYub3BhY2l0eT1mLndpZHRoPWEpLGZ9ZnVuY3Rpb24gVShhLGUsayl7Zm9yKHZhciBmLGI9KERhW2VdfHxbXSkuY29uY2F0KERhWyIqIl0pLGM9MCxkPWIubGVuZ3RoO2Q+YztjKyspaWYoZj1iW2NdLmNhbGwoayxlLGEpKXJldHVybiBmfWZ1bmN0aW9uIG5hKGEsZSl7dmFyIGssYixjLGQsZztmb3IoayBpbiBhKWlmKGI9Zi5jYW1lbENhc2UoayksYz1lW2JdLGQ9YVtrXSxmLmlzQXJyYXkoZCkmJihjPWRbMV0sZD1hW2tdPWRbMF0pLGshPT1iJiYoYVtiXT1kLGRlbGV0ZSBhW2tdKSxnPWYuY3NzSG9va3NbYl0sZyYmImV4cGFuZCJpbiBnKWZvcihrIGluIGQ9Zy5leHBhbmQoZCksZGVsZXRlIGFbYl0sZClrIGluIGF8fChhW2tdPWRba10sZVtrXT1jKTtlbHNlIGVbYl09Y31mdW5jdGlvbiBFYShhLGUsayl7dmFyIGIsYz0wLGQ9SWEubGVuZ3RoLGc9Zi5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBsLmVsZW19KSxsPWZ1bmN0aW9uKCl7aWYoYilyZXR1cm4hMTsKZm9yKHZhciBlPXNhfHxHKCksZT1NYXRoLm1heCgwLGguc3RhcnRUaW1lK2guZHVyYXRpb24tZSksaz0xLShlL2guZHVyYXRpb258fDApLGY9MCxjPWgudHdlZW5zLmxlbmd0aDtjPmY7ZisrKWgudHdlZW5zW2ZdLnJ1bihrKTtyZXR1cm4gZy5ub3RpZnlXaXRoKGEsW2gsayxlXSksMT5rJiZjP2U6KGcucmVzb2x2ZVdpdGgoYSxbaF0pLCExKX0saD1nLnByb21pc2Uoe2VsZW06YSxwcm9wczpmLmV4dGVuZCh7fSxlKSxvcHRzOmYuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9fSxrKSxvcmlnaW5hbFByb3BlcnRpZXM6ZSxvcmlnaW5hbE9wdGlvbnM6ayxzdGFydFRpbWU6c2F8fEcoKSxkdXJhdGlvbjprLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihlLGspe3ZhciBiPWYuVHdlZW4oYSxoLm9wdHMsZSxrLGgub3B0cy5zcGVjaWFsRWFzaW5nW2VdfHxoLm9wdHMuZWFzaW5nKTtyZXR1cm4gaC50d2VlbnMucHVzaChiKSxifSxzdG9wOmZ1bmN0aW9uKGUpe3ZhciBrPQowLGY9ZT9oLnR3ZWVucy5sZW5ndGg6MDtpZihiKXJldHVybiB0aGlzO2ZvcihiPSEwO2Y+aztrKyspaC50d2VlbnNba10ucnVuKDEpO3JldHVybiBlP2cucmVzb2x2ZVdpdGgoYSxbaCxlXSk6Zy5yZWplY3RXaXRoKGEsW2gsZV0pLHRoaXN9fSk7az1oLnByb3BzO2ZvcihuYShrLGgub3B0cy5zcGVjaWFsRWFzaW5nKTtkPmM7YysrKWlmKGU9SWFbY10uY2FsbChoLGEsayxoLm9wdHMpKXJldHVybiBlO3JldHVybiBmLm1hcChrLFUsaCksZi5pc0Z1bmN0aW9uKGgub3B0cy5zdGFydCkmJmgub3B0cy5zdGFydC5jYWxsKGEsaCksZi5meC50aW1lcihmLmV4dGVuZChsLHtlbGVtOmEsYW5pbTpoLHF1ZXVlOmgub3B0cy5xdWV1ZX0pKSxoLnByb2dyZXNzKGgub3B0cy5wcm9ncmVzcykuZG9uZShoLm9wdHMuZG9uZSxoLm9wdHMuY29tcGxldGUpLmZhaWwoaC5vcHRzLmZhaWwpLmFsd2F5cyhoLm9wdHMuYWx3YXlzKX1mdW5jdGlvbiBKYShhKXtyZXR1cm4gZnVuY3Rpb24oZSxrKXsic3RyaW5nIiE9CnR5cGVvZiBlJiYoaz1lLGU9IioiKTt2YXIgYixjPTAsZD1lLnRvTG93ZXJDYXNlKCkubWF0Y2goUSl8fFtdO2lmKGYuaXNGdW5jdGlvbihrKSlmb3IoO2I9ZFtjKytdOykiKyI9PT1iLmNoYXJBdCgwKT8oYj1iLnNsaWNlKDEpfHwiKiIsKGFbYl09YVtiXXx8W10pLnVuc2hpZnQoaykpOihhW2JdPWFbYl18fFtdKS5wdXNoKGspfX1mdW5jdGlvbiBaKGEsZSxrLGIpe2Z1bmN0aW9uIGMoaCl7dmFyIGw7cmV0dXJuIGRbaF09ITAsZi5lYWNoKGFbaF18fFtdLGZ1bmN0aW9uKGEsZil7dmFyIGg9ZihlLGssYik7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBofHxnfHxkW2hdP2c/IShsPWgpOnZvaWQgMDooZS5kYXRhVHlwZXMudW5zaGlmdChoKSxjKGgpLCExKX0pLGx9dmFyIGQ9e30sZz1hPT09VWE7cmV0dXJuIGMoZS5kYXRhVHlwZXNbMF0pfHwhZFsiKiJdJiZjKCIqIil9ZnVuY3Rpb24geWEoYSxlKXt2YXIgayxiLGM9Zi5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihiIGluIGUpdm9pZCAwIT09CmVbYl0mJigoY1tiXT9hOmt8fChrPXt9KSlbYl09ZVtiXSk7cmV0dXJuIGsmJmYuZXh0ZW5kKCEwLGEsayksYX1mdW5jdGlvbiB6YShhLGUsayxiKXt2YXIgYztpZihmLmlzQXJyYXkoZSkpZi5lYWNoKGUsZnVuY3Rpb24oZSxmKXtrfHxOYi50ZXN0KGEpP2IoYSxmKTp6YShhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBmP2U6IiIpKyJdIixmLGssYil9KTtlbHNlIGlmKGt8fCJvYmplY3QiIT09Zi50eXBlKGUpKWIoYSxlKTtlbHNlIGZvcihjIGluIGUpemEoYSsiWyIrYysiXSIsZVtjXSxrLGIpfWZ1bmN0aW9uIGRhKCl7dHJ5e3JldHVybiBuZXcgYi5YTUxIdHRwUmVxdWVzdH1jYXRjaChhKXt9fWZ1bmN0aW9uICQoYSl7cmV0dXJuIGYuaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX12YXIgamE9W10sUz1qYS5zbGljZSxpYT1qYS5jb25jYXQsVmE9amEucHVzaCxqYj1qYS5pbmRleE9mLEthPXt9LFNhPUthLnRvU3RyaW5nLApmYT1LYS5oYXNPd25Qcm9wZXJ0eSxzPXt9LGY9ZnVuY3Rpb24oYSxlKXtyZXR1cm4gbmV3IGYuZm4uaW5pdChhLGUpfSxPYj0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csUGI9L14tbXMtLyxRYj0vLShbXGRhLXpdKS9naSxSYj1mdW5jdGlvbihhLGUpe3JldHVybiBlLnRvVXBwZXJDYXNlKCl9O2YuZm49Zi5wcm90b3R5cGU9e2pxdWVyeToiMS4xMS4yIixjb25zdHJ1Y3RvcjpmLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gUy5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpTLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXthPWYubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBhLnByZXZPYmplY3Q9dGhpcyxhLmNvbnRleHQ9dGhpcy5jb250ZXh0LGF9LGVhY2g6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gZi5lYWNoKHRoaXMsCmEsZSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5tYXAodGhpcyxmdW5jdGlvbihlLGspe3JldHVybiBhLmNhbGwoZSxrLGUpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhTLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMubGVuZ3RoO2E9K2ErKDA+YT9lOjApO3JldHVybiB0aGlzLnB1c2hTdGFjaygwPD1hJiZlPmE/W3RoaXNbYV1dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpWYSxzb3J0OmphLnNvcnQsc3BsaWNlOmphLnNwbGljZX07Zi5leHRlbmQ9Zi5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxlLGssYixjLGQsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxsPQphcmd1bWVudHMubGVuZ3RoLG09ITE7ImJvb2xlYW4iPT10eXBlb2YgZyYmKG09ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKTsib2JqZWN0Ij09dHlwZW9mIGd8fGYuaXNGdW5jdGlvbihnKXx8KGc9e30pO2ZvcihoPT09bCYmKGc9dGhpcyxoLS0pO2w+aDtoKyspaWYobnVsbCE9KGM9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBjKWE9Z1tiXSxrPWNbYl0sZyE9PWsmJihtJiZrJiYoZi5pc1BsYWluT2JqZWN0KGspfHwoZT1mLmlzQXJyYXkoaykpKT8oZT8oZT0hMSxkPWEmJmYuaXNBcnJheShhKT9hOltdKTpkPWEmJmYuaXNQbGFpbk9iamVjdChhKT9hOnt9LGdbYl09Zi5leHRlbmQobSxkLGspKTp2b2lkIDAhPT1rJiYoZ1tiXT1rKSk7cmV0dXJuIGd9O2YuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKygiMS4xMS4yIitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IEVycm9yKGEpO30sbm9vcDpmdW5jdGlvbigpe30sCmlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PWYudHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09Zi50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hZi5pc0FycmF5KGEpJiYwPD1hLXBhcnNlRmxvYXQoYSkrMX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGUgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgZTtpZighYXx8Im9iamVjdCIhPT1mLnR5cGUoYSl8fGEubm9kZVR5cGV8fGYuaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFmYS5jYWxsKGEsImNvbnN0cnVjdG9yIikmJiFmYS5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goayl7cmV0dXJuITF9aWYocy5vd25MYXN0KWZvcihlIGluIGEpcmV0dXJuIGZhLmNhbGwoYSwKZSk7Zm9yKGUgaW4gYSk7cmV0dXJuIHZvaWQgMD09PWV8fGZhLmNhbGwoYSxlKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/S2FbU2EuY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe2EmJmYudHJpbShhKSYmKGIuZXhlY1NjcmlwdHx8ZnVuY3Rpb24oYSl7Yi5ldmFsLmNhbGwoYixhKX0pKGEpfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShQYiwibXMtIikucmVwbGFjZShRYixSYil9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGUsayl7dmFyIGYsYj0wLGM9YS5sZW5ndGgsZz1kKGEpO2lmKGspaWYoZylmb3IoO2M+YiYmKGY9ZS5hcHBseShhW2JdLGspLCExIT09Zik7YisrKTtlbHNlIGZvcihiIGluIGEpe2lmKGY9CmUuYXBwbHkoYVtiXSxrKSwhMT09PWYpYnJlYWt9ZWxzZSBpZihnKWZvcig7Yz5iJiYoZj1lLmNhbGwoYVtiXSxiLGFbYl0pLCExIT09Zik7YisrKTtlbHNlIGZvcihiIGluIGEpaWYoZj1lLmNhbGwoYVtiXSxiLGFbYl0pLCExPT09ZilicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShPYiwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGUpe3ZhciBrPWV8fFtdO3JldHVybiBudWxsIT1hJiYoZChPYmplY3QoYSkpP2YubWVyZ2Uoaywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOlZhLmNhbGwoayxhKSksa30saW5BcnJheTpmdW5jdGlvbihhLGUsayl7dmFyIGY7aWYoZSl7aWYoamIpcmV0dXJuIGpiLmNhbGwoZSxhLGspO2Y9ZS5sZW5ndGg7Zm9yKGs9az8wPms/TWF0aC5tYXgoMCxmK2spOms6MDtmPms7aysrKWlmKGsgaW4gZSYmZVtrXT09PWEpcmV0dXJuIGt9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsZSl7Zm9yKHZhciBrPQorZS5sZW5ndGgsZj0wLGI9YS5sZW5ndGg7az5mOylhW2IrK109ZVtmKytdO2lmKGshPT1rKWZvcig7dm9pZCAwIT09ZVtmXTspYVtiKytdPWVbZisrXTtyZXR1cm4gYS5sZW5ndGg9YixhfSxncmVwOmZ1bmN0aW9uKGEsZSxrKXtmb3IodmFyIGY9W10sYj0wLGM9YS5sZW5ndGgsZD0haztjPmI7YisrKWs9IWUoYVtiXSxiKSxrIT09ZCYmZi5wdXNoKGFbYl0pO3JldHVybiBmfSxtYXA6ZnVuY3Rpb24oYSxlLGspe3ZhciBmLGI9MCxjPWEubGVuZ3RoLGc9W107aWYoZChhKSlmb3IoO2M+YjtiKyspZj1lKGFbYl0sYixrKSxudWxsIT1mJiZnLnB1c2goZik7ZWxzZSBmb3IoYiBpbiBhKWY9ZShhW2JdLGIsayksbnVsbCE9ZiYmZy5wdXNoKGYpO3JldHVybiBpYS5hcHBseShbXSxnKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsZSl7dmFyIGssYixjO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGM9YVtlXSxlPWEsYT1jKSxmLmlzRnVuY3Rpb24oYSk/KGs9Uy5jYWxsKGFyZ3VtZW50cywKMiksYj1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGV8fHRoaXMsay5jb25jYXQoUy5jYWxsKGFyZ3VtZW50cykpKX0sYi5ndWlkPWEuZ3VpZD1hLmd1aWR8fGYuZ3VpZCsrLGIpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0OnN9KTtmLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxlKXtLYVsiW29iamVjdCAiK2UrIl0iXT1lLnRvTG93ZXJDYXNlKCl9KTt2YXIgdGE9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZShhLGUsZixrKXt2YXIgYixjLHIsZCxnO2lmKChlP2Uub3duZXJEb2N1bWVudHx8ZTpaKSE9PUkmJnYoZSksZT1lfHxJLGY9Znx8W10sZD1lLm5vZGVUeXBlLCJzdHJpbmciIT10eXBlb2YgYXx8IWF8fDEhPT1kJiY5IT09ZCYmMTEhPT1kKXJldHVybiBmO2lmKCFrJiZZKXtpZigxMSE9PWQmJihiPWlhLmV4ZWMoYSkpKWlmKHI9CmJbMV0paWYoOT09PWQpe2lmKGM9ZS5nZXRFbGVtZW50QnlJZChyKSwhY3x8IWMucGFyZW50Tm9kZSlyZXR1cm4gZjtpZihjLmlkPT09cilyZXR1cm4gZi5wdXNoKGMpLGZ9ZWxzZXtpZihlLm93bmVyRG9jdW1lbnQmJihjPWUub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChyKSkmJksoZSxjKSYmYy5pZD09PXIpcmV0dXJuIGYucHVzaChjKSxmfWVsc2V7aWYoYlsyXSlyZXR1cm4gUy5hcHBseShmLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSkpLGY7aWYoKHI9YlszXSkmJnMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gUy5hcHBseShmLGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShyKSksZn1pZihzLnFzYSYmKCFDfHwhQy50ZXN0KGEpKSl7aWYoYz1iPU0scj1lLGc9MSE9PWQmJmEsMT09PWQmJiJvYmplY3QiIT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtkPUYoYSk7KGI9ZS5nZXRBdHRyaWJ1dGUoImlkIikpP2M9Yi5yZXBsYWNlKEdhLCJcXCRceDI2Iik6ZS5zZXRBdHRyaWJ1dGUoImlkIiwKYyk7Yz0iW2lkXHgzZCciK2MrIiddICI7Zm9yKHI9ZC5sZW5ndGg7ci0tOylkW3JdPWMrcChkW3JdKTtyPWxhLnRlc3QoYSkmJm4oZS5wYXJlbnROb2RlKXx8ZTtnPWQuam9pbigiLCIpfWlmKGcpdHJ5e3JldHVybiBTLmFwcGx5KGYsci5xdWVyeVNlbGVjdG9yQWxsKGcpKSxmfWNhdGNoKHope31maW5hbGx5e2J8fGUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIFIoYS5yZXBsYWNlKGNhLCIkMSIpLGUsZixrKX1mdW5jdGlvbiBmKCl7ZnVuY3Rpb24gYShmLGspe3JldHVybiBlLnB1c2goZisiICIpPnUuY2FjaGVMZW5ndGgmJmRlbGV0ZSBhW2Uuc2hpZnQoKV0sYVtmKyIgIl09a312YXIgZT1bXTtyZXR1cm4gYX1mdW5jdGlvbiBiKGEpe3JldHVybiBhW01dPSEwLGF9ZnVuY3Rpb24gYyhhKXt2YXIgZT1JLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4hIWEoZSl9Y2F0Y2goZil7cmV0dXJuITF9ZmluYWxseXtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX19CmZ1bmN0aW9uIGQoYSxlKXtmb3IodmFyIGY9YS5zcGxpdCgifCIpLGs9YS5sZW5ndGg7ay0tOyl1LmF0dHJIYW5kbGVbZltrXV09ZX1mdW5jdGlvbiBnKGEsZSl7dmFyIGY9ZSYmYSxrPWYmJjE9PT1hLm5vZGVUeXBlJiYxPT09ZS5ub2RlVHlwZSYmKH5lLnNvdXJjZUluZGV4fHx6YSktKH5hLnNvdXJjZUluZGV4fHx6YSk7aWYoaylyZXR1cm4gaztpZihmKWZvcig7Zj1mLm5leHRTaWJsaW5nOylpZihmPT09ZSlyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGgoYSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJmUudHlwZT09PWF9fWZ1bmN0aW9uIGwoYSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBmPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWZ8fCJidXR0b24iPT09ZikmJmUudHlwZT09PWF9fWZ1bmN0aW9uIG0oYSl7cmV0dXJuIGIoZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsYihmdW5jdGlvbihmLAprKXtmb3IodmFyIGIsYz1hKFtdLGYubGVuZ3RoLGUpLHI9Yy5sZW5ndGg7ci0tOylmW2I9Y1tyXV0mJihmW2JdPSEoa1tiXT1mW2JdKSl9KX0pfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmYX1mdW5jdGlvbiBxKCl7fWZ1bmN0aW9uIHAoYSl7Zm9yKHZhciBlPTAsZj1hLmxlbmd0aCxrPSIiO2Y+ZTtlKyspays9YVtlXS52YWx1ZTtyZXR1cm4ga31mdW5jdGlvbiB0KGEsZSxmKXt2YXIgaz1lLmRpcixiPWYmJiJwYXJlbnROb2RlIj09PWssYz1KYSsrO3JldHVybiBlLmZpcnN0P2Z1bmN0aW9uKGUsZixjKXtmb3IoO2U9ZVtrXTspaWYoMT09PWUubm9kZVR5cGV8fGIpcmV0dXJuIGEoZSxmLGMpfTpmdW5jdGlvbihlLGYscil7dmFyIGQsZyx6PVtnYSxjXTtpZihyKWZvcig7ZT1lW2tdOyl7aWYoKDE9PT1lLm5vZGVUeXBlfHxiKSYmYShlLGYscikpcmV0dXJuITB9ZWxzZSBmb3IoO2U9ZVtrXTspaWYoMT09PWUubm9kZVR5cGV8fApiKXtpZihnPWVbTV18fChlW01dPXt9KSwoZD1nW2tdKSYmZFswXT09PWdhJiZkWzFdPT09YylyZXR1cm4gelsyXT1kWzJdO2lmKGdba109eix6WzJdPWEoZSxmLHIpKXJldHVybiEwfX19ZnVuY3Rpb24gRShhKXtyZXR1cm4gMTxhLmxlbmd0aD9mdW5jdGlvbihlLGYsayl7Zm9yKHZhciBiPWEubGVuZ3RoO2ItLTspaWYoIWFbYl0oZSxmLGspKXJldHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHcoYSxlLGYsayxiKXtmb3IodmFyIGMscj1bXSxkPTAsZz1hLmxlbmd0aCx6PW51bGwhPWU7Zz5kO2QrKykoYz1hW2RdKSYmKCFmfHxmKGMsayxiKSkmJihyLnB1c2goYykseiYmZS5wdXNoKGQpKTtyZXR1cm4gcn1mdW5jdGlvbiBKKGEsZixrLGMsZCxnKXtyZXR1cm4gYyYmIWNbTV0mJihjPUooYykpLGQmJiFkW01dJiYoZD1KKGQsZykpLGIoZnVuY3Rpb24oYixyLGcseil7dmFyIGgsTCxsPVtdLFQ9W10sbT1yLmxlbmd0aCxuO2lmKCEobj1iKSl7bj1mfHwiKiI7Zm9yKHZhciBOPWcubm9kZVR5cGU/CltnXTpnLHE9W10seGE9MCxwPU4ubGVuZ3RoO3A+eGE7eGErKyllKG4sTlt4YV0scSk7bj1xfW49IWF8fCFiJiZmP246dyhuLGwsYSxnLHopO049az9kfHwoYj9hOm18fGMpP1tdOnI6bjtpZihrJiZrKG4sTixnLHopLGMpZm9yKGg9dyhOLFQpLGMoaCxbXSxnLHopLGc9aC5sZW5ndGg7Zy0tOykoTD1oW2ddKSYmKE5bVFtnXV09IShuW1RbZ11dPUwpKTtpZihiKXtpZihkfHxhKXtpZihkKXtoPVtdO2ZvcihnPU4ubGVuZ3RoO2ctLTspKEw9TltnXSkmJmgucHVzaChuW2ddPUwpO2QobnVsbCxOPVtdLGgseil9Zm9yKGc9Ti5sZW5ndGg7Zy0tOykoTD1OW2ddKSYmLTE8KGg9ZD9WKGIsTCk6bFtnXSkmJihiW2hdPSEocltoXT1MKSl9fWVsc2UgTj13KE49PT1yP04uc3BsaWNlKG0sTi5sZW5ndGgpOk4pLGQ/ZChudWxsLHIsTix6KTpTLmFwcGx5KHIsTil9KX1mdW5jdGlvbiBEKGEpe3ZhciBlLGYsayxiPWEubGVuZ3RoLGM9dS5yZWxhdGl2ZVthWzBdLnR5cGVdO2Y9Y3x8dS5yZWxhdGl2ZVsiICJdOwpmb3IodmFyIHI9Yz8xOjAsZD10KGZ1bmN0aW9uKGEpe3JldHVybiBhPT09ZX0sZiwhMCksZz10KGZ1bmN0aW9uKGEpe3JldHVybi0xPFYoZSxhKX0sZiwhMCksej1bZnVuY3Rpb24oYSxmLGspe2E9IWMmJihrfHxmIT09eCl8fCgoZT1mKS5ub2RlVHlwZT9kKGEsZixrKTpnKGEsZixrKSk7cmV0dXJuIGU9bnVsbCxhfV07Yj5yO3IrKylpZihmPXUucmVsYXRpdmVbYVtyXS50eXBlXSl6PVt0KEUoeiksZildO2Vsc2V7aWYoZj11LmZpbHRlclthW3JdLnR5cGVdLmFwcGx5KG51bGwsYVtyXS5tYXRjaGVzKSxmW01dKXtmb3Ioaz0rK3I7Yj5rJiYhdS5yZWxhdGl2ZVthW2tdLnR5cGVdO2srKyk7cmV0dXJuIEooMTxyJiZFKHopLDE8ciYmcChhLnNsaWNlKDAsci0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbci0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKGNhLCIkMSIpLGYsaz5yJiZEKGEuc2xpY2UocixrKSksYj5rJiZEKGE9YS5zbGljZShrKSksYj5rJiZwKGEpKX16LnB1c2goZil9cmV0dXJuIEUoeil9CmZ1bmN0aW9uIEgoYSxmKXt2YXIgaz0wPGYubGVuZ3RoLGM9MDxhLmxlbmd0aCxkPWZ1bmN0aW9uKGIscixkLGcseil7dmFyIGgsTCxsLFQ9MCxtPSIwIixOPWImJltdLG49W10scT14LHhhPWJ8fGMmJnUuZmluZC5UQUcoIioiLHopLHA9Z2ErPW51bGw9PXE/MTpNYXRoLnJhbmRvbSgpfHwwLjEsSmI9eGEubGVuZ3RoO2Zvcih6JiYoeD1yIT09SSYmcik7bSE9PUpiJiZudWxsIT0oaD14YVttXSk7bSsrKXtpZihjJiZoKXtmb3IoTD0wO2w9YVtMKytdOylpZihsKGgscixkKSl7Zy5wdXNoKGgpO2JyZWFrfXomJihnYT1wKX1rJiYoKGg9IWwmJmgpJiZULS0sYiYmTi5wdXNoKGgpKX1pZihUKz1tLGsmJm0hPT1UKXtmb3IoTD0wO2w9ZltMKytdOylsKE4sbixyLGQpO2lmKGIpe2lmKDA8VClmb3IoO20tLTspTlttXXx8blttXXx8KG5bbV09amEuY2FsbChnKSk7bj13KG4pfVMuYXBwbHkoZyxuKTt6JiYhYiYmMDxuLmxlbmd0aCYmMTxUK2YubGVuZ3RoJiZlLnVuaXF1ZVNvcnQoZyl9cmV0dXJuIHomJgooZ2E9cCx4PXEpLE59O3JldHVybiBrP2IoZCk6ZH12YXIgeSxzLHUsRyxCLEYsQSxSLHgsTyxQLHYsSSxVLFksQyxuYSxMYSxLLE09InNpenpsZSIrMSpuZXcgRGF0ZSxaPWEuZG9jdW1lbnQsZ2E9MCxKYT0wLEVhPWYoKSx5YT1mKCksWD1mKCksVz1mdW5jdGlvbihhLGUpe3JldHVybiBhPT09ZSYmKFA9ITApLDB9LHphPS0yMTQ3NDgzNjQ4LGFhPXt9Lmhhc093blByb3BlcnR5LFE9W10samE9US5wb3AsTGI9US5wdXNoLFM9US5wdXNoLGhhPVEuc2xpY2UsVj1mdW5jdGlvbihhLGUpe2Zvcih2YXIgZj0wLGs9YS5sZW5ndGg7az5mO2YrKylpZihhW2ZdPT09ZSlyZXR1cm4gZjtyZXR1cm4tMX0sYmE9Iig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIi5yZXBsYWNlKCJ3IiwidyMiKSxrYT0iXFxbW1xceDIwXFx0XFxyXFxuXFxmXSooKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSspKD86W1xceDIwXFx0XFxyXFxuXFxmXSooWypeJHwhfl0/XHgzZClbXFx4MjBcXHRcXHJcXG5cXGZdKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiKwpiYSsiKSl8KVtcXHgyMFxcdFxcclxcblxcZl0qXFxdIixlYT0iOigoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKykoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK2thKyIpKil8LiopXFwpfCkiLG1hPVJlZ0V4cCgiW1xceDIwXFx0XFxyXFxuXFxmXSsiLCJnIiksY2E9UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSt8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKVtcXHgyMFxcdFxcclxcblxcZl0rJCIsImciKSxxYT0vXltceDIwXHRcclxuXGZdKixbXHgyMFx0XHJcblxmXSovLHJhPS9eW1x4MjBcdFxyXG5cZl0qKFs+K35dfFtceDIwXHRcclxuXGZdKVtceDIwXHRcclxuXGZdKi8sZGE9UmVnRXhwKCJceDNkW1xceDIwXFx0XFxyXFxuXFxmXSooW15cXF0nXCJdKj8pW1xceDIwXFx0XFxyXFxuXFxmXSpcXF0iLCJnIiksdmE9UmVnRXhwKGVhKSxzYT1SZWdFeHAoIl4iKwpiYSsiJCIpLGZhPXtJRDovXiMoKD86XFwufFtcdy1dfFteXHgwMC1ceGEwXSkrKS8sQ0xBU1M6L15cLigoPzpcXC58W1x3LV18W15ceDAwLVx4YTBdKSspLyxUQUc6UmVnRXhwKCJeKCIrIig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6UmVnRXhwKCJeIitrYSksUFNFVURPOlJlZ0V4cCgiXiIrZWEpLENISUxEOlJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoW1xceDIwXFx0XFxyXFxuXFxmXSooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufClbXFx4MjBcXHRcXHJcXG5cXGZdKig/OihbKy1dfClbXFx4MjBcXHRcXHJcXG5cXGZdKihcXGQrKXwpKVtcXHgyMFxcdFxcclxcblxcZl0qXFwpfCkiLCJpIiksYm9vbDpSZWdFeHAoIl4oPzpjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkkIiwKImkiKSxuZWVkc0NvbnRleHQ6UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSpbXHgzZSt+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKFtcXHgyMFxcdFxcclxcblxcZl0qKCg/Oi1cXGQpP1xcZCopW1xceDIwXFx0XFxyXFxuXFxmXSpcXCl8KSg/XHgzZFteLV18JCkiLCJpIil9LHRhPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksdWE9L15oXGQkL2ksJD0vXltee10rXHtccypcW25hdGl2ZSBcdy8saWE9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxsYT0vWyt+XS8sR2E9Lyd8XFwvZyxvYT1SZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0/fChbXFx4MjBcXHRcXHJcXG5cXGZdKXwuKSIsImlnIikscGE9ZnVuY3Rpb24oYSxlLGYpe2E9IjB4IitlLTY1NTM2O3JldHVybiBhIT09YXx8Zj9lOjA+YT9TdHJpbmcuZnJvbUNoYXJDb2RlKGErNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoYT4+CjEwfDU1Mjk2LDEwMjMmYXw1NjMyMCl9LEFhPWZ1bmN0aW9uKCl7digpfTt0cnl7Uy5hcHBseShRPWhhLmNhbGwoWi5jaGlsZE5vZGVzKSxaLmNoaWxkTm9kZXMpLFFbWi5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2god2Epe1M9e2FwcGx5OlEubGVuZ3RoP2Z1bmN0aW9uKGEsZSl7TGIuYXBwbHkoYSxoYS5jYWxsKGUpKX06ZnVuY3Rpb24oYSxlKXtmb3IodmFyIGY9YS5sZW5ndGgsaz0wO2FbZisrXT1lW2srK107KTthLmxlbmd0aD1mLTF9fX1zPWUuc3VwcG9ydD17fTtCPWUuaXNYTUw9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50KT8iSFRNTCIhPT1hLm5vZGVOYW1lOiExfTt2PWUuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGUsZixrPWE/YS5vd25lckRvY3VtZW50fHxhOlo7cmV0dXJuIGshPT1JJiY5PT09ay5ub2RlVHlwZSYmay5kb2N1bWVudEVsZW1lbnQ/KEk9ayxVPWsuZG9jdW1lbnRFbGVtZW50LApmPWsuZGVmYXVsdFZpZXcsZiYmZiE9PWYudG9wJiYoZi5hZGRFdmVudExpc3RlbmVyP2YuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixBYSwhMSk6Zi5hdHRhY2hFdmVudCYmZi5hdHRhY2hFdmVudCgib251bmxvYWQiLEFhKSksWT0hQihrKSxzLmF0dHJpYnV0ZXM9YyhmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxzLmdldEVsZW1lbnRzQnlUYWdOYW1lPWMoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoay5jcmVhdGVDb21tZW50KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSxzLmdldEVsZW1lbnRzQnlDbGFzc05hbWU9JC50ZXN0KGsuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSkscy5nZXRCeUlkPWMoZnVuY3Rpb24oYSl7cmV0dXJuIFUuYXBwZW5kQ2hpbGQoYSkuaWQ9TSwhay5nZXRFbGVtZW50c0J5TmFtZXx8IWsuZ2V0RWxlbWVudHNCeU5hbWUoTSkubGVuZ3RofSksCnMuZ2V0QnlJZD8odS5maW5kLklEPWZ1bmN0aW9uKGEsZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRCeUlkJiZZKXt2YXIgZj1lLmdldEVsZW1lbnRCeUlkKGEpO3JldHVybiBmJiZmLnBhcmVudE5vZGU/W2ZdOltdfX0sdS5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGU9YS5yZXBsYWNlKG9hLHBhKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09ZX19KTooZGVsZXRlIHUuZmluZC5JRCx1LmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgZT1hLnJlcGxhY2Uob2EscGEpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4oYT0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmYS52YWx1ZT09PWV9fSksdS5maW5kLlRBRz1zLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lPwplLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnMucXNhP2UucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsZSl7dmFyIGYsaz1bXSxiPTAsYz1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe2Zvcig7Zj1jW2IrK107KTE9PT1mLm5vZGVUeXBlJiZrLnB1c2goZik7cmV0dXJuIGt9cmV0dXJuIGN9LHUuZmluZC5DTEFTUz1zLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsZSl7cmV0dXJuIFk/ZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0sbmE9W10sQz1bXSwocy5xc2E9JC50ZXN0KGsucXVlcnlTZWxlY3RvckFsbCkpJiYoYyhmdW5jdGlvbihhKXtVLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iXHgzY2EgaWRceDNkJyIrTSsiJ1x4M2VceDNjL2FceDNlXHgzY3NlbGVjdCBpZFx4M2QnIitNKyItXGZdJyBtc2FsbG93Y2FwdHVyZVx4M2QnJ1x4M2VceDNjb3B0aW9uIHNlbGVjdGVkXHgzZCcnXHgzZVx4M2Mvb3B0aW9uXHgzZVx4M2Mvc2VsZWN0XHgzZSI7CmEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXlx4M2QnJ10iKS5sZW5ndGgmJkMucHVzaCgiWypeJF1ceDNkW1xceDIwXFx0XFxyXFxuXFxmXSooPzonJ3xcIlwiKSIpO2EucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8Qy5wdXNoKCJcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKig/OnZhbHVlfGNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSIpO2EucXVlcnlTZWxlY3RvckFsbCgiW2lkflx4M2QiK00rIi1dIikubGVuZ3RofHxDLnB1c2goIn5ceDNkIik7YS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8Qy5wdXNoKCI6Y2hlY2tlZCIpO2EucXVlcnlTZWxlY3RvckFsbCgiYSMiK00rIisqIikubGVuZ3RofHxDLnB1c2goIi4jLitbK35dIil9KSxjKGZ1bmN0aW9uKGEpe3ZhciBlPQprLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7ZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKTthLmFwcGVuZENoaWxkKGUpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKTthLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lXHgzZGRdIikubGVuZ3RoJiZDLnB1c2goIm5hbWVbXFx4MjBcXHRcXHJcXG5cXGZdKlsqXiR8IX5dP1x4M2QiKTthLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RofHxDLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIik7YS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iik7Qy5wdXNoKCIsLio6Iil9KSksKHMubWF0Y2hlc1NlbGVjdG9yPSQudGVzdChMYT1VLm1hdGNoZXN8fFUud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxVLm1vek1hdGNoZXNTZWxlY3Rvcnx8VS5vTWF0Y2hlc1NlbGVjdG9yfHxVLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmMoZnVuY3Rpb24oYSl7cy5kaXNjb25uZWN0ZWRNYXRjaD1MYS5jYWxsKGEsImRpdiIpO0xhLmNhbGwoYSwiW3MhXHgzZCcnXTp4Iik7Cm5hLnB1c2goIiFceDNkIixlYSl9KSxDPUMubGVuZ3RoJiZSZWdFeHAoQy5qb2luKCJ8IikpLG5hPW5hLmxlbmd0aCYmUmVnRXhwKG5hLmpvaW4oInwiKSksZT0kLnRlc3QoVS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksSz1lfHwkLnRlc3QoVS5jb250YWlucyk/ZnVuY3Rpb24oYSxlKXt2YXIgZj05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGs9ZSYmZS5wYXJlbnROb2RlO3JldHVybiBhPT09a3x8ISgha3x8MSE9PWsubm9kZVR5cGV8fCEoZi5jb250YWlucz9mLmNvbnRhaW5zKGspOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaykpKX06ZnVuY3Rpb24oYSxlKXtpZihlKWZvcig7ZT1lLnBhcmVudE5vZGU7KWlmKGU9PT1hKXJldHVybiEwO3JldHVybiExfSxXPWU/ZnVuY3Rpb24oYSxlKXtpZihhPT09ZSlyZXR1cm4gUD0hMCwwO3ZhciBmPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOwpyZXR1cm4gZj9mOihmPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGUub3duZXJEb2N1bWVudHx8ZSk/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKToxLDEmZnx8IXMuc29ydERldGFjaGVkJiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09Zj9hPT09a3x8YS5vd25lckRvY3VtZW50PT09WiYmSyhaLGEpPy0xOmU9PT1rfHxlLm93bmVyRG9jdW1lbnQ9PT1aJiZLKFosZSk/MTpPP1YoTyxhKS1WKE8sZSk6MDo0JmY/LTE6MSl9OmZ1bmN0aW9uKGEsZSl7aWYoYT09PWUpcmV0dXJuIFA9ITAsMDt2YXIgZixiPTA7Zj1hLnBhcmVudE5vZGU7dmFyIGM9ZS5wYXJlbnROb2RlLHI9W2FdLGQ9W2VdO2lmKCFmfHwhYylyZXR1cm4gYT09PWs/LTE6ZT09PWs/MTpmPy0xOmM/MTpPP1YoTyxhKS1WKE8sZSk6MDtpZihmPT09YylyZXR1cm4gZyhhLGUpO2ZvcihmPWE7Zj1mLnBhcmVudE5vZGU7KXIudW5zaGlmdChmKTtmb3IoZj1lO2Y9Zi5wYXJlbnROb2RlOylkLnVuc2hpZnQoZik7Zm9yKDtyW2JdPT09CmRbYl07KWIrKztyZXR1cm4gYj9nKHJbYl0sZFtiXSk6cltiXT09PVo/LTE6ZFtiXT09PVo/MTowfSxrKTpJfTtlLm1hdGNoZXM9ZnVuY3Rpb24oYSxmKXtyZXR1cm4gZShhLG51bGwsbnVsbCxmKX07ZS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxmKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PUkmJnYoYSksZj1mLnJlcGxhY2UoZGEsIlx4M2QnJDEnXSIpLHMubWF0Y2hlc1NlbGVjdG9yJiZZJiYhKG5hJiZuYS50ZXN0KGYpfHxDJiZDLnRlc3QoZikpKXRyeXt2YXIgaz1MYS5jYWxsKGEsZik7aWYoa3x8cy5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBrfWNhdGNoKGIpe31yZXR1cm4gMDxlKGYsSSxudWxsLFthXSkubGVuZ3RofTtlLmNvbnRhaW5zPWZ1bmN0aW9uKGEsZSl7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1JJiZ2KGEpLEsoYSxlKX07ZS5hdHRyPWZ1bmN0aW9uKGEsZSl7KGEub3duZXJEb2N1bWVudHx8CmEpIT09SSYmdihhKTt2YXIgZj11LmF0dHJIYW5kbGVbZS50b0xvd2VyQ2FzZSgpXSxmPWYmJmFhLmNhbGwodS5hdHRySGFuZGxlLGUudG9Mb3dlckNhc2UoKSk/ZihhLGUsIVkpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOnMuYXR0cmlidXRlc3x8IVk/YS5nZXRBdHRyaWJ1dGUoZSk6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGUpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfTtlLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2EpO307ZS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBlLGY9W10saz0wLGI9MDtpZihQPSFzLmRldGVjdER1cGxpY2F0ZXMsTz0hcy5zb3J0U3RhYmxlJiZhLnNsaWNlKDApLGEuc29ydChXKSxQKXtmb3IoO2U9YVtiKytdOyllPT09YVtiXSYmKGs9Zi5wdXNoKGIpKTtmb3IoO2stLTspYS5zcGxpY2UoZltrXSwxKX1yZXR1cm4gTz1udWxsLGF9O0c9ZS5nZXRUZXh0PQpmdW5jdGlvbihhKXt2YXIgZSxmPSIiLGs9MDtpZihlPWEubm9kZVR5cGUpaWYoMT09PWV8fDk9PT1lfHwxMT09PWUpe2lmKCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1cm4gYS50ZXh0Q29udGVudDtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpZis9RyhhKX1lbHNle2lmKDM9PT1lfHw0PT09ZSlyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoO2U9YVtrKytdOylmKz1HKGUpO3JldHVybiBmfTt1PWUuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86YixtYXRjaDpmYSxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyJceDNlIjp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKG9hLApwYSksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIpLnJlcGxhY2Uob2EscGEpLCJ+XHgzZCI9PT1hWzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxlLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmUuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBlLGY9IWFbNl0mJmFbMl07cmV0dXJuIGZhLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmYmJnZhLnRlc3QoZikmJihlPUYoZiwhMCkpJiYoZT1mLmluZGV4T2YoIikiLGYubGVuZ3RoLWUpLWYubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGUpLGFbMl09Zi5zbGljZSgwLAplKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBlPWEucmVwbGFjZShvYSxwYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1lfX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGU9RWFbYSsiICJdO3JldHVybiBlfHwoZT1SZWdFeHAoIihefFtcXHgyMFxcdFxcclxcblxcZl0pIithKyIoW1xceDIwXFx0XFxyXFxuXFxmXXwkKSIpKSYmRWEoYSxmdW5jdGlvbihhKXtyZXR1cm4gZS50ZXN0KCJzdHJpbmciPT10eXBlb2YgYS5jbGFzc05hbWUmJmEuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24oYSxmLGspe3JldHVybiBmdW5jdGlvbihiKXtiPWUuYXR0cihiLGEpO3JldHVybiBudWxsPT1iPyIhXHgzZCI9PT0KZjpmPyhiKz0iIiwiXHgzZCI9PT1mP2I9PT1rOiIhXHgzZCI9PT1mP2IhPT1rOiJeXHgzZCI9PT1mP2smJjA9PT1iLmluZGV4T2Yoayk6IipceDNkIj09PWY/ayYmLTE8Yi5pbmRleE9mKGspOiIkXHgzZCI9PT1mP2smJmIuc2xpY2UoLWsubGVuZ3RoKT09PWs6In5ceDNkIj09PWY/LTE8KCIgIitiLnJlcGxhY2UobWEsIiAiKSsiICIpLmluZGV4T2Yoayk6InxceDNkIj09PWY/Yj09PWt8fGIuc2xpY2UoMCxrLmxlbmd0aCsxKT09PWsrIi0iOiExKTohMH19LENISUxEOmZ1bmN0aW9uKGEsZSxmLGssYil7dmFyIGM9Im50aCIhPT1hLnNsaWNlKDAsMykscj0ibGFzdCIhPT1hLnNsaWNlKC00KSxkPSJvZi10eXBlIj09PWU7cmV0dXJuIDE9PT1rJiYwPT09Yj9mdW5jdGlvbihhKXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oZSxmLGcpe3ZhciB6LGgsTCxsLFQ7Zj1jIT09cj8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciO3ZhciBtPWUucGFyZW50Tm9kZSxuPWQmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKZz0hZyYmIWQ7aWYobSl7aWYoYyl7Zm9yKDtmOyl7Zm9yKGg9ZTtoPWhbZl07KWlmKGQ/aC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09bjoxPT09aC5ub2RlVHlwZSlyZXR1cm4hMTtUPWY9Im9ubHkiPT09YSYmIVQmJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYoVD1bcj9tLmZpcnN0Q2hpbGQ6bS5sYXN0Q2hpbGRdLHImJmcpZm9yKGc9bVtNXXx8KG1bTV09e30pLHo9Z1thXXx8W10sbD16WzBdPT09Z2EmJnpbMV0sTD16WzBdPT09Z2EmJnpbMl0saD1sJiZtLmNoaWxkTm9kZXNbbF07aD0rK2wmJmgmJmhbZl18fChMPWw9MCl8fFQucG9wKCk7KXtpZigxPT09aC5ub2RlVHlwZSYmKytMJiZoPT09ZSl7Z1thXT1bZ2EsbCxMXTticmVha319ZWxzZSBpZihnJiYoej0oZVtNXXx8KGVbTV09e30pKVthXSkmJnpbMF09PT1nYSlMPXpbMV07ZWxzZSBmb3IoOyhoPSsrbCYmaCYmaFtmXXx8KEw9bD0wKXx8VC5wb3AoKSkmJigoZD9oLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT1uOjEhPT1oLm5vZGVUeXBlKXx8CiErK0x8fChnJiYoKGhbTV18fChoW01dPXt9KSlbYV09W2dhLExdKSxoIT09ZSkpOyk7cmV0dXJuIEwtPWIsTD09PWt8fDA9PT1MJWsmJjA8PUwva319fSxQU0VVRE86ZnVuY3Rpb24oYSxmKXt2YXIgayxjPXUucHNldWRvc1thXXx8dS5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGUuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gY1tNXT9jKGYpOjE8Yy5sZW5ndGg/KGs9W2EsYSwiIixmXSx1LnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9iKGZ1bmN0aW9uKGEsZSl7Zm9yKHZhciBrLGI9YyhhLGYpLHI9Yi5sZW5ndGg7ci0tOylrPVYoYSxiW3JdKSxhW2tdPSEoZVtrXT1iW3JdKX0pOmZ1bmN0aW9uKGEpe3JldHVybiBjKGEsMCxrKX0pOmN9fSxwc2V1ZG9zOntub3Q6YihmdW5jdGlvbihhKXt2YXIgZT1bXSxmPVtdLGs9QShhLnJlcGxhY2UoY2EsIiQxIikpO3JldHVybiBrW01dP2IoZnVuY3Rpb24oYSxlLGYsYil7dmFyIGM7CmY9ayhhLG51bGwsYixbXSk7Zm9yKGI9YS5sZW5ndGg7Yi0tOykoYz1mW2JdKSYmKGFbYl09IShlW2JdPWMpKX0pOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZVswXT1hLGsoZSxudWxsLGMsZiksZVswXT1udWxsLCFmLnBvcCgpfX0pLGhhczpiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gMDxlKGEsZikubGVuZ3RofX0pLGNvbnRhaW5zOmIoZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKG9hLHBhKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8ZS5pbm5lclRleHR8fEcoZSkpLmluZGV4T2YoYSl9fSksbGFuZzpiKGZ1bmN0aW9uKGEpe3JldHVybiBzYS50ZXN0KGF8fCIiKXx8ZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIithKSxhPWEucmVwbGFjZShvYSxwYSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgZjtkbyBpZihmPVk/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBmPQpmLnRvTG93ZXJDYXNlKCksZj09PWF8fDA9PT1mLmluZGV4T2YoYSsiLSIpO3doaWxlKChlPWUucGFyZW50Tm9kZSkmJjE9PT1lLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oZSl7dmFyIGY9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBmJiZmLnNsaWNlKDEpPT09ZS5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PVV9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09SS5hY3RpdmVFbGVtZW50JiYoIUkuaGFzRm9jdXN8fEkuaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuITE9PT1hLmRpc2FibGVkfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4hMD09PWEuZGlzYWJsZWR9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGU9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1lJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1lJiYKISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwhMD09PWEuc2VsZWN0ZWR9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZig2PmEubm9kZVR5cGUpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hdS5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHVhLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiB0YS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGU9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1lJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1lfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBlO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PQphLnR5cGUmJihudWxsPT0oZT1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09ZS50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6bShmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bShmdW5jdGlvbihhLGUpe3JldHVybltlLTFdfSksZXE6bShmdW5jdGlvbihhLGUsZil7cmV0dXJuWzA+Zj9mK2U6Zl19KSxldmVuOm0oZnVuY3Rpb24oYSxlKXtmb3IodmFyIGY9MDtlPmY7Zis9MilhLnB1c2goZik7cmV0dXJuIGF9KSxvZGQ6bShmdW5jdGlvbihhLGUpe2Zvcih2YXIgZj0xO2U+ZjtmKz0yKWEucHVzaChmKTtyZXR1cm4gYX0pLGx0Om0oZnVuY3Rpb24oYSxlLGYpe2ZvcihlPTA+Zj9mK2U6ZjswPD0tLWU7KWEucHVzaChlKTtyZXR1cm4gYX0pLGd0Om0oZnVuY3Rpb24oYSxlLGYpe2ZvcihmPTA+Zj9mK2U6ZjsrK2Y8ZTspYS5wdXNoKGYpO3JldHVybiBhfSl9fTt1LnBzZXVkb3MubnRoPXUucHNldWRvcy5lcTtmb3IoeSBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLAppbWFnZTohMH0pdS5wc2V1ZG9zW3ldPWgoeSk7Zm9yKHkgaW57c3VibWl0OiEwLHJlc2V0OiEwfSl1LnBzZXVkb3NbeV09bCh5KTtxLnByb3RvdHlwZT11LmZpbHRlcnM9dS5wc2V1ZG9zO3Uuc2V0RmlsdGVycz1uZXcgcTtGPWUudG9rZW5pemU9ZnVuY3Rpb24oYSxmKXt2YXIgayxiLGMscixkLGcsejtpZihkPXlhW2ErIiAiXSlyZXR1cm4gZj8wOmQuc2xpY2UoMCk7ZD1hO2c9W107Zm9yKHo9dS5wcmVGaWx0ZXI7ZDspe2smJiEoYj1xYS5leGVjKGQpKXx8KGImJihkPWQuc2xpY2UoYlswXS5sZW5ndGgpfHxkKSxnLnB1c2goYz1bXSkpO2s9ITE7KGI9cmEuZXhlYyhkKSkmJihrPWIuc2hpZnQoKSxjLnB1c2goe3ZhbHVlOmssdHlwZTpiWzBdLnJlcGxhY2UoY2EsIiAiKX0pLGQ9ZC5zbGljZShrLmxlbmd0aCkpO2ZvcihyIGluIHUuZmlsdGVyKSEoYj1mYVtyXS5leGVjKGQpKXx8eltyXSYmIShiPXpbcl0oYikpfHwoaz1iLnNoaWZ0KCksYy5wdXNoKHt2YWx1ZTprLHR5cGU6cixtYXRjaGVzOmJ9KSwKZD1kLnNsaWNlKGsubGVuZ3RoKSk7aWYoIWspYnJlYWt9cmV0dXJuIGY/ZC5sZW5ndGg6ZD9lLmVycm9yKGEpOnlhKGEsZykuc2xpY2UoMCl9O3JldHVybiBBPWUuY29tcGlsZT1mdW5jdGlvbihhLGUpe3ZhciBmLGs9W10sYj1bXSxjPVhbYSsiICJdO2lmKCFjKXtlfHwoZT1GKGEpKTtmb3IoZj1lLmxlbmd0aDtmLS07KWM9RChlW2ZdKSxjW01dP2sucHVzaChjKTpiLnB1c2goYyk7Yz1YKGEsSChiLGspKTtjLnNlbGVjdG9yPWF9cmV0dXJuIGN9LFI9ZS5zZWxlY3Q9ZnVuY3Rpb24oYSxlLGYsayl7dmFyIGIsYyxyLGQsZyx6PSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLGg9IWsmJkYoYT16LnNlbGVjdG9yfHxhKTtpZihmPWZ8fFtdLDE9PT1oLmxlbmd0aCl7aWYoYz1oWzBdPWhbMF0uc2xpY2UoMCksMjxjLmxlbmd0aCYmIklEIj09PShyPWNbMF0pLnR5cGUmJnMuZ2V0QnlJZCYmOT09PWUubm9kZVR5cGUmJlkmJnUucmVsYXRpdmVbY1sxXS50eXBlXSl7aWYoZT0odS5maW5kLklEKHIubWF0Y2hlc1swXS5yZXBsYWNlKG9hLApwYSksZSl8fFtdKVswXSwhZSlyZXR1cm4gZjt6JiYoZT1lLnBhcmVudE5vZGUpO2E9YS5zbGljZShjLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1mb3IoYj1mYS5uZWVkc0NvbnRleHQudGVzdChhKT8wOmMubGVuZ3RoO2ItLSYmKHI9Y1tiXSwhdS5yZWxhdGl2ZVtkPXIudHlwZV0pOylpZigoZz11LmZpbmRbZF0pJiYoaz1nKHIubWF0Y2hlc1swXS5yZXBsYWNlKG9hLHBhKSxsYS50ZXN0KGNbMF0udHlwZSkmJm4oZS5wYXJlbnROb2RlKXx8ZSkpKXtpZihjLnNwbGljZShiLDEpLGE9ay5sZW5ndGgmJnAoYyksIWEpcmV0dXJuIFMuYXBwbHkoZixrKSxmO2JyZWFrfX1yZXR1cm4oenx8QShhLGgpKShrLGUsIVksZixsYS50ZXN0KGEpJiZuKGUucGFyZW50Tm9kZSl8fGUpLGZ9LHMuc29ydFN0YWJsZT1NLnNwbGl0KCIiKS5zb3J0KFcpLmpvaW4oIiIpPT09TSxzLmRldGVjdER1cGxpY2F0ZXM9ISFQLHYoKSxzLnNvcnREZXRhY2hlZD1jKGZ1bmN0aW9uKGEpe3JldHVybiAxJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oSS5jcmVhdGVFbGVtZW50KCJkaXYiKSl9KSwKYyhmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9Ilx4M2NhIGhyZWZceDNkJyMnXHgzZVx4M2MvYVx4M2UiLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxkKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGUsZil7cmV0dXJuIGY/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGUsInR5cGUiPT09ZS50b0xvd2VyQ2FzZSgpPzE6Mil9KSxzLmF0dHJpYnV0ZXMmJmMoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSJceDNjaW5wdXQvXHgzZSIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8ZCgidmFsdWUiLGZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gZnx8ImlucHV0IiE9PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT92b2lkIDA6YS5kZWZhdWx0VmFsdWV9KSxjKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHwKZCgiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLGZ1bmN0aW9uKGEsZSxmKXt2YXIgaztyZXR1cm4gZj92b2lkIDA6ITA9PT1hW2VdP2UudG9Mb3dlckNhc2UoKTooaz1hLmdldEF0dHJpYnV0ZU5vZGUoZSkpJiZrLnNwZWNpZmllZD9rLnZhbHVlOm51bGx9KSxlfShiKTtmLmZpbmQ9dGE7Zi5leHByPXRhLnNlbGVjdG9ycztmLmV4cHJbIjoiXT1mLmV4cHIucHNldWRvcztmLnVuaXF1ZT10YS51bmlxdWVTb3J0O2YudGV4dD10YS5nZXRUZXh0O2YuaXNYTUxEb2M9dGEuaXNYTUw7Zi5jb250YWlucz10YS5jb250YWluczt2YXIga2I9Zi5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxsYj0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLEdiPS9eLlteOiNcW1wuLF0qJC87Zi5maWx0ZXI9ZnVuY3Rpb24oYSxlLGspe3ZhciBiPQplWzBdO3JldHVybiBrJiYoYT0iOm5vdCgiK2ErIikiKSwxPT09ZS5sZW5ndGgmJjE9PT1iLm5vZGVUeXBlP2YuZmluZC5tYXRjaGVzU2VsZWN0b3IoYixhKT9bYl06W106Zi5maW5kLm1hdGNoZXMoYSxmLmdyZXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV9KSl9O2YuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBlLGs9W10sYj10aGlzLGM9Yi5sZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhmKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihlPTA7Yz5lO2UrKylpZihmLmNvbnRhaW5zKGJbZV0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGU9MDtjPmU7ZSsrKWYuZmluZChhLGJbZV0sayk7cmV0dXJuIGs9dGhpcy5wdXNoU3RhY2soMTxjP2YudW5pcXVlKGspOmspLGsuc2VsZWN0b3I9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIithOmEsa30sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhoKHRoaXMsCmF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaCh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhaCh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYma2IudGVzdChhKT9mKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIEZhLHg9Yi5kb2N1bWVudCxUYj0vXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvOyhmLmZuLmluaXQ9ZnVuY3Rpb24oYSxlKXt2YXIgayxiO2lmKCFhKXJldHVybiB0aGlzO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7aWYoaz0iXHgzYyI9PT1hLmNoYXJBdCgwKSYmIlx4M2UiPT09YS5jaGFyQXQoYS5sZW5ndGgtMSkmJjM8PWEubGVuZ3RoP1tudWxsLGEsbnVsbF06VGIuZXhlYyhhKSwha3x8IWtbMV0mJmUpcmV0dXJuIWV8fGUuanF1ZXJ5PyhlfHxGYSkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGUpLmZpbmQoYSk7aWYoa1sxXSl7aWYoZT1lIGluc3RhbmNlb2YgZj9lWzBdOmUsZi5tZXJnZSh0aGlzLApmLnBhcnNlSFRNTChrWzFdLGUmJmUubm9kZVR5cGU/ZS5vd25lckRvY3VtZW50fHxlOngsITApKSxsYi50ZXN0KGtbMV0pJiZmLmlzUGxhaW5PYmplY3QoZSkpZm9yKGsgaW4gZSlmLmlzRnVuY3Rpb24odGhpc1trXSk/dGhpc1trXShlW2tdKTp0aGlzLmF0dHIoayxlW2tdKTtyZXR1cm4gdGhpc31pZihiPXguZ2V0RWxlbWVudEJ5SWQoa1syXSksYiYmYi5wYXJlbnROb2RlKXtpZihiLmlkIT09a1syXSlyZXR1cm4gRmEuZmluZChhKTt0aGlzLmxlbmd0aD0xO3RoaXNbMF09Yn1yZXR1cm4gdGhpcy5jb250ZXh0PXgsdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpmLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiBGYS5yZWFkeT9GYS5yZWFkeShhKTphKGYpOih2b2lkIDAhPT1hLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpLApmLm1ha2VBcnJheShhLHRoaXMpKX0pLnByb3RvdHlwZT1mLmZuO0ZhPWYoeCk7dmFyIFViPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLFZiPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2YuZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oYSxlLGspe3ZhciBiPVtdO2ZvcihhPWFbZV07YSYmOSE9PWEubm9kZVR5cGUmJih2b2lkIDA9PT1rfHwxIT09YS5ub2RlVHlwZXx8IWYoYSkuaXMoaykpOykxPT09YS5ub2RlVHlwZSYmYi5wdXNoKGEpLGE9YVtlXTtyZXR1cm4gYn0sc2libGluZzpmdW5jdGlvbihhLGUpe2Zvcih2YXIgZj1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYmYSE9PWUmJmYucHVzaChhKTtyZXR1cm4gZn19KTtmLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGEpe3ZhciBlLGs9ZihhLHRoaXMpLGI9ay5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGU9MDtiPmU7ZSsrKWlmKGYuY29udGFpbnModGhpcywKa1tlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGUpe2Zvcih2YXIgayxiPTAsYz10aGlzLmxlbmd0aCxkPVtdLGc9a2IudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP2YoYSxlfHx0aGlzLmNvbnRleHQpOjA7Yz5iO2IrKylmb3Ioaz10aGlzW2JdO2smJmshPT1lO2s9ay5wYXJlbnROb2RlKWlmKDExPmsubm9kZVR5cGUmJihnPy0xPGcuaW5kZXgoayk6MT09PWsubm9kZVR5cGUmJmYuZmluZC5tYXRjaGVzU2VsZWN0b3IoayxhKSkpe2QucHVzaChrKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soMTxkLmxlbmd0aD9mLnVuaXF1ZShkKTpkKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP2YuaW5BcnJheSh0aGlzWzBdLGYoYSkpOmYuaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZi51bmlxdWUoZi5tZXJnZSh0aGlzLmdldCgpLApmKGEsZSkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWE/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2YuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybihhPWEucGFyZW50Tm9kZSkmJjExIT09YS5ub2RlVHlwZT9hOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsZSxrKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIsayl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG0oYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gbShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLAplLGspe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIsayl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGUsayl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIsayl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpmLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGUpe2YuZm5bYV09ZnVuY3Rpb24oayxiKXt2YXIgYz1mLm1hcCh0aGlzLGUsayk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoYj1rKSxiJiYic3RyaW5nIj09dHlwZW9mIGImJihjPWYuZmlsdGVyKGIsYykpLDE8dGhpcy5sZW5ndGgmJihWYlthXXx8CihjPWYudW5pcXVlKGMpKSxVYi50ZXN0KGEpJiYoYz1jLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGMpfX0pO3ZhciBRPS9cUysvZyxlYj17fTtmLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9lYlthXXx8cShhKTpmLmV4dGVuZCh7fSxhKTt2YXIgZSxrLGIsYyxkLGcsaD1bXSxsPSFhLm9uY2UmJltdLG09ZnVuY3Rpb24oZil7az1hLm1lbW9yeSYmZjtiPSEwO2Q9Z3x8MDtnPTA7Yz1oLmxlbmd0aDtmb3IoZT0hMDtoJiZjPmQ7ZCsrKWlmKCExPT09aFtkXS5hcHBseShmWzBdLGZbMV0pJiZhLnN0b3BPbkZhbHNlKXtrPSExO2JyZWFrfWU9ITE7aCYmKGw/bC5sZW5ndGgmJm0obC5zaGlmdCgpKTprP2g9W106bi5kaXNhYmxlKCkpfSxuPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgYj1oLmxlbmd0aDshZnVuY3Rpb24gU2IoZSl7Zi5lYWNoKGUsZnVuY3Rpb24oZSxrKXt2YXIgYj1mLnR5cGUoayk7ImZ1bmN0aW9uIj09PWI/YS51bmlxdWUmJm4uaGFzKGspfHwKaC5wdXNoKGspOmsmJmsubGVuZ3RoJiYic3RyaW5nIiE9PWImJlNiKGspfSl9KGFyZ3VtZW50cyk7ZT9jPWgubGVuZ3RoOmsmJihnPWIsbShrKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZmLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsayl7Zm9yKHZhciBiOy0xPChiPWYuaW5BcnJheShrLGgsYikpOyloLnNwbGljZShiLDEpLGUmJihjPj1iJiZjLS0sZD49YiYmZC0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT8tMTxmLmluQXJyYXkoYSxoKTohKCFofHwhaC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBoPVtdLGM9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9bD1rPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFofSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGw9dm9pZCAwLGt8fG4uZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFsfSxmaXJlV2l0aDpmdW5jdGlvbihhLApmKXtyZXR1cm4haHx8YiYmIWx8fChmPWZ8fFtdLGY9W2EsZi5zbGljZT9mLnNsaWNlKCk6Zl0sZT9sLnB1c2goZik6bShmKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBuLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhYn19O3JldHVybiBufTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGU9W1sicmVzb2x2ZSIsImRvbmUiLGYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsZi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsZi5DYWxsYmFja3MoIm1lbW9yeSIpXV0saz0icGVuZGluZyIsYj17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4ga30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzOwpyZXR1cm4gZi5EZWZlcnJlZChmdW5jdGlvbihrKXtmLmVhY2goZSxmdW5jdGlvbihlLGQpe3ZhciBnPWYuaXNGdW5jdGlvbihhW2VdKSYmYVtlXTtjW2RbMV1dKGZ1bmN0aW9uKCl7dmFyIGE9ZyYmZy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YSYmZi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YS5wcm9taXNlKCkuZG9uZShrLnJlc29sdmUpLmZhaWwoay5yZWplY3QpLnByb2dyZXNzKGsubm90aWZ5KTprW2RbMF0rIldpdGgiXSh0aGlzPT09Yj9rLnByb21pc2UoKTp0aGlzLGc/W2FdOmFyZ3VtZW50cyl9KX0pO2E9bnVsbH0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT9mLmV4dGVuZChhLGIpOmJ9fSxjPXt9O3JldHVybiBiLnBpcGU9Yi50aGVuLGYuZWFjaChlLGZ1bmN0aW9uKGEsZil7dmFyIGQ9ZlsyXSxnPWZbM107YltmWzFdXT1kLmFkZDtnJiZkLmFkZChmdW5jdGlvbigpe2s9Z30sZVsxXmFdWzJdLmRpc2FibGUsZVsyXVsyXS5sb2NrKTtjW2ZbMF1dPQpmdW5jdGlvbigpe3JldHVybiBjW2ZbMF0rIldpdGgiXSh0aGlzPT09Yz9iOnRoaXMsYXJndW1lbnRzKSx0aGlzfTtjW2ZbMF0rIldpdGgiXT1kLmZpcmVXaXRofSksYi5wcm9taXNlKGMpLGEmJmEuY2FsbChjLGMpLGN9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGU9MCxrPVMuY2FsbChhcmd1bWVudHMpLGI9ay5sZW5ndGgsYz0xIT09Ynx8YSYmZi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YjowLGQ9MT09PWM/YTpmLkRlZmVycmVkKCksZz1mdW5jdGlvbihhLGUsZil7cmV0dXJuIGZ1bmN0aW9uKGspe2VbYV09dGhpcztmW2FdPTE8YXJndW1lbnRzLmxlbmd0aD9TLmNhbGwoYXJndW1lbnRzKTprO2Y9PT1oP2Qubm90aWZ5V2l0aChlLGYpOi0tY3x8ZC5yZXNvbHZlV2l0aChlLGYpfX0saCxsLG07aWYoMTxiKWZvcihoPUFycmF5KGIpLGw9QXJyYXkoYiksbT1BcnJheShiKTtiPmU7ZSsrKWtbZV0mJmYuaXNGdW5jdGlvbihrW2VdLnByb21pc2UpP2tbZV0ucHJvbWlzZSgpLmRvbmUoZyhlLG0sCmspKS5mYWlsKGQucmVqZWN0KS5wcm9ncmVzcyhnKGUsbCxoKSk6LS1jO3JldHVybiBjfHxkLnJlc29sdmVXaXRoKG0sayksZC5wcm9taXNlKCl9fSk7dmFyIE1hO2YuZm4ucmVhZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIGYucmVhZHkucHJvbWlzZSgpLmRvbmUoYSksdGhpc307Zi5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGEpe2E/Zi5yZWFkeVdhaXQrKzpmLnJlYWR5KCEwKX0scmVhZHk6ZnVuY3Rpb24oYSl7aWYoITA9PT1hPyEtLWYucmVhZHlXYWl0OiFmLmlzUmVhZHkpe2lmKCF4LmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZi5yZWFkeSk7Zi5pc1JlYWR5PSEwOyEwIT09YSYmMDwtLWYucmVhZHlXYWl0fHwoTWEucmVzb2x2ZVdpdGgoeCxbZl0pLGYuZm4udHJpZ2dlckhhbmRsZXImJihmKHgpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpLGYoeCkub2ZmKCJyZWFkeSIpKSl9fX0pO2YucmVhZHkucHJvbWlzZT1mdW5jdGlvbihhKXtpZighTWEpaWYoTWE9CmYuRGVmZXJyZWQoKSwiY29tcGxldGUiPT09eC5yZWFkeVN0YXRlKXNldFRpbWVvdXQoZi5yZWFkeSk7ZWxzZSBpZih4LmFkZEV2ZW50TGlzdGVuZXIpeC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixwLCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHAsITEpO2Vsc2V7eC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixwKTtiLmF0dGFjaEV2ZW50KCJvbmxvYWQiLHApO3ZhciBlPSExO3RyeXtlPW51bGw9PWIuZnJhbWVFbGVtZW50JiZ4LmRvY3VtZW50RWxlbWVudH1jYXRjaChrKXt9ZSYmZS5kb1Njcm9sbCYmIWZ1bmN0aW9uIHooKXtpZighZi5pc1JlYWR5KXt0cnl7ZS5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KHosNTApfW4oKTtmLnJlYWR5KCl9fSgpfXJldHVybiBNYS5wcm9taXNlKGEpfTt2YXIgVz0idW5kZWZpbmVkIixtYjtmb3IobWIgaW4gZihzKSlicmVhaztzLm93bkxhc3Q9IjAiIT09bWI7cy5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PQohMTtmKGZ1bmN0aW9uKCl7dmFyIGEsZSxmLGI7KGY9eC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKSYmZi5zdHlsZSYmKGU9eC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPXguY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsZi5hcHBlbmRDaGlsZChiKS5hcHBlbmRDaGlsZChlKSx0eXBlb2YgZS5zdHlsZS56b29tIT09VyYmKGUuc3R5bGUuY3NzVGV4dD0iZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIscy5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWE9Mz09PWUub2Zmc2V0V2lkdGgsYSYmKGYuc3R5bGUuem9vbT0xKSksZi5yZW1vdmVDaGlsZChiKSl9KTsoZnVuY3Rpb24oKXt2YXIgYT14LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PXMuZGVsZXRlRXhwYW5kbyl7cy5kZWxldGVFeHBhbmRvPQohMDt0cnl7ZGVsZXRlIGEudGVzdH1jYXRjaChlKXtzLmRlbGV0ZUV4cGFuZG89ITF9fX0pKCk7Zi5hY2NlcHREYXRhPWZ1bmN0aW9uKGEpe3ZhciBlPWYubm9EYXRhWyhhLm5vZGVOYW1lKyIgIikudG9Mb3dlckNhc2UoKV0saz0rYS5ub2RlVHlwZXx8MTtyZXR1cm4gMSE9PWsmJjkhPT1rPyExOiFlfHwhMCE9PWUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1lfTt2YXIgSWI9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxIYj0vKFtBLVpdKS9nO2YuZXh0ZW5kKHtjYWNoZTp7fSxub0RhdGE6eyJhcHBsZXQgIjohMCwiZW1iZWQgIjohMCwib2JqZWN0ICI6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCJ9LGhhc0RhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5ub2RlVHlwZT9mLmNhY2hlW2FbZi5leHBhbmRvXV06YVtmLmV4cGFuZG9dLCEhYSYmIXcoYSl9LGRhdGE6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiB5KGEsZSxmKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLAplKXtyZXR1cm4gSihhLGUpfSxfZGF0YTpmdW5jdGlvbihhLGUsZil7cmV0dXJuIHkoYSxlLGYsITApfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGUpe3JldHVybiBKKGEsZSwhMCl9fSk7Zi5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxlKXt2YXIgayxiLGMsZD10aGlzWzBdLGc9ZCYmZC5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoYz1mLmRhdGEoZCksMT09PWQubm9kZVR5cGUmJiFmLl9kYXRhKGQsInBhcnNlZEF0dHJzIikpKXtmb3Ioaz1nLmxlbmd0aDtrLS07KWdba10mJihiPWdba10ubmFtZSwwPT09Yi5pbmRleE9mKCJkYXRhLSIpJiYoYj1mLmNhbWVsQ2FzZShiLnNsaWNlKDUpKSxCKGQsYixjW2JdKSkpO2YuX2RhdGEoZCwicGFyc2VkQXR0cnMiLCEwKX1yZXR1cm4gY31yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5kYXRhKHRoaXMsYSl9KToxPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5kYXRhKHRoaXMsCmEsZSl9KTpkP0IoZCxhLGYuZGF0YShkLGEpKTp2b2lkIDB9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSk7Zi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsZSxrKXt2YXIgYjtyZXR1cm4gYT8oZT0oZXx8ImZ4IikrInF1ZXVlIixiPWYuX2RhdGEoYSxlKSxrJiYoIWJ8fGYuaXNBcnJheShrKT9iPWYuX2RhdGEoYSxlLGYubWFrZUFycmF5KGspKTpiLnB1c2goaykpLGJ8fFtdKTp2b2lkIDB9LGRlcXVldWU6ZnVuY3Rpb24oYSxlKXtlPWV8fCJmeCI7dmFyIGs9Zi5xdWV1ZShhLGUpLGI9ay5sZW5ndGgsYz1rLnNoaWZ0KCksZD1mLl9xdWV1ZUhvb2tzKGEsZSksZz1mdW5jdGlvbigpe2YuZGVxdWV1ZShhLGUpfTsiaW5wcm9ncmVzcyI9PT1jJiYoYz1rLnNoaWZ0KCksYi0tKTtjJiYoImZ4Ij09PWUmJmsudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBkLnN0b3AsYy5jYWxsKGEsZyxkKSk7IWImJgpkJiZkLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxlKXt2YXIgaz1lKyJxdWV1ZUhvb2tzIjtyZXR1cm4gZi5fZGF0YShhLGspfHxmLl9kYXRhKGEsayx7ZW1wdHk6Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7Zi5fcmVtb3ZlRGF0YShhLGUrInF1ZXVlIik7Zi5fcmVtb3ZlRGF0YShhLGspfSl9KX19KTtmLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxlKXt2YXIgaz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGU9YSxhPSJmeCIsay0tKSxhcmd1bWVudHMubGVuZ3RoPGs/Zi5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWU/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgaz1mLnF1ZXVlKHRoaXMsYSxlKTtmLl9xdWV1ZUhvb2tzKHRoaXMsYSk7ImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWtbMF0mJmYuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGVxdWV1ZSh0aGlzLAphKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsZSl7dmFyIGssYj0xLGM9Zi5EZWZlcnJlZCgpLGQ9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXstLWJ8fGMucmVzb2x2ZVdpdGgoZCxbZF0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihlPWEsYT12b2lkIDApO2ZvcihhPWF8fCJmeCI7Zy0tOykoaz1mLl9kYXRhKGRbZ10sYSsicXVldWVIb29rcyIpKSYmay5lbXB0eSYmKGIrKyxrLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxjLnByb21pc2UoZSl9fSk7dmFyIE5hPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLGthPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sd2E9ZnVuY3Rpb24oYSxlKXtyZXR1cm4gYT1lfHxhLCJub25lIj09PWYuY3NzKGEsImRpc3BsYXkiKXx8IWYuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxjYT1mLmFjY2Vzcz0KZnVuY3Rpb24oYSxlLGssYixjLGQsZyl7dmFyIGg9MCxsPWEubGVuZ3RoLG09bnVsbD09aztpZigib2JqZWN0Ij09PWYudHlwZShrKSlmb3IoaCBpbiBjPSEwLGspZi5hY2Nlc3MoYSxlLGgsa1toXSwhMCxkLGcpO2Vsc2UgaWYodm9pZCAwIT09YiYmKGM9ITAsZi5pc0Z1bmN0aW9uKGIpfHwoZz0hMCksbSYmKGc/KGUuY2FsbChhLGIpLGU9bnVsbCk6KG09ZSxlPWZ1bmN0aW9uKGEsZSxrKXtyZXR1cm4gbS5jYWxsKGYoYSksayl9KSksZSkpZm9yKDtsPmg7aCsrKWUoYVtoXSxrLGc/YjpiLmNhbGwoYVtoXSxoLGUoYVtoXSxrKSkpO3JldHVybiBjP2E6bT9lLmNhbGwoYSk6bD9lKGFbMF0sayk6ZH0sVGE9L14oPzpjaGVja2JveHxyYWRpbykkL2k7IWZ1bmN0aW9uKCl7dmFyIGE9eC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGU9eC5jcmVhdGVFbGVtZW50KCJkaXYiKSxmPXguY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGUuaW5uZXJIVE1MPSIgIFx4M2NsaW5rL1x4M2VceDNjdGFibGVceDNlXHgzYy90YWJsZVx4M2VceDNjYSBocmVmXHgzZCcvYSdceDNlYVx4M2MvYVx4M2VceDNjaW5wdXQgdHlwZVx4M2QnY2hlY2tib3gnL1x4M2UiLApzLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1lLmZpcnN0Q2hpbGQubm9kZVR5cGUscy50Ym9keT0hZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgscy5odG1sU2VyaWFsaXplPSEhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzLmh0bWw1Q2xvbmU9Ilx4M2M6bmF2XHgzZVx4M2MvOm5hdlx4M2UiIT09eC5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsZi5hcHBlbmRDaGlsZChhKSxzLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGUuaW5uZXJIVE1MPSJceDNjdGV4dGFyZWFceDNleFx4M2MvdGV4dGFyZWFceDNlIixzLm5vQ2xvbmVDaGVja2VkPSEhZS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsZi5hcHBlbmRDaGlsZChlKSxlLmlubmVySFRNTD0iXHgzY2lucHV0IHR5cGVceDNkJ3JhZGlvJyBjaGVja2VkXHgzZCdjaGVja2VkJyBuYW1lXHgzZCd0Jy9ceDNlIiwKcy5jaGVja0Nsb25lPWUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLHMubm9DbG9uZUV2ZW50PSEwLGUuYXR0YWNoRXZlbnQmJihlLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe3Mubm9DbG9uZUV2ZW50PSExfSksZS5jbG9uZU5vZGUoITApLmNsaWNrKCkpLG51bGw9PXMuZGVsZXRlRXhwYW5kbyl7cy5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgZS50ZXN0fWNhdGNoKGIpe3MuZGVsZXRlRXhwYW5kbz0hMX19fSgpOyhmdW5jdGlvbigpe3ZhciBhLGUsZj14LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihhIGlue3N1Ym1pdDohMCxjaGFuZ2U6ITAsZm9jdXNpbjohMH0pZT0ib24iK2EsKHNbYSsiQnViYmxlcyJdPWUgaW4gYil8fChmLnNldEF0dHJpYnV0ZShlLCJ0Iiksc1thKyJCdWJibGVzIl09ITE9PT1mLmF0dHJpYnV0ZXNbZV0uZXhwYW5kbyl9KSgpO3ZhciBXYT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksV2I9Ci9ea2V5LyxYYj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLyxuYj0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sb2I9L14oW14uXSopKD86XC4oLispfCkkLztmLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsZSxrLGIsYyl7dmFyIGQsZyxoLGwsbSxuLHEscCx0LEU7aWYoaD1mLl9kYXRhKGEpKXtrLmhhbmRsZXImJihsPWssaz1sLmhhbmRsZXIsYz1sLnNlbGVjdG9yKTtrLmd1aWR8fChrLmd1aWQ9Zi5ndWlkKyspOyhnPWguZXZlbnRzKXx8KGc9aC5ldmVudHM9e30pOyhuPWguaGFuZGxlKXx8KG49aC5oYW5kbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBmPT09V3x8YSYmZi5ldmVudC50cmlnZ2VyZWQ9PT1hLnR5cGU/dm9pZCAwOmYuZXZlbnQuZGlzcGF0Y2guYXBwbHkobi5lbGVtLGFyZ3VtZW50cyl9LG4uZWxlbT1hKTtlPShlfHwiIikubWF0Y2goUSl8fFsiIl07Zm9yKGg9ZS5sZW5ndGg7aC0tOylkPW9iLmV4ZWMoZVtoXSl8fApbXSx0PUU9ZFsxXSxkPShkWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksdCYmKG09Zi5ldmVudC5zcGVjaWFsW3RdfHx7fSx0PShjP20uZGVsZWdhdGVUeXBlOm0uYmluZFR5cGUpfHx0LG09Zi5ldmVudC5zcGVjaWFsW3RdfHx7fSxxPWYuZXh0ZW5kKHt0eXBlOnQsb3JpZ1R5cGU6RSxkYXRhOmIsaGFuZGxlcjprLGd1aWQ6ay5ndWlkLHNlbGVjdG9yOmMsbmVlZHNDb250ZXh0OmMmJmYuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChjKSxuYW1lc3BhY2U6ZC5qb2luKCIuIil9LGwpLChwPWdbdF0pfHwocD1nW3RdPVtdLHAuZGVsZWdhdGVDb3VudD0wLG0uc2V0dXAmJiExIT09bS5zZXR1cC5jYWxsKGEsYixkLG4pfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIit0LG4pKSksbS5hZGQmJihtLmFkZC5jYWxsKGEscSkscS5oYW5kbGVyLmd1aWR8fChxLmhhbmRsZXIuZ3VpZD1rLmd1aWQpKSwKYz9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLHEpOnAucHVzaChxKSxmLmV2ZW50Lmdsb2JhbFt0XT0hMCk7YT1udWxsfX0scmVtb3ZlOmZ1bmN0aW9uKGEsZSxrLGIsYyl7dmFyIGQsZyxoLGwsbSxuLHEscCx0LEUsdyx1PWYuaGFzRGF0YShhKSYmZi5fZGF0YShhKTtpZih1JiYobj11LmV2ZW50cykpe2U9KGV8fCIiKS5tYXRjaChRKXx8WyIiXTtmb3IobT1lLmxlbmd0aDttLS07KWlmKGg9b2IuZXhlYyhlW21dKXx8W10sdD13PWhbMV0sRT0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHQpe3E9Zi5ldmVudC5zcGVjaWFsW3RdfHx7fTt0PShiP3EuZGVsZWdhdGVUeXBlOnEuYmluZFR5cGUpfHx0O3A9blt0XXx8W107aD1oWzJdJiZSZWdFeHAoIihefFxcLikiK0Uuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik7Zm9yKGw9ZD1wLmxlbmd0aDtkLS07KWc9cFtkXSwhYyYmdyE9PWcub3JpZ1R5cGV8fGsmJmsuZ3VpZCE9PWcuZ3VpZHx8aCYmIWgudGVzdChnLm5hbWVzcGFjZSl8fApiJiZiIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1ifHwhZy5zZWxlY3Rvcil8fChwLnNwbGljZShkLDEpLGcuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLHEucmVtb3ZlJiZxLnJlbW92ZS5jYWxsKGEsZykpO2wmJiFwLmxlbmd0aCYmKHEudGVhcmRvd24mJiExIT09cS50ZWFyZG93bi5jYWxsKGEsRSx1LmhhbmRsZSl8fGYucmVtb3ZlRXZlbnQoYSx0LHUuaGFuZGxlKSxkZWxldGUgblt0XSl9ZWxzZSBmb3IodCBpbiBuKWYuZXZlbnQucmVtb3ZlKGEsdCtlW21dLGssYiwhMCk7Zi5pc0VtcHR5T2JqZWN0KG4pJiYoZGVsZXRlIHUuaGFuZGxlLGYuX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihhLGUsayxjKXt2YXIgZCxnLGgsbCxtLG4scT1ba3x8eF0scD1mYS5jYWxsKGEsInR5cGUiKT9hLnR5cGU6YTtuPWZhLmNhbGwoYSwibmFtZXNwYWNlIik/YS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWQ9az1rfHx4LDMhPT1rLm5vZGVUeXBlJiY4IT09Cmsubm9kZVR5cGUmJiFuYi50ZXN0KHArZi5ldmVudC50cmlnZ2VyZWQpJiYoMDw9cC5pbmRleE9mKCIuIikmJihuPXAuc3BsaXQoIi4iKSxwPW4uc2hpZnQoKSxuLnNvcnQoKSksZz0wPnAuaW5kZXhPZigiOiIpJiYib24iK3AsYT1hW2YuZXhwYW5kb10/YTpuZXcgZi5FdmVudChwLCJvYmplY3QiPT10eXBlb2YgYSYmYSksYS5pc1RyaWdnZXI9Yz8yOjMsYS5uYW1lc3BhY2U9bi5qb2luKCIuIiksYS5uYW1lc3BhY2VfcmU9YS5uYW1lc3BhY2U/UmVnRXhwKCIoXnxcXC4pIituLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsYS5yZXN1bHQ9dm9pZCAwLGEudGFyZ2V0fHwoYS50YXJnZXQ9ayksZT1udWxsPT1lP1thXTpmLm1ha2VBcnJheShlLFthXSksbT1mLmV2ZW50LnNwZWNpYWxbcF18fHt9LGN8fCFtLnRyaWdnZXJ8fCExIT09bS50cmlnZ2VyLmFwcGx5KGssZSkpKXtpZighYyYmIW0ubm9CdWJibGUmJiFmLmlzV2luZG93KGspKXtsPW0uZGVsZWdhdGVUeXBlfHwKcDtmb3IobmIudGVzdChsK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpcS5wdXNoKGgpLGQ9aDtkPT09KGsub3duZXJEb2N1bWVudHx8eCkmJnEucHVzaChkLmRlZmF1bHRWaWV3fHxkLnBhcmVudFdpbmRvd3x8Yil9Zm9yKG49MDsoaD1xW24rK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOylhLnR5cGU9MTxuP2w6bS5iaW5kVHlwZXx8cCwoZD0oZi5fZGF0YShoLCJldmVudHMiKXx8e30pW2EudHlwZV0mJmYuX2RhdGEoaCwiaGFuZGxlIikpJiZkLmFwcGx5KGgsZSksKGQ9ZyYmaFtnXSkmJmQuYXBwbHkmJmYuYWNjZXB0RGF0YShoKSYmKGEucmVzdWx0PWQuYXBwbHkoaCxlKSwhMT09PWEucmVzdWx0JiZhLnByZXZlbnREZWZhdWx0KCkpO2lmKGEudHlwZT1wLCEoY3x8YS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8bS5fZGVmYXVsdCYmITEhPT1tLl9kZWZhdWx0LmFwcGx5KHEucG9wKCksZSkpJiZmLmFjY2VwdERhdGEoaykmJmcmJmtbcF0mJiFmLmlzV2luZG93KGspKXsoZD0Ka1tnXSkmJihrW2ddPW51bGwpO2YuZXZlbnQudHJpZ2dlcmVkPXA7dHJ5e2tbcF0oKX1jYXRjaCh0KXt9Zi5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwO2QmJihrW2ddPWQpfXJldHVybiBhLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe2E9Zi5ldmVudC5maXgoYSk7dmFyIGUsayxiLGMsZCxnPVtdLGg9Uy5jYWxsKGFyZ3VtZW50cyk7ZT0oZi5fZGF0YSh0aGlzLCJldmVudHMiKXx8e30pW2EudHlwZV18fFtdO3ZhciBsPWYuZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7fTtpZihoWzBdPWEsYS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFsLnByZURpc3BhdGNofHwhMSE9PWwucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGEpKXtnPWYuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEsZSk7Zm9yKGU9MDsoYz1nW2UrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOylmb3IoYS5jdXJyZW50VGFyZ2V0PWMuZWxlbSxkPTA7KGI9Yy5oYW5kbGVyc1tkKytdKSYmIWEuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTspYS5uYW1lc3BhY2VfcmUmJgohYS5uYW1lc3BhY2VfcmUudGVzdChiLm5hbWVzcGFjZSl8fChhLmhhbmRsZU9iaj1iLGEuZGF0YT1iLmRhdGEsaz0oKGYuZXZlbnQuc3BlY2lhbFtiLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Yi5oYW5kbGVyKS5hcHBseShjLmVsZW0saCksdm9pZCAwPT09a3x8ITEhPT0oYS5yZXN1bHQ9ayl8fChhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSkpO3JldHVybiBsLnBvc3REaXNwYXRjaCYmbC5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGEpLGEucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxlKXt2YXIgayxiLGMsZCxnPVtdLGg9ZS5kZWxlZ2F0ZUNvdW50LGw9YS50YXJnZXQ7aWYoaCYmbC5ub2RlVHlwZSYmKCFhLmJ1dHRvbnx8ImNsaWNrIiE9PWEudHlwZSkpZm9yKDtsIT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoITAhPT1sLmRpc2FibGVkfHwiY2xpY2siIT09YS50eXBlKSl7Yz1bXTtmb3IoZD0wO2g+ZDtkKyspYj0KZVtkXSxrPWIuc2VsZWN0b3IrIiAiLHZvaWQgMD09PWNba10mJihjW2tdPWIubmVlZHNDb250ZXh0PzA8PWYoayx0aGlzKS5pbmRleChsKTpmLmZpbmQoayx0aGlzLG51bGwsW2xdKS5sZW5ndGgpLGNba10mJmMucHVzaChiKTtjLmxlbmd0aCYmZy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6Y30pfXJldHVybiBoPGUubGVuZ3RoJiZnLnB1c2goe2VsZW06dGhpcyxoYW5kbGVyczplLnNsaWNlKGgpfSksZ30sZml4OmZ1bmN0aW9uKGEpe2lmKGFbZi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgZSxiLGM7ZT1hLnR5cGU7dmFyIGQ9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1YYi50ZXN0KGUpP3RoaXMubW91c2VIb29rczpXYi50ZXN0KGUpP3RoaXMua2V5SG9va3M6e30pO2M9Zy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChnLnByb3BzKTp0aGlzLnByb3BzO2E9bmV3IGYuRXZlbnQoZCk7Zm9yKGU9Yy5sZW5ndGg7ZS0tOyliPWNbZV0sYVtiXT1kW2JdO3JldHVybiBhLnRhcmdldHx8CihhLnRhcmdldD1kLnNyY0VsZW1lbnR8fHgpLDM9PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT0hIWEubWV0YUtleSxnLmZpbHRlcj9nLmZpbHRlcihhLGQpOmF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOlsiY2hhciIsImNoYXJDb2RlIiwia2V5Iiwia2V5Q29kZSJdLGZpbHRlcjpmdW5jdGlvbihhLGUpe3JldHVybiBudWxsPT1hLndoaWNoJiYoYS53aGljaD1udWxsIT1lLmNoYXJDb2RlP2UuY2hhckNvZGU6ZS5rZXlDb2RlKSxhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSwKZmlsdGVyOmZ1bmN0aW9uKGEsZSl7dmFyIGYsYixjLGQ9ZS5idXR0b24sZz1lLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1lLmNsaWVudFgmJihiPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHgsYz1iLmRvY3VtZW50RWxlbWVudCxmPWIuYm9keSxhLnBhZ2VYPWUuY2xpZW50WCsoYyYmYy5zY3JvbGxMZWZ0fHxmJiZmLnNjcm9sbExlZnR8fDApLShjJiZjLmNsaWVudExlZnR8fGYmJmYuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1lLmNsaWVudFkrKGMmJmMuc2Nyb2xsVG9wfHxmJiZmLnNjcm9sbFRvcHx8MCktKGMmJmMuY2xpZW50VG9wfHxmJiZmLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2UudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWR8fChhLndoaWNoPTEmZD8xOjImZD8zOjQmZD8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09CkEoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1BKCkmJnRoaXMuYmx1cj8odGhpcy5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGYubm9kZU5hbWUodGhpcywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWEucmVzdWx0KX19fSxzaW11bGF0ZTpmdW5jdGlvbihhLGUsYixjKXthPQpmLmV4dGVuZChuZXcgZi5FdmVudCxiLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2M/Zi5ldmVudC50cmlnZ2VyKGEsbnVsbCxlKTpmLmV2ZW50LmRpc3BhdGNoLmNhbGwoZSxhKTthLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZiLnByZXZlbnREZWZhdWx0KCl9fTtmLnJlbW92ZUV2ZW50PXgucmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihhLGUsZil7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxmLCExKX06ZnVuY3Rpb24oYSxlLGYpe2U9Im9uIitlO2EuZGV0YWNoRXZlbnQmJih0eXBlb2YgYVtlXT09PVcmJihhW2VdPW51bGwpLGEuZGV0YWNoRXZlbnQoZSxmKSl9O2YuRXZlbnQ9ZnVuY3Rpb24oYSxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQ/KGEmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fAp2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09YS5yZXR1cm5WYWx1ZT9EOkYpOnRoaXMudHlwZT1hLGUmJmYuZXh0ZW5kKHRoaXMsZSksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fGYubm93KCksdm9pZCh0aGlzW2YuZXhwYW5kb109ITApKTpuZXcgZi5FdmVudChhLGUpfTtmLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOkYsaXNQcm9wYWdhdGlvblN0b3BwZWQ6Rixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpGLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPUQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1EO2EmJihhLnN0b3BQcm9wYWdhdGlvbiYmCmEuc3RvcFByb3BhZ2F0aW9uKCksYS5jYW5jZWxCdWJibGU9ITApfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1EO2EmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO3RoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fTtmLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsZSl7Zi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6ZSxiaW5kVHlwZTplLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYixjPWEucmVsYXRlZFRhcmdldCxkPWEuaGFuZGxlT2JqO3JldHVybighY3x8YyE9PXRoaXMmJiFmLmNvbnRhaW5zKHRoaXMsYykpJiYoYS50eXBlPWQub3JpZ1R5cGUsCmI9ZC5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9ZSksYn19fSk7cy5zdWJtaXRCdWJibGVzfHwoZi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gZi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBmLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe2E9YS50YXJnZXQ7KGE9Zi5ub2RlTmFtZShhLCJpbnB1dCIpfHxmLm5vZGVOYW1lKGEsImJ1dHRvbiIpP2EuZm9ybTp2b2lkIDApJiYhZi5fZGF0YShhLCJzdWJtaXRCdWJibGVzIikmJihmLmV2ZW50LmFkZChhLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLGYuX2RhdGEoYSwic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiYKZi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBmLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIGYuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSk7cy5jaGFuZ2VCdWJibGVzfHwoZi5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gV2EudGVzdCh0aGlzLm5vZGVOYW1lKT8oKCJjaGVja2JveCI9PT10aGlzLnR5cGV8fCJyYWRpbyI9PT10aGlzLnR5cGUpJiYoZi5ldmVudC5hZGQodGhpcywicHJvcGVydHljaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7ImNoZWNrZWQiPT09YS5vcmlnaW5hbEV2ZW50LnByb3BlcnR5TmFtZSYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMCl9KSxmLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLl9qdXN0X2NoYW5nZWQmJiFhLmlzVHJpZ2dlciYmKHRoaXMuX2p1c3RfY2hhbmdlZD0KITEpO2YuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBmLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXthPWEudGFyZ2V0O1dhLnRlc3QoYS5ub2RlTmFtZSkmJiFmLl9kYXRhKGEsImNoYW5nZUJ1YmJsZXMiKSYmKGYuZXZlbnQuYWRkKGEsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8Zi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxmLl9kYXRhKGEsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBlPWEudGFyZ2V0O3JldHVybiB0aGlzIT09ZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1lLnR5cGUmJiJjaGVja2JveCIhPT1lLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6CnZvaWQgMH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gZi5ldmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSwhV2EudGVzdCh0aGlzLm5vZGVOYW1lKX19KTtzLmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsZSl7dmFyIGI9ZnVuY3Rpb24oYSl7Zi5ldmVudC5zaW11bGF0ZShlLGEudGFyZ2V0LGYuZXZlbnQuZml4KGEpLCEwKX07Zi5ldmVudC5zcGVjaWFsW2VdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBjPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxkPWYuX2RhdGEoYyxlKTtkfHxjLmFkZEV2ZW50TGlzdGVuZXIoYSxiLCEwKTtmLl9kYXRhKGMsZSwoZHx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGQ9Zi5fZGF0YShjLGUpLTE7ZD9mLl9kYXRhKGMsZSxkKTooYy5yZW1vdmVFdmVudExpc3RlbmVyKGEsYiwhMCksZi5fcmVtb3ZlRGF0YShjLAplKSl9fX0pO2YuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGUsYixjLGQpe3ZhciBnLGg7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGUmJihiPWJ8fGUsZT12b2lkIDApO2ZvcihnIGluIGEpdGhpcy5vbihnLGUsYixhW2ddLGQpO3JldHVybiB0aGlzfWlmKG51bGw9PWImJm51bGw9PWM/KGM9ZSxiPWU9dm9pZCAwKTpudWxsPT1jJiYoInN0cmluZyI9PXR5cGVvZiBlPyhjPWIsYj12b2lkIDApOihjPWIsYj1lLGU9dm9pZCAwKSksITE9PT1jKWM9RjtlbHNlIGlmKCFjKXJldHVybiB0aGlzO3JldHVybiAxPT09ZCYmKGg9YyxjPWZ1bmN0aW9uKGEpe3JldHVybiBmKCkub2ZmKGEpLGguYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjLmd1aWQ9aC5ndWlkfHwoaC5ndWlkPWYuZ3VpZCsrKSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGMsYixlKX0pfSxvbmU6ZnVuY3Rpb24oYSxlLGYsYil7cmV0dXJuIHRoaXMub24oYSxlLGYsYiwxKX0sCm9mZjpmdW5jdGlvbihhLGUsYil7dmFyIGMsZDtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gYz1hLmhhbmRsZU9iaixmKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihjLm5hbWVzcGFjZT9jLm9yaWdUeXBlKyIuIitjLm5hbWVzcGFjZTpjLm9yaWdUeXBlLGMuc2VsZWN0b3IsYy5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGQgaW4gYSl0aGlzLm9mZihkLGUsYVtkXSk7cmV0dXJuIHRoaXN9cmV0dXJuKCExPT09ZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiYoYj1lLGU9dm9pZCAwKSwhMT09PWImJihiPUYpLHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQucmVtb3ZlKHRoaXMsYSxiLGUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC50cmlnZ2VyKGEsZSx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGUpe3ZhciBiPXRoaXNbMF07cmV0dXJuIGI/Zi5ldmVudC50cmlnZ2VyKGEsCmUsYiwhMCk6dm9pZCAwfX0pO3ZhciBmYj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsWWI9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxwYj1SZWdFeHAoIlx4M2MoPzoiK2ZiKyIpW1xccy9ceDNlXSIsImkiKSxYYT0vXlxzKy8scWI9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9naSxyYj0vPChbXHc6XSspLyxzYj0vPHRib2R5L2ksWmI9Lzx8JiM/XHcrOy8sJGI9LzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSxhYz0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSx0Yj0vXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksS2I9L150cnVlXC8oLiopLywKYmM9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLFg9e29wdGlvbjpbMSwiXHgzY3NlbGVjdCBtdWx0aXBsZVx4M2QnbXVsdGlwbGUnXHgzZSIsIlx4M2Mvc2VsZWN0XHgzZSJdLGxlZ2VuZDpbMSwiXHgzY2ZpZWxkc2V0XHgzZSIsIlx4M2MvZmllbGRzZXRceDNlIl0sYXJlYTpbMSwiXHgzY21hcFx4M2UiLCJceDNjL21hcFx4M2UiXSxwYXJhbTpbMSwiXHgzY29iamVjdFx4M2UiLCJceDNjL29iamVjdFx4M2UiXSx0aGVhZDpbMSwiXHgzY3RhYmxlXHgzZSIsIlx4M2MvdGFibGVceDNlIl0sdHI6WzIsIlx4M2N0YWJsZVx4M2VceDNjdGJvZHlceDNlIiwiXHgzYy90Ym9keVx4M2VceDNjL3RhYmxlXHgzZSJdLGNvbDpbMiwiXHgzY3RhYmxlXHgzZVx4M2N0Ym9keVx4M2VceDNjL3Rib2R5XHgzZVx4M2Njb2xncm91cFx4M2UiLCJceDNjL2NvbGdyb3VwXHgzZVx4M2MvdGFibGVceDNlIl0sdGQ6WzMsIlx4M2N0YWJsZVx4M2VceDNjdGJvZHlceDNlXHgzY3RyXHgzZSIsCiJceDNjL3RyXHgzZVx4M2MvdGJvZHlceDNlXHgzYy90YWJsZVx4M2UiXSxfZGVmYXVsdDpzLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYXHgzY2Rpdlx4M2UiLCJceDNjL2Rpdlx4M2UiXX0sWWE9dSh4KS5hcHBlbmRDaGlsZCh4LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtYLm9wdGdyb3VwPVgub3B0aW9uO1gudGJvZHk9WC50Zm9vdD1YLmNvbGdyb3VwPVguY2FwdGlvbj1YLnRoZWFkO1gudGg9WC50ZDtmLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxlLGIpe3ZhciBjLGQsZyxoLGwsbT1mLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihzLmh0bWw1Q2xvbmV8fGYuaXNYTUxEb2MoYSl8fCFwYi50ZXN0KCJceDNjIithLm5vZGVOYW1lKyJceDNlIik/Zz1hLmNsb25lTm9kZSghMCk6KFlhLmlubmVySFRNTD1hLm91dGVySFRNTCxZYS5yZW1vdmVDaGlsZChnPVlhLmZpcnN0Q2hpbGQpKSwhKHMubm9DbG9uZUV2ZW50JiZzLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmCjExIT09YS5ub2RlVHlwZXx8Zi5pc1hNTERvYyhhKSkpZm9yKGM9dChnKSxsPXQoYSksaD0wO251bGwhPShkPWxbaF0pOysraClpZihjW2hdKXt2YXIgbj1jW2hdLHE9dm9pZCAwLHA9dm9pZCAwLEU9dm9pZCAwO2lmKDE9PT1uLm5vZGVUeXBlKXtpZihxPW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwhcy5ub0Nsb25lRXZlbnQmJm5bZi5leHBhbmRvXSl7RT1mLl9kYXRhKG4pO2ZvcihwIGluIEUuZXZlbnRzKWYucmVtb3ZlRXZlbnQobixwLEUuaGFuZGxlKTtuLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pfSJzY3JpcHQiPT09cSYmbi50ZXh0IT09ZC50ZXh0PyhPKG4pLnRleHQ9ZC50ZXh0LFIobikpOiJvYmplY3QiPT09cT8obi5wYXJlbnROb2RlJiYobi5vdXRlckhUTUw9ZC5vdXRlckhUTUwpLHMuaHRtbDVDbG9uZSYmZC5pbm5lckhUTUwmJiFmLnRyaW0obi5pbm5lckhUTUwpJiYobi5pbm5lckhUTUw9ZC5pbm5lckhUTUwpKToiaW5wdXQiPT09cSYmVGEudGVzdChkLnR5cGUpPwoobi5kZWZhdWx0Q2hlY2tlZD1uLmNoZWNrZWQ9ZC5jaGVja2VkLG4udmFsdWUhPT1kLnZhbHVlJiYobi52YWx1ZT1kLnZhbHVlKSk6Im9wdGlvbiI9PT1xP24uZGVmYXVsdFNlbGVjdGVkPW4uc2VsZWN0ZWQ9ZC5kZWZhdWx0U2VsZWN0ZWQ6KCJpbnB1dCI9PT1xfHwidGV4dGFyZWEiPT09cSkmJihuLmRlZmF1bHRWYWx1ZT1kLmRlZmF1bHRWYWx1ZSl9fWlmKGUpaWYoYilmb3IobD1sfHx0KGEpLGM9Y3x8dChnKSxoPTA7bnVsbCE9KGQ9bFtoXSk7aCsrKUsoZCxjW2hdKTtlbHNlIEsoYSxnKTtyZXR1cm4gYz10KGcsInNjcmlwdCIpLDA8Yy5sZW5ndGgmJlkoYywhbSYmdChhLCJzY3JpcHQiKSksZ30sYnVpbGRGcmFnbWVudDpmdW5jdGlvbihhLGUsYixjKXtmb3IodmFyIGQsZyxoLGwsbSxuLHEscD1hLmxlbmd0aCxFPXUoZSksdz1bXSxKPTA7cD5KO0orKylpZihnPWFbSl0sZ3x8MD09PWcpaWYoIm9iamVjdCI9PT1mLnR5cGUoZykpZi5tZXJnZSh3LGcubm9kZVR5cGU/W2ddOmcpO2Vsc2UgaWYoWmIudGVzdChnKSl7bD0KbHx8RS5hcHBlbmRDaGlsZChlLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTttPShyYi5leGVjKGcpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpO3E9WFttXXx8WC5fZGVmYXVsdDtsLmlubmVySFRNTD1xWzFdK2cucmVwbGFjZShxYiwiXHgzYyQxXHgzZVx4M2MvJDJceDNlIikrcVsyXTtmb3IoZD1xWzBdO2QtLTspbD1sLmxhc3RDaGlsZDtpZighcy5sZWFkaW5nV2hpdGVzcGFjZSYmWGEudGVzdChnKSYmdy5wdXNoKGUuY3JlYXRlVGV4dE5vZGUoWGEuZXhlYyhnKVswXSkpLCFzLnRib2R5KWZvcihkPShnPSJ0YWJsZSIhPT1tfHxzYi50ZXN0KGcpPyJceDNjdGFibGVceDNlIiE9PXFbMV18fHNiLnRlc3QoZyk/MDpsOmwuZmlyc3RDaGlsZCkmJmcuY2hpbGROb2Rlcy5sZW5ndGg7ZC0tOylmLm5vZGVOYW1lKG49Zy5jaGlsZE5vZGVzW2RdLCJ0Ym9keSIpJiYhbi5jaGlsZE5vZGVzLmxlbmd0aCYmZy5yZW1vdmVDaGlsZChuKTtmLm1lcmdlKHcsbC5jaGlsZE5vZGVzKTtmb3IobC50ZXh0Q29udGVudD0KIiI7bC5maXJzdENoaWxkOylsLnJlbW92ZUNoaWxkKGwuZmlyc3RDaGlsZCk7bD1FLmxhc3RDaGlsZH1lbHNlIHcucHVzaChlLmNyZWF0ZVRleHROb2RlKGcpKTtsJiZFLnJlbW92ZUNoaWxkKGwpO3MuYXBwZW5kQ2hlY2tlZHx8Zi5ncmVwKHQodywiaW5wdXQiKSxIKTtmb3IoSj0wO2c9d1tKKytdOylpZigoIWN8fC0xPT09Zi5pbkFycmF5KGcsYykpJiYoaD1mLmNvbnRhaW5zKGcub3duZXJEb2N1bWVudCxnKSxsPXQoRS5hcHBlbmRDaGlsZChnKSwic2NyaXB0IiksaCYmWShsKSxiKSlmb3IoZD0wO2c9bFtkKytdOyl0Yi50ZXN0KGcudHlwZXx8IiIpJiZiLnB1c2goZyk7cmV0dXJuIEV9LGNsZWFuRGF0YTpmdW5jdGlvbihhLGUpe2Zvcih2YXIgYixjLGQsZyxoPTAsbD1mLmV4cGFuZG8sbT1mLmNhY2hlLG49cy5kZWxldGVFeHBhbmRvLHE9Zi5ldmVudC5zcGVjaWFsO251bGwhPShiPWFbaF0pO2grKylpZigoZXx8Zi5hY2NlcHREYXRhKGIpKSYmKGQ9YltsXSxnPWQmJm1bZF0pKXtpZihnLmV2ZW50cylmb3IoYyBpbiBnLmV2ZW50cylxW2NdPwpmLmV2ZW50LnJlbW92ZShiLGMpOmYucmVtb3ZlRXZlbnQoYixjLGcuaGFuZGxlKTttW2RdJiYoZGVsZXRlIG1bZF0sbj9kZWxldGUgYltsXTp0eXBlb2YgYi5yZW1vdmVBdHRyaWJ1dGUhPT1XP2IucmVtb3ZlQXR0cmlidXRlKGwpOmJbbF09bnVsbCxqYS5wdXNoKGQpKX19fSk7Zi5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGNhKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/Zi50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8eCkuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihhKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8dih0aGlzLGEpLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsCmZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgZT12KHRoaXMsYSk7ZS5pbnNlcnRCZWZvcmUoYSxlLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsZSl7Zm9yKHZhciBiLGM9YT9mLmZpbHRlcihhLHRoaXMpOnRoaXMsZD0wO251bGwhPShiPWNbZF0pO2QrKyllfHwxIT09Yi5ub2RlVHlwZXx8Zi5jbGVhbkRhdGEodChiKSksYi5wYXJlbnROb2RlJiYKKGUmJmYuY29udGFpbnMoYi5vd25lckRvY3VtZW50LGIpJiZZKHQoYiwic2NyaXB0IikpLGIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGU9MDtudWxsIT0oYT10aGlzW2VdKTtlKyspe2ZvcigxPT09YS5ub2RlVHlwZSYmZi5jbGVhbkRhdGEodChhLCExKSk7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7YS5vcHRpb25zJiZmLm5vZGVOYW1lKGEsInNlbGVjdCIpJiYoYS5vcHRpb25zLmxlbmd0aD0wKX1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gYT1udWxsPT1hPyExOmEsZT1udWxsPT1lP2E6ZSx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBmLmNsb25lKHRoaXMsYSxlKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBjYSh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT0KYi5ub2RlVHlwZT9iLmlubmVySFRNTC5yZXBsYWNlKFliLCIiKTp2b2lkIDA7aWYoISgic3RyaW5nIiE9dHlwZW9mIGF8fCRiLnRlc3QoYSl8fCFzLmh0bWxTZXJpYWxpemUmJnBiLnRlc3QoYSl8fCFzLmxlYWRpbmdXaGl0ZXNwYWNlJiZYYS50ZXN0KGEpfHxYWyhyYi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKHFiLCJceDNjJDFceDNlXHgzYy8kMlx4M2UiKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihmLmNsZWFuRGF0YSh0KGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZyl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzWzBdO3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlKXthPXRoaXMucGFyZW50Tm9kZTtmLmNsZWFuRGF0YSh0KHRoaXMpKTsKYSYmYS5yZXBsYWNlQ2hpbGQoZSx0aGlzKX0pLGEmJihhLmxlbmd0aHx8YS5ub2RlVHlwZSk/dGhpczp0aGlzLnJlbW92ZSgpfSxkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmVtb3ZlKGEsITApfSxkb21NYW5pcDpmdW5jdGlvbihhLGUpe2E9aWEuYXBwbHkoW10sYSk7dmFyIGIsYyxkLGcsaD0wLGw9dGhpcy5sZW5ndGgsbT10aGlzLG49bC0xLHE9YVswXSxwPWYuaXNGdW5jdGlvbihxKTtpZihwfHwxPGwmJiJzdHJpbmciPT10eXBlb2YgcSYmIXMuY2hlY2tDbG9uZSYmYWMudGVzdChxKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGYpe3ZhciBiPW0uZXEoZik7cCYmKGFbMF09cS5jYWxsKHRoaXMsZixiLmh0bWwoKSkpO2IuZG9tTWFuaXAoYSxlKX0pO2lmKGwmJihnPWYuYnVpbGRGcmFnbWVudChhLHRoaXNbMF0ub3duZXJEb2N1bWVudCwhMSx0aGlzKSxiPWcuZmlyc3RDaGlsZCwxPT09Zy5jaGlsZE5vZGVzLmxlbmd0aCYmKGc9YiksYikpe2Q9Zi5tYXAodChnLCJzY3JpcHQiKSwKTyk7Zm9yKGM9ZC5sZW5ndGg7bD5oO2grKyliPWcsaCE9PW4mJihiPWYuY2xvbmUoYiwhMCwhMCksYyYmZi5tZXJnZShkLHQoYiwic2NyaXB0IikpKSxlLmNhbGwodGhpc1toXSxiLGgpO2lmKGMpZm9yKGc9ZFtkLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LGYubWFwKGQsUiksaD0wO2M+aDtoKyspYj1kW2hdLHRiLnRlc3QoYi50eXBlfHwiIikmJiFmLl9kYXRhKGIsImdsb2JhbEV2YWwiKSYmZi5jb250YWlucyhnLGIpJiYoYi5zcmM/Zi5fZXZhbFVybCYmZi5fZXZhbFVybChiLnNyYyk6Zi5nbG9iYWxFdmFsKChiLnRleHR8fGIudGV4dENvbnRlbnR8fGIuaW5uZXJIVE1MfHwiIikucmVwbGFjZShiYywiIikpKTtnPWI9bnVsbH1yZXR1cm4gdGhpc319KTtmLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGUpe2YuZm5bYV09CmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9W10sZD1mKGEpLGc9ZC5sZW5ndGgtMTtnPj1iO2IrKylhPWI9PT1nP3RoaXM6dGhpcy5jbG9uZSghMCksZihkW2JdKVtlXShhKSxWYS5hcHBseShjLGEuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhjKX19KTt2YXIgbGEsZ2I9e307IWZ1bmN0aW9uKCl7dmFyIGE7cy5zaHJpbmtXcmFwQmxvY2tzPWZ1bmN0aW9uKCl7aWYobnVsbCE9YSlyZXR1cm4gYTthPSExO3ZhciBlLGYsYjtyZXR1cm4gZj14LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sZiYmZi5zdHlsZT8oZT14LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGI9eC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixmLmFwcGVuZENoaWxkKGIpLmFwcGVuZENoaWxkKGUpLHR5cGVvZiBlLnN0eWxlLnpvb20hPT1XJiYoZS5zdHlsZS5jc3NUZXh0PQoiLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsZS5hcHBlbmRDaGlsZCh4LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zdHlsZS53aWR0aD0iNXB4IixhPTMhPT1lLm9mZnNldFdpZHRoKSxmLnJlbW92ZUNoaWxkKGIpLGEpOnZvaWQgMH19KCk7dmFyIHViPS9ebWFyZ2luLyxIYT1SZWdFeHAoIl4oIitOYSsiKSg/IXB4KVthLXolXSskIiwiaSIpLGVhLG1hLGNjPS9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLztiLmdldENvbXB1dGVkU3R5bGU/KGVhPWZ1bmN0aW9uKGEpe3JldHVybiBhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcub3BlbmVyP2Eub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk6Yi5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCl9LAptYT1mdW5jdGlvbihhLGUsYil7dmFyIGMsZCxnLGgsbD1hLnN0eWxlO3JldHVybiBiPWJ8fGVhKGEpLGg9Yj9iLmdldFByb3BlcnR5VmFsdWUoZSl8fGJbZV06dm9pZCAwLGImJigiIiE9PWh8fGYuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoaD1mLnN0eWxlKGEsZSkpLEhhLnRlc3QoaCkmJnViLnRlc3QoZSkmJihjPWwud2lkdGgsZD1sLm1pbldpZHRoLGc9bC5tYXhXaWR0aCxsLm1pbldpZHRoPWwubWF4V2lkdGg9bC53aWR0aD1oLGg9Yi53aWR0aCxsLndpZHRoPWMsbC5taW5XaWR0aD1kLGwubWF4V2lkdGg9ZykpLHZvaWQgMD09PWg/aDpoKyIifSk6eC5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoZWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3VycmVudFN0eWxlfSxtYT1mdW5jdGlvbihhLGUsZil7dmFyIGIsYyxkLGcsaD1hLnN0eWxlO3JldHVybiBmPWZ8fGVhKGEpLGc9Zj9mW2VdOnZvaWQgMCxudWxsPT1nJiZoJiZoW2VdJiYoZz1oW2VdKSxIYS50ZXN0KGcpJiYKIWNjLnRlc3QoZSkmJihiPWgubGVmdCxjPWEucnVudGltZVN0eWxlLGQ9YyYmYy5sZWZ0LGQmJihjLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1lPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1iLGQmJihjLmxlZnQ9ZCkpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTshZnVuY3Rpb24oKXt2YXIgYSxlLGMsZCxnLGgsbDtpZihhPXguY3JlYXRlRWxlbWVudCgiZGl2IiksYS5pbm5lckhUTUw9IiAgXHgzY2xpbmsvXHgzZVx4M2N0YWJsZVx4M2VceDNjL3RhYmxlXHgzZVx4M2NhIGhyZWZceDNkJy9hJ1x4M2VhXHgzYy9hXHgzZVx4M2NpbnB1dCB0eXBlXHgzZCdjaGVja2JveCcvXHgzZSIsYz1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sZT1jJiZjLnN0eWxlKXtlLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSI7cy5vcGFjaXR5PSIwLjUiPT09ZS5vcGFjaXR5O3MuY3NzRmxvYXQ9ISFlLmNzc0Zsb2F0O2Euc3R5bGUuYmFja2dyb3VuZENsaXA9CiJjb250ZW50LWJveCI7YS5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiO3MuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1hLnN0eWxlLmJhY2tncm91bmRDbGlwO3MuYm94U2l6aW5nPSIiPT09ZS5ib3hTaXppbmd8fCIiPT09ZS5Nb3pCb3hTaXppbmd8fCIiPT09ZS5XZWJraXRCb3hTaXppbmc7Zi5leHRlbmQocyx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWgmJm0oKSxofSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1nJiZtKCksZ30scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1kJiZtKCksZH0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1sJiZtKCksbH19KTt2YXIgbT1mdW5jdGlvbigpe3ZhciBhLGUsZixjOyhlPXguZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkmJmUuc3R5bGUmJihhPXguY3JlYXRlRWxlbWVudCgiZGl2IiksCmY9eC5jcmVhdGVFbGVtZW50KCJkaXYiKSxmLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixlLmFwcGVuZENoaWxkKGYpLmFwcGVuZENoaWxkKGEpLGEuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxJTt0b3A6MSU7Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGUiLGQ9Zz0hMSxsPSEwLGIuZ2V0Q29tcHV0ZWRTdHlsZSYmKGQ9IjElIiE9PShiLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKXx8e30pLnRvcCxnPSI0cHgiPT09KGIuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxjPWEuYXBwZW5kQ2hpbGQoeC5jcmVhdGVFbGVtZW50KCJkaXYiKSksYy5zdHlsZS5jc3NUZXh0PQphLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsYy5zdHlsZS5tYXJnaW5SaWdodD1jLnN0eWxlLndpZHRoPSIwIixhLnN0eWxlLndpZHRoPSIxcHgiLGw9IXBhcnNlRmxvYXQoKGIuZ2V0Q29tcHV0ZWRTdHlsZShjLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpLGEucmVtb3ZlQ2hpbGQoYykpLGEuaW5uZXJIVE1MPSJceDNjdGFibGVceDNlXHgzY3RyXHgzZVx4M2N0ZFx4M2VceDNjL3RkXHgzZVx4M2N0ZFx4M2V0XHgzYy90ZFx4M2VceDNjL3RyXHgzZVx4M2MvdGFibGVceDNlIixjPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIiksY1swXS5zdHlsZS5jc3NUZXh0PSJtYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjA7ZGlzcGxheTpub25lIixoPTA9PT1jWzBdLm9mZnNldEhlaWdodCwKaCYmKGNbMF0uc3R5bGUuZGlzcGxheT0iIixjWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGg9MD09PWNbMF0ub2Zmc2V0SGVpZ2h0KSxlLnJlbW92ZUNoaWxkKGYpKX19fSgpO2Yuc3dhcD1mdW5jdGlvbihhLGUsZixiKXt2YXIgYyxkPXt9O2ZvcihjIGluIGUpZFtjXT1hLnN0eWxlW2NdLGEuc3R5bGVbY109ZVtjXTtmPWYuYXBwbHkoYSxifHxbXSk7Zm9yKGMgaW4gZSlhLnN0eWxlW2NdPWRbY107cmV0dXJuIGZ9O3ZhciBaYT0vYWxwaGFcKFteKV0qXCkvaSxkYz0vb3BhY2l0eVxzKj1ccyooW14pXSopLyxlYz0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sTWI9UmVnRXhwKCJeKCIrTmErIikoLiopJCIsImkiKSxmYz1SZWdFeHAoIl4oWystXSlceDNkKCIrTmErIikiLCJpIiksZ2M9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LHZiPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxoYj1bIldlYmtpdCIsCiJPIiwiTW96IiwibXMiXTtmLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGUpe2lmKGUpe3ZhciBmPW1hKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWY/IjEiOmZ9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6cy5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxlLGIsYyl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZCxnLGgsbD1mLmNhbWVsQ2FzZShlKSxtPWEuc3R5bGU7aWYoZT1mLmNzc1Byb3BzW2xdfHwoZi5jc3NQcm9wc1tsXT1HYShtLGwpKSxoPWYuY3NzSG9va3NbZV18fGYuY3NzSG9va3NbbF0sCnZvaWQgMD09PWIpcmV0dXJuIGgmJiJnZXQiaW4gaCYmdm9pZCAwIT09KGQ9aC5nZXQoYSwhMSxjKSk/ZDptW2VdO2lmKGc9dHlwZW9mIGIsInN0cmluZyI9PT1nJiYoZD1mYy5leGVjKGIpKSYmKGI9KGRbMV0rMSkqZFsyXStwYXJzZUZsb2F0KGYuY3NzKGEsZSkpLGc9Im51bWJlciIpLG51bGwhPWImJmI9PT1iJiYoIm51bWJlciIhPT1nfHxmLmNzc051bWJlcltsXXx8KGIrPSJweCIpLHMuY2xlYXJDbG9uZVN0eWxlfHwiIiE9PWJ8fDAhPT1lLmluZGV4T2YoImJhY2tncm91bmQiKXx8KG1bZV09ImluaGVyaXQiKSwhKGgmJiJzZXQiaW4gaCYmdm9pZCAwPT09KGI9aC5zZXQoYSxiLGMpKSkpKXRyeXttW2VdPWJ9Y2F0Y2gobil7fX19LGNzczpmdW5jdGlvbihhLGUsYixjKXt2YXIgZCxnLGgsbD1mLmNhbWVsQ2FzZShlKTtyZXR1cm4gZT1mLmNzc1Byb3BzW2xdfHwoZi5jc3NQcm9wc1tsXT1HYShhLnN0eWxlLGwpKSxoPWYuY3NzSG9va3NbZV18fGYuY3NzSG9va3NbbF0saCYmImdldCJpbgpoJiYoZz1oLmdldChhLCEwLGIpKSx2b2lkIDA9PT1nJiYoZz1tYShhLGUsYykpLCJub3JtYWwiPT09ZyYmZSBpbiB2YiYmKGc9dmJbZV0pLCIiPT09Ynx8Yj8oZD1wYXJzZUZsb2F0KGcpLCEwPT09Ynx8Zi5pc051bWVyaWMoZCk/ZHx8MDpnKTpnfX0pO2YuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxlKXtmLmNzc0hvb2tzW2VdPXtnZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiP2VjLnRlc3QoZi5jc3MoYSwiZGlzcGxheSIpKSYmMD09PWEub2Zmc2V0V2lkdGg/Zi5zd2FwKGEsZ2MsZnVuY3Rpb24oKXtyZXR1cm4gQ2EoYSxlLGMpfSk6Q2EoYSxlLGMpOnZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jJiZlYShhKTtyZXR1cm4gaWIoYSxiLGM/QmEoYSxlLGMscy5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PWYuY3NzKGEsImJveFNpemluZyIsITEsZCksZCk6MCl9fX0pO3Mub3BhY2l0eXx8KGYuY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsCmUpe3JldHVybiBkYy50ZXN0KChlJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/MC4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6ZT8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGUpe3ZhciBiPWEuc3R5bGUsYz1hLmN1cnJlbnRTdHlsZSxkPWYuaXNOdW1lcmljKGUpPyJhbHBoYShvcGFjaXR5XHgzZCIrMTAwKmUrIikiOiIiLGc9YyYmYy5maWx0ZXJ8fGIuZmlsdGVyfHwiIjtiLnpvb209MTsoMTw9ZXx8IiI9PT1lKSYmIiI9PT1mLnRyaW0oZy5yZXBsYWNlKFphLCIiKSkmJmIucmVtb3ZlQXR0cmlidXRlJiYoYi5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCIiPT09ZXx8YyYmIWMuZmlsdGVyKXx8KGIuZmlsdGVyPVphLnRlc3QoZyk/Zy5yZXBsYWNlKFphLGQpOmcrIiAiK2QpfX0pO2YuY3NzSG9va3MubWFyZ2luUmlnaHQ9YmEocy5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsZSl7cmV0dXJuIGU/Zi5zd2FwKGEsCntkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxtYSxbYSwibWFyZ2luUmlnaHQiXSk6dm9pZCAwfSk7Zi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxlKXtmLmNzc0hvb2tzW2ErZV09e2V4cGFuZDpmdW5jdGlvbihmKXt2YXIgYj0wLGM9e307Zm9yKGY9InN0cmluZyI9PXR5cGVvZiBmP2Yuc3BsaXQoIiAiKTpbZl07ND5iO2IrKyljW2Era2FbYl0rZV09ZltiXXx8ZltiLTJdfHxmWzBdO3JldHVybiBjfX07dWIudGVzdChhKXx8KGYuY3NzSG9va3NbYStlXS5zZXQ9aWIpfSk7Zi5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGUpe3JldHVybiBjYSh0aGlzLGZ1bmN0aW9uKGEsZSxiKXt2YXIgYyxkPXt9LGc9MDtpZihmLmlzQXJyYXkoZSkpe2I9ZWEoYSk7Zm9yKGM9ZS5sZW5ndGg7Yz5nO2crKylkW2VbZ11dPWYuY3NzKGEsZVtnXSwhMSxiKTtyZXR1cm4gZH1yZXR1cm4gdm9pZCAwIT09Yj9mLnN0eWxlKGEsZSxiKTpmLmNzcyhhLGUpfSwKYSxlLDE8YXJndW1lbnRzLmxlbmd0aCl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gQWEodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gQWEodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7d2EodGhpcyk/Zih0aGlzKS5zaG93KCk6Zih0aGlzKS5oaWRlKCl9KX19KTtmLlR3ZWVuPUU7RS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkUsaW5pdDpmdW5jdGlvbihhLGUsYixjLGQsZyl7dGhpcy5lbGVtPWE7dGhpcy5wcm9wPWI7dGhpcy5lYXNpbmc9ZHx8InN3aW5nIjt0aGlzLm9wdGlvbnM9ZTt0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCk7dGhpcy5lbmQ9Yzt0aGlzLnVuaXQ9Z3x8KGYuY3NzTnVtYmVyW2JdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1FLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKToKRS5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGUsYj1FLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLnBvcz1lPXRoaXMub3B0aW9ucy5kdXJhdGlvbj9mLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTphLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSplK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGImJmIuc2V0P2Iuc2V0KHRoaXMpOkUucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX07RS5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9RS5wcm90b3R5cGU7RS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGU7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPwooZT1mLmNzcyhhLmVsZW0sYS5wcm9wLCIiKSxlJiYiYXV0byIhPT1lP2U6MCk6YS5lbGVtW2EucHJvcF19LHNldDpmdW5jdGlvbihhKXtmLmZ4LnN0ZXBbYS5wcm9wXT9mLmZ4LnN0ZXBbYS5wcm9wXShhKTphLmVsZW0uc3R5bGUmJihudWxsIT1hLmVsZW0uc3R5bGVbZi5jc3NQcm9wc1thLnByb3BdXXx8Zi5jc3NIb29rc1thLnByb3BdKT9mLnN0eWxlKGEuZWxlbSxhLnByb3AsYS5ub3crYS51bml0KTphLmVsZW1bYS5wcm9wXT1hLm5vd319fTtFLnByb3BIb29rcy5zY3JvbGxUb3A9RS5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fTtmLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4gMC41LU1hdGguY29zKGEqTWF0aC5QSSkvMn19O2YuZng9RS5wcm90b3R5cGUuaW5pdDtmLmZ4LnN0ZXA9e307CnZhciBzYSxPYSxoYz0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sd2I9UmVnRXhwKCJeKD86KFsrLV0pXHgzZHwpKCIrTmErIikoW2EteiVdKikkIiwiaSIpLGljPS9xdWV1ZUhvb2tzJC8sSWE9W2Z1bmN0aW9uKGEsZSxiKXt2YXIgYyxkLGcsaCxsLG0sbixxPXRoaXMscD17fSx0PWEuc3R5bGUsRT1hLm5vZGVUeXBlJiZ3YShhKSx3PWYuX2RhdGEoYSwiZnhzaG93Iik7Yi5xdWV1ZXx8KGg9Zi5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsbD1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8bCgpfSksaC51bnF1ZXVlZCsrLHEuYWx3YXlzKGZ1bmN0aW9uKCl7cS5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS07Zi5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKTsxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gZXx8IndpZHRoImluIGUpJiYoYi5vdmVyZmxvdz1bdC5vdmVyZmxvdywKdC5vdmVyZmxvd1gsdC5vdmVyZmxvd1ldLG09Zi5jc3MoYSwiZGlzcGxheSIpLG49Im5vbmUiPT09bT9mLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8dmEoYS5ub2RlTmFtZSk6bSwiaW5saW5lIj09PW4mJiJub25lIj09PWYuY3NzKGEsImZsb2F0IikmJihzLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09dmEoYS5ub2RlTmFtZSk/dC56b29tPTE6dC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSk7Yi5vdmVyZmxvdyYmKHQub3ZlcmZsb3c9ImhpZGRlbiIscy5zaHJpbmtXcmFwQmxvY2tzKCl8fHEuYWx3YXlzKGZ1bmN0aW9uKCl7dC5vdmVyZmxvdz1iLm92ZXJmbG93WzBdO3Qub3ZlcmZsb3dYPWIub3ZlcmZsb3dbMV07dC5vdmVyZmxvd1k9Yi5vdmVyZmxvd1syXX0pKTtmb3IoYyBpbiBlKWlmKGQ9ZVtjXSxoYy5leGVjKGQpKXtpZihkZWxldGUgZVtjXSxnPWd8fCJ0b2dnbGUiPT09ZCxkPT09KEU/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWR8fCF3fHx2b2lkIDA9PT0Kd1tjXSljb250aW51ZTtFPSEwfXBbY109dyYmd1tjXXx8Zi5zdHlsZShhLGMpfWVsc2UgbT12b2lkIDA7aWYoZi5pc0VtcHR5T2JqZWN0KHApKSJpbmxpbmUiPT09KCJub25lIj09PW0/dmEoYS5ub2RlTmFtZSk6bSkmJih0LmRpc3BsYXk9bSk7ZWxzZSBmb3IoYyBpbiB3PyJoaWRkZW4iaW4gdyYmKEU9dy5oaWRkZW4pOnc9Zi5fZGF0YShhLCJmeHNob3ciLHt9KSxnJiYody5oaWRkZW49IUUpLEU/ZihhKS5zaG93KCk6cS5kb25lKGZ1bmN0aW9uKCl7ZihhKS5oaWRlKCl9KSxxLmRvbmUoZnVuY3Rpb24oKXt2YXIgZTtmLl9yZW1vdmVEYXRhKGEsImZ4c2hvdyIpO2ZvcihlIGluIHApZi5zdHlsZShhLGUscFtlXSl9KSxwKWU9VShFP3dbY106MCxjLHEpLGMgaW4gd3x8KHdbY109ZS5zdGFydCxFJiYoZS5lbmQ9ZS5zdGFydCxlLnN0YXJ0PSJ3aWR0aCI9PT1jfHwiaGVpZ2h0Ij09PWM/MTowKSl9XSxEYT17IioiOltmdW5jdGlvbihhLGUpe3ZhciBiPXRoaXMuY3JlYXRlVHdlZW4oYSxlKSwKYz1iLmN1cigpLGQ9d2IuZXhlYyhlKSxnPWQmJmRbM118fChmLmNzc051bWJlclthXT8iIjoicHgiKSxoPShmLmNzc051bWJlclthXXx8InB4IiE9PWcmJitjKSYmd2IuZXhlYyhmLmNzcyhiLmVsZW0sYSkpLGw9MSxtPTIwO2lmKGgmJmhbM10hPT1nKXtnPWd8fGhbM107ZD1kfHxbXTtoPStjfHwxO2RvIGw9bHx8Ii41IixoLz1sLGYuc3R5bGUoYi5lbGVtLGEsaCtnKTt3aGlsZShsIT09KGw9Yi5jdXIoKS9jKSYmMSE9PWwmJi0tbSl9cmV0dXJuIGQmJihoPWIuc3RhcnQ9K2h8fCtjfHwwLGIudW5pdD1nLGIuZW5kPWRbMV0/aCsoZFsxXSsxKSpkWzJdOitkWzJdKSxifV19O2YuQW5pbWF0aW9uPWYuZXh0ZW5kKEVhLHt0d2VlbmVyOmZ1bmN0aW9uKGEsZSl7Zi5pc0Z1bmN0aW9uKGEpPyhlPWEsYT1bIioiXSk6YT1hLnNwbGl0KCIgIik7Zm9yKHZhciBiLGM9MCxkPWEubGVuZ3RoO2Q+YztjKyspYj1hW2NdLERhW2JdPURhW2JdfHxbXSxEYVtiXS51bnNoaWZ0KGUpfSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSwKZSl7ZT9JYS51bnNoaWZ0KGEpOklhLnB1c2goYSl9fSk7Zi5zcGVlZD1mdW5jdGlvbihhLGUsYil7dmFyIGM9YSYmIm9iamVjdCI9PXR5cGVvZiBhP2YuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpifHwhYiYmZXx8Zi5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmImJmV8fGUmJiFmLmlzRnVuY3Rpb24oZSkmJmV9O3JldHVybiBjLmR1cmF0aW9uPWYuZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBjLmR1cmF0aW9uP2MuZHVyYXRpb246Yy5kdXJhdGlvbiBpbiBmLmZ4LnNwZWVkcz9mLmZ4LnNwZWVkc1tjLmR1cmF0aW9uXTpmLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09Yy5xdWV1ZXx8ITA9PT1jLnF1ZXVlKSYmKGMucXVldWU9ImZ4IiksYy5vbGQ9Yy5jb21wbGV0ZSxjLmNvbXBsZXRlPWZ1bmN0aW9uKCl7Zi5pc0Z1bmN0aW9uKGMub2xkKSYmYy5vbGQuY2FsbCh0aGlzKTtjLnF1ZXVlJiZmLmRlcXVldWUodGhpcyxjLnF1ZXVlKX0sY307Zi5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLAplLGYsYil7cmV0dXJuIHRoaXMuZmlsdGVyKHdhKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmV9LGEsZixiKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGUsYixjKXt2YXIgZD1mLmlzRW1wdHlPYmplY3QoYSksZz1mLnNwZWVkKGUsYixjKTtlPWZ1bmN0aW9uKCl7dmFyIGU9RWEodGhpcyxmLmV4dGVuZCh7fSxhKSxnKTsoZHx8Zi5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJmUuc3RvcCghMCl9O3JldHVybiBlLmZpbmlzaD1lLGR8fCExPT09Zy5xdWV1ZT90aGlzLmVhY2goZSk6dGhpcy5xdWV1ZShnLnF1ZXVlLGUpfSxzdG9wOmZ1bmN0aW9uKGEsZSxiKXt2YXIgYz1mdW5jdGlvbihhKXt2YXIgZT1hLnN0b3A7ZGVsZXRlIGEuc3RvcDtlKGIpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWUsZT1hLGE9dm9pZCAwKSxlJiYhMSE9PWEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ITAsZD1udWxsIT0KYSYmYSsicXVldWVIb29rcyIsZz1mLnRpbWVycyxoPWYuX2RhdGEodGhpcyk7aWYoZCloW2RdJiZoW2RdLnN0b3AmJmMoaFtkXSk7ZWxzZSBmb3IoZCBpbiBoKWhbZF0mJmhbZF0uc3RvcCYmaWMudGVzdChkKSYmYyhoW2RdKTtmb3IoZD1nLmxlbmd0aDtkLS07KWdbZF0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmdbZF0ucXVldWUhPT1hfHwoZ1tkXS5hbmltLnN0b3AoYiksZT0hMSxnLnNwbGljZShkLDEpKTshZSYmYnx8Zi5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsYj1mLl9kYXRhKHRoaXMpLGM9YlthKyJxdWV1ZSJdO2U9YlthKyJxdWV1ZUhvb2tzIl07dmFyIGQ9Zi50aW1lcnMsZz1jP2MubGVuZ3RoOjA7Yi5maW5pc2g9ITA7Zi5xdWV1ZSh0aGlzLGEsW10pO2UmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCk7Zm9yKGU9ZC5sZW5ndGg7ZS0tOylkW2VdLmVsZW09PT0KdGhpcyYmZFtlXS5xdWV1ZT09PWEmJihkW2VdLmFuaW0uc3RvcCghMCksZC5zcGxpY2UoZSwxKSk7Zm9yKGU9MDtnPmU7ZSsrKWNbZV0mJmNbZV0uZmluaXNoJiZjW2VdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBiLmZpbmlzaH0pfX0pO2YuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oYSxlKXt2YXIgYj1mLmZuW2VdO2YuZm5bZV09ZnVuY3Rpb24oYSxmLGMpe3JldHVybiBudWxsPT1hfHwiYm9vbGVhbiI9PXR5cGVvZiBhP2IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShQKGUsITApLGEsZixjKX19KTtmLmVhY2goe3NsaWRlRG93bjpQKCJzaG93Iiksc2xpZGVVcDpQKCJoaWRlIiksc2xpZGVUb2dnbGU6UCgidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGUpe2YuZm5bYV09ZnVuY3Rpb24oYSxiLGYpe3JldHVybiB0aGlzLmFuaW1hdGUoZSwKYSxiLGYpfX0pO2YudGltZXJzPVtdO2YuZngudGljaz1mdW5jdGlvbigpe3ZhciBhLGU9Zi50aW1lcnMsYj0wO2ZvcihzYT1mLm5vdygpO2I8ZS5sZW5ndGg7YisrKWE9ZVtiXSxhKCl8fGVbYl0hPT1hfHxlLnNwbGljZShiLS0sMSk7ZS5sZW5ndGh8fGYuZnguc3RvcCgpO3NhPXZvaWQgMH07Zi5meC50aW1lcj1mdW5jdGlvbihhKXtmLnRpbWVycy5wdXNoKGEpO2EoKT9mLmZ4LnN0YXJ0KCk6Zi50aW1lcnMucG9wKCl9O2YuZnguaW50ZXJ2YWw9MTM7Zi5meC5zdGFydD1mdW5jdGlvbigpe09hfHwoT2E9c2V0SW50ZXJ2YWwoZi5meC50aWNrLGYuZnguaW50ZXJ2YWwpKX07Zi5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChPYSk7T2E9bnVsbH07Zi5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH07Zi5mbi5kZWxheT1mdW5jdGlvbihhLGUpe3JldHVybiBhPWYuZng/Zi5meC5zcGVlZHNbYV18fGE6YSxlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsCmIpe3ZhciBmPXNldFRpbWVvdXQoZSxhKTtiLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZil9fSl9OyhmdW5jdGlvbigpe3ZhciBhLGUsYixmLGM7ZT14LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Uuc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0Iik7ZS5pbm5lckhUTUw9IiAgXHgzY2xpbmsvXHgzZVx4M2N0YWJsZVx4M2VceDNjL3RhYmxlXHgzZVx4M2NhIGhyZWZceDNkJy9hJ1x4M2VhXHgzYy9hXHgzZVx4M2NpbnB1dCB0eXBlXHgzZCdjaGVja2JveCcvXHgzZSI7Zj1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07Yj14LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2M9Yi5hcHBlbmRDaGlsZCh4LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthPWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF07Zi5zdHlsZS5jc3NUZXh0PSJ0b3A6MXB4IjtzLmdldFNldEF0dHJpYnV0ZT0idCIhPT1lLmNsYXNzTmFtZTtzLnN0eWxlPS90b3AvLnRlc3QoZi5nZXRBdHRyaWJ1dGUoInN0eWxlIikpOwpzLmhyZWZOb3JtYWxpemVkPSIvYSI9PT1mLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3MuY2hlY2tPbj0hIWEudmFsdWU7cy5vcHRTZWxlY3RlZD1jLnNlbGVjdGVkO3MuZW5jdHlwZT0hIXguY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGU7Yi5kaXNhYmxlZD0hMDtzLm9wdERpc2FibGVkPSFjLmRpc2FibGVkO2E9eC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Euc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpO3MuaW5wdXQ9IiI9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKTthLnZhbHVlPSJ0IjthLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIik7cy5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KSgpO3ZhciBqYz0vXHIvZztmLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBlLGIsYyxkPXRoaXNbMF07aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz1mLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBkOzE9PT10aGlzLm5vZGVUeXBlJiYoZD1jP2EuY2FsbCh0aGlzLApiLGYodGhpcykudmFsKCkpOmEsbnVsbD09ZD9kPSIiOiJudW1iZXIiPT10eXBlb2YgZD9kKz0iIjpmLmlzQXJyYXkoZCkmJihkPWYubWFwKGQsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxlPWYudmFsSG9va3NbdGhpcy50eXBlXXx8Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGUmJiJzZXQiaW4gZSYmdm9pZCAwIT09ZS5zZXQodGhpcyxkLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1kKSl9KTtpZihkKXJldHVybiBlPWYudmFsSG9va3NbZC50eXBlXXx8Zi52YWxIb29rc1tkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGUmJiJnZXQiaW4gZSYmdm9pZCAwIT09KGI9ZS5nZXQoZCwidmFsdWUiKSk/YjooYj1kLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYj9iLnJlcGxhY2UoamMsIiIpOm51bGw9PWI/IiI6Yil9fSk7Zi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgZT1mLmZpbmQuYXR0cihhLCJ2YWx1ZSIpOwpyZXR1cm4gbnVsbCE9ZT9lOmYudHJpbShmLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBlLGI9YS5vcHRpb25zLGM9YS5zZWxlY3RlZEluZGV4LGQ9InNlbGVjdC1vbmUiPT09YS50eXBlfHwwPmMsZz1kP251bGw6W10saD1kP2MrMTpiLmxlbmd0aCxsPTA+Yz9oOmQ/YzowO2g+bDtsKyspaWYoZT1iW2xdLCEoIWUuc2VsZWN0ZWQmJmwhPT1jfHwocy5vcHREaXNhYmxlZD9lLmRpc2FibGVkOm51bGwhPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSl8fGUucGFyZW50Tm9kZS5kaXNhYmxlZCYmZi5ub2RlTmFtZShlLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZihhPWYoZSkudmFsKCksZClyZXR1cm4gYTtnLnB1c2goYSl9cmV0dXJuIGd9LHNldDpmdW5jdGlvbihhLGUpe2Zvcih2YXIgYixjLGQ9YS5vcHRpb25zLGc9Zi5tYWtlQXJyYXkoZSksaD1kLmxlbmd0aDtoLS07KWlmKGM9ZFtoXSwwPD1mLmluQXJyYXkoZi52YWxIb29rcy5vcHRpb24uZ2V0KGMpLApnKSl0cnl7Yy5zZWxlY3RlZD1iPSEwfWNhdGNoKGwpe2Muc2Nyb2xsSGVpZ2h0fWVsc2UgYy5zZWxlY3RlZD0hMTtyZXR1cm4gYnx8KGEuc2VsZWN0ZWRJbmRleD0tMSksZH19fX0pO2YuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihhLGUpe3JldHVybiBmLmlzQXJyYXkoZSk/YS5jaGVja2VkPTA8PWYuaW5BcnJheShmKGEpLnZhbCgpLGUpOnZvaWQgMH19O3MuY2hlY2tPbnx8KGYudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjphLnZhbHVlfSl9KTt2YXIgdWEseGIsaGE9Zi5leHByLmF0dHJIYW5kbGUsJGE9L14oPzpjaGVja2VkfHNlbGVjdGVkKSQvaSxxYT1zLmdldFNldEF0dHJpYnV0ZSxQYT1zLmlucHV0O2YuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGNhKHRoaXMsZi5hdHRyLGEsZSwxPGFyZ3VtZW50cy5sZW5ndGgpfSwKcmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KTtmLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGUsYil7dmFyIGMsZCxnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Vz9mLnByb3AoYSxlLGIpOigxPT09ZyYmZi5pc1hNTERvYyhhKXx8KGU9ZS50b0xvd2VyQ2FzZSgpLGM9Zi5hdHRySG9va3NbZV18fChmLmV4cHIubWF0Y2guYm9vbC50ZXN0KGUpP3hiOnVhKSksdm9pZCAwPT09Yj9jJiYiZ2V0ImluIGMmJm51bGwhPT0oZD1jLmdldChhLGUpKT9kOihkPWYuZmluZC5hdHRyKGEsZSksbnVsbD09ZD92b2lkIDA6ZCk6bnVsbCE9PWI/YyYmInNldCJpbiBjJiZ2b2lkIDAhPT0oZD1jLnNldChhLGIsZSkpP2Q6KGEuc2V0QXR0cmlidXRlKGUsYisiIiksYik6dm9pZCBmLnJlbW92ZUF0dHIoYSxlKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSwKZSl7dmFyIGIsYyxkPTAsZz1lJiZlLm1hdGNoKFEpO2lmKGcmJjE9PT1hLm5vZGVUeXBlKWZvcig7Yj1nW2QrK107KWM9Zi5wcm9wRml4W2JdfHxiLGYuZXhwci5tYXRjaC5ib29sLnRlc3QoYik/UGEmJnFhfHwhJGEudGVzdChiKT9hW2NdPSExOmFbZi5jYW1lbENhc2UoImRlZmF1bHQtIitiKV09YVtjXT0hMTpmLmF0dHIoYSxiLCIiKSxhLnJlbW92ZUF0dHJpYnV0ZShxYT9iOmMpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGUpe2lmKCFzLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1lJiZmLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBiPWEudmFsdWU7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBlIixlKSxiJiYoYS52YWx1ZT1iKSxlfX19fX0pO3hiPXtzZXQ6ZnVuY3Rpb24oYSxlLGIpe3JldHVybiExPT09ZT9mLnJlbW92ZUF0dHIoYSxiKTpQYSYmcWF8fCEkYS50ZXN0KGIpP2Euc2V0QXR0cmlidXRlKCFxYSYmZi5wcm9wRml4W2JdfHxiLGIpOmFbZi5jYW1lbENhc2UoImRlZmF1bHQtIisKYildPWFbYl09ITAsYn19O2YuZWFjaChmLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGUpe3ZhciBiPWhhW2VdfHxmLmZpbmQuYXR0cjtoYVtlXT1QYSYmcWF8fCEkYS50ZXN0KGUpP2Z1bmN0aW9uKGEsZSxmKXt2YXIgYyxkO3JldHVybiBmfHwoZD1oYVtlXSxoYVtlXT1jLGM9bnVsbCE9YihhLGUsZik/ZS50b0xvd2VyQ2FzZSgpOm51bGwsaGFbZV09ZCksY306ZnVuY3Rpb24oYSxlLGIpe3JldHVybiBiP3ZvaWQgMDphW2YuY2FtZWxDYXNlKCJkZWZhdWx0LSIrZSldP2UudG9Mb3dlckNhc2UoKTpudWxsfX0pO1BhJiZxYXx8KGYuYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oYSxlLGIpe3JldHVybiBmLm5vZGVOYW1lKGEsImlucHV0Iik/dm9pZChhLmRlZmF1bHRWYWx1ZT1lKTp1YSYmdWEuc2V0KGEsZSxiKX19KTtxYXx8KHVhPXtzZXQ6ZnVuY3Rpb24oYSxlLGIpe3ZhciBmPWEuZ2V0QXR0cmlidXRlTm9kZShiKTtyZXR1cm4gZnx8CmEuc2V0QXR0cmlidXRlTm9kZShmPWEub3duZXJEb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoYikpLGYudmFsdWU9ZSs9IiIsInZhbHVlIj09PWJ8fGU9PT1hLmdldEF0dHJpYnV0ZShiKT9lOnZvaWQgMH19LGhhLmlkPWhhLm5hbWU9aGEuY29vcmRzPWZ1bmN0aW9uKGEsZSxiKXt2YXIgZjtyZXR1cm4gYj92b2lkIDA6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGUpKSYmIiIhPT1mLnZhbHVlP2YudmFsdWU6bnVsbH0sZi52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGUpe3ZhciBiPWEuZ2V0QXR0cmlidXRlTm9kZShlKTtyZXR1cm4gYiYmYi5zcGVjaWZpZWQ/Yi52YWx1ZTp2b2lkIDB9LHNldDp1YS5zZXR9LGYuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17c2V0OmZ1bmN0aW9uKGEsZSxiKXt1YS5zZXQoYSwiIj09PWU/ITE6ZSxiKX19LGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxlKXtmLmF0dHJIb29rc1tlXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIiI9PT0KYj8oYS5zZXRBdHRyaWJ1dGUoZSwiYXV0byIpLGIpOnZvaWQgMH19fSkpO3Muc3R5bGV8fChmLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1lKyIifX0pO3ZhciBrYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSxsYz0vXig/OmF8YXJlYSkkL2k7Zi5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gY2EodGhpcyxmLnByb3AsYSxlLDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9Zi5wcm9wRml4W2FdfHxhLHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPXZvaWQgMCxkZWxldGUgdGhpc1thXX1jYXRjaChlKXt9fSl9fSk7Zi5leHRlbmQoe3Byb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifSxwcm9wOmZ1bmN0aW9uKGEsCmUsYil7dmFyIGMsZCxnLGg9YS5ub2RlVHlwZTtpZihhJiYzIT09aCYmOCE9PWgmJjIhPT1oKXJldHVybiBnPTEhPT1ofHwhZi5pc1hNTERvYyhhKSxnJiYoZT1mLnByb3BGaXhbZV18fGUsZD1mLnByb3BIb29rc1tlXSksdm9pZCAwIT09Yj9kJiYic2V0ImluIGQmJnZvaWQgMCE9PShjPWQuc2V0KGEsYixlKSk/YzphW2VdPWI6ZCYmImdldCJpbiBkJiZudWxsIT09KGM9ZC5nZXQoYSxlKSk/YzphW2VdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGU9Zi5maW5kLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gZT9wYXJzZUludChlLDEwKTprYy50ZXN0KGEubm9kZU5hbWUpfHxsYy50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDotMX19fX0pO3MuaHJlZk5vcm1hbGl6ZWR8fGYuZWFjaChbImhyZWYiLCJzcmMiXSxmdW5jdGlvbihhLGUpe2YucHJvcEhvb2tzW2VdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKGUsNCl9fX0pO3Mub3B0U2VsZWN0ZWR8fAooZi5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXthPWEucGFyZW50Tm9kZTtyZXR1cm4gYSYmKGEuc2VsZWN0ZWRJbmRleCxhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pO2YuZWFjaCgidGFiSW5kZXggcmVhZE9ubHkgbWF4TGVuZ3RoIGNlbGxTcGFjaW5nIGNlbGxQYWRkaW5nIHJvd1NwYW4gY29sU3BhbiB1c2VNYXAgZnJhbWVCb3JkZXIgY29udGVudEVkaXRhYmxlIi5zcGxpdCgiICIpLGZ1bmN0aW9uKCl7Zi5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pO3MuZW5jdHlwZXx8KGYucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpO3ZhciBhYj0vW1x0XHJcblxmXS9nO2YuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgZSxiLGMsZCxnLGg9MCxsPXRoaXMubGVuZ3RoO2U9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2YodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsCmUsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGUpZm9yKGU9KGF8fCIiKS5tYXRjaChRKXx8W107bD5oO2grKylpZihiPXRoaXNbaF0sYz0xPT09Yi5ub2RlVHlwZSYmKGIuY2xhc3NOYW1lPygiICIrYi5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKGFiLCIgIik6IiAiKSl7Zm9yKGc9MDtkPWVbZysrXTspMD5jLmluZGV4T2YoIiAiK2QrIiAiKSYmKGMrPWQrIiAiKTtjPWYudHJpbShjKTtiLmNsYXNzTmFtZSE9PWMmJihiLmNsYXNzTmFtZT1jKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGUsYixjLGQsZyxoPTAsbD10aGlzLmxlbmd0aDtlPTA9PT1hcmd1bWVudHMubGVuZ3RofHwic3RyaW5nIj09dHlwZW9mIGEmJmE7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7Zih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxlLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihlKWZvcihlPShhfHwiIikubWF0Y2goUSl8fFtdO2w+aDtoKyspaWYoYj0KdGhpc1toXSxjPTE9PT1iLm5vZGVUeXBlJiYoYi5jbGFzc05hbWU/KCIgIitiLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoYWIsIiAiKToiIikpe2ZvcihnPTA7ZD1lW2crK107KWZvcig7MDw9Yy5pbmRleE9mKCIgIitkKyIgIik7KWM9Yy5yZXBsYWNlKCIgIitkKyIgIiwiICIpO2M9YT9mLnRyaW0oYyk6IiI7Yi5jbGFzc05hbWUhPT1jJiYoYi5jbGFzc05hbWU9Yyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsZSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZSYmInN0cmluZyI9PT1iP2U/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEpOnRoaXMuZWFjaChmLmlzRnVuY3Rpb24oYSk/ZnVuY3Rpb24oYil7Zih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lLGUpLGUpfTpmdW5jdGlvbigpe2lmKCJzdHJpbmciPT09Yilmb3IodmFyIGUsYz0wLGQ9Zih0aGlzKSxnPWEubWF0Y2goUSl8fFtdO2U9CmdbYysrXTspZC5oYXNDbGFzcyhlKT9kLnJlbW92ZUNsYXNzKGUpOmQuYWRkQ2xhc3MoZSk7ZWxzZShiPT09V3x8ImJvb2xlYW4iPT09YikmJih0aGlzLmNsYXNzTmFtZSYmZi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fCExPT09YT8iIjpmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2E9IiAiK2ErIiAiO2Zvcih2YXIgZT0wLGI9dGhpcy5sZW5ndGg7Yj5lO2UrKylpZigxPT09dGhpc1tlXS5ub2RlVHlwZSYmMDw9KCIgIit0aGlzW2VdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoYWIsIiAiKS5pbmRleE9mKGEpKXJldHVybiEwO3JldHVybiExfX0pO2YuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwKZnVuY3Rpb24oYSxlKXtmLmZuW2VdPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKGUsbnVsbCxhLGIpOnRoaXMudHJpZ2dlcihlKX19KTtmLmZuLmV4dGVuZCh7aG92ZXI6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoZXx8YSl9LGJpbmQ6ZnVuY3Rpb24oYSxlLGIpe3JldHVybiB0aGlzLm9uKGEsbnVsbCxlLGIpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGUpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGUsYixmKXtyZXR1cm4gdGhpcy5vbihlLGEsYixmKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGUsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoZSxhfHwiKioiLGIpfX0pO3ZhciBiYj1mLm5vdygpLGNiPS9cPy8sbWM9LygsKXwoXFt8eyl8KH18XSl8Iig/OlteIlxcXHJcbl18XFxbIlxcXC9iZm5ydF18XFx1W1xkYS1mQS1GXXs0fSkqIlxzKjo/fHRydWV8ZmFsc2V8bnVsbHwtPyg/ITBcZClcZCsoPzpcLlxkK3wpKD86W2VFXVsrLV0/XGQrfCkvZzsKZi5wYXJzZUpTT049ZnVuY3Rpb24oYSl7aWYoYi5KU09OJiZiLkpTT04ucGFyc2UpcmV0dXJuIGIuSlNPTi5wYXJzZShhKyIiKTt2YXIgZSxjPW51bGwsZD1mLnRyaW0oYSsiIik7cmV0dXJuIGQmJiFmLnRyaW0oZC5yZXBsYWNlKG1jLGZ1bmN0aW9uKGEsYixmLGQpe3JldHVybiBlJiZiJiYoYz0wKSwwPT09Yz9hOihlPWZ8fGIsYys9IWQtIWYsIiIpfSkpP0Z1bmN0aW9uKCJyZXR1cm4gIitkKSgpOmYuZXJyb3IoIkludmFsaWQgSlNPTjogIithKX07Zi5wYXJzZVhNTD1mdW5jdGlvbihhKXt2YXIgZSxjO2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e2IuRE9NUGFyc2VyPyhjPW5ldyBET01QYXJzZXIsZT1jLnBhcnNlRnJvbVN0cmluZyhhLCJ0ZXh0L3htbCIpKTooZT1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGUuYXN5bmM9ImZhbHNlIixlLmxvYWRYTUwoYSkpfWNhdGNoKGQpe2U9dm9pZCAwfXJldHVybiBlJiZlLmRvY3VtZW50RWxlbWVudCYmCiFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8Zi5lcnJvcigiSW52YWxpZCBYTUw6ICIrYSksZX07dmFyIHJhLFYsbmM9LyMuKiQvLHliPS8oWz8mXSlfPVteJl0qLyxvYz0vXiguKj8pOlsgXHRdKihbXlxyXG5dKilccj8kL2dtLHBjPS9eKD86R0VUfEhFQUQpJC8scWM9L15cL1wvLyx6Yj0vXihbXHcuKy1dKzopKD86XC9cLyg/OlteXC8/I10qQHwpKFteXC8/IzpdKikoPzo6KFxkKyl8KXwpLyxBYj17fSxVYT17fSxCYj0iKi8iLmNvbmNhdCgiKiIpO3RyeXtWPUMuaHJlZn1jYXRjaCh4Yyl7Vj14LmNyZWF0ZUVsZW1lbnQoImEiKSxWLmhyZWY9IiIsVj1WLmhyZWZ9cmE9emIuZXhlYyhWLnRvTG93ZXJDYXNlKCkpfHxbXTtmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6Vix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChyYVsxXSksCmdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0XHgzZFVURi04IixhY2NlcHRzOnsiKiI6QmIsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGUpe3JldHVybiBlPwp5YSh5YShhLGYuYWpheFNldHRpbmdzKSxlKTp5YShmLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpKYShBYiksYWpheFRyYW5zcG9ydDpKYShVYSksYWpheDpmdW5jdGlvbihhLGUpe2Z1bmN0aW9uIGIoYSxlLGMsZCl7dmFyIGsscSxyLEQscz1lO2lmKDIhPT1IKXtIPTI7bCYmY2xlYXJUaW1lb3V0KGwpO249dm9pZCAwO2g9ZHx8IiI7Ry5yZWFkeVN0YXRlPTA8YT80OjA7ZD0yMDA8PWEmJjMwMD5hfHwzMDQ9PT1hO2lmKGMpe3I9cDtmb3IodmFyIHk9Ryx6LEIsRixBLHg9ci5jb250ZW50cyxSPXIuZGF0YVR5cGVzOyIqIj09PVJbMF07KVIuc2hpZnQoKSx2b2lkIDA9PT1CJiYoQj1yLm1pbWVUeXBlfHx5LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYoQilmb3IoQSBpbiB4KWlmKHhbQV0mJnhbQV0udGVzdChCKSl7Ui51bnNoaWZ0KEEpO2JyZWFrfWlmKFJbMF1pbiBjKUY9UlswXTtlbHNle2ZvcihBIGluIGMpe2lmKCFSWzBdfHxyLmNvbnZlcnRlcnNbQSsKIiAiK1JbMF1dKXtGPUE7YnJlYWt9enx8KHo9QSl9Rj1GfHx6fXI9Rj8oRiE9PVJbMF0mJlIudW5zaGlmdChGKSxjW0ZdKTp2b2lkIDB9dmFyIE87YTp7Yz1wO3o9cjtCPUc7Rj1kO3ZhciBJLHYsUDtyPXt9O3k9Yy5kYXRhVHlwZXMuc2xpY2UoKTtpZih5WzFdKWZvcihJIGluIGMuY29udmVydGVycylyW0kudG9Mb3dlckNhc2UoKV09Yy5jb252ZXJ0ZXJzW0ldO2ZvcihBPXkuc2hpZnQoKTtBOylpZihjLnJlc3BvbnNlRmllbGRzW0FdJiYoQltjLnJlc3BvbnNlRmllbGRzW0FdXT16KSwhUCYmRiYmYy5kYXRhRmlsdGVyJiYoej1jLmRhdGFGaWx0ZXIoeixjLmRhdGFUeXBlKSksUD1BLEE9eS5zaGlmdCgpKWlmKCIqIj09PUEpQT1QO2Vsc2UgaWYoIioiIT09UCYmUCE9PUEpe2lmKEk9cltQKyIgIitBXXx8clsiKiAiK0FdLCFJKWZvcihPIGluIHIpaWYodj1PLnNwbGl0KCIgIiksdlsxXT09PUEmJihJPXJbUCsiICIrdlswXV18fHJbIiogIit2WzBdXSkpeyEwPT09ST9JPXJbT106ITAhPT0KcltPXSYmKEE9dlswXSx5LnVuc2hpZnQodlsxXSkpO2JyZWFrfWlmKCEwIT09SSlpZihJJiZjWyJ0aHJvd3MiXSl6PUkoeik7ZWxzZSB0cnl7ej1JKHopfWNhdGNoKFUpe089e3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6ST9VOiJObyBjb252ZXJzaW9uIGZyb20gIitQKyIgdG8gIitBfTticmVhayBhfX1PPXtzdGF0ZToic3VjY2VzcyIsZGF0YTp6fX1yPU87ZD8ocC5pZk1vZGlmaWVkJiYoRD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIiksRCYmKGYubGFzdE1vZGlmaWVkW2ddPUQpLEQ9Ry5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpLEQmJihmLmV0YWdbZ109RCkpLDIwND09PWF8fCJIRUFEIj09PXAudHlwZT9zPSJub2NvbnRlbnQiOjMwND09PWE/cz0ibm90bW9kaWZpZWQiOihzPXIuc3RhdGUsaz1yLmRhdGEscT1yLmVycm9yLGQ9IXEpKToocT1zLChhfHwhcykmJihzPSJlcnJvciIsMD5hJiYoYT0wKSkpO0cuc3RhdHVzPWE7Ry5zdGF0dXNUZXh0PShlfHxzKSsKIiI7ZD93LnJlc29sdmVXaXRoKHQsW2sscyxHXSk6dy5yZWplY3RXaXRoKHQsW0cscyxxXSk7Ry5zdGF0dXNDb2RlKEopO0o9dm9pZCAwO20mJkUudHJpZ2dlcihkPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW0cscCxkP2s6cV0pO3UuZmlyZVdpdGgodCxbRyxzXSk7bSYmKEUudHJpZ2dlcigiYWpheENvbXBsZXRlIixbRyxwXSksLS1mLmFjdGl2ZXx8Zi5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKX19Im9iamVjdCI9PXR5cGVvZiBhJiYoZT1hLGE9dm9pZCAwKTtlPWV8fHt9O3ZhciBjLGQsZyxoLGwsbSxuLHEscD1mLmFqYXhTZXR1cCh7fSxlKSx0PXAuY29udGV4dHx8cCxFPXAuY29udGV4dCYmKHQubm9kZVR5cGV8fHQuanF1ZXJ5KT9mKHQpOmYuZXZlbnQsdz1mLkRlZmVycmVkKCksdT1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxKPXAuc3RhdHVzQ29kZXx8e30sRD17fSxzPXt9LEg9MCx5PSJjYW5jZWxlZCIsRz17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBlOwppZigyPT09SCl7aWYoIXEpZm9yKHE9e307ZT1vYy5leGVjKGgpOylxW2VbMV0udG9Mb3dlckNhc2UoKV09ZVsyXTtlPXFbYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09ZT9udWxsOmV9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09SD9oOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxlKXt2YXIgYj1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIEh8fChhPXNbYl09c1tiXXx8YSxEW2FdPWUpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIEh8fChwLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGU7aWYoYSlpZigyPkgpZm9yKGUgaW4gYSlKW2VdPVtKW2VdLGFbZV1dO2Vsc2UgRy5hbHdheXMoYVtHLnN0YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXthPWF8fHk7cmV0dXJuIG4mJm4uYWJvcnQoYSksYigwLGEpLHRoaXN9fTtpZih3LnByb21pc2UoRykuY29tcGxldGU9CnUuYWRkLEcuc3VjY2Vzcz1HLmRvbmUsRy5lcnJvcj1HLmZhaWwscC51cmw9KChhfHxwLnVybHx8VikrIiIpLnJlcGxhY2UobmMsIiIpLnJlcGxhY2UocWMscmFbMV0rIi8vIikscC50eXBlPWUubWV0aG9kfHxlLnR5cGV8fHAubWV0aG9kfHxwLnR5cGUscC5kYXRhVHlwZXM9Zi50cmltKHAuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChRKXx8WyIiXSxudWxsPT1wLmNyb3NzRG9tYWluJiYoYz16Yi5leGVjKHAudXJsLnRvTG93ZXJDYXNlKCkpLHAuY3Jvc3NEb21haW49ISghY3x8Y1sxXT09PXJhWzFdJiZjWzJdPT09cmFbMl0mJihjWzNdfHwoImh0dHA6Ij09PWNbMV0/IjgwIjoiNDQzIikpPT09KHJhWzNdfHwoImh0dHA6Ij09PXJhWzFdPyI4MCI6IjQ0MyIpKSkpLHAuZGF0YSYmcC5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBwLmRhdGEmJihwLmRhdGE9Zi5wYXJhbShwLmRhdGEscC50cmFkaXRpb25hbCkpLFooQWIscCxlLEcpLDI9PT1IKXJldHVybiBHOwoobT1mLmV2ZW50JiZwLmdsb2JhbCkmJjA9PT1mLmFjdGl2ZSsrJiZmLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO3AudHlwZT1wLnR5cGUudG9VcHBlckNhc2UoKTtwLmhhc0NvbnRlbnQ9IXBjLnRlc3QocC50eXBlKTtnPXAudXJsO3AuaGFzQ29udGVudHx8KHAuZGF0YSYmKGc9cC51cmwrPShjYi50ZXN0KGcpPyJceDI2IjoiPyIpK3AuZGF0YSxkZWxldGUgcC5kYXRhKSwhMT09PXAuY2FjaGUmJihwLnVybD15Yi50ZXN0KGcpP2cucmVwbGFjZSh5YiwiJDFfXHgzZCIrYmIrKyk6ZysoY2IudGVzdChnKT8iXHgyNiI6Ij8iKSsiX1x4M2QiK2JiKyspKTtwLmlmTW9kaWZpZWQmJihmLmxhc3RNb2RpZmllZFtnXSYmRy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRbZ10pLGYuZXRhZ1tnXSYmRy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdbZ10pKTsocC5kYXRhJiZwLmhhc0NvbnRlbnQmJiExIT09cC5jb250ZW50VHlwZXx8CmUuY29udGVudFR5cGUpJiZHLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIscC5jb250ZW50VHlwZSk7Ry5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHAuZGF0YVR5cGVzWzBdJiZwLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dP3AuYWNjZXB0c1twLmRhdGFUeXBlc1swXV0rKCIqIiE9PXAuZGF0YVR5cGVzWzBdPyIsICIrQmIrIjsgcVx4M2QwLjAxIjoiIik6cC5hY2NlcHRzWyIqIl0pO2ZvcihkIGluIHAuaGVhZGVycylHLnNldFJlcXVlc3RIZWFkZXIoZCxwLmhlYWRlcnNbZF0pO2lmKHAuYmVmb3JlU2VuZCYmKCExPT09cC5iZWZvcmVTZW5kLmNhbGwodCxHLHApfHwyPT09SCkpcmV0dXJuIEcuYWJvcnQoKTt5PSJhYm9ydCI7Zm9yKGQgaW57c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pR1tkXShwW2RdKTtpZihuPVooVWEscCxlLEcpKXtHLnJlYWR5U3RhdGU9MTttJiZFLnRyaWdnZXIoImFqYXhTZW5kIixbRyxwXSk7cC5hc3luYyYmMDxwLnRpbWVvdXQmJihsPQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ry5hYm9ydCgidGltZW91dCIpfSxwLnRpbWVvdXQpKTt0cnl7SD0xLG4uc2VuZChELGIpfWNhdGNoKEIpe2lmKCEoMj5IKSl0aHJvdyBCO2IoLTEsQil9fWVsc2UgYigtMSwiTm8gVHJhbnNwb3J0Iik7cmV0dXJuIEd9LGdldEpTT046ZnVuY3Rpb24oYSxlLGIpe3JldHVybiBmLmdldChhLGUsYiwianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxlKXtyZXR1cm4gZi5nZXQoYSx2b2lkIDAsZSwic2NyaXB0Iil9fSk7Zi5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsZSl7ZltlXT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gZi5pc0Z1bmN0aW9uKGIpJiYoZD1kfHxjLGM9YixiPXZvaWQgMCksZi5hamF4KHt1cmw6YSx0eXBlOmUsZGF0YVR5cGU6ZCxkYXRhOmIsc3VjY2VzczpjfSl9fSk7Zi5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gZi5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDohMSwKInRocm93cyI6ITB9KX07Zi5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7Zih0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGUpKX0pO2lmKHRoaXNbMF0pe3ZhciBlPWYoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmUuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pO2UubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXM7YS5maXJzdENoaWxkJiYxPT09YS5maXJzdENoaWxkLm5vZGVUeXBlOylhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZi5pc0Z1bmN0aW9uKGEpP2Z1bmN0aW9uKGUpe2YodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGUpKX06ZnVuY3Rpb24oKXt2YXIgZT1mKHRoaXMpLGI9ZS5jb250ZW50cygpOwpiLmxlbmd0aD9iLndyYXBBbGwoYSk6ZS5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLndyYXBBbGwoZT9hLmNhbGwodGhpcyxiKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Zi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fGYodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pO2YuZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gMD49YS5vZmZzZXRXaWR0aCYmMD49YS5vZmZzZXRIZWlnaHR8fCFzLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpfTtmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9Owp2YXIgcmM9LyUyMC9nLE5iPS9cW1xdJC8sQ2I9L1xyP1xuL2csc2M9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLHRjPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmLnBhcmFtPWZ1bmN0aW9uKGEsZSl7dmFyIGIsYz1bXSxkPWZ1bmN0aW9uKGEsZSl7ZT1mLmlzRnVuY3Rpb24oZSk/ZSgpOm51bGw9PWU/IiI6ZTtjW2MubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIlx4M2QiK2VuY29kZVVSSUNvbXBvbmVudChlKX07aWYodm9pZCAwPT09ZSYmKGU9Zi5hamF4U2V0dGluZ3MmJmYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxmLmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhZi5pc1BsYWluT2JqZWN0KGEpKWYuZWFjaChhLGZ1bmN0aW9uKCl7ZCh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihiIGluIGEpemEoYixhW2JdLGUsZCk7cmV0dXJuIGMuam9pbigiXHgyNiIpLnJlcGxhY2UocmMsIisiKX07Zi5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBmLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LApzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPWYucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP2YubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIWYodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZ0Yy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhc2MudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVRhLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsZSl7dmFyIGI9Zih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yj9udWxsOmYuaXNBcnJheShiKT9mLm1hcChiLGZ1bmN0aW9uKGEpe3JldHVybntuYW1lOmUubmFtZSx2YWx1ZTphLnJlcGxhY2UoQ2IsIlxyXG4iKX19KTp7bmFtZTplLm5hbWUsdmFsdWU6Yi5yZXBsYWNlKENiLCJcclxuIil9fSkuZ2V0KCl9fSk7Zi5hamF4U2V0dGluZ3MueGhyPXZvaWQgMCE9PWIuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3ZhciBhOwppZighKGE9IXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmZGEoKSkpYTp7dHJ5e2E9bmV3IGIuQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTticmVhayBhfWNhdGNoKGUpe31hPXZvaWQgMH1yZXR1cm4gYX06ZGE7dmFyIHVjPTAsUWE9e30sUmE9Zi5hamF4U2V0dGluZ3MueGhyKCk7Yi5hdHRhY2hFdmVudCYmYi5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFFhKVFhW2FdKHZvaWQgMCwhMCl9KTtzLmNvcnM9ISFSYSYmIndpdGhDcmVkZW50aWFscyJpbiBSYTsoUmE9cy5hamF4PSEhUmEpJiZmLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYSl7aWYoIWEuY3Jvc3NEb21haW58fHMuY29ycyl7dmFyIGU7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oYixjKXt2YXIgZCxnPWEueGhyKCksaD0rK3VjO2lmKGcub3BlbihhLnR5cGUsYS51cmwsYS5hc3luYyxhLnVzZXJuYW1lLAphLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZCBpbiBhLnhockZpZWxkcylnW2RdPWEueGhyRmllbGRzW2RdO2EubWltZVR5cGUmJmcub3ZlcnJpZGVNaW1lVHlwZSYmZy5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpO2EuY3Jvc3NEb21haW58fGJbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGJbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZCBpbiBiKXZvaWQgMCE9PWJbZF0mJmcuc2V0UmVxdWVzdEhlYWRlcihkLGJbZF0rIiIpO2cuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCk7ZT1mdW5jdGlvbihiLGQpe3ZhciBrLGwsbTtpZihlJiYoZHx8ND09PWcucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFFhW2hdLGU9dm9pZCAwLGcub25yZWFkeXN0YXRlY2hhbmdlPWYubm9vcCxkKTQhPT1nLnJlYWR5U3RhdGUmJmcuYWJvcnQoKTtlbHNle209e307az1nLnN0YXR1czsic3RyaW5nIj09dHlwZW9mIGcucmVzcG9uc2VUZXh0JiYobS50ZXh0PWcucmVzcG9uc2VUZXh0KTsKdHJ5e2w9Zy5zdGF0dXNUZXh0fWNhdGNoKG4pe2w9IiJ9a3x8IWEuaXNMb2NhbHx8YS5jcm9zc0RvbWFpbj8xMjIzPT09ayYmKGs9MjA0KTprPW0udGV4dD8yMDA6NDA0fW0mJmMoayxsLG0sZy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSl9O2EuYXN5bmM/ND09PWcucmVhZHlTdGF0ZT9zZXRUaW1lb3V0KGUpOmcub25yZWFkeXN0YXRlY2hhbmdlPVFhW2hdPWU6ZSgpfSxhYm9ydDpmdW5jdGlvbigpe2UmJmUodm9pZCAwLCEwKX19fX0pO2YuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZ2xvYmFsRXZhbChhKSxhfX19KTtmLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsCmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKTthLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pO2YuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgZSxiPXguaGVhZHx8ZigiaGVhZCIpWzBdfHx4LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihmLGMpe2U9eC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtlLmFzeW5jPSEwO2Euc2NyaXB0Q2hhcnNldCYmKGUuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpO2Uuc3JjPWEudXJsO2Uub25sb2FkPWUub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYil7KGJ8fCFlLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZS5yZWFkeVN0YXRlKSkmJihlLm9ubG9hZD1lLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLGU9bnVsbCxifHwKYygyMDAsInN1Y2Nlc3MiKSl9O2IuaW5zZXJ0QmVmb3JlKGUsYi5maXJzdENoaWxkKX0sYWJvcnQ6ZnVuY3Rpb24oKXtlJiZlLm9ubG9hZCh2b2lkIDAsITApfX19fSk7dmFyIERiPVtdLGRiPS8oPSlcPyg/PSZ8JCl8XD9cPy87Zi5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPURiLnBvcCgpfHxmLmV4cGFuZG8rIl8iK2JiKys7cmV0dXJuIHRoaXNbYV09ITAsYX19KTtmLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGEsZSxjKXt2YXIgZCxnLGgsbD0hMSE9PWEuanNvbnAmJihkYi50ZXN0KGEudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGEuZGF0YSYmIShhLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJmRiLnRlc3QoYS5kYXRhKSYmImRhdGEiKTtyZXR1cm4gbHx8Impzb25wIj09PWEuZGF0YVR5cGVzWzBdPyhkPWEuanNvbnBDYWxsYmFjaz0KZi5pc0Z1bmN0aW9uKGEuanNvbnBDYWxsYmFjayk/YS5qc29ucENhbGxiYWNrKCk6YS5qc29ucENhbGxiYWNrLGw/YVtsXT1hW2xdLnJlcGxhY2UoZGIsIiQxIitkKTohMSE9PWEuanNvbnAmJihhLnVybCs9KGNiLnRlc3QoYS51cmwpPyJceDI2IjoiPyIpK2EuanNvbnArIlx4M2QiK2QpLGEuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBofHxmLmVycm9yKGQrIiB3YXMgbm90IGNhbGxlZCIpLGhbMF19LGEuZGF0YVR5cGVzWzBdPSJqc29uIixnPWJbZF0sYltkXT1mdW5jdGlvbigpe2g9YXJndW1lbnRzfSxjLmFsd2F5cyhmdW5jdGlvbigpe2JbZF09ZzthW2RdJiYoYS5qc29ucENhbGxiYWNrPWUuanNvbnBDYWxsYmFjayxEYi5wdXNoKGQpKTtoJiZmLmlzRnVuY3Rpb24oZykmJmcoaFswXSk7aD1nPXZvaWQgMH0pLCJzY3JpcHQiKTp2b2lkIDB9KTtmLnBhcnNlSFRNTD1mdW5jdGlvbihhLGUsYil7aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gbnVsbDsKImJvb2xlYW4iPT10eXBlb2YgZSYmKGI9ZSxlPSExKTtlPWV8fHg7dmFyIGM9bGIuZXhlYyhhKTtiPSFiJiZbXTtyZXR1cm4gYz9bZS5jcmVhdGVFbGVtZW50KGNbMV0pXTooYz1mLmJ1aWxkRnJhZ21lbnQoW2FdLGUsYiksYiYmYi5sZW5ndGgmJmYoYikucmVtb3ZlKCksZi5tZXJnZShbXSxjLmNoaWxkTm9kZXMpKX07dmFyIEViPWYuZm4ubG9hZDtmLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe2lmKCJzdHJpbmciIT10eXBlb2YgYSYmRWIpcmV0dXJuIEViLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgZCxnLGgsbD10aGlzLG09YS5pbmRleE9mKCIgIik7cmV0dXJuIDA8PW0mJihkPWYudHJpbShhLnNsaWNlKG0sYS5sZW5ndGgpKSxhPWEuc2xpY2UoMCxtKSksZi5pc0Z1bmN0aW9uKGIpPyhjPWIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGg9IlBPU1QiKSwwPGwubGVuZ3RoJiZmLmFqYXgoe3VybDphLHR5cGU6aCxkYXRhVHlwZToiaHRtbCIsZGF0YTpifSkuZG9uZShmdW5jdGlvbihhKXtnPQphcmd1bWVudHM7bC5odG1sKGQ/ZigiXHgzY2Rpdlx4M2UiKS5hcHBlbmQoZi5wYXJzZUhUTUwoYSkpLmZpbmQoZCk6YSl9KS5jb21wbGV0ZShjJiZmdW5jdGlvbihhLGIpe2wuZWFjaChjLGd8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pLHRoaXN9O2YuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSk7Zi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZ3JlcChmLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07dmFyIEZiPWIuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2Yub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGcsaCxsLG0sbixwPWYuY3NzKGEsInBvc2l0aW9uIikscT1mKGEpLHQ9e307InN0YXRpYyI9PT0KcCYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIik7bT1xLm9mZnNldCgpO2g9Zi5jc3MoYSwidG9wIik7bj1mLmNzcyhhLCJsZWZ0Iik7KCJhYnNvbHV0ZSI9PT1wfHwiZml4ZWQiPT09cCkmJi0xPGYuaW5BcnJheSgiYXV0byIsW2gsbl0pPyhkPXEucG9zaXRpb24oKSxsPWQudG9wLGc9ZC5sZWZ0KToobD1wYXJzZUZsb2F0KGgpfHwwLGc9cGFyc2VGbG9hdChuKXx8MCk7Zi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLG0pKTtudWxsIT1iLnRvcCYmKHQudG9wPWIudG9wLW0udG9wK2wpO251bGwhPWIubGVmdCYmKHQubGVmdD1iLmxlZnQtbS5sZWZ0K2cpOyJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLHQpOnEuY3NzKHQpfX07Zi5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9Cnt0b3A6MCxsZWZ0OjB9LGc9dGhpc1swXSxoPWcmJmcub3duZXJEb2N1bWVudDtpZihoKXJldHVybiBiPWguZG9jdW1lbnRFbGVtZW50LGYuY29udGFpbnMoYixnKT8odHlwZW9mIGcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09VyYmKGQ9Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz0kKGgpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1mLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxmLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPQpmLmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLGMubGVmdCs9Zi5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6Yi50b3AtYy50b3AtZi5jc3MoZCwibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtYy5sZWZ0LWYuY3NzKGQsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fEZiO2EmJiFmLm5vZGVOYW1lKGEsImh0bWwiKSYmInN0YXRpYyI9PT1mLmNzcyhhLCJwb3NpdGlvbiIpOylhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxGYn0pfX0pO2YuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO2YuZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIGNhKHRoaXMsZnVuY3Rpb24oYSxkLGcpe3ZhciBoPSQoYSk7cmV0dXJuIHZvaWQgMD09PQpnP2g/YiBpbiBoP2hbYl06aC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZF06YVtkXTp2b2lkKGg/aC5zY3JvbGxUbyhjP2YoaCkuc2Nyb2xsTGVmdCgpOmcsYz9nOmYoaCkuc2Nyb2xsVG9wKCkpOmFbZF09Zyl9LGEsZCxhcmd1bWVudHMubGVuZ3RoLG51bGwpfX0pO2YuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe2YuY3NzSG9va3NbYl09YmEocy5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9bWEoYSxiKSxIYS50ZXN0KGMpP2YoYSkucG9zaXRpb24oKVtiXSsicHgiOmMpOnZvaWQgMH0pfSk7Zi5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtmLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7Zi5mbltkXT1mdW5jdGlvbihkLGcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBkKSxsPWN8fCghMD09PQpkfHwhMD09PWc/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBjYSh0aGlzLGZ1bmN0aW9uKGIsZSxjKXt2YXIgZDtyZXR1cm4gZi5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZD1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZFsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZFsib2Zmc2V0IithXSxkWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09Yz9mLmNzcyhiLGUsbCk6Zi5zdHlsZShiLGUsYyxsKX0sYixoP2Q6dm9pZCAwLGgsbnVsbCl9fSl9KTtmLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9O2YuZm4uYW5kU2VsZj1mLmZuLmFkZEJhY2s7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KTt2YXIgdmM9Yi5qUXVlcnksd2M9Yi4kO3JldHVybiBmLm5vQ29uZmxpY3Q9CmZ1bmN0aW9uKGEpe3JldHVybiBiLiQ9PT1mJiYoYi4kPXdjKSxhJiZiLmpRdWVyeT09PWYmJihiLmpRdWVyeT12YyksZn0sdHlwZW9mIGM9PT1XJiYoYi5qUXVlcnk9Yi4kPWYpLGZ9KTtkLiQ9YWE9Yz13aW5kb3cualF1ZXJ5Lm5vQ29uZmxpY3QoITApO3Y9Yyhkb2N1bWVudCk7YmE9Yyh3aW5kb3cpO3ZvaWQgMD09PWFhLm1pZ3JhdGVNdXRlJiYoYWEubWlncmF0ZU11dGU9ITApOyhmdW5jdGlvbihiLGMsZCl7ZnVuY3Rpb24gaChkKXt2YXIgaD1jLmNvbnNvbGU7cVtkXXx8KHFbZF09ITAsYi5taWdyYXRlV2FybmluZ3MucHVzaChkKSxoJiZoLndhcm4mJiFiLm1pZ3JhdGVNdXRlJiYoaC53YXJuKCJKUU1JR1JBVEU6ICIrZCksYi5taWdyYXRlVHJhY2UmJmgudHJhY2UmJmgudHJhY2UoKSkpfWZ1bmN0aW9uIG0oYyxnLG0sbil7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGMsZyx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsCmdldDpmdW5jdGlvbigpe3JldHVybiBoKG4pLG19LHNldDpmdW5jdGlvbihiKXtoKG4pO209Yn19KSxkfWNhdGNoKHApe31iLl9kZWZpbmVQcm9wZXJ0eUJyb2tlbj0hMDtjW2ddPW19dmFyIHE9e307Yi5taWdyYXRlV2FybmluZ3M9W107IWIubWlncmF0ZU11dGUmJmMuY29uc29sZSYmYy5jb25zb2xlLmxvZyYmYy5jb25zb2xlLmxvZygiSlFNSUdSQVRFOiBMb2dnaW5nIGlzIGFjdGl2ZSIpO2IubWlncmF0ZVRyYWNlPT09ZCYmKGIubWlncmF0ZVRyYWNlPSEwKTtiLm1pZ3JhdGVSZXNldD1mdW5jdGlvbigpe3E9e307Yi5taWdyYXRlV2FybmluZ3MubGVuZ3RoPTB9OyJCYWNrQ29tcGF0Ij09PWRvY3VtZW50LmNvbXBhdE1vZGUmJmgoImpRdWVyeSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFF1aXJrcyBNb2RlIik7dmFyIG49YigiXHgzY2lucHV0L1x4M2UiLHtzaXplOjF9KS5hdHRyKCJzaXplIikmJmIuYXR0ckZuLHA9Yi5hdHRyLEI9Yi5hdHRySG9va3MudmFsdWUmJmIuYXR0ckhvb2tzLnZhbHVlLmdldHx8CmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHc9Yi5hdHRySG9va3MudmFsdWUmJmIuYXR0ckhvb2tzLnZhbHVlLnNldHx8ZnVuY3Rpb24oKXtyZXR1cm4gZH0seT0vXig/OmlucHV0fGJ1dHRvbikkL2ksSj0vXlsyMzhdJC8sRD0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSxGPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2k7bShiLCJhdHRyRm4iLG58fHt9LCJqUXVlcnkuYXR0ckZuIGlzIGRlcHJlY2F0ZWQiKTtiLmF0dHI9ZnVuY3Rpb24oYyxnLG0scSl7dmFyIHQ9Zy50b0xvd2VyQ2FzZSgpLHc9YyYmYy5ub2RlVHlwZTtyZXR1cm4gcSYmKDQ+cC5sZW5ndGgmJmgoImpRdWVyeS5mbi5hdHRyKCBwcm9wcywgcGFzcyApIGlzIGRlcHJlY2F0ZWQiKSxjJiYhSi50ZXN0KHcpJiYobj9nIGluIG46Yi5pc0Z1bmN0aW9uKGIuZm5bZ10pKSk/CmIoYylbZ10obSk6KCJ0eXBlIj09PWcmJm0hPT1kJiZ5LnRlc3QoYy5ub2RlTmFtZSkmJmMucGFyZW50Tm9kZSYmaCgiQ2FuJ3QgY2hhbmdlIHRoZSAndHlwZScgb2YgYW4gaW5wdXQgb3IgYnV0dG9uIGluIElFIDYvNy84IiksIWIuYXR0ckhvb2tzW3RdJiZELnRlc3QodCkmJihiLmF0dHJIb29rc1t0XT17Z2V0OmZ1bmN0aW9uKGMsZyl7dmFyIGgsbT1iLnByb3AoYyxnKTtyZXR1cm4hMD09PW18fCJib29sZWFuIiE9dHlwZW9mIG0mJihoPWMuZ2V0QXR0cmlidXRlTm9kZShnKSkmJiExIT09aC5ub2RlVmFsdWU/Zy50b0xvd2VyQ2FzZSgpOmR9LHNldDpmdW5jdGlvbihjLGQsZyl7dmFyIGg7cmV0dXJuITE9PT1kP2IucmVtb3ZlQXR0cihjLGcpOihoPWIucHJvcEZpeFtnXXx8ZyxoIGluIGMmJihjW2hdPSEwKSxjLnNldEF0dHJpYnV0ZShnLGcudG9Mb3dlckNhc2UoKSkpLGd9fSxGLnRlc3QodCkmJmgoImpRdWVyeS5mbi5hdHRyKCciK3QrIicpIG1heSB1c2UgcHJvcGVydHkgaW5zdGVhZCBvZiBhdHRyaWJ1dGUiKSksCnAuY2FsbChiLGMsZyxtKSl9O2IuYXR0ckhvb2tzLnZhbHVlPXtnZXQ6ZnVuY3Rpb24oYixjKXt2YXIgZD0oYi5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuImJ1dHRvbiI9PT1kP0IuYXBwbHkodGhpcyxhcmd1bWVudHMpOigiaW5wdXQiIT09ZCYmIm9wdGlvbiIhPT1kJiZoKCJqUXVlcnkuZm4uYXR0cigndmFsdWUnKSBubyBsb25nZXIgZ2V0cyBwcm9wZXJ0aWVzIiksYyBpbiBiP2IudmFsdWU6bnVsbCl9LHNldDpmdW5jdGlvbihiLGMpe3ZhciBnPShiLm5vZGVOYW1lfHwiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4iYnV0dG9uIj09PWc/dy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KCJpbnB1dCIhPT1nJiYib3B0aW9uIiE9PWcmJmgoImpRdWVyeS5mbi5hdHRyKCd2YWx1ZScsIHZhbCkgbm8gbG9uZ2VyIHNldHMgcHJvcGVydGllcyIpLGIudmFsdWU9YyxkKX19O3ZhciBBLHUsdD1iLmZuLmluaXQsSD1iLnBhcnNlSlNPTixJPS9eKFtePF0qKSg8W1x3XFddKz4pKFtePl0qKSQvOwpiLmZuLmluaXQ9ZnVuY3Rpb24oYyxkLGcpe3ZhciBsO3JldHVybiBjJiYic3RyaW5nIj09dHlwZW9mIGMmJiFiLmlzUGxhaW5PYmplY3QoZCkmJihsPUkuZXhlYyhiLnRyaW0oYykpKSYmbFswXSYmKCJceDNjIiE9PWMuY2hhckF0KDApJiZoKCIkKGh0bWwpIEhUTUwgc3RyaW5ncyBtdXN0IHN0YXJ0IHdpdGggJ1x4M2MnIGNoYXJhY3RlciIpLGxbM10mJmgoIiQoaHRtbCkgSFRNTCB0ZXh0IGFmdGVyIGxhc3QgdGFnIGlzIGlnbm9yZWQiKSwiIyI9PT1sWzBdLmNoYXJBdCgwKSYmKGgoIkhUTUwgc3RyaW5nIGNhbm5vdCBzdGFydCB3aXRoIGEgJyMnIGNoYXJhY3RlciIpLGIuZXJyb3IoIkpRTUlHUkFURTogSW52YWxpZCBzZWxlY3RvciBzdHJpbmcgKFhTUykiKSksZCYmZC5jb250ZXh0JiYoZD1kLmNvbnRleHQpLGIucGFyc2VIVE1MKT90LmNhbGwodGhpcyxiLnBhcnNlSFRNTChsWzJdLGQsITApLGQsZyk6dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2IuZm4uaW5pdC5wcm90b3R5cGU9CmIuZm47Yi5wYXJzZUpTT049ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fG51bGw9PT1iP0guYXBwbHkodGhpcyxhcmd1bWVudHMpOihoKCJqUXVlcnkucGFyc2VKU09OIHJlcXVpcmVzIGEgdmFsaWQgSlNPTiBzdHJpbmciKSxudWxsKX07Yi51YU1hdGNoPWZ1bmN0aW9uKGIpe2I9Yi50b0xvd2VyQ2FzZSgpO2I9LyhjaHJvbWUpWyBcL10oW1x3Ll0rKS8uZXhlYyhiKXx8Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyhiKXx8LyhvcGVyYSkoPzouKnZlcnNpb258KVsgXC9dKFtcdy5dKykvLmV4ZWMoYil8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMoYil8fDA+Yi5pbmRleE9mKCJjb21wYXRpYmxlIikmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKyl8KS8uZXhlYyhiKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9fTtiLmJyb3dzZXJ8fChBPWIudWFNYXRjaChTYS51c2VyQWdlbnQpLHU9e30sQS5icm93c2VyJiYodVtBLmJyb3dzZXJdPSEwLHUudmVyc2lvbj0KQS52ZXJzaW9uKSx1LmNocm9tZT91LndlYmtpdD0hMDp1LndlYmtpdCYmKHUuc2FmYXJpPSEwKSxiLmJyb3dzZXI9dSk7bShiLCJicm93c2VyIixiLmJyb3dzZXIsImpRdWVyeS5icm93c2VyIGlzIGRlcHJlY2F0ZWQiKTtiLnN1Yj1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYixkKXtyZXR1cm4gbmV3IGMuZm4uaW5pdChiLGQpfWIuZXh0ZW5kKCEwLGMsdGhpcyk7Yy5zdXBlcmNsYXNzPXRoaXM7Yy5mbj1jLnByb3RvdHlwZT10aGlzKCk7Yy5mbi5jb25zdHJ1Y3Rvcj1jO2Muc3ViPXRoaXMuc3ViO2MuZm4uaW5pdD1mdW5jdGlvbihnLGgpe3JldHVybiBoJiZoIGluc3RhbmNlb2YgYiYmIShoIGluc3RhbmNlb2YgYykmJihoPWMoaCkpLGIuZm4uaW5pdC5jYWxsKHRoaXMsZyxoLGQpfTtjLmZuLmluaXQucHJvdG90eXBlPWMuZm47dmFyIGQ9Yyhkb2N1bWVudCk7cmV0dXJuIGgoImpRdWVyeS5zdWIoKSBpcyBkZXByZWNhdGVkIiksY307Yi5hamF4U2V0dXAoe2NvbnZlcnRlcnM6eyJ0ZXh0IGpzb24iOmIucGFyc2VKU09OfX0pOwp2YXIgTz1iLmZuLmRhdGE7Yi5mbi5kYXRhPWZ1bmN0aW9uKGMpe3ZhciBnLG0sbj10aGlzWzBdO3JldHVybiFufHwiZXZlbnRzIiE9PWN8fDEhPT1hcmd1bWVudHMubGVuZ3RofHwoZz1iLmRhdGEobixjKSxtPWIuX2RhdGEobixjKSxnIT09ZCYmZyE9PW18fG09PT1kKT9PLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooaCgiVXNlIG9mIGpRdWVyeS5mbi5kYXRhKCdldmVudHMnKSBpcyBkZXByZWNhdGVkIiksbSl9O3ZhciBSPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksdj1iLmZuLmFuZFNlbGZ8fGIuZm4uYWRkQmFjaztiLmZuLmFuZFNlbGY9ZnVuY3Rpb24oKXtyZXR1cm4gaCgialF1ZXJ5LmZuLmFuZFNlbGYoKSByZXBsYWNlZCBieSBqUXVlcnkuZm4uYWRkQmFjaygpIiksdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2IuY2xlYW58fChiLmNsZWFuPWZ1bmN0aW9uKGMsZyxtLG4pe2c9Z3x8ZG9jdW1lbnQ7Zz0hZy5ub2RlVHlwZSYmZ1swXXx8ZztnPWcub3duZXJEb2N1bWVudHx8ZztoKCJqUXVlcnkuY2xlYW4oKSBpcyBkZXByZWNhdGVkIik7CnZhciBwLHEsdD1bXTtpZihiLm1lcmdlKHQsYi5idWlsZEZyYWdtZW50KGMsZykuY2hpbGROb2RlcyksbSlmb3IocD1mdW5jdGlvbihiKXtyZXR1cm4hYi50eXBlfHxSLnRlc3QoYi50eXBlKT9uP24ucHVzaChiLnBhcmVudE5vZGU/Yi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpOmIpOm0uYXBwZW5kQ2hpbGQoYik6ZH0sYz0wO251bGwhPShnPXRbY10pO2MrKyliLm5vZGVOYW1lKGcsInNjcmlwdCIpJiZwKGcpfHwobS5hcHBlbmRDaGlsZChnKSxnLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09ZCYmKHE9Yi5ncmVwKGIubWVyZ2UoW10sZy5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpLHApLHQuc3BsaWNlLmFwcGx5KHQsW2MrMSwwXS5jb25jYXQocSkpLGMrPXEubGVuZ3RoKSk7cmV0dXJuIHR9KTt2YXIgQz1iLmV2ZW50LmFkZCxLPWIuZXZlbnQucmVtb3ZlLCQ9Yi5ldmVudC50cmlnZ2VyLGFhPWIuZm4udG9nZ2xlLGJhPWIuZm4ubGl2ZSxkYT1iLmZuLmRpZSxpYT0vXGIoPzphamF4U3RhcnR8YWpheFN0b3B8YWpheFNlbmR8YWpheENvbXBsZXRlfGFqYXhFcnJvcnxhamF4U3VjY2VzcylcYi8sCkJhPS8oPzpefFxzKWhvdmVyKFwuXFMrfClcYi8sQ2E9ZnVuY3Rpb24oYyl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBjfHxiLmV2ZW50LnNwZWNpYWwuaG92ZXI/YzooQmEudGVzdChjKSYmaCgiJ2hvdmVyJyBwc2V1ZG8tZXZlbnQgaXMgZGVwcmVjYXRlZCwgdXNlICdtb3VzZWVudGVyIG1vdXNlbGVhdmUnIiksYyYmYy5yZXBsYWNlKEJhLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIikpfTtiLmV2ZW50LnByb3BzJiYiYXR0ckNoYW5nZSIhPT1iLmV2ZW50LnByb3BzWzBdJiZiLmV2ZW50LnByb3BzLnVuc2hpZnQoImF0dHJDaGFuZ2UiLCJhdHRyTmFtZSIsInJlbGF0ZWROb2RlIiwic3JjRWxlbWVudCIpO2IuZXZlbnQuZGlzcGF0Y2gmJm0oYi5ldmVudCwiaGFuZGxlIixiLmV2ZW50LmRpc3BhdGNoLCJqUXVlcnkuZXZlbnQuaGFuZGxlIGlzIHVuZG9jdW1lbnRlZCBhbmQgZGVwcmVjYXRlZCIpO2IuZXZlbnQuYWRkPWZ1bmN0aW9uKGIsYyxkLGcsbCl7YiE9PWRvY3VtZW50JiZpYS50ZXN0KGMpJiYKaCgiQUpBWCBldmVudHMgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIGRvY3VtZW50OiAiK2MpO0MuY2FsbCh0aGlzLGIsQ2EoY3x8IiIpLGQsZyxsKX07Yi5ldmVudC5yZW1vdmU9ZnVuY3Rpb24oYixjLGQsZyxoKXtLLmNhbGwodGhpcyxiLENhKGMpfHwiIixkLGcsaCl9O2IuZm4uZXJyb3I9ZnVuY3Rpb24oKXt2YXIgYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIGgoImpRdWVyeS5mbi5lcnJvcigpIGlzIGRlcHJlY2F0ZWQiKSxiLnNwbGljZSgwLDAsImVycm9yIiksYXJndW1lbnRzLmxlbmd0aD90aGlzLmJpbmQuYXBwbHkodGhpcyxiKToodGhpcy50cmlnZ2VySGFuZGxlci5hcHBseSh0aGlzLGIpLHRoaXMpfTtiLmZuLnRvZ2dsZT1mdW5jdGlvbihjLGQpe2lmKCFiLmlzRnVuY3Rpb24oYyl8fCFiLmlzRnVuY3Rpb24oZCkpcmV0dXJuIGFhLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtoKCJqUXVlcnkuZm4udG9nZ2xlKGhhbmRsZXIsIGhhbmRsZXIuLi4pIGlzIGRlcHJlY2F0ZWQiKTsKdmFyIGc9YXJndW1lbnRzLGw9Yy5ndWlkfHxiLmd1aWQrKyxtPTAsbj1mdW5jdGlvbihkKXt2YXIgaD0oYi5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIitjLmd1aWQpfHwwKSVtO3JldHVybiBiLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2MuZ3VpZCxoKzEpLGQucHJldmVudERlZmF1bHQoKSxnW2hdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ITF9O2ZvcihuLmd1aWQ9bDtnLmxlbmd0aD5tOylnW20rK10uZ3VpZD1sO3JldHVybiB0aGlzLmNsaWNrKG4pfTtiLmZuLmxpdmU9ZnVuY3Rpb24oYyxkLGcpe3JldHVybiBoKCJqUXVlcnkuZm4ubGl2ZSgpIGlzIGRlcHJlY2F0ZWQiKSxiYT9iYS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KGIodGhpcy5jb250ZXh0KS5vbihjLHRoaXMuc2VsZWN0b3IsZCxnKSx0aGlzKX07Yi5mbi5kaWU9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gaCgialF1ZXJ5LmZuLmRpZSgpIGlzIGRlcHJlY2F0ZWQiKSxkYT9kYS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KGIodGhpcy5jb250ZXh0KS5vZmYoYywKdGhpcy5zZWxlY3Rvcnx8IioqIixkKSx0aGlzKX07Yi5ldmVudC50cmlnZ2VyPWZ1bmN0aW9uKGIsYyxkLGcpe3JldHVybiBkfHxpYS50ZXN0KGIpfHxoKCJHbG9iYWwgZXZlbnRzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIGRlcHJlY2F0ZWQiKSwkLmNhbGwodGhpcyxiLGMsZHx8ZG9jdW1lbnQsZyl9O2IuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhTZW5kIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MiLnNwbGl0KCIgIiksZnVuY3Rpb24oYyxkKXtiLmV2ZW50LnNwZWNpYWxbZF09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcztyZXR1cm4gYyE9PWRvY3VtZW50JiYoYi5ldmVudC5hZGQoZG9jdW1lbnQsZCsiLiIrYi5ndWlkLGZ1bmN0aW9uKCl7Yi5ldmVudC50cmlnZ2VyKGQsbnVsbCxjLCEwKX0pLGIuX2RhdGEodGhpcyxkLGIuZ3VpZCsrKSksITF9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMhPT1kb2N1bWVudCYmYi5ldmVudC5yZW1vdmUoZG9jdW1lbnQsCmQrIi4iK2IuX2RhdGEodGhpcyxkKSksITF9fX0pfSkoYWEsd2luZG93KTsoZnVuY3Rpb24oYil7ZnVuY3Rpb24gYyhiKXtmdW5jdGlvbiBnKCl7Yj9CLnJlbW92ZURhdGEoYik6RCYmZGVsZXRlIGRbRF19ZnVuY3Rpb24gbigpe3cuaWQ9c2V0VGltZW91dChmdW5jdGlvbigpe3cuZm4oKX0sRil9dmFyIHA9dGhpcyxCLHc9e30seT1hcmd1bWVudHMsSj00LEQ9eVsxXSxGPXlbMl0sQT15WzNdOyJzdHJpbmciIT09dHlwZW9mIEQmJihKLS0sRD1iPTAsRj15WzFdLEE9eVsyXSk7Yj8oQj1wLmVxKDApLEIuZGF0YShiLHc9Qi5kYXRhKGIpfHx7fSkpOkQmJih3PWRbRF18fChkW0RdPXt9KSk7dy5pZCYmY2xlYXJUaW1lb3V0KHcuaWQpO2RlbGV0ZSB3LmlkO2lmKEEpdy5mbj1mdW5jdGlvbihiKXtBLmFwcGx5KHAsaC5jYWxsKHksSikpJiYhYj9uKCk6ZygpfSxuKCk7ZWxzZXtpZih3LmZuKXJldHVybiB2b2lkIDA9PT1GP2coKTp3LmZuKCExPT09RiksITA7ZygpfX0iJDpub211bmdlIjt2YXIgZD0Ke30saD1BcnJheS5wcm90b3R5cGUuc2xpY2U7Yi5kb1RpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYy5hcHBseSh3aW5kb3csWzBdLmNvbmNhdChoLmNhbGwoYXJndW1lbnRzKSkpfTtiLmZuLmRvVGltZW91dD1mdW5jdGlvbigpe3ZhciBiPWguY2FsbChhcmd1bWVudHMpLGQ9Yy5hcHBseSh0aGlzLFsiZG9UaW1lb3V0IitiWzBdXS5jb25jYXQoYikpO3JldHVybiJudW1iZXIiPT09dHlwZW9mIGJbMF18fCJudW1iZXIiPT09dHlwZW9mIGJbMV0/dGhpczpkfX0pKGFhKTsoZnVuY3Rpb24oYil7dmFyIGM9eyIlIjpmdW5jdGlvbihiKXtyZXR1cm4iJSJ9LGI6ZnVuY3Rpb24oYil7cmV0dXJuIHBhcnNlSW50KGIsMTApLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKGIpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGIsMTApKX0sZDpmdW5jdGlvbihiKXtyZXR1cm4gcGFyc2VJbnQoYiwxMCk/cGFyc2VJbnQoYiwxMCk6MH0sdTpmdW5jdGlvbihiKXtyZXR1cm4gTWF0aC5hYnMoYil9LApmOmZ1bmN0aW9uKGIsYyl7cmV0dXJuLTE8Yz9NYXRoLnJvdW5kKHBhcnNlRmxvYXQoYikqTWF0aC5wb3coMTAsYykpL01hdGgucG93KDEwLGMpOnBhcnNlRmxvYXQoYil9LG86ZnVuY3Rpb24oYil7cmV0dXJuIHBhcnNlSW50KGIsMTApLnRvU3RyaW5nKDgpfSxzOmZ1bmN0aW9uKGIpe3JldHVybiBifSx4OmZ1bmN0aW9uKGIpe3JldHVybigiIitwYXJzZUludChiLDEwKS50b1N0cmluZygxNikpLnRvTG93ZXJDYXNlKCl9LFg6ZnVuY3Rpb24oYil7cmV0dXJuKCIiK3BhcnNlSW50KGIsMTApLnRvU3RyaW5nKDE2KSkudG9VcHBlckNhc2UoKX19LGQ9LyUoPzooXGQrKT8oPzpcLihcZCspKT98XCgoW14pXSspXCkpKFslYmNkdWZvc3hYXSkvZyxoPWZ1bmN0aW9uKGIpe2lmKDE9PWIubGVuZ3RoJiYib2JqZWN0Ij09dHlwZW9mIGJbMF0pcmV0dXJuIGI9YlswXSxmdW5jdGlvbihkLGgsbCxxLHksSixEKXtyZXR1cm4gY1t5XShiW3FdKX07dmFyIGQ9MDtyZXR1cm4gZnVuY3Rpb24oaCxsLEIsCncseSxKLEQpe3JldHVybiBjW3ldKGJbZCsrXSxCKX19O2IuZXh0ZW5kKHtzcHJpbnRmOmZ1bmN0aW9uKGIpe3ZhciBjPUFycmF5LmFwcGx5KG51bGwsYXJndW1lbnRzKS5zbGljZSgxKTtyZXR1cm4gYi5yZXBsYWNlKGQsaChjKSl9LHZzcHJpbnRmOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIucmVwbGFjZShkLGgoYykpfX0pfSkoYWEpO3RoaXMuSlNPTnx8KHRoaXMuSlNPTj17fSk7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihiKXtyZXR1cm4gMTA+Yj8iMCIrYjpifWZ1bmN0aW9uIGMoYil7bS5sYXN0SW5kZXg9MDtyZXR1cm4gbS50ZXN0KGIpPyciJytiLnJlcGxhY2UobSxmdW5jdGlvbihiKXt2YXIgYz1wW2JdO3JldHVybiJzdHJpbmciPT09dHlwZW9mIGM/YzoiXFx1IisoIjAwMDAiK2IuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pKyciJzonIicrYisnIid9ZnVuY3Rpb24gZChiLGgpe3ZhciBtLHAsRixBLHU9cSx0LEg9aFtiXTtIJiYib2JqZWN0Ij09PXR5cGVvZiBIJiYKImZ1bmN0aW9uIj09PXR5cGVvZiBILnRvSlNPTiYmKEg9SC50b0pTT04oYikpOyJmdW5jdGlvbiI9PT10eXBlb2YgQiYmKEg9Qi5jYWxsKGgsYixIKSk7c3dpdGNoKHR5cGVvZiBIKXtjYXNlICJzdHJpbmciOnJldHVybiBjKEgpO2Nhc2UgIm51bWJlciI6cmV0dXJuIGlzRmluaXRlKEgpP1N0cmluZyhIKToibnVsbCI7Y2FzZSAiYm9vbGVhbiI6Y2FzZSAibnVsbCI6cmV0dXJuIFN0cmluZyhIKTtjYXNlICJvYmplY3QiOmlmKCFIKXJldHVybiJudWxsIjtxKz1uO3Q9W107aWYoIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoSCkpe0E9SC5sZW5ndGg7Zm9yKG09MDttPEE7bSs9MSl0W21dPWQobSxIKXx8Im51bGwiO0Y9MD09PXQubGVuZ3RoPyJbXSI6cT8iW1xuIitxK3Quam9pbigiLFxuIitxKSsiXG4iK3UrIl0iOiJbIit0LmpvaW4oIiwiKSsiXSI7cT11O3JldHVybiBGfWlmKEImJiJvYmplY3QiPT09dHlwZW9mIEIpZm9yKEE9Qi5sZW5ndGgsCm09MDttPEE7bSs9MSlwPUJbbV0sInN0cmluZyI9PT10eXBlb2YgcCYmKEY9ZChwLEgpKSYmdC5wdXNoKGMocCkrKHE/IjogIjoiOiIpK0YpO2Vsc2UgZm9yKHAgaW4gSClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChILHApJiYoRj1kKHAsSCkpJiZ0LnB1c2goYyhwKSsocT8iOiAiOiI6IikrRik7Rj0wPT09dC5sZW5ndGg/Int9IjpxPyJ7XG4iK3ErdC5qb2luKCIsXG4iK3EpKyJcbiIrdSsifSI6InsiK3Quam9pbigiLCIpKyJ9IjtxPXU7cmV0dXJuIEZ9fSJmdW5jdGlvbiIhPT10eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9KU09OJiYoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGMpe3JldHVybiBpc0Zpbml0ZSh0aGlzLnZhbHVlT2YoKSk/dGhpcy5nZXRVVENGdWxsWWVhcigpKyItIitiKHRoaXMuZ2V0VVRDTW9udGgoKSsxKSsiLSIrYih0aGlzLmdldFVUQ0RhdGUoKSkrIlQiK2IodGhpcy5nZXRVVENIb3VycygpKSsiOiIrYih0aGlzLmdldFVUQ01pbnV0ZXMoKSkrIjoiKwpiKHRoaXMuZ2V0VVRDU2Vjb25kcygpKSsiWiI6bnVsbH0sU3RyaW5nLnByb3RvdHlwZS50b0pTT049TnVtYmVyLnByb3RvdHlwZS50b0pTT049Qm9vbGVhbi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnZhbHVlT2YoKX0pO3ZhciBoPS9bXHUwMDAwXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csbT0vW1xcXCJceDAwLVx4MWZceDdmLVx4OWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxxLG4scD17IlxiIjoiXFxiIiwiXHQiOiJcXHQiLCJcbiI6IlxcbiIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCciJzonXFwiJywiXFwiOiJcXFxcIn0sQjsiZnVuY3Rpb24iIT09dHlwZW9mIEpTT04uc3RyaW5naWZ5JiYKKEpTT04uc3RyaW5naWZ5PWZ1bmN0aW9uKGIsYyxnKXt2YXIgaDtuPXE9IiI7aWYoIm51bWJlciI9PT10eXBlb2YgZylmb3IoaD0wO2g8ZztoKz0xKW4rPSIgIjtlbHNlInN0cmluZyI9PT10eXBlb2YgZyYmKG49Zyk7aWYoKEI9YykmJiJmdW5jdGlvbiIhPT10eXBlb2YgYyYmKCJvYmplY3QiIT09dHlwZW9mIGN8fCJudW1iZXIiIT09dHlwZW9mIGMubGVuZ3RoKSl0aHJvdyBFcnJvcigiSlNPTi5zdHJpbmdpZnkiKTtyZXR1cm4gZCgiIix7IiI6Yn0pfSk7ImZ1bmN0aW9uIiE9PXR5cGVvZiBKU09OLnBhcnNlJiYoSlNPTi5wYXJzZT1mdW5jdGlvbihiLGMpe2Z1bmN0aW9uIGQoYixnKXt2YXIgaCxsLG09YltnXTtpZihtJiYib2JqZWN0Ij09PXR5cGVvZiBtKWZvcihoIGluIG0pT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobSxoKSYmKGw9ZChtLGgpLHZvaWQgMCE9PWw/bVtoXT1sOmRlbGV0ZSBtW2hdKTtyZXR1cm4gYy5jYWxsKGIsZyxtKX12YXIgZztoLmxhc3RJbmRleD0wO2gudGVzdChiKSYmCihiPWIucmVwbGFjZShoLGZ1bmN0aW9uKGIpe3JldHVybiJcXHUiKygiMDAwMCIrYi5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpfSkpO2lmKC9eW1xdLDp7fVxzXSokLy50ZXN0KGIucmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLCJAIikucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csIl0iKS5yZXBsYWNlKC8oPzpefDp8LCkoPzpccypcWykrL2csIiIpKSlyZXR1cm4gZz1ldmFsKCIoIitiKyIpIiksImZ1bmN0aW9uIj09PXR5cGVvZiBjP2QoeyIiOmd9LCIiKTpnO3Rocm93IG5ldyBTeW50YXhFcnJvcigiSlNPTi5wYXJzZSIpO30pfSkoKTtkLm1vZFsiQWpheCBJbnRlZ3JhdG9yIl09e3ZlcjoiTi9BIixhdXRob3I6Ilx1NTQxMVx1NjVlNSIsZm46eyJiMTdhMDQ2My1lNDZjLTQ0MjAtYThmNS1mMTY5ZmFjMjBhZWMiOntkZXNjOiJBamF4XHU1MzE2XHU5ODAxXHU5NzYyXHU4YjgwXHU1M2Q2IiwKcGFnZTp7MzI6ITB9LHR5cGU6NyxvcHRpb25zOnt2aWV3QWpheERpc3BsYXlNb2RlOntkZXNjOiJcdTk4NmZcdTc5M2FcdTZhMjFcdTVmMGYiLHR5cGU6InNlbGVjdCIsY2hvaWNlczpbIlx1NTVhZVx1OTgwMVx1NmEyMVx1NWYwZiIsIlx1NWVmNlx1NWM1NVx1NmEyMVx1NWYwZiIsIlx1NWVmNlx1NWM1NVx1NmEyMVx1NWYwZihcdTk2YjFcdTg1Y2ZcdThmNDlcdTk4MDFcdTY4M2MpIl0sZGVmYXVsdFZhbHVlOiJcdTVlZjZcdTVjNTVcdTZhMjFcdTVmMGYifSxuQ2hlY2tJbnRlcnZhbDp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU2NmY0XHU2NWIwXHU5NTkzXHU5Njk0KFx1NzlkMikiLGRlZmF1bHRWYWx1ZTo2MCx0eXBlOiJ0ZXh0In0sYWRkVmlld0FqYXhQYWdlTGlua3M6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1OGY0OVx1OTgwMVx1OTAyM1x1N2Q1MFx1ODFmM1x1OTAyM1x1N2Q1MFx1NTE0M1x1NGVmNiIsZGVmYXVsdFZhbHVlOiEwLHR5cGU6ImNoZWNrYm94In0sYXV0b1JldHJ5QWZ0ZXJSZXBseUZhaWw6e2Rlc2M6Ilx1NTZkZVx1ODk4Nlx1NTkzMVx1NjU1N1x1NjY0Mlx1ODFlYVx1NTJkNVx1OTFjZFx1OGE2NiIsCmRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGNoZWNrT25Cb3R0b206e2Rlc2M6Ilx1NTNlYVx1NjcwOVx1NTIzMFx1OTgwMVx1NWU5NVx1NjY0Mlx1NjI0ZFx1ODFlYVx1NTJkNVx1NjZmNFx1NjViMFx1NWUxNlx1NWI1MCIsZGVmYXVsdFZhbHVlOiEwLHR5cGU6ImNoZWNrYm94In19LG9uY2U6ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZyhiKXtjKCd0YWJsZVt3aWR0aFx4M2QiOTklIl0gXHgzZSB0Ym9keSBceDNlIHRyIFx4M2UgdGQgXHgzZSBzdHJvbmcnKS50ZXh0KGIuZmluZCgndGFibGVbd2lkdGhceDNkIjk5JSJdIFx4M2UgdGJvZHkgXHgzZSB0ciBceDNlIHRkIFx4M2Ugc3Ryb25nOmZpcnN0JykudGV4dCgpKX1mdW5jdGlvbiBsKGIsaCl7dmFyIGw9YygiLnJlcGxpZXJzOmZpcnN0IixiKS51cCgiZGl2Iik7bC5maW5kKCJzY3JpcHQiKS5yZW1vdmUoKTtpZigtMSE9PUMuc2VhcmNoLmluZGV4T2YoInR5cGVceDNkRk4iKSl7dmFyIG09YygiLlBhZ2VNaWRkbGVQYW5lbCBceDNlIGRpdiIsCmIpLmNoaWxkcmVuKCk7MTxtLmxlbmd0aCYmbS5maW5kKCJzY3JpcHQiKS5yZW1vdmUoKS5lbmQoKS5zbGljZSgxKS5yZW1vdmUoKS5hcHBlbmRUbyhsKS5maWx0ZXIoInRhYmxlIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcyk7Yi5yZXBsYWNlV2l0aChiLmZpbmQoIlx4M2UgdGJvZHkgXHgzZSB0ciBceDNlIHRkW2FsaWduXSBceDNlICoiKSl9KX1sLnByZXYoKS5wcmVwZW5kVG8obCk7MiE9dyYmKG09bC5wYXJlbnQoKS5maW5kKCdzZWxlY3RbbmFtZVx4M2QicGFnZSJdJyksbS5kYXRhKCJhbi1wYWdlbm8iLG0udmFsKCkpLGg+bi5sYXN0JiZjKCdzZWxlY3RbbmFtZVx4M2QicGFnZSJdOmxhc3QnKS51cCgiZGl2IiwzKS5yZXBsYWNlV2l0aChtLmZpcnN0KCkudXAoImRpdiIsMykuY2xvbmUoITApKSk7ZyhsKTtpZihiKXtmb3IobT0xO208PW4ubGFzdDttKyspaWYoblttXSYmaDxtKXtsLmluc2VydEJlZm9yZShuW21dKTticmVha31tPm4ubGFzdCYmbC5pbnNlcnRBZnRlcihuW24ubGFzdF0pOwpkLm1vZEZuLmV4ZWNNb2RzKGwpfWlmKCFuLmxhc3R8fGgmJmg+bi5sYXN0KW4ubGFzdD1ofHxwO3JldHVybiBuW2h8fHBdPWx9ZnVuY3Rpb24gaChiLGcpe2Z1bmN0aW9uIGgoYyl7MD09PXcmJm5bcF0uaGlkZSgpOyQucHVzaFN0YXRlPyQucHVzaFN0YXRlKG51bGwsbnVsbCxkLnV0aWwuZ2V0VVJMKHtwYWdlOmJ9KSk6Qy5oYXNoPSJwYWdlXHgzZCIrYjtnfHxjWzBdLnNjcm9sbEludG9WaWV3KCk7cD1iO2Quc2hhcmVkKCJsb2ciLCJcdThmNDlcdTk4MDFcdTViOGNcdTYyMTAiKTt2LnRyaWdnZXIoe3R5cGU6IndvcmtlbmQiLGlzUGFnZUNoYW5nZUVuZDohMCxwcmV2aW91c2x5Q2FjaGVkOm19KX1pZigheSl7aWYoMT5iKXJldHVybiBkb2N1bWVudC5ib2R5LnNjcm9sbEludG9WaWV3KCk7aWYoYj5CKXJldHVybiBkb2N1bWVudC5ib2R5LnNjcm9sbEludG9WaWV3KCExKTt2YXIgbT0hIW5bYl07di50cmlnZ2VyKCJ3b3Jrc3RhcnQiKTtkLnNoYXJlZCgibG9nIixjLnNwcmludGYoIlx1NmI2M1x1NTcyOFx1OGY0OVx1ODFmM1x1N2IyYyVzXHU5ODAxLi4uIiwKYikpO20/aChuW2JdLnNob3coKSk6Yy5nZXREb2MoZC51dGlsLmdldFVSTCh7cGFnZTpifSksZnVuY3Rpb24oYyl7aChsKGMsYikpfSl9fWZ1bmN0aW9uIG0oYil7eXx8KDQxPT1uLmxhc3Q/ZC5zaGFyZWQoImxvZyIsIjEwMDEhIik6MD09PXcmJnAhPUI/Ynx8aChwKzEsYik6MCE9PXcmJm4ubGFzdCE9Qj9oKG4ubGFzdCsxLGIpOih2LnRyaWdnZXIoIndvcmtzdGFydCIpLGQuc2hhcmVkKCJsb2ciLCJcdTZiNjNcdTU3MjhcdThiODBcdTUzZDZcdTY3MDBcdTY1YjBcdTU2ZGVcdTg5ODYuLi4iKSxjLmdldERvYyhkLnV0aWwuZ2V0VVJMKHtwYWdlOm4ubGFzdH0pLGZ1bmN0aW9uKGwpe2wuZmluZCgic2NyaXB0IikucmVtb3ZlKCk7ZyhsKTt2YXIgbT1sLnJlcGxpZXMoKTtsPWwuZmluZCgnc2VsZWN0W25hbWVceDNkInBhZ2UiXTpmaXJzdCcpO3ZhciBwPW5bbi5sYXN0XS5yZXBsaWVzKCkubGVuZ3RoLHE9bC5jaGlsZHJlbigpLmxlbmd0aCx0PW0ubGVuZ3RoLXAsSD1xPkI7aWYoMD49CnQmJiFIKWQuc2hhcmVkKCJsb2ciLCJcdTZjOTJcdTY3MDlcdTY1YjBcdTU2ZGVcdTg5ODYiKTtlbHNle3ZhciB5PWMoKTswPHQmJih5PXkuYWRkKG0uc2xpY2UocCkuY2xvc2VzdCgndGFibGVbd2lkdGhceDNkIjEwMCUiXScpLmluc2VydEFmdGVyKG5bbi5sYXN0XS5jaGlsZHJlbigndGFibGVbd2lkdGhceDNkIjEwMCUiXTpsYXN0JykpKSxuW24ubGFzdF0ualJlcGxpZXM9bnVsbCxkLnNoYXJlZCgibG9nIixjLnNwcmludGYoIlx1NTJhMFx1NTE2NSVzXHU1MDBiXHU2NWIwXHU1NmRlXHU4OTg2Iix0KSkpO2lmKEgpaWYoQj1xLDIhPXcmJihjKCdzZWxlY3RbbmFtZVx4M2QicGFnZSJdJykuZWFjaChmdW5jdGlvbigpe2Zvcih2YXIgYj1jKHRoaXMpLGQ9Yi5jaGlsZHJlbigpLmxlbmd0aDtkPHE7KWIuYXBwZW5kKGMuc3ByaW50ZignXHgzY29wdGlvbiB2YWx1ZVx4M2QiJShwYWdlTm8pcyJceDNlJShwYWdlTm8pc1x4M2Mvb3B0aW9uXHgzZScse3BhZ2VObzorK2R9KSl9KSxuW24ubGFzdF0uZmluZCgnc2VsZWN0W25hbWVceDNkInBhZ2UiXScpLmFkZChjKCdzZWxlY3RbbmFtZVx4M2QicGFnZSJdOmxhc3QnKSkudXAoImRpdiIsCjMpLnJlcGxhY2VXaXRoKGwuZGF0YSgiYW4tcGFnZW5vIixuLmxhc3QpLnVwKCJkaXYiLDMpKSksMD09PXcpZC5zaGFyZWQoImxvZyIsIlx1NzY3Y1x1NzNmZVx1NGUwYlx1NGUwMFx1OTgwMSwgXHU5MDIzXHU3ZDUwXHU1ZWZhXHU3YWNiIik7ZWxzZSB2Lm9uZSgid29ya2VuZCIsZnVuY3Rpb24oKXtoKG4ubGFzdCsxLGIpfSk7ZC5tb2RGbi5leGVjTW9kcyh5KX12LnRyaWdnZXIoIndvcmtlbmQiKX0pKSl9Yi5kZWZlcigxLCJcdTc5ZmJcdTk2NjRcdTUzOWZcdTY3MDlcdThmNDlcdTk4MDFcdTUyOWZcdTgwZmQiLGZ1bmN0aW9uKCl7d2luZG93LmNoYW5nZVBhZ2U9Yy5ub29wfSk7ZC51dGlsLnN0YWNrU3R5bGUoJy5oa2dfYm90dG9tYmFyX2xpbmtbaHJlZl5ceDNkImphdmFzY3JpcHQ6IEJsb2NrVXNlcigiXSB7IGRpc3BsYXk6IG5vbmU7IH0nKTt2YXIgcT0xMDAxO3YuYmluZCgiY2xpY2sudXNlcmxpbmtib3giLGZ1bmN0aW9uKGIpe3ZhciBkPWMoYi50YXJnZXQpO2QuaXMoJ2FbaHJlZl5ceDNkImphdmFzY3JpcHQ6IFRvZ2dsZVVzZXJEZXRhaWwiXScpJiYKKGIucHJldmVudERlZmF1bHQoKSxiPWQuZGF0YSgiYW4tYm94SWQiKSxifHwoYj1xKyssZC5kYXRhKCJhbi1ib3hJZCIsYikubmV4dEFsbCgiZGl2W2lkXlx4M2RUaHJlYWRVc2VyXSIpLmF0dHIoImlkIiwiVGhyZWFkVXNlciIrYikpLHdpbmRvdy5Ub2dnbGVVc2VyRGV0YWlsKGIsZC5jbG9zZXN0KCJbdXNlcmlkXSIpWzBdLmlkKSl9KTt2YXIgbj17fSxwPWIucGFnZU5vKCksQj1jKCdzZWxlY3RbbmFtZVx4M2QicGFnZSJdOmZpcnN0JykuY2hpbGRyZW4oKS5sZW5ndGgsdz1jLmluQXJyYXkoZC51dGlsLmdldE9wdGlvbnMoInZpZXdBamF4RGlzcGxheU1vZGUiKSx0aGlzLm9wdGlvbnMudmlld0FqYXhEaXNwbGF5TW9kZS5jaG9pY2VzKTtkLnV0aWwuaXNMb2dnZWRJbigpJiZjKCIjYXNwbmV0Rm9ybSIpLnN1Ym1pdChmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7Yy5kb1RpbWVvdXQoImF1dG9SZXRyeVJlcGx5Iik7eT8oZC5zaGFyZWQoImxvZyIsIlx1NmI2M1x1NTcyOFx1NWRlNVx1NGY1Y1x1NGUyZCwgXHU1YjhjXHU2MjEwXHU1YzA3XHU4MWVhXHU1MmQ1XHU5MWNkXHU4YTY2IiksCnYub25lKCJ3b3JrZW5kIixmdW5jdGlvbigpe2MuZG9UaW1lb3V0KCJhdXRvUmV0cnlSZXBseSIsMCxmdW5jdGlvbigpe2MoIiNhc3BuZXRGb3JtIikuc3VibWl0KCl9KX0pKToodi50cmlnZ2VyKCJ3b3Jrc3RhcnQiKSxkLnNoYXJlZCgibG9nIiwiXHU2YjYzXHU1NzI4XHU3NjdjXHU5MDAxXHU1NmRlXHU4OTg2Li4uIiksYy5wb3N0KEMucGF0aG5hbWUrQy5zZWFyY2gsYygiI2FzcG5ldEZvcm0iKS5zZXJpYWxpemUoKSsiXHgyNmN0bDAwJTI0Q29udGVudFBsYWNlSG9sZGVyMSUyNGJ0bl9TdWJtaXQueFx4M2QwXHgyNmN0bDAwJTI0Q29udGVudFBsYWNlSG9sZGVyMSUyNGJ0bl9TdWJtaXQueVx4M2QwXHgyNmN0bDAwJTI0Q29udGVudFBsYWNlSG9sZGVyMSUyNGJ0bl9TdWJtaXRceDNkXHU1ZjM1XHU4Y2JjIixmdW5jdGlvbihiKXsidmlldyIhPT1jLmRvYyhiKS5wYWdlTmFtZSgpPyhkLnV0aWwuZ2V0T3B0aW9ucygiYXV0b1JldHJ5QWZ0ZXJSZXBseUZhaWwiKT8oZC5zaGFyZWQoImxvZyIsIlx1NTZkZVx1ODk4Nlx1NzY3Y1x1OTAwMVx1NTkzMVx1NjU1NywgNVx1NzlkMlx1NWY4Y1x1OTFjZFx1NjViMFx1NzY3Y1x1OTAwMS4uLiIpLApjLmRvVGltZW91dCgiYXV0b1JldHJ5UmVwbHkiLDVFMyxmdW5jdGlvbigpe2MoIiNhc3BuZXRGb3JtIikuc3VibWl0KCl9KSk6ZC5zaGFyZWQoImxvZyIsIlx1NTZkZVx1ODk4Nlx1NzY3Y1x1OTAwMVx1NTkzMVx1NjU1NyEiKSx2LnRyaWdnZXIoIndvcmtlbmQiKSk6KGMoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX21lc3NhZ2V0ZXh0IikudmFsKCIiKSxjKCIjcHJldmlld0FyZWEiKS5lbXB0eSgpLGQuc2hhcmVkKCJsb2ciLCJcdTU2ZGVcdTg5ODZcdTc2N2NcdTkwMDFcdTViOGNcdTYyMTAiKSx2LnRyaWdnZXIoIndvcmtlbmQiKSxtKCEwKSl9KSl9KTt2YXIgeT0hMTt2LmJpbmQoIndvcmtzdGFydCB3b3JrZW5kIixmdW5jdGlvbihiKXt5PSJ3b3Jrc3RhcnQiPT1iLnR5cGV9KTt2LmJpbmQoImNsaWNrIixmdW5jdGlvbihiKXt2YXIgZz1jKGIudGFyZ2V0KTtnLnBhcmVudCgiYSIpLmxlbmd0aCYmKGc9Zy5wYXJlbnQoKSk7Zy5pcygiYSIpJiZnLnBhcmVudCgiZGl2Iikuc2libGluZ3MoImRpdiIpLmNoaWxkcmVuKCdzZWxlY3RbbmFtZVx4M2QicGFnZSJdJykubGVuZ3RoJiYKKGIucHJldmVudERlZmF1bHQoKSxoKGQudXRpbC5nZXRQYWdlTm8oZy5hdHRyKCJocmVmIikpKSl9KTsyPT13P2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZigiJShwYWdlRGl2KXMgXHgzZSBkaXYsICUocGFnZURpdilzIFx4M2UgYnIsICUocGFnZURpdilzICsgYnIgeyBkaXNwbGF5OiBub25lOyB9Iix7cGFnZURpdjonI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdmlld19mb3JtIFx4M2UgZGl2W3N0eWxlXlx4M2Qid2lkdGgiXSd9KSk6di5iaW5kKCJjaGFuZ2UiLGZ1bmN0aW9uKGIpe2I9YyhiLnRhcmdldCk7aWYoYi5pcygnc2VsZWN0W25hbWVceDNkInBhZ2UiXScpKXt2YXIgZD1iLnZhbCgpO2IudmFsKGIuZGF0YSgiYW4tcGFnZW5vIikpO2goMSpkKX19KTtsKCk7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihkKXtpZigwPD1kLnRpbWV8fHkpcmV0dXJuIDA8PWQudGltZSYmaC50ZXh0KGQudGltZS0tKyJcdTc5ZDIiKSwhMDtjLmRvVGltZW91dCgiY2hlY2tib3R0b20iLDUwMCwKZyl9ZnVuY3Rpb24gZygpe2lmKGwmJjUwMDxuW24ubGFzdF0ub2Zmc2V0KCkudG9wK25bbi5sYXN0XS5oZWlnaHQoKS12LnNjcm9sbFRvcCgpLWJhLmhlaWdodCgpKXJldHVybiEwO20oITApfXZhciBoPWMoIlx4M2NzcGFuXHgzZU4vQVx4M2Mvc3Bhblx4M2UiKS5hcHBlbmRUbyhkLnNoYXJlZCgiYWRkSW5mbyIsIlx1OGRkZFx1OTZlMlx1NjZmNFx1NjViMDogIikpLGw9ZC51dGlsLmdldE9wdGlvbnMoImNoZWNrT25Cb3R0b20iKSxxPWQudXRpbC5nZXRPcHRpb25zKCJuQ2hlY2tJbnRlcnZhbCIpO2lmKCFxfHwxMD5xKXE9MTA7di5iaW5kKCJ3b3Jrc3RhcnQgd29ya2VuZCIsZnVuY3Rpb24oZCl7Yy5kb1RpbWVvdXQoImNoZWNrYm90dG9tIik7aC50ZXh0KCJOL0EiKTsid29ya2VuZCIhPWQudHlwZXx8MD09PXcmJnAhPUJ8fGMuZG9UaW1lb3V0KCJjaGVja2JvdHRvbSIsMUUzLGIse3RpbWU6ZC5pc1BhZ2VDaGFuZ2VFbmQmJihkLnByZXZpb3VzbHlDYWNoZWR8fG4ubGFzdCE9Qik/CjE6cX0pfSl9KSgpOyhmdW5jdGlvbigpe3ZhciBiPWMoIlx4M2NhIC9ceDNlIikuYXBwZW5kVG8oZC5zaGFyZWQoImFkZEluZm8iLCJcdTY3MmNcdTk4MDFcdTk4MDFcdTY1Nzg6ICIpKTt2LmJpbmQoIndvcmtlbmQiLGZ1bmN0aW9uKGMpe2MuaXNQYWdlQ2hhbmdlRW5kJiZiLmF0dHIoImhyZWYiLGQudXRpbC5nZXRVUkwoe3BhZ2U6cH0pKS50ZXh0KCJcdTdiMmMiK3ArIlx1OTgwMSIpfSl9KSgpO3YudHJpZ2dlcih7dHlwZToid29ya2VuZCIsaXNQYWdlQ2hhbmdlRW5kOiEwfSk7Yi5kZWZlcigyLCJcdTUyYTBcdTUxNjVcdThiODBcdTUzZDZcdTYzMDlcdTYyNmQiLGZ1bmN0aW9uKCl7ZC5zaGFyZWQoImFkZEJ1dHRvbiIsIlx1NjZmNFx1NjViMFx1NWUxNlx1NWI1MCIsZnVuY3Rpb24oKXttKCExKX0pfSk7ZC51dGlsLmdldE9wdGlvbnMoImFkZFZpZXdBamF4UGFnZUxpbmtzIikmJihkLnNoYXJlZCgiYWRkTGluayIsIlx1NGUwYVx1NGUwMFx1OTgwMSIsZnVuY3Rpb24oKXtoKHAtMSl9LAowKSxkLnNoYXJlZCgiYWRkTGluayIsIlx1NGUwYlx1NGUwMFx1OTgwMSIsZnVuY3Rpb24oKXtoKHArMSl9LDIpKX19LCJiYzI1MjFjZC1jZjY1LTRjYzUtYWM5ZC00ZmVkZWYzYzNhOTciOntkZXNjOiJBamF4XHU1ZjBmXHU1MjE3XHU4ODY4XHU2NmY0XHU2NWIwIixwYWdlOns0OiEwfSx0eXBlOjcsb3B0aW9uczp7bk51bU9mVG9waWNQYWdlOntkZXNjOiJcdTUyMTdcdTg4NjhcdTk4NmZcdTc5M2FcdTY1NzhcdTkxY2YiLGRlZmF1bHRWYWx1ZToxLHR5cGU6InRleHQifSxiQWRkR2V0QnRuX1Q6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NjZmNFx1NjViMFx1NTIxN1x1ODg2OFx1NjMwOVx1NjI2ZCIsZGVmYXVsdFZhbHVlOiEwLHR5cGU6ImNoZWNrYm94In0sYkF1dG9SZWZyZXNoX1Q6e2Rlc2M6Ilx1OTgxMFx1OGEyZFx1NTU1Zlx1NzUyOFx1ODFlYVx1NTJkNVx1NjZmNFx1NjViMCIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sYkFkZFRvZ2dsZUF1dG9CdG5fVDp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU1MjA3XHU2M2RiXHU4MWVhXHU1MmQ1XHU2NmY0XHU2NWIwXHU2MzA5XHU2MjZkIiwKZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sblJlZnJlc2hJbnRlcnZhbF9UOntkZXNjOiJcdTgxZWFcdTUyZDVcdTY2ZjRcdTY1YjBcdTk1OTNcdTk2OTQoXHU3OWQyKSIsZGVmYXVsdFZhbHVlOjYwLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbihiKXt2YXIgZz0hMSxsPVtdLGg9KGMoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX2pzTGFiZWwiKS5odG1sKCl8fCIiKS5tYXRjaCgvUGFnZU1ldGhvZHMuKy9tKSxtPWZ1bmN0aW9uKHcseSxKLEQpe2NsZWFyVGltZW91dChuKTtpZighZ3x8SilnPSEwLGlzTmFOKHcpJiYodz0xLER8fGQuc2hhcmVkKCJsb2ciLCJcdTZiNjNcdTU3MjhcdThiODBcdTUzZDZcdTY3MDBcdTY1YjBcdTUyMTdcdTg4NjguLi4iKSksRCYmIXkmJih5PWMoJ2ltZ1thbHRceDNkIm5leHQiXVtzcmNceDNkImltYWdlcy9idXR0b24tbmV4dC5naWYiXScpLnBhcmVudCgpLmF0dHIoImhyZWYiKSksYy5EZWZlcnJlZChmdW5jdGlvbihkKXtpZigheSYmCmgpe3ZhciBnPWhbMF0uc3BsaXQoL1soKV0vKSxsPXdpbmRvdztjLmVhY2goZ1swXS5zcGxpdCgiLiIpLGZ1bmN0aW9uKGIsYyl7bD1sW2NdfSk7bC5hcHBseShudWxsLGdbMV0ucmVwbGFjZSgvJy9nLCIiKS5zcGxpdCgvLFxzKi8pLnNsaWNlKDAsMikuY29uY2F0KGZ1bmN0aW9uKGcpe2QucmVzb2x2ZShjKCJceDNjdGJvZHlceDNlIikuYXBwZW5kKGIudG9waWNUYWJsZSgpLmZpbmQoInRyOmhhcyh0aCk6Zmlyc3QiKS5wcmV2QWxsKCkuYWRkQmFjaygpLmNsb25lKCkpLmFwcGVuZChnKSxiKX0sYy5ub29wKSl9ZWxzZSBjLmdldERvYyh5fHxDLmhyZWYsZnVuY3Rpb24oYil7ZC5yZXNvbHZlKGIudG9waWNzKCkualRib2R5LmZpbmQoInNjcmlwdCIpLnJlbW92ZSgpLmVuZCgpWzBdLGIpfSl9KS50aGVuKGZ1bmN0aW9uKGIsaCl7bC5wdXNoKGIpO3c+PWQudXRpbC5nZXRPcHRpb25zKCJuTnVtT2ZUb3BpY1BhZ2UiKT8odG9waWNUYWJsZT12LnRvcGljVGFibGUoKSxEfHx0b3BpY1RhYmxlLmVtcHR5KCksCnRvcGljVGFibGUuYXBwZW5kKGwpLGQubW9kRm4uZXhlY01vZHMoYyhkb2N1bWVudCkudG9waWNUYWJsZSgpKSxsPVtdLER8fGQuc2hhcmVkKCJsb2ciLCJcdTUyMTdcdTg4NjhcdTY2ZjRcdTY1YjBcdTViOGNcdTYyMTAiKSxwJiYoRHx8ZC5zaGFyZWQoImxvZzIiLGMuc3ByaW50ZigiJXNcdTc5ZDJcdTVmOGNcdTUxOGRcdTZiMjFcdTkxY2RcdTY1YjBcdTY1NzRcdTU3Y2IuLi4uIixCKSkscSgpKSxnPSExKTptKCsrdyxoLmZpbmQoJ2ltZ1thbHRceDNkIm5leHQiXVtzcmNceDNkImltYWdlcy9idXR0b24tbmV4dC5naWYiXScpLnBhcmVudCgpLmF0dHIoImhyZWYiKSwhMCxEKX0pfTsxPGQudXRpbC5nZXRPcHRpb25zKCJuTnVtT2ZUb3BpY1BhZ2UiKSYmc2V0VGltZW91dChmdW5jdGlvbigpe20oMixudWxsLCExLCEwKX0sMCk7dmFyIHE9ZnVuY3Rpb24oKXtuPXNldFRpbWVvdXQoZnVuY3Rpb24oKXttKCl9LDFFMypCKX07ZC51dGlsLmdldE9wdGlvbnMoImJBZGRHZXRCdG5fVCIpJiYKYi5kZWZlcigyLCJcdTUyYTBcdTUxNjVcdTY2ZjRcdTY1YjBcdTYzMDlcdTYyNmQiLGZ1bmN0aW9uKCl7ZC5zaGFyZWQoImFkZEJ1dHRvbiIsIlx1NjZmNFx1NjViMFx1NTIxN1x1ODg2OCIsbSl9KTt2YXIgbixwPWQudXRpbC5nZXRPcHRpb25zKCJiQXV0b1JlZnJlc2hfVCIpLEI9ZC51dGlsLmdldE9wdGlvbnMoIm5SZWZyZXNoSW50ZXJ2YWxfVCIpOzMwPkImJihCPTMwKTtwJiZxKCk7ZC51dGlsLmdldE9wdGlvbnMoImJBZGRUb2dnbGVBdXRvQnRuX1QiKSYmZC5zaGFyZWQoImFkZEJ1dHRvbiIsIlx1NTIwN1x1NjNkYlx1ODFlYVx1NTJkNVx1NjZmNFx1NjViMCIsZnVuY3Rpb24oKXtwPyhjbGVhclRpbWVvdXQobiksZC5zaGFyZWQoImxvZyIsIlx1NWRmMlx1NTA1Y1x1NzUyOFx1ODFlYVx1NTJkNVx1NjZmNFx1NjViMCIpKToocSgpLGQuc2hhcmVkKCJsb2ciLCJcdTVkZjJcdTU1NWZcdTc1MjhcdTgxZWFcdTUyZDVcdTY2ZjRcdTY1YjAiKSk7cD0hcH0pfX19fTtkLm1vZC5LZXJuZWw9Cnt2ZXI6Ik4vQSIsYXV0aG9yOiJcdTU0MTFcdTY1ZTUiLGZuOntLZXJuZWxfSW5pdGlhbGl6ZXI6e2Rlc2M6Ilx1NTIxZFx1NTljYlx1NTMxNiIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjEsb25jZTpmdW5jdGlvbihiKXtjKCJoZWFkIikubGVuZ3RofHxjKCJodG1sIikucHJlcGVuZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoZWFkIikpO2MuYWpheFNldHVwKHtjYWNoZTohMSxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0XHgzZFVURi04In0pO2lmKCIzLjViIiE9ZC51dGlsLmRhdGEoIkFOLXZlcnNpb24iKSl7aWYoZC51dGlsLmRhdGEoIkFOLXZlcnNpb24iKSlyZXR1cm4gZC51dGlsLnN0b3JhZ2UobnVsbCksZC51dGlsLmRhdGEoIkFOLXZlcnNpb24iLCIzLjViIiksYWxlcnQoIlx1NzUzMVx1NjViY1x1NTE2N1x1NjgzOFx1NjUzOVx1NTJkNSwgXHU2MjQwXHU2NzA5XHU4YTJkXHU1YjlhXHU1ZGYyXHU4OGFiXHU5MWNkXHU4YTJkLlxuXHU0ZTBkXHU0ZmJmXHU0ZTRiXHU4NjU1LCBcdTY1NmNcdThhY2JcdTUzOWZcdThhZDIuIiksCkMucmVsb2FkKCk7ZC51dGlsLmRhdGEoIkFOLXZlcnNpb24iLCIzLjViIil9InZpZXciPT12LnBhZ2VOYW1lKCkmJmMoInNlbGVjdFtuYW1lXHgzZHBhZ2VdIikudmFsKGQudXRpbC5nZXRQYWdlTm8oQy5zZWFyY2gpKX19LCIxMWYxYzVjYS05NDU1LTRmOGUtYmFhNy0wNTRiNDJkOWEyYzQiOntkZXNjOiJcdTgxZWFcdTUyZDVcdThmNDlcdTU0MTFcdTZiNjNcdTc4YmFcdTk4MDFcdTk3NjIiLHBhZ2U6ezY1NTM0OiEwfSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe2lmKC0xIT1DLmhhc2guaW5kZXhPZigiI3BhZ2VceDNkIikmJmQudXRpbC5nZXRQYWdlTm8oQy5zZWFyY2gpIT1kLnV0aWwuZ2V0UGFnZU5vKEMuaGFzaCkpcmV0dXJuIEMucmVwbGFjZShkLnV0aWwuZ2V0VVJMKHtwYWdlOkMuaGFzaC5yZXBsYWNlKC8jcGFnZT0vLCIiKX0pLnJlcGxhY2UoLyZoaWdobGlnaHRfaWQ9MFxiLywiIikpfX0sImE1OTlkYWZhLWI1NTAtNGIyOC05MjFhLTAxOWM3MmY0ODFlNSI6e2Rlc2M6Ilx1OTY2NFx1OTMyZlx1NmEyMVx1NWYwZiBbXHU5NjY0XHU5MzJmXHU2MzA5XHU2MjZkXHUzMDAxXHU2NmY0XHU2ZTk2XHU3OGJhXHU4YTU1XHU2ZTJjXHU3ZDUwXHU2NzljXHU3YjQ5XSIsCnBhZ2U6ezY1NTM1OiExfSx0eXBlOjEsb25jZTpmdW5jdGlvbihiKXtkLmJveC5kZWJ1Z01vZGU9ITA7ZC51dGlsLmFkZFN0eWxlKCIiKTtkLnV0aWwuZ2V0T3B0aW9ucygpO2QudXRpbC5nZXRPcHRpb25zLm9PcHRpb25zLmJBdXRvU2hvd0xvZz0hMDtkLnV0aWwuZ2V0T3B0aW9ucy5vT3B0aW9ucy5iU2hvd0RldGFpbExvZz0hMDt2LnBhZ2VDb2RlKCkmOTI/Yi50b3BpY3MoKToidmlldyI9PXYucGFnZU5hbWUoKSYmYi5yZXBsaWVzKCk7Yi5kZWZlcigxLCJcdTUyYTBcdTUxNjVcdTU1NWZcdTUyZDVGaXJlYnVnIExpdGVcdTc2ODRcdTYzMDlcdTYyNmQiLGZ1bmN0aW9uKCl7ZC5zaGFyZWQoImFkZEJ1dHRvbiIsIlx1NTU1Zlx1NTJkNUZpcmVidWcgTGl0ZSIsZnVuY3Rpb24oKXtjLmdldFNjcmlwdCgiaHR0cDovL2dldGZpcmVidWcuY29tL3JlbGVhc2VzL2xpdGUvMS4yL2ZpcmVidWctbGl0ZS1jb21wcmVzc2VkLmpzIixmdW5jdGlvbigpe3dpbmRvdy5maXJlYnVnLmluaXQoKX0pfSl9KX19LAoiMTJjOThlYmMtODczYy00NjM2LWExMWEtMmM0YzZjZTdkNGMyIjp7ZGVzYzoiXHU4YTJkXHU1YjlhXHU1MTY3XHU2ODM4XHU2YTIzXHU1ZjBmIixwYWdlOns2NTUzNToiY29tcCJ9LHR5cGU6MixvcHRpb25zOntzVUlGb250Q29sb3I6e2Rlc2M6IlVJXHU0ZTNiXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiM4MDgwODAiLHR5cGU6InRleHQifSxzVUlIb3ZlckNvbG9yOntkZXNjOiJVSVx1OTAyM1x1N2Q1MFx1NjFmOFx1NmQ2ZVx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjOUFDRDMyIix0eXBlOiJ0ZXh0In0sc01haW5Gb250Q29sb3I6e2Rlc2M6Ilx1OGFkNlx1NThjN1x1NGUzYlx1ODk4MVx1NWI1N1x1OWFkNFx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjMDAwMDAwIix0eXBlOiJ0ZXh0In0sc01haW5Cb3JkZXJDb2xvcjp7ZGVzYzoiXHU4YWQ2XHU1OGM3XHU0ZTNiXHU4OTgxXHU5MDhhXHU2ODQ2XHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiMwMDAwMDAiLHR5cGU6InRleHQifSwKc1NlY0JvcmRlckNvbG9yOntkZXNjOiJcdThhZDZcdTU4YzdcdTZiMjFcdTg5ODFcdTkwOGFcdTY4NDZcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiI0NDQ0NDQyIsdHlwZToidGV4dCJ9LHNNYWluQmdDb2xvcjp7ZGVzYzoiXHU4YWQ2XHU1OGM3XHU0ZTNiXHU4OTgxXHU4MGNjXHU2NjZmXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNGRkZGRkYiLHR5cGU6InRleHQifSxzU2VjQmdDb2xvcjp7ZGVzYzoiXHU4YWQ2XHU1OGM3XHU2YjIxXHU4OTgxXHU4MGNjXHU2NjZmXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNGOEY4RjgiLHR5cGU6InRleHQifSxzTWFpbkhlYWRlckZvbnRDb2xvcjp7ZGVzYzoiXHU4YWQ2XHU1OGM3XHU2YTE5XHU5ODRjXHU1YjU3XHU5YWQ0XHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNGRkZGRkYiLHR5cGU6InRleHQifSxzTWFpbkhlYWRlckJnQ29sb3I6e2Rlc2M6Ilx1OGFkNlx1NThjN1x1NmExOVx1OTg0Y1x1ODBjY1x1NjY2Zlx1OTg0Zlx1ODI3MiIsCmRlZmF1bHRWYWx1ZToiIzMzNjY5OSIsdHlwZToidGV4dCJ9fSxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCcgXHRcdCNhbiwgI2FuIGxlZ2VuZCB7IGNvbG9yOiAlKHNNYWluRm9udENvbG9yKXM7IH0gXHRcdFx0XHQuYW4tZm9ydW0sIC5hbi1mb3J1bSB0ZXh0YXJlYSB7IGJhY2tncm91bmQtY29sb3I6ICUoc1NlY0JnQ29sb3IpczsgfSBcdFx0LmFuLWZvcnVtIGlucHV0W3R5cGVceDNkInRleHQiXSwgLmFuLWZvcnVtIHNlbGVjdCB7IGJhY2tncm91bmQtY29sb3I6ICUoc01haW5CZ0NvbG9yKXM7IGJvcmRlcjogMXB4IHNvbGlkICUoc01haW5Cb3JkZXJDb2xvcilzOyB9IFx0XHQuYW4tZm9ydW0gaW5wdXRbdHlwZVx4M2QidGV4dCJdOmRpc2FibGVkLCAuYW4tZm9ydW0gc2VsZWN0OmRpc2FibGVkIHsgY29sb3I6IGdyYXl0ZXh0OyB9IFx0XHQuYW4tZm9ydW0sIC5hbi1mb3J1bSBoNCwgLmFuLWZvcnVtIGRpdiwgLmFuLWZvcnVtIHRkLCAuYW4tZm9ydW0gZGwsIC5hbi1mb3J1bSBkdCwgLmFuLWZvcnVtIGRkLCAuYW4tZm9ydW0gdWwsIC5hbi1mb3J1bSBsaSwgLmFuLWZvcnVtIGEsIC5hbi1mb3J1bSBmaWVsZHNldCwgLmFuLWZvcnVtIGhyIHsgYm9yZGVyOiAwIHNvbGlkICUoc01haW5Cb3JkZXJDb2xvcilzOyB9IFx0XHQuYW4tZm9ydW0gKiB7IGNvbG9yOiAlKHNNYWluRm9udENvbG9yKXM7IH0gXHRcdC5hbi1mb3J1bSBhIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9IFx0XHQuYW4tZm9ydW0gYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IFx0XHQuYW4tZm9ydW0gdGFibGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgfSBcdFx0LmFuLWZvcnVtIHRkIHsgbGluZS1oZWlnaHQ6IDEuNWVtOyBwYWRkaW5nOiAwIDAuMmVtOyBib3JkZXItd2lkdGg6IDFweDsgfSBcdFx0LmFuLWZvcnVtLWhlYWRlcltjbGFzc10sIC5hbi1mb3J1bSB0aGVhZCB0ZCB7IGNvbG9yOiAlKHNNYWluSGVhZGVyRm9udENvbG9yKXM7IGJhY2tncm91bmQtY29sb3I6ICUoc01haW5IZWFkZXJCZ0NvbG9yKXM7IH0gXHRcdC5hbi1mb3J1bS1oZWFkZXJbY2xhc3NdIHsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyB9IFx0XHRcdFx0LmFuLWNvbnRlbnQtbm90ZSwgLmFuLWNvbnRlbnQtbGluZSwgLmFuLWNvbnRlbnQtYm94IHsgY29sb3I6ICUoc1VJRm9udENvbG9yKXM7IH0gXHRcdC5hbi1jb250ZW50LW5vdGUgeyBtYXJnaW4tcmlnaHQ6IDJweDsgY3Vyc29yOiBkZWZhdWx0OyB9IFx0XHQuYW4tY29udGVudC1saW5lIHsgZm9udC1zaXplOiAwLjYyNWVtOyBmb250LXN0eWxlOiBpdGFsaWM7IH0gXHRcdC5hbi1jb250ZW50LWJveCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYm9yZGVyOiAxcHggc29saWQ7IHBhZGRpbmc6IDFweCAycHg7IH0gXHRcdGEuYW4tY29udGVudC1saW5lLCBhLmFuLWNvbnRlbnQtYm94IHsgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7IH0gXHRcdGEuYW4tY29udGVudC1saW5lOmhvdmVyLCBhLmFuLWNvbnRlbnQtYm94OmhvdmVyIHsgY29sb3I6ICUoc1VJSG92ZXJDb2xvcilzOyB9IFx0XHQnLApkLnV0aWwuZ2V0T3B0aW9ucygpKSl9fSwiNzhhZjNjMjktOWJmMi00N2VlLTgwYmYtYTM1NzViNzExYzczIjp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU2YWEyXHU2N2U1XHU2NmY0XHU2NWIwIixkZWZlcjo1LHBhZ2U6ezQ6ITB9LHR5cGU6MSxvcHRpb25zOntiQWxzb0NoZWNrQmV0YTp7ZGVzYzoiXHU1NDBjXHU2NjQyXHU2YWEyXHU2N2U1QmV0YVx1NzI0OFx1NjcyYyIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sbkNoZWNrVXBkYXRlSW50ZXJ2YWw6e2Rlc2M6Ilx1NmFhMlx1NjdlNVx1NjZmNFx1NjViMFx1OTU5M1x1OTY5NChcdTVjMGZcdTY2NDIpIixkZWZhdWx0VmFsdWU6MTIsdHlwZToidGV4dCJ9fSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9ZC51dGlsLmdldE9wdGlvbnMoIm5DaGVja1VwZGF0ZUludGVydmFsIik7aWYoaXNOYU4oYil8fDE+YiliPTE7dmFyIGc9ZC51dGlsLmRhdGEoIm5MYXN0Q2hlY2tlZCIpfHwwO2MudGltZSgpLWc8MzZFNSpifHxkLnV0aWwuZ2V0RGF0YSgibWFpbiIsCmZ1bmN0aW9uKGIpe2QudXRpbC5kYXRhKCJuTGFzdENoZWNrZWQiLGMudGltZSgpKTtmb3IodmFyIGc9ZC51dGlsLmdldE9wdGlvbnMoImJBbHNvQ2hlY2tCZXRhIik/ImJldGEiOiJzdGFibGUiLG09Yi52ZXJbZ10uYW5udXVzLnNwbGl0KCIuIikscT1kLnZlcnNpb24uc3BsaXQoIi4iKSxuPTA7bjxtLmxlbmd0aDtuKyspaWYocVtuXSE9PW1bbl0peytxW25dPCttW25dJiYoZC51dGlsLmFkZFN0eWxlKCJcdFx0XHRcdFx0XHQjYW4tdXBkYXRlIFx4M2UgZGl2IHsgbWFyZ2luOiAyMHB4IDUwcHg7IH0gXHRcdFx0XHRcdFx0I2FuLXVwZGF0ZSBceDNlIGRpdiBceDNlIGEgeyBwYWRkaW5nOiAwIDVweDsgfSBcdFx0XHRcdFx0XHQiKSxkLnNoYXJlZC5ib3goImFuLXVwZGF0ZSIsIlx1NzY3Y1x1NzNmZVx1NjViMFx1NzI0OFx1NjcyYyIpLmFwcGVuZChjLnNwcmludGYoJ1x0XHRcdFx0XHRcdFx4M2NkaXZceDNlXHgzY2Rpdlx4M2VcdTczZmVcdTU3MjhcdTcyNDhcdTY3MmM6ICVzXHgzYy9kaXZceDNlXHgzY2Rpdlx4M2VcdTY3MDBcdTY1YjBcdTcyNDhcdTY3MmM6ICVzICVzXHgzYy9kaXZceDNlXHgzYy9kaXZceDNlIFx0XHRcdFx0XHRcdFx4M2NkaXYgc3R5bGVceDNkInRleHQtYWxpZ246IGNlbnRlciJceDNlXHgzY2EgaHJlZlx4M2QiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hlbGlhbnRodXMtYW5udXVzL3dpa2kvSG93VG9JbnN0YWxsIlx4M2VcdTRlMGJcdThmMDlcdTk4MDFceDNjL2FceDNlXHgzY2EgaHJlZlx4M2QiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hlbGlhbnRodXMtYW5udXVzL3dpa2kvQ2hhbmdlbG9nIlx4M2VcdTY2ZjRcdTY1YjBcdTY1ZTVcdThhOGNceDNjL2FceDNlXHgzYy9kaXZceDNlIFx0XHRcdFx0XHRcdCcsCmQudmVyc2lvbixiLnZlcltnXS5hbm51dXMsInN0YWJsZSI9PT1nfHxiLnZlci5zdGFibGUuYW5udXVzPT09Yi52ZXIuYmV0YS5hbm51dXM/InN0YWJsZSI6ImJldGEiKSksZC5zaGFyZWQuZ3JheSghMCwiYW4tdXBkYXRlIikpO2JyZWFrfX0pfX0sImMyMTdiZjU1LTZkNDQtNDJkMS04ZmMyLTJjZDE2NjJkNjA0YSI6e2Rlc2M6Ilx1OGY0OVx1OTgwMVx1NWY4Y1x1NTE4ZFx1NmIyMVx1OTA0Ylx1ODg0Y1x1NTI5Zlx1ODBmZCIscGFnZTp7NjQ6ITB9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7d2luZG93LlByb2ZpbGVfU2hvd0dvb2dsZUFkcz1kLm1vZEZuLmV4ZWNNb2RzfX0sIjcyMmI2OWY4LWI4MGQtNGIwZS1iNjA4LTg3OTQ2ZTAwY2ZkYyI6e2Rlc2M6Ilx1NWYzN1x1NTIzNlx1OTM5Nlx1NWI5YVx1OTVjYVx1NWVhNiIscGFnZTp7NjU1MzQ6ImNvbXAifSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe3ZhciBiPSJib2R5IHsgd29yZC13cmFwOiBicmVhay13b3JkOyB9IC5EaXZSZXNpemFibGVCb3hEZXRhaWxzIHsgd29yZC13cmFwOiBub3JtYWw7IH0iOwoidmlldyI9PT1jKGRvY3VtZW50KS5wYWdlTmFtZSgpJiYoYis9Ilx0XHRcdC5yZXBsaWVyc19yaWdodCB7IHRhYmxlLWxheW91dDogZml4ZWQ7IHdpZHRoOiAxMDAlOyB9IFx0XHRcdC5Db250ZW50R3JpZCB7IHdpZHRoOiBhdXRvOyBvdmVyZmxvdy14OiBoaWRkZW47IH0gXHRcdFx0Iik7ZC51dGlsLmFkZFN0eWxlKGIpfSxpbmZpbml0ZTpmdW5jdGlvbihiKXsxPT09Yi5wYWdlTm8oKSYmYi5yZXBsaWVzKCkuZXEoMCkuZmluZCgndGRbY29sc3Bhblx4M2QiMTAwJSJdJykuYXR0cigiY29sc3BhbiIsMil9fSwiMWI4MDRiNjctNDBhYi00NzUwLTg3NTktZTYzMzQ2ZDI4OWVmIjp7ZGVzYzoiXHU4YTJkXHU1YjlhXHU4YWQ2XHU1OGM3XHU2ZDZlXHU1MmQ1XHU3MjY5XHU0ZWY2XHU4MWYzXHU2NzAwXHU0ZTBhXHU1YzY0IixwYWdlOns2NTUzNDohMH0sdHlwZTo0LGluZmluaXRlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIi5UcmFuc3BhcmVudEdyYXlCYWNrZ3JvdW5kLCAuVHJhbnNwYXJlbnRHcmF5QmFja2dyb3VuZCArICogeyB6LWluZGV4OiAxMDsgfSIpfX0sCiI1ZDUzNzIwYy03ZjRmLTQ3NzctYTUxMS1jZjU3ZmVkNDEyY2QiOntkZXNjOiJcdTcyNzlcdTZiOGFcdThhMmRcdTViOWE6IFx1NTIxZFx1NTljYlx1NTMxNiIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjEsb25jZTpmdW5jdGlvbigpe3ZhciBiPXtuYW1lOiJhbi1jb25maWciLHZlcnNpb246Mi4xfTtkLnNoYXJlZC5nZXRDb25maWc9ZnVuY3Rpb24oKXt2YXIgZz1jLmV4dGVuZCh7fSxiKTtjLmVhY2goWyJhbl9kYXRhIiwiYW5fc3dpdGNoZXMiLCJhbl9vcHRpb25zIl0sZnVuY3Rpb24oYixjKXtnW2NdPWQudXRpbC5zdG9yYWdlKGMpfSk7cmV0dXJuIHdpbmRvdy5idG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShnKSkpKX07ZC5zaGFyZWQuc2V0Q29uZmlnPWZ1bmN0aW9uKGcpe3RyeXtnPUpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYihnKSkpKX1jYXRjaChsKXt0aHJvdyBFcnJvcigiXHU4YTJkXHU1YjlhXHU4Y2M3XHU2NTk5XHU1MjU2XHU2NzkwXHU5MzJmXHU4YWE0ISIpOwp9aWYoZy5uYW1lIT09Yi5uYW1lKXRocm93IEVycm9yKCJcdThhMmRcdTViOWFcdThjYzdcdTY1OTlcdTY4M2NcdTVmMGZcdTkzMmZcdThhYTQhIik7aWYoZy52ZXJzaW9uIT09Yi52ZXJzaW9uKXRocm93IEVycm9yKCJcdTRlMGRcdTc2ZjhcdTViYjlcdTc2ODRcdThhMmRcdTViOWFcdThjYzdcdTY1OTlcdTcyNDhcdTY3MmM6ICIrZy52ZXJzaW9uKTtjLmVhY2goWyJhbl9kYXRhIiwiYW5fc3dpdGNoZXMiLCJhbl9vcHRpb25zIl0sZnVuY3Rpb24oYixjKXtjIGluIGcmJmQudXRpbC5zdG9yYWdlKGMsZ1tjXSl9KTtkLnNoYXJlZC5maWxsT3B0aW9ucyghMCk7YWxlcnQoIlx1OGEyZFx1NWI5YVx1OTA4NFx1NTM5Zlx1NjIxMFx1NTI5ZiEiKX19fSwiNDM3YjY2ZTYtYWJlOS00YjVhLWFjMGUtZDEzMmQwNTc4NTIxIjp7ZGVzYzoiXHU3Mjc5XHU2YjhhXHU4YTJkXHU1YjlhOiBcdTZlZDlcdTUxZmEvXHU2NmY0XHU2NWIwXHU4YTJkXHU1YjlhIixwYWdlOns2NTUzNToiY29tcCJ9LHR5cGU6MSwKb25jZTpmdW5jdGlvbigpe3ZhciBiPVtdO2Quc2hhcmVkLmFkZERhdGFBcGk9ZnVuY3Rpb24oYyl7Yi5wdXNoKGMpfTtjKGRvY3VtZW50KS5vbmUoImFuLXNldHRpbmdzLXNwZWNpYWwiLGZ1bmN0aW9uKGQpe2MoJ1x0XHRcdFx4M2NkaXZceDNlIFx0XHRcdFx0XHgzY2g0XHgzZVx4M2NzcGFuXHgzZVx1NmVkOVx1NTFmYS9cdTY2ZjRcdTY1YjBcdThhMmRcdTViOWFceDNjL3NwYW5ceDNlXHgzY2hyIC9ceDNlXHgzYy9oNFx4M2UgXHRcdFx0XHRceDNjZGl2XHgzZSBcdFx0XHRcdFx0XHgzY3NlbGVjdCBpZFx4M2QiYW4tc2V0dGluZ3Mtc3BlY2lhbC1hcGktbGlzdCJceDNlXHgzYy9zZWxlY3RceDNlIFx0XHRcdFx0XHRceDNjYnV0dG9uIGlkXHgzZCJhbi1zZXR0aW5ncy1zcGVjaWFsLWFwaS1leHBvcnQiXHgzZVx1NmVkOVx1NTFmYVx4M2MvYnV0dG9uXHgzZSBcdFx0XHRcdFx0XHgzY2J1dHRvbiBpZFx4M2QiYW4tc2V0dGluZ3Mtc3BlY2lhbC1hcGktdXBkYXRlIlx4M2VcdTY2ZjRcdTY1YjBceDNjL2J1dHRvblx4M2UgXHRcdFx0XHRcdFx4M2NzcGFuIGlkXHgzZCJhbi1zZXR0aW5ncy1zcGVjaWFsLWFwaS1tZXNzYWdlIlx4M2VceDNjL3NwYW5ceDNlIFx0XHRcdFx0XHgzYy9kaXZceDNlIFx0XHRcdFx4M2MvZGl2XHgzZSBcdFx0XHQnKS5hcHBlbmRUbyhkLnRhcmdldCkub24oImNsaWNrIiwKImJ1dHRvbiIsZnVuY3Rpb24oZCl7dmFyIGc9YltjKCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1hcGktbGlzdCIpWzBdLnNlbGVjdGVkSW5kZXhdO2lmKGcpdHJ5eyJhbi1zZXR0aW5ncy1zcGVjaWFsLWFwaS1leHBvcnQiPT09ZC50YXJnZXQuaWQ/KGMoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWNvbmZpZyIpLnZhbChnLmdldCgpKS5zZWxlY3QoKSxtc2c9Ilx1NmVkOVx1NTFmYVx1NjIxMFx1NTI5ZiEgXHU4YWNiXHU4OTA3XHU4OGZkXHU4YTJkXHU1YjlhXHU4Y2M3XHU2NTk5Iik6KGcuc2V0KGMudHJpbShjKCIjYW4tc2V0dGluZ3Mtc3BlY2lhbC1jb25maWciKS52YWwoKSkpLG1zZz0iXHU2NmY0XHU2NWIwXHU2MjEwXHU1MjlmISIpLGMoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWFwaS1tZXNzYWdlIikudGV4dChtc2cpLmZpbmlzaCgpLnNob3coKS5kZWxheSgyRTMpLmZhZGVPdXQoKX1jYXRjaChtKXthbGVydChtLm1lc3NhZ2UpfX0pO2MuZWFjaChiLGZ1bmN0aW9uKGIsZCl7YygiI2FuLXNldHRpbmdzLXNwZWNpYWwtYXBpLWxpc3QiKS5hcHBlbmQoYy5zcHJpbnRmKCJceDNjb3B0aW9uXHgzZSVzXHgzYy9vcHRpb25ceDNlIiwKZC5uYW1lKSl9KX0pO2Quc2hhcmVkLmFkZERhdGFBcGkoe25hbWU6Ilx1NjI0MFx1NjcwOVx1OGEyZFx1NWI5YSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQuc2hhcmVkLmdldENvbmZpZygpfSxzZXQ6ZnVuY3Rpb24oYil7ZC5zaGFyZWQuc2V0Q29uZmlnKGIpfX0pO2Quc2hhcmVkLmFkZERhdGFBcGkoe25hbWU6Ilx1NmExOVx1OTg0Y1x1OTA0ZVx1NmZmZVx1NTQwZFx1NTVhZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuKGQudXRpbC5kYXRhKCJhVG9waWNGaWx0ZXIiKXx8W10pLmpvaW4oIlxuIil9LHNldDpmdW5jdGlvbihiKXtkLnV0aWwuZGF0YSgiYVRvcGljRmlsdGVyIixiP2Iuc3BsaXQoL1xzKj9cblxzKi9nKTpbXSl9fSk7ZC5zaGFyZWQuYWRkRGF0YUFwaSh7bmFtZToiXHU3NTI4XHU2MjM2XHU1YzAxXHU5Mzk2XHU1NDBkXHU1NWFlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oZC51dGlsLmRhdGEoImFCYW1MaXN0Iil8fFtdKS5qb2luKCJcbiIpfSxzZXQ6ZnVuY3Rpb24oYil7aWYoL1teXGRcc10vLnRlc3QoYikpdGhyb3cgRXJyb3IoIlx1OGNjN1x1NjU5OVx1NjgzY1x1NWYwZlx1OTMyZlx1OGFhNCEiKTsKZC51dGlsLmRhdGEoImFCYW1MaXN0IixiP2Iuc3BsaXQoL1xzKj9cblxzKi9nKTpbXSl9fSl9fSwiYTE2ZTJiY2QtZmYyMS00N2JhLWI2ZDgtOTgzNTE0ODg0YmYzIjp7ZGVzYzoiXHU3Mjc5XHU2YjhhXHU4YTJkXHU1YjlhOiBcdTUwOTlcdTRlZmQvXHU5MDg0XHU1MzlmXHU4YTJkXHU1YjlhIChHb29nbGUgRHJpdmUpIixwYWdlOns2NTUzNToiY29tcCJ9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9e2NsaWVudF9pZDoiODc3OTgwMTg0Mzg4LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIixzY29wZToiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vYXV0aC9kcml2ZS5maWxlIixpbW1lZGlhdGU6ITB9O2MoZG9jdW1lbnQpLm9uZSgiYW4tc2V0dGluZ3Mtc3BlY2lhbCIsZnVuY3Rpb24oZyl7YygnXHRcdFx0XHgzY2Rpdlx4M2UgXHRcdFx0XHRceDNjaDRceDNlXHgzY3NwYW5ceDNlXHU1MDk5XHU0ZWZkL1x1OTA4NFx1NTM5Zlx1OGEyZFx1NWI5YSAoR29vZ2xlIERyaXZlKVx4M2Mvc3Bhblx4M2VceDNjaHIgL1x4M2VceDNjL2g0XHgzZSBcdFx0XHRcdFx4M2NkaXZceDNlXHgzY2J1dHRvbiBkYXRhLWFjdGlvblx4M2QiaW5pdCJceDNlXHU1MjFkXHU1OWNiXHU1MzE2XHU4MjA3R29vZ2xlIERyaXZlXHU3Njg0XHU5MDIzXHU2M2E1XHgzYy9idXR0b25ceDNlXHgzYy9kaXZceDNlIFx0XHRcdFx0XHgzY2RpdiBkYXRhLXJvd1x4M2QibWFpbiIgc3R5bGVceDNkImRpc3BsYXk6bm9uZSJceDNlXHgzY2J1dHRvbiBkYXRhLWFjdGlvblx4M2QiYmFja3VwIlx4M2VcdTUwOTlcdTRlZmRcdTYyNDBcdTY3MDlcdThhMmRcdTViOWFcdTgxZjNHb29nbGUgRHJpdmVceDNjL2J1dHRvblx4M2UgXHgzY2J1dHRvbiBkYXRhLWFjdGlvblx4M2QicmVzdG9yZSJceDNlXHU1ZjllR29vZ2xlIERyaXZlXHU5MDg0XHU1MzlmXHU2MjQwXHU2NzA5XHU4YTJkXHU1YjlhXHgzYy9idXR0b25ceDNlIFx4M2NzcGFuIGlkXHgzZCJhbi1zZXR0aW5ncy1zcGVjaWFsLWdkcml2ZS1tc2ciXHgzZVx4M2Mvc3Bhblx4M2VceDNjL2Rpdlx4M2UgXHRcdFx0XHgzYy9kaXZceDNlIFx0XHRcdCcpLmFwcGVuZFRvKGcudGFyZ2V0KS5vbigiY2xpY2siLAonYnV0dG9uW2RhdGEtYWN0aW9uXHgzZCJpbml0Il0nLGZ1bmN0aW9uKGIpe3ZhciBkPWMoYi50YXJnZXQpLnBhcmVudCgpO2QudGV4dCgiXHU4YWNiXHU3YTBkXHU1MDE5Li4uIik7Yy53aGVuKHdpbmRvdy5nYXBpfHxjLkRlZmVycmVkKGZ1bmN0aW9uKGIpe3dpbmRvdy5BTl9TRVRUSU5HU19TUEVDSUFMX0dEUklWRV9PTkxPQURfQ0FMTEJBQ0s9ZnVuY3Rpb24oKXtkZWxldGUgd2luZG93LkFOX1NFVFRJTkdTX1NQRUNJQUxfR0RSSVZFX09OTE9BRF9DQUxMQkFDSztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Z2FwaS5hdXRoLmF1dGhvcml6ZSh7Y2xpZW50X2lkOiI4Nzc5ODAxODQzODguYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLHNjb3BlOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9hdXRoL2RyaXZlLmZpbGUiLGltbWVkaWF0ZTohMH0sZnVuY3Rpb24oKXtiLnJlc29sdmUoKX0pfSwwKX07Yy5hamF4KHt1cmw6Imh0dHBzOi8vYXBpcy5nb29nbGUuY29tL2pzL2NsaWVudC5qcz9vbmxvYWRceDNkQU5fU0VUVElOR1NfU1BFQ0lBTF9HRFJJVkVfT05MT0FEX0NBTExCQUNLIiwKZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITB9KX0pKS50aGVuKGZ1bmN0aW9uKCl7ZC5oaWRlKCkubmV4dCgpLnNob3coKX0pfSkub24oImNsaWNrIiwnZGl2W2RhdGEtcm93XHgzZCJtYWluIl0gXHgzZSBidXR0b24nLGZ1bmN0aW9uKGcpe2MuRGVmZXJyZWQoZnVuY3Rpb24oYyl7Z2FwaS5hdXRoLmdldFRva2VuKCk/Yy5yZXNvbHZlKCk6KGIuaW1tZWRpYXRlPSExLGdhcGkuYXV0aC5hdXRob3JpemUoYixmdW5jdGlvbihiKXtjW2I/InJlc29sdmUiOiJyZWplY3QiXSgpfSkpfSkudGhlbihmdW5jdGlvbigpe3ZhciBiPWZ1bmN0aW9uKGIpe2MoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWdkcml2ZS1tc2ciKS50ZXh0KCIiKTtiJiZhbGVydChiKX07YygiI2FuLXNldHRpbmdzLXNwZWNpYWwtZ2RyaXZlLW1zZyIpLnRleHQoIlx1OGFjYlx1N2EwZFx1NTAxOS4uLiIpO3ZhciBtPWMoZy50YXJnZXQpLmRhdGEoImFjdGlvbiIpO2MuRGVmZXJyZWQoZnVuY3Rpb24oYyl7Z2FwaS5jbGllbnQucmVxdWVzdCh7cGF0aDoiL2RyaXZlL3YyL2ZpbGVzIiwKcGFyYW1zOnttYXhSZXN1bHRzOjEscToidGl0bGUgXHgzZCAnSGVsaWFudGh1cy5hbm51dXMudHh0JyBhbmQgdHJhc2hlZCBceDNkIGZhbHNlIixmaWVsZHM6Iml0ZW1zL2lkLGl0ZW1zL2Rvd25sb2FkVXJsIn0sY2FsbGJhY2s6ZnVuY3Rpb24oZCl7ZC5lcnJvcj8oYy5yZWplY3QoKSxiKCJcdTc2N2NcdTc1MWZcdTkzMmZcdThhYTQ6ICIrZC5lcnJvci5tZXNzYWdlKSk6ZC5pdGVtcyYmZC5pdGVtc1swXT9jLnJlc29sdmUoZC5pdGVtc1swXSk6InJlc3RvcmUiPT09bT8oYy5yZWplY3QoKSxiKCJcdTc2N2NcdTc1MWZcdTkzMmZcdThhYTQ6IFx1NWY5ZUdvb2dsZSBEcml2ZVx1NjI3ZVx1NGUwZFx1NTIzMFx1OGEyZFx1NWI5YVx1OGNjN1x1NjU5OSEiKSk6Z2FwaS5jbGllbnQucmVxdWVzdCh7cGF0aDoiL2RyaXZlL3YyL2ZpbGVzIixtZXRob2Q6IlBPU1QiLHBhcmFtczp7ZmllbGRzOiJpZCJ9LGJvZHk6e3RpdGxlOiJIZWxpYW50aHVzLmFubnV1cy50eHQifSxjYWxsYmFjazpmdW5jdGlvbihkKXtkLmVycm9yPwooYy5yZWplY3QoKSxiKCJcdTc2N2NcdTc1MWZcdTkzMmZcdThhYTQ6ICIrZC5lcnJvci5tZXNzYWdlKSk6Yy5yZXNvbHZlKGQpfX0pfX0pfSkudGhlbihmdW5jdGlvbihnKXsiYmFja3VwIj09PW0/Z2FwaS5jbGllbnQucmVxdWVzdCh7cGF0aDoiL3VwbG9hZC9kcml2ZS92Mi9maWxlcy8iK2cuaWQrIj91cGxvYWRUeXBlXHgzZG1lZGlhIixtZXRob2Q6IlBVVCIsYm9keTpkLnNoYXJlZC5nZXRDb25maWcoKSxoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbiJ9LGNhbGxiYWNrOmZ1bmN0aW9uKGMpe2IoIlx1NTA5OVx1NGVmZFx1NjIxMFx1NTI5ZiEiKX19KToicmVzdG9yZSI9PT1tJiZjLmFqYXgoe3VybDpnLmRvd25sb2FkVXJsLGhlYWRlcnM6e0F1dGhvcml6YXRpb246IkJlYXJlciAiK2dhcGkuYXV0aC5nZXRUb2tlbigpLmFjY2Vzc190b2tlbn19KS50aGVuKGZ1bmN0aW9uKGMpe3RyeXtkLnNoYXJlZC5zZXRDb25maWcoYyl9Y2F0Y2goZyl7YWxlcnQoZy5tZXNzYWdlKX1iKCl9LApmdW5jdGlvbihjKXtiKCJcdTc2N2NcdTc1MWZcdTkzMmZcdThhYTQ6ICIrYy5zdGF0dXNUZXh0KX0pfSl9KX0pfSl9fSwiMjk3YTEzNDEtNTg3Zi00MDc2LWJiZmMtMzQyYzBiODE0MGIxIjp7ZGVzYzoiXHU3Mjc5XHU2YjhhXHU4YTJkXHU1YjlhOiBcdTU0MGNcdTZiNjVcdThhMmRcdTViOWEiLHBhZ2U6ezY1NTM1OiJjb21wIn0sdHlwZToxLG9uY2U6ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGIsaCl7aWYoZylhbGVydCgiXHU1NDBjXHU2YjY1XHU5MDMyXHU4ODRjXHU0ZTJkLCBcdThhY2JcdTdiNDlcdTVmODVcdTVkZTVcdTRmNWNcdTViOGNcdTYyMTAiKTtlbHNle2c9ITA7dmFyIG09YygiI2FuLXNldHRpbmdzLXNwZWNpYWwtc3luYy1tc2ciKS50ZXh0KCJcdTU0MGNcdTZiNjVcdTRlMmQsIFx1OGFjYlx1N2EwZFx1NTAxOS4uLiIpO2g9SlNPTi5zdHJpbmdpZnkoe3R5cGU6Yix2YWx1ZTpofSk7dmFyIHE9ZC51dGlsLmdldEZvcnVtKCksbj1jKCkscD1bXSxCPVsic2VhcmNoIl0sdzsKZm9yKHc9MTsxNT49dzt3KyspQi5wdXNoKCJmb3J1bSIrdyk7Zm9yKHc9MDt3PEIubGVuZ3RoO3crKyl7dmFyIHk9Qlt3XTt5IT09cSYmKG49bi5hZGQoYyhjLnNwcmludGYoJ1x4M2NpZnJhbWUgc3JjXHgzZCJodHRwOi8vJXMuaGtnb2xkZW4uY29tL2Vycm9yLmh0bWw/YW5fc3luYyIgZGF0YS1mb3J1bVx4M2QiJXMiIHN0eWxlXHgzZCJkaXNwbGF5Om5vbmUiXHgzZVx4M2MvaWZyYW1lXHgzZScseSx5KSkpKX12YXIgdj1mdW5jdGlvbigpe3AucHVzaChjKHRoaXMpLmRhdGEoImZvcnVtIikpO0QodGhpcyl9LEQ9ZnVuY3Rpb24oYixkKXtuPW4ubm90KGIpO2MoYikucmVtb3ZlKCk7MD09PW4ubGVuZ3RoJiYoYyh3aW5kb3cpLm9mZihkKSxtLnRleHQoIiIpLGFsZXJ0KCJcdTU0MGNcdTZiNjVcdTViOGNcdTYyMTAhIisocC5sZW5ndGg/IlxuXG5cdTRlZTVcdTRlMGJcdTRmM2FcdTY3MGRcdTU2NjhcdTU0MGNcdTZiNjVcdTU5MzFcdTY1NTc6XG4iK3Auc29ydCgpOiIiKSksZz0hMSl9OwpjKHdpbmRvdykub24oIm1lc3NhZ2UiLGZ1bmN0aW9uKGIpe3RyeXt2YXIgYz1KU09OLnBhcnNlKGIub3JpZ2luYWxFdmVudC5kYXRhKS50eXBlfWNhdGNoKGQpe30iYW4tc3luYy1yZWFkeSI9PT1jP2Iub3JpZ2luYWxFdmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoaCwiKiIpOiJhbi1zeW5jLWNvbXBsZXRlIj09PWMmJkQoYi5vcmlnaW5hbEV2ZW50LnNvdXJjZS5mcmFtZUVsZW1lbnQsYil9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5lYWNoKG4sZnVuY3Rpb24oKXt2LmNhbGwodGhpcyl9KX0sMUU0KTtuLm9uKHtlcnJvcjp2fSkuYXBwZW5kVG8oIiNhbiIpfX12YXIgZz0hMTtjKGRvY3VtZW50KS5vbmUoImFuLXNldHRpbmdzLXNwZWNpYWwiLGZ1bmN0aW9uKGcpe2MoJ1x0XHRcdFx4M2NkaXZceDNlIFx0XHRcdFx0XHgzY2g0XHgzZVx4M2NzcGFuXHgzZVx1NTQwY1x1NmI2NVx1OGEyZFx1NWI5YVx4M2Mvc3Bhblx4M2VceDNjaHIgL1x4M2VceDNjL2g0XHgzZSBcdFx0XHRcdFx4M2NkaXZceDNlXHgzY2J1dHRvbiBpZFx4M2QiYW4tc2V0dGluZ3Mtc3BlY2lhbC1zeW5jLXNldHRpbmdzIlx4M2VcdTU0MGNcdTZiNjVcdTYyNDBcdTY3MDlcdThhMmRcdTViOWFcdTgxZjNcdTUxNzZcdTRlZDZcdTRmM2FcdTY3MGRcdTU2NjhceDNjL2J1dHRvblx4M2UgXHgzY3NwYW4gaWRceDNkImFuLXNldHRpbmdzLXNwZWNpYWwtc3luYy1tc2ciXHgzZVx4M2Mvc3Bhblx4M2VceDNjL2Rpdlx4M2UgXHRcdFx0XHgzYy9kaXZceDNlIFx0XHRcdCcpLmFwcGVuZFRvKGcudGFyZ2V0KS5vbigiY2xpY2siLAoiI2FuLXNldHRpbmdzLXNwZWNpYWwtc3luYy1zZXR0aW5ncyIsZnVuY3Rpb24oKXt2YXIgZz17fTtjLmVhY2goWyJhbl9kYXRhIiwiYW5fc3dpdGNoZXMiLCJhbl9vcHRpb25zIl0sZnVuY3Rpb24oYixjKXtnW2NdPWQudXRpbC5zdG9yYWdlKGMpfSk7YigiYW4tc3luYy1zZXR0aW5ncyIsSlNPTi5zdHJpbmdpZnkoZykpfSl9KTt0b3AhPT1zZWxmJiYtMSE9PUMuc2VhcmNoLmluZGV4T2YoImFuX3N5bmMiKSYmKGMod2luZG93KS5vbigibWVzc2FnZSIsZnVuY3Rpb24oYil7dHJ5e3ZhciBnPUpTT04ucGFyc2UoYi5vcmlnaW5hbEV2ZW50LmRhdGEpfWNhdGNoKG0pe3JldHVybn0iYW4tc3luYy1zZXR0aW5ncyI9PT1nLnR5cGUmJihnPUpTT04ucGFyc2UoZy52YWx1ZSksYy5lYWNoKFsiYW5fZGF0YSIsImFuX3N3aXRjaGVzIiwiYW5fb3B0aW9ucyJdLGZ1bmN0aW9uKGIsYyl7YyBpbiBnJiZkLnV0aWwuc3RvcmFnZShjLGdbY10pfSksYi5vcmlnaW5hbEV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7dHlwZToiYW4tc3luYy1jb21wbGV0ZSJ9KSwKIioiKSl9KSx3aW5kb3cudG9wLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHt0eXBlOiJhbi1zeW5jLXJlYWR5In0pLCIqIikpfX19fTtkLm1vZFsiTGF5b3V0IERlc2lnbmVyIl09e3ZlcjoiTi9BIixhdXRob3I6Ilx1NTQxMVx1NjVlNSIsZm46eyI1ZTE3MzkwNS05YzQ3LTRmMzctOGQzZi00YzMxZWE4NzExMTUiOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTk4MDJcdTkwZThcdTg1Y2RcdTgyNzJcdTUyMTciLHBhZ2U6ezY1NTM0OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJib2R5IFx4M2UgI2FzcG5ldEZvcm0gXHgzZSB0YWJsZSBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgeyBkaXNwbGF5OiBub25lOyB9Iil9fSwiN2NhNTRiYTQtZTJiNy00ODljLTlhZGMtN2FjN2Q2MjAxMmYwIjp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU5ODAyXHU5MGU4XHU1NTYxXHU4MjcyXHU1MjE3IixwYWdlOns2NTUzNDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiYm9keSBceDNlICNhc3BuZXRGb3JtIFx4M2UgdGFibGUgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkICsgdHIgeyBkaXNwbGF5OiBub25lOyB9Iil9fSwKIjdhZjEwNjBkLWQzOGMtNDBiOS1iMTZiLWRmMWJiNzk5Y2I3NCI6e2Rlc2M6Ilx1OTZiMVx1ODVjZkxvZ29cdTUyMTciLHBhZ2U6ezY1NTM0OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJib2R5IFx4M2UgI2FzcG5ldEZvcm0gXHgzZSB0YWJsZSBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgKyB0ciArIHRyIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sImJiZDVmMTc2LWMwMjQtNDY4NC1iYTk4LWI3MmRhMzc2YTZlYiI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NjcwMFx1NWU5NVx1OTgwMVx1ODE3MyIscGFnZTp7NjU1MzQ6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIlx0XHRcdC5QYWdlTWlkZGxlUGFuZWwgKyBiciwgXHRcdFx0LkZvb3RlclBhbmVsLCBcdFx0XHQuRm9vdGVyUGFuZWwgKyBkaXYsIFx0XHRcdC5Gb290ZXJQYW5lbCArIGRpdiArIGRpdiBcdFx0XHRcdHsgZGlzcGxheTogbm9uZTsgfSIpfX0sCiIwMjgzN2U2YS0zZGQ3LTRjNzMtYTE1NS05MGQ2ZjZlZGQ4ZjkiOntkZXNjOiJcdThhMmRcdTViOWFcdTk4MDFcdTk3NjJcdTk1Y2FcdTVlYTYiLHBhZ2U6ezY1NTM0OiExfSx0eXBlOjMsb3B0aW9uczp7blBhZ2VXaWR0aDp7ZGVzYzoiXHU5ODAxXHU5NzYyXHU5NWNhXHU1ZWE2IFtcdTUzZWZcdThhMmRcdTViOWFcdTcwYmE4MCUsIDEwMDBweFx1N2I0OV0iLGRlZmF1bHRWYWx1ZToiMTAwJSIsdHlwZToidGV4dCJ9fSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9ZC51dGlsLmdldE9wdGlvbnMoIm5QYWdlV2lkdGgiKTtkLnV0aWwuYWRkU3R5bGUoYy5zcHJpbnRmKCdcdFx0LlBhZ2VXaWR0aENvbnRhaW5lciB7IHdpZHRoOiAlczsgfSBcdFx0LlBhZ2VNaWRkbGVCb3gsIC5yZXBsaWVycywgdGFibGVbd2lkdGheXHgzZCI5NTQiXSwgdGFibGVbd2lkdGheXHgzZCI5NDciXSwgXHRcdCNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3ZpZXdfZm9ybSBceDNlIGRpdltzdHlsZSpceDNkIjk0NXB4Il0sIFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV92aWV3X2Zvcm0gXHgzZSBkaXZbc3R5bGUqXHgzZCI5NDVweCJdIFx4M2UgZGl2W3N0eWxlKlx4M2QiOTQ1cHgiXSBcdFx0XHR7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0gXHRcdC5QYWdlTWlkZGxlQm94IFx0XHRcdHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyB9IFx0XHQnLAoiYXV0byI9PT1iPyIxMDAlIjpiKSl9fSwiMWNiZWQ0NGUtZjNkNS00ZDUzLWIxZTctMmQ2MGUzNTZmM2YyIjp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU1MDBiXHU0ZWJhXHU5MDIzXHU3ZDUwIixwYWdlOns2MDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgnXHRcdC5Db250ZW50UGFuZWwgdGFibGVbd2lkdGhceDNkIjk1NHB4Il0gYiArIGRpdiBcdFx0XHRcdHsgZGlzcGxheTogbm9uZTsgfScpfX0sIjFjNjNjYzQ1LTIxZjctNDBhYi05MDVhLTczMGRhYmZmYzJhYiI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OWFkOFx1NzY3Ylx1NTE2Y1x1NTQ0YSIscGFnZTp7NjA6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoJ1x0XHQuQ29udGVudFBhbmVsIHRhYmxlW3dpZHRoXHgzZCI5NTRweCJdIGIgKyBkaXYgKyBkaXZbc3R5bGUqXHgzZCIyODBweCJdLCBcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfdG9waWNzX2Zvcm0gLkRpdlJlc2l6YWJsZUJveENvbnRhaW5lciwgXHRcdCNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3ZpZXdfZm9ybSBceDNlIHRhYmxlW3dpZHRoXHgzZCI5NTRweCJdIC5EaXZSZXNpemFibGVCb3hDb250YWluZXIgXHRcdFx0eyBkaXNwbGF5OiBub25lOyB9IFx0XHQnKX19LAoiY2M5NTk4NWQtMzRkZi00MDlkLWE1NzQtZThkY2ExNTMxYTNkIjp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU3Y2JlXHU5MDc4XHU2NTg3XHU3YWUwIixwYWdlOns0OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCdcdFx0LkNvbnRlbnRQYW5lbCB0YWJsZVt3aWR0aFx4M2QiOTU0cHgiXSBiICsgZGl2ICsgZGl2ICsgZGl2ICsgZGl2W3N0eWxlKlx4M2QiMjU1cHgiXSBcdFx0XHR7IGRpc3BsYXk6IG5vbmU7IH0gXHRcdCcpfX0sImI0NGVlM2E2LTk1MGUtNGIyYS1iOTlhLTM5OWI2Mzg0YmNjZSI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NjQxY1x1NWMwYlx1NTIxN1x1NGUwYVx1NGUwYlx1N2E3YVx1NzY3ZCIscGFnZTp7Mjg6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIlx0XHRcdC5Ub3BpY19GdW5jdGlvblBhbmVsIHsgbWFyZ2luLXRvcDogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgfSBcdFx0XHQuVG9waWNfRnVuY3Rpb25QYW5lbCBceDNlIGRpdjpsYXN0LWNoaWxkIHsgZGlzcGxheTogbm9uZTsgfSBcdFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV90b3BpY3NfZm9ybSBceDNlIGRpdiArIHRhYmxlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9IFx0XHRcdCNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3RvcGljc19mb3JtIFx4M2UgZGl2ICsgdGFibGUgdGFibGU6Zmlyc3QtY2hpbGQgYnIgeyBkaXNwbGF5OiBub25lOyB9IFx0XHRcdCNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3RvcGljc19mb3JtIFx4M2UgZGl2ICsgdGFibGUgcCB7IG1hcmdpbjogMDsgfSBcdFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV90b3BpY3NfZm9ybSAjZm9ydW1fbGlzdCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfSBcdFx0Iil9fSwKIjFhZGE3NGFjLTliYWUtNDdiMi05MTRiLWYxNTU2ZGJhYjFhMiI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OGEwZVx1OGFkNlx1NTM0MFx1OTA3OFx1NTVhZSIscGFnZTp7Mjg6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7InRvcGljcyI9PXYucGFnZU5hbWUoKT9kLnV0aWwuc3RhY2tTdHlsZSgiI2ZvcnVtX2xpc3QsICNmb3J1bV9saXN0ICsgYnIgeyBkaXNwbGF5OiBub25lOyB9Iik6ZC51dGlsLnN0YWNrU3R5bGUoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3RvcGljc19mb3JtIFx4M2UgZGl2ICsgdGFibGUgdGFibGU6Zmlyc3QtY2hpbGQgeyBkaXNwbGF5OiBub25lOyB9Iil9fSwiNGJmNjYxOWYtMmNkOC00YWEyLWE1NGEtZTdkNzI1NWU4NjAzIjp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU3MWIxXHU5NTgwXHU5NWRjXHU5Mzc1XHU1YjU3IixwYWdlOnszMDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbGJfSGl0U2VhcmNocyB7IGRpc3BsYXk6IG5vbmU7IH0iKX19LAoiYTVkN2Y4ZjAtOTlmYy00YWFmLThjNjUtMzczYjE3Y2ZjZjY5Ijp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU2Mjk1XHU3OTY4XHU3YWQ5XHU5MDIzXHU3ZDUwKFx1NTk4Mlx1NjcwOSkiLHBhZ2U6ezYwOiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV92b3RpbmdUaHJlYWRNc2csICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX01pZGRsZUFkU3BhY2UxIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sIjdjYTI3MWJjLWQwMzYtNDlhNS1iMWMxLWU5Mzk5MGVkODQ3YSI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NWMwZlx1NTcwOFx1NWI1MFx1OTA0ZVx1NmZmZVx1NjNkMFx1NzkzYSIscGFnZTp7NDohMX0sdHlwZTozLGluZmluaXRlOmZ1bmN0aW9uKGIpe2IuZmluZCgndGRbY29sc3Bhblx4M2QiNiJdW3N0eWxlKlx4M2QiNkVBMEM0Il0gXHgzZSBiJykuY2xvc2VzdCgidHIiKS5oaWRlKCl9fSwiZjQxZTI4OGUtY2QxZC00NjQ5LWEzOTYtODNkOTJkOTlkZWQ4Ijp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU3ZDA1XHU0ZWJhXHU2OTljIiwKcGFnZTp7NDohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfSG90UGVvcGxlcywgXHRcdFx0I2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfSG90UGVvcGxlcyArIGJyIFx0XHRcdFx0eyBkaXNwbGF5OiBub25lOyB9Iil9fSwiYTIyNTc4MzctZTUyOC00YjRjLWE3OTQtODRmYzRjY2NhMjI1Ijp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU4YTBlXHU4YWQ2XHU1MzQwXHU1Yjg4XHU1MjQ3IixwYWdlOns0OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJcdFx0XHQuQ29udGVudFBhbmVsIFx4M2UgLkRpdkJveENvbnRhaW5lciwgXHRcdFx0LkNvbnRlbnRQYW5lbCBceDNlIC5EaXZCb3hDb250YWluZXIgKyBzY3JpcHQgKyBiciBcdFx0XHRcdHsgZGlzcGxheTogbm9uZTsgfSIpfX0sIjUxNjQyNmIzLWRhODYtNGVkNS1iMzBhLWM1Njc4ODYzYmIwOSI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OGEwZVx1OGFkNlx1NTM0MFx1NTcxNlx1NzkzYVx1OGFhYVx1NjYwZSIsCnBhZ2U6ezI4OiExfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJcdFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV90b3BpY3NfZm9ybSB+IGJyLCBcdFx0XHQjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV90b3BpY3NfZm9ybSB+IGJyICsgdGFibGUsIFx0XHRcdC5Db250ZW50UGFuZWwgXHgzZSAuRGl2Qm94Q29udGFpbmVyICsgc2NyaXB0ICsgYnIgKyB0YWJsZSBcdFx0XHRcdHsgZGlzcGxheTogbm9uZTsgfSIpfX0sIjc0Y2Q3ZjM4LWIwYWQtNGZjYS1hYjM5LTY3M2IwZTJlZTRjNyI6e2Rlc2M6Ilx1NGZlZVx1NmI2M1x1OGRmM1x1OTgwMVx1NjNhN1x1NGVmNlx1NGY0ZFx1N2Y2ZSIscGFnZTp7MzI6ITB9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCdkaXZbc3R5bGVdIFx4M2UgZGl2W3N0eWxlXlx4M2QiJXM6IGNlbnRlciJdIHsgbWFyZ2luOiAwIDEwMHB4OyB9JyxjLmJyb3dzZXIubXNpZT8KIlRFWFQtQUxJR04iOiJ0ZXh0LWFsaWduIikpfX0sIjA5NDFlNTU5LTM4NzUtNDQ1YS05YzU2LTc5OTk4N2ZiZGY4NyI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NTQwZFx1N2EzMVx1NmIwNFx1NzI2OVx1NGVmNiIscGFnZTp7MzI6ITF9LHR5cGU6MyxvcHRpb25zOntiSGlkZUF2YXRhcjp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU5YWQ4XHU3ZDFhXHU2NzAzXHU1NGUxXHU5ODJkXHU1MGNmIixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxiSGlkZU1lbWJlckxldmVsOntkZXNjOiJcdTk2YjFcdTg1Y2ZcdTY3MDNcdTU0ZTFcdTdkMWFcdTUyMjVcdTU3MTZcdTcyNDciLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJIaWRlQXdhcmQ6e2Rlc2M6Ilx1OTZiMVx1ODVjZihcdTU1ODQpXHU1NzE2XHU1MGNmIixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifX0sb25jZTpmdW5jdGlvbigpe3ZhciBiPVtdO2MuZWFjaCh7YkhpZGVBdmF0YXI6J2RpdltpZF5ceDNkIlRocmVhZFVzZXIiXSBceDNlIGEnLApiSGlkZU1lbWJlckxldmVsOidkaXZbaWReXHgzZCJUaHJlYWRVc2VyIl0gXHgzZSBpbWcnLGJIaWRlQXdhcmQ6J2RpdltpZF5ceDNkIlRocmVhZFVzZXIiXSB+IConfSxmdW5jdGlvbihjLGwpe2QudXRpbC5nZXRPcHRpb25zKGMpJiZiLnB1c2gobCl9KTtkLnV0aWwuc3RhY2tTdHlsZShiLmpvaW4oIiwiKSsiIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sImEwMjAzYjAxLTc1NjUtNDZlMS1hNTJlLTI2MGRkNGQ0ODVhMSI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NWYxNVx1NzUyOCIscGFnZTp7MzI6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIi5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sImQwYWM2NTZjLWU2MDItNDg1Mi04NDNiLWY3NzZkOGE5NzZmNCI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OGE1NVx1NTIwNlx1NjgzYyIscGFnZTp7MzI6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIiNEaXZNYXJrVGhyZWFkIHsgZGlzcGxheTogbm9uZTsgfSIpfX0sCiI5NmRmMDY0Yy1lZmI2LTQ0YmUtOTI1MS00YTc3NTFhNDU1MDQiOntkZXNjOiJcdTk2YjFcdTg1Y2ZGYWNlYm9va1x1NjMwOVx1NjI2ZCIscGFnZTp7MzI6ITF9LHR5cGU6MyxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIi5mYi1saWtlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9Iil9fSwiZWVjMmEyOWQtNDRiNS00NzBiLWJmZmQtMmRhNDE4NDQyOGY0Ijp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU3NTU5XHU1NDBkXHU2MzA5XHU2MjZkIixwYWdlOnszMjohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgnZGl2IFx4M2UgYVtpZF5ceDNkImxhdW1pbmdIcmVmIl0geyBkaXNwbGF5OiBub25lOyB9Jyl9fSwiMmM3OTk4YWQtMTBjYy00YmNhLTlmMmMtODVmMTc3MTM1NmMyIjp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU2Mjk1XHU4YTM0XHU2NTg3XHU3YWUwXHU2MzA5XHU2MjZkIixwYWdlOnszMjohMX0sdHlwZTozLG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgnLnJlcGxpZXJzX3JpZ2h0IGFbaHJlZl5ceDNkImNvbnRhY3R1cy5hc3B4P21lc3NhZ2VpZFx4M2QiXSB7IGRpc3BsYXk6IG5vbmU7IH0nKX19LAoiMjZlYWY3ZjgtZDI2MC00YjQyLWI2ZDktMDhiMjM1ZjU2ZDQzIjp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU1ZjE1XHU3NTI4XHU1MzlmXHU2NTg3XHU2MzA5XHU2MjZkIixwYWdlOnszMjohMX0sdHlwZTozLG9wdGlvbnM6e2JDRFJPTU1vZGU6e2Rlc2M6Ilx1NTQwY1x1NjY0Mlx1OTZiMVx1ODVjZlx1NWZlYlx1OTAxZlx1NWYxNVx1NzUyOFx1NjMwOVx1NjI2ZFx1NTNjYVx1NzY3Ylx1NTE2NVx1NjNkMFx1NzkzYSBbQ0QtUk9NXHU1YzA4XHU3NTI4XSIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In19LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj0nLnJlcGxpZXJzX3JpZ2h0IGFbaHJlZl5ceDNkInBvc3QuYXNweD9tdFx4M2RZXHgyNnJpZFx4M2QiXSc7ZC51dGlsLmdldE9wdGlvbnMoImJDRFJPTU1vZGUiKSYmKGIrPScsIC5yZXBsaWVyc19yaWdodCBhW2hyZWYqXHgzZCJRdW90ZVJlcGx5KCJdLCNjdDEwMF9Db250ZW50UGxhY2VIb2xkZXIxX1F1aWNrUmVwbHlMb2dpblRhYmxlJyk7CmQudXRpbC5zdGFja1N0eWxlKGIrInsgZGlzcGxheTogbm9uZTsgfSIpfX0sIjJjMDI2ZjZiLWYyNTItNGE1OC1iMmFjLTcwNmZjZDA1MmZiNiI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NWZlYlx1OTAxZlx1NTZkZVx1ODk4Nlx1N2Q0NFx1NGVmNiIscGFnZTp7MzI6ITF9LHR5cGU6MyxvcHRpb25zOntiUmVtTmFtZVJvdzp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU1NDBkXHU1YjU3XHU1MjE3IixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxiUmVtVG9waWNSb3c6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NGUzYlx1NjVlOFx1NTIxNyIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sYlJlbUNsYXNzaWNSb3c6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1N2Q5M1x1NTE3OFx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYVx1NTIxNyIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sYlJlbVRlbXBSb3c6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OTY0NFx1NTJhMFx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYVx1NTIxNyhcdTU5ODJcdTY3MDkpIiwKZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sYlJlbVByZXZpZXdSb3c6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1OTgxMFx1ODliZFx1NTIxNyIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In19LG9uY2U6ZnVuY3Rpb24oKXtpZihkLnV0aWwuaXNMb2dnZWRJbigpKXt2YXIgYj1jKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9RdWlja1JlcGx5VGFibGUgdGJvZHk6ZXEoMikiKS5jaGlsZHJlbigpO2QudXRpbC5nZXRPcHRpb25zKCJiUmVtTmFtZVJvdyIpJiZiLmVxKDApLmhpZGUoKTtkLnV0aWwuZ2V0T3B0aW9ucygiYlJlbVRvcGljUm93IikmJmIuZXEoMSkuaGlkZSgpO2QudXRpbC5nZXRPcHRpb25zKCJiUmVtQ2xhc3NpY1JvdyIpJiZiLmVxKDMpLmhpZGUoKTtkLnV0aWwuZ2V0T3B0aW9ucygiYlJlbVRlbXBSb3ciKSYmNTxiLmxlbmd0aCYmYi5lcSgzKS5uZXh0QWxsKCI6bm90KDpsYXN0KSIpLmhpZGUoKTtkLnV0aWwuZ2V0T3B0aW9ucygiYlJlbVByZXZpZXdSb3ciKSYmCmIubGFzdCgpLmhpZGUoKX19fSwiZTQyNGZlOGQtODUyYi00MjM5LWI3OTctNmFhNjgyZTY4YzM5Ijp7ZGVzYzoiXHU0ZmVlXHU2YjYzXHU4ODY4XHU2ODNjXHU5NWNhXHU1ZWE2IixwYWdlOnsxMDI0OiEwfSx0eXBlOjMsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCd0YWJsZVt3aWR0aFx4M2QiODAwIl0geyB3aWR0aDogMTAwJTsgfScpfX19fTtkLm1vZFsiTWFpbiBTY3JpcHQiXT17dmVyOiJOL0EiLGF1dGhvcjoiXHU1NDExXHU2NWU1Iixmbjp7IjYzZDI0MDdhLWQ4ZGItNDRjYi04NjY2LTY0ZTViNzYzNzhhMiI6e2Rlc2M6Ilx1OTZiMVx1ODVjZlx1NWVlM1x1NTQ0YVx1NmI5OFx1NzU1OVx1NzI2OSIscGFnZTp7NjU1MzU6ITB9LHR5cGU6MyxpbmZpbml0ZTpmdW5jdGlvbihiKXt2LnBhZ2VDb2RlKCkmODg/Yi5maW5kKCd0ZFtjb2xzcGFuXVtoZWlnaHRceDNkIjUyIl0nKS5wYXJlbnQoKS5oaWRlKCk6MzI9PT12LnBhZ2VDb2RlKCkmJihiLmlzKCJkaXYiKT9iOgpiLmZpbmQoJyNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX3ZpZXdfZm9ybSBceDNlIGRpdltzdHlsZSpceDNkIjk0NXB4Il0nKSkuY2hpbGRyZW4oJ3RhYmxlW3dpZHRoXHgzZCIxMDAlIl0nKS5oYXMoJ1x4M2UgdGJvZHkgXHgzZSB0ciBceDNlIHRkOm5vdChbYWxpZ25ceDNkImxlZnQiXSknKS5oaWRlKCl9fSwiYjdlZjg5ZWItMTE5MC00NDY2LTg5OWEtYzE5YjM2MjFkNmIxIjp7ZGVzYzoiT3BlcmE6IFx1NGZlZVx1NmI2M1x1NzEyMVx1NmNkNVx1NGY3Zlx1NzUyOEVudGVyXHU2NDFjXHU1YzBiXHU3Njg0XHU5MzJmXHU4YWE0IixwYWdlOnszMDpjLmJyb3dzZXIub3BlcmF8fCJkaXNhYmxlZCJ9LHR5cGU6NCxvbmNlOmZ1bmN0aW9uKCl7YygiI2FzcG5ldEZvcm0iKS5zdWJtaXQoZnVuY3Rpb24oYil7Yi5wcmV2ZW50RGVmYXVsdCgpfSl9fSwiZDRiZjY3Y2MtMzQ5Yy00NTQxLWE4ZTQtOWQ5ZjlkMGJlMjY3Ijp7ZGVzYzoiT3BlcmE6IFx1NGZlZVx1NmI2M1x1NzI3OVx1NmI4YVx1NWI1N1x1N2IyNlx1NWMwZVx1ODFmNFx1NzY4NFx1OTg2Zlx1NzkzYVx1OTMyZlx1OGFhNCIsCnBhZ2U6ezkyOmMuYnJvd3Nlci5vcGVyYXx8ImRpc2FibGVkIn0sdHlwZTo0LGluZmluaXRlOmZ1bmN0aW9uKGIpe2IudG9waWNzKCkuak5hbWVMaW5rcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKS5wYXJlbnQoKTsyIT1iLm5leHRBbGwoKS5sZW5ndGgmJihiWzBdLm91dGVySFRNTD1iWzBdLm91dGVySFRNTC5yZXBsYWNlKC8mbHQ7L2csIlx4M2MiKS5yZXBsYWNlKC8mZ3Q7L2csIlx4M2UiKS5yZXBsYWNlKC88QS4rP1wvYT4vLCJOQU1FX0VSUk9SIikucmVwbGFjZSgvPSIiL2csIiIpKX0pfX0sIjAyOTNjOWRhLTQ2OGYtNGVkNS1hMmQ3LWVjYjAwNjdlNzEzZiI6e2Rlc2M6Ilx1NTNiYlx1OTY2NFx1NWYxNVx1NzUyOFx1NTM0YVx1OTAwZlx1NjYwZSIscGFnZTp7MzI6IWMuYnJvd3Nlci5tc2llfHwiZGlzYWJsZWQifSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJibG9ja3F1b3RlIHsgb3BhY2l0eTogMTsgfSIpfX0sImQ1NjNhZjMyLWJkMzctNGM2Ny04YmQ3LTA3MjFjMGFiMGIzNiI6e2Rlc2M6Ilx1NTEyYVx1NTMxNlx1OTgwMVx1NjU3OFx1OGRmM1x1OGY0OVx1OTAyM1x1N2Q1MFx1NTczMFx1NTc0MCIsCnBhZ2U6ezMyOiEwfSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe3dpbmRvdy5jaGFuZ2VQYWdlPWZ1bmN0aW9uKGIpe0MuYXNzaWduKGMuc3ByaW50ZigiL3ZpZXcuYXNweD9tZXNzYWdlXHgzZCVzJXMlcyIsd2luZG93Lm1lc3NhZ2VpZCxiPyJceDI2cGFnZVx4M2QiK2I6IiIsd2luZG93LmhpZ2hsaWdodF9pZD8iXHgyNmhpZ2hsaWdodF9pZFx4M2QiK3dpbmRvdy5oaWdobGlnaHRfaWQ6IiIpKX07dmFyIGI9LyYoPzpwYWdlPTEoPyFcZCl8aGlnaGxpZ2h0X2lkPTApL2c7di5tb3VzZW92ZXIoZnVuY3Rpb24oZCl7ZD1jKGQudGFyZ2V0KTtkLmlzKCJhIikmJmIudGVzdChkLmF0dHIoImhyZWYiKSkmJmQuYXR0cigiaHJlZiIsZC5hdHRyKCJocmVmIikucmVwbGFjZShiLCIiKSl9KX19LCJiNmIyMzJjOC0xZjI2LTQ0OWUtYmIwZC0yYjc4MjZiZjk1ZWYiOntkZXNjOiJcdTgxZWFcdThhMDJcdTU3MTZcdTcyNDdcdTdlMmVcdTVjMGZcdTVlNDVcdTVlYTYiLHBhZ2U6ezMyOiEwLDE5MjohMH0sCnR5cGU6NCxvcHRpb25zOntub3JtYWxJbWdNYXhIZWlnaHQ6e2Rlc2M6Ilx1NTcxNlx1NzI0N1x1NjcwMFx1NTkyN1x1OWFkOFx1NWVhNiIsZGVmYXVsdFZhbHVlOiIxMDAlIix0eXBlOiJ0ZXh0In19LG9uY2U6ZnVuY3Rpb24oKXt3aW5kb3cuRHJhd0ltYWdlPWMubm9vcDtkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoIlx0XHQucmVwbGllcnNfcmlnaHQgYVt0YXJnZXRdIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXgtd2lkdGg6IDEwMCUgfSBcdFx0LnJlcGxpZXJzX3JpZ2h0IGltZ1tvbmxvYWRdIHsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgbWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVpZ2h0OiAlczsgfSBcdFx0LnJlcGxpZXJzX3JpZ2h0IFx4M2UgdGJvZHkgXHgzZSB0cjpmaXJzdC1jaGlsZCBhW3RhcmdldF06Zm9jdXMgeyBvdXRsaW5lOiAwOyB9IFx0XHQiLGQudXRpbC5nZXRPcHRpb25zKCJub3JtYWxJbWdNYXhIZWlnaHQiKSkpfX0sImQ3YWRhZmE4LWNjMTQtNDVmOS1iM2U5LWJjMzZlYWIwNWQ0ZiI6e2Rlc2M6Ilx1N2UyZVx1NWMwZlx1NWYxNVx1NzUyOFx1NGUyZFx1NzY4NFx1NTcxNlx1NzI0NyIsCnBhZ2U6ezMyOiExfSx0eXBlOjQsb3B0aW9uczp7blF1b3RlSW1nTWF4SGVpZ2h0OntkZXNjOiJcdTU3MTZcdTcyNDdcdTY3MDBcdTU5MjdcdTlhZDhcdTVlYTYocHgpIixkZWZhdWx0VmFsdWU6MTAwLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZigiLnJlcGxpZXJzX3JpZ2h0IGJsb2NrcXVvdGUgaW1nW29ubG9hZF0geyB3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvOyBtYXgtaGVpZ2h0OiAlc3B4OyB9IixkLnV0aWwuZ2V0T3B0aW9ucygiblF1b3RlSW1nTWF4SGVpZ2h0IikpKX19LCI1MmViZTNkMy1iZjk4LTQ0ZDItYTEwMS0xODBlYzY5Y2UyOTAiOntkZXNjOiJcdTc5ZmJcdTk2NjRcdTVlMTZcdTViNTBcdTkwMjNcdTdkNTBcdTlhZDhcdTRlYWVcdTkwZThcdTRlZmQiLHBhZ2U6ezY0OiExfSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe3ZhciBiPS8maGlnaGxpZ2h0X2lkPVxkKy87di5tb3VzZW92ZXIoZnVuY3Rpb24oZCl7ZD0KYyhkLnRhcmdldCk7ZC5pcygiYSIpJiZiLnRlc3QoZC5hdHRyKCJocmVmIikpJiZkLmF0dHIoImhyZWYiLGQuYXR0cigiaHJlZiIpLnJlcGxhY2UoYiwiIikpfSl9fSwiODdhNjMwN2UtZjVjMi00MDVjLTg2MTQtYWY2MGM4NWIxMDFlIjp7ZGVzYzoiXHU2NDFjXHU1YzBiXHU5NThiXHU2NWIwXHU5ODAxIixwYWdlOns0OiExLDI0OiExfSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe3ZhciBiPUZ1bmN0aW9uKCJyZXR1cm4gIit3aW5kb3cuZ2V0U2VhcmNoLnRvU3RyaW5nKCkucmVwbGFjZSgid2luZG93LmxvY2F0aW9uIFx4M2QiLCJyZXR1cm4iKSkoKTt3aW5kb3cuZ2V0U2VhcmNoPWZ1bmN0aW9uKCl7d2luZG93Lm9wZW4oYigpKX07dmFyIGM9RnVuY3Rpb24oInJldHVybiAiK3dpbmRvdy5TZWFyY2gudG9TdHJpbmcoKS5yZXBsYWNlKCJ3aW5kb3cubG9jYXRpb24uaHJlZiBceDNkIiwicmV0dXJuIikpKCk7d2luZG93LlNlYXJjaD1mdW5jdGlvbigpe3dpbmRvdy5vcGVuKGMoKSl9fX0sCiJhOTNmMTE0OS1kMTFiLTRiNzItOThkZC1jNDYxZmQ5ZWU3NTQiOntkZXNjOiJcdTkwMjNcdTdkNTBcdTk1OGJcdTY1YjBcdTk4MDEiLHBhZ2U6ezQ6ITEsMjQ6ITEsNjQ6ITF9LHR5cGU6NCxvcHRpb25zOntiVG9waWNMaW5rc09ubHk6e2Rlc2M6Ilx1NTNlYVx1OTY1MFx1NWUxNlx1NWI1MFx1OTAyM1x1N2Q1MCIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In19LG9uY2U6ZnVuY3Rpb24oKXt2LmNsaWNrKGZ1bmN0aW9uKGIpe3ZhciBnPWMoYi50YXJnZXQpO2cucGFyZW50KCJhIikubGVuZ3RoJiYoZz1nLnBhcmVudCgpKTtnLmlzKCJhIikmJihkLnV0aWwuZ2V0T3B0aW9ucygiYlRvcGljTGlua3NPbmx5Iik/L3ZpZXdcLmFzcHgvaTovXig/IWphdmFzY3JpcHR8IykvaSkudGVzdChnLmF0dHIoImhyZWYiKSkmJihiLnByZXZlbnREZWZhdWx0KCksd2luZG93Lm9wZW4oZy5hdHRyKCJocmVmIikpKX0pfX0sIjJhYjJmNDA0LTBkMzUtNDY2Zi05OGE1LWM4OGZkYmRhYTAzMSI6e2Rlc2M6Ilx1NTkxNlx1OTNjOFx1OTAyM1x1N2Q1MFx1OTU4Ylx1NjViMFx1OTgwMSIsCmRlZmVyOjMscGFnZTp7MzI6ITB9LHR5cGU6NCxvbmNlOmZ1bmN0aW9uKCl7di5jbGljayhmdW5jdGlvbihiKXt2YXIgZD1jKGIudGFyZ2V0KTtkLnBhcmVudCgiYSIpLmxlbmd0aCYmKGQ9ZC5wYXJlbnQoKSk7IWQuaXMoIi5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgYSIpfHwvXig/OmphdmFzY3JpcHR8IykvLnRlc3QoZC5hdHRyKCJocmVmIikpfHxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwoYi5wcmV2ZW50RGVmYXVsdCgpLHdpbmRvdy5vcGVuKGQuYXR0cigiaHJlZiIpKSl9KX19LCJiNzNkMjk2OC04MzAxLTRjNWUtODcwMC1hODk1NDFkMjc0ZmMiOntkZXNjOiJcdTU2ZGVcdTVmYTlcdTUwYjNcdTdkNzFcdTc1MjhcdTYyMzZcdTkwMjNcdTdkNTAiLGRlZmVyOjEscGFnZTp7MzI6ITF9LHR5cGU6NCxvbmNlOmZ1bmN0aW9uKCl7di51bmJpbmQoIi51c2VybGlua2JveCIpLmJpbmQoIm1vdXNlb3ZlciIsZnVuY3Rpb24oYil7Yj1jKGIudGFyZ2V0KTsKYi5pcygnYVtocmVmXlx4M2QiamF2YXNjcmlwdDogVG9nZ2xlVXNlckRldGFpbCJdJykmJmIuYXR0cigiaHJlZiIsYy5zcHJpbnRmKCJQcm9maWxlUGFnZS5hc3B4P3VzZXJpZFx4M2QlcyIsYi51cCgidHIiKS5hdHRyKCJ1c2VyaWQiKSkpfSl9fSwiN2Y5NzgwYTYtMzk1ZC00YjI0LWEwYTgtZGM1OGM0NTM5NDA4Ijp7ZGVzYzoiXHU0ZmVlXHU2YjYzXHU1YjU3XHU1NzhiXHU1OTI3XHU1YzBmL1x1OTg0Zlx1ODI3Mlx1NjNkMlx1NTE2NVx1NjNhN1x1NGVmNiIscGFnZTp7NDE2OiEwfSx0eXBlOjQsb25jZTpmdW5jdGlvbigpe2MoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX21lc3NhZ2V0ZXh0Iikuc2libGluZ3MoInNlbGVjdFtvbmNoYW5nZV0iKS5jaGFuZ2UoZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSW5kZXg9MH0pfX0sIjZlOTc4MzEwLWU4N2ItNDA0My05ZGVmLTA3NmExMzM3N2MxOSI6e2Rlc2M6Ilx1NjZmNFx1NjNkYmZhdmljb24oXHU1YzBmXHU0ZTExaWNvbikgW1x1OTBlOFx1NGVmZFx1NzAwZlx1ODliZFx1NTY2OFx1NzEyMVx1NjU0OF0iLApwYWdlOns2NTUzNDohMX0sdHlwZTo0LG9uY2U6ZnVuY3Rpb24oKXtjKCJoZWFkIikuYXBwZW5kKCdceDNjbGluayByZWxceDNkInNob3J0Y3V0IGljb24iIGhyZWZceDNkImh0dHA6Ly9oZWxpYW50aHVzLWFubnV1cy5nb29nbGVjb2RlLmNvbS9zdm4vb3RoZXIvaGtnLmljbyIgL1x4M2UnKX19LCJlNTRkNWM1Zi00N2FlLTQ4MzktYjRlOC02ZmMzNzMzZWRmZWYiOntkZXNjOiJcdTY1MzlcdTkwMzJcdTUxNmNcdTUzZjhcdTZhMjFcdTVmMGYiLHBhZ2U6ezY1NTM0OiEwfSx0eXBlOjQsb3B0aW9uczp7c0NNb2RlRmF2aWNvbjp7ZGVzYzoiZmF2aWNvblx1OTAyM1x1N2Q1MFx1NGY0ZFx1N2Y2ZSIsZGVmYXVsdFZhbHVlOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vZmF2aWNvbi5pY28iLHR5cGU6InRleHQifSxzQ01vZGVUaXRsZTp7ZGVzYzoiXHU2YTE5XHU5ODRjXHU1NDBkXHU3YTMxIixkZWZhdWx0VmFsdWU6Ikdvb2dsZSIsdHlwZToidGV4dCJ9fSxvbmNlOmZ1bmN0aW9uKCl7IlkiPT0KZC51dGlsLmNvb2tpZSgiY29tcGFueW1vZGUiKSYmKGMoImhlYWQiKS5hcHBlbmQoYy5zcHJpbnRmKCdceDNjbGluayByZWxceDNkInNob3J0Y3V0IGljb24iIGhyZWZceDNkIiVzIiAvXHgzZScsZC51dGlsLmdldE9wdGlvbnMoInNDTW9kZUZhdmljb24iKSkpLGRvY3VtZW50LnRpdGxlPWQudXRpbC5nZXRPcHRpb25zKCJzQ01vZGVUaXRsZSIpKX19LCJmZWNiNjM0NS0yMzJmLTQ3ODEtYjgzOS00OTE5Zjg0NTk1OWEiOntkZXNjOiJcdTVmMzdcdTUyMzZcdThhMmRcdTViOWFcdThhZDZcdTU4YzdcdTkwNzhcdTk4MDUiLHBhZ2U6ezY1NTM0OiJkaXNhYmxlZCJ9LHR5cGU6NCxvcHRpb25zOntjb21wYW55bW9kZTp7ZGVzYzoiXHU1MTZjXHU1M2Y4XHU2YTIxXHU1ZjBmIixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxmaWx0ZXJtb2RlOntkZXNjOiJcdTkwNGVcdTZmZmVcdTZhMjFcdTVmMGYiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LHNlbnNvcm1vZGU6e2Rlc2M6Ilx1NjFmN1x1ODIwYVx1NmEyMVx1NWYwZiIsCmRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGZvbnRzaXplOntkZXNjOiJcdTViNTdcdTU3OGJcdTU5MjdcdTVjMGYiLHR5cGU6InNlbGVjdCIsY2hvaWNlczpbIlx1NTkyN1x1NWI1N1x1NTc4YiIsIlx1NWMwZlx1NWI1N1x1NTc4YiJdLGRlZmF1bHRWYWx1ZToiXHU1OTI3XHU1YjU3XHU1NzhiIn19LG9uY2U6ZnVuY3Rpb24oKXtjLmVhY2goWyJjb21wYW55bW9kZSIsInNlbnNvcm1vZGUiLCJmaWx0ZXJtb2RlIiwiZm9udHNpemUiXSxmdW5jdGlvbihiLGMpe3ZhciBsPWQudXRpbC5nZXRPcHRpb25zKGMpO2QudXRpbC5jb29raWUoYyxudWxsLCJoa2dvbGRlbi5jb20iKTtkLnV0aWwuY29va2llKGMsbnVsbCxDLmhvc3RuYW1lKTtkLnV0aWwuY29va2llKGMsImZvbnRzaXplIj09PWM/Ilx1NTkyN1x1NWI1N1x1NTc4YiI9PT1sPyJMIjoiUyI6bD8iWSI6Ik4iKX0pfX0sIjIzMTgyNWFkLWFhZGEtNGY1Zi04YWRjLTVjMjc2MmMxYjBlNSI6e2Rlc2M6Ilx1OTg2Zlx1NzkzYVx1OGNjN1x1NjU5OTogXHU2YTEzXHU0ZTNiXHU1NDBkXHU3YTMxIiwKcGFnZTp7MzI6ITF9LHR5cGU6NSxvbmNlOmZ1bmN0aW9uKGIpe2QudXRpbC5nZXRPcGVuZXJJbmZvKGIsZnVuY3Rpb24oYil7ZC5zaGFyZWQoImFkZEluZm8iLGMuc3ByaW50ZignXHU2YTEzXHU0ZTNiOiBceDNjYSB0YXJnZXRceDNkIl9ibGFuayIgaHJlZlx4M2QiL1Byb2ZpbGVQYWdlLmFzcHg/dXNlcmlkXHgzZCVzIlx4M2Ulc1x4M2MvYVx4M2UnLGIuc0lkLGIuc05hbWUpKX0pfX0sIjllMTgxZTc5LTE1M2ItNDRkNS1hNDgyLTVjY2M2NDk2YTE3MiI6e2Rlc2M6Ilx1OTg2Zlx1NzkzYVx1OGNjN1x1NjU5OTogXHU3ZDJmXHU4YTA4XHU1NzI4XHU3ZGRhXHU2NjQyXHU5NTkzIixwYWdlOns2NTUzNDohMX0sdHlwZTo1LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1kLnV0aWwuZGF0YSgibkxhc3RPblRpbWUiKSxnPWQudXRpbC5kYXRhKCJuQ3VtdWxhdGVkVGltZSIpfHwwO2ImJihiPWMudGltZSgpLWIsZys9MTJFNDw9Yj8xMkU0OmIpO2I9ODY0RTU8Zz8oZy84NjRFNSkudG9GaXhlZCgyKSsKIiBkYXlzIjozNkU1PGc/KGcvMzZFNSkudG9GaXhlZCgyKSsiIGhvdXJzIjooZy82RTQpLnRvRml4ZWQoMikrIiBtaW51dGVzIjtkLnNoYXJlZCgiYWRkSW5mbyIsYy5zcHJpbnRmKCJcdTU3MjhcdTdkZGFcdTY2NDJcdTk1OTM6ICVzIixiKSk7ZC51dGlsLmRhdGEoIm5MYXN0T25UaW1lIixjLnRpbWUoKSk7ZC51dGlsLmRhdGEoIm5DdW11bGF0ZWRUaW1lIixnKX19LCJmNDdlNzdjOC02ZjFhLTQzYjItODQ5My1mNDNkZTIyMmIzYjQiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTRmM2FcdTY3MGRcdTU2NjhcdTcyYzBcdTYxNGJcdTk4NmZcdTc5M2FcdTYzMDlcdTYyNmQiLHBhZ2U6ezY1NTM0OiEwfSx0eXBlOjUsb25jZTpmdW5jdGlvbigpe2Quc2hhcmVkKCJhZGRCdXR0b24iLCJcdTRmM2FcdTY3MGRcdTU2NjhcdTcyYzBcdTYxNGIiLGQuc2hhcmVkLnNlcnZlclRhYmxlKX19LCI3ZGUyOGNhOS05YzQ0LTQ5NDktYWQ0YS0zMWYzOGE5ODQ3MTUiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTRlMDBcdTkzNzVcdTc1NTlcdTU0MGRcdTYzMDlcdTYyNmQiLApwYWdlOnszMjohMX0sdHlwZTo1LG9wdGlvbnM6e3NMZWF2ZU5hbWVNc2c6e2Rlc2M6Ilx1NTZkZVx1ODk4Nlx1NTE2N1x1NWJiOSIsZGVmYXVsdFZhbHVlOiJcdTc1NTlcdTU0MGQiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5pc0xvZ2dlZEluKCkmJmQuc2hhcmVkKCJhZGRCdXR0b24iLCJcdTRlMDBcdTkzNzVcdTc1NTlcdTU0MGQiLGZ1bmN0aW9uKCl7YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKS52YWwoZC51dGlsLmdldE9wdGlvbnMoInNMZWF2ZU5hbWVNc2ciKSk7YygiI2FzcG5ldEZvcm0iKS5zdWJtaXQoKX0pfX0sImVjNTIwYjRlLThhNGItNDQxNC1hY2NlLWVkODI0YmY4MDZjZSI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NTAwYlx1NGViYVx1OTAyM1x1N2Q1MFx1NjMwOVx1NjI2ZCIscGFnZTp7NjA6ITF9LHR5cGU6NSxvbmNlOmZ1bmN0aW9uKCl7YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbGJfVXNlck5hbWUgXHgzZSBhIikuZWFjaChmdW5jdGlvbihiLApnKXtnPWMoZyk7ZC5zaGFyZWQoImFkZEJ1dHRvbiIsfmcuYXR0cigiaHJlZiIpLmluZGV4T2YoImxvZ2luIik/Ilx1NzY3Ylx1NTE2NSI6Zy50ZXh0KCksZy5hdHRyKCJocmVmIikpfSl9fSwiYWFkMWYzYWMtZTcwYy00ODc4LWExZWYtNjc4NTM5Y2E3ZWU0Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU1MjRkXHU1ZjgwXHU1NDM5XHU2YzM0XHU1M2YwXHU3Njg0XHU1ZmViXHU5MDFmXHU5MDIzXHU3ZDUwIixwYWdlOns2NTUzNDohMH0sdHlwZTo1LG9uY2U6ZnVuY3Rpb24oKXtkLnNoYXJlZCgiYWRkTGluayIsIlx1NTQzOVx1NmMzNFx1NTNmMCIsIi90b3BpY3MuYXNweD90eXBlXHgzZEJXIiwxKX19LCJkMGQ3NjIwNC00MDMzLTRiZDYtYTlhOC0zYWZiYjgwNzQ5NWYiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTUyNGRcdTVmODBcdTY3MDBcdTk4MDIvXHU1ZTk1XHU3Njg0XHU2MzA5XHU2MjZkIixwYWdlOnszMjohMH0sdHlwZTo1LG9uY2U6ZnVuY3Rpb24oKXtkLnNoYXJlZCgiYWRkTGluayIsCiJcdTY3MDBcdTk4MDIiLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5zY3JvbGxJbnRvVmlldygpfSwwKTtkLnNoYXJlZCgiYWRkTGluayIsIlx1NjcwMFx1NWU5NSIsZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LnNjcm9sbEludG9WaWV3KCExKX0sMil9fSwiYjc4ODEwYTItOTAyMi00M2ZiLTlhOWItZjc3NjEwMGRjMWRmIjp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU2YTEzXHU1YzY0XHU3ZGU4XHU4NjVmIixwYWdlOnszMjohMH0sdHlwZTo1LGluZmluaXRlOmZ1bmN0aW9uKGIpe3ZhciBkPWIucGFnZU5vKCksbD0oMT09ZD8wOjI1KihkLTEpKzEpK2IucGFnZVNjb3BlKCkuZmluZCgiLmFuLWNvbnRlbnQtZmxvb3IiKS5sZW5ndGg7Yi5yZXBsaWVzKCkuZWFjaChmdW5jdGlvbigpe2ModGhpcykuZmluZCgic3BhbjpsYXN0IikuYXBwZW5kKGMuc3ByaW50ZignIFx4M2NzcGFuIGNsYXNzXHgzZCJhbi1jb250ZW50LWZsb29yIGFuLWNvbnRlbnQtYm94Ilx4M2UjJXNceDNjL3NwYW5ceDNlJywKbCsrKSl9KX19LCIzZjY5M2E5ZS1lNzlkLTRkMTQtYjYzOS1hNTdiZWUzNjA3OWEiOntkZXNjOiJcdTgxZWFcdTUyZDVcdTk4NmZcdTc5M2FcdTRmM2FcdTY3MGRcdTU2NjhcdTcyYzBcdTYxNGJcdTZhYTJcdTY3ZTVcdTg5OTZcdTdhOTciLHBhZ2U6ezE6ITB9LHR5cGU6NixkZWZlcjo1LG9uY2U6ZnVuY3Rpb24oKXtkLnNoYXJlZCgic2VydmVyVGFibGUiKX19LCI0Y2RjZTE0My03NGE1LTRiZGItYWJjYS0wMzUxNjM4ODE2ZmIiOntkZXNjOiJcdTVlMTZcdTViNTBcdTRlM2JcdTY1ZThcdTYyMTZcdTUxNjdcdTY1ODdcdTUxZmFcdTczZmVcdTkzMmZcdThhYTRcdTY2NDJcdTkwMzJcdTg4NGNcdTYzZDBcdTc5M2EiLHBhZ2U6ezI4ODohMH0sdHlwZTo2LG9uY2U6ZnVuY3Rpb24oYil7YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXN1YmplY3QiKS5jc3MoIndpZHRoIiwiOTUlIikuYXR0cigibWF4bGVuZ3RoIiwiNTAiKTt2YXIgZD17fTtjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdlc3ViamVjdCwgI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKS5vbigia2V5dXAgY2hhbmdlIiwKZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGg9ImN0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXN1YmplY3QiPT09dGhpcy5pZD81MDoyRTMsbT1jKHRoaXMpLnZhbCgpLHE9MDtpZigiY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdlc3ViamVjdCI9PT10aGlzLmlkKXtpZihtLmxlbmd0aCE9PXdpbmRvdy5jb252ZXJ0X3RleHQobSkubGVuZ3RoKXtiLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIiMxQkI1RTAiKTtkW3RoaXMuaWRdPTE7cmV0dXJufX1lbHNlIG09d2luZG93LmNvbnZlcnRfdGV4dChtKTtmb3IodmFyIG49MDtuPG0ubGVuZ3RoO24rKylpZihxKz0yNTU8bS5jaGFyQ29kZUF0KG4pPzI6MSxxPmgpe2IuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwicGluayIpO2RbdGhpcy5pZF09MjtyZXR1cm59Yi5jc3MoImJhY2tncm91bmQtY29sb3IiLCIiKTtkW3RoaXMuaWRdPTB9KTtjKCIjYXNwbmV0Rm9ybSIpLnN1Ym1pdChmdW5jdGlvbigpe2Zvcih2YXIgYiBpbiBkKWlmKGRbYl0pcmV0dXJuIGFsZXJ0KDE9PT0KZFtiXT8iXHU0ZTNiXHU2NWU4XHU1YjU4XHU1NzI4XHU5OTk5XHU2ZTJmXHU1YjU3ISI6Ilx1NGUzYlx1NjVlOFx1NjIxNlx1NTE2N1x1NjU4N1x1OTA0ZVx1OTU3NyEiKSwhMX0pfX0sIjg2ZDI0ZmM4LTQ3NmEtNGRlMy05NWUxLTVlMGViMDJiMzM1MyI6e2Rlc2M6Ilx1OGY0OVx1NjNkYlx1ODg2OFx1NjBjNVx1NzhiY1x1NzBiYVx1NTcxNlx1NzI0NyIscGFnZTp7OTI6ITB9LHR5cGU6NixpbmZpbml0ZTpmdW5jdGlvbihiKXtpZihiPWIudG9waWNzKCkpe3ZhciBkPS9bI1tdKGhlaGV8bG92ZXxhc3N8c29zYWR8Z29vZHxob2hvfGtpbGx8YnllfGFkb3JlfGJhbmdoZWFkfGJvdW5jZXJ8Ym91bmN5fGNlbnNvcmVkfGZsb3dlcmZhY2V8c2hvY2tpbmd8cGhvdG98ZmlyZXx5aXBlc3wzNjl8Ym9tYnxzbGlja3xub3xraWxsMnxvZmZ0b3BpYylbXF0jXS9nLGw9W3tyZWdleDovTzotXCkvZyxyZXN1bHQ6ImFuZ2VsIn0se3JlZ2V4Oi94eFwoL2cscmVzdWx0OiJkZWFkIn0se3JlZ2V4Oi86XCkvZywKcmVzdWx0OiJzbWlsZSJ9LHtyZWdleDovOm9cKS9nLHJlc3VsdDoiY2xvd24ifSx7cmVnZXg6LzotXCgvZyxyZXN1bHQ6ImZyb3duIn0se3JlZ2V4Oi86flwoL2cscmVzdWx0OiJjcnkifSx7cmVnZXg6LzstXCkvZyxyZXN1bHQ6IndpbmsifSx7cmVnZXg6LzotXFsvZyxyZXN1bHQ6ImFuZ3J5In0se3JlZ2V4Oi86LV0vZyxyZXN1bHQ6ImRldmlsIn0se3JlZ2V4Oi86RC9nLHJlc3VsdDoiYmlnZ3JpbiJ9LHtyZWdleDovOk8vZyxyZXN1bHQ6Im9oIn0se3JlZ2V4Oi86UC9nLHJlc3VsdDoidG9uZ3VlIn0se3JlZ2V4Oi9eM14vZyxyZXN1bHQ6Imtpc3MifSx7cmVnZXg6L1w/X1w/L2cscmVzdWx0OiJ3b25kZXIifSx7cmVnZXg6LyN5dXAjL2cscmVzdWx0OiJhZ3JlZSJ9LHtyZWdleDovI25nIy9nLHJlc3VsdDoiZG9ubm8ifSx7cmVnZXg6LyNvaCMvZyxyZXN1bHQ6InN1cnByaXNlIn0se3JlZ2V4Oi8jY24jL2cscmVzdWx0OiJjaGlja2VuIn0se3JlZ2V4Oi9aX1ovZyxyZXN1bHQ6InoifSwKe3JlZ2V4Oi9AX0AvZyxyZXN1bHQ6IkAifSx7cmVnZXg6L1w/XD9cPy9nLHJlc3VsdDoid29uZGVyMiJ9LHtyZWdleDovZnVjay9nLHJlc3VsdDoiZnVjayJ9XTtiLmpUaXRsZUNlbGxzLmZpbmQoImE6Zmlyc3QtY2hpbGQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxtPXNUZXh0PWIudGV4dCgpO3NUZXh0PXNUZXh0LnJlcGxhY2UoZCwnXHgzY2ltZyBzdHlsZVx4M2QiYm9yZGVyLXdpZHRoOjBweCIgc3JjXHgzZCIvZmFjZXMvJDEuZ2lmIiBhbHRceDNkIiRceDI2IiAvXHgzZScpO2MuZWFjaChsLGZ1bmN0aW9uKCl7c1RleHQ9c1RleHQucmVwbGFjZSh0aGlzLnJlZ2V4LCdceDNjaW1nIHN0eWxlXHgzZCJib3JkZXItd2lkdGg6MHB4IiBzcmNceDNkIi9mYWNlcy8nK3RoaXMucmVzdWx0KycuZ2lmIiBhbHRceDNkIiRceDI2IiAvXHgzZScpfSk7c1RleHQhPW0mJmIuaHRtbChzVGV4dCl9KX19fSwiYjY5YzUwNjctMjcyNi00M2Y4LWIzZGUtZGZiOTA3MzU1YjcxIjp7ZGVzYzoiXHU2YTE5XHU5ODRjXHU5MDRlXHU2ZmZlXHU1MjlmXHU4MGZkIiwKcGFnZTp7NDohMH0sdHlwZTo2LG9wdGlvbnM6e2JGaWx0ZXJMaXN0QnV0dG9uOntkZXNjOiJcdTUyYTBcdTUxNjVcdTZhMTlcdTk4NGNcdTkwNGVcdTZmZmVcdTUyMTdcdTg4NjhcdTYzMDlcdTYyNmQiLGRlZmF1bHRWYWx1ZTohMCx0eXBlOiJjaGVja2JveCJ9LGJBZGRGaWx0ZXJCdXR0b246e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NjViMFx1NTg5ZVx1OTA0ZVx1NmZmZVx1NTY2OFx1NjMwOVx1NjI2ZCIsZGVmYXVsZVZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sZmlsdGVyQmxvY2tlZFVzZXJzOntkZXNjOiJcdTU0MGNcdTY2NDJcdTkwNGVcdTZmZmVcdTg4YWJcdTVjMDFcdTkzOTZcdTc1MjhcdTYyMzZcdTc2ODRcdTZhMTlcdTk4NGMiLGRlZmF1bHRWYWx1ZTohMCx0eXBlOiJjaGVja2JveCJ9LGxvZ0ZpbHRlcmVkVG9waWNzOntkZXNjOiJcdThhMThcdTkzMDRcdTg4YWJcdTkwNGVcdTZmZmVcdTc2ODRcdTZhMTlcdTk4NGMiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9fSwKb25jZTpmdW5jdGlvbigpe3ZhciBiPWZ1bmN0aW9uKCl7cmV0dXJuIGQudXRpbC5kYXRhKCJhVG9waWNGaWx0ZXIiKXx8W119LGcsbD1jKCJceDNjaW1nIC9ceDNlIix7c3JjOktbImNyb3NzLXNoaWVsZCJdLGNzczp7Im1hcmdpbi1sZWZ0IjoiLTEuNXB4In19KS5ob3Zlcml6ZSgiI0hvdFRvcGljcyB0cjpoYXModGQgXHgzZSBhKSIse2F1dG9Qb3NpdGlvbjohMX0pLmJpbmQoe2VudGVydGFyZ2V0OmZ1bmN0aW9uKCl7Zz1sLmRhdGEoImhvdmVyaXplIikualRhcmdldC5maW5kKCJpbWc6Zmlyc3QiKS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKTtsLmNzcyhnLm9mZnNldCgpKX0sbGVhdmV0YXJnZXQ6ZnVuY3Rpb24oKXtnLmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKX0sY2xpY2s6ZnVuY3Rpb24oKXtxKGwuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LmZpbmQoImE6Zmlyc3QiKS5odG1sKCkudHJpbSgpLnJlcGxhY2UoLzxpbWdbXj5dKz9hbHQ9IihbXiJdKylbXj5dKj4vaWcsCiIkMSIpKX19KSxoPWQudXRpbC5nZXRPcHRpb25zKCJsb2dGaWx0ZXJlZFRvcGljcyIpLG09ZC51dGlsLmdldE9wdGlvbnMoImZpbHRlckJsb2NrZWRVc2VycyIpLHE9ZnVuY3Rpb24oYyl7aWYoYz1wcm9tcHQoIlx1OGFjYlx1OGYzOFx1NTE2NVx1OTA0ZVx1NmZmZVx1NTY2OCIsY3x8IiIpKXt2YXIgZz1iKCk7Zy5wdXNoKGMudHJpbSgpKTtkLnV0aWwuZGF0YSgiYVRvcGljRmlsdGVyIixnKTtuKCl9fSxuPXRoaXMuZmlsdGVyVG9waWNzPWZ1bmN0aW9uKGcpe3ZhciBsPWIoKSxuPWQudXRpbC5kYXRhKCJhQmFtTGlzdCIpfHxbXTtpZihsLmxlbmd0aHx8bi5sZW5ndGgpe3ZhciBxPTA7KGd8fGMoZG9jdW1lbnQpKS50b3BpY3MoKS5ub3QoIjpoaWRkZW4iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ITEsZz1jKHRoaXMpLHA9Zy5maW5kKCdhW2hyZWZeXHgzZCJ2aWV3LiJdOmZpcnN0JykuYXR0cigiaHJlZiIpLHY9Zy5kYXRhKCJzVGl0bGUiKS50b0xvd2VyQ2FzZSgpO2MuZWFjaChsLApmdW5jdGlvbihsLG0pe2lmKC0xIT12LmluZGV4T2YobS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gcSsrLGcuaGlkZSgpLGgmJmQuc2hhcmVkKCJsb2ciLGMuc3ByaW50ZignXHgzY2EgaHJlZlx4M2QiJXMiIHRpdGxlXHgzZCIlcyJceDNlXHU2YTE5XHU5ODRjXHU1ZGYyXHU4OGFiXHU5MDRlXHU2ZmZlKGtleXdvcmQpOiAlc1x4M2MvYVx4M2UnLHAsdixtKSksYj0hMCwhMX0pO2lmKCFiJiZtKXt2YXIgdT1nLmRhdGEoImpOYW1lTGluayIpLmF0dHIoImhyZWYiKS5yZXBsYWNlKC8uKz91c2VyaWQ9KFxkKykuKi8sIiQxIik7Yy5lYWNoKG4sZnVuY3Rpb24oYixsKXtpZih1PT09bClyZXR1cm4gcSsrLGcuaGlkZSgpLGgmJmQuc2hhcmVkKCJsb2ciLGMuc3ByaW50ZignXHgzY2EgaHJlZlx4M2QiJXMiIHRpdGxlXHgzZCIlcyJceDNlXHU2YTE5XHU5ODRjXHU1ZGYyXHU4OGFiXHU5MDRlXHU2ZmZlKHVzZXIpOiAlc1x4M2MvYVx4M2UnLHAsdixnLmRhdGEoInNVc2VyTmFtZSIpKSksITF9KX19KTsKcSYmZC5zaGFyZWQoImxvZyIsYy5zcHJpbnRmKCIlc1x1NTAwYlx1NmExOVx1OTg0Y1x1NWRmMlx1ODhhYlx1OTA0ZVx1NmZmZSIscSkpfX07ZC51dGlsLmdldE9wdGlvbnMoImJBZGRGaWx0ZXJCdXR0b24iKSYmZC5zaGFyZWQoImFkZEJ1dHRvbiIsIlx1NjViMFx1NTg5ZVx1OTA0ZVx1NmZmZVx1NTY2OCIscSk7ZC51dGlsLmdldE9wdGlvbnMoImJGaWx0ZXJMaXN0QnV0dG9uIikmJmQuc2hhcmVkKCJhZGRCdXR0b24iLCJcdTZhMTlcdTk4NGNcdTkwNGVcdTZmZmVcdTUyMTdcdTg4NjgiLGZ1bmN0aW9uKCl7YygiI2FuLWZpbHRlcmxpc3QiKS5sZW5ndGh8fChkLnV0aWwuYWRkU3R5bGUoYy5zcHJpbnRmKCJcdFx0XHRcdCNhbi1maWx0ZXJsaXN0IFx4M2UgdWwgeyBtYXJnaW46IDVweDsgfSBcdFx0XHRcdCNhbi1maWx0ZXJsaXN0IFx4M2UgdWwgXHgzZSBsaSB7IHBhZGRpbmc6IDJweCAwOyB9IFx0XHRcdFx0I2FuLWZpbHRlcmxpc3QgXHgzZSB1bCBceDNlIGxpIFx4M2Ugc3BhbjpmaXJzdC1jaGlsZCB7IG1hcmdpbi1yaWdodDogNXB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMCA1cHg7IGJhY2tncm91bmQtY29sb3I6ICUoc01haW5IZWFkZXJCZ0NvbG9yKXM7IGNvbG9yOiAlKHNNYWluSGVhZGVyRm9udENvbG9yKXM7IGN1cnNvcjogcG9pbnRlcjsgfSBcdFx0XHRcdCIsCmQudXRpbC5nZXRPcHRpb25zKCkpKSxkLnNoYXJlZC5ib3goImFuLWZpbHRlcmxpc3QiLCJcdTZhMTlcdTk4NGNcdTkwNGVcdTZmZmVcdTUyMTdcdTg4NjgiLDUwMCksYygiI2FuLWZpbHRlcmxpc3QiKS5jbGljayhmdW5jdGlvbihnKXtnPWMoZy50YXJnZXQpO2lmKGcuaXMoInNwYW46Zmlyc3QtY2hpbGQiKSl7dmFyIGg9Zy5jbG9zZXN0KCJsaSIpLmluZGV4KCksbD1iKCk7LTEhPWgmJmwuc3BsaWNlKGgsMSk7ZC51dGlsLmRhdGEoImFUb3BpY0ZpbHRlciIsbCk7Zy5wYXJlbnQoKS5yZW1vdmUoKTswPT09bC5sZW5ndGgmJmModGhpcykuY2hpbGRyZW4oKS5hcHBlbmQoIlx4M2NsaVx4M2VcdTZjOTJcdTY3MDlcdTRlZmJcdTRmNTVcdTkwNGVcdTZmZmVcdTU2NjhceDNjL2xpXHgzZSIpfX0pKTt2YXIgZz0iIixoPWIoKTtoLmxlbmd0aD9jLmVhY2goaCxmdW5jdGlvbihiLGQpe2crPWMuc3ByaW50ZigiXHgzY2xpXHgzZVx4M2NzcGFuXHgzZVhceDNjL3NwYW5ceDNlXHgzY3NwYW5ceDNlJXNceDNjL3NwYW5ceDNlXHgzYy9saVx4M2UiLApkKX0pOmcrPSJceDNjbGlceDNlXHU2YzkyXHU2NzA5XHU0ZWZiXHU0ZjU1XHU5MDRlXHU2ZmZlXHU1NjY4XHgzYy9saVx4M2UiO2MoIiNhbi1maWx0ZXJsaXN0IikuaHRtbCgiXHgzY3VsXHgzZSIrZysiXHgzYy91bFx4M2UiKS5jc3MoIm1heC1oZWlnaHQiLGMud2luSGVpZ2h0KDAuOSkpO2Quc2hhcmVkLmdyYXkoITAsImFuLWZpbHRlcmxpc3QiKX0pfSxpbmZpbml0ZTpmdW5jdGlvbihiKXt0aGlzLmZpbHRlclRvcGljcyhiKX19LCJkYjc3MGZkYy05YmY1LTQ2YjktYjNmYS03ODgwN2YyNDJjM2MiOntkZXNjOiJcdTc1MjhcdTYyMzZcdTVjMDFcdTkzOTZcdTUyOWZcdTgwZmQiLHBhZ2U6ezMyOiEwfSx0eXBlOjYsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCJcdFx0LmFuLWJhbW1lZC1tc2cgeyBjb2xvcjogIzk5OTsgZm9udC1zaXplOiAxMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gXHRcdC5hbi1iYW1tZWQtbXNnIFx4M2Ugc3BhbiB7IGN1cnNvcjogcG9pbnRlcjsgfSBcdFx0LmFuLWJhbW1lZCBceDNlIHRkIHsgb3BhY2l0eTogMC41OyB9IFx0XHQuYW4tYmFtbWVkIFx4M2UgLnJlcGxpZXJzX2xlZnQgXHgzZSBkaXYgXHgzZSBhW2hyZWZdIH4gKiwgLmFuLWJhbW1lZCBceDNlIHRkIFx4M2UgLnJlcGxpZXJzX3JpZ2h0IHsgZGlzcGxheTogbm9uZTsgfSBcdFx0Iik7CnZhciBiPWZ1bmN0aW9uKCl7cmV0dXJuIGQudXRpbC5kYXRhKCJhQmFtTGlzdCIpfHxbXX0sZz1jLnVzZXJCdXR0b24oKS5iaW5kKHtjbGljazpmdW5jdGlvbigpe3ZhciBoPWIoKSxsPWcuZGF0YSgidXNlckJ1dHRvbiIpLmpUYXJnZXQuYXR0cigidXNlcmlkIikscD1jLmluQXJyYXkobCxoKTstMT09PXA/aC5wdXNoKGwpOmguc3BsaWNlKHAsMSk7ZC51dGlsLmRhdGEoImFCYW1MaXN0IixoKTttKG51bGwpfSxidXR0b25zaG93OmZ1bmN0aW9uKCl7dmFyIGQ9YigpLGQ9LTEhPT1jLmluQXJyYXkoZy5kYXRhKCJ1c2VyQnV0dG9uIikualRhcmdldC5hdHRyKCJ1c2VyaWQiKSxkKTtnLmF0dHIoInNyYyIsS1tkPyJ0aWNrLXNoaWVsZCI6ImNyb3NzLXNoaWVsZCJdKS5zaWJsaW5ncygpLnRvZ2dsZSghZCl9fSksbCxoPWMoJ1x4M2NkaXYgY2xhc3NceDNkImFuLWJhbW1lZC1tc2ciXHgzZSggXHgzY3NwYW5ceDNlXHgzYy9zcGFuXHgzZSApXHgzYy9kaXZceDNlJykuaG92ZXJpemUoIi5yZXBsaWVyc19sZWZ0ICsgdGQiLAp7YXV0b1RvZ2dsZTohMSxhdXRvUG9zaXRpb246ITF9KS5iaW5kKHtlbnRlcnRhcmdldDpmdW5jdGlvbigpe3ZhciBiPWguZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0O2lmKGIucGFyZW50KCkuaGFzQ2xhc3MoImFuLWJhbW1lZCIpKXt2YXIgZD1iLmlubmVySGVpZ2h0KCk7aC5jaGlsZHJlbigpLnRleHQoIlNob3cgQmxvY2tlZCBVc2VyIC0gIitiLnBhcmVudCgpLmF0dHIoInVzZXJuYW1lIikpLmVuZCgpLmNzcyhjLmV4dGVuZChiLm9mZnNldCgpLHt3aWR0aDpiLmlubmVyV2lkdGgoKSxoZWlnaHQ6ZCxsaW5lSGVpZ2h0OmQrInB4In0pKS5zaG93KCl9fSxsZWF2ZXRhcmdldDpmdW5jdGlvbigpe2guaGlkZSgpO2wmJihsPSExLGguZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LnBhcmVudCgpLmFkZENsYXNzKCJhbi1iYW1tZWQiKSl9LGNsaWNrOmZ1bmN0aW9uKGIpe2IudGFyZ2V0IT09dGhpcyYmKGw9ITAsaC5oaWRlKCkuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LnBhcmVudCgpLnJlbW92ZUNsYXNzKCJhbi1iYW1tZWQiKSl9fSksCm09dGhpcy50b2dnbGVSZXBsaWVzPWZ1bmN0aW9uKGQpe3ZhciBnPWIoKTsoZHx8Yyhkb2N1bWVudCkpLnJlcGxpZXMoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKTtiLmZpbmQoInRyW3VzZXJpZF0iKS50b2dnbGVDbGFzcygiYW4tYmFtbWVkIiwtMSE9Yy5pbkFycmF5KGIuZGF0YSgic1VzZXJpZCIpLGcpKX0pfX0saW5maW5pdGU6ZnVuY3Rpb24oYil7dGhpcy50b2dnbGVSZXBsaWVzKGIpfX0sIjc5MDZiZThlLTE4MDktNDBjMS04ZTI3LTk2ZGYzYWEyMjlkOCI6e2Rlc2M6Ilx1NzUyOFx1NjIzNlx1OWFkOFx1NGVhZVx1NTI5Zlx1ODBmZCIscGFnZTp7MzI6ITB9LHR5cGU6NixvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5oaWdobGlnaHRMaXN0PVtdLGc9Yy51c2VyQnV0dG9uKCkuYmluZCh7Y2xpY2s6ZnVuY3Rpb24oKXt2YXIgZD1nLmRhdGEoInVzZXJCdXR0b24iKS5qVGFyZ2V0LmF0dHIoInVzZXJpZCIpLG09Yy5pbkFycmF5KGQsYik7LTE9PT1tP2IucHVzaChkKToKYi5zcGxpY2UobSwxKTtsKG51bGwpfSxidXR0b25zaG93OmZ1bmN0aW9uKCl7Zy5hdHRyKCJzcmMiLEtbZy5kYXRhKCJ1c2VyQnV0dG9uIikualRhcmdldC5oYXNDbGFzcygiYW4taGlnaGxpZ2h0ZWQiKT8iaGlnaGxpZ2h0ZXItLW1pbnVzIjoiaGlnaGxpZ2h0ZXItLXBsdXMiXSl9fSk7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCIuYW4taGlnaGxpZ2h0ZWQgXHgzZSB0ZCB7IGJhY2tncm91bmQtY29sb3I6ICVzICFpbXBvcnRhbnQ7IH0iLGQudXRpbC5nZXRPcHRpb25zKCJzSGlnaGxpZ2h0QmdDb2xvciIpKSk7dmFyIGw9dGhpcy50b2dnbGVSZXBsaWVzPWZ1bmN0aW9uKGQpeyhkfHxjKGRvY3VtZW50KSkucmVwbGllcygpLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1jKHRoaXMpO2QuZmluZCgidHJbdXNlcmlkXSIpLnRvZ2dsZUNsYXNzKCJhbi1oaWdobGlnaHRlZCIsLTEhPWMuaW5BcnJheShkLmRhdGEoInNVc2VyaWQiKSxiKSl9KX19LGluZmluaXRlOmZ1bmN0aW9uKGIpe3RoaXMuaGlnaGxpZ2h0TGlzdC5sZW5ndGgmJgp0aGlzLnRvZ2dsZVJlcGxpZXMoYil9fSwiZTgyYWEwYmEtYWEzNC00Mjc3LTk5ZWEtNDEyMTlkY2RhY2YyIjp7ZGVzYzoiXHU3NTI4XHU2MjM2XHU1NWFlXHU3MzY4XHU5ODZmXHU3OTNhXHU1MjlmXHU4MGZkIixkZWZlcjoxLHBhZ2U6ezMyOiEwfSx0eXBlOjYsb25jZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMsZD1jLnVzZXJCdXR0b24oKS5iaW5kKHtjbGljazpmdW5jdGlvbigpe2IudGFyZ2V0SWQ9Yi50YXJnZXRJZD9udWxsOmQuZGF0YSgidXNlckJ1dHRvbiIpLmpUYXJnZXQuYXR0cigidXNlcmlkIik7bChudWxsKX0sYnV0dG9uc2hvdzpmdW5jdGlvbigpe2QuYXR0cigic3JjIixLW2IudGFyZ2V0SWQ/Im1hZ25pZmllci16b29tLW91dCI6Im1hZ25pZmllci16b29tLWluIl0pfX0pLGw9dGhpcy50b2dnbGVSZXBsaWVzPWZ1bmN0aW9uKGQpeyhkfHxjKGRvY3VtZW50KSkucmVwbGllcygpLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1jKHRoaXMpO2QuY2xvc2VzdCgiZGl2IFx4M2UgdGFibGUiKS50b2dnbGUoIWIudGFyZ2V0SWR8fApkLmRhdGEoInNVc2VyaWQiKT09PWIudGFyZ2V0SWQpfSl9fSxpbmZpbml0ZTpmdW5jdGlvbihiKXt0aGlzLnRhcmdldElkJiZ0aGlzLnRvZ2dsZVJlcGxpZXMoYil9fSwiZmMwN2NjZGEtNGU3Ni00NzAzLTgzODgtODFkYWM5NDI3ZDdjIjp7ZGVzYzoiXHU1ZjM3XHU1MjM2XHU5ODZmXHU3OTNhXHU3YTdhXHU3NjdkXHU3NTI4XHU2MjM2XHU1NDBkXHU5MDIzXHU3ZDUwIixwYWdlOnszMjohMH0sdHlwZTo2LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiLmFuLW5hbWVmb3JjZWRzaG93biB7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfSIpfSxpbmZpbml0ZTpmdW5jdGlvbihiKXtiLnJlcGxpZXMoKS5qTmFtZUxpbmtzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAwPT09Yyh0aGlzKS53aWR0aCgpfSkuYWRkQ2xhc3MoImFuLW5hbWVmb3JjZWRzaG93biIpLmh0bWwoIlx4M2NcdTdhN2FcdTc2N2RcdTU0MGRcdTdhMzFceDNlIil9fSwiNjMzMzNhODYtMTkxNi00NWMxLTk2ZTAtZjM0YTVhZGQ2N2MxIjp7ZGVzYzoiXHU5NjUwXHU1MjM2XHU1NmRlXHU4OTg2XHU5YWQ4XHU1ZWE2IiwKcGFnZTp7MzI6ITF9LHR5cGU6NixvcHRpb25zOntyZXBseU1heEhlaWdodDp7ZGVzYzoiXHU2NzAwXHU1OTI3XHU5YWQ4XHU1ZWE2KHB4KSIsdHlwZToidGV4dCIsZGVmYXVsdFZhbHVlOjJFM319LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYj1kLnV0aWwuZ2V0T3B0aW9ucygicmVwbHlNYXhIZWlnaHQiKTtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdC5yZXBsaWVyc19yaWdodCwgLnJlcGxpZXJzX3JpZ2h0IFx4M2UgdGJvZHksIC5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHIsIC5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHIgXHgzZSB0ZCB7IGRpc3BsYXk6IGJsb2NrOyB9IFx0XHQucmVwbGllcnNfcmlnaHQgXHgzZSB0Ym9keSBceDNlIHRyOmZpcnN0LWNoaWxkIHsgbWF4LWhlaWdodDogIitiKyJweDsgb3ZlcmZsb3cteTogaGlkZGVuOyB9IFx0XHQuYW4tbWF4aGVpZ2h0cmVtb3ZlZCBceDNlIC5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgeyBtYXgtaGVpZ2h0OiBub25lOyB9IFx0XHQjYW4taGVpZ2h0dG9nZ2xlciB7IG1hcmdpbjogLTE0cHggMCAwIDMuNXB4OyB9IFx0XHQjYW4taGVpZ2h0dG9nZ2xlciBceDNlIGltZyB7IHBhZGRpbmc6IDdweCAzLjVweDsgY3Vyc29yOiBwb2ludGVyOyB9IFx0XHQiKTsKdmFyIGc9YygnXHgzY2RpdiBpZFx4M2QiYW4taGVpZ2h0dG9nZ2xlciJceDNlXHgzY2ltZyBzcmNceDNkIicrS1siY29udHJvbC1lamVjdCJdKyciIC9ceDNlXHgzY2ltZyBzcmNceDNkIicrS1siY29udHJvbC1zdG9wLTI3MCJdKyciIC9ceDNlXHgzY2ltZyBzcmNceDNkIicrS1siY29udHJvbC0yNzAiXSsnIiAvXHgzZVx4M2MvZGl2XHgzZScpLmhvdmVyaXplKCIucmVwbGllcnNfbGVmdCArIHRkIix7ZmlsdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcykuaGFzQ2xhc3MoImFuLW1heGhlaWdodHJlbW92ZWQiKXx8Yyh0aGlzKS5maW5kKCJ0ZDpmaXJzdCIpLmlubmVySGVpZ2h0KCk+Yn0sYXV0b1Bvc2l0aW9uOiExfSkuYmluZCh7ZW50ZXJ0YXJnZXQ6ZnVuY3Rpb24oKXt2YXIgYj1nLmRhdGEoImhvdmVyaXplIikualRhcmdldCxjPWIuaGFzQ2xhc3MoImFuLW1heGhlaWdodHJlbW92ZWQiKSxkPWIub2Zmc2V0KCk7Zy5jc3Moe3RvcDpkLnRvcCtiLmhlaWdodCgpLGxlZnQ6ZC5sZWZ0fSkuY2hpbGRyZW4oIjpmaXJzdCIpLnRvZ2dsZShjKS5uZXh0QWxsKCkudG9nZ2xlKCFjKX0sCmNsaWNrOmZ1bmN0aW9uKGIpe3ZhciBkPWcuZGF0YSgiaG92ZXJpemUiKTtkLmZpeFNjcm9sbD0yPT09YyhiLnRhcmdldCkuaW5kZXgoKT8idG9wIjoiYm90dG9tIjtkLmZpeFNjcm9sbF9kaWZmZXJlbmNlPWQualRhcmdldFtkLmZpeFNjcm9sbF0oKS12LnNjcm9sbFRvcCgpO2QualRhcmdldC50b2dnbGVDbGFzcygiYW4tbWF4aGVpZ2h0cmVtb3ZlZCIpfX0pfX0sIjdiMzYxODhmLWM1NjYtNDZlYi1iNDhkLTU2ODBhNDMzMWMxZiI6e2Rlc2M6Ilx1OGY0OVx1NjNkYlx1OGFkNlx1NThjN1x1OTAyM1x1N2Q1MFx1NzY4NFx1NGYzYVx1NjcwZFx1NTY2OFx1NGY0ZFx1N2Y2ZSIscGFnZTp7MzI6ITB9LHR5cGU6NixvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9Lyg/OmRlbW9mb3J1bXxncm91cG9ufHNlYXJjaHxtXGQqfGZvcnVtXGQqKVwuaGtnb2xkZW5cLmNvbS9pO3YubW91c2Vkb3duKGZ1bmN0aW9uKGQpe2Q9YyhkLnRhcmdldCk7ZC5pcygiLnJlcGxpZXJzX3JpZ2h0IFx4M2UgdGJvZHkgXHgzZSB0cjpmaXJzdC1jaGlsZCBhIikmJgpiLnRlc3QoZC5hdHRyKCJocmVmIikpJiZkLmF0dHIoImhyZWYiLGQuYXR0cigiaHJlZiIpLnJlcGxhY2UoYixDLmhvc3RuYW1lKSl9KX19LCJlMzNiZjAwYy05ZmM1LTQ2YWItODY2YS0wM2M0YzdjYTUwNTYiOntkZXNjOiJcdThmNDlcdTYzZGJcdTY1ODdcdTViNTdcdTkwMjNcdTdkNTBcdTYyMTBcdTkwMjNcdTdkNTAiLHBhZ2U6ezMyOiEwfSx0eXBlOjYsb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKCIuYW4tbGlua2lmaWVkIHsgcGFkZGluZy1yaWdodDogMnB4OyB9Iil9LGluZmluaXRlOmZ1bmN0aW9uKGIpe3ZhciBkPS8oPzpodHRwcz98ZnRwKTpcL1wvKD86W1x3LV0rXC4pK1thLXpdezIsM30oPyFbYS16XSlbXHcuXC8/Ojt+IUAjJCVeJiooKSs9LV0qL2k7Yi5yZXBsaWVzKCkuakNvbnRlbnRzLmVhY2goZnVuY3Rpb24oKXtpZihkLnRlc3QoYyh0aGlzKS50ZXh0KCkpKWZvcih2YXIgYixoLG09dGhpcy5maXJzdENoaWxkO2I9bTspaWYoMz09PWIubm9kZVR5cGUmJgooaD1kLmV4ZWMoYi5kYXRhKSkpbT1iLnNwbGl0VGV4dChoLmluZGV4K2hbMF0ubGVuZ3RoKSxjKGIuc3BsaXRUZXh0KGguaW5kZXgpKS5iZWZvcmUoJ1x4M2NpbWcgdGl0bGVceDNkIlx1NWRmMlx1OGY0OVx1NjNkYlx1NjU4N1x1NWI1N1x1NzBiYVx1OTAyM1x1N2Q1MCIgY2xhc3NceDNkImFuLWxpbmtpZmllZCIgc3JjXHgzZCInK0tbImNoYWluLS1hcnJvdyJdKyciIC9ceDNlJykuYWZ0ZXIoYy5zcHJpbnRmKCdceDNjYSBocmVmXHgzZCIlcyJceDNlJXNceDNjL2FceDNlJyxoWzBdLGhbMF0pKS5yZW1vdmUoKTtlbHNlIGZvcihtPSEvXig/OmF8YnV0dG9ufHNjcmlwdHxzdHlsZSkkL2kudGVzdChiLm5vZGVOYW1lKSYmYi5maXJzdENoaWxkfHxiLm5leHRTaWJsaW5nOyFtJiYoYj1iLnBhcmVudE5vZGUpOyltPWIubmV4dFNpYmxpbmd9KX19LCI0MjJmZTMyMy1lNjFlLTQ3ZDktYTM0OC1kNDAwMTFmNWRhMjgiOntkZXNjOiJcdTkwMjNcdTdkNTBcdTVjMDFcdTkzOTZcdTUyOWZcdTgwZmQiLApwYWdlOnszMjohMX0sdHlwZTo2LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdC5yZXBsaWVyc19yaWdodCBhW3RhcmdldF0geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0gXHRcdGFbaHJlZl0uYW4tbGlua2Jsb2NrZWQgeyB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsgZm9udC1zdHlsZTogaXRhbGljOyBjdXJzb3I6IGRlZmF1bHQ7IH0gXHRcdGFbdGFyZ2V0XS5hbi1saW5rYmxvY2tlZDpiZWZvcmUgeyBjb250ZW50OiBhdHRyKHJlbCk7IH0gXHRcdGFbdGFyZ2V0XS5hbi1saW5rYmxvY2tlZCBceDNlIGltZyB7IGRpc3BsYXk6IG5vbmU7IH0gXHRcdCNhbi1saW5rYmxvY2t0b2dnbGVyIHsgbWFyZ2luOiAtMTZweCAwIDAgLTM0cHg7IHBhZGRpbmc6IDE2cHg7IHBhZGRpbmctcmlnaHQ6IDJweDsgfSBcdFx0Iik7dmFyIGI9dGhpcy5ibG9ja0xpc3Q9ZC51dGlsLmRhdGEoImxpbmtCbG9ja0xpc3QiKXx8W10sZz0vXmh0dHA6XC9cLyg/OlteLl0rLiloa2dvbGRlblwuY29tLywKbD1jKCJceDNjaW1nIC9ceDNlIix7aWQ6ImFuLWxpbmtibG9ja3RvZ2dsZXIifSkuaG92ZXJpemUoIi5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgYSIse2ZpbHRlcjpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMpLmhhc0NsYXNzKCJhbi1saW5rYmxvY2tlZCIpfHwhZy50ZXN0KHRoaXMuaHJlZil9LGZpeFNjcm9sbDoidG9wIn0pLmJpbmQoe2VudGVydGFyZ2V0OmZ1bmN0aW9uKCl7bC5hdHRyKCJzcmMiLEtbbC5kYXRhKCJob3Zlcml6ZSIpLmpUYXJnZXQuaGFzQ2xhc3MoImFuLWxpbmtibG9ja2VkIik/InRpY2stc2hpZWxkIjoiY3Jvc3Mtc2hpZWxkIl0pfSxjbGljazpmdW5jdGlvbigpe3ZhciBnPWwuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LG09Zy5oYXNDbGFzcygiYW4tbGlua2Jsb2NrZWQiKSxxPW0/InJlbCI6ImhyZWYiLG49Zy5hdHRyKHEpLGc9Yyhkb2N1bWVudCkucmVwbGllcygpLmpDb250ZW50cy5maW5kKCJhIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcV09PT0Kbn0pLnRvZ2dsZUNsYXNzKCJhbi1saW5rYmxvY2tlZCIpO20/KGcuYXR0cih7aHJlZjpufSksYi5zcGxpY2UoYy5pbkFycmF5KG4sYiksMSkpOihnLmF0dHIoe2hyZWY6ImphdmFzY3JpcHQ6IixyZWw6bn0pLGIucHVzaChuKSk7ZC51dGlsLmRhdGEoImxpbmtCbG9ja0xpc3QiLGIpfX0pfSxpbmZpbml0ZTpmdW5jdGlvbihiLGQpe2IucmVwbGllcygpLmpDb250ZW50cy5maW5kKCJhIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuLTEhPT1jLmluQXJyYXkodGhpcy5ocmVmLGQuYmxvY2tMaXN0KX0pLnRvZ2dsZUNsYXNzKCJhbi1saW5rYmxvY2tlZCIpLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLmF0dHIoe2hyZWY6ImphdmFzY3JpcHQ6IixyZWw6dGhpcy5ocmVmfSl9KX19LCJkNzYxZDZmNy04ZWY3LTRkNWItODRlOS1kYjE2YTI3NGY2MTYiOntkZXNjOiJcdThmNDlcdTYzZGJcdTU3MTZcdTcyNDdcdTkwMjNcdTdkNTBcdTYyMTBcdTU3MTZcdTcyNDciLHBhZ2U6ezMyOiExfSx0eXBlOjYsCm9wdGlvbnM6e2ltYWdlQ29udmVydE1vZGU6e2Rlc2M6Ilx1OGY0OVx1NjNkYlx1NmEyMVx1NWYwZiIsdHlwZToic2VsZWN0IixjaG9pY2VzOlsiXHU4MWVhXHU1MmQ1XHU4ZjQ5XHU2M2RiIiwiXHU4MWVhXHU1MmQ1XHU4ZjQ5XHU2M2RiKFx1NWYxNVx1NzUyOFx1NGUyZFx1NzY4NFx1OTAyM1x1N2Q1MFx1OTY2NFx1NTkxNikiLCJcdTYyNGJcdTUyZDVcdThmNDlcdTYzZGIiXSxkZWZhdWx0VmFsdWU6Ilx1ODFlYVx1NTJkNVx1OGY0OVx1NjNkYihcdTVmMTVcdTc1MjhcdTRlMmRcdTc2ODRcdTkwMjNcdTdkNTBcdTk2NjRcdTU5MTYpIn19LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZSgiXHRcdC5hbi1pbWFnaWZpZWQgeyBwYWRkaW5nLWxlZnQ6IDJweDsgfSBcdFx0LmFuLWltYWdpZmllZCArIGEgeyBkaXNwbGF5OiBibG9jazsgfSBcdFx0LmFuLWltYWdpZmllZCArIGEgXHgzZSBpbWcgeyBib3JkZXI6IDA7IH0gXHRcdCIpO3ZhciBiPS8oPzpuYVwuY3h8dXB0b3dcLm5ldHxob2xsYW5kLnBrKVwvXHcrJHxcLig/OmpwZT9nfGdpZnxwbmd8Ym1wKVxiL2k7CnYuYmluZCgiY2xpY2sgaW1hZ2Vjb252ZXJ0IixmdW5jdGlvbihkKXt2YXIgbD1jKGQudGFyZ2V0KTtsLm5leHQoIi5hbi1pbWFnaWZpZWQiKS5sZW5ndGg/KGQucHJldmVudERlZmF1bHQoKSxsLm5leHQoKS5uZXh0KCkudG9nZ2xlKCkpOjA9PT1sLmNoaWxkcmVuKCkubGVuZ3RoJiYoImltYWdlY29udmVydCI9PT1kLnR5cGV8fGwuaXMoIi5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgYSIpKSYmYi50ZXN0KGQudGFyZ2V0LmhyZWYpJiYoZC5wcmV2ZW50RGVmYXVsdCgpLGMoJ1x4M2NpbWcgdGl0bGVceDNkIlx1NWRmMlx1OGY0OVx1NjNkYlx1OTAyM1x1N2Q1MFx1NzBiYVx1NTcxNlx1NzI0NyIgY2xhc3NceDNkImFuLWltYWdpZmllZCIgc3JjXHgzZCInK0tbImltYWdlLWV4cG9ydCJdKyciIC9ceDNlJykuaW5zZXJ0QWZ0ZXIobCkuYWZ0ZXIoYy5zcHJpbnRmKCdceDNjYSBocmVmXHgzZCIlKHVybClzIiB0YXJnZXRceDNkIl9ibGFuayJceDNlXHgzY2ltZyBvbmxvYWRceDNkIkRyYXdJbWFnZSh0aGlzKSIgc3JjXHgzZCIlKHVybClzIiBhbHRceDNkIiUodXJsKXMiIC9ceDNlXHgzYy9hXHgzZScsCnt1cmw6ZC50YXJnZXQuaHJlZn0pKSl9KX0saW5maW5pdGU6ZnVuY3Rpb24oYil7dmFyIGc9Yy5pbkFycmF5KGQudXRpbC5nZXRPcHRpb25zKCJpbWFnZUNvbnZlcnRNb2RlIiksdGhpcy5vcHRpb25zLmltYWdlQ29udmVydE1vZGUuY2hvaWNlcyk7MiE9PWcmJmIucmVwbGllcygpLmpDb250ZW50cy5maW5kKDA9PT1nPyJhIjoiYTpub3QoYmxvY2txdW90ZSBhKSIpLnRyaWdnZXIoImltYWdlY29udmVydCIpfX0sIjhlMTc4M2NkLTI1ZDUtNGI5NS05MzRjLTQ4YTY1MGM1YzA0MiI6e2Rlc2M6Ilx1NTcxNlx1NzI0N1x1NWM0Zlx1ODUzZFx1NTI5Zlx1ODBmZCIscGFnZTp7MzI6ITF9LHR5cGU6NixvcHRpb25zOntpbWFnZU1hc2tNb2RlOntkZXNjOiJcdTVjNGZcdTg1M2RcdTZhMjFcdTVmMGYiLHR5cGU6InNlbGVjdCIsY2hvaWNlczpbIlx1ODFlYVx1NTJkNVx1NWM0Zlx1ODUzZCIsIlx1ODFlYVx1NTJkNVx1NWM0Zlx1ODUzZChcdTUzZWFcdTk2NTBcdTVmMTVcdTc1MjhcdTRlMmRcdTc2ODRcdTU3MTZcdTcyNDcpIiwKIlx1NjI0Ylx1NTJkNVx1NWM0Zlx1ODUzZCJdLGRlZmF1bHRWYWx1ZToiXHU4MWVhXHU1MmQ1XHU1YzRmXHU4NTNkKFx1NTNlYVx1OTY1MFx1NWYxNVx1NzUyOFx1NGUyZFx1NzY4NFx1NTcxNlx1NzI0NykifX0sb25jZTpmdW5jdGlvbigpe3ZhciBiPWMuaW5BcnJheShkLnV0aWwuZ2V0T3B0aW9ucygiaW1hZ2VNYXNrTW9kZSIpLHRoaXMub3B0aW9ucy5pbWFnZU1hc2tNb2RlLmNob2ljZXMpO2QudXRpbC5zdGFja1N0eWxlKHswOiIucmVwbGllcnNfcmlnaHQgaW1nW3NyY11bb25sb2FkXSwiLDE6Ii5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlIGltZ1tvbmxvYWRdLCIsMjoiIn1bYl0rImltZ1tvbmxvYWRdLmFuLW1hc2tlZEltYWdlIHsgcGFkZGluZzogNTJweCA0OHB4IDAgMDsgd2lkdGg6IDA7IGhlaWdodDogMDsgYmFja2dyb3VuZDogdXJsKCIrS1siZ25vbWUtbWltZS1pbWFnZS1ibXAiXSsiKSBuby1yZXBlYXQ7IH0iKTsyIT09YiYmZC51dGlsLnN0YWNrU3R5bGUoImltZ1tzcmNdW29ubG9hZF0uYW4tdW5tYXNrZWRJbWFnZSB7IHBhZGRpbmc6IDA7IHdpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IH0iKTsKdmFyIGc9YygiXHgzY2ltZyAvXHgzZSIse3NyYzpLWyJwaWN0dXJlLS1taW51cyJdLGNzczp7Im1hcmdpbi10b3AiOiItMnB4In19KS5ob3Zlcml6ZSgiLnJlcGxpZXJzX3JpZ2h0IGltZ1tvbmxvYWRdIix7ZmlsdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcykud2lkdGgoKX19KS5jbGljayhmdW5jdGlvbigpe2cuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LmFkZENsYXNzKCJhbi1tYXNrZWRJbWFnZSIpLnJlbW92ZUNsYXNzKCJhbi11bm1hc2tlZEltYWdlIil9KTt2LmJpbmQoImNsaWNrIixmdW5jdGlvbihiKXt2YXIgZD1jKGIudGFyZ2V0KTtkLmlzKCJpbWdbb25sb2FkXSIpJiYwPT09ZC53aWR0aCgpJiYoYi5wcmV2ZW50RGVmYXVsdCgpLGQuYWRkQ2xhc3MoImFuLXVubWFza2VkSW1hZ2UiKS5yZW1vdmVDbGFzcygiYW4tbWFza2VkSW1hZ2UiKS5tb3VzZW92ZXIoKSl9KX19LCIwMzlkODIwZi1kM2M3LTQ1MzktODY0Ny1kZGU5NzRjZWVjMGIiOntkZXNjOiJcdThmNDlcdTYzZGJcdTg5OTZcdTk4M2JcdTdkYjJcdTdhZDlcdTkwMjNcdTdkNTBcdTYyMTBcdTVmNzFcdTcyNDciLApwYWdlOnszMjohMH0sdHlwZTo2LGRlZmVyOjIsb3B0aW9uczp7dmlkZW9Db252ZXJ0TW9kZTp7ZGVzYzoiXHU4ZjQ5XHU2M2RiXHU2YTIxXHU1ZjBmIix0eXBlOiJzZWxlY3QiLGNob2ljZXM6WyJcdTgxZWFcdTUyZDVcdThmNDlcdTYzZGIiLCJcdTgxZWFcdTUyZDVcdThmNDlcdTYzZGIoXHU1ZjE1XHU3NTI4XHU0ZTJkXHU3Njg0XHU5MDIzXHU3ZDUwXHU5NjY0XHU1OTE2KSIsIlx1NjI0Ylx1NTJkNVx1OGY0OVx1NjNkYiJdLGRlZmF1bHRWYWx1ZToiXHU4MWVhXHU1MmQ1XHU4ZjQ5XHU2M2RiKFx1NWYxNVx1NzUyOFx1NGUyZFx1NzY4NFx1OTAyM1x1N2Q1MFx1OTY2NFx1NTkxNikifSx2aWRlb01heFdpZHRoOntkZXNjOiJcdTY0YWRcdTY1M2VcdTU2NjhcdTY3MDBcdTU5MjdcdTk1Y2FcdTVlYTYgW1x1NTNlZlx1OGEyZFx1NWI5YVx1NzBiYTgwJSwgMTAwMHB4XHU3YjQ5XSIsdHlwZToidGV4dCIsZGVmYXVsdFZhbHVlOiIxMDAlIn19LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYixnLGwsCmg9W3tyZWdleDoieW91dHViZVxcLmNvbS93YXRjaFxcPyIsZm46ZnVuY3Rpb24oKXtnPWIvMTYqOSsyNTtsPWMuc3ByaW50ZigiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92LyVzP3ZlcnNpb25ceDNkM1x4MjZmc1x4M2QxXHgyNnJlbFx4M2QwIixsLnJlcGxhY2UoLy4rP3Y9KFteJiNdKykuKi9pLCIkMSIpKX19LHtyZWdleDoieW91dHVcXC5iZS8uIixmbjpmdW5jdGlvbigpe2c9Yi8xNio5KzI1O2w9Yy5zcHJpbnRmKCJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvJXM/dmVyc2lvblx4M2QzXHgyNmZzXHgzZDFceDI2cmVsXHgzZDAiLGwucmVwbGFjZSgvLitcLyhbXj8mI10rKS4qL2ksIiQxIikpfX0se3JlZ2V4OiJ2aW1lb1xcLmNvbS9cXGQiLGZuOmZ1bmN0aW9uKCl7Zz1iLzEuNTtsPWMuc3ByaW50ZigiaHR0cDovL3ZpbWVvLmNvbS9tb29nYWxvb3Auc3dmP2NsaXBfaWRceDNkJXNceDI2c2hvd190aXRsZVx4M2QxXHgyNmZ1bGxzY3JlZW5ceDNkMSIsbC5yZXBsYWNlKC8uK3ZpbWVvXC5jb21cLyhcZCspLiovaSwKIiQxIikpfX0se3JlZ2V4OiJ5b3VrdVxcLmNvbS92X3Nob3cvIixmbjpmdW5jdGlvbigpe2c9Yi80KjMrNDA7bD1jLnNwcmludGYoImh0dHA6Ly9wbGF5ZXIueW91a3UuY29tL3BsYXllci5waHAvc2lkLyVzL3Yuc3dmIixsLnJlcGxhY2UoLy4rP2lkXyhbXlwvXSspLiovaSwiJDEiKSl9fSx7cmVnZXg6InR1ZG91XFwuY29tL3Byb2dyYW1zLyIsZm46ZnVuY3Rpb24oKXtnPWIvNCozKzQ4O2w9Yy5zcHJpbnRmKCJodHRwOi8vd3d3LnR1ZG91LmNvbS92LyVzIixsLnJlcGxhY2UoLy4rP3ZpZXdcLyhbXlwvXSspLiovaSwiJDEiKSl9fV0sbT1mdW5jdGlvbigpe3ZhciBiPVtdO2MuZWFjaChoLGZ1bmN0aW9uKCl7Yi5wdXNoKHRoaXMucmVnZXgpfSk7cmV0dXJuIFJlZ0V4cChiLmpvaW4oInwiKSwiaSIpfSgpO2QudXRpbC5zdGFja1N0eWxlKCJcdFx0LmFuLXZpZGVvaWZpZWQgeyBwYWRkaW5nLWxlZnQ6IDJweDsgfSBcdFx0LmFuLXZpZGVvaWZpZWQgKyBvYmplY3QgeyBkaXNwbGF5OiBibG9jazsgb3V0bGluZTogMDsgfSBcdFx0Iik7CnYuYmluZCgiY2xpY2sgdmlkZW9jb252ZXJ0IixmdW5jdGlvbihxKXt2YXIgbj1jKHEudGFyZ2V0KTtuLm5leHQoIi5hbi12aWRlb2lmaWVkIikubGVuZ3RoPyhxLnByZXZlbnREZWZhdWx0KCksbi5uZXh0KCkubmV4dCgpLnJlbW92ZSgpLmVuZCgpLnJlbW92ZSgpKTooInZpZGVvY29udmVydCI9PT1xLnR5cGV8fG4uaXMoIi5yZXBsaWVyc19yaWdodCBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgYSIpKSYmbS50ZXN0KHEudGFyZ2V0LmhyZWYpJiYocS5wcmV2ZW50RGVmYXVsdCgpLGw9cS50YXJnZXQuaHJlZixxPW4udXAoImRpdiIpLndpZHRoKCksYj1kLnV0aWwuZ2V0T3B0aW9ucygidmlkZW9NYXhXaWR0aCIpLGI9Ly4rJS8udGVzdChiKT9xKnBhcnNlSW50KGIpLzEwMDpwYXJzZUludChiKSxiPnEmJihiPXEpLGMuZWFjaChoLGZ1bmN0aW9uKCl7aWYoUmVnRXhwKHRoaXMucmVnZXgsImkiKS50ZXN0KGwpKXJldHVybiB0aGlzLmZuKCksITF9KSxjKCJceDNjZGl2XHgzZVx4M2MvZGl2XHgzZSIpLmluc2VydEFmdGVyKG4pLnRvRmxhc2gobCwKe3dpZHRoOmIsaGVpZ2h0OmcudG9GaXhlZCgwKX0se3dtb2RlOiJvcGFxdWUiLGFsbG93ZnVsbHNjcmVlbjoidHJ1ZSJ9KS5iZWZvcmUoJ1x4M2NpbWcgdGl0bGVceDNkIlx1NWRmMlx1OGY0OVx1NjNkYlx1OTAyM1x1N2Q1MFx1NzBiYVx1NWY3MVx1NzI0NyIgY2xhc3NceDNkImFuLXZpZGVvaWZpZWQiIHNyY1x4M2QiJytLWyJmaWxtLS1hcnJvdyJdKyciIC9ceDNlJykpfSl9LGluZmluaXRlOmZ1bmN0aW9uKGIsZyl7dmFyIGw9Yy5pbkFycmF5KGQudXRpbC5nZXRPcHRpb25zKCJ2aWRlb0NvbnZlcnRNb2RlIiksdGhpcy5vcHRpb25zLnZpZGVvQ29udmVydE1vZGUuY2hvaWNlcyk7MiE9PWwmJmIucmVwbGllcygpLmpDb250ZW50cy5maW5kKDA9PT1sPyJhIjoiYTpub3QoYmxvY2txdW90ZSBhKSIpLnRyaWdnZXIoInZpZGVvY29udmVydCIpfX0sImE3NDg0Y2YyLTljYmQtNDdhYS1hYzI4LTQ3MmY1NWExYjhmNCI6e2Rlc2M6Ilx1OTcwMFx1ODk4MVx1NjY0Mlx1ODFlYVx1NTJkNVx1NTJhMFx1NTE2NVx1NGVlM1x1NzhiY1x1NjNkMlx1NTE2NVx1NjMwOVx1NjI2ZCIsCnBhZ2U6ezI4ODohMH0sdHlwZTo2LG9uY2U6ZnVuY3Rpb24oKXt2YXIgYixkLGwsaCxtLHEsbj1jKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdldGV4dCIpLmJpbmQoImtleXVwIG1vdXNldXAgY2hhbmdlIixmdW5jdGlvbigpe2lmKCFiKXt2YXIgcD17aG9zdDoiaHR0cHM/Oi8vKD86W1xcdy1dK1xcLikrW2Etel17Miw0fSg/IVthLXpdKSIsY29kZXM6IlxcWy8/KD86aW1nfHVybHxxdW90ZXxcXCp8bGVmdHxjZW50ZXJ8cmlnaHR8YnxpfHV8c3xzaXplfHJlZHxncmVlbnxibHVlfHB1cnBsZXx2aW9sZXR8YnJvd258YmxhY2t8cGlua3xvcmFuZ2V8Z29sZHxtYXJvb258dGVhbHxuYXZ5fGxpbWVncmVlbikifTtiPVJlZ0V4cChjLnNwcmludGYoIiUoaG9zdClzKD86Lyg/Oig/ISUoY29kZXMpcylcXFMpKik/KD8hKFxcUyo/fCAqKVxcWy8oPzppbWd8dXJsKV0pIixwKSwiZ2kiKTtkPWMoJ1x4M2NidXR0b24gdHlwZVx4M2QiYnV0dG9uIiBzdHlsZVx4M2QidmVydGljYWwtYWxpZ246IHRvcDsgbWFyZ2luLWxlZnQ6IDVweDsgZGlzcGxheTogbm9uZTsiIC9ceDNlJykuaW5zZXJ0QWZ0ZXIoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX2J0bl9TdWJtaXQgfiA6bGFzdC1jaGlsZCIpLmNsaWNrKGZ1bmN0aW9uKCl7bi52YWwobS5yZXBsYWNlKGIsCiJbdXJsXSRceDI2Wy91cmxdIikpLmNoYW5nZSgpfSk7bD1SZWdFeHAoYy5zcHJpbnRmKCIlKGhvc3Qpcy8oPzooPyElKGNvZGVzKXMpXFxTKSs/XFwuKD86Ym1wfGpwZT9nfHBuZ3xnaWYpKD8hICpcXFsvKD86aW1nfHVybCldKSIscCksImdpIik7aD1jKCdceDNjYnV0dG9uIHR5cGVceDNkImJ1dHRvbiIgc3R5bGVceDNkInZlcnRpY2FsLWFsaWduOiB0b3A7IG1hcmdpbi1sZWZ0OiA1cHg7IGRpc3BsYXk6IG5vbmU7IiAvXHgzZScpLmluc2VydEFmdGVyKGQpLmNsaWNrKGZ1bmN0aW9uKCl7bi52YWwobS5yZXBsYWNlKGwsIltpbWddJFx4MjZbL2ltZ10iKSkuY2hhbmdlKCl9KX1tPW4udmFsKCk7KHE9bS5tYXRjaChiKSk/ZC5odG1sKGMuc3ByaW50ZigiXHU3MGJhJXNcdTUwMGJcdTkwMjNcdTdkNTBcdTUyYTBcdTRlMGFbdXJsXVx1NGVlM1x1NzhiYyIscS5sZW5ndGgpKS5zaG93KCk6ZC5oaWRlKCk7KHE9bS5tYXRjaChsKSk/aC5odG1sKGMuc3ByaW50ZigiXHU3MGJhJXNcdTUwMGJcdTU3MTZcdTcyNDdcdTkwMjNcdTdkNTBcdTUyYTBcdTRlMGFbaW1nXVx1NGVlM1x1NzhiYyIsCnEubGVuZ3RoKSkuc2hvdygpOmguaGlkZSgpfSl9fSwiMWZiMTc2MjQtN2M2Zi00M2FhLWFmMTEtOTMzMWYxZjk0OGNiIjp7ZGVzYzoiXHU1ZjM3XHU1MzE2XHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhXHU1MjE3IixwYWdlOnsyODg6ITB9LHR5cGU6NixvcHRpb25zOntzU21pbGV5U2VsZWN0TWV0aG9kOntkZXNjOiJcdTU3MTZcdTc5M2FcdTkwNzhcdTY0YzdcdTY1YjlcdTVmMGYiLGRlZmF1bHRWYWx1ZToiXHU1MjE3XHU4ODY4Iix0eXBlOiJzZWxlY3QiLGNob2ljZXM6WyJcdTUyMTdcdTg4NjgiLCJcdTkwMjNcdTdkNTAiXX19LG9uY2U6ZnVuY3Rpb24oKXtpZihjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdldGV4dCIpLmxlbmd0aCl7dmFyIGI9IiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX1F1aWNrUmVwbHlUYWJsZSB0YWJsZSB0YWJsZSBceDNlIHRib2R5IFx4M2UgdHI6Zmlyc3QtY2hpbGQgKyB0ciArIHRyICsgdHIiO2MoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX0ZvcnVtX1R5cGVfUm93IikubGVuZ3RoJiYKKGIrPSIrIHRyICsgdHIiKTtiKz0iXHgzZSB0ZDpmaXJzdC1jaGlsZCI7ZC51dGlsLnN0YWNrU3R5bGUoIlx0XHQiK2IrIiB7IGN1cnNvcjogcG9pbnRlcjsgfSBcdFx0IitiKyI6YmVmb3JlIHsgY29udGVudDogdXJsKCIrS1sic21pbGV5LXR3aXN0Il0rIik7IG1hcmdpbi1yaWdodDogMnB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9IFx0XHQiKTt2LmJpbmQoImNsaWNrLnNtaWxleWFkZGVyIixmdW5jdGlvbihnKXt2YXIgbD1jKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdldGV4dCIpLnVwKCJ0ciIpLm5leHQoKTtpZighbC5sZW5ndGh8fGwuY2hpbGRyZW4oIjpmaXJzdCIpWzBdPT09Zy50YXJnZXQpaWYodi51bmJpbmQoImNsaWNrLnNtaWxleWFkZGVyIiksZC51dGlsLmFkZFN0eWxlKCJcdFx0XHQiK2IrIiB7IGN1cnNvcjogZGVmYXVsdDsgfSBcdFx0XHQiK2IrJzpiZWZvcmUgeyBjb250ZW50OiAiIjsgZGlzcGxheTogbm9uZTsgfSBcdFx0XHQnKSxsLmNoaWxkcmVuKCI6bGFzdCIpLmFwcGVuZChmdW5jdGlvbigpe3ZhciBiPQoiIjtjLmVhY2goZGEsZnVuY3Rpb24oKXt2YXIgZD10aGlzLmh0bWw7Yis9J1x4M2N0YWJsZSBzdHlsZVx4M2QiZGlzcGxheTogbm9uZSIgY2VsbHBhZGRpbmdceDNkIjAiIGNlbGxzcGFjaW5nXHgzZCIwIlx4M2VceDNjdGJvZHlceDNlJztjLmVhY2goZC50YWJsZSxmdW5jdGlvbihnLGgpe2Z1bmN0aW9uIGwoZyxoKXtiKz1jLnNwcmludGYoJ1x4M2NhIGhyZWZceDNkImphdmFzY3JpcHQ6SW5zZXJ0VGV4dChcJyUoY29kZSlzXCcsZmFsc2UpIlx4M2VceDNjaW1nIHN0eWxlXHgzZCJib3JkZXI6IDAiIHNyY1x4M2QiJShwYXRoKXMvJShmaWxlbmFtZSlzLmdpZiIgYWx0XHgzZCIlKGNvZGUpcyIgL1x4M2VceDNjL2FceDNlXHgyNm5ic3A7XHgyNm5ic3A7Jyx7Y29kZTpoWzBdLHBhdGg6ZC5wYXRoLGZpbGVuYW1lOmhbMV19KX1iKz0iXHgzY3RyXHgzZSI7Yis9MD09Zz8nXHgzY3RkIGNvbHNwYW5ceDNkIjIiXHgzZSc6Ilx4M2N0ZFx4M2UiO2MuZWFjaChoLGwpO2IrPSJceDNjL3RkXHgzZSI7CjE9PWcmJmQuc3BhbiYmKGIrPSdceDNjdGQgdmFsaWduXHgzZCJib3R0b20iIHJvd3NwYW5ceDNkIjIiXHgzZScsYy5lYWNoKGQuc3BhbixsKSxiKz0iXHgzYy90ZFx4M2UiKTtiKz0iXHgzYy90clx4M2UifSk7Yis9Ilx4M2MvdGJvZHlceDNlXHgzYy90YWJsZVx4M2UifSk7cmV0dXJuIGJ9KSxnPWQudXRpbC5kYXRhKCJsYXN0U2VsZWN0ZWRTbWlsZXkiKSwiXHU1MjE3XHU4ODY4Ij09PWQudXRpbC5nZXRPcHRpb25zKCJzU21pbGV5U2VsZWN0TWV0aG9kIikpe3ZhciBoPSJceDNjc2VsZWN0XHgzZVx4M2NvcHRpb25ceDNlXHU3ZDkzXHU1MTc4XHU4ODY4XHU2MGM1XHU1NzE2XHU3OTNhXHgzYy9vcHRpb25ceDNlIjtjLmVhY2goZGEsZnVuY3Rpb24oKXtoKz0iXHgzY29wdGlvblx4M2UiK3RoaXMuZGVzYysiXHgzYy9vcHRpb25ceDNlIn0pO3ZhciBoPWgrIlx4M2Mvc2VsZWN0XHgzZSIsbT1jKGgpLmNoYW5nZShmdW5jdGlvbigpe2QudXRpbC5kYXRhKCJsYXN0U2VsZWN0ZWRTbWlsZXkiLAp0aGlzLnNlbGVjdGVkSW5kZXgpO2wuY2hpbGRyZW4oIjpsYXN0IikuY2hpbGRyZW4oKS5oaWRlKCkuZXEodGhpcy5zZWxlY3RlZEluZGV4KS5zaG93KCl9KS5hcHBlbmRUbyhsLmNoaWxkcmVuKCI6Zmlyc3QiKS5lbXB0eSgpKS5hZnRlcigiOiIpO251bGwhPWcmJihtWzBdLnNlbGVjdGVkSW5kZXg9ZyxtLmNoYW5nZSgpKX1lbHNle2QudXRpbC5hZGRTdHlsZSgiI2FuLXNtaWxleXNlbGVjdG9yIHsgbGlzdC1zdHlsZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBmb250LXNpemU6IDgwJTsgfSIpO3ZhciBxPSdceDNjdWwgaWRceDNkImFuLXNtaWxleXNlbGVjdG9yIlx4M2VceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZVx1N2Q5M1x1NTE3OFx1ODg2OFx1NjBjNVx1NTcxNlx1NzkzYVx4M2MvYVx4M2VceDNjL2xpXHgzZSc7Yy5lYWNoKGRhLGZ1bmN0aW9uKCl7cSs9J1x4M2NsaVx4M2VceDNjYSBocmVmXHgzZCJqYXZhc2NyaXB0OiJceDNlJyt0aGlzLmRlc2MrCiJceDNjL2FceDNlXHgzYy9saVx4M2UifSk7cSs9Ilx4M2MvdWxceDNlIjttPWMocSkuY2xpY2soZnVuY3Rpb24oYil7Yj1jKGIudGFyZ2V0KTtiLmlzKCJhIikmJihiPWIucGFyZW50KCkuaW5kZXgoKSxkLnV0aWwuZGF0YSgibGFzdFNlbGVjdGVkU21pbGV5IixiKSxsLmNoaWxkcmVuKCI6bGFzdCIpLmNoaWxkcmVuKCkuaGlkZSgpLmVxKGIpLnNob3coKSl9KS5hcHBlbmRUbyhsLmNoaWxkcmVuKCI6Zmlyc3QiKS5lbXB0eSgpKTtudWxsIT1nJiZtLmNoaWxkcmVuKCkuZXEoZykuY2hpbGRyZW4oImEiKS5jbGljaygpfX0pfX19LCJlMzM2ZDM3Ny1iZWMwLTRkODgtYjZmOC01MmUxMjJmNGQxYzkiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTgxZWFcdThhMDJcdTY1ODdcdTViNTdcdTYzZDJcdTUxNjVcdTYzYTdcdTRlZjYiLHBhZ2U6ezI4ODohMH0sdHlwZTo1LG9uY2U6ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7dmFyIGI9Ilx4M2NvcHRpb25ceDNlXHU4MWVhXHU4YTAyXHU2NTg3XHU1YjU3XHgzYy9vcHRpb25ceDNlIjsKYy5lYWNoKGcsZnVuY3Rpb24oZCl7Yis9Yy5zcHJpbnRmKCdceDNjb3B0aW9uIHZhbHVlXHgzZCIlcyJceDNlJXNceDNjL29wdGlvblx4M2UnLGQsdGhpc1swXSl9KTtiKz0nXHgzY29wdGlvbiB2YWx1ZVx4M2QiY3VzdG9taXplIlx4M2VcdTgxZWFcdThhMDIuLi5ceDNjL29wdGlvblx4M2UnO2wuaHRtbChiKX1pZihjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdldGV4dCIpLmxlbmd0aCl7dmFyIGc9ZC51dGlsLmRhdGEoInNuaXBwZXRzIil8fFtbIlx1NWJiNlx1NTlkMFx1NmY2ZVx1NjU4NyIsJ1x1OGIxYlx1OGQ3N1x1NjIxMVx1NWMzMVx1NjI2Zlx1NzA2Ylx1NTU2NlxuXHU2MjExXHU1YmI2XHU1OWQwXHU0ZTAwXHU4ZGVmXHU5MGZkXHU1NzI4XHU1OTJhXHU1M2U0XHU1ZWUzXHU1ODM0XHU0ZTAwXHU5NTkzXHU1NDBkXHU1ZTk3XHU1MDVhc2FsZXNcblx1OTU5M1x1NWU5N1x1NjcwOVx1NTk3ZFx1NTkxYVx1NjcwOVx1OTMyMlx1NGViYVx1NTQwY1x1NTQwZFx1NGViYVx1NWU2Ylx1ODk2ZlxuXHU1MDVhXHU0ZTg2XHU1Zjg4XHU1OTFhXHU1ZTc0XHVmZjBjXHU1ZGYyXHU3ZDkzXHU2NjJmc2VuaW9yXG5cdTU0ODFcdTU5MWFcdTVlNzRcdTllY2VcdTkwZmRcdTU5N2RcdTRmZmVcdTVmYzNcdTZhNWZcdTUwNWFcdWZmMGNcdTdkOTNcdTc0MDZcdTRlYTZcdTU5N2QgbGlrZVx1NGY2MlxuXHU1NmUwXHU3MGJhXHU2NTM2XHU1MTY1XHU0ZTBkXHU5MzJmXHU1M2M4XHU5NmIxXHU1YjlhXHVmZjBjXHU1YmI2XHU1OWQwXHU1MzlmXHU2NzJjXHU4YWQ3XHU0ZjRmXHU1NDBjXHU2MmNkXHU2MmQ2XHU1OTFhXHU1ZTc0XHU2NWUyYmZcdTdkNTBcdTVhNWFcblx1NTQ4MVx1NTkxYVx1NWU3NFx1OWVjZVx1NjIxMVx1NWJiNlx1NTlkMFx1NTk3ZFx1NWMxMVx1NGZmZVx1NGViYVx1NjI5NVx1OGEzNFxuXHU4MDBjXHU0ZTE0XHU1NDBjXHU1OTdkXHU1OTFhXHU1OTI3XHU1YmEyXHU2NWUyXHU5NWRjXHU0ZmMyXHU5MGZkXHU1NTE0XHU5MzJmXG5cdTUyNGRcdTYzOTJcdTk1ZGNcdTVmYzNcdTc4MTRcdTUzYmJcdTkwNGVcdTYyMTFcdTViYjZcdTU5ZDBcdTk1OTNcdTVlOTdcdTVlNmJcdTg5NmZcblx1NGUwZFx1OTA0ZXNlcnZlXHU0ZjYyXHU2NWUyXHU0ZTBkXHU2NjJmXHU2MjExXHU1YmI2XHU1OWQwXHVmZjBjXHU0ZjQ2XHU0ZjYyXHU0ZTAwXHU4Y2I3XHU1YzMxXHU4Y2I3XHU1ZGU2XHU1OTdkXHU1OTFhXHU5MWNlXG5cdTkwNGVcdTVkZTZcdTUwMGJcdTVlN2VcdTY2MWZcdTY3MWZcdWZmMGNcdTRmNjJcdTUzYzhcdTUxOGRcdTUzYmJcdTk1OTNcdTVlOTdcdTg4NGNcblx1NGUwYVx1NmIyMXNlcnZlXHU2NzljXHU1MDBiRGF5LW9mZiwgXHU1NDgxXHU2MjExXHU1YmI2XHU1OWQwXHU1YzMxXHU5ODAyXHU0ZTBhc2VydmVcdTRmNjJcblx1OTU4Ylx1OTgyZFx1NWRmMlx1N2Q5M1x1NTk3ZFx1NjcwOVx1NzlhZVx1OGM4Y1x1NGVjYlx1N2QzOWRcdTY1YjBcdThjYThcdTRmZmVcdTRmNjIsIFx1NGVmMlx1OGE3MVx1NGZmZVx1NjI5OFx1OTgyZFx1NGY2MlxuXHU0ZjYyXHU1YzMxXHU3MTIxXHU0ZTVjXHU1M2NkXHU2MWM5XHVmZjBjXHU2NzFiXHU0ZTAwXHU2NzFiXHU1M2U2XHU0ZTAwXHU1ODA2XHU1YmEyXG5cdTY3OWNcdTU4MDZcdTViYTJcdTRmYzJcdTU5MjdcdTk2NzhcdTRlYmFcdWZmMGNcdTRlMDlcdTgxZjNcdTU2ZGJcdTUwMGJcdWZmMGNcdThiMWJcdTkxY2VcdTU5N2RcdTU5MjdcdTgwNzJcblx1OTVkY1x1NWMwZlx1NTlkMFx1NWMzMVx1NTQwY1x1NjIxMVx1NWJiNlx1NTlkMFx1OGIxYlx1OGE3MVx1NTNlZlx1NTUxNFx1NTNlZlx1NGVlNVx1OTVkY1x1NWRlNlx1OTU5M1x1OTJlYVx1NGUwMFx1OTY2M1xuXHU3YjQ5XHU0ZjYyXHU2M2MwXHU4ODZiXG4gXHU2MjExXHU1YmI2XHU1OWQwXHU1NDBjXHU2MjExXHU4YjFiXHVmZjBjXHU0ZjYyXHU1MTZjXHU1M2Y4XHU0ZTAwXHU1NDExXHU1NTE0XHU0ZmZlXHU0ZjYyXHU1NzMwXHU1NDgxXHU1MDVhXG5cdTlhNWFcdTUwNWFcdTU4ZGVcdTUwMGJcdTk4MmRcdWZmMGNcdTk2NjRcdTk3NWVcdTc3MWZcdTRmYzJcdTY3MDlcdTRlNWNcdTU5MjdcdTRlYmFcdTcyNjlcdWZmMGNcdTU5N2RcdTU5MWFcdThhMThcdTgwMDVcdTU5N2RcdTZkZjdcdTRlODJcdTUxNDhcdTUzZWZcdTRlZTVcdTU0ODFcdTUwNWFcblx1NGY0Nlx1NGY2Mlx1ODk4Ylx1NTIzMFx1OTVkY1x1NWMwZlx1NTlkMFx1OWVkMVx1NTNlM1x1OWVkMVx1OTc2Mlx1ZmYwY1x1OTBmZFx1OGI1OFx1NTA1YVx1OGE3MVx1NjI1M1x1OTZmYlx1OGE3MVx1NTNiYlx1NTU0Zlx1NGUwMFx1NTU0Zlx1ODAwMVx1OTVjNlxuXHU4MDAxXHU5NWM2XHU2ODk3XHU0ZmMyXHU4YTcxXHU1NTE0XHU1Zjk3XHU1NTY2XHVmZjBjXHU4MWYzXHU1OTFhXHU0ZmZlXHU1OTFhZFx1NjI5OFx1OTgyZFx1NTk3OVxuXHU1NDgxXHU5NWRjXHU1YzBmXHU1OWQwXHU1YzMxXHU3NjdjXHU4MDAxXHU4MTNlXHVmZjBjXHU5YjI3XHU1MjMwXHU2MjExXHU1YmI2XHU1OWQwXHU0ZTAwXHU5NzYyXHU1YzQxXG5kXHU4YWFhXHU4YTcxXHU1MmMxXHU5NmUzXHU4MDdkXHVmZjBjXHU1M2M4XHU4YTcxXHU4MWVhXHU1ZGYxXHU4Y2I3XHU5MWNlXHU2NWUyXHU5MzIyXHU1OTFhXHU5MDRlXHU2MjExXHU1YmI2XHU1OWQwXHU2NDM1XHU1ZTdlXHU1ZTc0XHU2NWUyXHU5MzIyXG5cdTYyMTFcdTViYjZcdTU5ZDBcdTkwZmRcdTU1MTRcdTY1NjJcdTVmOTdcdTdmNmFcdTRmNjJcdWZmMGNcdTRlMDBcdTU0NzNcdTkwNTNcdTZiNDlcblx1OGRkZlx1NGY0Zlx1OTVkY1x1NWMwZlx1NTlkMFx1NWMzMVx1OGQ3MFx1NWRlNlx1NGViYVx1ZmYwY1x1NWJiNlx1NTlkMFx1NWMzMVx1NTQwY1x1ODAwMVx1OTVjNlx1NTA5OVx1Njg0OFxuXHU4MDAxXHU5NWM2XHU3N2FkXHU4OWUzXHU1ZGU2XHU2MGM1XHU2Y2MxXHU1YzMxXHU3MTIxXHU1MThkXHU4ZmZkXHU1NTRmXG5cdTkwNGVcdTVkZTZcdTUxNjlcdTY1ZTVcdTRmNjJcdTYzYTVcdTUyMzBcdTgwMDFcdTk1YzZcdTk2ZmJcdThhNzFcdThhNzFcdTY1MzZcdTUyMzBjb21wbGFpbnQgXG5cdThhNzFcdTY3MDlcdTRlYmFcdTYyOTVcdThhMzRcdTRmNjJcdTYxNGJcdTVlYTZcdTU1MTRcdTU5N2RcdWZmMGNcdTU1MTRcdTc0MDZcdTk4NjdcdTViYTJcdTYxMWZcdTUzZDdcblx1NTE2Y1x1NTNmOHBvbGljeVx1NGUwMFx1NTQxMVx1NTUxNFx1OGE3MVx1NGZmZVx1NGY2Mlx1NTczMFx1NzdlNVx1NGZjMlx1OTA4YVx1NmIyMVx1NGU4Ylx1NGVmNlxuXHU2MjExXHU1YmI2XHU1OWQwXHU0ZjMwXHU5ZWNlXHU0ZjMwXHU1M2JiXHU5MGZkXHU2ZGU4XHU0ZmMyXHU1Zjk3XHU1OTMxXHU5MDRlXHU5NWRjXHU1YzBmXHU1OWQwXHU0ZTAwXHU0ZWJhXG5cdTdlM2RcdTRlNGJcdTRmZmVcdTgwMDFcdTk1YzZcdThhNzFcdTVkZTZcdTUxNjlcdTUzZTVcblx1NTNjOFx1OTA0ZVx1NWU3ZVx1NjVlNVx1ZmYwY1x1OTVkY1x1NWMwZlx1NTlkMFx1NTNjOFx1OWVjZVxuXHU5MDE5XHU2YjIxXHU1NDhjXHU0ZWY2XHU4OTdmXHU4OGRkXHU1M2NiXHU0ZTAwXHU5ZjRhXHVmZjBjXHU0ZjQ2XHU1OTdkXHU1NzI4XHU2MjEwXHU1ZTk3XHU5MGZkXHU3MTIxXHU1MTc2XHU0ZWQ2XHU1YmEyXG5cdTYyMTFcdTViYjZcdTU5ZDBcdTYwMTVcdTUzYzhcdTYwZjlcdTRlOGJcdWZmMGNcdTUzZWJcdTVkZTZcdTUwMGJqdW5pb3JcdTkwNGVcdTUzYmJzZXJ2ZVx1NGY2MlxuXHU5ZWRlXHU3N2U1XHU2ODlkXHU4MDAxXHU4OTdmXHU1M2NiXHU0ZmMyXHU4OTgxXHU5ZWRlXHU3NTZhXHU2MjExXHU1YmI2XHU1OWQwc2VydmUuXG5cdTY4MzlcdTRmNGZcdTk1ZGNcdTVjMGZcdTU5ZDBcdTVjMzFcdTczYTlcdTkxY2VcdWZmMGNcdThhNjZcdTg4NmJcdWZmMGNcdTRmNDZcdThhNzFkXHU4ODZiXHU0ZmZlXHU1MTc2XHU0ZWQ2XHU0ZWJhXHU4YTY2XHU5MDRlXHU2YzYxXHU3Y2RmXG5cdTg5ODFcdTk1OGJcdTY1YjBcdTg4NmJcdThhNjZcdWZmMGNcdTYyMTFcdTViYjZcdTU5ZDBcdTk2ZDZcdTcxMzZcdTc3ZTVcdTUxNmNcdTUzZjhcdTU1MTRcdTRmZmVcdTU0ODFcdTUwNWFcdWZmMGNcblx1NGY0Nlx1NjAxNVx1NWRlNlx1NGY2Mlx1ZmYwY1x1NTUyZlx1NjcwOVx1NzE2N1x1NTA1YVxuXHU5ZWRlXHU3N2U1XHU4YTY2XHU1ZGU2XHU1MTY5XHU0ZTA5XHU0ZWY2XHVmZjBjXHU0ZWY2XHU0ZWY2XHU0ZjYyXHU5MGZkXHU4OTgxXHU1NDgxXHU4YTY2XHU1M2M4XHU3MTIxXHU4YTcxXHU4OTgxXG5cdTYyMTFcdTViYjZcdTU5ZDBcdTdkNDJcdTY1YmNcdThhNzFcdTU1MTRcdTU5N2RcdTYxMGZcdTYwMWRcdWZmMGNcdTUxNzZcdTViZTZcdTU1MTRcdTUzZWZcdTRlZTVcdTU0ODFcdTUwNWFcbihcdTY4MzlcdTY3MmNcdTY2MGVcdTc3ZTVcdTU5NzlcdTczYTlcdTkxY2VcdTU1NjYuLi4uLilcblx1NTNjOFx1NGZjMlx1ODFmM1x1NTkxYVx1NGZmZVx1NTkxYWRcdTYyOThcdTk4MmRcdTRmNjJcblx1OGRkZlx1NGY0Zlx1NGY2Mlx1NGVmNlx1ODk3Zlx1ODhkZFx1NTNjYlx1NWMzMVx1OWIyN1x1NjIxMVx1NWJiNlx1NTlkMFx1OGE3MSJcdTRmYzJcdTU0YWFcdThhNzFcdTYyMTFcdTU3MzBcdTcxMjFcdTkzMjJcdThjYjdcdTRmNjBcdTU3MzBkXHU5MWNlPyJcblx1NjIxMVx1NWJiNlx1NTlkMFx1OGE3MVx1NTUxNFx1NGZjMlx1ZmYwY1x1NGY0Nlx1NGY2Mlx1NzE2N1x1OWIyN1xuXHU5YjI3XHU1ZGU2XHU1MzQxXHU1ZTdlXHU1MjA2XHU5NDE4XG5kXHU1NDBjXHU0ZThiXHU4OThiXHU1NDgxXHU1ZTZiXHU2MjRiXHVmZjBjXHU1M2M4XHU3MTY3XHU5YjI3XG5cdTY3MDBcdTdkNDJcdTYyNTNcdTRmZmVcdTgwMDFcdTk1YzZcdTUwOTlcdTY4NDhcblx1NGU0Ylx1NWY4Y1x1OTAyM1x1NjUzNlx1NTE2OVx1NWMwMXdhcm5pbmcgbGV0dGVyXG5cdTY1ZTlcdTUxNjlcdTY1ZTVcdTYzYTVcdTU3Y2JcdTU5MjdcdTRmZTFcdTVjMDFcblx1NWU3NFx1NWMzZVx1NGZmZVx1NGViYVx1NzA5Mlx1NWRlNiddXSwKbD1jKCJceDNjc2VsZWN0XHgzZVx4M2Mvc2VsZWN0XHgzZSIpO2IoKTt2YXIgaDtsLmluc2VydEJlZm9yZShjKCIjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMV9tZXNzYWdldGV4dCIpLnByZXYoKSkuY2hhbmdlKGZ1bmN0aW9uKCl7aWYoImN1c3RvbWl6ZSI9PXRoaXMudmFsdWUpe2lmKCFoKXtkLnV0aWwuYWRkU3R5bGUoYy5zcHJpbnRmKCJcdFx0XHRcdFx0I2FuLXNuaXBwZXRzIHsgcGFkZGluZzogNXB4OyB9IFx0XHRcdFx0XHQjYW4tc25pcHBldHMgXHgzZSB1bCB7IGhlaWdodDogMzUwcHg7IG92ZXJmbG93OiBhdXRvOyB9IFx0XHRcdFx0XHQjYW4tc25pcHBldHMgXHgzZSB1bCBceDNlIGxpIHsgcGFkZGluZzogMnB4IDA7IH0gXHRcdFx0XHRcdCNhbi1zbmlwcGV0cyBceDNlIHVsIFx4M2UgbGkgXHgzZSBzcGFuIHsgbWFyZ2luLXJpZ2h0OiA1cHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAwIDVweDsgYmFja2dyb3VuZC1jb2xvcjogJShzTWFpbkhlYWRlckJnQ29sb3IpczsgY29sb3I6ICUoc01haW5IZWFkZXJGb250Q29sb3IpczsgY3Vyc29yOiBwb2ludGVyOyB9IFx0XHRcdFx0XHQjYW4tc25pcHBldHMgXHgzZSBkaXYgeyBmbG9hdDogcmlnaHQ7IG1hcmdpbi1sZWZ0OiAxMHB4OyBwYWRkaW5nLWxlZnQ6IDEwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBncmF5OyB9IFx0XHRcdFx0XHQjYW4tc25pcHBldHMgXHgzZSBkaXYgXHgzZSB0ZXh0YXJlYSB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogNDAwcHg7IGhlaWdodDogMzAwcHg7IH0gXHRcdFx0XHRcdCIsCmQudXRpbC5nZXRPcHRpb25zKCkpKTt2YXIgbCxxLG4scDtoPWQuc2hhcmVkLmJveCgiYW4tc25pcHBldHMiLCJcdTgxZWFcdThhMDJcdTY1ODdcdTViNTciLDcwMCkuYXBwZW5kKCdceDNjZGl2XHgzZVx4M2NpbnB1dCAvXHgzZVx4M2N0ZXh0YXJlYVx4M2VceDNjL3RleHRhcmVhXHgzZVx4M2NidXR0b24gdHlwZVx4M2QiYnV0dG9uIlx4M2Vva1x4M2MvYnV0dG9uXHgzZVx4M2NidXR0b24gdHlwZVx4M2QiYnV0dG9uIlx4M2VjYW5jZWxceDNjL2J1dHRvblx4M2VceDNjL2Rpdlx4M2VceDNjdWxceDNlXHgzYy91bFx4M2UnKS5jbGljayhmdW5jdGlvbih3KXt3PWMody50YXJnZXQpO2lmKHcuaXMoInNwYW4sYnV0dG9uIikpe3ZhciB5PXcudGV4dCgpOyJjYW5jZWwiPT15P2guY2hpbGRyZW4oImRpdiIpLmNzcygib3BhY2l0eSIsIjAuNSIpLmNoaWxkcmVuKCkuYXR0cigiZGlzYWJsZWQiLCEwKToiRSI9PXl8fCIrIj09eT8ocT0iRSI9PT15LGw9dy5wYXJlbnQoKS5pbmRleCgpLG4udmFsKCJFIj09Cnk/Z1tsXVswXToiIikubmV4dCgpLnZhbCgiRSI9PXk/Z1tsXVsxXToiIikucGFyZW50KCkuY3NzKCJvcGFjaXR5IiwiMSIpLmNoaWxkcmVuKCkuYXR0cigiZGlzYWJsZWQiLCExKSk6KCJvayI9PXk/cT8oZ1tsXT1bbi52YWwoKSxwLnZhbCgpXSxxPSExKTpnLnB1c2goW24udmFsKCkscC52YWwoKV0pOiJYIj09eSYmY29uZmlybSgiXHU3OGJhXHU1YjlhXHU3OWZiXHU5NjY0PyIpJiZnLnNwbGljZSh3LnBhcmVudCgpLmluZGV4KCksMSksZC51dGlsLmRhdGEoInNuaXBwZXRzIixnKSx2KCksYigpKX19KX1uPWguZmluZCgiXHgzZSBkaXYgXHgzZSBpbnB1dCIpO3A9bi5uZXh0KCk7dmFyIHY9ZnVuY3Rpb24oKXt2YXIgYj0iIjtjLmVhY2goZyxmdW5jdGlvbigpe2IrPSJceDNjbGlceDNlXHgzY3NwYW5ceDNlWFx4M2Mvc3Bhblx4M2VceDNjc3Bhblx4M2VFXHgzYy9zcGFuXHgzZSIrdGhpc1swXSsiXHgzYy9saVx4M2UifSk7Yis9Ilx4M2NsaVx4M2VceDNjc3Bhblx4M2UrXHgzYy9zcGFuXHgzZS4uLlx4M2MvbGlceDNlIjsKaC5jaGlsZHJlbigidWwiKS5odG1sKGIpLm5leHQoKS5jc3MoIm9wYWNpdHkiLCIwLjUiKS5jaGlsZHJlbigpLnZhbCgiIikuYXR0cigiZGlzYWJsZWQiLCEwKX07digpO2Quc2hhcmVkLmdyYXkoITAsImFuLXNuaXBwZXRzIil9ZWxzZSB3aW5kb3cuSW5zZXJ0VGV4dChnW3RoaXMudmFsdWVdWzFdLCExKTt0aGlzLnNlbGVjdGVkSW5kZXg9MH0pfX19fX07ZC5tb2RbIkNvbXBvbmVudCBSZWRlc2lnbmVyIl09e3ZlcjoiTi9BIixhdXRob3I6Ilx1NTQxMVx1NjVlNSIsZm46eyI4YmUxYWMwNi0wMzBhLTQyZDQtYThmNC1mMmI3ZjQ4ODEzMDAiOntkZXNjOiJcdTY1MzlcdThiOGFcdTVmMTVcdTc1MjhcdTk4YThcdTY4M2MiLHBhZ2U6ezMyOiEwfSx0eXBlOjgsb3B0aW9uczp7cXVvdGVTdHlsZTp7ZGVzYzoiXHU1ZjE1XHU3NTI4XHU5OGE4XHU2ODNjIix0eXBlOiJzZWxlY3QiLGNob2ljZXM6WyJcdTk4MTBcdThhMmQiLCJcdTVmYTlcdTUzZTQiLCJcdTczZmVcdTRlZTMiXSxkZWZhdWx0VmFsdWU6Ilx1OTgxMFx1OGEyZCJ9LApxdW90ZU1hc2tMZXZlbDp7ZGVzYzoiXHU1ZjE1XHU3NTI4XHU1YzRmXHU4NTNkXHU1YzY0XHU3ZDFhIix0eXBlOiJ0ZXh0IixkZWZhdWx0VmFsdWU6MTB9fSxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoIi5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlICsgYnIgeyBkaXNwbGF5OiBub25lOyB9Iik7dmFyIGI7c3dpdGNoKHRoaXMuc3R5bGVObz1jLmluQXJyYXkoZC51dGlsLmdldE9wdGlvbnMoInF1b3RlU3R5bGUiKSx0aGlzLm9wdGlvbnMucXVvdGVTdHlsZS5jaG9pY2VzKSl7Y2FzZSAwOmQudXRpbC5zdGFja1N0eWxlKCJcdFx0XHRcdC5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlIHsgbWFyZ2luOiAwIDAgOHB4IDFweDsgcGFkZGluZzogMCAwIDdweCA0MHB4OyB9IFx0XHRcdFx0YmxvY2txdW90ZS5hbi1oaWRkZW5xdW90ZSB7IHBhZGRpbmctbGVmdDogMDsgfSBcdFx0XHRcdC5hbi1oaWRkZW5xdW90ZTpiZWZvcmUgeyBjb250ZW50OiB1cmwoIitLWyJiYWxsb29uLS1wbHVzIl0rCiIpOyB9IFx0XHRcdFx0LmFuLWhpZGRlbnF1b3RlIFx4M2UgZGl2IHsgZGlzcGxheTogbm9uZTsgfSBcdFx0XHRcdCIpO2I9YygiXHgzY2ltZyAvXHgzZSIpLmhvdmVyaXplKCIucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSIpLmJpbmQoeyJtb3VzZW92ZXIgbW91c2VvdXQiOmZ1bmN0aW9uKGMpe3ZhciBkPWIuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0O2QuY3NzKCJvdXRsaW5lIiwibW91c2VvdXQiPT09Yy50eXBlfHxkLmhhc0NsYXNzKCJhbi1oaWRkZW5xdW90ZSIpPyIwIjoiMXB4IGRhc2hlZCBncmF5Iil9LGVudGVydGFyZ2V0OmZ1bmN0aW9uKCl7Yi5hdHRyKCJzcmMiLEtbYi5kYXRhKCJob3Zlcml6ZSIpLmpUYXJnZXQuaGFzQ2xhc3MoImFuLWhpZGRlbnF1b3RlIik/ImJhbGxvb24tLXBsdXMiOiJiYWxsb29uLS1taW51cyJdKX19KTticmVhaztjYXNlIDE6ZC51dGlsLnN0YWNrU3R5bGUoJ1x0XHRcdFx0LmFuLXF1b3RldG9nZ2xlYnV0dG9uIHsgbWFyZ2luOiAtMThweCAwIDAgLTRweDsgfSBcdFx0XHRcdC5hbi1xdW90ZXRvZ2dsZWJ1dHRvbiwgYmxvY2txdW90ZTpiZWZvcmUgeyBjb2xvcjogIzk5OTsgfSBcdFx0XHRcdC5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlOmJlZm9yZSB7IGNvbnRlbnQ6ICIiOyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7IHRvcCAwOyBsZWZ0OiAtNHB4OyBtYXJnaW4tdG9wOiAtMThweDsgfSBcdFx0XHRcdC5yZXBsaWVyc19yaWdodCB0ZCBceDNlIGJsb2NrcXVvdGUgeyBtYXJnaW46IDE1cHggMCAxMHB4IDNweDsgfSBcdFx0XHRcdC5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlIHsgcG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDAgMCAxMHB4IDA7IH0gXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSBceDNlIGRpdiB7IGJvcmRlci1sZWZ0OiAycHggc29saWQgIzk5OTsgcGFkZGluZy1sZWZ0OiA1cHg7IH0gXHRcdFx0XHRibG9ja3F1b3RlLmFuLWhpZGRlbnF1b3RlOmJlZm9yZSB7IGNvbnRlbnQ6ICIrIjsgfSBcdFx0XHRcdC5hbi1oaWRkZW5xdW90ZSBceDNlIGRpdiBceDNlIGJsb2NrcXVvdGUgeyBkaXNwbGF5OiBub25lOyB9IFx0XHRcdFx0Jyk7CmI9YygnXHgzY3NwYW4gY2xhc3NceDNkImFuLXF1b3RldG9nZ2xlYnV0dG9uIlx4M2VceDNjL3NwYW5ceDNlJykuaG92ZXJpemUoImJsb2NrcXVvdGUiLHtmaWx0ZXI6IjpoYXMoYmxvY2txdW90ZSkifSkuYmluZCgiZW50ZXJ0YXJnZXQiLGZ1bmN0aW9uKCl7Yi50ZXh0KGIuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0Lmhhc0NsYXNzKCJhbi1oaWRkZW5xdW90ZSIpPyIrIjoiLS0iKX0pO2JyZWFrO2Nhc2UgMjpkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoJ1x0XHRcdFx0LmFuLXF1b3RldG9nZ2xlYnV0dG9uIHsgbWFyZ2luOiAycHggMCAwIC0xNXB4OyBmb250LXdlaWdodDogYm9sZDsgfSBcdFx0XHRcdC5hbi1xdW90ZXRvZ2dsZWJ1dHRvbiwgYmxvY2txdW90ZTpiZWZvcmUsIC5hbi1oaWRkZW5xdW90ZTphZnRlciB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICUoc01haW5IZWFkZXJGb250Q29sb3IpczsgfSBcdFx0XHRcdC5yZXBsaWVyc19yaWdodCBibG9ja3F1b3RlOmJlZm9yZSB7IGNvbnRlbnQ6ICJcdTVmMTVcdTc1Mjg6IjsgZGlzcGxheTogYmxvY2s7IG1hcmdpbi1ib3R0b206IDJweDsgcGFkZGluZy1sZWZ0OiAzcHg7IGxpbmUtaGVpZ2h0OiAxLjM7IGJhY2tncm91bmQtY29sb3I6ICUoc01haW5IZWFkZXJCZ0NvbG9yKXM7IH0gXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgdGQgXHgzZSBibG9ja3F1b3RlIHsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IH0gXHRcdFx0XHQucmVwbGllcnNfcmlnaHQgYmxvY2txdW90ZSB7IG1hcmdpbjogMCAwIDVweCAwOyBib3JkZXI6IDFweCBzb2xpZCAlKHNNYWluQm9yZGVyQ29sb3IpczsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOyB9IFx0XHRcdFx0LnJlcGxpZXJzX3JpZ2h0IGJsb2NrcXVvdGUgXHgzZSBkaXYgeyBwYWRkaW5nOiAwIDAgNXB4IDJweDsgfSBcdFx0XHRcdC5hbi1oaWRkZW5xdW90ZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSBcdFx0XHRcdC5hbi1oaWRkZW5xdW90ZTphZnRlciB7IGNvbnRlbnQ6ICJcdWZmMGIiOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMXB4OyByaWdodDogM3B4OyBmb250LXdlaWdodDogYm9sZDsgfSBcdFx0XHRcdC5hbi1oaWRkZW5xdW90ZSBceDNlIGRpdiBceDNlIGJsb2NrcXVvdGUgeyBkaXNwbGF5OiBub25lOyB9IFx0XHRcdFx0JywKZC51dGlsLmdldE9wdGlvbnMoKSkpLGI9YygnXHgzY3NwYW4gY2xhc3NceDNkImFuLXF1b3RldG9nZ2xlYnV0dG9uIlx4M2VceDNjL3NwYW5ceDNlJykuaG92ZXJpemUoImJsb2NrcXVvdGUiLHtmaWx0ZXI6IjpoYXMoYmxvY2txdW90ZSkiLGF1dG9Qb3NpdGlvbjohMX0pLmJpbmQoImVudGVydGFyZ2V0IixmdW5jdGlvbigpe3ZhciBjPWIuZGF0YSgiaG92ZXJpemUiKS5qVGFyZ2V0LGQ9Yy5vZmZzZXQoKTtiLnRleHQoYy5oYXNDbGFzcygiYW4taGlkZGVucXVvdGUiKT8iXHVmZjBiIjoiXHVmZjBkIikuY3NzKHt0b3A6ZC50b3AsbGVmdDpkLmxlZnQrYy53aWR0aCgpfSl9KX1iLmNsaWNrKGZ1bmN0aW9uKCl7Yi5kYXRhKCJob3Zlcml6ZSIpLmpUYXJnZXQudG9nZ2xlQ2xhc3MoImFuLWhpZGRlbnF1b3RlIil9KX0saW5maW5pdGU6ZnVuY3Rpb24oYil7dmFyIGc9ZC51dGlsLmdldE9wdGlvbnMoInF1b3RlTWFza0xldmVsIiktKDA9PT10aGlzLnN0eWxlTm8/MToyKTswPmd8fGIucmVwbGllcygpLmpDb250ZW50cy5maW5kKDA9PT0KdGhpcy5zdHlsZU5vPyJibG9ja3F1b3RlIjoiYmxvY2txdW90ZTpoYXMoYmxvY2txdW90ZSkiKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzKS5wYXJlbnRzVW50aWwoInRkIiwiYmxvY2txdW90ZSIpLmxlbmd0aD09PWd9KS5hZGRDbGFzcygiYW4taGlkZGVucXVvdGUiKX19LCJjYjE5MTdmOS00MDUzLTQwYjEtODcwZC1lMGUyYzZhOTBiMzkiOntkZXNjOiJcdTY1MzlcdThiOGFcdTVmZWJcdTkwMWZcdTU2ZGVcdTg5ODZcdTc2ODRcdTk4YThcdTY4M2MiLHBhZ2U6ezMyOiEwfSx0eXBlOjgsb3B0aW9uczp7c1FSSGlkZU1ldGhvZDp7ZGVzYzoiXHU5NmIxXHU4NWNmXHU2NWI5XHU1ZjBmIix0eXBlOiJzZWxlY3QiLGNob2ljZXM6WyJcdTViOGNcdTUxNjhcdTk2YjFcdTg1Y2YiLCJcdTk2YjFcdTg1Y2ZcdTY1YmNcdTRlMmRcdTRlMGJcdTY1YjksIFx1NjFmOFx1NmQ2ZVx1NTIwN1x1NjNkYlx1OTg2Zlx1NzkzYSIsIlx1OTZiMVx1ODVjZlx1NjViY1x1NGUyZFx1NGUwYlx1NjViOSwgXHU5ZWRlXHU2NGNhXHU1MjA3XHU2M2RiXHU5ODZmXHU3OTNhIiwKIlx1OTZiMVx1ODVjZlx1NjViY1x1NTNmM1x1NGUwYlx1ODlkMiJdLGRlZmF1bHRWYWx1ZToiXHU5NmIxXHU4NWNmXHU2NWJjXHU0ZTJkXHU0ZTBiXHU2NWI5LCBcdTllZGVcdTY0Y2FcdTUyMDdcdTYzZGJcdTk4NmZcdTc5M2EifSxuUVJPcGFjaXR5OntkZXNjOiJcdTkwMGZcdTY2MGVcdTVlYTYgKDEwIFx4M2QgXHU3OWZiXHU5NjY0XHU1MzRhXHU5MDBmXHU2NjBlKSIsdHlwZToic2VsZWN0IixkZWZhdWx0VmFsdWU6MTAsY2hvaWNlczpbMTAsOSw4LDcsNiw1LDQsMywyLDEsMF19fSxvbmNlOmZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGcoYixkKXtmdW5jdGlvbiBnKCl7aC5jc3MoInotaW5kZXgiLGI/NDoyKTtxLmVtcHR5KCk7bS50b2dnbGUoYik7YiYmKHdpbmRvdy5tb3ZlRW5kKCksbi5zY3JvbGxUb3AoOTk5OTkpKX12YXIgRD1tLmlzKCI6dmlzaWJsZSIpO2lmKHZvaWQgMD09PWIpYj0hRDtlbHNlIGlmKEQ9PT1iKXJldHVybjszPT09bD9iP2guYW5pbWF0ZSh7cmlnaHQ6TWF0aC5jZWlsKChjLndpbldpZHRoKCktCnApLzIpfSwic2xvdyIsZyk6KGcoKSxoLmFuaW1hdGUoe3JpZ2h0OnZ9LCJzbG93IikpOmcoKX1pZihkLnV0aWwuaXNMb2dnZWRJbigpKXt2YXIgbD1jLmluQXJyYXkoZC51dGlsLmdldE9wdGlvbnMoInNRUkhpZGVNZXRob2QiKSx0aGlzLm9wdGlvbnMuc1FSSGlkZU1ldGhvZC5jaG9pY2VzKSxoPWMoIiNuZXdtZXNzYWdlIik7Yj1oLmZpbmQoInRkOmVxKDEpIikuYXR0cigiaWQiLCJhbi1xci1oZWFkZXIiKTt2YXIgbT0oMD09PWw/aDpoLmZpbmQoInRyOmVxKDIpIikpLmhpZGUoKSxxPWMoIiNwcmV2aWV3QXJlYSIpLG49YygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfbWVzc2FnZXRleHQiKSxwPTk1NCx2PTUwLXA7Yi5jaGlsZHJlbigpWzBdLm5leHRTaWJsaW5nLm5vZGVWYWx1ZT0iXHU1ZmViXHU5MDFmXHU1NmRlXHU4OTg2IjtkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoIlx0XHQjbmV3bWVzc2FnZSB7ICVzOyB6LWluZGV4OiAyOyBwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAlc3B4OyBib3R0b206IDBweDsgcmlnaHQ6ICVzOyBtYXgtaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogYXV0bzsgfSBcdFx0I2FuLXFyLWhlYWRlciB7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1hbGlnbjogY2VudGVyOyB9IFx0XHQjcHJldmlld0FyZWEgeyBkaXNwbGF5OiBibG9jazsgb3ZlcmZsb3c6IGF1dG87IHdpZHRoOiAlc3B4OyB9IFx0XHQjcHJldmlld0FyZWEgaW1nW29ubG9hZF0geyBtYXgtd2lkdGg6IDMwMHB4OyB9IFx0XHQiLApkLnV0aWwuZ2V0T3BhY2l0eVN0cihkLnV0aWwuZ2V0T3B0aW9ucygiblFST3BhY2l0eSIpKSxwLDM9PT1sP3YrInB4IjoiNTAlIixwLTE0OSkpOzMhPT1sJiZkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoIiNuZXdtZXNzYWdlIHsgbWFyZ2luLXJpZ2h0OiAlc3B4OyB9IiwtcC8yLTkpKTsxPT09bD9oLmJpbmQoIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oYil7ZygibW91c2VlbnRlciI9PT1iLnR5cGUpfSk6Yi5jbGljayhmdW5jdGlvbigpe2coKX0pO2MoIiNhc3BuZXRGb3JtIikuc3VibWl0KGZ1bmN0aW9uKCl7ZyghMSl9KTt3aW5kb3cuT25RdW90ZVN1Y2NlZWRlZD1mdW5jdGlvbihiKXtuLnZhbCh1bmVzY2FwZShiKSsiXG4iKTtnKCEwKX07d2luZG93LmRvUHJldmlldz1mdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oKXtiKCk7cS5jc3MoIm1heC1oZWlnaHQiLGMud2luSGVpZ2h0KCktaC5oZWlnaHQoKS1xLmhlaWdodCgpKX19KHdpbmRvdy5kb1ByZXZpZXcpfX19fX07CmQubW9kWyJTdHlsZSBFZGl0b3IiXT17dmVyOiJOL0EiLGF1dGhvcjoiXHU1NDExXHU2NWU1Iixmbjp7Ijg5NjE1YTc4LTIxYjctNDZiZC1hZWIxLTEyZTdmMDMxZTg5NiI6e2Rlc2M6Ilx1NWYzN1x1NTIzNlx1NjZmNFx1NjUzOVx1NTE2OFx1NWM0MFx1NWI1N1x1OWFkNCIscGFnZTp7NjU1MzQ6ITF9LHR5cGU6MixvcHRpb25zOntzTWFpbkZvbnRGYW1pbHk6e2Rlc2M6Ilx1NWI1N1x1OWFkNFx1NTQwZFx1N2EzMSIsZGVmYXVsdFZhbHVlOiJTaW1TdW4iLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZigiI2FzcG5ldEZvcm0gXHgzZSBkaXYgKiwgI2FuIHsgZm9udC1mYW1pbHk6ICVzOyB9IixkLnV0aWwuZ2V0T3B0aW9ucygic01haW5Gb250RmFtaWx5IikpKX19LCJlZGEyYmYwOC1jOWQ4LTQ1ZWQtOWY5Ny0xOTM2YmU5M2UzMmQiOntkZXNjOiJcdTVmMzdcdTUyMzZcdTY2ZjRcdTY1MzlcdTUxNjhcdTVjNDBcdTViNTdcdTlhZDRcdTU5MjdcdTVjMGYiLApwYWdlOns2NTUzNDohMX0sdHlwZToyLG9wdGlvbnM6e3NNYWluRm9udFNpemU6e2Rlc2M6Ilx1NWI1N1x1OWFkNFx1NTkyN1x1NWMwZiIsZGVmYXVsdFZhbHVlOiIxNiIsdHlwZToidGV4dCJ9fSxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCJib2R5LCB0ZCwgcCB7IGZvbnQtc2l6ZTogJXNweDsgfSIsZC51dGlsLmdldE9wdGlvbnMoInNNYWluRm9udFNpemUiKSkpfX0sImNhZDZkMDU4LWY5OTktNDYwZC1hYzI5LTQwNzRmMzNmNDZmYiI6e2Rlc2M6Ilx1OGEyZFx1NWI5YVx1OTAyM1x1N2Q1MFx1NmEyM1x1NWYwZiIscGFnZTp7NjU1MzQ6ITF9LHR5cGU6MixvcHRpb25zOntzTWFpbkxpbmtGb250Q29sb3I6e2Rlc2M6Ilx1NjY2ZVx1OTAxYVx1OTAyM1x1N2Q1MFx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjMTA2NmQyIix0eXBlOiJ0ZXh0In0sc01haW5WaXNpdGVkQ29sb3I6e2Rlc2M6Ilx1NWRmMlx1OGEyYVx1NTU0Zlx1OTAyM1x1N2Q1MFx1OTg0Zlx1ODI3MiIsCmRlZmF1bHRWYWx1ZToiIzgwMDA4MCIsdHlwZToidGV4dCJ9LHNNYWluSG92ZXJDb2xvcjp7ZGVzYzoiXHU5MDIzXHU3ZDUwXHU2MWY4XHU2ZDZlXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiIsdHlwZToidGV4dCJ9LGJSZW1vdmVMaW5rVW5kZXJsaW5lOntkZXNjOiJcdTc5ZmJcdTk2NjRcdTkwMjNcdTdkNTBcdTVlOTVcdTdkZGEiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9fSxvbmNlOmZ1bmN0aW9uKCl7dmFyIGI9ZC51dGlsLmdldE9wdGlvbnMoImJSZW1vdmVMaW5rVW5kZXJsaW5lIik/J3RleHQtZGVjb3JhdGlvbjogbm9uZTsgfSBhW2hyZWZeXHgzZCIvYmxvZy9ibG9nLmFzcHgiXSBceDNlIHNwYW4geyB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsgfSAucmVwbGllcnNfcmlnaHQgYSB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9JzoifSI7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCJcdFx0Ym9keSBceDNlIGZvcm0gYSwgI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfTWlkZGxlQWRTcGFjZTEgYSB7IGNvbG9yOiAlKHNNYWluTGlua0ZvbnRDb2xvcilzOyAiKwpiKycgXHRcdGJvZHkgXHgzZSBmb3JtIGFbaHJlZipceDNkInZpZXcuYXNweCJdOnZpc2l0ZWQsIC5yZXBsaWVyc19yaWdodCBhOnZpc2l0ZWQgeyBjb2xvcjogJShzTWFpblZpc2l0ZWRDb2xvcilzOyB9IFx0XHRib2R5IFx4M2UgZm9ybSBhW2hyZWZdOmhvdmVyIHsgY29sb3I6ICUoc01haW5Ib3ZlckNvbG9yKXM7IH0gXHRcdCcsZC51dGlsLmdldE9wdGlvbnMoKSkpfX0sIjc1NzQ1ODJiLTJmZWEtNDA3OS04ZGZiLTdhYzRlNTU4N2VjYiI6e2Rlc2M6Ilx1NjUzOVx1OGI4YVx1OGFkNlx1NThjN1x1NmEyM1x1NWYwZiIscGFnZTp7NjU1MzQ6ITF9LHR5cGU6MixvcHRpb25zOntzTG9nb0JnSW1hZ2U6e2Rlc2M6Ilx1OWFkOFx1NzY3YkxvZ29cdTU3MTZcdTcyNDciLGRlZmF1bHRWYWx1ZToiL2ltYWdlcy9pbmRleF9pbWFnZXMvbG9nby5qcGciLHR5cGU6InRleHQifSxzTWFpbkJnSW1hZ2U6e2Rlc2M6Ilx1NGUzYlx1ODg2OFx1NjgzY1x1ODBjY1x1NjY2Zlx1NTcxNlx1NzI0NyIsZGVmYXVsdFZhbHVlOiIvaW1hZ2VzL2luZGV4X2ltYWdlcy9iZ19tYWludG9wLmpwZyIsCnR5cGU6InRleHQifSxzUmVkVGl0bGVGb250Q29sb3I6e2Rlc2M6Ilx1N2QwNVx1NGViYVx1Njk5Y1x1NmExOVx1OTg0Y1x1NWI1N1x1OWFkNFx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjRkZGRkZGIix0eXBlOiJ0ZXh0In0sc1JlZFRpdGxlQmdDb2xvcjp7ZGVzYzoiXHU3ZDA1XHU0ZWJhXHU2OTljXHU2YTE5XHU5ODRjXHU4MGNjXHU2NjZmXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNDQzIzMzEiLHR5cGU6InRleHQifSxzUmVkSGVhZGVyRm9udENvbG9yOntkZXNjOiJcdTdkMDVcdTRlYmFcdTY5OWNcdTdiMmNcdTRlMDBcdTUyMTdcdTViNTdcdTlhZDRcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzAwMzM2NiIsdHlwZToidGV4dCJ9LHNSZWRIZWFkZXJCZ0NvbG9yOntkZXNjOiJcdTdkMDVcdTRlYmFcdTY5OWNcdTdiMmNcdTRlMDBcdTUyMTdcdTgwY2NcdTY2NmZcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiI0ZGNTU2MCIsdHlwZToidGV4dCJ9LHNSZWRDb250ZW50Rm9udENvbG9yOntkZXNjOiJcdTdkMDVcdTRlYmFcdTY5OWNcdTUxNjdcdTViYjlcdTViNTdcdTlhZDRcdTk4NGZcdTgyNzIiLApkZWZhdWx0VmFsdWU6IiMwMDAwMDAiLHR5cGU6InRleHQifSxzQmx1ZUJhckZvbnRDb2xvcjp7ZGVzYzoiXHU4NWNkXHU4MjcyXHU2YTZiXHU2ODlkXHU1YjU3XHU5YWQ0XHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNGRkZGRkYiLHR5cGU6InRleHQifSxzQmx1ZUJhckJnQ29sb3I6e2Rlc2M6Ilx1ODVjZFx1ODI3Mlx1NmE2Ylx1Njg5ZFx1ODBjY1x1NjY2Zlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjNkVBMEM0Iix0eXBlOiJ0ZXh0In0sc0JsdWVCYXJCZ0ltYWdlOntkZXNjOiJcdTg1Y2RcdTgyNzJcdTZhNmJcdTY4OWRcdTgwY2NcdTY2NmZcdTU3MTZcdTcyNDciLGRlZmF1bHRWYWx1ZToiL2ltYWdlcy9sZWZ0X21lbnUvcC5wbmciLHR5cGU6InRleHQifSxzQmx1ZVNlY0JnQ29sb3I6e2Rlc2M6Ilx1OWFkOFx1NzY3Ylx1NTE2Y1x1NTQ0YVx1NTE2N1x1OTBlOFx1NmE2Ylx1Njg5ZFx1ODBjY1x1NjY2Zlx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjQ0NEREVBIiwKdHlwZToidGV4dCJ9LHNIaWdobGlnaHRCZ0NvbG9yOntkZXNjOiJcdTlhZDhcdTRlYWVcdTgwY2NcdTY2NmZcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiI0U5RUM2QyIsdHlwZToidGV4dCJ9LHNUaW1lRm9udENvbG9yOntkZXNjOiJcdTY2NDJcdTk1OTNcdTViNTdcdTlhZDRcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzgwMDAwMCIsdHlwZToidGV4dCJ9LHNNYWxlRm9udENvbG9yOntkZXNjOiJcdTc1MzdcdTc1MjhcdTYyMzZcdTkwMjNcdTdkNTBcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzAwNjZGRiIsdHlwZToidGV4dCJ9LHNGZW1hbGVGb250Q29sb3I6e2Rlc2M6Ilx1NTk3M1x1NzUyOFx1NjIzNlx1OTAyM1x1N2Q1MFx1NWI1N1x1OWFkNFx1OTg0Zlx1ODI3MiIsZGVmYXVsdFZhbHVlOiIjRkYwMDY2Iix0eXBlOiJ0ZXh0In0sc1F1b3RlRm9udENvbG9yOntkZXNjOiJcdTVmMTVcdTc1MjhcdTViNTdcdTlhZDRcdTk4NGZcdTgyNzIiLGRlZmF1bHRWYWx1ZToiIzAwMDBBMCIsCnR5cGU6InRleHQifSxzRm9vdGVyQmdDb2xvcjp7ZGVzYzoiXHU5ODAxXHU4MTczXHU2YTJhXHU2ODlkXHU4MGNjXHU2NjZmXHU5ODRmXHU4MjcyIixkZWZhdWx0VmFsdWU6IiNGRkNDMDAiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe2QudXRpbC5zdGFja1N0eWxlKGMuc3ByaW50ZignIFx0XHQvKiBHbG9iYWwgc3R1ZmYgKi9cdFx0Ym9keSwgdGV4dGFyZWEsIGlucHV0LCBzZWxlY3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluQmdDb2xvcilzOyB9IFx0XHR0ZXh0YXJlYSwgaW5wdXQsIHNlbGVjdCB7IGJvcmRlcjogMnB4IHNvbGlkICUoc01haW5Cb3JkZXJDb2xvcilzOyB9IFx0XHRib2R5LCBwLCB0ZCwgdGV4dGFyZWEsIGlucHV0LCBzZWxlY3QsIC5hZGR0aGlzX3Rvb2xib3ggXHgzZSBhLCAuYWRkdGhpc190b29sYm94IFx4M2Ugc3BhbiwgLmhyZWZfdHh0MSB7IGNvbG9yOiAlKHNNYWluRm9udENvbG9yKXM7IH0gXHRcdCpbc3R5bGUqXHgzZCIjRUFERUI4Il0geyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNTZWNCZ0NvbG9yKXM7IH0gXHRcdC8qIG1haW4gYm9yZGVyICovXHRcdGRpdltzdHlsZSpceDNkIjAsIDAsIDAiXSwgZGl2W3N0eWxlKlx4M2QiMDAwMDAwIl0sIC5EaXZNYXJrVGhyZWFkLCAucmVwbGllcnNfaGVhZGVyLCAucmVwbGllcnNfbGVmdCwgLnJlcGxpZXJzLCAucmVwbGllcnMgdGQsIC5Ub3BpY19Gb3J1bUluZm9QYW5lbCB0YWJsZSwgLlRvcGljX0ZvcnVtSW5mb1BhbmVsIHRoIHsgYm9yZGVyLWNvbG9yOiAlKHNNYWluQm9yZGVyQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQjYXNwbmV0Rm9ybSB0YWJsZVtjZWxsc3BhY2luZ1x4M2QiMSJdW2NlbGxwYWRkaW5nXHgzZCIyIl0sICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX1BNTXNnVGFibGUsICNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX1F1aWNrUmVwbHlUYWJsZSwgI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfUXVpY2tSZXBseUxvZ2luVGFibGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNNYWluQm9yZGVyQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQqW3N0eWxlKlx4M2QiMTI4LCAxMjgsIDEyOCJdLCAqW3N0eWxlKlx4M2QiODA4MDgwIl0geyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9IFx0XHQvKiBzZWMgYm9yZGVyICovXHRcdC5tYWluX3RhYmxlMSB7IGJvcmRlci1jb2xvcjogJShzU2VjQm9yZGVyQ29sb3IpczsgfSBcdFx0LyogbmVhcmx5LXdoaXRlIGJhY2tncm91bmRzICovXHRcdCpbc3R5bGUqXHgzZCJyZ2IoMjMiXSwgKltzdHlsZSpceDNkInJnYigyNCJdLCAqW3N0eWxlKlx4M2QiI0UiXSwgKltzdHlsZSpceDNkIiNGIl0sICpbc3R5bGUqXHgzZCIjZSJdLCAqW3N0eWxlKlx4M2QiI2YiXSwgLlRvcGljX0ZvcnVtSW5mb1BhbmVsIHRhYmxlIHRkIHsgYmFja2dyb3VuZC1jb2xvcjogJShzU2VjQmdDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIFBNIEJveCBceDI2IHdoaXRlIHRhYmxlIGNlbGxzICovXHRcdC5EaXZNYXJrVGhyZWFkLCAuTGlzdFBNVGV4dCwgKltzdHlsZSpceDNkIjI1NSwgMjU1LCAyNTUiXSwgKltzdHlsZSpceDNkIiNGRkZGRkYiXSwgKltzdHlsZSpceDNkImJhY2tncm91bmQtY29sb3I6IHdoaXRlIl0sICpbc3R5bGUqXHgzZCJCQUNLR1JPVU5ELUNPTE9SOiB3aGl0ZSJdLCAqW3N0eWxlKlx4M2QiQkFDS0dST1VORC1DT0xPUjpXaGl0ZSJdLCAqW3N0eWxlKlx4M2QiYmFja2dyb3VuZC1jb2xvcjpXaGl0ZSJdLCAqW2JnY29sb3JceDNkIiNmOGY4ZjgiXSB7IGJhY2tncm91bmQtY29sb3I6ICUoc01haW5CZ0NvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0LyogaGVhZGVycyAqL1x0XHQqW3N0eWxlKlx4M2QiIzZlYTBjMyJdLCAuYmx1ZV9iZywgLnJlcGxpZXJzX2hlYWRlciwgKltzdHlsZSpceDNkIjUxLCAxMDIsIDE1MyJdLCAqW3N0eWxlKlx4M2QiIzMzNjY5OSJdLCAuVG9waWNfRm9ydW1JbmZvUGFuZWwgdGFibGUgdGgsIC5Ub3BpY19MaXN0UGFuZWwgdGFibGUgdGggeyBjb2xvcjogJShzTWFpbkhlYWRlckZvbnRDb2xvcilzICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6ICUoc01haW5IZWFkZXJCZ0NvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0LyogdW5kZXIgbG9nbyBsaW5rcywgZm9vdGVyIHRleHQsIHVzZXJuYW1lIGxpbmtzLCBib29rbWFya2JhciAqL1x0XHQuZW5jb2RlX2xpbmssIC50eHRfMTFwdF8xQTM0NDgsICpbc3R5bGUqXHgzZCJjb2xvcjogYmxhY2siXSwgKltzdHlsZSpceDNkIkNPTE9SOiBibGFjayJdLCAqW3N0eWxlKlx4M2QiY29sb3I6QmxhY2siXSwgKltzdHlsZSpceDNkIkNPTE9SOkJsYWNrIl0sIC5oa2dfYm90dG9tYmFyX2xpbmsgeyBjb2xvcjogJShzTWFpbkZvbnRDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIG5vbi10cmFuc3BhcmVudCBpbWFnZXMgKi9cdFx0Ym9keSwgLmxpZ2h0YnJvd25fYmcgeyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyB9IFx0XHQuVG9wTWVudVBhbmVsLCAuYmdfdG9wIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCUoc1RvcEJnSW1hZ2Upcyk7IH0gXHRcdC5QYWdlTWlkZGxlQm94LCAuYmdfbWFpbiB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCglKHNNYWluQmdJbWFnZSlzKTsgfSBcdFx0LyogbWFpbiBsb2dvICovXHRcdCNjdGwwMF9Ub3BCYXJIb21lTGluayB7IGRpc3BsYXk6IGJsb2NrOyBiYWNrZ3JvdW5kOiB1cmwoJShzTG9nb0JnSW1hZ2Upcykgbm8tcmVwZWF0OyB9IFx0XHQjY3RsMDBfVG9wQmFySG9tZUxpbmsgaW1nIHsgdmlzaWJpbGl0eTogaGlkZGVuOyB9IFx0XHQvKiB0aGluIGJhcnMgaWNvbiAqL1x0XHQuRGl2Qm94VGl0bGUsIC5Qcm9maWxlQm94VGl0bGU6Zmlyc3QtY2hpbGQsIC5EaXZSZXNpemFibGVCb3hUaXRsZTpmaXJzdC1jaGlsZCwgLnRpdGxlOmZpcnN0LWNoaWxkLCAqW2JnY29sb3JceDNkIiM2ZWEwYzQiXTpmaXJzdC1jaGlsZCwgLnJlZGhvdHRpdGxlOmZpcnN0LWNoaWxkIHsgYmFja2dyb3VuZDogdXJsKCUoc0JsdWVCYXJCZ0ltYWdlKXMpIG5vLXJlcGVhdDsgfSBcdFx0KltzcmMqXHgzZCIvcC5qcGciXSwgKltzcmMqXHgzZCIvcmVkaG90cC5qcGciXSB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfSBcdFx0LyogYmx1ZSBiYXJzICwgcmVkIGJhcnMsIGFuZCBtYWluIGZvcnVtIHBhZ2UgYmFycyAqL1x0XHQuRGl2Qm94VGl0bGUsIC5Qcm9maWxlQm94VGl0bGUsIC5EaXZSZXNpemFibGVCb3hUaXRsZSwgLnRpdGxlLCAqW2JnY29sb3JceDNkIiM2ZWEwYzQiXSwgKltjb2xzcGFuXHgzZCI2Il0geyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNCbHVlQmFyQmdDb2xvcilzICFpbXBvcnRhbnQ7IGNvbG9yOiAlKHNCbHVlQmFyRm9udENvbG9yKXM7IH0gXHRcdC5yZWRob3R0aXRsZSB7IGJhY2tncm91bmQtY29sb3I6ICUoc1JlZFRpdGxlQmdDb2xvcilzOyBjb2xvcjogJShzUmVkVGl0bGVGb250Q29sb3IpczsgfSBcdFx0LyogaG90IHBlb3BsZSAqL1x0XHR0YWJsZVtzdHlsZSpceDNkIjI1NSwgODUsIDk2Il0sIHRyW3N0eWxlKlx4M2QiMjU1LCA4NSwgOTYiXSwgdGFibGVbc3R5bGUqXHgzZCIjZmY1NTYwIl0sIHRyW3N0eWxlKlx4M2QiI2ZmNTU2MCJdIHsgYmFja2dyb3VuZC1jb2xvcjogJShzUmVkSGVhZGVyQmdDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdHRkW3N0eWxlKlx4M2QiMjU1LCA4NSwgOTYiXSwgdGRbc3R5bGUqXHgzZCIjZmY1NTYwIl0geyBib3JkZXItY29sb3I6ICUoc1JlZEhlYWRlckJnQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHQqW3N0eWxlKlx4M2QiMCwgNTEsIDEwMiJdLCAqW3N0eWxlKlx4M2QiIzAwMzM2NiJdIHsgY29sb3I6ICUoc1JlZEhlYWRlckZvbnRDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC5yZWRob3RfdGV4dCwgYS5yZWRob3RfbGluayB7IGNvbG9yOiAlKHNSZWRDb250ZW50Rm9udENvbG9yKXM7IH0gXHRcdC8qIGhvdCBzZWFyY2ggKi9cdFx0LkhpdFNlYXJjaFRleHQgeyBjb2xvcjogJShzTWFpbkhlYWRlckZvbnRDb2xvcilzOyB9IFx0XHRhLmhpdHNlYXJjaF9saW5rIHsgY29sb3I6ICUoc01haW5Gb250Q29sb3IpczsgfSBcdFx0LyogYW5ub3VjZW1lbnRzLCBwcm9maWxlcGFnZSB0YWJzICovXHRcdC5EaXZCb3hEZXRhaWxzLCAuRGl2UmVzaXphYmxlQm94RGV0YWlscywgLlByb2ZpbGVCb3hEZXRhaWxzIHsgYm9yZGVyLWNvbG9yOiAlKHNCbHVlU2VjQmdDb2xvcilzOyB9IFx0XHQqW3N0eWxlKlx4M2QiYmFja2dyb3VuZC1jb2xvcjogI0NDRERFQSJdLCAqW3N0eWxlKlx4M2QiQkFDS0dST1VORC1DT0xPUjogI0NDRERFQSJdLCAqW2JnY29sb3JceDNkIiNjY2RkZWEiXSwgLmFqYXhfX3RhYl90YWIsICNhZHZhcmVhIHRyOmZpcnN0LWNoaWxkICsgdHIgdGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNCbHVlU2VjQmdDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdFtjbGFzc15ceDNkInBfX3RhYl94cCJdIC5hamF4X190YWJfdGFiIHsgY29sb3I6ICUoc01haW5Gb250Q29sb3IpczsgfSBcdFx0W2NsYXNzXlx4M2QicF9fdGFiX3hwIl0gLmFqYXhfX3RhYl9hY3RpdmUgLmFqYXhfX3RhYl90YWIsIFtjbGFzc15ceDNkInBfX3RhYl94cCJdIC5hamF4X190YWJfaG92ZXIgLmFqYXhfX3RhYl90YWIgeyBjb2xvcjogJShzTWFpbkhvdmVyQ29sb3IpczsgfSBcdFx0LyogaGlnaHRsaWdodCBiZyAqL1x0XHQqW3N0eWxlKlx4M2QiMjMzLCAyMzYsIDEwOCJdLCAqW3N0eWxlKlx4M2QiI0U5RUM2QyJdIHsgYmFja2dyb3VuZC1jb2xvcjogJShzSGlnaGxpZ2h0QmdDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIHRpbWUgdGV4dCAqL1x0XHQqW3N0eWxlKlx4M2QiMTI4LCAwLCAwIl0sICpbc3R5bGUqXHgzZCIjODAwMDAwIl0sICpbc3R5bGUqXHgzZCJtYXJvb24iXSB7IGNvbG9yOiAlKHNUaW1lRm9udENvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0LyogbWFsZSBuYW1lIGxpbmsgKi9cdFx0KltzdHlsZSpceDNkIjAsIDEwMiwgMjU1Il0sICpbc3R5bGUqXHgzZCIjMDA2NmZmIl0sICpbc3R5bGUqXHgzZCIjMDA2NkZGIl0sICpbY29sb3JceDNkImJsdWUiXSB7IGNvbG9yOiAlKHNNYWxlRm9udENvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0LyogZmVtYWxlIG5hbWUgbGluayAqL1x0XHQqW3N0eWxlKlx4M2QiMjU1LCAwLCAxMDIiXSwgKltzdHlsZSpceDNkIiNmZjAwNjYiXSwgKltzdHlsZSpceDNkIiNGRjAwNjYiXSwgKltjb2xvclx4M2QicmVkIl0geyBjb2xvcjogJShzRmVtYWxlRm9udENvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0LyogcXVvdGVzICovXHRcdGJsb2NrcXVvdGUgXHgzZSBkaXZbc3R5bGUqXHgzZCJjb2xvciJdLCBibG9ja3F1b3RlIFx4M2UgZGl2W3N0eWxlKlx4M2QiQ09MT1IiXSB7IGNvbG9yOiAlKHNRdW90ZUZvbnRDb2xvcilzICFpbXBvcnRhbnQ7IH0gXHRcdC8qIHByb2ZpbGVwYWdlIGF2YXRlciAqL1x0XHR0YWJsZVt3aWR0aFx4M2QiMTUwIl0geyBib3JkZXItY29sb3I6ICUoc1NlY0JvcmRlckNvbG9yKXMgIWltcG9ydGFudDsgfSBcdFx0LyogZm9vdGVyICovXHRcdC5Gb290ZXJQYW5lbCBceDNlIGRpdjpmaXJzdC1jaGlsZCB7IGJhY2tncm91bmQtY29sb3I6ICUoc0Zvb3RlckJnQ29sb3IpcyAhaW1wb3J0YW50OyB9IFx0XHRhLnRlcm1zX2xpbmsgeyBjb2xvcjogJShzTWFpbkZvbnRDb2xvcilzOyB9IFx0XHQvKiByZXBsaWVyc19sZWZ0X3VzZXJfZGV0YWlscyAqL1x0XHQucmVwbGllcnNfbGVmdF91c2VyX2RldGFpbHMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAlKHNTZWNCZ0NvbG9yKXM7IGJvcmRlci1jb2xvcjogJShzTWFpbkJvcmRlckNvbG9yKXM7IGNvbG9yOiAlKHNNYWluRm9udENvbG9yKXM7IH0gXHRcdCcsCmQudXRpbC5nZXRPcHRpb25zKCkpKX19fX07ZC5tb2RbIlVzZXIgSW50ZXJmYWNlIl09e3ZlcjoiTi9BIixhdXRob3I6Ilx1NTQxMVx1NjVlNSIsZm46eyI2NDY0ZTM5Ny1kZmVhLTQ3N2YtOTcwNi0wMjVlYzQzOWU4MTAiOntkZXNjOiJcdThhMmRcdTViOWFVSVx1NmEyM1x1NWYwZiIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjIsb3B0aW9uczp7c01lbnVGb250U2l6ZTp7ZGVzYzoiVUlcdTRlM2JcdTg5ODFcdTViNTdcdTlhZDRcdTU5MjdcdTVjMGYocHgpIixkZWZhdWx0VmFsdWU6IjE2Iix0eXBlOiJ0ZXh0In0sc1NtYWxsRm9udFNpemU6e2Rlc2M6IlVJXHU3ZDMwXHU1YjU3XHU5YWQ0XHU1OTI3XHU1YzBmKHB4KSIsZGVmYXVsdFZhbHVlOiIxMCIsdHlwZToidGV4dCJ9fSxvbmNlOmZ1bmN0aW9uKCl7ZC51dGlsLnN0YWNrU3R5bGUoYy5zcHJpbnRmKCcgXHRcdC5hbi1ib3ggeyBkaXNwbGF5OiBub25lOyBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDUwJTsgdG9wOiA1MCU7IHotaW5kZXg6IDEwOyBib3JkZXItd2lkdGg6IDFweDsgfSBcdFx0LmFuLWJveC1oZWFkZXIgeyBsaW5lLWhlaWdodDogMS44ZW07IG1hcmdpbjogMDsgcGFkZGluZzogMCAwIDAgMC4yZW07IH0gXHRcdC5hbi1ib3gtY29udGVudCB7IG92ZXJmbG93OiBhdXRvOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0gXHRcdFx0XHQuYW4tbWVudSB7IGZvbnQtc2l6ZTogJShzTWVudUZvbnRTaXplKXNweDsgfSBcdFx0LmFuLW1lbnUgYSB7IGRpc3BsYXk6IGJsb2NrOyB9IFx0XHQuYW4tbWVudSBhOmhvdmVyIHsgY29sb3I6ICUoc1VJSG92ZXJDb2xvcilzOyB9IFx0XHRcdFx0LmFuLXNtYWxsIHsgZm9udC1zaXplOiAlKHNTbWFsbEZvbnRTaXplKXNweDsgfSBcdFx0XHRcdCNhbi11aSB1bCB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgbGlzdC1zdHlsZTogbm9uZTsgfSBcdFx0I2FuLXVpIGE6Zm9jdXMgeyBvdXRsaW5lOiAwOyB9IFx0XHRcdFx0LmFuLW1vZCB7IHBvc2l0aW9uOiBmaXhlZDsgY29sb3I6ICUoc1VJRm9udENvbG9yKXM7IH0gXHRcdC5hbi1tb2QsIC5hbi1tb2QgKiB7IGJvcmRlcjogMCBzb2xpZCAlKHNVSUZvbnRDb2xvcilzOyB9IFx0XHQuYW4tbW9kIGEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAlKHNVSUZvbnRDb2xvcilzOyB9IFx0XHRcdFx0I2FuLWJhY2tsYXllciB7IGRpc3BsYXk6IG5vbmU7IG9wYWNpdHk6IDA7IC1tcy1maWx0ZXI6ICJhbHBoYShvcGFjaXR5XHgzZDApIjsgei1pbmRleDogNTsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAwOyB0b3A6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6IGdyYXk7IH0gXHRcdFx0XHQjYW4tbWFpbm1lbnUgeyB0b3A6IDE1JTsgcmlnaHQ6IDA7IH0gXHRcdCNhbi1tYWlubWVudSBhIHsgcGFkZGluZzogMC4zZW0gMC4zNWVtIDAgMDsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyB9IFx0XHQnLApkLnV0aWwuZ2V0T3B0aW9ucygpKSl9fSwiMWRiOWNjYzgtYWQyOC00OGI2LTg3NDQtMjJmODkyY2EwYTQ0Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU1N2ZhXHU2NzJjXHU1MTQzXHU0ZWY2IixwYWdlOns2NTUzNToiY29tcCJ9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7YygiI2FuIikuYXBwZW5kKCcgXHRcdFx4M2NkaXYgaWRceDNkImFuLXVpIlx4M2UgXHRcdFx0XHgzY2RpdiBpZFx4M2QiYW4tYmFja2xheWVyIlx4M2VceDNjL2Rpdlx4M2UgXHRcdFx0XHgzY3VsIGlkXHgzZCJhbi1tYWlubWVudSIgY2xhc3NceDNkImFuLW1vZCBhbi1tZW51Ilx4M2VceDNjL3VsXHgzZSBcdFx0XHgzYy9kaXZceDNlIFx0XHQnKS5jbGljayhmdW5jdGlvbihiKXtiLnN0b3BQcm9wYWdhdGlvbigpfSk7ZC5zaGFyZWQuZ3JheT1mdW5jdGlvbihiLGcpe3ZhciBsPWMoIiNhbi1iYWNrbGF5ZXIiKTtpZihsLmlzKCI6aGlkZGVuIikpe2lmKGIpbC5vbmUoImNsaWNrIixmdW5jdGlvbigpe2Quc2hhcmVkLmdyYXkoKX0pOwpsLnNob3coKS5mYWRlVG8oInNsb3ciLDAuNyk7aWYoZyl7dmFyIGw9YygiIyIrZyksaD1sLmRhdGEoImFuLW9XSCIpLG09Yy53aW5IZWlnaHQoMC45KSxxPWMud2luV2lkdGgoMC45KTtsLndpZHRoKCJtYXgiPT1oLnd8fGgudz5xP3E6aC53KS5oZWlnaHQoIm1heCI9PWguaHx8aC5oPm0/bTpoLmgpO2w9bC51cCgiLmFuLWJveCIpO2wuY3NzKHttYXJnaW5Ub3A6LWwuaGVpZ2h0KCkvMixtYXJnaW5MZWZ0Oi1sLndpZHRoKCkvMn0pLmZhZGVJbigic2xvdyIpfX1lbHNlIGwuYWRkKCIuYW4tYm94OnZpc2libGUiKS5mYWRlT3V0KCJzbG93Iil9O2Quc2hhcmVkLmFkZE1haW49ZnVuY3Rpb24oYixkKXtjKCdceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZScrYisiXHgzYy9hXHgzZVx4M2MvbGlceDNlIikuY2xpY2soZCkuYXBwZW5kVG8oIiNhbi1tYWlubWVudSIpfTtkLnNoYXJlZC5ib3g9ZnVuY3Rpb24oYixkLGwsaCl7cmV0dXJuIGMoYy5zcHJpbnRmKCdceDNjZGl2IGNsYXNzXHgzZCJhbi1ib3ggYW4tZm9ydW0iXHgzZVx4M2NoNCBjbGFzc1x4M2QiYW4tZm9ydW0taGVhZGVyIGFuLWJveC1oZWFkZXIiXHgzZSVzXHgzYy9oNFx4M2VceDNjZGl2IGlkXHgzZCIlcyIgY2xhc3NceDNkImFuLWJveC1jb250ZW50Ilx4M2VceDNjL2Rpdlx4M2VceDNjL2Rpdlx4M2UnLApkLGIpKS5hcHBlbmRUbygiI2FuLXVpIikuY2hpbGRyZW4oIi5hbi1ib3gtY29udGVudCIpLmRhdGEoImFuLW9XSCIse3c6bHx8ImF1dG8iLGg6aHx8ImF1dG8ifSl9fX0sIjcyOTA3ZDhlLTQ3MzUtNGY2Ni1iM2M5LTIwZTI2MTk3NjYzZCI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NTE3MVx1NzUyOFx1NTE0M1x1NGVmNiIscGFnZTp7NjU1MzU6ImNvbXAifSx0eXBlOjEsb25jZTpmdW5jdGlvbigpeyhmdW5jdGlvbigpe2Quc2hhcmVkLnNlcnZlclRhYmxlPWZ1bmN0aW9uKCl7aWYoIWMoIiNhbi1zZXJ2ZXIiKS5sZW5ndGgpe2QudXRpbC5hZGRTdHlsZSgiXHRcdFx0XHRcdCNhbi1zZXJ2ZXIgZGl2IHsgcGFkZGluZzogMC41ZW07IH0gXHRcdFx0XHRcdCNhbi1zZXJ2ZXIgY2FwdGlvbiB7IHBhZGRpbmctdG9wOiAwLjVlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBjYXB0aW9uLXNpZGU6IGJvdHRvbTsgfSBcdFx0XHRcdFx0I2FuLXNlcnZlciBjYXB0aW9uIGEgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlci13aWR0aDogMXB4OyBwYWRkaW5nOiAwLjJlbTsgfSBcdFx0XHRcdFx0I2FuLXNlcnZlciB0YWJsZSB7IHRleHQtYWxpZ246IGNlbnRlcjsgfSBcdFx0XHRcdFx0I2FuLXNlcnZlciB0ZCB7IGZvbnQtc2l6ZTogODAlOyB9IFx0XHRcdFx0XHQiKTsKZC5zaGFyZWQuYm94KCJhbi1zZXJ2ZXIiLCJcdTRmM2FcdTY3MGRcdTU2NjhcdTcyYzBcdTYxNGIiLDMwMCkuYXBwZW5kKCdceDNjZGl2XHgzZVx4M2N0YWJsZVx4M2VceDNjY2FwdGlvblx4M2VceDNjYSBocmVmXHgzZCJqYXZhc2NyaXB0OiJceDNlXHU5MDMyXHU4ODRjXHU2ZTJjXHU4YTY2XHgzYy9hXHgzZVx4M2MvY2FwdGlvblx4M2VceDNjdGhlYWRceDNlXHgzY3RyXHgzZVx4M2N0ZFx4M2VcdTRmM2FcdTY3MGRcdTU2NjhceDNjL3RkXHgzZVx4M2N0ZFx4M2VcdTU2ZGVcdTYxYzlcdTY2NDJcdTk1OTNceDNjL3RkXHgzZVx4M2MvdHJceDNlXHgzYy90aGVhZFx4M2VceDNjdGJvZHlceDNlXHgzYy90Ym9keVx4M2VceDNjL3RhYmxlXHgzZVx4M2MvZGl2XHgzZScpO2Zvcih2YXIgYj0tMSE9PUMuc2VhcmNoLmluZGV4T2YoImVycm9yIik/Yy5zcHJpbnRmKCJodHRwOi8vJXMvdG9waWNzLmFzcHg/dHlwZVx4M2RCVyIsQy5ob3N0bmFtZSk6Qy5ocmVmLnJlcGxhY2UoL3RvcGljc18oYncpKD86X1teLl0rKT9cLmh0bShcPz8pL2ksCmZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4idG9waWNzLmFzcHg/dHlwZVx4M2QiK2MudG9VcHBlckNhc2UoKSsoZD8iXHgyNiI6IiIpfSksZz0iIixsPSIiLGg9W1siZm9ydW0xMDEiLCJGb3J1bSAxMDEiXSxbInNlYXJjaCIsIlNlYXJjaCJdXSxtPTE1O20tLTspaC51bnNoaWZ0KFsiZm9ydW0iKyhtKzEpLCJGb3J1bSAiKyhtKzEpXSk7Zm9yKG09MDttPGgubGVuZ3RoO20rKylnKz1jLnNwcmludGYoJ1x4M2N0clx4M2VceDNjdGRceDNlXHgzY2EgaHJlZlx4M2QiJXMiXHgzZSVzXHgzYy9hXHgzZVx4M2MvdGRceDNlXHgzY3RkIGNsYXNzXHgzZCJhbi1zZXJ2ZXItcmVzcG9uc2UiXHgzZVx4M2MvdGRceDNlXHgzYy90clx4M2UnLGIucmVwbGFjZSgvXHcrKD89XC5oa2dvbGRlbikvaSxoW21dWzBdKSxoW21dWzFdKSxsKz0iXHgzY2ltZyAvXHgzZSI7dmFyIHE9YygiXHgzY2Rpdlx4M2UiK2wrIlx4M2MvZGl2XHgzZSIpLmNoaWxkcmVuKCkuYmluZCgibG9hZCBlcnJvciIsZnVuY3Rpb24oYil7dmFyIGQ9CmMoYi50YXJnZXQpO2MoIiNhbi1zZXJ2ZXIgLmFuLXNlcnZlci1yZXNwb25zZSIpLmVxKGQuaW5kZXgoKSkuaHRtbCgibG9hZCI9PWIudHlwZT9jLnNwcmludGYoIn4lcyBtcyIsYy50aW1lKCktZC5kYXRhKCJuVGltZSIpKToiXHU3NjdjXHU3NTFmXHU5MzJmXHU4YWE0Iil9KTtjKCIjYW4tc2VydmVyIikuZmluZCgiY2FwdGlvbiIpLmNsaWNrKGZ1bmN0aW9uKCl7YygiI2FuLXNlcnZlciAuYW4tc2VydmVyLXJlc3BvbnNlIikuaHRtbCgiXHU3YjQ5XHU1Zjg1XHU1NmRlXHU2MWM5XHU0ZTJkLi4uIik7cS5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWMudGltZSgpO2ModGhpcykuZGF0YSgiblRpbWUiLGQpLmF0dHIoInNyYyIsYy5zcHJpbnRmKCJodHRwOi8vJXMuaGtnb2xkZW4uY29tL2ltYWdlcy9pbmRleF9pbWFnZXMvcC5naWY/dElkXHgzZCVzIixoW2JdWzBdLGQpKX0pfSkuZW5kKCkuZmluZCgidGJvZHkiKS5odG1sKGcpfWQuc2hhcmVkLmdyYXkoITAsImFuLXNlcnZlciIpO2MoIiNhbi1zZXJ2ZXIgY2FwdGlvbiIpLnRyaWdnZXIoImNsaWNrIil9fSkoKTsKKGZ1bmN0aW9uKCl7dmFyIGIsZz1bXSxsPWZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKS5kYXRhKCJob3Zlcml6ZSIpO2IuZml4U2Nyb2xsX2RpZmZlcmVuY2U9Yi5qVGFyZ2V0W2IuZml4U2Nyb2xsXSgpLXYuc2Nyb2xsVG9wKCl9O2MuZm4uaG92ZXJpemU9ZnVuY3Rpb24oaCxtKXtifHwoZC51dGlsLmFkZFN0eWxlKCJcdFx0XHRcdFx0I2FuLWhvdmVyb2JqZWN0cyBceDNlICogeyBkaXNwbGF5OiBub25lOyBwb3NpdGlvbjogYWJzb2x1dGU7IH0gXHRcdFx0XHRcdCNhbi1ob3Zlcm9iamVjdHMgXHgzZSBpbWcsICNhbi1ob3Zlcm9iamVjdHMgXHgzZSBzcGFuIHsgY3Vyc29yOiBwb2ludGVyOyB9IFx0XHRcdFx0XHQiKSxiPWMoJ1x4M2NkaXYgaWRceDNkImFuLWhvdmVyb2JqZWN0cyJceDNlXHgzYy9kaXZceDNlJykuYXBwZW5kVG8oIiNhbiIpLmJpbmQoe2NsaWNrOmZ1bmN0aW9uKGIpe2Iuc3RvcFByb3BhZ2F0aW9uKCk7Yj1jKGIudGFyZ2V0KS5jbG9zZXN0KCIjYW4taG92ZXJvYmplY3RzIFx4M2UgKiIpOwp2YXIgZD1iLmRhdGEoImhvdmVyaXplIik7aWYoZCl7dmFyIGc9ZC5qVGFyZ2V0O2QuZml4U2Nyb2xsJiZ2LnNjcm9sbFRvcChnW2QuZml4U2Nyb2xsXSgpLWQuZml4U2Nyb2xsX2RpZmZlcmVuY2UpO2QuYXV0b1RvZ2dsZSYmKGQualRhcmdldD1udWxsLGIuaGlkZSgpLGcubW91c2VvdmVyKCksYi5tb3VzZW92ZXIoKSl9fSwibW91c2VvdmVyIG1vdXNlb3V0IGVudGVydGFyZ2V0IGxlYXZldGFyZ2V0IjpmdW5jdGlvbihiKXtiLnN0b3BQcm9wYWdhdGlvbigpfX0pLHYubW91c2VvdmVyKGZ1bmN0aW9uKGIpe3ZhciBkPWMoYi50YXJnZXQpLnBhcmVudHNVbnRpbCgiI2FzcG5ldEZvcm0iKS5hbmRTZWxmKCk7Yy5lYWNoKGcsZnVuY3Rpb24oYixjKXt2YXIgZz1kLmZpbHRlcihjLnNlbGVjdG9yKS5lcSgtMSksaD1jLmpPYmplY3QsbD1oLmRhdGEoImhvdmVyaXplIik7bC5maWx0ZXImJihnPWcuZmlsdGVyKGwuZmlsdGVyKSk7aWYobC5qVGFyZ2V0KXtpZihnWzBdJiZnWzBdPT09bC5qVGFyZ2V0WzBdKXJldHVybjsKaC50cmlnZ2VyKCJsZWF2ZXRhcmdldCIpO2wualRhcmdldD1udWxsO2wuYXV0b1RvZ2dsZSYmaC5oaWRlKCl9Zy5sZW5ndGgmJihsLmpUYXJnZXQ9ZyxoLnRyaWdnZXIoImVudGVydGFyZ2V0IiksbC5hdXRvUG9zaXRpb24mJmguY3NzKGcub2Zmc2V0KCkpLGwuYXV0b1RvZ2dsZSYmaC5zaG93KCkpfSl9KSk7dmFyIHE9dGhpcztudWxsPT09aD9jLmVhY2goZyxmdW5jdGlvbihiKXtpZih0aGlzLmpPYmplY3RbMF09PT1xWzBdKXJldHVybiBnLnNwbGljZShiLDEpLCExfSk6KGcucHVzaCh7c2VsZWN0b3I6aCxqT2JqZWN0OnF9KSx0aGlzLmRhdGEoImhvdmVyaXplIixjLmV4dGVuZCh7Zml4U2Nyb2xsOiExLGZpeFNjcm9sbF9hdXRvUmVjb3JkOiEwLGF1dG9Ub2dnbGU6ITAsYXV0b1Bvc2l0aW9uOiEwLGZpbHRlcjpudWxsfSxtKSkuYXBwZW5kVG8oYiksdGhpcy5kYXRhKCJob3Zlcml6ZSIpLmZpeFNjcm9sbCYmdGhpcy5kYXRhKCJob3Zlcml6ZSIpLmZpeFNjcm9sbF9hdXRvUmVjb3JkJiYKdGhpcy5jbGljayhsKSk7cmV0dXJuIHRoaXN9fSkoKTsoZnVuY3Rpb24oKXt2YXIgYixnPWZ1bmN0aW9uKCl7dmFyIGM9Yi5kYXRhKCJob3Zlcml6ZSIpO2MuZml4U2Nyb2xsX2RpZmZlcmVuY2U9Yy5qVGFyZ2V0LnRvcCgpLXYuc2Nyb2xsVG9wKCl9O2MudXNlckJ1dHRvbj1mdW5jdGlvbihsKXtifHwoZC51dGlsLmFkZFN0eWxlKCJcdFx0XHRcdFx0I2FuLXVzZXJidXR0b25zIFx4M2UgaW1nOmZpcnN0LWNoaWxkIHsgcGFkZGluZy10b3A6IDdweDsgfSBcdFx0XHRcdFx0I2FuLXVzZXJidXR0b25zIFx4M2UgaW1nIHsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDMuNXB4IDdweDsgY3Vyc29yOiBwb2ludGVyOyB9IFx0XHRcdFx0XHQiKSxiPWMoJ1x4M2NkaXYgaWRceDNkImFuLXVzZXJidXR0b25zIlx4M2VceDNjL2Rpdlx4M2UnKS5ob3Zlcml6ZSgiLnJlcGxpZXJzX2xlZnQiLHtmaXhTY3JvbGw6InRvcCIsZml4U2Nyb2xsX2F1dG9SZWNvcmQ6ITF9KS5iaW5kKHtlbnRlcnRhcmdldDpmdW5jdGlvbigpe2IuY2hpbGRyZW4oKS5kYXRhKCJ1c2VyQnV0dG9uIiwKe2pUYXJnZXQ6Yi5kYXRhKCJob3Zlcml6ZSIpLmpUYXJnZXQucGFyZW50KCl9KS50cmlnZ2VyKCJidXR0b25zaG93Iil9LGJ1dHRvbnNob3c6ZnVuY3Rpb24oYil7Yi5zdG9wUHJvcGFnYXRpb24oKX19KSk7cmV0dXJuIGMoIlx4M2NpbWcgL1x4M2UiLHtzcmM6bCxjbGljazpnfSkuYXBwZW5kVG8oYil9fSkoKX19LCI5NWUyMDNiOS04ZDlhLTQ2YWQtYmU1My1mNDI5N2JhZDcyODUiOntkZXNjOiJcdTUyYTBcdTUxNjVcdTkwNzhcdTk4MDVcdTUxNDNcdTRlZjYiLHBhZ2U6ezY1NTM0OiJjb21wIn0sdHlwZToxLG9uY2U6ZnVuY3Rpb24oKXt2YXIgYixnLGwsaCxtLHEsbixwLHYsdyx5LEo7ZC5zaGFyZWQuYWRkTWFpbigiXHU5MDc4XHU5ODA1IixmdW5jdGlvbigpe2lmKCFjKCIjYW4tc2V0dGluZ3MiKS5sZW5ndGgpe2Quc2hhcmVkLmJveCgiYW4tc2V0dGluZ3MiLCJcdTkwNzhcdTk4MDUiLDkwMCwibWF4IikuYXBwZW5kKCdceDNjZGl2IGlkXHgzZCJhbi1zZXR0aW5ncy10YWJzIlx4M2VceDNjdWwgaWRceDNkImFuLXNldHRpbmdzLXRhYnMtbWFpbiJceDNlXHgzYy91bFx4M2VceDNjdWwgaWRceDNkImFuLXNldHRpbmdzLXRhYnMtZXh0ZW5kIlx4M2VceDNjL3VsXHgzZVx4M2MvZGl2XHgzZVx4M2NkaXYgaWRceDNkImFuLXNldHRpbmdzLW1haW4iXHgzZVx4M2NkaXYgaWRceDNkImFuLXNldHRpbmdzLW1haW4tcGFuZWxzd3JhcHBlciJceDNlXHgzY2RpdiBpZFx4M2QiYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMiXHgzZVx4M2MvZGl2XHgzZVx4M2MvZGl2XHgzZVx4M2NkaXYgaWRceDNkImFuLXNldHRpbmdzLW1haW4tY29udHJvbHMiXHgzZVx4M2N1bCBpZFx4M2QiYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLTEiXHgzZVx4M2MvdWxceDNlXHgzY3VsIGlkXHgzZCJhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMiJceDNlXHgzYy91bFx4M2VceDNjL2Rpdlx4M2VceDNjL2Rpdlx4M2UnKTsKZC51dGlsLmFkZFN0eWxlKCIgXHRcdFx0XHQjYW4tc2V0dGluZ3MtdGFicyB7IGZsb2F0OiBsZWZ0OyBoZWlnaHQ6IDEwMCU7IGJvcmRlci1yaWdodC13aWR0aDogMXB4OyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLXRhYnMgYSB7IGRpc3BsYXk6IGJsb2NrOyBsaW5lLWhlaWdodDogMmVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgcGFkZGluZzogMCAwLjVlbTsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy10YWJzLWV4dGVuZCBsaTpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6IDJlbTsgYm9yZGVyLXRvcC13aWR0aDogMXB4OyB9IFx0XHRcdFx0XHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgaGVpZ2h0OiAxMDAlOyB9IFx0XHRcdFx0XHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHN3cmFwcGVyIHsgb3ZlcmZsb3c6IGF1dG87IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAyZW07IGxlZnQ6IDA7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tcGFuZWxzIHsgcGFkZGluZzogMWVtOyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tcGFuZWxzIGZpZWxkc2V0IHsgZGlzcGxheTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIDAuNWVtIDFlbTsgYm9yZGVyLXdpZHRoOiAxcHg7IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMgaDQgeyBmb250LXdlaWdodDogbm9ybWFsOyBvdmVyZmxvdzogaGlkZGVuOyBtYXJnaW46IDFlbSAwIDAuNWVtOyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tcGFuZWxzIGg0IHNwYW4geyBmbG9hdDogbGVmdDsgbWFyZ2luLXJpZ2h0OiAwLjJlbTsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyBoNCBociB7IG92ZXJmbG93OiBoaWRkZW47IG1hcmdpbjogMC41ZW0gMCAwIDA7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyBkbCB7IG1hcmdpbjogMC4zNWVtIDAgMC4zNWVtIDVweDsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyBkZCB7IG1hcmdpbjogMC4yNWVtIDAgMCAyMHB4OyB9IFx0XHRcdFx0XHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1jb250cm9scyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGluZS1oZWlnaHQ6IDJlbTsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMSB7IGZsb2F0OiBsZWZ0OyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tY29udHJvbC0yIHsgZmxvYXQ6IHJpZ2h0OyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tY29udHJvbHMgbGkgeyBmbG9hdDogbGVmdDsgfSBcdFx0XHRcdCNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtbGFzdCwgI2FuLXNldHRpbmdzLW1haW4tY29udHJvbHMgYSB7IHBhZGRpbmc6IDAgMWVtOyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLW1haW4tY29udHJvbC0xIGxpIHsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IH0gXHRcdFx0XHQjYW4tc2V0dGluZ3MtbWFpbi1jb250cm9sLWxhc3QsICNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMiBsaSB7IGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7IH0gXHRcdFx0XHQiKTsKdmFyIEQ9ZC5ib3gub1R5cGVNYXAsRj1kLmJveC5vUGFnZU1hcCxBPXt9O2MuZWFjaChELGZ1bmN0aW9uKGIpe0FbYl09e307Yy5lYWNoKEYsZnVuY3Rpb24oYyl7QVtiXVtjXT17fX0pfSk7Yy5lYWNoKGQubW9kLGZ1bmN0aW9uKGIpe3RoaXMuZm4mJmMuZWFjaCh0aGlzLmZuLGZ1bmN0aW9uKGQsZyl7Yy5lYWNoKGcucGFnZSxmdW5jdGlvbihjLGgpe0FbZy50eXBlXVtjXXx8KEFbZy50eXBlXVtjXT17fSk7QVtnLnR5cGVdW2NdW2IrIl8tXyIrZF09e2Rlc2M6Zy5kZXNjLG9wdGlvbnM6Zy5vcHRpb25zLGNvbXA6ImNvbXAiPT1oLGRpc2FibGVkOiJkaXNhYmxlZCI9PWh9fSl9KX0pO3ZhciB1PSIiO2MuZWFjaChBLGZ1bmN0aW9uKGIpeyhpc05hTihiKXx8NjxiP2MoIiNhbi1zZXR0aW5ncy10YWJzLWV4dGVuZCIpOmMoIiNhbi1zZXR0aW5ncy10YWJzLW1haW4iKSkuYXBwZW5kKGMuc3ByaW50ZignXHgzY2xpXHgzZVx4M2NhIGhyZWZceDNkImphdmFzY3JpcHQ6IiBkYXRhLXBhbmVsXHgzZCJhbi1zZXR0aW5ncy1wYW5lbC0lcyJceDNlJXNceDNjL2FceDNlXHgzYy9saVx4M2UnLApiLERbYl0pKTt1Kz1jLnNwcmludGYoJ1x4M2NmaWVsZHNldCBpZFx4M2QiYW4tc2V0dGluZ3MtcGFuZWwtJXMiXHgzZVx4M2NsZWdlbmRceDNlJXNceDNjL2xlZ2VuZFx4M2UnLGIsRFtiXSk7Yy5lYWNoKHRoaXMsZnVuY3Rpb24oYil7aWYoIWMuaXNFbXB0eSh0aGlzKSl7dmFyIGQ9W107YiBpbiBGP2QucHVzaChGW2JdLmRlc2MpOmMuZWFjaChGLGZ1bmN0aW9uKGMpezY1NTM0PmMmJmMmYiYmZC5wdXNoKHRoaXMuZGVzYyl9KTt1Kz1jLnNwcmludGYoIlx4M2NoNFx4M2VceDNjc3Bhblx4M2Ulc1x4M2Mvc3Bhblx4M2VceDNjaHIgL1x4M2VceDNjL2g0XHgzZSIsZC5qb2luKCJcdTMwMDEiKSk7Yy5lYWNoKHRoaXMsZnVuY3Rpb24oZCl7dSs9Ilx4M2NkbFx4M2VceDNjZHRceDNlIjt2YXIgZz10aGlzLmRpc2FibGVkO2Q9Yy5zcHJpbnRmKCJhbi1zZXR0aW5ncy1zd2l0Y2gtJXMlcyVzIixiLCJfLV8iLGQpO3UrPWMuc3ByaW50ZignXHgzY2lucHV0IHR5cGVceDNkImNoZWNrYm94IiBpZFx4M2QiJXMiICVzICVzIC9ceDNlJywKZCx0aGlzLmNvbXA/J2NoZWNrZWRceDNkImNoZWNrZWQiJzoiIix0aGlzLmNvbXB8fGc/J2Rpc2FibGVkXHgzZCJkaXNhYmxlZCInOidjbGFzc1x4M2QiYW4tc2V0dGluZ3Mtc3dpdGNoIicpO3UrPWMuc3ByaW50ZignXHgzY2xhYmVsIGZvclx4M2QiJXMiXHgzZSVzXHgzYy9sYWJlbFx4M2VceDNjL2R0XHgzZScsZCx0aGlzLmRlc2MpO3RoaXMub3B0aW9ucyYmYy5lYWNoKHRoaXMub3B0aW9ucyxmdW5jdGlvbihkKXt1Kz0iXHgzY2RkXHgzZSI7ZD1jLnNwcmludGYoImFuLXNldHRpbmdzLW9wdGlvbi0lcyVzJXMiLGIsIl8tXyIsZCk7dmFyIGg9Zz8nZGlzYWJsZWRceDNkImRpc2FibGVkIic6J2NsYXNzXHgzZCJhbi1zZXR0aW5ncy1vcHRpb24iJzsiY2hlY2tib3giPT10aGlzLnR5cGU/dSs9Yy5zcHJpbnRmKCdceDNjaW5wdXQgdHlwZVx4M2QiY2hlY2tib3giIGlkXHgzZCIlcyIgJXMgL1x4M2VceDNjbGFiZWwgZm9yXHgzZCIlcyJceDNlJXNceDNjL2xhYmVsXHgzZScsZCxoLGQsCnRoaXMuZGVzYyk6InRleHQiPT10aGlzLnR5cGU/dSs9Yy5zcHJpbnRmKCdceDNjbGFiZWwgZm9yXHgzZCIlcyJceDNlJXM6IFx4M2MvbGFiZWxceDNlXHgzY2lucHV0IHR5cGVceDNkInRleHQiIGlkXHgzZCIlcyIgJXMgL1x4M2UnLGQsdGhpcy5kZXNjLGQsaCk6InNlbGVjdCI9PXRoaXMudHlwZSYmKHUrPWMuc3ByaW50ZignJXM6IFx4M2NzZWxlY3QgaWRceDNkIiVzIiAlc1x4M2UnLHRoaXMuZGVzYyxkLGgpLGMuZWFjaCh0aGlzLmNob2ljZXMsZnVuY3Rpb24oKXt1Kz1jLnNwcmludGYoJ1x4M2NvcHRpb24gdmFsdWVceDNkIiVzIlx4M2Ulc1x4M2Mvb3B0aW9uXHgzZScsdGhpcyx0aGlzKX0pLHUrPSJceDNjL3NlbGVjdFx4M2UiKTt1Kz0iXHgzYy9kZFx4M2UifSk7dSs9Ilx4M2MvZGxceDNlIn0pfX0pO3UrPSJceDNjL2ZpZWxkc2V0XHgzZSJ9KTtjKCIjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMiKS5hcHBlbmQodSk7dT1udWxsO2MoIiNhbi1zZXR0aW5ncy10YWJzLWV4dGVuZCIpLmFwcGVuZCgnXHgzY2xpXHgzZVx4M2NhIGlkXHgzZCJhbi1zZXR0aW5ncy10YWItc2VwY2lhbCIgaHJlZlx4M2QiamF2YXNjcmlwdDoiIGRhdGEtcGFuZWxceDNkImFuLXNldHRpbmdzLXBhbmVsLXNwZWNpYWwiXHgzZVx1NzI3OVx1NmI4YVx1OGEyZFx1NWI5YVx4M2MvYVx4M2VceDNjL2xpXHgzZScpOwpkLnV0aWwuYWRkU3R5bGUoIlx0XHRcdFx0I2FuLXNldHRpbmdzLXBhbmVsLXNwZWNpYWwgc3BhbiB7IGZvbnQtc2l6ZTogODAlOyB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLXBhbmVsLXNwZWNpYWwgYSB7IGZvbnQtc2l6ZTogODAlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB9IFx0XHRcdFx0I2FuLXNldHRpbmdzLXNwZWNpYWwtY29uZmlnIHsgd2lkdGg6IDk1JTsgaGVpZ2h0OiAyMDBweDsgZm9udC1zaXplOiA4MCU7IH0gXHRcdFx0XHQiKTtjKCdcdFx0XHRcdFx4M2NmaWVsZHNldCBpZFx4M2QiYW4tc2V0dGluZ3MtcGFuZWwtc3BlY2lhbCJceDNlIFx0XHRcdFx0XHRceDNjbGVnZW5kXHgzZVx1NzI3OVx1NmI4YVx1OGEyZFx1NWI5YVx4M2MvbGVnZW5kXHgzZSBcdFx0XHRcdFx0XHgzY2g0XHgzZVx4M2NzcGFuXHgzZVx1OGEyZFx1NWI5YVx1OGNjN1x1NjU5OVx4M2Mvc3Bhblx4M2VceDNjaHIgL1x4M2VceDNjL2g0XHgzZSBcdFx0XHRcdFx0XHgzY2Rpdlx4M2VceDNjdGV4dGFyZWEgaWRceDNkImFuLXNldHRpbmdzLXNwZWNpYWwtY29uZmlnIlx4M2VceDNjL3RleHRhcmVhXHgzZVx4M2MvZGl2XHgzZSBcdFx0XHRcdFx0XHgzY2Rpdlx4M2UgXHRcdFx0XHRcdFx0XHgzY2EgaWRceDNkImFuLXNldHRpbmdzLXNwZWNpYWwtdG9maWxlIiBocmVmXHgzZCJqYXZhc2NyaXB0OiIgdGFyZ2V0XHgzZCJfYmxhbmsiIGRvd25sb2FkXHgzZCJIZWxpYW50aHVzLmFubnV1cy50eHQiXHgzZVx1NTEzMlx1NWI1OFx1NGVlNVx1NGUwYVx1OGNjN1x1NjU5OVx1ODFmM1x1NmE5NFx1Njg0OChcdTUzZTZcdTViNThcdTRlMGJcdThmMDkpXHgzYy9hXHgzZSBcdFx0XHRcdFx0XHRceDNjYSBpZFx4M2QiYW4tc2V0dGluZ3Mtc3BlY2lhbC1mcm9tZmlsZSIgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZVx1NWY5ZVx1NjcyY1x1NTczMFx1NmE5NFx1Njg0OFx1OGI4MFx1NTNkNi4uLlx4M2MvYVx4M2UgXHRcdFx0XHRcdFx4M2MvZGl2XHgzZSBcdFx0XHRcdFx4M2MvZmllbGRzZXRceDNlIFx0XHRcdFx0Jykub24oIm1vdXNlZG93biIsCiIjYW4tc2V0dGluZ3Mtc3BlY2lhbC10b2ZpbGUiLGZ1bmN0aW9uKGIpe3ZhciBkPXdpbmRvdy5VUkx8fHdpbmRvdy53ZWJraXRVUkwsZz13aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcixoPWMoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWNvbmZpZyIpLnZhbCgpO2QmJmc/KGc9bmV3IGcsZy5hcHBlbmQoaCksYi50YXJnZXQuaHJlZj1kLmNyZWF0ZU9iamVjdFVSTChnLmdldEJsb2IoInRleHQvcGxhaW4iKSkpOmIudGFyZ2V0LmhyZWY9ImRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsIit3aW5kb3cuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoaCkpKX0pLm9uKCJjbGljayIsIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWZyb21maWxlIixmdW5jdGlvbihiKXtjKCdceDNjaW5wdXQgdHlwZVx4M2QiZmlsZSIgL1x4M2UnKS5vbmUoImNoYW5nZSIsZnVuY3Rpb24oYil7aWYodGhpcy5maWxlcyYmd2luZG93LkZpbGVSZWFkZXIpe3ZhciBkPW5ldyBGaWxlUmVhZGVyOwpkLm9ubG9hZD1mdW5jdGlvbigpe2MoIiNhbi1zZXR0aW5ncy1zcGVjaWFsLWNvbmZpZyIpLnZhbChkLnJlc3VsdCl9O2Qub25lcnJvcj1mdW5jdGlvbihiKXthbGVydCgiXHU4YjgwXHU1M2Q2XHU4YTJkXHU1YjlhXHU4Y2M3XHU2NTk5XHU2NjQyXHU3NjdjXHU3NTFmXHU5MzJmXHU4YWE0ISIpfTtkLnJlYWRBc1RleHQodGhpcy5maWxlc1swXSl9ZWxzZSBhbGVydCgiXHU0ZjYwXHU3Njg0XHU3MDBmXHU4OWJkXHU1NjY4XHU0ZTBkXHU2NTJmXHU2MzAxXHU2YjY0XHU1MjlmXHU4MGZkISIpfSkuY2xpY2soKX0pLmFwcGVuZFRvKCIjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMiKS50cmlnZ2VyKCJhbi1zZXR0aW5ncy1zcGVjaWFsIik7dj1jKCIjYW4tc2V0dGluZ3MtbWFpbi1wYW5lbHMgZmllbGRzZXQiKTt3PWMoIiNhbi1zZXR0aW5ncy10YWJzIGEiKTt5PWMoIi5hbi1zZXR0aW5ncy1zd2l0Y2giKTtKPWMoIi5hbi1zZXR0aW5ncy1vcHRpb24iKTt2LmVhY2goZnVuY3Rpb24oKXt2YXIgYj0KYyh0aGlzKTtiLmZpbmQoImg0IikubGVuZ3RofHxjKGMuc3ByaW50ZigiW2RhdGEtcGFuZWxceDNkJXNdIixiLmF0dHIoImlkIikpKS5wYXJlbnQoKS5hZGQoYikucmVtb3ZlKCl9KTtiPWZ1bmN0aW9uKCl7dy5jc3MoInRleHQtZGVjb3JhdGlvbiIsIiIpO2ModGhpcykuY3NzKCJ0ZXh0LWRlY29yYXRpb24iLCJ1bmRlcmxpbmUiKTt2LmhpZGUoKTtjKCIjIitjKHRoaXMpLmF0dHIoImRhdGEtcGFuZWwiKSkuc2hvdygpLnBhcmVudCgpLnBhcmVudCgpLnNjcm9sbFRvcCgwKX07dy5jbGljayhiKTt5LmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKTtiLnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIi5hbi1zZXR0aW5ncy1vcHRpb24iKS5hdHRyKCJkaXNhYmxlZCIsIWIuaXMoIjpjaGVja2VkIikpfSk7Zz1mdW5jdGlvbihiKXt2YXIgYz1iLmRhdGEoImluZm8iKTtjfHwoYi5oYXNDbGFzcygiYW4tc2V0dGluZ3Mtc3dpdGNoIik/KGM9Yi5hdHRyKCJpZCIpLnJlcGxhY2UoL2FuLXNldHRpbmdzLXN3aXRjaC0vLAoiIikuc3BsaXQoIl8tXyIpLGM9e3BhZ2U6MSpjWzBdLG1vZDpjWzFdLGlkOmNbMl19KTooYz1iLmF0dHIoImlkIikucmVwbGFjZSgvYW4tc2V0dGluZ3Mtb3B0aW9uLS8sIiIpLnNwbGl0KCJfLV8iKSxjPXtwYWdlOjEqY1swXSxuYW1lOmNbMV0sdHlwZToiU0VMRUNUIj09YlswXS5ub2RlTmFtZT8ic2VsZWN0IjpiLmF0dHIoInR5cGUiKX0pLGIuZGF0YSgiaW5mbyIsYykpO3JldHVybiBjfTtsPWZ1bmN0aW9uKCl7dmFyIGI9e307eS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9Yyh0aGlzKSxoPWcoZCk7Yy5tYWtlKCJhIixjLm1ha2UoIm8iLGIsaC5tb2QpLGguaWQpO2QuaXMoIjpjaGVja2VkIikmJmJbaC5tb2RdW2guaWRdLnB1c2goaC5wYWdlKX0pO2QudXRpbC5zdG9yYWdlKCJhbl9zd2l0Y2hlcyIsYik7dmFyIGg9e30sbD0hMTtKLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGQ9ZyhiKTtjLm1ha2UoIm8iLGgsZC5uYW1lKTtpZigiY2hlY2tib3giPT1kLnR5cGUpaFtkLm5hbWVdW2QucGFnZV09CmIuaXMoIjpjaGVja2VkIik7ZWxzZSBpZigidGV4dCI9PWQudHlwZXx8InNlbGVjdCI9PWQudHlwZSkhbCYmInRleHQiPT1kLnR5cGUmJmIudmFsKCkubWF0Y2goL1wnfFwiLykmJihsPSEwKSxoW2QubmFtZV1bZC5wYWdlXT1jLmNvcnJlY3QoYi52YWwoKSl9KTtpZihsJiYhY29uZmlybSgiXHU3NjdjXHU3M2ZlXHU2NTg3XHU1YjU3XHU4YTJkXHU1YjlhXHU0ZTJkXHU1NDJiXHU2NzA5XHU1ZjE1XHU4NjVmIVxuXHU4MmU1XHU4YTcyXHU4YTJkXHU1YjlhXHU1YzZjXHU2NWJjQ1NTXHU3NmY4XHU5NWRjXHU5ODA1XHU3NmVlKFx1NTk4Mlx1OTg0Zlx1ODI3Mlx1OGEyZFx1NWI5YSksIFx1NTI0N1x1NjcwOVx1NTNlZlx1ODBmZFx1NWMwZVx1ODFmNFx1NzI0OFx1OTc2Mlx1OTMyZlx1OGFhNCFcblxuXHU3OGJhXHU1YjlhXHU5MDMyXHU4ODRjXHU1MTMyXHU1YjU4PyIpKXJldHVybiExO2QudXRpbC5zdG9yYWdlKCJhbl9vcHRpb25zIixoKTtyZXR1cm4hMH07aD1kLnNoYXJlZC5maWxsT3B0aW9ucz0KZnVuY3Rpb24oYixoKXt2YXIgbD1iP2MoIiNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyIpOnYuZmlsdGVyKCI6dmlzaWJsZSIpLG09ZC5tb2RGbi5nZXREQihoKTtsLmZpbmQoIi5hbi1zZXR0aW5ncy1zd2l0Y2giKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxkPWcoYiksZD0tMSE9Yy5pbkFycmF5KGQucGFnZSxtLm9Td2l0Y2hlc1tkLm1vZF1bZC5pZF0pO2IuYXR0cigiY2hlY2tlZCIsZCkucGFyZW50KCkucGFyZW50KCkuZmluZCgiLmFuLXNldHRpbmdzLW9wdGlvbiIpLmF0dHIoImRpc2FibGVkIiwhZCl9KTtsLmZpbmQoIi5hbi1zZXR0aW5ncy1vcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxkPWcoYiksaD1tLm9PcHRpb25zW2QubmFtZV1bZC5wYWdlXTsiY2hlY2tib3giPT1kLnR5cGU/Yi5hdHRyKCJjaGVja2VkIixoKToidGV4dCIhPWQudHlwZSYmInNlbGVjdCIhPWQudHlwZXx8Yi52YWwoaCl9KX07bT1mdW5jdGlvbihiKXt2YXIgZD1wP2MoIiNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyIpOgp2LmZpbHRlcigiOnZpc2libGUiKTtkLmZpbmQoIi5hbi1zZXR0aW5ncy1zd2l0Y2giKS5hdHRyKCJjaGVja2VkIixiKTtkLmZpbmQoIi5hbi1zZXR0aW5ncy1vcHRpb24iKS5hdHRyKCJkaXNhYmxlZCIsIWIpfTtxPWZ1bmN0aW9uKCl7dHJ5e3ZhciBiPXByb21wdCgiXHU4YWNiXHU4ZjM4XHU1MTY1XHU4YTJkXHU1YjlhXHU4Y2M3XHU2NTk5IiwiIik7aWYoIWIpcmV0dXJuO2I9SlNPTi5wYXJzZShiKX1jYXRjaChkKXtyZXR1cm4gYWxlcnQoIlx1OGEyZFx1NWI5YVx1OGNjN1x1NjU5OVx1NTI1Nlx1Njc5MFx1OTMyZlx1OGFhNCEiKX12YXIgaD1wP2MoIiNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyIpOnYuZmlsdGVyKCI6dmlzaWJsZSIpO2Iub1N3aXRjaGVzJiZoLmZpbmQoIi5hbi1zZXR0aW5ncy1zd2l0Y2giKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9Yyh0aGlzKSxoPWcoZCk7Yi5vU3dpdGNoZXNbaC5tb2RdJiZiLm9Td2l0Y2hlc1toLm1vZF1baC5pZF0mJihoPS0xIT1jLmluQXJyYXkoaC5wYWdlLApiLm9Td2l0Y2hlc1toLm1vZF1baC5pZF0pLGQuYXR0cigiY2hlY2tlZCIsaCkucGFyZW50KCkucGFyZW50KCkuZmluZCgiLmFuLXNldHRpbmdzLW9wdGlvbiIpLmF0dHIoImRpc2FibGVkIiwhaCkpfSk7Yi5vT3B0aW9ucyYmaC5maW5kKCIuYW4tc2V0dGluZ3Mtb3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWModGhpcyksaD1nKGQpO2lmKGIub09wdGlvbnNbaC5uYW1lXSYmaC5wYWdlIGluIGIub09wdGlvbnNbaC5uYW1lXSl7dmFyIGw9Yi5vT3B0aW9uc1toLm5hbWVdW2gucGFnZV07ImNoZWNrYm94Ij09aC50eXBlP2QuYXR0cigiY2hlY2tlZCIsbCk6InRleHQiIT1oLnR5cGUmJiJzZWxlY3QiIT1oLnR5cGV8fGQudmFsKGwpfX0pO2FsZXJ0KCJcdTZlZDlcdTUxNjVcdTYyMTBcdTUyOWYhIil9O249ZnVuY3Rpb24oKXt2YXIgYj1wP2MoIiNhbi1zZXR0aW5ncy1tYWluLXBhbmVscyIpOnYuZmlsdGVyKCI6dmlzaWJsZSIpLGQ9e29Td2l0Y2hlczp7fSxvT3B0aW9uczp7fX07CmIuZmluZCgiLmFuLXNldHRpbmdzLXN3aXRjaCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGg9ZyhiKSxsPWMubWFrZSgiYSIsYy5tYWtlKCJvIixkLm9Td2l0Y2hlcyxoLm1vZCksaC5pZCk7Yi5pcygiOmNoZWNrZWQiKSYmbC5wdXNoKGgucGFnZSl9KTtiLmZpbmQoIi5hbi1zZXR0aW5ncy1vcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKSxoPWcoYiksbD1jLm1ha2UoIm8iLGQub09wdGlvbnMsaC5uYW1lKTtpZigiY2hlY2tib3giPT1oLnR5cGUpbFtoLnBhZ2VdPWIuaXMoIjpjaGVja2VkIik7ZWxzZSBpZigidGV4dCI9PWgudHlwZXx8InNlbGVjdCI9PWgudHlwZSlsW2gucGFnZV09Yy5jb3JyZWN0KGIudmFsKCkpfSk7YygiI2FuLXNldHRpbmdzLXNwZWNpYWwtY29uZmlnIikudmFsKEpTT04uc3RyaW5naWZ5KGQpfHwiIik7YygiI2FuLXNldHRpbmdzLXRhYi1zZXBjaWFsIikuY2xpY2soKTthbGVydCgiXHU2ZWQ5XHU1MWZhXHU2MjEwXHU1MjlmISBcdThhY2JcdTg5MDdcdTg4ZmRcdThhMmRcdTViOWFcdThjYzdcdTY1OTkiKX07CmMuZWFjaCh7Ilx1NzhiYVx1NWI5YSI6ZnVuY3Rpb24oKXtsKCkmJkMucmVsb2FkKCl9LCJcdTUzZDZcdTZkODgiOmQuc2hhcmVkLmdyYXksIlx1NTk1N1x1NzUyOCI6ZnVuY3Rpb24oKXtsKCk7ZC5ib3gub1N3aXRjaGVzPW51bGw7ZC5ib3gub09wdGlvbnM9bnVsbDtkLm1vZEZuLmdldERCKCl9fSxmdW5jdGlvbihiLGQpe2MoYy5zcHJpbnRmKCdceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZSVzXHgzYy9hXHgzZVx4M2MvbGlceDNlJyxiKSkuY2xpY2soZCkuYXBwZW5kVG8oIiNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMSIpfSk7Yy5lYWNoKHsiXHU1ZmE5XHU1MzlmIjpmdW5jdGlvbigpe2gocCwhMSl9LCJcdTUxNjhcdTkwNzgiOmZ1bmN0aW9uKCl7bSghMCl9LCJcdTUxNjhcdTU0MjYiOmZ1bmN0aW9uKCl7bSghMSl9LCJcdTkxY2RcdThhMmQiOmZ1bmN0aW9uKCl7aChwLCEwKX0sIlx1NmVkOVx1NTE2NSI6ZnVuY3Rpb24oKXtxKCl9LCJcdTZlZDlcdTUxZmEiOmZ1bmN0aW9uKCl7bigpfX0sCmZ1bmN0aW9uKGIsZCl7YyhjLnNwcmludGYoJ1x4M2NsaVx4M2VceDNjYSBocmVmXHgzZCJqYXZhc2NyaXB0OiJceDNlJXNceDNjL2FceDNlXHgzYy9saVx4M2UnLGIpKS5jbGljayhkKS5hcHBlbmRUbygiI2FuLXNldHRpbmdzLW1haW4tY29udHJvbC0yIil9KTtjKCdceDNjbGkgaWRceDNkImFuLXNldHRpbmdzLW1haW4tY29udHJvbC1sYXN0Ilx4M2VceDNjbGFiZWwgZm9yXHgzZCJhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtY3VycmVudG9ubHkiXHgzZVx1NTBjNVx1NTk1N1x1NzUyOFx1NTIzMFx1NjcyY1x1OTgwMVx1OTA3OFx1OTgwNVx4M2MvbGFiZWxceDNlXHgzYy9saVx4M2UnKS5wcmVwZW5kKGMoJ1x4M2NpbnB1dCB0eXBlXHgzZCJjaGVja2JveCIgaWRceDNkImFuLXNldHRpbmdzLW1haW4tY29udHJvbC1jdXJyZW50b25seSIgY2hlY2tlZFx4M2QiY2hlY2tlZCIgL1x4M2UnKS5jbGljayhmdW5jdGlvbigpe3A9IWModGhpcykuaXMoIjpjaGVja2VkIil9KSkuYXBwZW5kVG8oIiNhbi1zZXR0aW5ncy1tYWluLWNvbnRyb2wtMiIpfWgoITAsCiExKTtiLmNhbGwoYygiI2FuLXNldHRpbmdzLXRhYnMgYTpmaXJzdCIpWzBdKTtkLnNoYXJlZC5ncmF5KCExLCJhbi1zZXR0aW5ncyIpfSl9fSwiNzFjOWJkODgtZGMzYi00YTk3LWIwNGMtMjAwNTJkY2ZjZGNiIjp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU4YTU1XHU2ZTJjXHU1MTQzXHU0ZWY2IixwYWdlOns2NTUzNDohMH0sdHlwZToxLG9uY2U6ZnVuY3Rpb24oKXtkLnNoYXJlZC5hZGRNYWluKCJcdThhNTVcdTZlMmMiLGZ1bmN0aW9uKCl7YygiI2FuLWJlbmNobWFyayIpLmxlbmd0aHx8KGQudXRpbC5hZGRTdHlsZSgiIFx0XHRcdFx0I2FuLWJlbmNobWFyayBkaXYgeyBwYWRkaW5nOiAwLjVlbTsgfSBcdFx0XHRcdCIpLGQuc2hhcmVkLmJveCgiYW4tYmVuY2htYXJrIiwiXHU4YTU1XHU2ZTJjIiw1NTAsNTAwKS5hcHBlbmQoIlx4M2NkaXZceDNlXHgzY3RhYmxlXHgzZVx4M2N0aGVhZFx4M2VceDNjdHJceDNlXHgzY3RkXHgzZSNceDNjL3RkXHgzZVx4M2N0ZFx4M2VcdTUyOWZcdTgwZmRceDNjL3RkXHgzZVx4M2N0ZFx4M2VcdTU3ZjdcdTg4NGNcdTY2NDJcdTk1OTNceDNjL3RkXHgzZVx4M2MvdHJceDNlXHgzYy90aGVhZFx4M2VceDNjdGJvZHlceDNlXHgzYy90Ym9keVx4M2VceDNjL3RhYmxlXHgzZVx4M2MvZGl2XHgzZSIpKTsKdmFyIGIsZyxsLGgsbSxxO2g9bT1xPTA7dmFyIG49W2QudXRpbC5nZXRPcHRpb25zKCJzTWFpbkJnQ29sb3IiKSxkLnV0aWwuZ2V0T3B0aW9ucygic1NlY0JnQ29sb3IiKV0scD0iIjtjLmVhY2goZC5ib3guYUJlbmNobWFyayxmdW5jdGlvbihkKXtzd2l0Y2godGhpcy50eXBlKXtjYXNlICJzdGFydCI6Yj0iTi9BIjtnPWMuc3ByaW50ZigiLS0tICVzIFx1OTU4Ylx1NTljYiAtLS0iLHRoaXMubmFtZSk7bD0iTi9BIjticmVhaztjYXNlICJmbiI6Yj0rK2g7Zz10aGlzLm5hbWU7bD0odGhpcy50aW1lfHwiXHUwM2I1IikrIiBtcyI7bSs9dGhpcy50aW1lO3ErPXRoaXMudGltZTticmVhaztjYXNlICJlbmQiOmI9Ik4vQSI7Zz1jLnNwcmludGYoIi0tLSAlcyBcdTdkNTBcdTY3NWYgLS0tIix0aGlzLm5hbWUpO2w9bSsiIG1zIjticmVhaztjYXNlICJmaW5hbCI6cCs9Yy5zcHJpbnRmKCJceDNjdHJceDNlXHgzY3RkXHgzZU4vQVx4M2MvdGRceDNlXHgzY3RkXHgzZSsrKyBcdTdlM2RcdTU0OGMgKysrXHgzYy90ZFx4M2VceDNjdGRceDNlJXMgbXNceDNjL3RkXHgzZVx4M2MvdHJceDNlIiwKcSkscT0wLGI9Ik4vQSIsZz0ifn5+IFx1NTZkZVx1NTQwOFx1N2Q1MFx1Njc1ZiB+fn4iLGw9dGhpcy50aW1lKyIgbXMifXArPWMuc3ByaW50ZignXHgzY3RyIHN0eWxlXHgzZCJiYWNrZ3JvdW5kLWNvbG9yOiAlczsiXHgzZVx4M2N0ZFx4M2Ulc1x4M2MvdGRceDNlXHgzY3RkXHgzZSVzXHgzYy90ZFx4M2VceDNjdGRceDNlJXNceDNjL3RkXHgzZVx4M2MvdHJceDNlJyxuW2QlMl0sYixnLGwpOyJlbmQiPT10aGlzLnR5cGUmJihtPTApfSk7YygiI2FuLWJlbmNobWFyayB0Ym9keSIpLmFwcGVuZChwKTtkLmJveC5hQmVuY2htYXJrPVtdO2Quc2hhcmVkLmdyYXkoITAsImFuLWJlbmNobWFyayIpfSl9fSwiMDg2OGViNjQtOTYzMS00MmRkLThiNWMtMDJmMTFhOGM5YTQ4Ijp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU4YTE4XHU5MzA0XHU1MTQzXHU0ZWY2IFtcdTUzZjNcdTRlMGJdIixwYWdlOns2NTUzNDohMH0sdHlwZToxLG9wdGlvbnM6e2JBZGRMb2dCdXR0b246e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1OGExOFx1OTMwNFx1NTE0M1x1NGVmNlx1OTU4Ylx1OTVkY1x1NjMwOVx1NjI2ZCIsCmRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJBdXRvU2hvd0xvZzp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU5ODZmXHU3OTNhXHU4YTE4XHU5MzA0XHU4OTk2XHU3YTk3IixkZWZhdWx0VmFsdWU6ITAsdHlwZToiY2hlY2tib3gifSxiU2hvd0RldGFpbExvZzp7ZGVzYzoiXHU5ODZmXHU3OTNhXHU4YTczXHU3NmUxXHU4YTE4XHU5MzA0IixkZWZhdWx0VmFsdWU6ITEsdHlwZToiY2hlY2tib3gifSxzTG9nV2lkdGg6e2Rlc2M6Ilx1NTE0M1x1NGVmNlx1OTVjYVx1NWVhNiBbXHU1M2VmXHU4YTJkXHU1YjlhXHU3MGJhMjBlbSwgMTUlLCAyMDBweFx1N2I0OV0iLGRlZmF1bHRWYWx1ZToiMjAwcHgiLHR5cGU6InRleHQifX0sb25jZTpmdW5jdGlvbigpe3ZhciBiPWZ1bmN0aW9uKCl7dmFyIGI9YygiI2FuLWxvZyIpO2lmKGIubGVuZ3RoKXJldHVybiBiO2QudXRpbC5hZGRTdHlsZShjLnNwcmludGYoIlx0XHRcdCNhbi1sb2cgeyBkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDMwJTsgd2lkdGg6ICVzOyBib3R0b206IDA7IHJpZ2h0OiAwOyB9IFx0XHRcdCNhbi1sb2ctaGVhZGVyIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgcGFkZGluZy1ib3R0b206IDAuMmVtOyB9IFx0XHRcdCNhbi1sb2ctY29udGVudCBsaSB7IGRpc3BsYXk6IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7IHBhZGRpbmc6IDAuM2VtIDA7IH0gXHRcdFx0IiwKZC51dGlsLmdldE9wdGlvbnMoInNMb2dXaWR0aCIpKSk7cmV0dXJuIGMoJ1x4M2NkaXYgaWRceDNkImFuLWxvZyIgY2xhc3NceDNkImFuLW1vZCBhbi1zbWFsbCJceDNlXHgzY2RpdiBpZFx4M2QiYW4tbG9nLWhlYWRlciJceDNlTG9nXHgzYy9kaXZceDNlXHgzY3VsIGlkXHgzZCJhbi1sb2ctY29udGVudCJceDNlXHgzYy91bFx4M2VceDNjL2Rpdlx4M2UnKS5hcHBlbmRUbygiI2FuLXVpIil9O2QudXRpbC5nZXRPcHRpb25zKCJiQWRkTG9nQnV0dG9uIikmJmQuc2hhcmVkLmFkZE1haW4oIlx1OGExOFx1OTMwNCIsZnVuY3Rpb24oKXtiKCkuZmFkZVRvZ2dsZSgpfSk7ZC5zaGFyZWQubG9nPWZ1bmN0aW9uKGcpe3ZhciBsPWIoKTtpZighYy5pc1J1YmJpc2goZykpe2QudXRpbC5nZXRPcHRpb25zKCJiQXV0b1Nob3dMb2ciKSYmbC5mYWRlSW4oImZhc3QiKTt2YXIgaD1uZXcgRGF0ZSxsPWguZ2V0SG91cnMoKTsxMD5sJiYobD0iMCIrbCk7aD1oLmdldE1pbnV0ZXMoKTsxMD5oJiYoaD0iMCIrCmgpO3ZhciBtPWMoIiNhbi1sb2ctY29udGVudCIpO2MoYy5zcHJpbnRmKCJceDNjbGlceDNlJXM6JXMgJXNceDNjL2xpXHgzZSIsbCxoLGcpKS5wcmVwZW5kVG8obSkuc2xpZGVEb3duKCJzbG93Iik7bS5jaGlsZHJlbigiOmd0KDUwKSIpLnJlbW92ZSgpfX07ZC51dGlsLmdldE9wdGlvbnMoImJTaG93RGV0YWlsTG9nIikmJihkLnNoYXJlZC5sb2cyPWQuc2hhcmVkLmxvZyk7ZC5ib3guZGVidWdNb2RlJiYoZC5zaGFyZWQuZGVidWc9ZC5zaGFyZWQubG9nKTtjLmFqYXhTZXR1cCh7ZXJyb3I6ZnVuY3Rpb24oYixsLGgpe2Quc2hhcmVkLmxvZyhjLnNwcmludGYoIlx1OGI4MFx1NTNkNlx1NzZlZVx1NmExOVx1NjY0Mlx1NzY3Y1x1NzUxZlx1OTMyZlx1OGFhNDogJXMgJXMiLGIuc3RhdHVzLGIuc3RhdHVzVGV4dCkpfX0pfX0sImU5MDUxYmI4LTI2MTMtNGYxMC04MmVjLTY5MjkwODMxYzZhNSI6e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NjMwOVx1NjI2ZFx1NTE0M1x1NGVmNiBbXHU1ZGU2XHU0ZTBhXSIsCnBhZ2U6ezY1NTM0OiEwfSx0eXBlOjEsb3B0aW9uczp7YkFkZEJ1dHRvbnNCdXR0b246e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1NjMwOVx1NjI2ZFx1NTE0M1x1NGVmNlx1OTU4Ylx1OTVkY1x1NjMwOVx1NjI2ZCIsZGVmYXVsdFZhbHVlOiExLHR5cGU6ImNoZWNrYm94In0sYkF1dG9TaG93QnV0dG9uczp7ZGVzYzoiXHU4MWVhXHU1MmQ1XHU5ODZmXHU3OTNhXHU2MzA5XHU2MjZkXHU1MTQzXHU0ZWY2IixkZWZhdWx0VmFsdWU6ITAsdHlwZToiY2hlY2tib3gifX0sb25jZTpmdW5jdGlvbigpe3ZhciBiPWZ1bmN0aW9uKCl7dmFyIGI9YygiI2FuLWJ1dHRvbnMiKTtpZihiLmxlbmd0aClyZXR1cm4gYjtkLnV0aWwuYWRkU3R5bGUoYy5zcHJpbnRmKCIgXHRcdFx0I2FuLWJ1dHRvbnMgeyAlcyBsZWZ0OiA1cHg7IHRvcDogMzBweDsgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZDsgcGFkZGluZy1sZWZ0OiAwLjNlbTsgfSBcdFx0XHQjYW4tYnV0dG9ucyBhIHsgcGFkZGluZzogMC4xNWVtIDA7IH0gXHRcdFx0IiwKZC51dGlsLmdldE9wdGlvbnMoImJBdXRvU2hvd0J1dHRvbnMiKT8iIjoiZGlzcGxheTogbm9uZTsiKSk7cmV0dXJuIGMoJ1x4M2NkaXYgaWRceDNkImFuLWJ1dHRvbnMiIGNsYXNzXHgzZCJhbi1tb2QiXHgzZVx4M2N1bCBjbGFzc1x4M2QiYW4tbWVudSJceDNlXHgzYy91bFx4M2VceDNjL2Rpdlx4M2UnKS5hcHBlbmRUbygiI2FuLXVpIil9O2QudXRpbC5nZXRPcHRpb25zKCJiQWRkQnV0dG9uc0J1dHRvbiIpJiZkLnNoYXJlZC5hZGRNYWluKCJcdTYzMDlcdTYyNmQiLGZ1bmN0aW9uKCl7YigpLmZhZGVUb2dnbGUoKX0pO2Quc2hhcmVkLmFkZEJ1dHRvbj1mdW5jdGlvbihkLGwpe3ZhciBoPWIoKTtkJiZoLmZpbmQoInVsIikuYXBwZW5kKCJzdHJpbmciPT09dHlwZW9mIGw/Yy5zcHJpbnRmKCdceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiJXMiXHgzZSVzXHgzYy9hXHgzZVx4M2MvbGlceDNlJyxsLGQpOmMoJ1x4M2NsaVx4M2VceDNjYSBocmVmXHgzZCJqYXZhc2NyaXB0OiJceDNlJytkKwoiXHgzYy9hXHgzZVx4M2MvbGlceDNlIikuY2xpY2sobCkpfX19LCI0MzdkYzdkYS1mZGZhLTQyOWEtYWVjNS0zMjljODAyMjIzMjciOntkZXNjOiJcdTUyYTBcdTUxNjVcdTkwMjNcdTdkNTBcdTUxNDNcdTRlZjYgW1x1NWRlNlx1NGUyZF0iLHBhZ2U6ezY1NTM0OiEwfSx0eXBlOjEsb3B0aW9uczp7YkFkZExpbmtzQnV0dG9uOntkZXNjOiJcdTUyYTBcdTUxNjVcdTkwMjNcdTdkNTBcdTUxNDNcdTRlZjZcdTk1OGJcdTk1ZGNcdTYzMDlcdTYyNmQiLGRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJBdXRvU2hvd0xpbmtzOntkZXNjOiJcdTgxZWFcdTUyZDVcdTk4NmZcdTc5M2FcdTkwMjNcdTdkNTBcdTUxNDNcdTRlZjYiLGRlZmF1bHRWYWx1ZTohMCx0eXBlOiJjaGVja2JveCJ9fSxvbmNlOmZ1bmN0aW9uKGIpe3ZhciBnPWZ1bmN0aW9uKCl7dmFyIGc9YygiI2FuLWxpbmtzIik7aWYoZy5sZW5ndGgpcmV0dXJuIGc7ZC51dGlsLmFkZFN0eWxlKGMuc3ByaW50ZigiIFx0XHRcdCNhbi1saW5rcyB7ICVzIHRvcDogNTAlOyBsZWZ0OiAwOyB0ZXh0LWFsaWduOiByaWdodDsgfSBcdFx0XHQjYW4tbGlua3MgYSB7IHBhZGRpbmc6IDAuM2VtIDAuMWVtIDAuMmVtIDEuNWVtOyB9IFx0XHRcdCNhbi1saW5rcy10b3AgbGkgeyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IH0gXHRcdFx0I2FuLWxpbmtzLW1pZGRsZSBsaSB7IGJvcmRlci13aWR0aDogMXB4IDA7IH0gXHRcdFx0I2FuLWxpbmtzLWJvdHRvbSBsaSB7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgfSBcdFx0XHQiLApkLnV0aWwuZ2V0T3B0aW9ucygiYkF1dG9TaG93TGlua3MiKT8iIjoiZGlzcGxheTogbm9uZTsiKSk7Zz1jKCdceDNjZGl2IGlkXHgzZCJhbi1saW5rcyIgY2xhc3NceDNkImFuLW1vZCJceDNlXHgzY3VsIGlkXHgzZCJhbi1saW5rcy10b3AiIGNsYXNzXHgzZCJhbi1tZW51Ilx4M2VceDNjL3VsXHgzZVx4M2N1bCBpZFx4M2QiYW4tbGlua3MtbWlkZGxlIiBjbGFzc1x4M2QiYW4tbWVudSJceDNlXHgzYy91bFx4M2VceDNjdWwgaWRceDNkImFuLWxpbmtzLWJvdHRvbSIgY2xhc3NceDNkImFuLW1lbnUiXHgzZVx4M2MvdWxceDNlXHgzYy9kaXZceDNlJykuYXBwZW5kVG8oIiNhbi11aSIpO2IuZGVmZXIoMSwiXHU4YWJmXHU2NTc0XHU5MDIzXHU3ZDUwXHU1MTQzXHU0ZWY2XHU0ZjRkXHU3ZjZlIixmdW5jdGlvbigpe2cuY3NzKCJtYXJnaW4tdG9wIiwtZy5oZWlnaHQoKS8yKX0pO3JldHVybiBnfTtkLnV0aWwuZ2V0T3B0aW9ucygiYkFkZExpbmtzQnV0dG9uIikmJmQuc2hhcmVkLmFkZE1haW4oIlx1OTAyM1x1N2Q1MCIsCmZ1bmN0aW9uKCl7ZygpLmZhZGVUb2dnbGUoKX0pO2Quc2hhcmVkLmFkZExpbms9ZnVuY3Rpb24oYixkLG0pe3ZvaWQgMD09PW0mJihtPTEpO3ZhciBxPWcoKTtpZihiKXEuY2hpbGRyZW4oKS5lcShtKVsyPT1tPyJhcHBlbmQiOiJwcmVwZW5kIl0oInN0cmluZyI9PXR5cGVvZiBkP2Muc3ByaW50ZignXHgzY2xpXHgzZVx4M2NhIGhyZWZceDNkIiVzIlx4M2Ulc1x4M2MvYVx4M2VceDNjL2xpXHgzZScsZCxiKTpjKCdceDNjbGlceDNlXHgzY2EgaHJlZlx4M2QiamF2YXNjcmlwdDoiXHgzZScrYisiXHgzYy9hXHgzZVx4M2MvbGlceDNlIikuY2xpY2soZCkpfX19LCIxYzZlODg2OS04MTQ4LTRlNTgtYjQ0MC0zMWUxYmVlNGFlZjEiOntkZXNjOiJcdTUyYTBcdTUxNjVcdThjYzdcdThhMGFcdTUxNDNcdTRlZjYgW1x1NWRlNlx1NGUwYl0iLHBhZ2U6ezY1NTM0OiEwfSx0eXBlOjEsb3B0aW9uczp7YkFkZEluZm9CdXR0b246e2Rlc2M6Ilx1NTJhMFx1NTE2NVx1OGNjN1x1OGEwYVx1NTE0M1x1NGVmNlx1OTU4Ylx1OTVkY1x1NjMwOVx1NjI2ZCIsCmRlZmF1bHRWYWx1ZTohMSx0eXBlOiJjaGVja2JveCJ9LGJBdXRvU2hvd0luZm86e2Rlc2M6Ilx1ODFlYVx1NTJkNVx1OTg2Zlx1NzkzYVx1OGNjN1x1OGEwYVx1ODk5Nlx1N2E5NyIsZGVmYXVsdFZhbHVlOiEwLHR5cGU6ImNoZWNrYm94In19LG9uY2U6ZnVuY3Rpb24oYil7dmFyIGc9ZnVuY3Rpb24oKXt2YXIgYj1jKCIjYW4taW5mbyIpO2lmKGIubGVuZ3RoKXJldHVybiBiO2QudXRpbC5hZGRTdHlsZShjLnNwcmludGYoIiBcdFx0XHQjYW4taW5mbyB7ICVzOyBsZWZ0OiAxMHB4OyBib3R0b206IDEwcHg7IGJvcmRlci13aWR0aDogMCAwIDFweCAxcHg7IH0gXHRcdFx0I2FuLWluZm8tY29udGVudCB7IHBhZGRpbmc6IDFlbSAxZW0gMCAwLjVlbSAhaW1wb3J0YW50OyB9IFx0XHRcdCNhbi1pbmZvLWZvb3RlciB7IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LXdlaWdodDogYm9sZDsgfSBcdFx0XHQjYW4taW5mbyBsaSB7IGRpc3BsYXk6IG5vbmU7IHBhZGRpbmctYm90dG9tOiAwLjVlbTsgfSBcdFx0XHQjYW4taW5mbyBsaSBhIHsgZGlzcGxheTogaW5saW5lOyB9IFx0XHRcdCIsCmQudXRpbC5nZXRPcHRpb25zKCJiQXV0b1Nob3dJbmZvIik/IiI6ImRpc3BsYXk6IG5vbmUiKSk7cmV0dXJuIGMoJ1x4M2NkaXYgaWRceDNkImFuLWluZm8iIGNsYXNzXHgzZCJhbi1tb2QiXHgzZVx4M2N1bCBpZFx4M2QiYW4taW5mby1jb250ZW50IiBjbGFzc1x4M2QiYW4tbWVudSBhbi1zbWFsbCJceDNlXHgzYy91bFx4M2VceDNjZGl2IGNsYXNzXHgzZCJhbi1zbWFsbCIgaWRceDNkImFuLWluZm8tZm9vdGVyIlx4M2VJbmZvXHgzYy9kaXZceDNlXHgzYy9kaXZceDNlJykuYXBwZW5kVG8oIiNhbi11aSIpfTsoZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7cmV0dXJuIGMoIiNoa2dfYm90dG9tYmFyIikubGVuZ3RoJiZkLnV0aWwuYWRkU3R5bGUoIiNhbi1pbmZvIHsgYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7IH0iKSYmITB9IWIoKSYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXI/d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGIsITEpOndpbmRvdy5hdHRhY2hFdmVudCgib25sb2FkIiwKYil9KSgpO2QudXRpbC5nZXRPcHRpb25zKCJiQWRkSW5mb0J1dHRvbiIpJiZkLnNoYXJlZC5hZGRNYWluKCJcdThjYzdcdThhMGEiLGZ1bmN0aW9uKCl7ZygpLmZhZGVUb2dnbGUoKX0pO2Quc2hhcmVkLmFkZEluZm89ZnVuY3Rpb24oYil7ZygpO2lmKGIpcmV0dXJuIGMoIlx4M2NsaVx4M2UiK2IrIlx4M2MvbGlceDNlIikuYXBwZW5kVG8oIiNhbi1pbmZvLWNvbnRlbnQiKS5mYWRlSW4oInNsb3ciKX19fSwiNTZlY2FjNTEtMDI1Ny00ZDM0LTg5N2QtNjMzMTI0N2IwMTdkIjp7ZGVzYzoiXHU1MmEwXHU1MTY1XHU5NWRjXHU2NWJjXHU1MTQzXHU0ZWY2IixwYWdlOns2NTUzNDoiY29tcCJ9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7ZC5zaGFyZWQuYWRkTWFpbigiXHU5NWRjXHU2NWJjIixmdW5jdGlvbigpe2lmKCFjKCIjYW4tYWJvdXQiKS5sZW5ndGgpe2QudXRpbC5hZGRTdHlsZSgiXHRcdFx0XHQjYW4tYWJvdXQgXHgzZSBkaXYgeyBtYXJnaW46IDAuNWVtOyB9IFx0XHRcdFx0I2FuLWFib3V0IGgxIHsgbWFyZ2luOiAwLjVlbTsgZm9udC1zaXplOiAyZW07IHRleHQtYWxpZ246IGNlbnRlcjsgfSBcdFx0XHRcdCNhbi1hYm91dCBociB7IGJvcmRlci13aWR0aDogMXB4OyBtYXJnaW46IDFlbSAwLjVlbTsgfSBcdFx0XHRcdCNhbi1hYm91dCBkaXYgZGl2IHsgb3ZlcmZsb3cteTogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuOyB3aWR0aDogODAlOyBoZWlnaHQ6IDIwMHB4OyBtYXJnaW46IDAgYXV0bzsgYm9yZGVyLXdpZHRoOiAxcHg7IH0gXHRcdFx0XHQjYW4tYWJvdXQgZGwgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgMC41ZW0gMC41ZW07IGZvbnQtc2l6ZTogMC44ZW07IH0gXHRcdFx0XHQjYW4tYWJvdXQgZHQgeyBtYXJnaW4tdG9wOiAxZW07IH0gXHRcdFx0XHQjYW4tYWJvdXQgZGQgeyBtYXJnaW46IDA7IGxpbmUtaGVpZ2h0OiAxLjM7IH0gXHRcdFx0XHQjYW4tYWJvdXQgcCB7IG1hcmdpbjogMWVtIDA7IGZvbnQtc2l6ZTogMC43NWVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gXHRcdFx0XHQiKTsKdmFyIGI9ZC5zaGFyZWQuYm94KCJhbi1hYm91dCIsIlx1OTVkY1x1NjViYyIsNTAwLCJhdXRvIikuYXBwZW5kKCdceDNjZGl2XHgzZVx4M2NoMVx4M2VIZWxpYW50aHVzLmFubnV1c1x4M2MvaDFceDNlXHgzY2hyIC9ceDNlXHgzY2Rpdlx4M2VceDNjZGxceDNlXHgzYy9kbFx4M2VceDNjL2Rpdlx4M2VceDNjcFx4M2VceDI2Y29weTsgMjAwOSBcdTU0MTFcdTY1ZTUgTGljZW5jZWQgdW5kZXIgXHgzY2EgaHJlZlx4M2QiaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sIiB0YXJnZXRceDNkIl9ibGFuayJceDNlR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjNceDNjL2FceDNlXHgzYy9wXHgzZVx4M2MvZGl2XHgzZScpLGc9IiIsZz1nKyJceDNjZHRceDNlW1x1N2EwYlx1NWYwZl1ceDNjL2R0XHgzZSI7Yy5lYWNoKHsiXHU1NDBkXHU3YTMxIjoiSGVsaWFudGh1cy5hbm51dXMiLCJcdTRmNWNcdTgwMDUiOidceDNjYSB0YXJnZXRceDNkIl9ibGFuayIgaHJlZlx4M2QiUHJvZmlsZVBhZ2UuYXNweD91c2VyaWRceDNkMTQ4NzIwIlx4M2VcdTU0MTFcdTY1ZTVceDNjL2FceDNlJywKIlx1NGUzYlx1OTgwMSI6J1x4M2NhIHRhcmdldFx4M2QiX2JsYW5rIiBocmVmXHgzZCJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaGVsaWFudGh1cy1hbm51dXMvIlx4M2VodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaGVsaWFudGh1cy1hbm51dXMvXHgzYy9hXHgzZScsIlx1NzI0OFx1NjcyYyI6ZC52ZXJzaW9uLCJcdTUxMzJcdTViNThcdTY1YjlcdTVmMGYiOmMuc3ByaW50ZignXHgzY3NlbGVjdCBpZFx4M2QiYW4tYWJvdXQtc3RvcmFnZSJceDNlXHgzY29wdGlvblx4M2VGbGFzaFx4M2Mvb3B0aW9uXHgzZVx4M2Mvc2VsZWN0XHgzZScpLCJcdTk2NjRcdTkzMmZcdTZhMjFcdTVmMGYiOmQuYm94LmRlYnVnTW9kZT8iXHU1NTVmXHU3NTI4IjoiXHU1MDVjXHU3NTI4In0sZnVuY3Rpb24oYixkKXtnKz1jLnNwcmludGYoIlx4M2NkZFx4M2UlczogJXNceDNjL2RkXHgzZSIsYixkKX0pO2crPSJceDNjZHRceDNlW0NyZWRpdHNdXHgzYy9kdFx4M2UiO2MuZWFjaChbe25hbWU6ImpRdWVyeSIsCmF1dGhvcjoiSm9obiBSZXNpZyIsdXJsOiJodHRwOi8vanF1ZXJ5LmNvbSIsbGljZW5zZToiRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMiLGxpY2Vuc2VVcmw6Imh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vTGljZW5zZSJ9LHtuYW1lOiJqc29uMi5qcyIsYXV0aG9yOiJEb3VnbGFzIENyb2NrZm9yZCIsdXJsOiJodHRwOi8vd3d3Lmpzb24ub3JnL2pzLmh0bWwiLGxpY2Vuc2U6IlB1YmxpYyBEb21haW4iLGxpY2Vuc2VVcmw6IiMifSx7bmFtZToianF1ZXJ5LnNwcmludGYiLGF1dGhvcjoiU2FiaW4gSWFjb2IiLHVybDoiaHR0cDovL3BsdWdpbnMuanF1ZXJ5LmNvbS9wcm9qZWN0L3ByaW50ZiIsbGljZW5zZToiR1BMIFZlcnNpb24gMyIsbGljZW5zZVVybDoiaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sIn0se25hbWU6ImpRdWVyeSBkb1RpbWVvdXQiLGF1dGhvcjoiQmVuIEFsbWFuIix1cmw6Imh0dHA6Ly9iZW5hbG1hbi5jb20vcHJvamVjdHMvanF1ZXJ5LWRvdGltZW91dC1wbHVnaW4vIiwKbGljZW5zZToiRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMiLGxpY2Vuc2VVcmw6Imh0dHA6Ly9iZW5hbG1hbi5jb20vYWJvdXQvbGljZW5zZS8ifSx7bmFtZTonUmVkIEZsb3dlciBJY29uIFtceDNjYSBocmVmXHgzZCJodHRwOi8vd3d3LmZhc3RpY29uLmNvbSJceDNlSWNvbnMgYnk6IEZhc3RJY29uLmNvbVx4M2MvYVx4M2VdJyxhdXRob3I6IkZhc3QgSWNvbiIsdXJsOiJodHRwOi8vd3d3Lmljb25hcmNoaXZlLmNvbS9zaG93L25hdHVyZS1pY29ucy1ieS1mYXN0aWNvbi9SZWQtRmxvd2VyLWljb24uaHRtbCIsbGljZW5zZToiRmFzdCBJY29uIENvbW1lcmNpYWwgTGljZW5zZSIsbGljZW5zZVVybDoiaHR0cDovL3d3dy5mYXN0aWNvbi5jb20vY29tbWVyY2lhbF9saWNlbnNlLmh0bWwifSx7bmFtZToiRnVndWUgSWNvbnMiLGF1dGhvcjoiWXVzdWtlIEthbWl5YW1hbmUiLHVybDoiaHR0cDovL3d3dy5waW52b2tlLmNvbS8iLGxpY2Vuc2U6IkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gMy4wIGxpY2Vuc2UiLApsaWNlbnNlVXJsOiJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvIn0se25hbWU6IlN0aWxsIExpZmUiLGF1dGhvcjoiSnVsaWFuIFR1cm5lciAiLHVybDoiaHR0cDovL2FydC5nbm9tZS5vcmcvdGhlbWVzL2ljb24vMTExMSIsbGljZW5zZToiQ3JlYXRpdmUgQ29tbW9ucyAoQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIEdlbmVyaWMpIixsaWNlbnNlVXJsOiJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvIn1dLGZ1bmN0aW9uKCl7Zys9Yy5zcHJpbnRmKCdceDNjZHRceDNlJShuYW1lKXNceDNjL2R0XHgzZVx4M2NkZFx4M2VieSAlKGF1dGhvcilzXHgzYy9kZFx4M2VceDNjZGRceDNlXHgzY2EgaHJlZlx4M2QiJSh1cmwpcyJceDNlJSh1cmwpc1x4M2MvYVx4M2VceDNjL2RkXHgzZVx4M2NkZFx4M2VMaWNlbnNlOiBceDNjYSBocmVmXHgzZCIlKGxpY2Vuc2VVcmwpcyJceDNlJShsaWNlbnNlKXNceDNjL2FceDNlXHgzYy9kZFx4M2UnLAp0aGlzKX0pO2IuZmluZCgiZGwiKS5hcHBlbmQoZyk7Yy5zdXBwb3J0LmxvY2FsU3RvcmFnZSYmYygiI2FuLWFib3V0LXN0b3JhZ2UiKS5hcHBlbmQoIlx4M2NvcHRpb25ceDNlRE9NXHgzYy9vcHRpb25ceDNlIik7YygiI2FuLWFib3V0LXN0b3JhZ2UiKS52YWwoZC5ib3guc3RvcmFnZU1vZGUpLmNoYW5nZShmdW5jdGlvbigpe2QudXRpbC5jb29raWUoImFuLXN0b3JhZ2Vtb2RlIixjKHRoaXMpLnZhbCgpKTtDLnJlbG9hZCgpfSl9ZC5zaGFyZWQuZ3JheSghMCwiYW4tYWJvdXQiKX0pfX0sIjYyOTk0NGEwLWE0ZjItNDkzYy04YzhkLWUxMjYxYTkyNjRmOSI6e2Rlc2M6Ilx1OWYyMFx1NmExOVx1OTA2MFx1OTZlMlVJXHU1MTQzXHU0ZWY2XHU2NjQyXHU1MzRhXHU5MDBmXHU2NjBlIFtidWdneSBvbiBJRThdIixwYWdlOns2NTUzNDohMX0sdHlwZToxLG9wdGlvbnM6e25VSU9wYWNpdHk6e2Rlc2M6Ilx1OTAwZlx1NjYwZVx1NWVhNiAoMTAgXHgzZCBcdTc5ZmJcdTk2NjRcdTUzNGFcdTkwMGZcdTY2MGUpIiwKdHlwZToic2VsZWN0IixkZWZhdWx0VmFsdWU6MyxjaG9pY2VzOlsxMCw5LDgsNyw2LDUsNCwzLDIsMSwwXX19LG9uY2U6ZnVuY3Rpb24oKXtkLnV0aWwuc3RhY2tTdHlsZShjLnNwcmludGYoIlx0XHQuYW4tbW9kIHsgb3BhY2l0eTogJXM7IC1tcy1maWx0ZXI6IGFscGhhKG9wYWNpdHlceDNkJXMpOyB9IFx0XHQuYW4tbW9kOmhvdmVyIHsgb3BhY2l0eTogMTsgLW1zLWZpbHRlcjogYWxwaGEob3BhY2l0eVx4M2QxMDApOyB9IFx0XHQiLGQudXRpbC5nZXRPcHRpb25zKCJuVUlPcGFjaXR5IikvMTAsMTAqZC51dGlsLmdldE9wdGlvbnMoIm5VSU9wYWNpdHkiKSkpfX0sIjBiNTg3NzI0LWEzYTctNDFiZS05NWQ4LTk2YzcyNmQzODM0MyI6e2Rlc2M6Ilx1OTY2NFx1OTMyZlx1NmEyMVx1NWYwZihcdTdlOGMpIixwYWdlOns2NTUzNToiY29tcCJ9LHR5cGU6MSxvbmNlOmZ1bmN0aW9uKCl7ZC5ib3guZGVidWdNb2RlJiYoZC5zaGFyZWQoImxvZyIpLGQuc2hhcmVkKCJhZGRMaW5rIiksZC5zaGFyZWQoImFkZEJ1dHRvbiIsCiJcdTc5ZmJcdTk2NjRcdTUxMzJcdTViNThcdThjYzdcdTY1OTkiLGZ1bmN0aW9uKCl7Y29uZmlybSgiXHU3OGJhXHU1YjlhXHU3OWZiXHU5NjY0XHU1MTMyXHU1YjU4XHU4Y2M3XHU2NTk5PyIpJiYoZC51dGlsLnN0b3JhZ2UobnVsbCksQy5yZWxvYWQoKSl9KSxkLnNoYXJlZCgiYWRkQnV0dG9uIiwiXHU5ODZmXHU3OTNhXHU1MTMyXHU1YjU4XHU4Y2M3XHU2NTk5IixmdW5jdGlvbigpe2MoIiNhbi1zYXZlZHNldHRpbmdzIikubGVuZ3RofHwoZC5zaGFyZWQoImJveCIsImFuLXNhdmVkc2V0dGluZ3MiLCJcdTUxMzJcdTViNThcdThjYzdcdTY1OTkiLG51bGwsIm1heCIpLGQudXRpbC5hZGRTdHlsZSgiI2FuLXNhdmVkc2V0dGluZ3MgeyBwYWRkaW5nOiAwIDJlbTsgfSAjYW4tc2F2ZWRzZXR0aW5ncyBjb2RlIHsgZGlzcGxheTogYmxvY2s7IHdoaXRlLXNwYWNlOiBwcmU7IG1hcmdpbjogMWVtIDA7IGZvbnQtZmFtaWx5OiBDb25zb2xhczsgfSIpLGMoIiNhbi1zYXZlZHNldHRpbmdzIikuYXBwZW5kKCJceDNjY29kZVx4M2VceDNjL2NvZGVceDNlIikpOwpjKCIjYW4tc2F2ZWRzZXR0aW5ncyBjb2RlIikudGV4dChkLnV0aWwuc3RvcmFnZSgpLnJlcGxhY2UoL3tbXntdKn0sPy9nLGZ1bmN0aW9uKGIpe3JldHVybiBiLnJlcGxhY2UoLywvZywiLFxuIil9KSk7ZC5zaGFyZWQoImdyYXkiLCEwLCJhbi1zYXZlZHNldHRpbmdzIil9KSxkLnNoYXJlZCgiYWRkQnV0dG9uIiwiXHU5ODZmXHU3OTNhXHU1MjlmXHU4MGZkXHU1MjE3XHU4ODY4IixmdW5jdGlvbigpe2lmKCFjKCIjYW4tZnVuY3Rpb25saXN0IikubGVuZ3RoKXtkLnNoYXJlZCgiYm94IiwiYW4tZnVuY3Rpb25saXN0IiwiXHU1MjlmXHU4MGZkXHU1MjE3XHU4ODY4Iiw2MDAsNDAwKTtkLnV0aWwuYWRkU3R5bGUoIiNhbi1mdW5jdGlvbmxpc3QgdGV4dGFyZWEgeyBtYXJnaW46IDEwcHg7IHdpZHRoOiA1NzBweDsgaGVpZ2h0OiAzNzBweDsgZm9udC1mYW1pbHk6IENvbnNvbGFzOyB9Iik7YygiI2FuLWZ1bmN0aW9ubGlzdCIpLmFwcGVuZCgnXHgzY3RleHRhcmVhIHJlYWRvbmx5XHgzZCJyZWFkb25seSJceDNlXHgzYy90ZXh0YXJlYVx4M2UnKTsKdmFyIGI9IiI7Yy5lYWNoKGQubW9kLGZ1bmN0aW9uKGQpe3RoaXMuZm4mJihiKz0iXHIiK2QrIjpcclxyIixjLmVhY2godGhpcy5mbixmdW5jdGlvbigpe2IrPSIgKiAiK3RoaXMuZGVzYysiXHIifSkpfSk7YygiI2FuLWZ1bmN0aW9ubGlzdCB0ZXh0YXJlYSIpLnRleHQoYil9ZC5zaGFyZWQoImdyYXkiLCEwLCJhbi1mdW5jdGlvbmxpc3QiKX0pKX19fX07Yy5leHRlbmQoe3RpbWU6ZnVuY3Rpb24oYil7cmV0dXJuIGI/Yy50aW1lKCktYjorbmV3IERhdGV9LGNvcnJlY3Q6ZnVuY3Rpb24oYil7cmV0dXJuInRydWUiPT1iPyEwOiJmYWxzZSI9PWI/ITE6aXNOYU4oYil8fCIiPT09Yj9iOjEqYn0sZG9jOmZ1bmN0aW9uKGIpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuaW5uZXJIVE1MPWI7cmV0dXJuIGMoZCl9LGdldERvYzpmdW5jdGlvbihiLGcpe3ZhciBsPXt1cmw6YixkYXRhVHlwZToidGV4dCIsc3VjY2VzczpmdW5jdGlvbihiKXtiPWMuZG9jKGIpO2IucGFnZUNvZGUoKSYKNjU1MzQ/Zy5jYWxsKGwsYik6bC5lcnJvcigpfSxlcnJvcjpmdW5jdGlvbigpe2Quc2hhcmVkKCJsb2ciLCJcdTk4MDFcdTk3NjJcdThiODBcdTUzZDZcdTU5MzFcdTY1NTcsIDVcdTc5ZDJcdTVmOGNcdTkxY2RcdTY1YjBcdThiODBcdTUzZDYuLi4iKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5nZXREb2MoYixnKX0sNUUzKX19O2MuYWpheChsKX0sZ2V0TGVuZ3RoOmZ1bmN0aW9uKGIpe2lmKCJsZW5ndGgiaW4gYilyZXR1cm4gYi5sZW5ndGg7Zm9yKHZhciBjIGluIGIpO3JldHVybiBjfSxtYWtlOmZ1bmN0aW9uKGIsZCl7Yy5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihjLGgpezI+Y3x8KGRbaF18fChkW2hdPSJvIj09Yj97fTpbXSksZD1kW2hdKX0pO3JldHVybiBkfSxpc0VtcHR5OmZ1bmN0aW9uKGIpe2lmKCJsZW5ndGgiaW4gYilyZXR1cm4gYi5sZW5ndGg7Zm9yKHZhciBjIGluIGIpcmV0dXJuITE7cmV0dXJuITB9LGlzUnViYmlzaDpmdW5jdGlvbihiKXtyZXR1cm4gdm9pZCAwPT09CmJ8fG51bGw9PT1ifHxOYU49PT1ifSx3aW5XaWR0aDpmdW5jdGlvbihiKXtyZXR1cm4gTWF0aC5yb3VuZChiYS53aWR0aCgpKihifHwxKSl9LHdpbkhlaWdodDpmdW5jdGlvbihiKXtyZXR1cm4gTWF0aC5yb3VuZChiYS5oZWlnaHQoKSooYnx8MSkpfX0pO2MuZm4uZXh0ZW5kKHt0b0ZsYXNoOmZ1bmN0aW9uKGIsZCxsKXtkfHwoZD17fSk7ZC5pZHx8KGQuaWQ9dGhpc1swXS5pZHx8ImFuLWZsYXNoLSIrYy50aW1lKCkpO2Qud2lkdGh8fChkLndpZHRoPTApO2QuaGVpZ2h0fHwoZC5oZWlnaHQ9MCk7bHx8KGw9e30pO2wuYWxsb3dzY3JpcHRhY2Nlc3N8fChsLmFsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMiKTtjLmJyb3dzZXIubXNpZT8oZC5jbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGwubW92aWU9Yik6KGQuZGF0YT1iLGQudHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKTt2YXIgaD0iIixtPSIiO2MuZWFjaChkLGZ1bmN0aW9uKGIsCmQpe2grPWMuc3ByaW50ZignJXNceDNkIiVzIiAnLGIsZCl9KTtjLmVhY2gobCxmdW5jdGlvbihiLGQpe20rPWMuc3ByaW50ZignXHgzY3BhcmFtIG5hbWVceDNkIiVzIiB2YWx1ZVx4M2QiJXMiIC9ceDNlJyxiLGQpfSk7Yj1jLnNwcmludGYoIlx4M2NvYmplY3QgJXNceDNlJXNceDNjL29iamVjdFx4M2UiLGgsbSk7Yy5icm93c2VyLm1zaWU/dGhpc1swXS5vdXRlckhUTUw9Yjp0aGlzLnJlcGxhY2VXaXRoKGIpO3JldHVybiBjKCIjIitkLmlkKX0sZm46ZnVuY3Rpb24oYil7dGhpcy5sZW5ndGgmJmIuY2FsbCh0aGlzKTtyZXR1cm4gdGhpc30sb3V0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1swXT90aGlzWzBdLm91dGVySFRNTD90aGlzWzBdLm91dGVySFRNTDpjKCJceDNjZGl2XHgzZVx4M2MvZGl2XHgzZSIpLmFwcGVuZCh0aGlzLmVxKDApLmNsb25lKCkpLmh0bWwoKTpudWxsfSxhTzpmdW5jdGlvbigpe2FsZXJ0KHRoaXMub3V0ZXIoKSk7cmV0dXJuIHRoaXN9LGFMOmZ1bmN0aW9uKCl7YWxlcnQodGhpcy5sZW5ndGgpOwpyZXR1cm4gdGhpc30sZmFkZVRvZ2dsZTpmdW5jdGlvbihiKXtifHwoYj0ibm9ybWFsIik7cmV0dXJuIHRoaXMuaXMoIjpoaWRkZW4iKT90aGlzLmZhZGVJbihiKTp0aGlzLmZhZGVPdXQoYil9LHVwOmZ1bmN0aW9uKGIsZCl7ZHx8KGQ9MSk7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBsPTAsaD10aGlzO2gmJmgub3duZXJEb2N1bWVudDspaWYoaD1oLnBhcmVudE5vZGUsYyhoKS5pcyhiKSYmKytsPj1kKXJldHVybiBofSl9LG93bjpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5pcyhiKXx8ISF0aGlzLmhhcyhiKS5sZW5ndGh9LHRvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZnNldCgpLnRvcH0scmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQoKS5sZWZ0K3RoaXMuaW5uZXJXaWR0aCgpfSxib3R0b206ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQoKS50b3ArdGhpcy5pbm5lckhlaWdodCgpfSxsZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0KCkubGVmdH0sCnBhZ2VOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc1BhZ2VOYW1lP3RoaXMuc1BhZ2VOYW1lOnRoaXMuc1BhZ2VOYW1lPWMoIiNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIxX1N5c3RlbU1lc3NhZ2VCb2FyZCIsdGhpcykubGVuZ3RoJiYibWVzc2FnZSJ8fGMoIiNhc3BuZXRGb3JtIix0aGlzKS5sZW5ndGgmJmMoIiNhc3BuZXRGb3JtIix0aGlzKS5hdHRyKCJhY3Rpb24iKS5tYXRjaCgvW2EtejAtOV9dKyg/PVwuYXNweCkvaSlbMF0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9faHRtbCQvLCIiKXx8YygiYm9keSBceDNlIDpmaXJzdCIsdGhpcykuaXMoImIiKSYmInRlcm1zInx8YygiI215dHQiLHRoaXMpLmxlbmd0aCYmImdvZ29nYW1lInx8YygnZm9ybVthY3Rpb24qXHgzZCIuYXNweCJdJyx0aGlzKS5sZW5ndGgmJiJ1bmtub3duInx8ImVycm9yIn0scGFnZUNvZGU6ZnVuY3Rpb24oKXtpZigiblBhZ2VDb2RlImluIHRoaXMpcmV0dXJuIHRoaXMublBhZ2VDb2RlO3ZhciBiPXRoaXMucGFnZU5hbWUoKSwKZztjLmVhY2goZC5ib3gub1BhZ2VNYXAsZnVuY3Rpb24oYyl7aWYodGhpcy5hY3Rpb24mJigic3RyaW5nIj09PXR5cGVvZiB0aGlzLmFjdGlvbj90aGlzLmFjdGlvbj09PWI6dGhpcy5hY3Rpb24udGVzdChiKSkpcmV0dXJuIGc9MSpjLCExfSk7Z3x8KGc9MCk7cmV0dXJuIHRoaXMublBhZ2VDb2RlPWd9LHBhZ2VTY29wZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMuY2xvc2VzdCgiZGl2Iik7cmV0dXJuIGIubGVuZ3RoP2I6dGhpc30scGFnZU5vOmZ1bmN0aW9uKCl7cmV0dXJuIDEqdGhpcy5wYWdlU2NvcGUoKS5maW5kKCJzZWxlY3RbbmFtZVx4M2RwYWdlXTpmaXJzdCIpLnZhbCgpfSxyZXBsaWVzOmZ1bmN0aW9uKGIpe2lmKHRoaXMualJlcGxpZXMpcmV0dXJuIHRoaXMualJlcGxpZXM7dmFyIGQ9YygpLGw9YygpLGg9dGhpcy5qUmVwbGllcz10aGlzLmZpbmQoIi5yZXBsaWVycyIpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBiPWModGhpcyksaD1iLmZpbmQoIi5yZXBsaWVyc19sZWZ0IikucGFyZW50KCk7CmIuZGF0YSh7akNvbnRlbnQ6aC5maW5kKCIucmVwbGllcnNfcmlnaHQgdGQ6Zmlyc3QiKSxqTmFtZUxpbms6aC5maW5kKCJhW2hyZWZdOmZpcnN0Iiksc1VzZXJpZDpoLmF0dHIoInVzZXJpZCIpLHNVc2VyTmFtZTpoLmF0dHIoInVzZXJuYW1lIil9KTtpZihiLmRhdGEoInNVc2VyaWQiKSlyZXR1cm4gZC5wdXNoKGIuZGF0YSgiakNvbnRlbnQiKVswXSksbC5wdXNoKGIuZGF0YSgiak5hbWVMaW5rIilbMF0pLCEwfSkuZXh0ZW5kKHtqQ29udGVudHM6ZCxqTmFtZUxpbmtzOmx9KTtyZXR1cm4gYj9oLmZpbHRlcihiKTpofSx0cmVlVG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF09PT1kb2N1bWVudHx8Yyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLm93bih0aGlzKT92OnRoaXN9LHRvcGljVGFibGU6ZnVuY3Rpb24oKXtpZih0aGlzLmpUb3BpY1RhYmxlKXJldHVybiB0aGlzLmpUb3BpY1RhYmxlO3ZhciBiPXRoaXM7dGhpcy50cmVlVG9wKCkuZmluZCgidGQsdGgiKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PQpjKHRoaXMpLmNoaWxkcmVuKCkubGVuZ3RofSkuZWFjaChmdW5jdGlvbigpe2lmKC9ccypcdTU2ZGVcdTg5ODYvLnRlc3QoYyh0aGlzKS5odG1sKCkpKXJldHVybiBiLmpUb3BpY1RhYmxlPWModGhpcykudXAoInRhYmxlIiksITF9KTtyZXR1cm4gdGhpcy5qVG9waWNUYWJsZX0sdG9waWNzOmZ1bmN0aW9uKGIpe2lmKHRoaXMualRvcGljcylyZXR1cm4gdGhpcy5qVG9waWNzO3ZhciBkPXRoaXMudG9waWNUYWJsZSgpO2lmKGQpe3ZhciBsPXRoaXMualRvcGljcz1kLmZpbmQoInRyIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuISFjKHRoaXMpLmNoaWxkcmVuKCkuY2hpbGRyZW4oImEiKS5sZW5ndGh9KTtsLmV4dGVuZCh7ak5hbWVMaW5rczpjKFtdKSxqVGl0bGVDZWxsczpjKFtdKSxqVGJvZHk6dGhpcy50b3BpY1RhYmxlKCkuY2hpbGRyZW4oKX0pLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGQ9Yi5maW5kKCJhIik7Yi5kYXRhKCJqTmFtZUxpbmsiLGQuZmlsdGVyKCI6bGFzdCIpKS5kYXRhKCJqVGl0bGVDZWxsIiwKZC5lcSgwKS5wYXJlbnQoKSkuZGF0YSgic1RpdGxlIixkLmVxKDApLmh0bWwoKSkuZGF0YSgic1RvcGljaWQiLGQuZXEoMCkuYXR0cigiaHJlZiIpLnJlcGxhY2UoLy4rP2lkPShcZCspLiovLCIkMSIpKS5kYXRhKCJzVXNlck5hbWUiLGQuZmlsdGVyKCI6bGFzdCIpLmh0bWwoKSk7bC5qTmFtZUxpbmtzLnB1c2goYi5kYXRhKCJqTmFtZUxpbmsiKVswXSk7bC5qVGl0bGVDZWxscy5wdXNoKGIuZGF0YSgialRpdGxlQ2VsbCIpWzBdKX0pO3JldHVybiBiP2wuZmlsdGVyKGIpOmx9fSxkZWZlcjpmdW5jdGlvbihiLGQsbCl7ZD0ic3RyaW5nIj09dHlwZW9mIGQ/e3NEZXNjOmQsYUhhbmRsZXI6W2xdfTpkO2MubWFrZSgiYSIsdGhpcywiYURlZmVyIixiKS5wdXNoKGQpO3JldHVybiB0aGlzfX0pO2MuZXh0ZW5kKGQse3NoYXJlZDpmdW5jdGlvbihiKXtpZihkLnNoYXJlZFtiXSlyZXR1cm4gZC5zaGFyZWRbYl0uYXBwbHkobnVsbCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsCjEpKX0sYm94OnthQmVuY2htYXJrOltdLG9UeXBlTWFwOnsxOiJcdTY4MzhcdTVmYzNcdThhMmRcdTViOWEiLDI6Ilx1NmEyM1x1NWYwZlx1OGEyZFx1NWI5YSIsMzoiXHU0ZjQ4XHU1YzQwXHU4YTJkXHU1YjlhIiw0OiJcdTRmZWVcdTZiNjNcdTRmZWVcdTY1MzkiLDU6Ilx1NTJhMFx1NTE2NVx1NzI2OVx1NGVmNiIsNjoiXHU1MTc2XHU0ZWQ2XHU1MjlmXHU4MGZkIiw3OiJBamF4XHU1MzE2Iiw4OiJcdTUxNDNcdTRlZjZcdTkxY2RcdTkwMjAiLDk6Ilx1N2Q0NFx1NTQwOFx1NjMwOVx1NjI2ZCJ9LG9QYWdlTWFwOns2NTUzNTp7YWN0aW9uOm51bGwsZGVzYzoiXHU2MjQwXHU2NzA5XHU5ODAxIn0sNjU1MzQ6e2FjdGlvbjpudWxsLGRlc2M6Ilx1NjI0MFx1NjcwOVx1NmI2M1x1NWUzOFx1OTgwMSJ9LDE6e2FjdGlvbjoiZXJyb3IiLGRlc2M6Ilx1NjI0MFx1NjcwOVx1OTMyZlx1OGFhNFx1OTgwMSJ9LDI6e2FjdGlvbjoiZGVmYXVsdCIsZGVzYzoiXHU0ZTNiXHU4YWQ2XHU1OGM3XHU5ODAxIn0sCjQ6e2FjdGlvbjoidG9waWNzIixkZXNjOiJcdTZhMTlcdTk4NGNcdTk4MDEifSw4OnthY3Rpb246L15zZWFyY2hcZCokLyxkZXNjOiJcdTY0MWNcdTVjMGJcdTk4MDEifSwxNjp7YWN0aW9uOiJ0YWdzIixkZXNjOiJcdTZhMTlcdTdjNjRcdTY0MWNcdTVjMGJcdTk4MDEifSwzMjp7YWN0aW9uOiJ2aWV3IixkZXNjOiJcdTVlMTZcdTViNTBcdTk4MDEifSw2NDp7YWN0aW9uOiJwcm9maWxlcGFnZSIsZGVzYzoiXHU3NTI4XHU2MjM2XHU4Y2M3XHU2NTk5XHU5ODAxIn0sMTI4OnthY3Rpb246InNlbmRwbSIsZGVzYzoiXHU3OWMxXHU0ZWJhXHU4YTBhXHU2MDZmXHU3NjdjXHU5MDAxXHU5ODAxIn0sMjU2OnthY3Rpb246InBvc3QiLGRlc2M6Ilx1NzY3Y1x1ODg2OC9cdTU2ZGVcdTg5ODZcdTk4MDEifSw1MTI6e2FjdGlvbjoibG9naW4iLGRlc2M6Ilx1NzY3Ylx1NTE2NVx1OTgwMSJ9LDEwMjQ6e2FjdGlvbjoiZ2lmdHBhZ2UiLGRlc2M6Ilx1NGViYVx1NmMyM1x1OTgwMSJ9LDIwNDg6e2FjdGlvbjoiYmxvZyIsCmRlc2M6Ilx1N2RiMlx1OGE4Y1x1OTgwMSJ9LDQwOTY6e2FjdGlvbjoibWVzc2FnZSIsZGVzYzoiXHU3Y2ZiXHU3ZDcxXHU0ZmUxXHU2MDZmXHU5ODAxIn0sODE5Mjp7YWN0aW9uOiJib29rbWFyayIsZGVzYzoiXHU2NmY4XHU3YzY0XHU5ODAxIn19fSx1dGlsOnthZGRGblR5cGU6ZnVuY3Rpb24oYixjKXtkLmJveC5vVHlwZU1hcFtiXT1jfSxzdGFja1N0eWxlOmZ1bmN0aW9uKGIpe3ZvaWQgMD09PWQudXRpbC5zdGFja1N0eWxlLnNTdHlsZSYmKGQudXRpbC5zdGFja1N0eWxlLnNTdHlsZT0iIix2LmJpbmQoImRlZmVyNSIsZnVuY3Rpb24oKXtkLnV0aWwuYWRkU3R5bGUoZC51dGlsLnN0YWNrU3R5bGUuc1N0eWxlKTtkLnV0aWwuc3RhY2tTdHlsZS5zU3R5bGU9IiJ9KSk7ZC51dGlsLnN0YWNrU3R5bGUuc1N0eWxlKz1ifSxhZGRTdHlsZTpmdW5jdGlvbihiKXt0aGlzLmpTdHlsZXx8KHRoaXMualN0eWxlPWMoJ1x4M2NzdHlsZSBpZFx4M2QiYW4tc3R5bGUiIHR5cGVceDNkInRleHQvY3NzIlx4M2VceDNjL3N0eWxlXHgzZScpLmFwcGVuZFRvKCJoZWFkIikpOwpkLmJveC5kZWJ1Z01vZGUmJihiPWIucmVwbGFjZSgvKF58fXxcKlwvKVxzKy9nLCIkMVxuIikpO3RoaXMualN0eWxlWzBdLnN0eWxlU2hlZXQ/dGhpcy5qU3R5bGVbMF0uc3R5bGVTaGVldC5jc3NUZXh0Kz1iOnRoaXMualN0eWxlLmFwcGVuZChiKX0sY29va2llOmZ1bmN0aW9uKGIsZCxsKXtpZih2b2lkIDA9PT1kKXJldHVybihiPWRvY3VtZW50LmNvb2tpZS5tYXRjaChSZWdFeHAoIig/Ol58O1xccyopIitiKyJceDNkKFteO10qKSIpKSkmJmJbMV07dmFyIGg9bmV3IERhdGU7aC5zZXRGdWxsWWVhcihkPzI5OTk6MTk5OSk7ZG9jdW1lbnQuY29va2llPWMuc3ByaW50ZigiJXNceDNkJXM7ICVzIGV4cGlyZXNceDNkJXM7IHBhdGhceDNkLyIsYixkfHwiIixsPyJkb21haW5ceDNkIitsKyI7IjoiIixoLnRvVVRDU3RyaW5nKCkpO3JldHVybiEwfSxzdG9yYWdlOmZ1bmN0aW9uKGIsZyl7dmFyIGw9YXJndW1lbnRzLmNhbGxlZS5zdG9yYWdlfHwoYXJndW1lbnRzLmNhbGxlZS5zdG9yYWdlPQoiRmxhc2giPT1kLmJveC5zdG9yYWdlTW9kZSYme2dldDpmdW5jdGlvbihiLGMpe3JldHVybiBkLmJveC5lTFNPLmdldChiLGMpfSxzZXQ6ZnVuY3Rpb24oYixjLGcpe2QuYm94LmVMU08uc2V0KGIsYyxnLnJlcGxhY2UoL1xcL2csIlxcXFwiKSl9LHJlbW92ZTpmdW5jdGlvbihiLGMpe2QuYm94LmVMU08ucmVtb3ZlKGIsYyl9fXx8IkRPTSI9PWQuYm94LnN0b3JhZ2VNb2RlJiZmdW5jdGlvbigpe3ZhciBiPXdpbmRvdy5sb2NhbFN0b3JhZ2V8fHdpbmRvdy5nbG9iYWxTdG9yYWdlW0MuaG9zdG5hbWVdO3JldHVybntnZXQ6ZnVuY3Rpb24oYyxkKXt2YXIgZz1iW2MrIl9fXyIrZF07cmV0dXJuIGcmJmcudmFsdWV8fGd9LHNldDpmdW5jdGlvbihjLGQsZyl7YltjKyJfX18iK2RdPWd9LHJlbW92ZTpmdW5jdGlvbihjLGQpe2IucmVtb3ZlSXRlbShjKyJfX18iK2QpfX19KCkpLGg9IiI7aWYodm9pZCAwPT09YilyZXR1cm4gYy5lYWNoKFsiYW5fZGF0YSIsImFuX3N3aXRjaGVzIiwiYW5fb3B0aW9ucyJdLApmdW5jdGlvbigpe3ZhciBiPWwuZ2V0KCJkZWZhdWx0Iix0aGlzKyIiKTtiJiYoaCs9YisiXG5cbiIpfSksaDtpZihudWxsPT09YiljLmVhY2goWyJhbl9kYXRhIiwiYW5fc3dpdGNoZXMiLCJhbl9vcHRpb25zIl0sZnVuY3Rpb24oKXtsLnJlbW92ZSgiZGVmYXVsdCIsdGhpcysiIik7bC5yZW1vdmUoImRlZmF1bHQiLHRoaXMrIl9iYWNrdXAiKX0pO2Vsc2V7aWYodm9pZCAwPT09ZylyZXR1cm4oaD1sLmdldCgiZGVmYXVsdCIsYikpJiYoaD1KU09OLnBhcnNlKGgpKSxofHxudWxsO2c/KGg9SlNPTi5zdHJpbmdpZnkoZyksbC5zZXQoImRlZmF1bHQiLGIsaCkpOmwucmVtb3ZlKCJkZWZhdWx0IixiKX1yZXR1cm4hMH0sZGF0YTpmdW5jdGlvbihiLGMpe3ZhciBsPWQudXRpbC5zdG9yYWdlKCJhbl9kYXRhIil8fHt9O2lmKHZvaWQgMD09PWMpcmV0dXJuIHZvaWQgMCE9PWxbYl0/bFtiXTpudWxsO251bGw9PT1jP2RlbGV0ZSBsW2JdOmxbYl09YztyZXR1cm4gZC51dGlsLnN0b3JhZ2UoImFuX2RhdGEiLApsKX0sZ2V0RGF0YTpmdW5jdGlvbihiLGcpe3ZhciBsPWMubWFrZSgibyIsZC5ib3gsImV4dGVybmFsIik7bFtiXT9nKGxbYl0pOmMuZ2V0U2NyaXB0KGMuc3ByaW50ZigiaHR0cDovL2hlbGlhbnRodXMtYW5udXVzLmdvb2dsZWNvZGUuY29tL3N2bi9vdGhlci9hbi52My4lcy5qcyIsYiksZnVuY3Rpb24oKXtnKGxbYl0pfSl9LGdldE9wZW5lckluZm86ZnVuY3Rpb24oYixnKXt2YXIgbD1hcmd1bWVudHMuY2FsbGVlLm9JbmZvO2lmKGwpaWYobC5zSWQpZyhsKTtlbHNlIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC51dGlsLmdldE9wZW5lckluZm8oYixnKX0sMTAwKTtlbHNlIGlmKGw9YXJndW1lbnRzLmNhbGxlZS5vSW5mbz17fSwxPT1iLnBhZ2VObygpKXt2YXIgaD1iLnJlcGxpZXMoIjpmaXJzdCIpO2cobD17c0lkOmguZGF0YSgic1VzZXJpZCIpLHNOYW1lOmguZGF0YSgic1VzZXJOYW1lIil9KX1lbHNlIGMuZ2V0KCIvdmlldy5hc3B4P21lc3NhZ2VceDNkIit3aW5kb3cubWVzc2FnZWlkLApmdW5jdGlvbihiKXtiPWMuZG9jKGIpLmZpbmQoIi5yZXBsaWVyc19sZWZ0OmZpcnN0IikucGFyZW50KCk7bD17c0lkOmIuYXR0cigidXNlcmlkIiksc05hbWU6Yi5hdHRyKCJ1c2VybmFtZSIpfTtnKGwpfSl9LGdldE9wYWNpdHlTdHI6ZnVuY3Rpb24oYil7cmV0dXJuIGMuc3VwcG9ydC5vcGFjaXR5P2Muc3ByaW50Zigib3BhY2l0eTogJXMiLGIvMTApOmMuc3ByaW50ZigiZmlsdGVyOiBhbHBoYShvcGFjaXR5XHgzZCVzKSIsMTAqYil9LGdldE9wdGlvbnM6ZnVuY3Rpb24oYil7dmFyIGc9Yy5tYWtlKCJvIixhcmd1bWVudHMuY2FsbGVlLCJvT3B0aW9ucyIpO2MuaXNFbXB0eShnKSYmYy5lYWNoKGQuYm94Lm9PcHRpb25zLGZ1bmN0aW9uKGIpe2MuZWFjaCh0aGlzLGZ1bmN0aW9uKGMsZCl7aWYodi5wYWdlQ29kZSgpJmMpcmV0dXJuIGdbYl09ZCwhMX0pfSk7cmV0dXJuIGI/Z1tiXTpnfSxnZXRGb3J1bTpmdW5jdGlvbigpe3ZhciBiPUMuaG9zdG5hbWUubWF0Y2goL15bXi5dKy8pO3JldHVybiBiJiYKYlswXX0sZ2V0UGFnZU5vOmZ1bmN0aW9uKGIpe2I9Yi5yZXBsYWNlKC8uKz9wYWdlPShcZCspLiovaSwiJDEiKTtyZXR1cm4gaXNOYU4oYik/MToxKmJ9LGdldFVSTDpmdW5jdGlvbihiKXt2YXIgZD17fSxsPUMuc2VhcmNoLnN1YnN0cigxKS5zcGxpdCgiXHgyNiIpO2MuZWFjaChsLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zcGxpdCgiXHgzZCIpO2JbMV0mJihkW2JbMF1dPWJbMV0pfSk7Yy5leHRlbmQoZCxiKTtyZXR1cm4iPyIrYy5wYXJhbShkKX0saXNMb2dnZWRJbjpmdW5jdGlvbigpe3JldHVybiEhYygiI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjFfUXVpY2tSZXBseVRhYmxlIikubGVuZ3RofX0sbW9kRm46e2dldERCOmZ1bmN0aW9uKGIpe3ZhciBnPWQuYm94Lm9Td2l0Y2hlcz97fTpkLmJveDtjLmV4dGVuZChnLGI/e29Td2l0Y2hlczp7fSxvT3B0aW9uczp7fX06e29Td2l0Y2hlczpkLnV0aWwuc3RvcmFnZSgiYW5fc3dpdGNoZXMiKXx8e30sb09wdGlvbnM6ZC51dGlsLnN0b3JhZ2UoImFuX29wdGlvbnMiKXx8Cnt9fSk7Yy5lYWNoKGQubW9kLGZ1bmN0aW9uKGIpe2QubW9kW2JdLmZuJiYoYy5tYWtlKCJvIixnLm9Td2l0Y2hlcyxiKSxjLmVhY2goZC5tb2RbYl0uZm4sZnVuY3Rpb24oZCxtKXtnLm9Td2l0Y2hlc1tiXVtkXXx8KGMubWFrZSgiYSIsZy5vU3dpdGNoZXNbYl0sZCksYy5lYWNoKG0ucGFnZSxmdW5jdGlvbihjLG0peyEwIT09bSYmImNvbXAiIT1tfHxnLm9Td2l0Y2hlc1tiXVtkXS5wdXNoKDEqYyl9KSk7bS5vcHRpb25zJiZjLmVhY2gobS5vcHRpb25zLGZ1bmN0aW9uKGIsZCl7Yy5tYWtlKCJvIixnLm9PcHRpb25zLGIpO2MuZWFjaChtLnBhZ2UsZnVuY3Rpb24oYyl7dm9pZCAwPT09Zy5vT3B0aW9uc1tiXVtjXSYmKGcub09wdGlvbnNbYl1bY109ZC5kZWZhdWx0VmFsdWUpfSl9KX0pKX0pO3JldHVybiBnfSxleGVjTW9kczpmdW5jdGlvbihiKXt2YXIgZz1jLnRpbWUoKSxsPWZ1bmN0aW9uKGcpe2QubW9kW2ddJiZkLm1vZFtnXS5mbiYmKGQuYm94LmFCZW5jaG1hcmsucHVzaCh7dHlwZToic3RhcnQiLApuYW1lOmd9KSxjLmVhY2goZC5tb2RbZ10uZm4sZnVuY3Rpb24obCxuKXtjLmVhY2goZC5ib3gub1N3aXRjaGVzW2ddW2xdLGZ1bmN0aW9uKCl7aWYoImRpc2FibGVkIiE9bi5wYWdlW3RoaXNdJiZ0aGlzIGluIG4ucGFnZSYmdi5wYWdlQ29kZSgpJnRoaXMpe3ZhciBjPVtdOyFkLmZpcnN0UmFuJiZuLm9uY2UmJmMucHVzaChuLm9uY2UpO24uaW5maW5pdGUmJmMucHVzaChuLmluZmluaXRlKTtjLmxlbmd0aCYmKGM9e3NEZXNjOm4uZGVzYyxhSGFuZGxlcjpjLG9GbjpufSxuLmRlZmVyP2IuZGVmZXIobi5kZWZlcixjKTpoKGMpKTtyZXR1cm4hMX19KX0pLGQuYm94LmFCZW5jaG1hcmsucHVzaCh7dHlwZToiZW5kIixuYW1lOmd9KSl9LGg9ZnVuY3Rpb24oZyl7dHJ5e3ZhciBoPWMudGltZSgpO2MuZWFjaChnLmFIYW5kbGVyLGZ1bmN0aW9uKCl7dGhpcy5jYWxsKGcub0ZuLGIsZy5vRm4pfSk7ZC5ib3guYUJlbmNobWFyay5wdXNoKHt0eXBlOiJmbiIsbmFtZTpnLnNEZXNjLHRpbWU6Yy50aW1lKGgpfSl9Y2F0Y2gobCl7ZC5zaGFyZWQubG9nPwooZC5zaGFyZWQubG9nKCJcdThhY2JcdTkwMWFcdTc3ZTVcdTRmNWNcdTgwMDVcdTY3MDlcdTk1ZGNcdTZiNjRcdTkzMmZcdThhYTQiKSxsLm1lc3NhZ2UmJmQuc2hhcmVkLmxvZygiXHU5MzJmXHU4YWE0XHU4YTBhXHU2MDZmOiAiK2wubWVzc2FnZSksbC50eXBlJiZkLnNoYXJlZC5sb2coIlx1OTMyZlx1OGFhNFx1OTg1ZVx1NTc4YjogIitsLnR5cGUpLGwubGluZU51bWJlciYmZC5zaGFyZWQubG9nKCJcdTkzMmZcdThhYTRcdTg4NGNcdTg2NWY6ICIrbC5saW5lTnVtYmVyKSxkLnNoYXJlZC5sb2coIlx1NTFmYVx1NzNmZVx1NGY0ZFx1N2Y2ZTogIitnLnNEZXNjKSxkLnNoYXJlZC5sb2coIlx1NTFmYVx1NzNmZVx1NTczMFx1NTc0MDogIitDLmhyZWYpLGQuc2hhcmVkLmxvZyhjLnNwcmludGYoIlx1NzY3Y1x1NzUxZlx1OTMyZlx1OGFhNDogJXMiLGcuc0Rlc2MpKSk6ZC5ib3guZGVidWdNb2RlJiZhbGVydChjLnNwcmludGYoIkVSUk9SIE9OIEVYRUNVQVRJT046ICVzXHJcbiVzIiwKZy5zRGVzYyxsLm1lc3NhZ2UpKX19O2J8fChiPWMoZG9jdW1lbnQuYm9keSkpO2woIktlcm5lbCIpO2woIlVzZXIgSW50ZXJmYWNlIik7Yy5lYWNoKGQubW9kLGZ1bmN0aW9uKGIpeyJLZXJuZWwiIT1iJiYiVXNlciBJbnRlcmZhY2UiIT1iJiZsKGIpfSk7c2V0VGltZW91dChmdW5jdGlvbigpe2QuYm94LmFCZW5jaG1hcmsucHVzaCh7dHlwZToic3RhcnQiLG5hbWU6Ilx1NWVmNlx1NjcxZlx1NTdmN1x1ODg0Y1x1OTgwNVx1NzZlZSJ9KTtmb3IodmFyIGw9MTs1Pj1sO2wrKyl2LnRyaWdnZXIoImRlZmVyIitsKSxiLmFEZWZlciYmYi5hRGVmZXJbbF0mJmMuZWFjaChiLmFEZWZlcltsXSxmdW5jdGlvbigpe2godGhpcyl9KTtiLmFEZWZlcj1udWxsO2QuYm94LmFCZW5jaG1hcmsucHVzaCh7dHlwZToiZW5kIixuYW1lOiJcdTVlZjZcdTY3MWZcdTU3ZjdcdTg4NGNcdTk4MDVcdTc2ZWUifSk7ZC5maXJzdFJhbj0hMDtkLnNoYXJlZCgibG9nMiIsIlx1NjI0MFx1NjcwOVx1NTI5Zlx1ODBmZFx1NTdmN1x1ODg0Y1x1NWI4Y1x1NjIxMCIpOwpkLmJveC5hQmVuY2htYXJrLnB1c2goe3R5cGU6ImZpbmFsIix0aW1lOmMudGltZShnKX0pfSwwKX19fSk7IiIhPT1KU09OLnN0cmluZ2lmeShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLnZhbHVlKSYmZnVuY3Rpb24oYil7SlNPTi5zdHJpbmdpZnk9ZnVuY3Rpb24oYyxkLGgpe3JldHVybiBiKCIiPT09Yz8iIjpjLGQsaCl9fShKU09OLnN0cmluZ2lmeSk7Yy5ldmVudC5zcGVjaWFsLmNsaWNrPXthZGQ6ZnVuY3Rpb24oYil7Yi5oYW5kbGVyPWZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihkKXshKCJjbGljayIhPT1kLnR5cGV8fGIuZGF0YSYmYi5kYXRhLmRpc2FibGVDaGVjaykmJjA8ZC5idXR0b258fGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oYi5oYW5kbGVyKX19O3YuYmluZCgiY2xpY2siLHtkaXNhYmxlQ2hlY2s6ITB9LGZ1bmN0aW9uKGIpe2MoYi50YXJnZXQpLmNsb3Nlc3QoImEiKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4vXig/OiN8amF2YXNjcmlwdDopJC8udGVzdCh0aGlzLmdldEF0dHJpYnV0ZSgiaHJlZiIpKX0pLmxlbmd0aCYmCmIucHJldmVudERlZmF1bHQoKX0pO2Muc3VwcG9ydC5sb2NhbFN0b3JhZ2U9ISghd2luZG93LmxvY2FsU3RvcmFnZSYmIXdpbmRvdy5nbG9iYWxTdG9yYWdlKTtjKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihiKXtkLmJveC5zdG9yYWdlTW9kZT1iO2QubW9kRm4uZ2V0REIoKTtkLm1vZEZuLmV4ZWNNb2RzKCl9YygnXHgzY2RpdiBpZFx4M2QiYW4iXHgzZVx4M2NkaXYgaWRceDNkImFuLWxzbyJceDNlXHgzYy9kaXZceDNlXHgzYy9kaXZceDNlJykuYXBwZW5kVG8oImJvZHkiKTtpZihjLnN1cHBvcnQubG9jYWxTdG9yYWdlJiYiRmxhc2giIT09ZC51dGlsLmNvb2tpZSgiYW4tc3RvcmFnZW1vZGUiKSliKCJET00iKTtlbHNle3ZhciBnPSJodHRwOi8vaGVsaWFudGh1cy1hbm51dXMuZ29vZ2xlY29kZS5jb20vc3ZuL290aGVyL2xzby5zd2YiO2MuYnJvd3Nlci5tc2llJiYoZys9Ij8iK2MudGltZSgpKTtkLmJveC5lTFNPPWMoIiNhbi1sc28iKS50b0ZsYXNoKGcpWzBdOyhmdW5jdGlvbigpe2QuYm94LmVMU08uZ2V0JiYKZC5ib3guZUxTTy5zZXQoImRlZmF1bHQiLCJhbl90ZXN0X2Zvcl9zYWZhcmkiLCI6bykiKSYmZC5ib3guZUxTTy5nZXQoImRlZmF1bHQiLCJhbl90ZXN0X2Zvcl9zYWZhcmkiKT9iKCJGbGFzaCIpOnNldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSw1MCl9KSgpfX0pfX0pKCk7');